Releasing a new version¶
Releasing a new version of tutorial.todoapp involves the following steps:
- Create a git tag for the release.
- Push the git tag upstream to GitHub.
- Generate a distribution file for the package.
- Upload the generated package to Python Package Index (PyPI).
Before every release make sure that:
You have documented your changes in the
You have modified the version identifier in
setup.pyto reflect the new release.
You have confirmed that the package description
README.rstand others) renders correctly by running
- You have committed all changes to the git repository and pushed them upstream.
- You have the working directory checked out at the revision you wish to release.
For help with releasing we use
jarn.mkreleaser. It's listed as a dependency in
and should already be installed in your local bin:
$ bin/mkrelease -d pypi -pq ./
In order to push packages to PyPI you need to have the
appropriate access rights to the package on PyPI and you
need to configure your PyPI credentials in the
[distutils] index-servers = pypi [pypi] username = fred password = secret
In the following example we are releasing version 0.1 of
tutorial.todoapp. The package has been
prepared so that
contains the version
0.1, this change has been committed to git and all changes
have been pushed upstream to GitHub:
# Check that package description is rendered correctly $ bin/longtest # Make a release and upload it to PyPI $ bin/mkrelease -d pypi -pq ./ Releasing tutorial.todoapp 0.1 Tagging tutorial.todoapp 0.1 To email@example.com:collective/tutorial.todoapp.git * [new tag] 0.1 -> 0.1 running egg_info running sdist warning: sdist: standard file not found: should have one of README, README.txt running register Server response (200): OK running upload warning: sdist: standard file not found: should have one of README, README.txt Server response (200): OK done
Please ignore the sdist warning about README file above. PyPI does not depend on it and it's just a bug in setupools (reported and waiting to be fixed).