Release Process¶
This project uses semantic versioning and publishes Python distributions from tagged releases.
Release Readiness¶
Before tagging a release:
- Update
pyproject.toml,online_fdr/__init__.py,uv.lock,CHANGELOG.md, andCITATION.cffto the release version. - Run the routine local checks:
uv run python -m ruff check .
uv run python -m ruff format --check online_fdr tests
uv run python -m mypy online_fdr
uv run python -m pytest -q
uv run python -m build
- Run live parity for changes that touch parity-covered behavior:
uv sync --group dev --group parity
uv run python -m pytest -m live_r_parity tests/test_onlinefdr_parity.py tests/test_async_methods.py -q
- Build documentation strictly:
PyPI Trusted Publishing¶
The release workflow expects a PyPI trusted publisher instead of an API token. Configure PyPI with:
- repository:
OliverHennhoefer/online-fdr - workflow:
release.yml - environment:
pypi
In GitHub, create the pypi environment and require reviewer approval if you want a manual approval gate before publishing.
Tagging¶
Release tags use vMAJOR.MINOR.PATCH:
Pushing a version tag runs .github/workflows/release.yml, which reruns lint, format, type-check, non-parity tests, strict docs build, live R parity, package build, and wheel smoke install. It uploads the distributions as a workflow artifact and publishes to PyPI only after the validation jobs and the pypi environment gate pass.
Manual workflow_dispatch runs build the distributions but do not publish to PyPI unless the run is associated with a version tag.
After Release¶
- Confirm the PyPI project page shows the new version.
- Confirm the GitHub Pages workflow is green.
- Add a GitHub release entry summarizing the
CHANGELOG.mdnotes.