the release happens from main so make sure it is up-to-date:
git pull origin main
look at whats-new.rst and make sure it is complete and with references to issues and pull requests
open and merge a pull request with these changes
make sure the CI on main pass
check that the documentation build on readthedocs completed successfully
Fill in the release date and commit the release:
git commit -am "Release v0.X.Y"
Tag the release and push to main:
git tag -a v0.X.Y -m "v0.X.Y" git push origin --tags
Draft a release for the new tag on github. A CI will pick that up, build the project and push to PyPI. Be careful, this can't be undone.
Make sure readthedocs builds both stable and the new tag
Add a new section to whats-new.rst and push directly to main