Release Guide
This document describes the steps to create a new tagged release of the project.
When to version
We use Semantic Versioning. Semantic versioning provides both convenient points in history and summarizes the types of changes that were made.
A fast and loose guide to this is as follows:
MAJOR: incompatible API changes.
MINOR: backwards-compatible features.
PATCH: backwards-compatible bug fixes.
We aim to limit MAJOR changes and thereby preserve API compatibility.
Release Checklist
Before cutting a release, ensure:
[ ] All tests pass on the
mainbranch (CI green).[ ] Dependencies are up to date (see CONTRIBUTING.md)
[ ] Documentation is updated if necessary.
[ ]
CHANGELOG.mdhas been updated with all user-facing changes.[ ] Version numbers are consitent across
pyproject.toml,CHANGELOG.md, and elsewhere.
Hint on the Checklist
Version can be checked and updated with recent releases of
uvwithuv version. Read more withuv version --help
Doing the release
Once main meets the checks above create a new tagged release using the releases dialog.
Building wheels and publishing them on pypi
We use uv to do this. The details of how are in the uv documentation on building and publishing a package.
Testing a published release on pypi
The test index testpypi is configured in the pyproject.toml and can be used for testing with:
uv publish --index testpypi
Automated deployment
The automation of this deployment is done via github actions.