Skip to content

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.md complete
  • PARITY.md / ROADMAP.md mark 0.7 complete
  • 0.7.0 release checklist ready
  • CI green on tip (including Python jobs)