Guide to making a Transforms3d release

A guide for developers who are doing a Transforms3d release

Release checklist

  • Review the open list of transforms3d issues. Check whether there are outstanding issues that can be closed, and whether there are any issues that should delay the release. Label them !

  • Review and update the release notes. Review and update the Changelog file. Get a partial list of contributors with something like:

    git shortlog -ns 0.6.0..
    

    where 0.6.0 was the last release tag name.

    Then manually go over git shortlog 0.6.0.. to make sure the release notes are as complete as possible and that every contributor was recognized.

  • Use the opportunity to update the .mailmap file if there are any duplicate authors listed from git shortlog -ns.

  • Add any new authors to the AUTHORS file. Add any new entries to the THANKS file.

  • Check the copyright years in doc/conf.py and LICENSE

  • If you have travis-ci building set up you might want to push the code in its current state to a branch that will build, e.g:

    git branch -D pre-release-test # in case branch already exists
    git co -b pre-release-test
    
  • Clean:

    git clean -fxd
    
  • Make sure all tests pass on your local machine (from the Transforms3d root directory):

    pytest --doctest-modules transforms3d
    
  • Run the same tests after installing into a virtualenv, to test that installing works correctly:

    mkvirtualenv transforms3d-test
    pip install pytest wheel
    git clean -fxd
    python setup.py install
    mkdir for_test
    cd for_test
    pytest --doctest-modules transforms3d
    
  • Check the documentation Doctests:

    cd doc
    make doctest
    cd ..
    
  • The release should now be ready.

Doing the release

You might want to make tag the release commit on your local machine, push to pypi, review, fix, rebase, until all is good. Then and only then do you push to upstream on github.

  • Make a signed annotated tag for the release with tag of form 0.6.0:

    git tag -sm 'Fifth public release' 0.6.0
    

    Because we’re using versioneer it is the tag which sets the package version.

  • Once everything looks good, upload the source release to PyPi. See setuptools intro:

    python setup.py sdist
    twine upload -s dist/*
    
  • Remember you’ll need your ~/.pypirc file set up right for this to work. See setuptools intro. If you have 2-factor authentication, the file may look something like this:

    [pypi]
    username = __token__
    
  • Check how everything looks on Pypi - the description, the packages. If necessary delete the release and try again if it doesn’t look right.

  • Push the tag with git push --tags

  • Upload the docs with:

    pip install -e .  # if you haven't done this already
    pip install -r doc-requirements.txt
    cd doc
    make github
    
  • Announce to the mailing lists. With fear and trembling.