Skip to content

Release v0.3.10 — Analytics Integration: NetworkX/igraph Export & Parse Cache #448

@DecisionNerd

Description

@DecisionNerd

Release v0.3.10 — Research-driven Ergonomics

GraphForge v0.3.10 is the research-driven ergonomics release. Four use-case research docs validated the v0.3.9 baseline (#449#452), surfacing 4 bugs and 5 API gaps. v0.3.10 fixes those bugs, ships quality-of-life API improvements, and polishes the documentation across the use-case guides.

Theme: Validate → Fix → Ship → Document — in that order.


Implementation Order

Phase PR Closes Description Status
1 #494 #481 Fix ORDER BY on aliased RETURN DISTINCT property ✅ Merged
2 #495 #482 Fix variable reuse across WITH boundary (KeyError → UndefinedVariable) ✅ Merged
3 #496 #474 Fix EXISTS {} inner anonymous node with property predicate (ValidationError) ✅ Merged
4 #497 #468 Parse shortestPath/allShortestPaths; raise NotImplementedError with BFS hint ✅ Merged
5 #498 #477 Fix network-analysis.md: wrong SNAP labels, obsolete export patterns, shortestPath note ✅ Merged
6 #499 #469 Schema introspection: labels(), relationship_types(), node_count(), relationship_count() ✅ Merged
7 #500 #470 JSON export/import: to_json(), from_json(), Hypothesis roundtrip test ✅ Merged
8 #501 #471 merge_node() safe upsert with label validation, on_create/on_match semantics ✅ Merged
9 #502 #472 add_graph_documents() LangChain-compatible batch ingestion ✅ Merged
10 #504 #464 Parse/plan LRU cache (cache_size, clear_cache, cache_info) ✅ Merged
11 #457, #456, #455, #454, #453, #473, #503 Documentation batch 🔄 In progress
12 #448 Release cut: version bump, CHANGELOG, tag, publish ⏳ Pending

Rule: One PR at a time — merge before starting next.


Code PRs — Merged ✅

PR Closes Description
#494 #481 Planner: ORDER BY scope allows original projected vars under RETURN DISTINCT
#495 #482 Planner/executor: WITH boundary scope reset; KeyError replaced with UndefinedVariable
#496 #474 Planner: EXISTS {} anonymous inner node gets synthetic variable; Pydantic ValidationError fixed
#497 #468 Parser: shortestPath()/allShortestPaths() grammar + transformer; planner raises NotImplementedError with workaround message
#498 #477 Docs: network-analysis.md SNAP labels fixed, to_networkx()/to_igraph() used, shortestPath annotated
#499 #469 API: labels(), relationship_types(), node_count(label), relationship_count(type) — 4 introspection methods
#500 #470 API: to_json(path, metadata, indent), GraphForge.from_json(path), Hypothesis roundtrip property test
#501 #471 API: merge_node(labels, match_on, on_create, on_match) with regex label validation, index-safe on_match
#502 #472 API: add_graph_documents() duck-typed LangChain ingestion, idempotent edges, rel type pre-check
#504 #464 API: GraphForge(cache_size=N) LRU plan cache; clear_cache(); cache_info(); thread-safe

Release Blockers


Documentation Acceptance Criteria

docs/getting-started/installation.md (#457)

  • Add optional dependency extras: graphforge[networkx], graphforge[igraph], graphforge[all]
  • Document what each extra installs

examples/05_migration_from_networkx.py (#456)

  • Replace manual export code with to_networkx() API
  • Verify all examples run without error

docs/use-cases/network-analysis.md (#455)

  • Use to_networkx() / to_igraph() throughout
  • Consistent NotImplementedError message for shortestPath()

docs/guide/analytics-integration.md (#454)

  • New guide: pandas, NetworkX, igraph integration
  • Cover to_dicts(), to_dataframe(), to_networkx(), to_igraph()

shortestPath contradiction across use-case docs (#453)

  • All use-case docs agree: shortestPath() raises NotImplementedError with BFS workaround

docs/use-cases/knowledge-graph-construction.md (#473)

  • Add CREATE vs MERGE idempotency warning
  • Reference add_graph_documents() for LangChain workflows

docs/research/ — all four research docs (#503)

  • All code examples runnable against v0.3.10
  • No examples use manual workarounds superseded by the v0.3.10 API
  • Resolved friction points annotated with the API method and PR that fixed them
  • shortestPath() status consistent across all four docs

Post-v0.3.10 Policy

API surface rule: Any new GraphForge public method added in v0.3.10 must have 90%+ branch coverage and at least one property-based or Hypothesis test where the invariant is non-trivial (e.g., round-trips, idempotency).

LangChain compatibility rule: add_graph_documents() must remain duck-typed — no langchain-community import in production code. All LangChain types are accepted by structural compatibility only.

Metadata

Metadata

Assignees

No one assigned

    Labels

    enhancementNew feature or requestrelease:patchBug fix, requires patch version bump

    Projects

    No projects

    Milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions