feat: address downstream API feedback and fix binding bugs#30
Merged
dylanbstorey merged 2 commits intomainfrom Mar 17, 2026
Merged
feat: address downstream API feedback and fix binding bugs#30dylanbstorey merged 2 commits intomainfrom
dylanbstorey merged 2 commits intomainfrom
Conversation
added 2 commits
March 17, 2026 09:05
Implements 6 feature requests from downstream consumer (Clotho) and fixes 3 bugs discovered during deep investigation of Rust/Python binding parity. Parser & Transform: - Add bare undirected match syntax: (a)--(b), -->, <-- - Fix undirected match to query both edge directions (was forward-only) - Remove `-` from scanner operator regex so `--` tokenizes correctly - Fix leading-zero string coercion in create_property_agtype_value() Rust bindings: - Add PropertyValue enum for typed upsert (backward-compatible with &str) - Add Value::get(key), get_index(i), Index<&str> for ergonomic access - Add get_edges_from/to/by_type/node_edges edge query helpers - Add Graph::query_params() one-liner convenience method - Rename GraphStats fields: nodes->node_count, edges->edge_count Python bindings: - Add get_edges_from/to/by_type edge query helpers - Fix BFS/DFS returning empty (missing extract_algo_array unwrap) - Fix APSP returning empty (same column_0 unwrap bug) - Rename stats() keys to node_count/edge_count - Remap cache status keys for consistency All tests pass: 849 C unit, 226 Python, 213 Rust.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Implements 6 feature requests from downstream consumer feedback (Clotho graph layer) and fixes 3 bugs discovered during deep investigation of Rust/Python binding parity.
Parser & Core (C)
(a)--(b),-->,<--now parse and execute correctly-[]-and--now query both edge directions (was silently forward-only)"02134"stored as text no longer coerced to integer2134on RETURNRust Bindings
PropertyValueenum: Typed upsert API —upsert_node("n", [("score", PropertyValue::Float(0.87))], "T")— backward-compatible with&strpairsValueaccessors:.get(key),.get_index(i),Index<&str>for ergonomic Object/Array accessget_edges_from(),get_edges_to(),get_edges_by_type(),get_node_edges()Graph::query_params(): One-liner parameterized query convenience methodGraphStatsrename:nodes/edges→node_count/edge_count(breaking)Python Bindings
get_edges_from(),get_edges_to(),get_edges_by_type()[]— missingextract_algo_array()unwrapcolumn_0unwrap bugnode_count/edge_countBreaking Changes
GraphStats.nodes→GraphStats.node_count,GraphStats.edges→GraphStats.edge_count(Rust)stats()dict keys:"nodes"→"node_count","edges"→"edge_count"PropertyValuereplacesAsRef<str>bound on upsert value generics (source-compatible for&strcallers)Test plan
tests/functional/100_undirected_match_test.sql