Explore inferred types and a whole-project Python index.
Walk through a real multi-file Python project and inspect definitions, references, inferred types, overrides, decorators, modern syntax, and explicit coverage boundaries. Every page is generated locally—no hosted analysis service required.
Six short paths through the semantic graph
Pick a question, open the source, then follow the highlighted symbols and hover facts.
Where does an exported name really come from?
Follow PredictionEngine through the package re-export to DemoApp.
What type does this property produce?
Open Market.display_name and trace its str result into Prediction.summary.
Which override wins at runtime?
Inspect adjust and audit_label across the AuditedStrategy diamond.
What replaces a decorated function?
Follow @command from inspect_symbol to the returned DemoCommand instance.
Do new bindings stay navigable?
Trace label from a walrus expression and captured from a match case.
What changes after await?
Compare MarketFeed.fetch with the concrete payload list used by refresh.
An honest index records what it could not resolve.
PySonar2 reports coverage and limitations alongside inferred types, definitions, and references. Resolved static relationships remain distinct from dynamic behavior the index cannot model.
Read the conformance results →{ "coverageStatus": "complete",
"applicable": true, "confidence":
"high" }
{ "coverageStatus": "complete",
"applicable": false, "confidence":
"unsupported" }
unsupportedSemantics is reported for behavior outside
the static model instead of presenting an incomplete index as
complete.
More than go-to-definition
Every capability below is backed by a small source example you can open and navigate.
Imports & re-exports
Follow public aliases through package APIs and module attributes.
pysonar_demo/__init__.py
Annotation-assisted flow
Use declared types when runtime evidence remains unknown.
pysonar_demo/models.py
Properties & attributes
Resolve computed properties to their inferred value types.
pysonar_demo/models.py
C3 override families
Connect base methods, overrides, and calls in Python MRO order.
pysonar_demo/strategies.py
Decorator factories
Propagate a decorator's returned object type to the exposed name.
pysonar_demo/decorators.py
Descriptor aliases
Keep same-name static method aliases in one impact surface.
pysonar_demo/decorators.py
Walrus bindings
Navigate assignment-expression targets and later reads.
pysonar_demo/syntax.py
Pattern captures
Retain bindings created inside structural match cases.
pysonar_demo/syntax.py
Typed comprehensions
Carry element types through filtered list comprehensions.
pysonar_demo/syntax.py
Async results
Distinguish an awaitable call from its awaited result.
pysonar_demo/feed.py
Recursive inference
Track values through recursive calls and numeric branches.
pysonar_demo/scoring.py
Cross-file orchestration
Trace constructors, collections, and calls across service boundaries.
pysonar_demo/service.py
Project files demo_project/
Choose a file to inspect its static names, definitions, references, and inferred types.
main.pyApplication entry point and cross-module calls.pysonar_demo/__init__.pyPackage exports and cross-file references.pysonar_demo/decorators.pyDecorator factories, returned object types, and descriptor
aliases.pysonar_demo/feed.pyAwaitable calls, awaited result types, and data
normalization.pysonar_demo/models.pyDomain classes, constructors, and computed state.pysonar_demo/scoring.pyFunctions, recursion, and numeric type flow.pysonar_demo/service.pyOrchestration, branching, and collection inference.pysonar_demo/strategies.pyC3 inheritance, overrides, class methods, and static methods.pysonar_demo/syntax.pyWalrus bindings, match captures, typed comprehensions, and modern
parameters.