Release checklist
This checklist is for maintainers cutting a new Capper release (including 1.0.0 and future 1.x versions).
- Verify CI is green on
main -
Ensure the latest commits on
mainpass the CI workflow in.github/workflows/ci.yml. -
Update
CHANGELOG.md - Move entries from [Unreleased] into a new
## [X.Y.Z] - YYYY-MM-DDsection. -
Summarize noteworthy changes (features, fixes, deprecations).
-
Update version metadata
- Bump the version in
pyproject.tomlunder[project].version. -
Update the fallback
__version__incapper/__init__.pyif necessary. -
Check docs and README
- Ensure
README.mdanddocs/(especiallydocs/ROADMAP.md,docs/compatibility.md, and user guides) reflect the new release where it matters. -
Run:
python -m mkdocs build --strict
-
Run full checks locally
-
From a clean environment:
ruff format .ruff check .mypy capperpytest capper/tests -m "not benchmark" --cov=capper --cov-report=term-missing --cov-fail-under=98
-
Tag the release
- Commit all changes.
- Create an annotated tag:
git tag -a vX.Y.Z -m "Release X.Y.Z". -
Push:
git push && git push origin vX.Y.Z. -
Verify publish workflow
- Confirm that
.github/workflows/publish.ymlcompletes successfully for the new tag. -
Check that the new version is visible on PyPI and can be installed with
pip install capper==X.Y.Z. -
Update roadmap and docs index
- Update
docs/ROADMAP.mdmilestones and “Current release” to include the new version. - If needed, add a short note to
docs/README.mdor other entry points highlighting major changes.