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
TL;DR — a patch release with one fix: the Neo4j code property is populated again. No breaking changes, no schema changes; analysis.json output is byte-for-byte unaffected.
Schema v2 (since 1.0.0) stores each module's source once on PyModule.source and gives every node a byte-precise span instead of a per-node code copy. The Neo4j projection, however, was still reading the removed per-node field — so every :PyClass and :PyCallable node was written without its code property:
the py_code_fts fulltext index (over c.code / c.docstring) had no code to index, so code search in the graph silently returned nothing;
SDK queries that read c.code — e.g. the CLDK python-sdk Neo4j backend's get_method_bodies — returned nulls, breaking parity with the in-process backend.
The projection now derives code at projection time: the owning module's source, sliced by each node's utf-8 byte span. The Neo4j vocabulary itself is unchanged (the property and index were always declared), so there is no Neo4j SCHEMA_VERSION bump — re-running an analysis against your database refreshes the affected nodes in place.
A new regression gate (test_projected_code_property_is_the_module_source_span_slice) asserts every projected class and callable carries the exact span slice of its module source.
reacted with thumbs up emoji reacted with thumbs down emoji reacted with laugh emoji reacted with hooray emoji reacted with confused emoji reacted with heart emoji reacted with rocket emoji reacted with eyes emoji
Uh oh!
There was an error while loading. Please reload this page.
Uh oh!
There was an error while loading. Please reload this page.
-
codeanalyzer-python (canpy) v1.0.2
TL;DR — a patch release with one fix: the Neo4j
codeproperty is populated again. No breaking changes, no schema changes;analysis.jsonoutput is byte-for-byte unaffected.What was fixed (#104, PR #105)
Schema v2 (since 1.0.0) stores each module's source once on
PyModule.sourceand gives every node a byte-precisespaninstead of a per-nodecodecopy. The Neo4j projection, however, was still reading the removed per-node field — so every:PyClassand:PyCallablenode was written without itscodeproperty:py_code_ftsfulltext index (overc.code/c.docstring) had no code to index, so code search in the graph silently returned nothing;c.code— e.g. the CLDK python-sdk Neo4j backend'sget_method_bodies— returned nulls, breaking parity with the in-process backend.The projection now derives
codeat projection time: the owning module's source, sliced by each node's utf-8 byte span. The Neo4j vocabulary itself is unchanged (the property and index were always declared), so there is no Neo4jSCHEMA_VERSIONbump — re-running an analysis against your database refreshes the affected nodes in place.A new regression gate (
test_projected_code_property_is_the_module_source_span_slice) asserts every projected class and callable carries the exact span slice of its module source.Upgrade
Links: GitHub release · CHANGELOG
Beta Was this translation helpful? Give feedback.
All reactions