Repository navigation
refactor(config)!: remove deprecated with_node_label and with_relationship - #88
Merged
Merged
Conversation
…nship Both builder methods have been deprecated since 0.2.0 in favour of node_table and rel_table. Remove them from the Rust GraphConfigBuilder (with with_relationship_endpoints, which only completed with_relationship), the Python bindings and the Python facade, along with the tests that exercised them. The docs now list them as removed in 0.5.0, with their replacements. Relationships without endpoint labels can still be built in Rust with with_relationship_mapping; the Rust alternation test now does that.
Show the crate next to the Python example, reusing the compiled embedded_query example, and link to the Rust page for more.
Deploying lance-csr with
|
| Latest commit: |
eb43f52
|
| Status: | ✅ Deploy successful! |
| Preview URL: | https://6ff48310.lance-csr.pages.dev |
| Branch Preview URL: | https://chore-remove-deprecated-buil.lance-csr.pages.dev |
prrao87
marked this pull request as ready for review
October 30, 2026 13:55
prrao87
added a commit
that referenced
this pull request
Oct 30, 2026
* chore: bump version 0.4.0 → 0.5.0 0.5.0 rather than 0.4.1: #87 changed the Rust CSR API and #88 removed the deprecated with_node_label and with_relationship builder methods. Also refresh the version in the three lockfiles, which bump-my-version does not update. * ci: build and test macOS wheels on macos-15 runners GitHub retires the macos-14 image on 2026-11-02, and a scheduled brownout cancelled the 0.5.0 dry run's macOS build. macos-15 runners are also Apple Silicon, and MACOSX_DEPLOYMENT_TARGET stays 11.0, so the wheel tag is unchanged.
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.
Why
with_node_labelandwith_relationshiphave been deprecated since 0.2.0 in favour ofnode_tableandrel_table. This PR removes them ahead of the 0.5.0 release. It also adds a short Rust example to the getting started page so readers learn early that a Rust crate exists.What changed
Breaking: removed
GraphConfigBuilder.with_node_labelandGraphConfigBuilder.with_relationshipfrom the Python API, andwith_node_label,with_relationshipandwith_relationship_endpointsfrom the RustGraphConfigBuilder.with_relationship_endpointsonly existed to finish whatwith_relationshipstarted.Migration is one to one:
with_node_label(label, id_field)node_table(label, primary_key)with_relationship(rel_type, source_field, target_field, source_label, target_label)rel_table(rel_type, from_table, to_table, src, dst)Python can no longer configure a relationship without endpoint labels, so the Python tests that only covered that case were removed. In Rust,
with_relationship_mappingstill allows it, and the alternation unit test that checks the "needs endpoint labels" error now builds its mapping that way.Docs: the graph schema page lists the methods as removed in 0.5.0, with their replacements, and the getting started note and Python README match. The getting started CSR example has a new Rust tab. It includes the compiled
embedded_queryexample, so CI keeps it building, and links to the Rust page for more.Validation
cargo clippy --workspace --all-targets -- -D warningsandcargo test --workspace: pass.make install,make lint(ruff, format, pyright) andmake test(1612 passed): pass.zensical build --strict,check_snippets.pyandtypos: pass. I confirmed the Rust tab renders with the included snippet.Benchmarks, following the harness in
CONTRIBUTING.md: release wheels built frommain(1dc63aa) and this branch (eb43f52), loaded withuv run --with, both suites,memoryandlazymodes, alternating main and branch with two runs each. Every query's answer passed on both wheels (176 of 176 tests). Apple Silicon Mac on AC power; this app was also running, so the machine wasn't fully idle.Every suite and mode is within the main-vs-main noise, as expected for a change that only deletes builder methods the runners don't call. Five queries moved by more than 15%. Lazy queries 18, 21 and 28 (+17% to +34%) came from one noisy branch run, with its standard deviation up from about 0.03 ms to 0.85 to 1.83 ms. The other branch run matched
main, and an extra main/branch pair put all three within 6%. That extra pair's branch run was slower across the board (geomean 1.16, a different set of queries), while the CPU was busy with other work. IC4 and IC8 in memory (-18% and -15%) are inside the main-vs-main spread for that mode (up to 21%).The 30-query runner needed a patch to run on this branch: its shared
build_config()calls the removed methods. The lance-csr runner now builds the same mapping withnode_tableandrel_table, reading each relationship's endpoint tables from its dataset name, and all 30 answers still pass on 0.3.1 and on both wheels. That change is in hyperdimensionalcomputingai/graph-benchmark-ldbc#33. Both wheels ran the patched runner, so they measure the same config.graph-benchmark-ldbc, memory: every query
Geomean branch/main: 1.020
Geomean main run 2/run 1 (noise): 1.017
graph-benchmark-ldbc, lazy: every query
Geomean branch/main: 1.050
Geomean main run 2/run 1 (noise): 1.044
graph-benchmark-ldbc-complex, memory: every query
Geomean branch/main: 0.939
Geomean main run 2/run 1 (noise): 0.922
graph-benchmark-ldbc-complex, lazy: every query
Geomean branch/main: 1.006
Geomean main run 2/run 1 (noise): 1.006
🤖 Generated with Claude Code