##// END OF EJS Templates
Update stats and docs for 6.0 release.
Matthias Bussonnier -
Show More
@@ -0,0 +1,49 b''
1 Issues closed in the 6.x development cycle
2 ==========================================
3
4 Issues closed in 6.0
5 --------------------
6
7 GitHub stats for 2017/04/10 - 2017/04/19 (milestone: 6.0)
8
9 These lists are automatically generated, and may be incomplete or contain duplicates.
10
11 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+>`__
13
14 The following 34 authors contributed 176 commits.
15
16 * Adam Eury
17 * anantkaushik89
18 * Antonino Ingargiola
19 * Benjamin Ragan-Kelley
20 * Carol Willing
21 * Chilaka Ramakrishna
22 * chillaranand
23 * Denis S. Tereshchenko
24 * Diego Garcia
25 * fatData
26 * Fermi paradox
27 * fuho
28 * Grant Nestor
29 * Ian Rose
30 * Jeroen Demeyer
31 * kaushikanant
32 * Keshav Ramaswamy
33 * Matteo
34 * Matthias Bussonnier
35 * mbyt
36 * Michael KΓ€ufl
37 * michaelpacer
38 * Moez Bouhlel
39 * Pablo Galindo
40 * Paul Ivanov
41 * Piotr Przetacznik
42 * Rounak Banik
43 * sachet-mittal
44 * Srinivas Reddy Thatiparthy
45 * Tamir Bahar
46 * Thomas Hisch
47 * Thomas Kluyver
48 * Utkarsh Upadhyay
49 * Yuri Numerov
@@ -1,309 +1,310 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 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 28 possible.
29 29
30 30 .. note::
31 31
32 32 The ``@`` and ``[dev]`` when mentioning the bot should be optional and can
33 33 be omitted.
34 34
35 35
36 36 Backport with ghpro
37 37 -------------------
38 38
39 39 We can also use `ghpro <https://pypi.python.org/pypi/ghpro>`
40 40 to automatically list and apply the PR on other branches. For example:
41 41
42 42 .. code-block:: bash
43 43
44 44 $ backport-pr todo --milestone 5.2
45 45 [...snip..]
46 46 The following PRs have been backported
47 47 9848
48 48 9851
49 49 9953
50 50 9955
51 51 The following PRs should be backported:
52 52 9417
53 53 9863
54 54 9925
55 55 9947
56 56
57 57 $ backport-pr apply 5.x 9947
58 58 [...snip...]
59 59
60 60
61 61 .. _release_process:
62 62
63 63 =======================
64 64 IPython release process
65 65 =======================
66 66
67 67 This document contains the process that is used to create an IPython release.
68 68
69 69 Conveniently, the ``release`` script in the ``tools`` directory of the ``IPython``
70 70 repository automates most of the release process. This document serves as a
71 71 handy reminder and checklist for the release manager.
72 72
73 73 During the release process, you might need the extra following dependencies:
74 74
75 75 - ``keyring`` to access your GitHub authentication tokens
76 76 - ``graphviz`` to generate some graphs in the documentation
77 - ``ghpro`` to generate the stats
77 78
78 79 Make sure you have all the required dependencies to run the tests as well.
79 80
80 81
81 82 1. Set Environment variables
82 83 ----------------------------
83 84
84 85 Set environment variables to document previous release tag, current
85 86 release milestone, current release version, and git tag.
86 87
87 88 These variables may be used later to copy/paste as answers to the script
88 89 questions instead of typing the appropriate command when the time comes. These
89 90 variables are not used by the scripts directly; therefore, there is no need to
90 91 ``export`` them. The format for bash is as follows, but note that these values
91 92 are just an example valid only for the 5.0 release; you'll need to update them
92 93 for the release you are actually making::
93 94
94 95 PREV_RELEASE=4.2.1
95 96 MILESTONE=5.0
96 97 VERSION=5.0.0
97 98 BRANCH=master
98 99
99 100
100 101 2. Create GitHub stats and finish release note
101 102 ----------------------------------------------
102 103
103 104 .. note::
104 105
105 106 This step is optional if making a Beta or RC release.
106 107
107 108 .. note::
108 109
109 110 Before generating the GitHub stats, verify that all closed issues and pull
110 111 requests have `appropriate milestones
111 112 <https://github.com/ipython/ipython/wiki/Dev:-GitHub-workflow#milestones>`_.
112 113 `This search
113 114 <https://github.com/ipython/ipython/issues?q=is%3Aclosed+no%3Amilestone+is%3Aissue>`_
114 115 should return no results before creating the GitHub stats.
115 116
116 117 If a major release:
117 118
118 119 - merge any pull request notes into what's new::
119 120
120 121 python tools/update_whatsnew.py
121 122
122 123 - update ``docs/source/whatsnew/development.rst``, to ensure it covers
123 124 the major release features
124 125
125 126 - move the contents of ``development.rst`` to ``versionX.rst`` where ``X`` is
126 127 the numerical release version
127 128
128 129 - generate summary of GitHub contributions, which can be done with::
129 130
130 131 python tools/github_stats.py --milestone $MILESTONE > stats.rst
131 132
132 133 which may need some manual cleanup of ``stats.rst``. Add the cleaned
133 134 ``stats.rst`` results to ``docs/source/whatsnew/github-stats-X.rst``
134 135 where ``X`` is the numerical release version (don't forget to add it to
135 136 the git repo as well). If creating a major release, make a new
136 137 ``github-stats-X.rst`` file; if creating a minor release, the content
137 138 from ``stats.rst`` may simply be added to the top of an existing
138 139 ``github-stats-X.rst`` file. Finally, edit
139 140 ``docs/source/whatsnew/index.rst`` to list the new ``github-stats-X``
140 141 file you just created and remove temporarily the first entry called
141 142 ``development`` (you'll need to add it back after release).
142 143
143 144 Make sure that the stats file has a header or it won't be rendered in
144 145 the final documentation.
145 146
146 147 To find duplicates and update `.mailmap`, use::
147 148
148 149 git log --format="%aN <%aE>" $PREV_RELEASE... | sort -u -f
149 150
150 151 If a minor release you might need to do some of the above points manually, and
151 152 forward port the changes.
152 153
153 154 3. Make sure the repository is clean
154 155 ------------------------------------
155 156
156 157 of any file that could be problematic.
157 158 Remove all non-tracked files with:
158 159
159 160 .. code::
160 161
161 162 git clean -xfdi
162 163
163 164 This will ask for confirmation before removing all untracked files. Make
164 165 sure the ``dist/`` folder is clean to avoid any stale builds from
165 166 previous build attempts.
166 167
167 168
168 169 4. Update the release version number
169 170 ------------------------------------
170 171
171 172 Edit ``IPython/core/release.py`` to have the current version.
172 173
173 174 in particular, update version number and ``_version_extra`` content in
174 175 ``IPython/core/release.py``.
175 176
176 177 Step 5 will validate your changes automatically, but you might still want to
177 178 make sure the version number matches pep440.
178 179
179 180 In particular, ``rc`` and ``beta`` are not separated by ``.`` or the ``sdist``
180 181 and ``bdist`` will appear as different releases. For example, a valid version
181 182 number for a release candidate (rc) release is: ``1.3rc1``. Notice that there
182 183 is no separator between the '3' and the 'r'. Check the environment variable
183 184 ``$VERSION`` as well.
184 185
185 186 You will likely just have to modify/comment/uncomment one of the lines setting
186 187 ``_version_extra``
187 188
188 189
189 190 5. Run the `tools/build_release` script
190 191 ---------------------------------------
191 192
192 193 Running ``tools/build_release`` does all the file checking and building that
193 194 the real release script will do. This makes test installations, checks that
194 195 the build procedure runs OK, and tests other steps in the release process.
195 196
196 197 The ``build_release`` script will in particular verify that the version number
197 198 match PEP 440, in order to avoid surprise at the time of build upload.
198 199
199 200 We encourage creating a test build of the docs as well.
200 201
201 202 6. Create and push the new tag
202 203 ------------------------------
203 204
204 205 Commit the changes to release.py::
205 206
206 207 git commit -am "release $VERSION"
207 208 git push origin $BRANCH
208 209
209 210 Create and push the tag::
210 211
211 212 git tag -am "release $VERSION" "$VERSION"
212 213 git push origin --tags
213 214
214 215 Update release.py back to ``x.y-dev`` or ``x.y-maint``, and re-add the
215 216 ``development`` entry in ``docs/source/whatsnew/index.rst`` and push::
216 217
217 218 git commit -am "back to development"
218 219 git push origin $BRANCH
219 220
220 221 Now checkout the tag we just made::
221 222
222 223 git checkout $VERSION
223 224
224 225 7. Run the release script
225 226 -------------------------
226 227
227 228 Run the ``release`` script, this step requires having a current wheel, Python
228 229 >=3.4 and Python 2.7.::
229 230
230 231 ./tools/release
231 232
232 233 This makes the tarballs and wheels, and puts them under the ``dist/``
233 234 folder. Be sure to test the ``wheels`` and the ``sdist`` locally before
234 235 uploading them to PyPI. We do not use an universal wheel as each wheel
235 236 installs an ``ipython2`` or ``ipython3`` script, depending on the version of
236 237 Python it is built for. Using an universal wheel would prevent this.
237 238
238 239 Use the following to actually upload the result of the build::
239 240
240 241 ./tools/release upload
241 242
242 243 It should posts them to ``archive.ipython.org`` and to PyPI.
243 244
244 245 PyPI/Warehouse will automatically hide previous releases. If you are uploading
245 246 a non-stable version, make sure to log-in to PyPI and un-hide previous version.
246 247
247 248
248 249 8. Draft a short release announcement
249 250 -------------------------------------
250 251
251 252 The announcement should include:
252 253
253 254 - release highlights
254 255 - a link to the html version of the *What's new* section of the documentation
255 256 - a link to upgrade or installation tips (if necessary)
256 257
257 258 Post the announcement to the mailing list and or blog, and link from Twitter.
258 259
259 260 .. note::
260 261
261 262 If you are doing a RC or Beta, you can likely skip the next steps.
262 263
263 264 9. Update milestones on GitHub
264 265 -------------------------------
265 266
266 267 These steps will bring milestones up to date:
267 268
268 269 - close the just released milestone
269 270 - open a new milestone for the next release (x, y+1), if the milestone doesn't
270 271 exist already
271 272
272 273 10. Update the IPython website
273 274 ------------------------------
274 275
275 276 The IPython website should document the new release:
276 277
277 278 - add release announcement (news, announcements)
278 279 - update current version and download links
279 280 - update links on the documentation page (especially if a major release)
280 281
281 282 11. Update readthedocs
282 283 ----------------------
283 284
284 285 Make sure to update readthedocs and set the latest tag as stable, as well as
285 286 checking that previous release is still building under its own tag.
286 287
287 288 12. Update the Conda-Forge feedstock
288 289 ------------------------------------
289 290
290 291 Follow the instructions on `the repository <https://github.com/conda-forge/ipython-feedstock>`_
291 292
292 293 13. Celebrate!
293 294 --------------
294 295
295 296 Celebrate the release and please thank the contributors for their work. Great
296 297 job!
297 298
298 299
299 300
300 301 Old Documentation
301 302 =================
302 303
303 304 Out of date documentation is still available and have been kept for archival purposes.
304 305
305 306 .. note::
306 307
307 308 Developers documentation used to be on the IPython wiki, but are now out of
308 309 date. The wiki is though still available for historical reasons: `Old IPython
309 310 GitHub Wiki. <https://github.com/ipython/ipython/wiki/Dev:-Index>`_
@@ -1,45 +1,46 b''
1 1 .. Developers should add in this file, during each release cycle, information
2 2 .. about important changes they've made, in a summary format that's meant for
3 3 .. end users. For each release we normally have three sections: features, bug
4 4 .. fixes and api breakage.
5 5 .. Please remember to credit the authors of the contributions by name,
6 6 .. especially when they are new users or developers who do not regularly
7 7 .. participate in IPython's development.
8 8
9 9 .. _whatsnew_index:
10 10
11 11 =====================
12 12 What's new in IPython
13 13 =====================
14 14
15 15 This section documents the changes that have been made in various versions of
16 16 IPython. Users should consult these pages to learn about new features, bug
17 17 fixes and backwards incompatibilities. Developers should summarize the
18 18 development work they do here in a user friendly format.
19 19
20 20 .. toctree::
21 21 :maxdepth: 1
22 22
23 23 version6
24 github-stats-6
24 25 version5
25 26 github-stats-5
26 27 version4
27 28 github-stats-4
28 29 version3
29 30 github-stats-3
30 31 version3_widget_migration
31 32 version2.0
32 33 github-stats-2.0
33 34 version1.0
34 35 github-stats-1.0
35 36 version0.13
36 37 github-stats-0.13
37 38 version0.12
38 39 github-stats-0.12
39 40 version0.11
40 41 github-stats-0.11
41 42 version0.10
42 43 version0.9
43 44 version0.8
44 45
45 46
@@ -1,188 +1,188 b''
1 1 ============
2 2 6.x Series
3 3 ============
4 4
5 5 IPython 6.0
6 6 ===========
7 7
8 Released .... ...., 2017
8 Released April 19th, 2017
9 9
10 10 IPython 6 feature a major improvement in the completion machinery which is now
11 11 capable of completing non-executed code. It is also the first version of IPython
12 12 to stop compatibility with Python 2, which is still supported on the bugfix only
13 13 5.x branch. Read below to have a non-exhaustive list of new features.
14 14
15 15 Make sure you have pip > 9.0 before upgrading.
16 16 You should be able to update by using:
17 17
18 18 .. code::
19 19
20 20 pip install ipython --upgrade
21 21
22 22
23 23 .. note::
24 24
25 25 If your pip version is greater of equal to pip 9.0.1 you will automatically get
26 26 the most recent version of IPython compatible with your system: on Python 2 you
27 27 will get the latest IPython 5.x bugfix, while in Python 3
28 28 you will get the latest 6.x stable version.
29 29
30 30 New completion API and Interface
31 31 --------------------------------
32 32
33 33 The completer Completion API has seen an overhaul, and the new completer have
34 34 plenty of improvement both from the end users of terminal IPython or for
35 35 consumers of the API.
36 36
37 37 This new API is capable of pulling completions from :any:`jedi`, thus allowing
38 38 type inference on non-executed code. If :any:`jedi` is installed completion like
39 39 the following are now becoming possible without code evaluation:
40 40
41 41 >>> data = ['Number of users', 123_456]
42 42 ... data[0].<tab>
43 43
44 44 That is to say, IPython is now capable of inferring that `data[0]` is a string,
45 45 and will suggest completions like `.capitalize`. The completion power of IPython
46 46 will increase with new Jedi releases, and a number of bugs and more completions
47 47 are already available on the development version of :any:`jedi` if you are curious.
48 48
49 49 With the help of prompt toolkit, types of completions can be shown in the
50 50 completer interface:
51 51
52 52 .. image:: ../_images/jedi_type_inference_60.png
53 53 :alt: Jedi showing ability to do type inference
54 54 :align: center
55 55 :width: 400px
56 56 :target: ../_images/jedi_type_inference_60.png
57 57
58 58 The appearance of the completer is controlled by the
59 59 ``c.TerminalInteractiveShell.display_completions`` option that will show the
60 60 type differently depending on the value among ``'column'``, ``'multicolumn'``
61 61 and ``'readlinelike'``
62 62
63 63 The use of Jedi also fulfills a number of requests and fix a number of bugs
64 64 like case-insensitive completion, completion after division operator: See
65 65 :ghpull:`10182`.
66 66
67 67 Extra patches and updates will be needed to the :mod:`ipykernel` package for
68 68 this feature to be available to other clients like Jupyter Notebook, Lab,
69 69 Nteract, Hydrogen...
70 70
71 71 The use of Jedi is should be barely noticeable on recent enough machines, but
72 72 can be slower on older ones. To tweak the performances, the amount
73 73 of time given to Jedi to compute type inference can be adjusted with
74 74 ``c.IPCompleter.jedi_compute_type_timeout``. The objects whose type were not
75 75 inferred will be shown as ``<unknown>``. Jedi can also be completely deactivated
76 76 by using the ``c.Completer.use_jedi=False`` option.
77 77
78 78
79 79 The old ``Completer.complete()`` API is waiting deprecation and should be
80 80 replaced replaced by ``Completer.completions()`` in a near future. Feedback on
81 81 the current state of the API and suggestions welcome.
82 82
83 83 Python 3 only codebase
84 84 ----------------------
85 85
86 86 One of the large challenges in IPython 6.0 has been the adoption of a pure
87 87 Python 3 codebase, which leads us to great length to upstream patches in pip,
88 88 pypi and warehouse to make sure Python 2 system still upgrade to the latest
89 89 compatible Python version compatible.
90 90
91 91 We remind our Python 2 users that IPython 5 is still compatible with Python 2.7,
92 92 still maintained and get regular releases. Using pip 9+, upgrading IPython will
93 93 automatically upgrade to the latest version compatible with your system.
94 94
95 95 .. warning::
96 96
97 97 If you are on a system using an older version of pip on Python 2, pip may
98 98 still install IPython 6.0 on your system, and IPython will refuse to start.
99 99 You can fix this by upgrading pip, and reinstalling ipython, or forcing pip to
100 100 install an earlier version: ``pip install 'ipython<6'``
101 101
102 102 The ability to use only Python 3 on the code base of IPython brings a number
103 103 of advantage. Most of the newly written code make use of `optional function type
104 104 annotation <https://www.python.org/dev/peps/pep-0484/>`_ leading to clearer code
105 105 and better documentation.
106 106
107 107 The total size of the repository has also decreased by about 1500 lines (for the
108 108 first time excluding the big split for 4.0). The decrease is potentially
109 109 a bit more for the sour as some documents like this one are append only and
110 110 are about 300 lines long.
111 111
112 112 The removal as of Python2/Python3 shim layer has made the code quite clearer and
113 113 more idiomatic in a number of location, and much friendlier to work with and
114 114 understand. We hope to further embrace Python 3 capability in the next release
115 115 cycle and introduce more of the Python 3 only idioms (yield from, kwarg only,
116 116 general unpacking) in the code base of IPython, and see if we can take advantage
117 117 of these as well to improve user experience with better error messages and
118 118 hints.
119 119
120 120
121 121 Configurable TerminalInteractiveShell, readline interface
122 122 ---------------------------------------------------------
123 123
124 124 IPython gained a new ``c.TerminalIPythonApp.interactive_shell_class`` option
125 125 that allows customizing the class used to start the terminal frontend. This
126 126 should allow a user to use custom interfaces, like reviving the former readline
127 127 interface which is now a separate package not actively maintained by the core
128 128 team. See the project to bring back the readline interface: `rlipython
129 129 <https://github.com/ipython/rlipython>`_.
130 130
131 131 This change will be backported to the IPython 5.x series.
132 132
133 133 Miscs improvements
134 134 ------------------
135 135
136 136
137 137 - The :cellmagic:`capture` magic can now capture the result of a cell (from
138 138 an expression on the last line), as well as printed and displayed output.
139 139 :ghpull:`9851`.
140 140
141 141 - Pressing Ctrl-Z in the terminal debugger now suspends IPython, as it already
142 142 does in the main terminal prompt.
143 143
144 144 - Autoreload can now reload ``Enum``. See :ghissue:`10232` and :ghpull:`10316`
145 145
146 146 - IPython.display has gained a :any:`GeoJSON <IPython.display.GeoJSON>` object.
147 147 :ghpull:`10288` and :ghpull:`10253`
148 148
149 149 Functions Deprecated in 6.x Development cycle
150 150 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
151 151
152 152 - Loading extensions from ``ipython_extension_dir`` prints a warning that this
153 153 location is pending deprecation. This should only affect users still having
154 154 extensions installed with ``%install_ext`` which has been deprecated since
155 155 IPython 4.0, and removed in 5.0. Extensions still present in
156 156 ``ipython_extension_dir`` may shadow more recently installed versions using
157 157 pip. It is thus recommended to clean ``ipython_extension_dir`` of any
158 158 extension now available as a package.
159 159
160 160
161 161 - ``IPython.utils.warn`` was deprecated in IPython 4.0, and has now been removed.
162 162 instead of ``IPython.utils.warn`` inbuilt :any:`warnings` module is used.
163 163
164 164
165 165 - The function `IPython.core.oinspect.py:call_tip` is unused, was marked as
166 166 deprecated (raising a `DeprecationWarning`) and marked for later removal.
167 167 :ghpull:`10104`
168 168
169 169 Backward incompatible changes
170 170 ------------------------------
171 171
172 172 Functions Removed in 6.x Development cycle
173 173 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
174 174
175 175 The following functions have been removed in the
176 176 development cycle marked for Milestone 6.0.
177 177
178 178 - ``IPython/utils/process.py`` - ``is_cmd_found``
179 179 - ``IPython/utils/process.py`` - ``pycmd2argv``
180 180
181 181 - The `--deep-reload` flag and the corresponding options to inject `dreload` or
182 182 `reload` into the interactive namespace have been removed. You have to
183 183 explicitly import `reload` from `IPython.lib.deepreload` to use it.
184 184
185 185 - The :magic:`profile` used to print current IPython profile in use, and which
186 186 was deprecated in IPython 2.0 does now raise a `DeprecationWarning` error when
187 187 used. It is often confused with the :magic:`prun` and the deprecation remove
188 188 should free up the ``profile`` name in future versions.
General Comments 0
You need to be logged in to leave comments. Login now