66 Release Guide
77===============
88
9- A guide for developers who are doing a matplotlib release.
9+
10+ .. admonition :: This document is only relevant for matplotlib release managers.
11+
12+ A guide for developers who are doing a matplotlib release.
13+
14+
15+ .. note ::
16+
17+ This assumes that a read-only remote for the canonical repository is
18+ ``remote `` and a read/write remote is ``DANGER ``
1019
1120All Releases
1221============
@@ -43,18 +52,40 @@ We automatically extract GitHub issue, PRs, and authors from GitHub via the API:
4352Review and commit changes. Some issue/PR titles may not be valid rst (the most common issue is
4453``* `` which is interpreted as unclosed markup).
4554
55+ .. note
56+
57+ Make sure you authenticate against the github API (either via
58+ keyring or via putting an oauth token in :file:`~/.ghoauth`). If you
59+ do not you will get blocked by github for going over the API rate
60+ limits.
61+
4662
4763 .. _release_chkdocs :
4864
49- Check Docs
50- ----------
65+ Update and Validate the Docs
66+ ----------------------------
67+
68+ Before tagging, update the "what's new" and "API changes" listings.
69+
70+ for the "what's new"
71+
72+ 1. copy the current content to a file in :file: `doc/users/prev_whats_new `
73+ 2. merge all of the files in :file: `doc/users/next_whats_new/ ` into
74+ :file: `doc/users/whats_new.rst ` and delete the individual files
75+ 3. comment out the next whats new glob at the top
5176
52- Before tagging, update the what's new listing in :file: `doc/users/whats_new.rst `
53- by merging all files in :file: `doc/users/next_whats_new/ ` coherently. Also,
54- temporarily comment out the include and toctree glob; re-instate these after a
55- release. Finally, make sure that the docs build cleanly ::
77+ Similarly for the "API changes"
5678
57- make -Cdoc O=-n$(nproc) html latexpdf
79+ 1. copy the current api changes to a file is :file: `doc/api/prev_api_changes `
80+ 2. merge all of the files in :file: `doc/api/next_api_changes/ ` into
81+ :file: `doc//whats_new.rst `
82+ 3. comment out the next API changes at the top.
83+
84+ In both cases step 3 will have to be un-done right after the release.
85+
86+ Finally, make sure that the docs build cleanly ::
87+
88+ make -Cdoc O=-j$(nproc) html latexpdf
5889
5990After the docs are built, check that all of the links, internal and external, are still
6091valid. We use ``linkchecker `` for this, which has not been ported to python3 yet. You will
@@ -130,21 +161,27 @@ and if this is a major or minor release, also create a bug-fix branch (a
130161micro release will be cut off of this branch)::
131162
132163 git branch v2.0.x
164+
165+ On this branch un-comment the globs from :ref: `release_chkdocs `. And then ::
166+
133167 git push DANGER v2.0.x
134168
135169
136170
171+
137172.. _release_DOI :
138173
139174Release Management / DOI
140175------------------------
141176
142- Via the GitHub UI (chase down link), turn the newly pushed tag into a
143- release. If this is a pre-release remember to mark it as such.
177+ Via the `GitHub UI
178+ <https://github.com/matplotlib/matplotlib/releases> `__, turn the newly
179+ pushed tag into a release. If this is a pre-release remember to mark
180+ it as such.
144181
145182For final releases also get a DOI from `zenodo
146- <https://zenodo.org/> `__ and edit :file: `doc/_templates/ citing.html `
147- with DOI link and commit to the VER-doc branch and push to GitHub ::
183+ <https://zenodo.org/> `__ and edit :file: `doc/citing.rst ` with DOI link
184+ and commit to the VER-doc branch and push to GitHub ::
148185
149186 git checkout v2.0.0-doc
150187 emacs doc/_templates/citing.html
@@ -158,12 +195,20 @@ Building binaries
158195We distribute mac, windows, and many linux wheels as well as a source
159196tarball via pypi. Before uploading anything, contact the various
160197builders. Mac and manylinux wheels are built on travis . You need to
161- edit the :file: `.travis.yml ` file and push to master of `the build
162- project <https://github.com/MacPython/matplotlib-wheels> `__.
198+ edit the :file: `.travis.yml ` file and push to the correct branch of
199+ `the build project
200+ <https://github.com/MacPython/matplotlib-wheels> `__. For new minor
201+ versions create a new branch, for bug-fixes continue to use the current
202+ release branch.
203+
204+ The auto-tick bot should open a pull request into the `conda-forge
205+ feedstock <https://github.com/conda-forge/matplotlib-feedstock> `__.
206+ Review and merge (if you have the power to).
207+
208+ .. warning ::
163209
164- Update the ``master `` branch (for pre-releases the ``devel `` branch)
165- of the `conda-forge feedstock
166- <https://github.com/conda-forge/matplotlib-feedstock> `__ via pull request.
210+ Because this is automated, it is extremely important to bump all branches
211+ away from the tag as discussed in :ref: `release_tag `.
167212
168213If this is a final release the following downstream packagers should be contacted:
169214
@@ -179,12 +224,14 @@ If this is a final release the following downstream packagers should be contacte
179224
180225This can be done ahead of collecting all of the binaries and uploading to pypi.
181226
227+
182228.. _release_upload_bin :
183229
184230make distribution and upload to pypi / SF
185231-----------------------------------------
186232
187- Once you have collected all of the wheels, generate the tarball ::
233+ Once you have collected all of the wheels (expect this to take about a
234+ day), generate the tarball ::
188235
189236 git checkout v2.0.0
190237 git clean -xfd
@@ -228,7 +275,7 @@ there are directories containing the documentation for older versions.
228275The documentation for current master are built on travis and push to
229276the `devdocs <https://github.com/matplotlib/devdocs/ >`__ repository.
230277These are available at `matplotlib.org/devdocs
231- <http ://matplotlib.org/devdocs> `__.
278+ <https ://matplotlib.org/devdocs> `__.
232279
233280Assuming you have this repository checked out in the same directory as
234281matplotlib ::
@@ -252,6 +299,8 @@ You will need to manually edit :file:`versions.html` to show the last
252299
253300Congratulations you have now done the third scariest part!
254301
302+ If you have access, clear the cloudflare caches.
303+
255304It typically takes about 5-10 minutes for GitHub to process the push
256305and update the live web page (remember to clear your browser cache).
257306
@@ -267,9 +316,9 @@ version of the release notes along with acknowledgments should be sent to
267316268317
269318For final releases announcements should also be sent to the
270- numpy/scipy/jupyter mailing lists and python-announce .
319+ numpy/scipy/scikit-image mailing lists.
271320
272- In addition, announcements should be made on social networks (twitter,
273- g+, FB). For major release, ` NumFOCUS < http://www.numfocus.org/ >`__
274- should be contacted for inclusion in their newsletter and maybe to
275- have something posted on their blog .
321+ In addition, announcements should be made on social networks (twitter
322+ via the `` @matplotlib `` account, any other via personal accounts).
323+ ` NumFOCUS < https://www.numfocus.org/ >`__ should be contacted for
324+ inclusion in their newsletter .
0 commit comments