6.5. Release Procedure

The following procedures gives a short overview of what steps are needed to create a new release.

These steps are interesting for the release manager only.

6.5.1. Prepare the Release

  1. Verify that:

  2. Create a new branch release/<VERSION>.

  3. If one or several supported Python versions have been removed or added, verify that the following files have been updated:

    • setup.cfg

    • tox.ini

    • .git/workflows/pythonpackage.yml

    • .github/workflows/python-testing.yml

  4. Verify that the version in file src/semver/__about__.py has been updated and follows the Semver specification.

  5. Add eventually new contributor(s) to CONTRIBUTORS.

  6. Check if all changelog entries are created. If some are missing, create them.

  7. Show the new draft CHANGELOG entry for the latest release with:

    $ tox -e changelog
    

    Check the output. If you are not happy, update the files in the changelog.d/ directory. If everything is okay, build the new CHANGELOG with:

    $ tox -e changelog -- build
    
  8. Build the documentation and check the output:

    $ tox -e docs
    
  9. Commit all changes, push, and create a pull request.

6.5.2. Create the New Release

  1. Ensure that long description (README.rst) can be correctly rendered by Pypi using restview --long-description

  2. Clean up your local Git repository. Be careful, as it will remove all files which are not versioned by Git:

    $ git clean -xfd
    

    Before you create your distribution files, clean the directory too:

    $ rm dist/*
    
  3. Create the distribution files (wheel and source):

    $ tox -e prepare-dist
    
  4. Upload the wheel and source to TestPyPI first:

    $ twine upload --repository-url https://test.pypi.org/legacy/  dist/*
    

    If you have a ~/.pypirc with a testpypi section, the upload can be simplified:

    $ twine upload --repository testpypi dist/*
    
  5. Check if everything is okay with the wheel. Check also the web site https://test.pypi.org/project/<VERSION>/

  6. If everything looks fine, merge the pull request.

  7. Upload to PyPI:

    $ git clean -xfd
    $ tox -e prepare-dist
    $ twine upload dist/*
    
  8. Go to https://pypi.org/project/semver/ to verify that new version is online and the page is rendered correctly.