<divid="unreleased-message"> You are reading an old version of the documentation (v2.1.2). For the latest version see <ahref="https://matplotlib.org/stable/devel/release_guide.html">https://matplotlib.org/stable/devel/release_guide.html</a></div>
<spanid="release-tag"></span><h3>Create release commit and tag<aclass="headerlink" href="#create-release-commit-and-tag" title="Permalink to this headline">¶</a></h3>
<p>To create the tag, first create an empty commit with a very terse set of the release notes
<p>and then create a signed, annotated tag with the same text in the body
message</p>
<divclass="highlight-bash"><divclass="highlight"><pre><span></span>git tag -a -s v2.0.0
</pre></div>
</div>
<p>which will prompt you for your gpg key password and an annotation.
For pre releases it is important to follow <spanclass="target" id="index-0"></span><aclass="pep reference external" href="https://www.python.org/dev/peps/pep-0440"><strong>PEP 440</strong></a> so that the
build artifacts will sort correctly in pypi. Finally, push the tag to GitHub</p>
<tr><tdclass="label"><aclass="fn-backref" href="#id2">[1]</a></td><td><pclass="first">The tarball that is provided by GitHub is produced using <aclass="reference external" href="https://git-scm.com/docs/git-archive">git
<codeclass="file docutils literal"><spanclass="pre">lib/matplotlib/_version.py</span></code> to have <codeclass="docutils literal"><spanclass="pre">git</span></code> insert a
list of references to exported commit (see
<codeclass="file docutils literal"><spanclass="pre">.gitattributes</span></code> for the configuration). This string is
then used by <codeclass="docutils literal"><spanclass="pre">versioneer</span></code> to produce the correct version,
based on the git tag, when users install from the tarball.
However, if there is a branch pointed at the tagged commit,
then the branch name will also be included in the tarball.
When the branch eventually moves, anyone how checked the hash
of the tarball before the branch moved will have an incorrect
<spanid="release-doi"></span><h3>Release Management / DOI<aclass="headerlink" href="#release-management-doi" title="Permalink to this headline">¶</a></h3>
<p>Via the GitHub UI (chase down link), turn the newly pushed tag into a
release. If this is a pre-release remember to mark it as such.</p>
<p>For final releases also get a DOI from <aclass="reference external" href="https://zenodo.org/">zenodo</a> and edit <codeclass="file docutils literal"><spanclass="pre">doc/_templates/citing.html</span></code>
with DOI link and commit to the VER-doc branch and push to GitHub</p>
<spanid="release-bld-bin"></span><h3>Building binaries<aclass="headerlink" href="#building-binaries" title="Permalink to this headline">¶</a></h3>
<p>We distribute mac, windows, and many linux wheels as well as a source
tarball via pypi. Before uploading anything, contact the various
builders. Mac and manylinux wheels are built on travis . You need to
edit the <codeclass="file docutils literal"><spanclass="pre">.travis.yml</span></code> file and push to master of <aclass="reference external" href="https://github.com/MacPython/matplotlib-wheels">the build
project</a>.</p>
<p>Update the <codeclass="docutils literal"><spanclass="pre">master</span></code> branch (for pre-releases the <codeclass="docutils literal"><spanclass="pre">devel</span></code> branch)
of the <aclass="reference external" href="https://github.com/conda-forge/matplotlib-feedstock">conda-forge feedstock</a> via pull request.</p>
<p>If this is a final release the following downstream packagers should be contacted:</p>
<ulclass="simple">
<li>Debian</li>
<li>Fedora</li>
<li>Arch</li>
<li>Gentoo</li>
<li>Macports</li>
<li>Homebrew</li>
<li>Christoph Gohlke</li>
<li>Continuum</li>
<li>Enthought</li>
</ul>
<p>This can be done ahead of collecting all of the binaries and uploading to pypi.</p>
<spanid="release-upload-bin"></span><h3>make distribution and upload to pypi / SF<aclass="headerlink" href="#make-distribution-and-upload-to-pypi-sf" title="Permalink to this headline">¶</a></h3>
<p>Once you have collected all of the wheels, generate the tarball</p>
<spanid="release-docs"></span><h3>Build and Deploy Documentation<aclass="headerlink" href="#build-and-deploy-documentation" title="Permalink to this headline">¶</a></h3>
<p>To build the documentation you must have the tagged version installed, but
build the docs from the <codeclass="docutils literal"><spanclass="pre">ver-doc</span></code> branch. An easy way to arrange this is:</p>
python make.py html latex -n <spanclass="m">16</span>
</pre></div>
</div>
<p>which will build both the html and pdf version of the documentation.</p>
<p>The built documentation exists in the <aclass="reference external" href="https://github.com/matplotlib/matplotlib.github.com/">matplotlib.github.com</a> repository.
Pushing changes to master automatically updates the website.</p>
<p>The documentation is organized by version. At the root of the tree is
always the documentation for the latest stable release. Under that,
there are directories containing the documentation for older versions.
The documentation for current master are built on travis and push to
the <aclass="reference external" href="https://github.com/matplotlib/devdocs/">devdocs</a> repository.
These are available at <aclass="reference external" href="http://matplotlib.org/devdocs">matplotlib.org/devdocs</a>.</p>
<p>Assuming you have this repository checked out in the same directory as