Repository navigation
docs: state goals and scope, show the ldbc benchmark, move builds to uv - #4
Merged
Merged
Conversation
Add a Goals section (single-machine, openCypher on Lance, multimodal knowledge graphs, DataFusion for graph traversal), mark distributed execution as out of scope, and move the credits to the end with Apache DataFusion's contributors alongside lance-graph's.
Replace the old Criterion numbers with lance-csr's results on graph-benchmark-ldbc next to Neo4j, Kuzu, Ladybug and lance-graph, remove the upstream DeepWiki link, describe the actual workspace layout, and point the examples at lance-csr and a working build command.
One build, maturin develop --extras tests,dev, instead of an editable install followed by maturin develop; protoc listed as a requirement; workspace-wide cargo commands from the repository root. The Makefile's targets now work (test ran one file through a broken uv invocation), and DEVELOPMENT.md describes this project instead of Lance's tracing, S3 tests, vector benchmarks and manylinux2014 wheels. The package authors are lance-csr's, not lance-graph's.
Development tools move from published extras into a uv dev dependency group, and every documented setup, the Makefile and both Python workflows install with uv sync --locked (relocked for the 3.12 floor). The publish workflow gets zig and twine through uv, tests each built wheel by path so PyPI's copy of the same version can't stand in, and builds wheels on pull requests only when the wheel build itself changes. The doctest step, which never imported the package, is gone.
maturin-action runs python3 -m pip install, and the uv tool environment's Python has no pip. The zig binary that ziglang ships is found on PATH first, leaving python3 to the runner.
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
The README described what lance-csr adds but not what it is for, or what it will not do. Contributors need both before they open an issue or a pull request. It also still carried material from lance-graph: benchmark numbers from an old Criterion run nobody can reproduce, a link to lance-graph's DeepWiki page, and a project-structure proposal for crates that don't exist. This change states the project's goals and scope, shows the LDBC benchmark lance-csr is measured on, removes the stale upstream material, and credits the two projects lance-csr builds on.
What changed
lance-graph-coreandlance-graph-plannercrates.lance-csrfrom PyPI, list the snapshot and refresh example, and build withmaturin developfrompython/. The oldmaturin develop -m crates/lance-graph-python/Cargo.tomlskipped the package metadata and produced a module without thelance_csrpackage.devdependency group, anduv.lockis regenerated for the 3.12 floor. Every documented setup installs withuv sync --locked --no-install-project, then makes a debug build withuv run --no-sync maturin develop. The READMEs explain both flags: uv would otherwise build the package in release mode, and a re-sync would remove the debug build. Users install withuv add lance-csr, and the examples run withuv run --with lance-csr. Building from source now listsprotoc, and Rust commands run workspace-wide from the repository root.make install,test,lint,format,wheelandcleanwrap the uv commands. The oldtesttarget ran a single file through an invaliduv run --with tests, and the documenteddoctesttarget didn't exist.DEVELOPMENT.mdnow describes this project rather than Lance's tracing, S3 tests, vector benchmarks and manylinux2014 wheels. The contributor notes for agents follow the same commands.uv sync --locked. Its doctest step is removed: it ranpython -m docteston the package's__init__.py, which can't import the package that way, and swallowed the error, so it never tested anything.maturin-actionand its sccache cache.--find-links dist lance-csrcould resolve to PyPI's copy of the same version.ci/check_wheel.pynow checks that the extension loads fromsite-packages, because uv's environments can place packages outsidesys.prefix.python/.cargo/), not on everypyproject.tomlor bindingsCargochange. Other changes rely on a manualdry_runbefore a release.Validation
python/,make install(uv sync --locked --no-install-project --inexact, thenmaturin develop),make test(280 passed) andmake lint(clean) all run, anduv lock --checkpasses. The same commands also work in a fresh environment.check_wheel.pypasses, and the full suite (280 tests) passes without Rust onPATH. Amanylinux_2_28x86-64 wheel built on macOS with zig supplied only through uv (uv run --with 'maturin[zig]'). CI will run the edited publish workflow on this PR, since the workflow file changed.uv run --with lance-csragainst the published release.🤖 Generated with Claude Code