Docutils Release Procedure

Authors: David Goodger
Lea Wiemann
open to all Docutils developers
Date: 2016-12-13
Revision: 7997
Copyright: This document has been placed in the public domain.

Assumptions and their failure

On the test machine python2.4, 2.5, 2.6, 2.7 and 3.2, 3.3, and 3.4 are installed. Some in /usr/ some under /usr/local.

Assumption: If python2.6 is in /usr/bin/ than site-packages is under

On new ubuntu 12.10


Prerelease: test/notify sphinx.

Note on numbering (Feature Request #50)

PEP 440 specifies how release version are understood by pip and other tools.

The last released package of docutils was in 2014.

If you install the version from Source it will not be overriden by version 0.13 when it is eventaully released.

As folks have installed 0.13 from indeterminate source versions the current version should be incremented as to allow pip to overrite a 0.13 snapshot when the next official release.

Please increment and switch the version in to be a pre-release. e.g. 0.13.1a

When a version is tagged it should be changed to a non pre release and then in the next commit incremented to the next expected version but with a pre release added

0.13.1a -> Head
0.13.1 -> when tagged for release
0.13.2a -> new head after release

Additionally snapshots can be marked with the .devXXX nomenclature.

These can then all be pushed to and by default pip will install the latest release unless explicitly requested via the --pre flag or a version specifier docutils>=0.13.1a


Steps in boldface text are not covered by the release script at sandbox/infrastructure/ "Not covered" means that you aren't even reminded of them.


This document does not cover branching and tagging, but the release script does.


You may want to use ReleaseForge instead of using SourceForge's file release system.

Call sandbox/infrastructure/ new_version svn_version. For details see the script.

new_version is the current version, status will change from repository to release. svn_version is the version after release.


BUG test tarball requires root password, but it is possible to skip this stage interactively, and testing should be done before release.