This checklist is for maintainers publishing 0.7.x (and later) to PyPI via the GitHub Actions Release workflow.
-
Version alignment — these must match:
pyproject.toml→[project].versionrust/Cargo.toml→[package].versionpython/oxyjwt/__init__.py→__version__
-
Changelog — update
CHANGELOG.mdanddocs-site/docs/changelog.md(section for the release; add release date when publishing). -
Tests (from repo root):
cargo fmt --manifest-path rust/Cargo.toml --check cargo clippy --manifest-path rust/Cargo.toml --all-targets -- -D warnings cargo test --manifest-path rust/Cargo.toml maturin develop --release --pip-path "$(command -v pip3)" python -m pytest mkdocs build --strict -f docs-site/mkdocs.yml
Optional extended benchmark (slower, not required for every PR):
OXYJWT_BENCHMARK=1 python -m pytest -m benchmark tests/test_benchmark_jwt_libraries.py
-
Smoke import (after
maturin develop):python -c "import oxyjwt; print(oxyjwt.__version__)" -
Optional wheel check:
maturin build --release --out dist
-
Commit all release-prep changes on
main. -
Merge
dev→main, then create and push an annotated tag (example for 0.7.0):git tag -a v0.7.0 -m "Release 0.7.0" git push origin v0.7.0 -
The Release workflow runs full CI via
workflow_call, then builds wheels (Linux x86_64/aarch64, macOS, Windows) + sdist and publishes to PyPI only if CI passes (requires thepypienvironment and Trusted Publishing). -
On GitHub, create a Release from the tag. Use
.github/RELEASE_NOTES_v0.7.0.mdor the 0.7.0 section inCHANGELOG.mdas the release notes body.
- Confirm the new version on PyPI.
- Verify
pip install oxyjwt==<version>on a clean venv. - Update supported-version wording in
SECURITY.mdif a new line is current.
- Linux aarch64 wheels use the
rust_cryptofeature (seerelease.yml); x86_64 uses defaultaws_lc_rs. - Benchmark artifacts are optional; see
docs-site/docs/benchmarks.md.