You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Closes#44
Adopt the model codeanalyzer-typescript uses: external call targets are now
first-class in the IR instead of being re-derived ad hoc during Neo4j projection.
- schema: add PyExternalSymbol{name, module} and PyApplication.external_symbols,
keyed by signature (mirrors TSExternalSymbol).
- core: _compute_external_symbols() classifies every call-graph endpoint not
declared in the symbol table as an external (name/module from the signature),
so analysis.json carries external info that was previously a bare target string.
- neo4j: :PyExternal gains a `module` property (SCHEMA_VERSION 1.0.0 -> 1.1.0,
additive). project()'s _call_endpoint classifies authoritatively from
external_symbols rather than a "present in the graph" heuristic, so an imported
module name (a :PyPackage) can no longer shadow a call target and silently drop
the PY_CALLS edge.
- rows: track node identity by (merge_label, value) so deferred PY_EXTENDS /
PY_RESOLVES_TO edges can't be shadowed either.
Fixes the ~3.7% of call edges (e.g. targets os/re/json) that were dropped from
the emitted graph. Adds a regression test and exercises external_symbols in the
sample app; regenerates schema.neo4j.json.
0 commit comments