Skip to content

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-capi layering
  • 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.yml and the pypi GitHub environment.