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