Milestone 0.7 — Python package¶
Status: complete
Outcome: ship a maintained PyPI package with Pythonic interfaces over the safe
Rust facade
Depends on: 0.3–0.4 storage/query; sequenced after 0.6 safe-API accounting
Blocks: 0.10 Python stabilization; does not block 0.8 C ABI
Release evidence: docs/reports/0.7.md
This is the executable specification for 0.7. The roadmap defines the release outcome; this document defines the work packages and acceptance criteria. Design detail: 0.7-python-api.md. Decision: ADR-017.
User-visible result¶
At the end of 0.7, a Python caller can:
pip install oxiland(or install a CI-built wheel) on the published platform matrix;- use idiomatic APIs for models, terms, parse/serialize, SPARQL query/update, and streaming results without learning Rust builder chains;
- catch typed exceptions aligned with Oxiland error categories;
- rely on type information checked in CI (
py.typed/ stubs); - follow a short Python user guide and runnable examples.
Non-goals¶
- rdflib conversion or store adapter (ADR-017 deferred)
- Redland Python binding drop-in claim
- Layering on
oxiland-capi/ ctypes - Freezing the Python API for 1.0 (soak in 0.10)
- Wrapping every Oxigraph escape hatch (
Model.store,oxiland::sparql) - Query cancellation tokens on the Python surface
Work package sequence¶
| ID | Package | Depends on |
|---|---|---|
| WP-07-00 | Milestone plan + design | — |
| WP-07-01 | Accept ADR-017 | WP-07-00 |
| WP-07-02 | python/ maturin scaffold |
WP-07-01 |
| WP-07-03 | Exceptions + terms | WP-07-02 |
| WP-07-04 | Model CRUD / find / open | WP-07-03 |
| WP-07-05 | Parser / serializer / Syntax | WP-07-03 |
| WP-07-06 | Query / update / result streams | WP-07-04 |
| WP-07-07 | Transactions + storage options | WP-07-04 |
| WP-07-08 | Curated utility / vocab | WP-07-02 |
| WP-07-09 | Pytest + typing CI | WP-07-03–08 |
| WP-07-10 | maturin-action wheel matrix + install smoke | WP-07-02 |
| WP-07-11 | User guide, examples, mkdocs | WP-07-03–08 |
| WP-07-12 | Report, parity, 0.7.0 release | all |
Evidence gates¶
- Wheel (or equivalent) builds and installs cleanly in CI on the published platform matrix.
- Pytest covers model CRUD, parse/serialize, ASK/SELECT/Update, and failure paths through the Python API.
- Public Python APIs have type information checked in CI.
- Docs and examples run as part of the Python package verification.
- The package does not claim CPython ABI stability tied to
oxiland-capi, and does not present itself as a Redland Python drop-in. - ADR-017 records the Pythonic boundary (including deferred rdflib).
Exit checklist¶
- ADR-017 accepted
-
python/package builds with maturin - Pytest matrix green in CI
- Type check green in CI
- maturin-action wheel matrix + install smoke
-
docs/users/python.md+ examples -
docs/reports/0.7.mdcomplete -
PARITY.md/ROADMAP.mdmark 0.7 complete -
0.7.0release checklist ready - CI green on tip (including Python jobs)