mirror of
https://github.com/safishamsi/graphify.git
synced 2026-07-12 18:37:12 +00:00
a380b34739
#1147 — builtin annotation nodes inflate god-node rankings: Add _PYTHON_ANNOTATION_NOISE frozenset (str/int/bool/float/bytes/ MagicMock/Mock/AsyncMock/...) and apply it alongside _PYTHON_TYPE_CONTAINERS in the annotation walker so scalar builtins and test mocks are never created as nodes or emitted as edges. Defense-in-depth guard in analyze.god_nodes filters _BUILTIN_NOISE_LABELS so pre-existing graphs are also protected. #1146 — package-form imports create disconnected islands: from pkg import submod is now resolved to a file-level imports_from edge when submod.py or submod/__init__.py exists on disk. Fix lives in _collect_python_symbol_resolution_facts: when target resolves to a __init__.py, each imported name is checked as a potential submodule file and stored in _SymbolResolutionFacts.module_imports. Applied in _apply_symbol_resolution_facts using stem-based canonical IDs. #1145 — AST vs semantic node ID ghost duplicates: build_from_json now runs a two-pass merge after adding all nodes: collect AST nodes (source_location set) then find semantic ghosts (same basename+label, no source_location). Ghosts are removed and their IDs added to norm_to_id so all edges re-point to the AST node. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>