New featuers and bug fixes are continually added to the develop branch. On
every merge to master, the version number in
be incremented as described below.
For version numbers, we use
Cis increased for bug fixes,
Bis increased for new features and minor API breaking changes,
Ais increased for major API breaking changes.
Thus, we roughly follow the versioning scheme suggested by the Python packaging guide.
Create a new release¶
After new commits have been added via pull requests to the develop branch, changes can be merged to master and a new version of pyABC can be released. Every merge to master should coincide with an incremented version number and a git tag on the respective merge commit.
Merge into master¶
create a pull request from develop to master,
check that all tests on travis pass,
check that the documentation is up-to-date,
adapt the version number in
update the release notes in
request a code review,
merge into the origin master branch.
To be able to actually perform the merge, sufficient rights may be required. Also, at least one review is required.
Create a release on github¶
After merging into master, create a new release on GitHub. This can be done either directly on the project GitHub website, or via the CLI as described in Git Basics - Tagging. In the release form,
specify a tag with the new version as specified in
include the latest additions to
doc/releasenotes.rstin the release description.
Upload to the Python package index PyPI¶
The upload to pypi has been automatized via travis since pyabc version 0.9.11, and is triggered whenever a new release tag is created on the github master branch.
To manually upload a new version to pypi, proceed as follows:
First, a so called “wheel” is created via:
python setup.py bdist_wheel
A wheel is essentially a zip archive which contains the source code and the binaries (if any).
This archive is uploaded using twine:
twine upload dist/pyabc-x.y.z-py3-non-any.wheel
replacing x.y.z by the appropriate version number.
For a more in-depth discussion see also the section on distributing packages of the Python packaging guide