A new codeanalyzer-python release (v1.5.1) is published.
Update the codeanalyzer-python pin in this repo and adapt the
integration to the changes below (see PyCodeanalyzer._run_analyzer).
[1.5.1] - 2026-09-09
Fixed
param_in[].var / param_out[].var in analysis.json, and the same var on
PY_PARAM_IN / PY_PARAM_OUT in Neo4j (#195): the callee-side formal the edge
binds — the parameter name, or <return> for the return port — present on every
edge. The graph catalog had declared var on both relationship types while the
projection wrote none, so a Cypher predicate on r.var went three-valued across
every call boundary and silently excluded the path. The SDG assembler always knew
the variable; emit_l4 dropped it building the JSON edge. codeanalyzer-java and
codeanalyzer-typescript carried the same gap and fixed it in the same train.
Additive: schema_version and the graph contract are unchanged, and a consumer
reading graphs from 1.5.0 or earlier still has to tolerate the property's absence.
A new
codeanalyzer-pythonrelease (v1.5.1) is published.Update the
codeanalyzer-pythonpin in this repo and adapt theintegration to the changes below (see
PyCodeanalyzer._run_analyzer).[1.5.1] - 2026-09-09
Fixed
param_in[].var/param_out[].varinanalysis.json, and the samevaronPY_PARAM_IN/PY_PARAM_OUTin Neo4j (#195): the callee-side formal the edgebinds — the parameter name, or
<return>for the return port — present on everyedge. The graph catalog had declared
varon both relationship types while theprojection wrote none, so a Cypher predicate on
r.varwent three-valued acrossevery call boundary and silently excluded the path. The SDG assembler always knew
the variable;
emit_l4dropped it building the JSON edge. codeanalyzer-java andcodeanalyzer-typescript carried the same gap and fixed it in the same train.
Additive:
schema_versionand the graph contract are unchanged, and a consumerreading graphs from 1.5.0 or earlier still has to tolerate the property's absence.