# Docutils Release Procedure

Authors: | David Goodger Lea Wiemann open to all Docutils developers
Contact: | docutils-develop@lists.sourceforge.net
Date: | 2021-04-09
Revision: | 8686
Copyright: | This document has been placed in the public domain.

# Releasing (post 2020)

- Announce the upcoming release on docutils-develop list.

  Consider feature freeze or/and check-in freeze .

- Update RELEASE-NOTES.txt add section `Release <version>`.

  Consult HISTORY.txt for important changes.

- Change HISTORY.txt title `Changes Since <previous release>` to `Release <version>`.

- Set new version with `sandbox/infrastructure/set_version.sh <version>`

  Check what was changed with version control system by `set_version.sh`

  Run tests

      export PYTHONWARNINGS=default
      python2 test/alltests.py
      python3 test/alltests.py

  or use tox.

  `export PYTHONWARNINGS=default` prints DeprecationWarnings in python3.

- Generate universal wheel and source-distribution:

      python3 setup.py sdist
      python3 setup.py bdist_wheel --universal

- Upload universal wheel and source to test.pypi:

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

  Wait some minutes to test in virtualenv

      python2 -m virtualenv du2 ; cd du2
      export PYTHONPATH= ; . bin/activate

      python -m pip install --index-url https://test.pypi.org/simple/ --no-deps docutils

      cp -Lr ../docutils-code/docutils/test .
      python test/alltests.py

      python -m pip uninstall docutils
      deactivate ; cd .. ; rm -r du2

  Test in venv

      python3 -m venv du3 ; cd du3
      export PYTHONPATH= ; . bin/activate

      python -m pip install --index-url https://test.pypi.org/simple/ --no-deps docutils

      cp -Lr ../docutils-code/docutils/test .
      python test/alltests.py

      python -m pip uninstall docutils
      deactivate ; cd .. ; rm -r du3

- Commit changes ... the changed version number.

- tag 0.## (Note: only directory docutils is copied):

      svn copy svn+ssh://grubert@svn.code.sf.net/p/docutils/code/trunk/docutils \
               svn+ssh://grubert@svn.code.sf.net/p/docutils/code/tags/docutils-0.## \
               -m "tagging release 0.##"

- Now upload to pypi:

      python3 -m twine upload  dist/docutils-0.##*

  and test:

      python3 -m venv du3 ; cd du3
      export PYTHONPATH= ; . bin/activate

      pip install --no-deps docutils
      cp -Lr ../docutils-code/docutils/test .
      python test/alltests.py

      python2 -m virtualenv du2 ; cd du2
      export PYTHONPATH= ; . bin/activate

      pip install --no-deps docutils
      cp -Lr ../docutils-code/docutils/test .
      python test/alltests.py

- Notify to docutils-developer and user.

- upload source and generated html to sf-htdocs/0.##

      mkdir tmp1
      cd tmp1
      tar xzvf ../dist/docutils-0.##.tar.gz
      cd docutils-0.##/
      tools/buildhtml.py .
      find . -name \*.pyc -exec rm {} \;
      rm -rf docutils.egg-info
      rsync -e ssh -r -t ./ web.sourceforge.net:/home/project-web/docutils/htdocs/0.##

- Check web/index.txt for necessary corrections.

- Run sandbox/infrastructure/docutils-update.local to update web-content.

- Release to sourceforge.

  - Upload tar.gz and 0.16 release notes to sourceforge.
  - Select docutils-0.16.tar.gz as default for all OS.

- set_version 0.##+1b.dev

- test with py2 and py3

- docutils/HISTORY.txt: add title "Changes Since 0.##"

- run sandbox/infrastructure/docutils-update.local