0.7 compatibility report โ Python package¶
Status: complete for milestone scope
Milestone: 0.7
Decision: ADR-017
Design: 0.7-python-api.md
Claim¶
Oxiland 0.7.0 ships a Pythonic PyPI package oxiland over the safe Rust
facade. This is Python package usability evidence (wheels, pytest, typing),
not C ABI parity and not Redland Python binding drop-in compatibility.
Evidence¶
| Gate | Evidence |
|---|---|
| ADR-017 accepted | docs/DECISIONS.md |
| Package layout | python/ maturin + PyO3 cdylib (oxiland-py), excluded from root workspace |
| Pytest | python/tests/ โ model, I/O, SPARQL, storage/utility |
| Typing | python/oxiland.pyi, py.typed, pyright in CI |
| Examples | python/examples/*.py run in CI |
| Wheels | CI jobs build and install-smoke Linux/macOS/Windows wheels for CPython 3.10โ3.14; release reuses those artifacts |
| User guide | docs/users/python.md |
Non-goals confirmed¶
- No rdflib interop
- No
oxiland-capilayering - No Redland Python drop-in claim
- Query cancellation omitted on the Python surface
Version alignment¶
Rust crate oxiland and PyPI oxiland both versioned 0.7.0. The Rust
public API is not intentionally broken for this milestone; Python is an adapter
crate.
Residual risks¶
- SPARQL result iterators are
unsendable(GIL / Oxigraph iterator bounds). - Transaction context managers buffer ops then apply inside one Rust
Model::transaction(documented). - Full manylinux aarch64 coverage depends on runner availability in CI matrix expansions; initial matrix covers ubuntu/macOS/windows hosts via maturin-action (not cibuildwheel).
- PyPI publish for 0.7.0 is wheels-only (
--no-sdist); an sdist that vendors the path-dependent Rust crate is deferred. - PyPI authentication uses a pending OIDC Trusted Publisher bound to
release.ymland thepypiGitHub environment.