You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Follow-up to #59 / #131. The native Python bindings (crates/mds-python, to be published as markdown-script — ADR-012 selected this name; mdscript on PyPI is third-party owned and cannot be shared) landed in #131 as a dev/test-only crate — the extension builds and the pytest suite runs in CI, but no wheels are published. This issue tracks turning that into a real PyPI distribution as part of the single coordinated release.
Note: v0.4.0 shipped 2026-09-02 with no Python build or publish job in release.yml. This work is now active. PyPI name registration is tracked separately in #292; only a first upload claims the markdown-script name (the pending publisher filed 2026-08-25 reserves nothing and expires unused).
Scope
Cross-platform wheel matrix. Build cp311-abi3 wheels for the release
target platforms (mirror the napi 7-target set where a Python ABI exists): manylinux/musllinux x86_64 + aarch64, macOS x86_64 + arm64, Windows x86_64.
Use maturin build --release (via maturin-action or the pinned maturin) with an
sdist.
PyPI publishing via OIDC trusted publisher for release.yml (preferred; no
long-lived token), mirroring the npm provenance setup. Publish wheels + sdist.
Wire into the coordinated release. Extend:
release.yml — a build-python matrix + publish-python job, gated on the
version check, ordered with the crates.io/npm publishes.
scripts/verify-versions.mjs — assert the markdown-script wheel version equals the
workspace version (it currently checks crates + npm only; markdown-script gets its
version from the Cargo workspace via maturin dynamic, so this is an added
assertion, not a new source of truth).
scripts/bump-version.mjs — no manifest edit needed (version is dynamic), but
confirm the CHANGELOG/coordination covers the Python package.
cp314t free-threaded wheels. The extension is already free-threading ready
(frozen result classes, #[pymodule(gil_used = false)], GIL released per compile);
the cp314t ABI is a separate build. Add it once the toolchain/runner support is
stable and soaked.
Post-publish smoke:pip install markdown-script on a clean machine + provenance
attestation check.
Notes
Platform wheels can only be validated in CI (like the napi platform packages) — a
local maturin build covers only the host platform.
Pin bumps to soak: pyo3 0.29 / maturin 1.14 once past the ~30-day soak window;
revisit at the same time as this work.
Follow-up to #59 / #131. The native Python bindings (
crates/mds-python, to be published asmarkdown-script— ADR-012 selected this name;mdscripton PyPI is third-party owned and cannot be shared) landed in #131 as a dev/test-only crate — the extension builds and the pytest suite runs in CI, but no wheels are published. This issue tracks turning that into a real PyPI distribution as part of the single coordinated release.Note: v0.4.0 shipped 2026-09-02 with no Python build or publish job in
release.yml. This work is now active. PyPI name registration is tracked separately in #292; only a first upload claims themarkdown-scriptname (the pending publisher filed 2026-08-25 reserves nothing and expires unused).Scope
cp311-abi3wheels for the releasetarget platforms (mirror the napi 7-target set where a Python ABI exists):
manylinux/musllinuxx86_64 + aarch64, macOS x86_64 + arm64, Windows x86_64.Use
maturin build --release(viamaturin-actionor the pinnedmaturin) with ansdist.
release.yml(preferred; nolong-lived token), mirroring the npm provenance setup. Publish wheels + sdist.
release.yml— abuild-pythonmatrix +publish-pythonjob, gated on theversion check, ordered with the crates.io/npm publishes.
scripts/verify-versions.mjs— assert themarkdown-scriptwheel version equals theworkspace version (it currently checks crates + npm only;
markdown-scriptgets itsversion from the Cargo workspace via maturin
dynamic, so this is an addedassertion, not a new source of truth).
scripts/bump-version.mjs— no manifest edit needed (version is dynamic), butconfirm the CHANGELOG/coordination covers the Python package.
cp314tfree-threaded wheels. The extension is already free-threading ready(frozen result classes,
#[pymodule(gil_used = false)], GIL released per compile);the
cp314tABI is a separate build. Add it once the toolchain/runner support isstable and soaked.
pip install markdown-scripton a clean machine + provenanceattestation check.
Notes
local
maturin buildcovers only the host platform.pyo30.29 /maturin1.14 once past the ~30-day soak window;revisit at the same time as this work.
markdown-script(importmarkdown_script) + register on PyPI #292.