diff --git a/.gitignore b/.gitignore index cbc56dd..220e23c 100644 --- a/.gitignore +++ b/.gitignore @@ -21,3 +21,4 @@ python/corvid/_native.* # test scratch tests/work/ .pytest_cache/ +wheels/ diff --git a/Cargo.lock b/Cargo.lock index 84e2902..0c0d613 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -3,9 +3,9 @@ version = 4 [[package]] -name = "corvid" -version = "0.3.1" -source = "git+https://github.com/corvid-db/corvid.git?tag=v0.3.1#9fe89c15a3ab8eaae369990f90ed85671302c716" +name = "corvid-db" +version = "0.3.2" +source = "git+https://github.com/corvid-db/corvid.git?tag=v0.3.2#b726ac5a1ebace9f94dc12007a4e06927241cf4c" dependencies = [ "redb", "thiserror", @@ -15,7 +15,7 @@ dependencies = [ name = "corvid-python" version = "0.1.0" dependencies = [ - "corvid", + "corvid-db", "pyo3", "redb", ] diff --git a/Cargo.toml b/Cargo.toml index 95bd422..7e3e94a 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -20,8 +20,10 @@ crate-type = ["cdylib"] pyo3 = { version = "0.29", features = ["abi3-py311"] } # The engine, pinned to the exact release tag (docs/PLAN.md §2: the -# binding pins exact engine tags; corvid is not on crates.io). -corvid = { git = "https://github.com/corvid-db/corvid.git", tag = "v0.3.1" } +# binding pins exact engine tags; the engine PACKAGE is corvid-db — +# bare `corvid` is an unrelated crates.io crate — its LIB ident is +# corvid, so `use corvid::…` is unchanged). +corvid-db = { git = "https://github.com/corvid-db/corvid.git", tag = "v0.3.2" } [dev-dependencies] # Test-only: the variant-inventory snapshot test (src/error.rs) diff --git a/docs/PLAN.md b/docs/PLAN.md index eb62c8c..f8ffb3e 100644 --- a/docs/PLAN.md +++ b/docs/PLAN.md @@ -18,7 +18,7 @@ variants are additive later, decided by the FFI bench). | --- | --- | | The pyo3 crate (engine-binding layer AND idiom layer — see §3) | `src/*.rs` — `DbPy`/`CollectionPy`/`QueryPy`, value mapping, error mapping, predicates | | The public package | `python/corvid/__init__.py` re-exports `corvid._native`; `__init__.pyi` + `py.typed` carry the full typing | -| The golden-suite port | `tests/test_golden.py` driving `tests/golden/*.txt` (vendored byte-identical from the v0.3.1 release — the pinned engine tag; the same fixtures the C smoke suite and corvid-node run) | +| The golden-suite port | `tests/test_golden.py` driving `tests/golden/*.txt` (vendored byte-identical from the v0.3.2 release — the pinned engine tag; the same fixtures the C smoke suite and corvid-node run) | | Packaging | `pyproject.toml` (maturin, one cp311-abi3 wheel per platform), README (install-pending note), LICENSE (MIT), `.gitignore` | | CI | `.github/workflows/ci.yml` — surface gate + lint + golden suite × 4 platform legs (linux-x64/arm64, macos-arm64, windows-x64) × {3.14, 3.13, 3.12, 3.11} + `maturin build` smoke | @@ -35,9 +35,11 @@ totals test pre-scans all files for exactly 267). Two architectures were on the table: 1. **(chosen)** A Rust pyo3 crate that links the engine crate directly - (`corvid = { git = "https://github.com/corvid-db/corvid.git", tag = "v0.3.1" }` - — corvid is not on crates.io) and exposes the OOP surface through - native pyo3 classes, built into a Python extension module by + (`corvid-db = { git = "https://github.com/corvid-db/corvid.git", tag = "v0.3.2" }` + — the engine package is `corvid-db` with lib ident `corvid`; bare + `corvid` on crates.io is an unrelated crate) and exposes the OOP + surface through native pyo3 classes, built into a Python extension + module by maturin. 2. Python-side FFI (ctypes/cffi against the release `cdylib` artifacts, or unpacking wheels of them). @@ -220,4 +222,4 @@ Documented corners: | Variadic `and_`/`or_` (trailing underscores) | Python keywords; mirrors the JS binding's variadic `and`/`or` | | Counter + Arc exclusivity for `compact` | mirrors the ABI §4.13 gate exactly; pinned by admin.txt | | pyo3 0.29, maturin 1.x | current crates.io stable lines | -| Vendored golden fixtures (byte-identical to the v0.3.1 tag — the pinned engine version) | stable text; the suite must run offline and per-PR (verified identical to `crates/corvid-ffi/golden/`) | +| Vendored golden fixtures (byte-identical to the v0.3.2 tag — the pinned engine version) | stable text; the suite must run offline and per-PR (verified identical to `crates/corvid-ffi/golden/`) | diff --git a/scripts/surface-gate.sh b/scripts/surface-gate.sh index 3c5c4ed..2e277b4 100755 --- a/scripts/surface-gate.sh +++ b/scripts/surface-gate.sh @@ -42,7 +42,7 @@ for cand in "$ROOT/fetch.sh" "$ROOT/Cargo.toml"; do if [ -f "$cand" ]; then p="$(awk -F'"' ' /^CORVID_VERSION="/ { print $2; exit } - /^corvid = \{ git = / && match($0, /tag = "v[0-9]+\.[0-9]+\.[0-9]+"/) { + /^corvid-db = \{ git = / && match($0, /tag = "v[0-9]+\.[0-9]+\.[0-9]+"/) { s = substr($0, RSTART, RLENGTH); sub(/^tag = "/, "", s); sub(/"$/, "", s); print s; exit }' "$cand")" if [ -n "$p" ]; then pin="$p"; break; fi