Publish to PyPI
===============
Release process
---------------
Prior to release a new version, the maintainer:
- can create a GitHub project and/or milestone if required listing the PRs to be considered in the upcoming release (optional)
- must create an entry in the CHANGELOG: PRs included in the release should be listed in the CHANGELOG with a link to the PR.
- must have the ability to push the generated tag to ``origin``.
Many OME repositories use `bump2version `_
to manage version numbers.
These can be identified by the presence of a `.bumpversion.cfg` file at the top of the
repository.
First fetch and checkout master or main branch::
$ git fetch origin
$ git checkout master
$ git rebase origin/master
You will need to be able to sign commits with `gpg`. Test this with::
$ echo "test" | gpg --clearsign
Compare the current version in `.bumpversion.cfg` with the last release version
to see if the current difference represents a patch release.
If any PRs are merged that would require the next release to be a ``major`` or ``minor`` version
(see `semver.org `_) then that PR can include a version bump created via::
$ bumpversion --no-tag minor|major
If this hasn't been performed prior to release and you wish to specify the next version
number directly when creating the release, this can be achieved with::
$ bumpversion --new-version 5.9.0 release
If the version is already suitable, simply run::
$ bumpversion release
This will remove the ``.dev0`` suffix from the current version, commit, and tag the release.
To switch back to a development version run::
$ bumpversion --no-tag patch
NB: this assumes next release will be a ``patch`` (see below).
To complete the release, push the master branch and the release tag to origin::
$ git push origin master v5.8.0
Publishing
----------
Many of the OME Python repositories use GitHub actions to publish to PyPI_
when a new tag is created and pushed to GitHub.
This is typically specified in a file such as `.github/workflows/publish_pypi.yml`.