6
6
Release Guide
7
7
===============
8
8
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 ``
10
19
11
20
All Releases
12
21
============
@@ -43,18 +52,40 @@ We automatically extract GitHub issue, PRs, and authors from GitHub via the API:
43
52
Review and commit changes. Some issue/PR titles may not be valid rst (the most common issue is
44
53
``* `` which is interpreted as unclosed markup).
45
54
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
+
46
62
47
63
.. _release_chkdocs :
48
64
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
51
76
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"
56
78
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
58
89
59
90
After the docs are built, check that all of the links, internal and external, are still
60
91
valid. 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
130
161
micro release will be cut off of this branch)::
131
162
132
163
git branch v2.0.x
164
+
165
+ On this branch un-comment the globs from :ref: `release_chkdocs `. And then ::
166
+
133
167
git push DANGER v2.0.x
134
168
135
169
136
170
171
+
137
172
.. _release_DOI :
138
173
139
174
Release Management / DOI
140
175
------------------------
141
176
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.
144
181
145
182
For 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 ::
148
185
149
186
git checkout v2.0.0-doc
150
187
emacs doc/_templates/citing.html
@@ -158,12 +195,20 @@ Building binaries
158
195
We distribute mac, windows, and many linux wheels as well as a source
159
196
tarball via pypi. Before uploading anything, contact the various
160
197
builders. 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 ::
163
209
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 `.
167
212
168
213
If this is a final release the following downstream packagers should be contacted:
169
214
@@ -179,12 +224,14 @@ If this is a final release the following downstream packagers should be contacte
179
224
180
225
This can be done ahead of collecting all of the binaries and uploading to pypi.
181
226
227
+
182
228
.. _release_upload_bin :
183
229
184
230
make distribution and upload to pypi / SF
185
231
-----------------------------------------
186
232
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 ::
188
235
189
236
git checkout v2.0.0
190
237
git clean -xfd
@@ -228,7 +275,7 @@ there are directories containing the documentation for older versions.
228
275
The documentation for current master are built on travis and push to
229
276
the `devdocs <https://github.com/matplotlib/devdocs/ >`__ repository.
230
277
These are available at `matplotlib.org/devdocs
231
- <http ://matplotlib.org/devdocs> `__.
278
+ <https ://matplotlib.org/devdocs> `__.
232
279
233
280
Assuming you have this repository checked out in the same directory as
234
281
matplotlib ::
@@ -252,6 +299,8 @@ You will need to manually edit :file:`versions.html` to show the last
252
299
253
300
Congratulations you have now done the third scariest part!
254
301
302
+ If you have access, clear the cloudflare caches.
303
+
255
304
It typically takes about 5-10 minutes for GitHub to process the push
256
305
and update the live web page (remember to clear your browser cache).
257
306
@@ -267,9 +316,9 @@ version of the release notes along with acknowledgments should be sent to
267
316
268
317
269
318
For 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.
271
320
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