The process for releasing should follow these steps:

  1. Test that docs build and render properly by running tox -e docs,spell.

    If there are bogus spelling issues add the words in spelling_wordlist.txt.

  2. Update CHANGELOG.rst and AUTHORS.rst to be up to date.

  3. Bump the version by running bumpversion [ major | minor | patch ]. This will automatically add a tag.

    Alternatively, you can manually edit the files and run git tag v1.2.3 yourself.

  4. Push changes and tags with:

    git push
    git push --tags
  5. Wait for AppVeyor and Travis to give the green builds.

  6. Check that the docs on ReadTheDocs are built.

  7. Make sure you have a clean checkout, run git status to verify.

  8. Manually clean temporary files (that are ignored and won’t show up in git status):

    rm -rf dist build src/*.egg-info

    These files need to be removed to force distutils/setuptools to rebuild everything and recreate the egg-info metadata.

  9. Build the dists:

    python3.4 clean --all sdist bdist_wheel
  10. Verify that the resulting archives (found in dist/) are good.

  11. Upload the sdist and wheel with twine:

    twine upload dist/*