How to make a new release of scikit-nano

A guide for developers for making a new release.

For purposes of this example, we’ll assume we’re working on the development branch dev, with current version number After merging our shiny new feature branch code into dev and checking that all unit tests are passing, we’re ready to create a new stable release with version number 0.X.Y. This is my current workflow:

  1. Update release notes.
  • Review and cleanup doc/release/dev-notes.rst
  • Update the list of contributors by running tools/
  • Rename doc/release/dev-notes.rst to doc/release/X.X.X-notes.rst, where X.X.X is the new release version.
  • Copy doc/release/X.X.X-template.rst to doc/release/dev-notes.rst for the next release.
  • Edit and change ISRELEASED to True.
  • Save and commit these changes with a commit message to the effect of ‘updating setup for release of version 0.X.Y’.
  1. Merge changes into master branch.


  • Run all of the regression tests by running nosetests at the root of the source tree.



Update PyPI

This step tells PyPI about the release and uploads a source tarball. This should only be done with final (non-release-candidate) releases, since doing so will hide any available stable releases.

You may need to set up your pypirc file as described in the distutils register command documentation.

Then updating the record on PyPI is as simple as:

python register

This will hide any previous releases automatically.

Then, to upload the source tarball:

rm -rf dist
python sdist upload

Documentation updates


Announce the release on scikit-nano-announce, scikit-nano-users, and scikit-nano-dev. Final (non-release-candidate) versions should also be announced on python-announce. Include a summary of highlights from the CHANGELOG and/or post the whole CHANGELOG since the last release.