##// END OF EJS Templates
Get stats for 6.1
Matthias Bussonnier -
Show More
@@ -1,310 +1,311 b''
1 .. _core_developer_guide:
1 .. _core_developer_guide:
2
2
3 =================================
3 =================================
4 Guide for IPython core Developers
4 Guide for IPython core Developers
5 =================================
5 =================================
6
6
7 This guide documents the development of IPython itself. Alternatively,
7 This guide documents the development of IPython itself. Alternatively,
8 developers of third party tools and libraries that use IPython should see the
8 developers of third party tools and libraries that use IPython should see the
9 :doc:`../development/index`.
9 :doc:`../development/index`.
10
10
11
11
12 For instructions on how to make a developer install see :ref:`devinstall`.
12 For instructions on how to make a developer install see :ref:`devinstall`.
13
13
14 Backporting Pull requests
14 Backporting Pull requests
15 -------------------------
15 -------------------------
16
16
17 All pull requests should usually be made against ``master``, if a Pull Request
17 All pull requests should usually be made against ``master``, if a Pull Request
18 need to be backported to an earlier release; then it should be tagged with the
18 need to be backported to an earlier release; then it should be tagged with the
19 correct ``milestone``.
19 correct ``milestone``.
20
20
21 If you are an admin on the IPython repository just mention the **backport bot** to
21 If you are an admin on the IPython repository just mention the **backport bot** to
22 do the work for you. The bot is evolving so instructions may be different. At
22 do the work for you. The bot is evolving so instructions may be different. At
23 the time of this writing you can use::
23 the time of this writing you can use::
24
24
25 @meeseeksdev[bot] backport to <branchname>
25 @meeseeksdev[bot] backport [to <branchname>]
26
26
27 The bot will attempt to backport the current pull-request and issue a PR if
27 The bot will attempt to backport the current pull-request and issue a PR if
28 possible.
28 possible. If the milestone is set on the issue you can omit the branch to
29 backport to.
29
30
30 .. note::
31 .. note::
31
32
32 The ``@`` and ``[dev]`` when mentioning the bot should be optional and can
33 The ``@`` and ``[dev]`` when mentioning the bot should be optional and can
33 be omitted.
34 be omitted.
34
35
35
36
36 Backport with ghpro
37 Backport with ghpro
37 -------------------
38 -------------------
38
39
39 We can also use `ghpro <https://pypi.python.org/pypi/ghpro>`
40 We can also use `ghpro <https://pypi.python.org/pypi/ghpro>`
40 to automatically list and apply the PR on other branches. For example:
41 to automatically list and apply the PR on other branches. For example:
41
42
42 .. code-block:: bash
43 .. code-block:: bash
43
44
44 $ backport-pr todo --milestone 5.2
45 $ backport-pr todo --milestone 5.2
45 [...snip..]
46 [...snip..]
46 The following PRs have been backported
47 The following PRs have been backported
47 9848
48 9848
48 9851
49 9851
49 9953
50 9953
50 9955
51 9955
51 The following PRs should be backported:
52 The following PRs should be backported:
52 9417
53 9417
53 9863
54 9863
54 9925
55 9925
55 9947
56 9947
56
57
57 $ backport-pr apply 5.x 9947
58 $ backport-pr apply 5.x 9947
58 [...snip...]
59 [...snip...]
59
60
60
61
61 .. _release_process:
62 .. _release_process:
62
63
63 =======================
64 =======================
64 IPython release process
65 IPython release process
65 =======================
66 =======================
66
67
67 This document contains the process that is used to create an IPython release.
68 This document contains the process that is used to create an IPython release.
68
69
69 Conveniently, the ``release`` script in the ``tools`` directory of the ``IPython``
70 Conveniently, the ``release`` script in the ``tools`` directory of the ``IPython``
70 repository automates most of the release process. This document serves as a
71 repository automates most of the release process. This document serves as a
71 handy reminder and checklist for the release manager.
72 handy reminder and checklist for the release manager.
72
73
73 During the release process, you might need the extra following dependencies:
74 During the release process, you might need the extra following dependencies:
74
75
75 - ``keyring`` to access your GitHub authentication tokens
76 - ``keyring`` to access your GitHub authentication tokens
76 - ``graphviz`` to generate some graphs in the documentation
77 - ``graphviz`` to generate some graphs in the documentation
77 - ``ghpro`` to generate the stats
78 - ``ghpro`` to generate the stats
78
79
79 Make sure you have all the required dependencies to run the tests as well.
80 Make sure you have all the required dependencies to run the tests as well.
80
81
81
82
82 1. Set Environment variables
83 1. Set Environment variables
83 ----------------------------
84 ----------------------------
84
85
85 Set environment variables to document previous release tag, current
86 Set environment variables to document previous release tag, current
86 release milestone, current release version, and git tag.
87 release milestone, current release version, and git tag.
87
88
88 These variables may be used later to copy/paste as answers to the script
89 These variables may be used later to copy/paste as answers to the script
89 questions instead of typing the appropriate command when the time comes. These
90 questions instead of typing the appropriate command when the time comes. These
90 variables are not used by the scripts directly; therefore, there is no need to
91 variables are not used by the scripts directly; therefore, there is no need to
91 ``export`` them. The format for bash is as follows, but note that these values
92 ``export`` them. The format for bash is as follows, but note that these values
92 are just an example valid only for the 5.0 release; you'll need to update them
93 are just an example valid only for the 5.0 release; you'll need to update them
93 for the release you are actually making::
94 for the release you are actually making::
94
95
95 PREV_RELEASE=4.2.1
96 PREV_RELEASE=4.2.1
96 MILESTONE=5.0
97 MILESTONE=5.0
97 VERSION=5.0.0
98 VERSION=5.0.0
98 BRANCH=master
99 BRANCH=master
99
100
100
101
101 2. Create GitHub stats and finish release note
102 2. Create GitHub stats and finish release note
102 ----------------------------------------------
103 ----------------------------------------------
103
104
104 .. note::
105 .. note::
105
106
106 This step is optional if making a Beta or RC release.
107 This step is optional if making a Beta or RC release.
107
108
108 .. note::
109 .. note::
109
110
110 Before generating the GitHub stats, verify that all closed issues and pull
111 Before generating the GitHub stats, verify that all closed issues and pull
111 requests have `appropriate milestones
112 requests have `appropriate milestones
112 <https://github.com/ipython/ipython/wiki/Dev:-GitHub-workflow#milestones>`_.
113 <https://github.com/ipython/ipython/wiki/Dev:-GitHub-workflow#milestones>`_.
113 `This search
114 `This search
114 <https://github.com/ipython/ipython/issues?q=is%3Aclosed+no%3Amilestone+is%3Aissue>`_
115 <https://github.com/ipython/ipython/issues?q=is%3Aclosed+no%3Amilestone+is%3Aissue>`_
115 should return no results before creating the GitHub stats.
116 should return no results before creating the GitHub stats.
116
117
117 If a major release:
118 If a major release:
118
119
119 - merge any pull request notes into what's new::
120 - merge any pull request notes into what's new::
120
121
121 python tools/update_whatsnew.py
122 python tools/update_whatsnew.py
122
123
123 - update ``docs/source/whatsnew/development.rst``, to ensure it covers
124 - update ``docs/source/whatsnew/development.rst``, to ensure it covers
124 the major release features
125 the major release features
125
126
126 - move the contents of ``development.rst`` to ``versionX.rst`` where ``X`` is
127 - move the contents of ``development.rst`` to ``versionX.rst`` where ``X`` is
127 the numerical release version
128 the numerical release version
128
129
129 - generate summary of GitHub contributions, which can be done with::
130 - generate summary of GitHub contributions, which can be done with::
130
131
131 python tools/github_stats.py --milestone $MILESTONE > stats.rst
132 python tools/github_stats.py --milestone $MILESTONE > stats.rst
132
133
133 which may need some manual cleanup of ``stats.rst``. Add the cleaned
134 which may need some manual cleanup of ``stats.rst``. Add the cleaned
134 ``stats.rst`` results to ``docs/source/whatsnew/github-stats-X.rst``
135 ``stats.rst`` results to ``docs/source/whatsnew/github-stats-X.rst``
135 where ``X`` is the numerical release version (don't forget to add it to
136 where ``X`` is the numerical release version (don't forget to add it to
136 the git repo as well). If creating a major release, make a new
137 the git repo as well). If creating a major release, make a new
137 ``github-stats-X.rst`` file; if creating a minor release, the content
138 ``github-stats-X.rst`` file; if creating a minor release, the content
138 from ``stats.rst`` may simply be added to the top of an existing
139 from ``stats.rst`` may simply be added to the top of an existing
139 ``github-stats-X.rst`` file. Finally, edit
140 ``github-stats-X.rst`` file. Finally, edit
140 ``docs/source/whatsnew/index.rst`` to list the new ``github-stats-X``
141 ``docs/source/whatsnew/index.rst`` to list the new ``github-stats-X``
141 file you just created and remove temporarily the first entry called
142 file you just created and remove temporarily the first entry called
142 ``development`` (you'll need to add it back after release).
143 ``development`` (you'll need to add it back after release).
143
144
144 Make sure that the stats file has a header or it won't be rendered in
145 Make sure that the stats file has a header or it won't be rendered in
145 the final documentation.
146 the final documentation.
146
147
147 To find duplicates and update `.mailmap`, use::
148 To find duplicates and update `.mailmap`, use::
148
149
149 git log --format="%aN <%aE>" $PREV_RELEASE... | sort -u -f
150 git log --format="%aN <%aE>" $PREV_RELEASE... | sort -u -f
150
151
151 If a minor release you might need to do some of the above points manually, and
152 If a minor release you might need to do some of the above points manually, and
152 forward port the changes.
153 forward port the changes.
153
154
154 3. Make sure the repository is clean
155 3. Make sure the repository is clean
155 ------------------------------------
156 ------------------------------------
156
157
157 of any file that could be problematic.
158 of any file that could be problematic.
158 Remove all non-tracked files with:
159 Remove all non-tracked files with:
159
160
160 .. code::
161 .. code::
161
162
162 git clean -xfdi
163 git clean -xfdi
163
164
164 This will ask for confirmation before removing all untracked files. Make
165 This will ask for confirmation before removing all untracked files. Make
165 sure the ``dist/`` folder is clean to avoid any stale builds from
166 sure the ``dist/`` folder is clean to avoid any stale builds from
166 previous build attempts.
167 previous build attempts.
167
168
168
169
169 4. Update the release version number
170 4. Update the release version number
170 ------------------------------------
171 ------------------------------------
171
172
172 Edit ``IPython/core/release.py`` to have the current version.
173 Edit ``IPython/core/release.py`` to have the current version.
173
174
174 in particular, update version number and ``_version_extra`` content in
175 in particular, update version number and ``_version_extra`` content in
175 ``IPython/core/release.py``.
176 ``IPython/core/release.py``.
176
177
177 Step 5 will validate your changes automatically, but you might still want to
178 Step 5 will validate your changes automatically, but you might still want to
178 make sure the version number matches pep440.
179 make sure the version number matches pep440.
179
180
180 In particular, ``rc`` and ``beta`` are not separated by ``.`` or the ``sdist``
181 In particular, ``rc`` and ``beta`` are not separated by ``.`` or the ``sdist``
181 and ``bdist`` will appear as different releases. For example, a valid version
182 and ``bdist`` will appear as different releases. For example, a valid version
182 number for a release candidate (rc) release is: ``1.3rc1``. Notice that there
183 number for a release candidate (rc) release is: ``1.3rc1``. Notice that there
183 is no separator between the '3' and the 'r'. Check the environment variable
184 is no separator between the '3' and the 'r'. Check the environment variable
184 ``$VERSION`` as well.
185 ``$VERSION`` as well.
185
186
186 You will likely just have to modify/comment/uncomment one of the lines setting
187 You will likely just have to modify/comment/uncomment one of the lines setting
187 ``_version_extra``
188 ``_version_extra``
188
189
189
190
190 5. Run the `tools/build_release` script
191 5. Run the `tools/build_release` script
191 ---------------------------------------
192 ---------------------------------------
192
193
193 Running ``tools/build_release`` does all the file checking and building that
194 Running ``tools/build_release`` does all the file checking and building that
194 the real release script will do. This makes test installations, checks that
195 the real release script will do. This makes test installations, checks that
195 the build procedure runs OK, and tests other steps in the release process.
196 the build procedure runs OK, and tests other steps in the release process.
196
197
197 The ``build_release`` script will in particular verify that the version number
198 The ``build_release`` script will in particular verify that the version number
198 match PEP 440, in order to avoid surprise at the time of build upload.
199 match PEP 440, in order to avoid surprise at the time of build upload.
199
200
200 We encourage creating a test build of the docs as well.
201 We encourage creating a test build of the docs as well.
201
202
202 6. Create and push the new tag
203 6. Create and push the new tag
203 ------------------------------
204 ------------------------------
204
205
205 Commit the changes to release.py::
206 Commit the changes to release.py::
206
207
207 git commit -am "release $VERSION"
208 git commit -am "release $VERSION"
208 git push origin $BRANCH
209 git push origin $BRANCH
209
210
210 Create and push the tag::
211 Create and push the tag::
211
212
212 git tag -am "release $VERSION" "$VERSION"
213 git tag -am "release $VERSION" "$VERSION"
213 git push origin --tags
214 git push origin --tags
214
215
215 Update release.py back to ``x.y-dev`` or ``x.y-maint``, and re-add the
216 Update release.py back to ``x.y-dev`` or ``x.y-maint``, and re-add the
216 ``development`` entry in ``docs/source/whatsnew/index.rst`` and push::
217 ``development`` entry in ``docs/source/whatsnew/index.rst`` and push::
217
218
218 git commit -am "back to development"
219 git commit -am "back to development"
219 git push origin $BRANCH
220 git push origin $BRANCH
220
221
221 Now checkout the tag we just made::
222 Now checkout the tag we just made::
222
223
223 git checkout $VERSION
224 git checkout $VERSION
224
225
225 7. Run the release script
226 7. Run the release script
226 -------------------------
227 -------------------------
227
228
228 Run the ``release`` script, this step requires having a current wheel, Python
229 Run the ``release`` script, this step requires having a current wheel, Python
229 >=3.4 and Python 2.7.::
230 >=3.4 and Python 2.7.::
230
231
231 ./tools/release
232 ./tools/release
232
233
233 This makes the tarballs and wheels, and puts them under the ``dist/``
234 This makes the tarballs and wheels, and puts them under the ``dist/``
234 folder. Be sure to test the ``wheels`` and the ``sdist`` locally before
235 folder. Be sure to test the ``wheels`` and the ``sdist`` locally before
235 uploading them to PyPI. We do not use an universal wheel as each wheel
236 uploading them to PyPI. We do not use an universal wheel as each wheel
236 installs an ``ipython2`` or ``ipython3`` script, depending on the version of
237 installs an ``ipython2`` or ``ipython3`` script, depending on the version of
237 Python it is built for. Using an universal wheel would prevent this.
238 Python it is built for. Using an universal wheel would prevent this.
238
239
239 Use the following to actually upload the result of the build::
240 Use the following to actually upload the result of the build::
240
241
241 ./tools/release upload
242 ./tools/release upload
242
243
243 It should posts them to ``archive.ipython.org`` and to PyPI.
244 It should posts them to ``archive.ipython.org`` and to PyPI.
244
245
245 PyPI/Warehouse will automatically hide previous releases. If you are uploading
246 PyPI/Warehouse will automatically hide previous releases. If you are uploading
246 a non-stable version, make sure to log-in to PyPI and un-hide previous version.
247 a non-stable version, make sure to log-in to PyPI and un-hide previous version.
247
248
248
249
249 8. Draft a short release announcement
250 8. Draft a short release announcement
250 -------------------------------------
251 -------------------------------------
251
252
252 The announcement should include:
253 The announcement should include:
253
254
254 - release highlights
255 - release highlights
255 - a link to the html version of the *What's new* section of the documentation
256 - a link to the html version of the *What's new* section of the documentation
256 - a link to upgrade or installation tips (if necessary)
257 - a link to upgrade or installation tips (if necessary)
257
258
258 Post the announcement to the mailing list and or blog, and link from Twitter.
259 Post the announcement to the mailing list and or blog, and link from Twitter.
259
260
260 .. note::
261 .. note::
261
262
262 If you are doing a RC or Beta, you can likely skip the next steps.
263 If you are doing a RC or Beta, you can likely skip the next steps.
263
264
264 9. Update milestones on GitHub
265 9. Update milestones on GitHub
265 -------------------------------
266 -------------------------------
266
267
267 These steps will bring milestones up to date:
268 These steps will bring milestones up to date:
268
269
269 - close the just released milestone
270 - close the just released milestone
270 - open a new milestone for the next release (x, y+1), if the milestone doesn't
271 - open a new milestone for the next release (x, y+1), if the milestone doesn't
271 exist already
272 exist already
272
273
273 10. Update the IPython website
274 10. Update the IPython website
274 ------------------------------
275 ------------------------------
275
276
276 The IPython website should document the new release:
277 The IPython website should document the new release:
277
278
278 - add release announcement (news, announcements)
279 - add release announcement (news, announcements)
279 - update current version and download links
280 - update current version and download links
280 - update links on the documentation page (especially if a major release)
281 - update links on the documentation page (especially if a major release)
281
282
282 11. Update readthedocs
283 11. Update readthedocs
283 ----------------------
284 ----------------------
284
285
285 Make sure to update readthedocs and set the latest tag as stable, as well as
286 Make sure to update readthedocs and set the latest tag as stable, as well as
286 checking that previous release is still building under its own tag.
287 checking that previous release is still building under its own tag.
287
288
288 12. Update the Conda-Forge feedstock
289 12. Update the Conda-Forge feedstock
289 ------------------------------------
290 ------------------------------------
290
291
291 Follow the instructions on `the repository <https://github.com/conda-forge/ipython-feedstock>`_
292 Follow the instructions on `the repository <https://github.com/conda-forge/ipython-feedstock>`_
292
293
293 13. Celebrate!
294 13. Celebrate!
294 --------------
295 --------------
295
296
296 Celebrate the release and please thank the contributors for their work. Great
297 Celebrate the release and please thank the contributors for their work. Great
297 job!
298 job!
298
299
299
300
300
301
301 Old Documentation
302 Old Documentation
302 =================
303 =================
303
304
304 Out of date documentation is still available and have been kept for archival purposes.
305 Out of date documentation is still available and have been kept for archival purposes.
305
306
306 .. note::
307 .. note::
307
308
308 Developers documentation used to be on the IPython wiki, but are now out of
309 Developers documentation used to be on the IPython wiki, but are now out of
309 date. The wiki is though still available for historical reasons: `Old IPython
310 date. The wiki is though still available for historical reasons: `Old IPython
310 GitHub Wiki. <https://github.com/ipython/ipython/wiki/Dev:-Index>`_
311 GitHub Wiki. <https://github.com/ipython/ipython/wiki/Dev:-Index>`_
@@ -1,49 +1,89 b''
1 Issues closed in the 6.x development cycle
1 Issues closed in the 6.x development cycle
2 ==========================================
2 ==========================================
3
3
4 Issues closed in 6.1
5 --------------------
6
7 GitHub stats for 2017/04/19 - 2017/05/30 (tag: 6.0.0)
8
9 These lists are automatically generated, and may be incomplete or contain duplicates.
10
11 We closed 10 issues and merged 43 pull requests.
12 The full list can be seen `on GitHub <https://github.com/ipython/ipython/issues?q=milestone%3A6.1+>`__
13
14 The following 26 authors contributed 116 commits.
15
16 * Alex Alekseyev
17 * Benjamin Ragan-Kelley
18 * Brian E. Granger
19 * Christopher C. Aycock
20 * Dave Willmer
21 * David Bradway
22 * ICanWaitAndFishAllDay
23 * Ignat Shining
24 * Jarrod Janssen
25 * Joshua Storck
26 * Luke Pfister
27 * Matthias Bussonnier
28 * Matti Remes
29 * meeseeksdev[bot]
30 * memeplex
31 * Ming Zhang
32 * Nick Weseman
33 * Paul Ivanov
34 * Piotr Zielinski
35 * ryan thielke
36 * sagnak
37 * Sang Min Park
38 * Srinivas Reddy Thatiparthy
39 * Steve Bartz
40 * Thomas Kluyver
41 * Tory Haavik
42
43
4 Issues closed in 6.0
44 Issues closed in 6.0
5 --------------------
45 --------------------
6
46
7 GitHub stats for 2017/04/10 - 2017/04/19 (milestone: 6.0)
47 GitHub stats for 2017/04/10 - 2017/04/19 (milestone: 6.0)
8
48
9 These lists are automatically generated, and may be incomplete or contain duplicates.
49 These lists are automatically generated, and may be incomplete or contain duplicates.
10
50
11 We closed 49 issues and merged 145 pull requests.
51 We closed 49 issues and merged 145 pull requests.
12 The full list can be seen `on GitHub <https://github.com/ipython/ipython/issues?q=milestone%3A6.0+>`__
52 The full list can be seen `on GitHub <https://github.com/ipython/ipython/issues?q=milestone%3A6.0+>`__
13
53
14 The following 34 authors contributed 176 commits.
54 The following 34 authors contributed 176 commits.
15
55
16 * Adam Eury
56 * Adam Eury
17 * anantkaushik89
57 * anantkaushik89
18 * Antonino Ingargiola
58 * Antonino Ingargiola
19 * Benjamin Ragan-Kelley
59 * Benjamin Ragan-Kelley
20 * Carol Willing
60 * Carol Willing
21 * Chilaka Ramakrishna
61 * Chilaka Ramakrishna
22 * chillaranand
62 * chillaranand
23 * Denis S. Tereshchenko
63 * Denis S. Tereshchenko
24 * Diego Garcia
64 * Diego Garcia
25 * fatData
65 * fatData
26 * Fermi paradox
66 * Fermi paradox
27 * fuho
67 * fuho
28 * Grant Nestor
68 * Grant Nestor
29 * Ian Rose
69 * Ian Rose
30 * Jeroen Demeyer
70 * Jeroen Demeyer
31 * kaushikanant
71 * kaushikanant
32 * Keshav Ramaswamy
72 * Keshav Ramaswamy
33 * Matteo
73 * Matteo
34 * Matthias Bussonnier
74 * Matthias Bussonnier
35 * mbyt
75 * mbyt
36 * Michael Käufl
76 * Michael Käufl
37 * michaelpacer
77 * michaelpacer
38 * Moez Bouhlel
78 * Moez Bouhlel
39 * Pablo Galindo
79 * Pablo Galindo
40 * Paul Ivanov
80 * Paul Ivanov
41 * Piotr Przetacznik
81 * Piotr Przetacznik
42 * Rounak Banik
82 * Rounak Banik
43 * sachet-mittal
83 * sachet-mittal
44 * Srinivas Reddy Thatiparthy
84 * Srinivas Reddy Thatiparthy
45 * Tamir Bahar
85 * Tamir Bahar
46 * Thomas Hisch
86 * Thomas Hisch
47 * Thomas Kluyver
87 * Thomas Kluyver
48 * Utkarsh Upadhyay
88 * Utkarsh Upadhyay
49 * Yuri Numerov
89 * Yuri Numerov
General Comments 0
You need to be logged in to leave comments. Login now