- Determine the next version. We follow semantic versioning.
- Create a release branch named
release/vX.Y.Z
, whereX.Y.Z
is the next version. - Update version.py with the new version.
- Update all cassettes:
pytest --record-mode rewrite
- Update the pre-commit hook versions:
pre-commit autoupdate
- Update CHANGELOG.md.
- Add a new header under "Unreleased" with the new version and the date, e.g.
## [vX.Y.Z] - YYYY-MM-DD
. - Audit the changelog section to ensure all changes are captured.
- Add a link reference for the new version after the Unreleased link reference at the bottom of the file. Follow the format from the previous version links.
- Add a new header under "Unreleased" with the new version and the date, e.g.
- If necessary, update the versions table in the documentation
- (optional) Build the package locally and inspect its contents:
pip install build && python -m build
- Open a pull request for your
release/vX.Y.Z
branch against the appropriate branch (eithermain
or a version branch, e.g.v0.3
). - After pull request merge, create an annotated tag for your version, e.g.
git tag -a vX.Y.Z
. - Push the tag. This will trigger the Github release workflow and publish to PyPI.
- Create a new release on Github pointing to the new tag.