Skip to content

feat: Jedi-based Python call resolution#247

Open
gzenz wants to merge 1 commit intotirth8205:mainfrom
gzenz:feat/jedi-resolver
Open

feat: Jedi-based Python call resolution#247
gzenz wants to merge 1 commit intotirth8205:mainfrom
gzenz:feat/jedi-resolver

Conversation

@gzenz
Copy link
Copy Markdown
Contributor

@gzenz gzenz commented Apr 12, 2026

Summary

  • Add jedi_resolver.py for post-build Python method call resolution using Jedi static analysis
  • Resolves calls that tree-sitter alone cannot (factory return types, dynamic dispatch)
  • Pre-filters stdlib to reduce runtime from ~36s to ~3s
  • Optional dependency via [enrichment] extra

Split from #158 (2/5). Independent -- targets main.

Test plan

  • 570 tests pass, 0 failures
  • Module imports cleanly with and without jedi installed

🤖 Generated with Claude Code

Add jedi_resolver.py that enriches the call graph after build by using
Jedi's static analysis to resolve Python method calls that tree-sitter
alone cannot determine (e.g. factory return types, dynamic dispatch).

- Lazy-imports jedi (optional dependency via [enrichment] extra)
- Pre-filters call targets to skip stdlib, reducing runtime from ~36s to ~3s
- Adds CALLS edges for resolved method calls with jedi_resolved=true marker
- Integrates as a post-build step, not a parser dependency
@gzenz gzenz force-pushed the feat/jedi-resolver branch from c73a414 to 0028905 Compare April 12, 2026 08:29
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant