pypi graphifyy 0.9.103
graphify 0.9.103

4 hours ago

graphify 0.9.103

A broad correctness, performance and robustness release across the extractors, resolution, hooks, the query and update paths, install and the skill runbook.

Extractors

  • C#: preprocessor directives and #if branches that derail tree-sitter are blanked before parsing (byte-length preserving), so a directive no longer closes a class early and drops later members or calls.
  • Solidity: library calls (Lib.f(), including aliased imports) and emit/revert/require naming a declared event or error now link to the member they name, gated to a unique visible type and member.
  • YAML: a << merge sequence gives the earlier anchor precedence for a duplicated key, matching the spec and PyYAML.
  • Markdown: a code span written as a backslash namespace (\Foo\Bar) or a type-qualified member (Type::member) resolves to the real node; a dotted mention whose method name is a language builtin is no longer dropped.
  • Python: a bare builtin-named call (raise NotImplementedError(...)) no longer binds to a same-named class in another module unless imported.

Resolution

  • A call inside a top-level def _main() is attributed to _main, not the public main it collides with after id normalization, without misattributing a class member's type reference.

Hooks

  • A file unchanged in content is not re-flagged stale by mtime (the extraction hash is checked against the manifest).
  • A dedicated Grep is held to the strict orientation gate; a Bash file read (cat/head/sed -n) of an in-project code file gets the read nudge; a search whose every target is outside the project emits no project hint; the nudge budget is restored after a Claude Code compaction; and the toplevel anchor keeps working when CDPATH is exported.

Performance

  • Lower peak memory in load, resolution and extraction; a faster #3252 cross-file repoint; and the watch reconcile pass resolves AST ownership once per file instead of re-reading each header per node — all with identical graph output.

Update / build / cache

  • graphify update re-extracts only the files whose content changed (identical to a full rebuild); a contended incremental request is recorded instead of dropped. The build write guard no longer counts intentional ghost/dedup folds as drops; cache keys keep their written case.

Query / tree

  • Source nodes rank above tests and docs (a soft weight) with file-first answers; query reads query_budget/query_depth from .graphifyrc and gains --depth. export tree caps directory children while reporting full totals.

Install / thread-safety

  • The Pi project skill is written to .pi/skills; uninstall removes the global skill registration it wrote. The ambient scan root is held in a ContextVar so concurrent library callers extracting different roots do not clobber each other.

The AST cache schema is bumped to 39; warm caches re-run the affected extractions.

Thanks to @rohit-jsfreaky, @Deepjyoti-Sarmah, @xiongjianxu, @nothariharan, @andrebrait, @ajbmachon, @Shubham-Padkonde, @madhusudanpatnaik, @pei711, @Mpasha17, @ayushcodes10, @gitmotion, @briascoi, @oleksii-tumanov, @rohit-jsfreaky, @viwe-monai, @WyattAu, @Vivek1898, @wanjinhao1, @PratikDhanave, @HhH666-ux, @sunhouy, @mathewgeejo, @jinsoo and @AndresDiagoM.

Don't miss a new graphifyy release

NewReleases is sending notifications on new releases.