##// END OF EJS Templates
Merge pull request #13158 from Carreau/wn-728...
Matthias Bussonnier -
r26803:c223896f merge
parent child Browse files
Show More
@@ -1,1516 +1,1563 b''
1 ============
1 ============
2 7.x Series
2 7.x Series
3 ============
3 ============
4
4
5 .. _version 7.28:
6
7 IPython 7.28
8 ============
9
10
11 IPython 7.28 is again a minor release that mostly bring bugfixes, and couple of
12 improvement. Many thanks to MrMino, who again did all the work this month, and
13 made a number of documentation improvements.
14
15 Here is a non-exhaustive list of changes,
16
17 Fixes:
18
19 - async with doesn't allow newlines :ghpull:`13090`
20 - Dynamically changing to vi mode via %config magic) :ghpull:`13091`
21
22 Virtualenv handling fixes:
23
24 - init_virtualenv now uses Pathlib :ghpull:`12548`
25 - Fix Improper path comparison of virtualenv directories :ghpull:`13140`
26 - Fix virtual environment user warning for lower case pathes :ghpull:`13094`
27 - Adapt to all sorts of drive names for cygwin :ghpull:`13153`
28
29 New Features:
30
31 - enable autoplay in embed YouTube player :ghpull:`13133`
32
33 Documentation:
34
35 - Fix formatting for the core.interactiveshell documentation :ghpull:`13118`
36 - Fix broken ipyparallel's refs :ghpull:`13138`
37 - Improve formatting of %time documentation :ghpull:`13125`
38 - Reword the YouTubeVideo autoplay WN :ghpull:`13147`
39
40
41 Thanks
42 ------
43
44 Many thanks to all the contributors to this release. You can find all individual
45 contributions to this milestone `on github
46 <https://github.com/ipython/ipython/milestone/92>`__.
47
48 Thanks as well to the `D. E. Shaw group <https://deshaw.com/>`__ for sponsoring
49 work on IPython and related libraries.
50
51
5 .. _version 7.27:
52 .. _version 7.27:
6
53
7 IPython 7.27
54 IPython 7.27
8 ============
55 ============
9
56
10 IPython 7.27 is a minor release that fixes a couple of issues and compatibility.
57 IPython 7.27 is a minor release that fixes a couple of issues and compatibility.
11
58
12 - Add support for GTK4 :ghpull:`131011`
59 - Add support for GTK4 :ghpull:`131011`
13 - Add support for Qt6 :ghpull:`13085`
60 - Add support for Qt6 :ghpull:`13085`
14 - Fix an issue with pip magic on windows :ghpull:`13093`
61 - Fix an issue with pip magic on windows :ghpull:`13093`
15
62
16 Thanks
63 Thanks
17 ------
64 ------
18
65
19 Many thanks to all the contributors to this release. You can find all individual
66 Many thanks to all the contributors to this release. You can find all individual
20 contributions to this milestone `on github
67 contributions to this milestone `on github
21 <https://github.com/ipython/ipython/milestone/90>`__.
68 <https://github.com/ipython/ipython/milestone/91>`__.
22
69
23 Thanks as well to the `D. E. Shaw group <https://deshaw.com/>`__ for sponsoring
70 Thanks as well to the `D. E. Shaw group <https://deshaw.com/>`__ for sponsoring
24 work on IPython and related libraries.
71 work on IPython and related libraries.
25
72
26 .. _version 7.26:
73 .. _version 7.26:
27
74
28 IPython 7.26
75 IPython 7.26
29 ============
76 ============
30
77
31 IPython 7.26 is a minor release that fixes a couple of issues, updates in API
78 IPython 7.26 is a minor release that fixes a couple of issues, updates in API
32 and Copyright/Licenses issues around various part of the codebase.
79 and Copyright/Licenses issues around various part of the codebase.
33
80
34 We'll highlight `this issue <https://github.com/ipython/ipython/issues/13039>`
81 We'll highlight `this issue <https://github.com/ipython/ipython/issues/13039>`
35 pointing out we were including and refereeing to code from Stack Overflow which
82 pointing out we were including and refereeing to code from Stack Overflow which
36 was CC-BY-SA, hence incompatible with the BSD license of IPython. This lead us
83 was CC-BY-SA, hence incompatible with the BSD license of IPython. This lead us
37 to a rewriting of the corresponding logic which in our case was done in a more
84 to a rewriting of the corresponding logic which in our case was done in a more
38 efficient way (in our case we were searching string prefixes instead of full
85 efficient way (in our case we were searching string prefixes instead of full
39 strings).
86 strings).
40
87
41 You will notice also a number of documentation improvements and cleanup.
88 You will notice also a number of documentation improvements and cleanup.
42
89
43 Of particular interest are the following Pull-requests:
90 Of particular interest are the following Pull-requests:
44
91
45
92
46 - The IPython directive now uses Sphinx logging for warnings. :ghpull:`13030`.
93 - The IPython directive now uses Sphinx logging for warnings. :ghpull:`13030`.
47 - Add expiry days option to pastebin magic and change http protocol to https.
94 - Add expiry days option to pastebin magic and change http protocol to https.
48 :ghpull:`13056`
95 :ghpull:`13056`
49 - Make Ipython.utils.timing work with jupyterlite :ghpull:`13050`.
96 - Make Ipython.utils.timing work with jupyterlite :ghpull:`13050`.
50
97
51
98
52
99
53 Thanks
100 Thanks
54 ------
101 ------
55
102
56 Many thanks to all the contributors to this release and in particular MrMino who
103 Many thanks to all the contributors to this release and in particular MrMino who
57 is doing most of the work those days. You can find all individual contributions
104 is doing most of the work those days. You can find all individual contributions
58 to this milestone `on github <https://github.com/ipython/ipython/milestone/90>`__.
105 to this milestone `on github <https://github.com/ipython/ipython/milestone/90>`__.
59
106
60 Thanks as well to the `D. E. Shaw group <https://deshaw.com/>`__ for sponsoring
107 Thanks as well to the `D. E. Shaw group <https://deshaw.com/>`__ for sponsoring
61 work on IPython and related libraries.
108 work on IPython and related libraries.
62
109
63
110
64 .. _version 7.25:
111 .. _version 7.25:
65
112
66 IPython 7.25
113 IPython 7.25
67 ============
114 ============
68
115
69 IPython 7.25 is a minor release that contains a single bugfix, which is highly
116 IPython 7.25 is a minor release that contains a single bugfix, which is highly
70 recommended for all users of ipdb, ipython debugger %debug magic and similar.
117 recommended for all users of ipdb, ipython debugger %debug magic and similar.
71
118
72 Issuing commands like ``where`` from within the debugger would reset the
119 Issuing commands like ``where`` from within the debugger would reset the
73 local variables changes made by the user. It is interesting to look at the root
120 local variables changes made by the user. It is interesting to look at the root
74 cause of the issue as accessing an attribute (``frame.f_locals``) would trigger
121 cause of the issue as accessing an attribute (``frame.f_locals``) would trigger
75 this side effects.
122 this side effects.
76
123
77 Thanks in particular to the patience from the reporters at D.E. Shaw for their
124 Thanks in particular to the patience from the reporters at D.E. Shaw for their
78 initial bug report that was due to a similar coding oversight in an extension,
125 initial bug report that was due to a similar coding oversight in an extension,
79 and who took time to debug and narrow down the problem.
126 and who took time to debug and narrow down the problem.
80
127
81 Thanks
128 Thanks
82 ------
129 ------
83
130
84 Many thanks to all the contributors to this release you can find all individual
131 Many thanks to all the contributors to this release you can find all individual
85 contributions to this milestone `on github <https://github.com/ipython/ipython/milestone/89>`__.
132 contributions to this milestone `on github <https://github.com/ipython/ipython/milestone/89>`__.
86
133
87 Thanks as well to the `D. E. Shaw group <https://deshaw.com/>`__ for sponsoring
134 Thanks as well to the `D. E. Shaw group <https://deshaw.com/>`__ for sponsoring
88 work on IPython and related libraries.
135 work on IPython and related libraries.
89
136
90
137
91 .. _version 7.24:
138 .. _version 7.24:
92
139
93 IPython 7.24
140 IPython 7.24
94 ============
141 ============
95
142
96 Third release of IPython for 2021, mostly containing bug fixes. A couple of not
143 Third release of IPython for 2021, mostly containing bug fixes. A couple of not
97 typical updates:
144 typical updates:
98
145
99 Misc
146 Misc
100 ----
147 ----
101
148
102
149
103 - Fix an issue where ``%recall`` would both succeeded and print an error message
150 - Fix an issue where ``%recall`` would both succeeded and print an error message
104 it failed. :ghpull:`12952`
151 it failed. :ghpull:`12952`
105 - Drop support for NumPy 1.16 – practically has no effect beyond indicating in
152 - Drop support for NumPy 1.16 – practically has no effect beyond indicating in
106 package metadata that we do not support it. :ghpull:`12937`
153 package metadata that we do not support it. :ghpull:`12937`
107
154
108 Debugger improvements
155 Debugger improvements
109 ---------------------
156 ---------------------
110
157
111 The debugger (and ``%debug`` magic) have been improved and can skip or hide frames
158 The debugger (and ``%debug`` magic) have been improved and can skip or hide frames
112 originating from files that are not writable to the user, as these are less
159 originating from files that are not writable to the user, as these are less
113 likely to be the source of errors, or be part of system files this can be a useful
160 likely to be the source of errors, or be part of system files this can be a useful
114 addition when debugging long errors.
161 addition when debugging long errors.
115
162
116 In addition to the global ``skip_hidden True|False`` command, the debugger has
163 In addition to the global ``skip_hidden True|False`` command, the debugger has
117 gained finer grained control of predicates as to whether to a frame should be
164 gained finer grained control of predicates as to whether to a frame should be
118 considered hidden. So far 3 predicates are available :
165 considered hidden. So far 3 predicates are available :
119
166
120 - ``tbhide``: frames containing the local variable ``__tracebackhide__`` set to
167 - ``tbhide``: frames containing the local variable ``__tracebackhide__`` set to
121 True.
168 True.
122 - ``readonly``: frames originating from readonly files, set to False.
169 - ``readonly``: frames originating from readonly files, set to False.
123 - ``ipython_internal``: frames that are likely to be from IPython internal
170 - ``ipython_internal``: frames that are likely to be from IPython internal
124 code, set to True.
171 code, set to True.
125
172
126 You can toggle individual predicates during a session with
173 You can toggle individual predicates during a session with
127
174
128 .. code-block::
175 .. code-block::
129
176
130 ipdb> skip_predicates readonly True
177 ipdb> skip_predicates readonly True
131
178
132 Read-only files will now be considered hidden frames.
179 Read-only files will now be considered hidden frames.
133
180
134
181
135 You can call ``skip_predicates`` without arguments to see the states of current
182 You can call ``skip_predicates`` without arguments to see the states of current
136 predicates:
183 predicates:
137
184
138 .. code-block::
185 .. code-block::
139
186
140 ipdb> skip_predicates
187 ipdb> skip_predicates
141 current predicates:
188 current predicates:
142 tbhide : True
189 tbhide : True
143 readonly : False
190 readonly : False
144 ipython_internal : True
191 ipython_internal : True
145
192
146 If all predicates are set to ``False``, ``skip_hidden`` will practically have
193 If all predicates are set to ``False``, ``skip_hidden`` will practically have
147 no effect. We attempt to warn you when all predicates are False.
194 no effect. We attempt to warn you when all predicates are False.
148
195
149 Note that the ``readonly`` predicate may increase disk access as we check for
196 Note that the ``readonly`` predicate may increase disk access as we check for
150 file access permission for all frames on many command invocation, but is usually
197 file access permission for all frames on many command invocation, but is usually
151 cached by operating systems. Let us know if you encounter any issues.
198 cached by operating systems. Let us know if you encounter any issues.
152
199
153 As the IPython debugger does not use the traitlets infrastructure for
200 As the IPython debugger does not use the traitlets infrastructure for
154 configuration, by editing your ``.pdbrc`` files and appending commands you would
201 configuration, by editing your ``.pdbrc`` files and appending commands you would
155 like to be executed just before entering the interactive prompt. For example:
202 like to be executed just before entering the interactive prompt. For example:
156
203
157
204
158 .. code::
205 .. code::
159
206
160 # file : ~/.pdbrc
207 # file : ~/.pdbrc
161 skip_predicates readonly True
208 skip_predicates readonly True
162 skip_predicates tbhide False
209 skip_predicates tbhide False
163
210
164 Will hide read only frames by default and show frames marked with
211 Will hide read only frames by default and show frames marked with
165 ``__tracebackhide__``.
212 ``__tracebackhide__``.
166
213
167
214
168
215
169
216
170 Thanks
217 Thanks
171 ------
218 ------
172
219
173 Many thanks to all the contributors to this release you can find all individual
220 Many thanks to all the contributors to this release you can find all individual
174 contributions to this milestone `on github <https://github.com/ipython/ipython/milestone/87>`__.
221 contributions to this milestone `on github <https://github.com/ipython/ipython/milestone/87>`__.
175
222
176 Thanks as well to the `D. E. Shaw group <https://deshaw.com/>`__ for sponsoring
223 Thanks as well to the `D. E. Shaw group <https://deshaw.com/>`__ for sponsoring
177 work on IPython and related libraries, in particular above mentioned
224 work on IPython and related libraries, in particular above mentioned
178 improvements to the debugger.
225 improvements to the debugger.
179
226
180
227
181
228
182
229
183 .. _version 7.23:
230 .. _version 7.23:
184
231
185 IPython 7.23 and 7.23.1
232 IPython 7.23 and 7.23.1
186 =======================
233 =======================
187
234
188
235
189 Third release of IPython for 2021, mostly containing bug fixes. A couple of not
236 Third release of IPython for 2021, mostly containing bug fixes. A couple of not
190 typical updates:
237 typical updates:
191
238
192 - We moved to GitHub actions away from Travis-CI, the transition may not be
239 - We moved to GitHub actions away from Travis-CI, the transition may not be
193 100% complete (not testing on nightly anymore), but as we ran out of
240 100% complete (not testing on nightly anymore), but as we ran out of
194 Travis-Ci hours on the IPython organisation that was a necessary step.
241 Travis-Ci hours on the IPython organisation that was a necessary step.
195 :ghpull:`12900`.
242 :ghpull:`12900`.
196
243
197 - We have a new dependency: ``matplotlib-inline``, which try to extract
244 - We have a new dependency: ``matplotlib-inline``, which try to extract
198 matplotlib inline backend specific behavior. It is available on PyPI and
245 matplotlib inline backend specific behavior. It is available on PyPI and
199 conda-forge thus should not be a problem to upgrade to this version. If you
246 conda-forge thus should not be a problem to upgrade to this version. If you
200 are a package maintainer that might be an extra dependency to package first.
247 are a package maintainer that might be an extra dependency to package first.
201 :ghpull:`12817` (IPython 7.23.1 fix a typo that made this change fail)
248 :ghpull:`12817` (IPython 7.23.1 fix a typo that made this change fail)
202
249
203 In the addition/new feature category, ``display()`` now have a ``clear=True``
250 In the addition/new feature category, ``display()`` now have a ``clear=True``
204 option to clear the display if any further outputs arrives, allowing users to
251 option to clear the display if any further outputs arrives, allowing users to
205 avoid having to use ``clear_output()`` directly. :ghpull:`12823`.
252 avoid having to use ``clear_output()`` directly. :ghpull:`12823`.
206
253
207 In bug fixes category, this release fix an issue when printing tracebacks
254 In bug fixes category, this release fix an issue when printing tracebacks
208 containing Unicode characters :ghpull:`12758`.
255 containing Unicode characters :ghpull:`12758`.
209
256
210 In code cleanup category :ghpull:`12932` remove usage of some deprecated
257 In code cleanup category :ghpull:`12932` remove usage of some deprecated
211 functionality for compatibility with Python 3.10.
258 functionality for compatibility with Python 3.10.
212
259
213
260
214
261
215 Thanks
262 Thanks
216 ------
263 ------
217
264
218 Many thanks to all the contributors to this release you can find all individual
265 Many thanks to all the contributors to this release you can find all individual
219 contributions to this milestone `on github <https://github.com/ipython/ipython/milestone/86>`__.
266 contributions to this milestone `on github <https://github.com/ipython/ipython/milestone/86>`__.
220 In particular MrMino for responding to almost all new issues, and triaging many
267 In particular MrMino for responding to almost all new issues, and triaging many
221 of the old ones, as well as takluyver, minrk, willingc for reacting quikly when
268 of the old ones, as well as takluyver, minrk, willingc for reacting quikly when
222 we ran out of CI Hours.
269 we ran out of CI Hours.
223
270
224 Thanks as well to organisations, QuantStack (martinRenou and SylvainCorlay) for
271 Thanks as well to organisations, QuantStack (martinRenou and SylvainCorlay) for
225 extracting matplotlib inline backend into its own package, and the `D. E. Shaw group
272 extracting matplotlib inline backend into its own package, and the `D. E. Shaw group
226 <https://deshaw.com/>`__ for sponsoring work on IPython and related libraries.
273 <https://deshaw.com/>`__ for sponsoring work on IPython and related libraries.
227
274
228
275
229 .. _version 7.22:
276 .. _version 7.22:
230
277
231 IPython 7.22
278 IPython 7.22
232 ============
279 ============
233
280
234 Second release of IPython for 2021, mostly containing bug fixes. Here is a quick
281 Second release of IPython for 2021, mostly containing bug fixes. Here is a quick
235 rundown of the few changes.
282 rundown of the few changes.
236
283
237 - Fix some ``sys.excepthook`` shenanigan when embedding with qt, recommended if
284 - Fix some ``sys.excepthook`` shenanigan when embedding with qt, recommended if
238 you – for example – use `napari <https://napari.org>`__. :ghpull:`12842`.
285 you – for example – use `napari <https://napari.org>`__. :ghpull:`12842`.
239 - Fix bug when using the new ipdb ``%context`` magic :ghpull:`12844`
286 - Fix bug when using the new ipdb ``%context`` magic :ghpull:`12844`
240 - Couples of deprecation cleanup :ghpull:`12868`
287 - Couples of deprecation cleanup :ghpull:`12868`
241 - Update for new dpast.com api if you use the ``%pastbin`` magic. :ghpull:`12712`
288 - Update for new dpast.com api if you use the ``%pastbin`` magic. :ghpull:`12712`
242 - Remove support for numpy before 1.16. :ghpull:`12836`
289 - Remove support for numpy before 1.16. :ghpull:`12836`
243
290
244
291
245 Thanks
292 Thanks
246 ------
293 ------
247
294
248 We have a new team member that you should see more often on the IPython
295 We have a new team member that you should see more often on the IPython
249 repository, BΕ‚aΕΌej Michalik (@MrMino) have been doing regular contributions to
296 repository, BΕ‚aΕΌej Michalik (@MrMino) have been doing regular contributions to
250 IPython, and spent time replying to many issues and guiding new users to the
297 IPython, and spent time replying to many issues and guiding new users to the
251 codebase; they now have triage permissions to the IPython repository and we'll
298 codebase; they now have triage permissions to the IPython repository and we'll
252 work toward giving them more permission in the future.
299 work toward giving them more permission in the future.
253
300
254 Many thanks to all the contributors to this release you can find all individual
301 Many thanks to all the contributors to this release you can find all individual
255 contributions to this milestone `on github <https://github.com/ipython/ipython/milestone/84>`__.
302 contributions to this milestone `on github <https://github.com/ipython/ipython/milestone/84>`__.
256
303
257 Thanks as well to organisations, QuantStack for working on debugger
304 Thanks as well to organisations, QuantStack for working on debugger
258 compatibility for Xeus_python, and the `D. E. Shaw group
305 compatibility for Xeus_python, and the `D. E. Shaw group
259 <https://deshaw.com/>`__ for sponsoring work on IPython and related libraries.
306 <https://deshaw.com/>`__ for sponsoring work on IPython and related libraries.
260
307
261 .. _version 721:
308 .. _version 721:
262
309
263 IPython 7.21
310 IPython 7.21
264 ============
311 ============
265
312
266 IPython 7.21 is the first release we have back on schedule of one release every
313 IPython 7.21 is the first release we have back on schedule of one release every
267 month; it contains a number of minor fixes and improvements, notably, the new
314 month; it contains a number of minor fixes and improvements, notably, the new
268 context command for ipdb
315 context command for ipdb
269
316
270
317
271 New "context" command in ipdb
318 New "context" command in ipdb
272 -----------------------------
319 -----------------------------
273
320
274 It is now possible to change the number of lines shown in the backtrace
321 It is now possible to change the number of lines shown in the backtrace
275 information in ipdb using "context" command. :ghpull:`12826`
322 information in ipdb using "context" command. :ghpull:`12826`
276
323
277 (thanks @MrMino, there are other improvement from them on master).
324 (thanks @MrMino, there are other improvement from them on master).
278
325
279 Other notable changes in IPython 7.21
326 Other notable changes in IPython 7.21
280 -------------------------------------
327 -------------------------------------
281
328
282 - Fix some issues on new osx-arm64 :ghpull:`12804`, :ghpull:`12807`.
329 - Fix some issues on new osx-arm64 :ghpull:`12804`, :ghpull:`12807`.
283 - Compatibility with Xeus-Python for debugger protocol, :ghpull:`12809`
330 - Compatibility with Xeus-Python for debugger protocol, :ghpull:`12809`
284 - Misc docs fixes for compatibility and uniformity with Numpydoc.
331 - Misc docs fixes for compatibility and uniformity with Numpydoc.
285 :ghpull:`12824`
332 :ghpull:`12824`
286
333
287
334
288 Thanks
335 Thanks
289 ------
336 ------
290
337
291 Many thanks to all the contributors to this release you can find all individual
338 Many thanks to all the contributors to this release you can find all individual
292 contribution to this milestone `on github <https://github.com/ipython/ipython/milestone/83>`__.
339 contribution to this milestone `on github <https://github.com/ipython/ipython/milestone/83>`__.
293
340
294
341
295 .. _version 720:
342 .. _version 720:
296
343
297 IPython 7.20
344 IPython 7.20
298 ============
345 ============
299
346
300 IPython 7.20 is the accumulation of 3 month of work on IPython, spacing between
347 IPython 7.20 is the accumulation of 3 month of work on IPython, spacing between
301 IPython release have been increased from the usual once a month for various
348 IPython release have been increased from the usual once a month for various
302 reason.
349 reason.
303
350
304 - Mainly as I'm too busy and the effectively sole maintainer, and
351 - Mainly as I'm too busy and the effectively sole maintainer, and
305 - Second because not much changes happened before mid December.
352 - Second because not much changes happened before mid December.
306
353
307 The main driver for this release was the new version of Jedi 0.18 breaking API;
354 The main driver for this release was the new version of Jedi 0.18 breaking API;
308 which was taken care of in the master branch early in 2020 but not in 7.x as I
355 which was taken care of in the master branch early in 2020 but not in 7.x as I
309 though that by now 8.0 would be out.
356 though that by now 8.0 would be out.
310
357
311 The inclusion of a resolver in pip did not help and actually made things worse.
358 The inclusion of a resolver in pip did not help and actually made things worse.
312 If usually I would have simply pinned Jedi to ``<0.18``; this is not a solution
359 If usually I would have simply pinned Jedi to ``<0.18``; this is not a solution
313 anymore as now pip is free to install Jedi 0.18, and downgrade IPython.
360 anymore as now pip is free to install Jedi 0.18, and downgrade IPython.
314
361
315 I'll do my best to keep the regular release, but as the 8.0-dev branch and 7.x
362 I'll do my best to keep the regular release, but as the 8.0-dev branch and 7.x
316 are starting to diverge this is becoming difficult in particular with my limited
363 are starting to diverge this is becoming difficult in particular with my limited
317 time, so if you have any cycles to spare I'll appreciate your help to respond to
364 time, so if you have any cycles to spare I'll appreciate your help to respond to
318 issues and pushing 8.0 forward.
365 issues and pushing 8.0 forward.
319
366
320 Here are thus some of the changes for IPython 7.20.
367 Here are thus some of the changes for IPython 7.20.
321
368
322 - Support for PyQt5 >= 5.11 :ghpull:`12715`
369 - Support for PyQt5 >= 5.11 :ghpull:`12715`
323 - ``%reset`` remove imports more agressively :ghpull:`12718`
370 - ``%reset`` remove imports more agressively :ghpull:`12718`
324 - fix the ``%conda`` magic :ghpull:`12739`
371 - fix the ``%conda`` magic :ghpull:`12739`
325 - compatibility with Jedi 0.18, and bump minimum Jedi version. :ghpull:`12793`
372 - compatibility with Jedi 0.18, and bump minimum Jedi version. :ghpull:`12793`
326
373
327
374
328 .. _version 719:
375 .. _version 719:
329
376
330 IPython 7.19
377 IPython 7.19
331 ============
378 ============
332
379
333 IPython 7.19 accumulative two month of works, bug fixes and improvements, there
380 IPython 7.19 accumulative two month of works, bug fixes and improvements, there
334 was exceptionally no release last month.
381 was exceptionally no release last month.
335
382
336 - Fix to restore the ability to specify more than one extension using command
383 - Fix to restore the ability to specify more than one extension using command
337 line flags when using traitlets 5.0 :ghpull:`12543`
384 line flags when using traitlets 5.0 :ghpull:`12543`
338 - Docs docs formatting that make the install commands work on zsh
385 - Docs docs formatting that make the install commands work on zsh
339 :ghpull:`12587`
386 :ghpull:`12587`
340 - Always display the last frame in tracebacks even if hidden with
387 - Always display the last frame in tracebacks even if hidden with
341 ``__tracebackhide__`` :ghpull:`12601`
388 ``__tracebackhide__`` :ghpull:`12601`
342 - Avoid an issue where a callback can be registered multiple times.
389 - Avoid an issue where a callback can be registered multiple times.
343 :ghpull:`12625`
390 :ghpull:`12625`
344 - Avoid an issue in debugger mode where frames changes could be lost.
391 - Avoid an issue in debugger mode where frames changes could be lost.
345 :ghpull:`12627`
392 :ghpull:`12627`
346
393
347 - Never hide the frames that invoke a debugger, even if marked as hidden by
394 - Never hide the frames that invoke a debugger, even if marked as hidden by
348 ``__tracebackhide__`` :ghpull:`12631`
395 ``__tracebackhide__`` :ghpull:`12631`
349 - Fix calling the debugger in a recursive manner :ghpull:`12659`
396 - Fix calling the debugger in a recursive manner :ghpull:`12659`
350
397
351
398
352 A number of code changes have landed on master and we are getting close to
399 A number of code changes have landed on master and we are getting close to
353 enough new features and codebase improvement that a 8.0 start to make sens.
400 enough new features and codebase improvement that a 8.0 start to make sens.
354 For downstream packages, please start working on migrating downstream testing
401 For downstream packages, please start working on migrating downstream testing
355 away from iptest and using pytest, as nose will not work on Python 3.10 and we
402 away from iptest and using pytest, as nose will not work on Python 3.10 and we
356 will likely start removing it as a dependency for testing.
403 will likely start removing it as a dependency for testing.
357
404
358 .. _version 718:
405 .. _version 718:
359
406
360 IPython 7.18
407 IPython 7.18
361 ============
408 ============
362
409
363 IPython 7.18 is a minor release that mostly contains bugfixes.
410 IPython 7.18 is a minor release that mostly contains bugfixes.
364
411
365 - ``CRLF`` is now handled by magics my default; solving some issues due to copy
412 - ``CRLF`` is now handled by magics my default; solving some issues due to copy
366 pasting on windows. :ghpull:`12475`
413 pasting on windows. :ghpull:`12475`
367
414
368 - Requiring pexpect ``>=4.3`` as we are Python 3.7+ only and earlier version of
415 - Requiring pexpect ``>=4.3`` as we are Python 3.7+ only and earlier version of
369 pexpect will be incompatible. :ghpull:`12510`
416 pexpect will be incompatible. :ghpull:`12510`
370
417
371 - Minimum jedi version is now 0.16. :ghpull:`12488`
418 - Minimum jedi version is now 0.16. :ghpull:`12488`
372
419
373
420
374
421
375 .. _version 717:
422 .. _version 717:
376
423
377 IPython 7.17
424 IPython 7.17
378 ============
425 ============
379
426
380 IPython 7.17 brings a couple of new improvements to API and a couple of user
427 IPython 7.17 brings a couple of new improvements to API and a couple of user
381 facing changes to make the terminal experience more user friendly.
428 facing changes to make the terminal experience more user friendly.
382
429
383 :ghpull:`12407` introduces the ability to pass extra argument to the IPython
430 :ghpull:`12407` introduces the ability to pass extra argument to the IPython
384 debugger class; this is to help a new project from ``kmaork``
431 debugger class; this is to help a new project from ``kmaork``
385 (https://github.com/kmaork/madbg) to feature a fully remote debugger.
432 (https://github.com/kmaork/madbg) to feature a fully remote debugger.
386
433
387 :ghpull:`12410` finally remove support for 3.6, while the codebase is still
434 :ghpull:`12410` finally remove support for 3.6, while the codebase is still
388 technically compatible; IPython will not install on Python 3.6.
435 technically compatible; IPython will not install on Python 3.6.
389
436
390 lots of work on the debugger and hidden frames from ``@impact27`` in
437 lots of work on the debugger and hidden frames from ``@impact27`` in
391 :ghpull:`12437`, :ghpull:`12445`, :ghpull:`12460` and in particular
438 :ghpull:`12437`, :ghpull:`12445`, :ghpull:`12460` and in particular
392 :ghpull:`12453` which make the debug magic more robust at handling spaces.
439 :ghpull:`12453` which make the debug magic more robust at handling spaces.
393
440
394 Biggest API addition is code transformation which is done before code execution;
441 Biggest API addition is code transformation which is done before code execution;
395 IPython allows a number of hooks to catch non-valid Python syntax (magic, prompt
442 IPython allows a number of hooks to catch non-valid Python syntax (magic, prompt
396 stripping...etc). Transformers are usually called many time; typically:
443 stripping...etc). Transformers are usually called many time; typically:
397
444
398 - When trying to figure out whether the code is complete and valid (should we
445 - When trying to figure out whether the code is complete and valid (should we
399 insert a new line or execute ?)
446 insert a new line or execute ?)
400 - During actual code execution pass before giving the code to Python's
447 - During actual code execution pass before giving the code to Python's
401 ``exec``.
448 ``exec``.
402
449
403 This lead to issues when transformer might have had side effects; or do external
450 This lead to issues when transformer might have had side effects; or do external
404 queries. Starting with IPython 7.17 you can expect your transformer to be called
451 queries. Starting with IPython 7.17 you can expect your transformer to be called
405 less time.
452 less time.
406
453
407 Input transformers are now called only once in the execution path of
454 Input transformers are now called only once in the execution path of
408 `InteractiveShell`, allowing to register transformer that potentially have side
455 `InteractiveShell`, allowing to register transformer that potentially have side
409 effects (note that this is not recommended). Internal methods `should_run_async`, and
456 effects (note that this is not recommended). Internal methods `should_run_async`, and
410 `run_cell_async` now take a recommended optional `transformed_cell`, and
457 `run_cell_async` now take a recommended optional `transformed_cell`, and
411 `preprocessing_exc_tuple` parameters that will become mandatory at some point in
458 `preprocessing_exc_tuple` parameters that will become mandatory at some point in
412 the future; that is to say cells need to be explicitly transformed to be valid
459 the future; that is to say cells need to be explicitly transformed to be valid
413 Python syntax ahead of trying to run them. :ghpull:`12440`;
460 Python syntax ahead of trying to run them. :ghpull:`12440`;
414
461
415 ``input_transformers`` can now also have an attribute ``has_side_effects`` set
462 ``input_transformers`` can now also have an attribute ``has_side_effects`` set
416 to `True`, when this attribute is present; this will prevent the transformers
463 to `True`, when this attribute is present; this will prevent the transformers
417 from being ran when IPython is trying to guess whether the user input is
464 from being ran when IPython is trying to guess whether the user input is
418 complete. Note that this may means you will need to explicitly execute in some
465 complete. Note that this may means you will need to explicitly execute in some
419 case where your transformations are now not ran; but will not affect users with
466 case where your transformations are now not ran; but will not affect users with
420 no custom extensions.
467 no custom extensions.
421
468
422
469
423 API Changes
470 API Changes
424 -----------
471 -----------
425
472
426 Change of API and exposed objects automatically detected using `frappuccino
473 Change of API and exposed objects automatically detected using `frappuccino
427 <https://pypi.org/project/frappuccino/>`_
474 <https://pypi.org/project/frappuccino/>`_
428
475
429
476
430 The following items are new since 7.16.0::
477 The following items are new since 7.16.0::
431
478
432 + IPython.core.interactiveshell.InteractiveShell.get_local_scope(self, stack_depth)
479 + IPython.core.interactiveshell.InteractiveShell.get_local_scope(self, stack_depth)
433
480
434 The following signatures differ since 7.16.0::
481 The following signatures differ since 7.16.0::
435
482
436 - IPython.core.interactiveshell.InteractiveShell.run_cell_async(self, raw_cell, store_history=False, silent=False, shell_futures=True)
483 - IPython.core.interactiveshell.InteractiveShell.run_cell_async(self, raw_cell, store_history=False, silent=False, shell_futures=True)
437 + IPython.core.interactiveshell.InteractiveShell.run_cell_async(self, raw_cell, store_history=False, silent=False, shell_futures=True, *, transformed_cell=None, preprocessing_exc_tuple=None)
484 + IPython.core.interactiveshell.InteractiveShell.run_cell_async(self, raw_cell, store_history=False, silent=False, shell_futures=True, *, transformed_cell=None, preprocessing_exc_tuple=None)
438
485
439 - IPython.core.interactiveshell.InteractiveShell.should_run_async(self, raw_cell)
486 - IPython.core.interactiveshell.InteractiveShell.should_run_async(self, raw_cell)
440 + IPython.core.interactiveshell.InteractiveShell.should_run_async(self, raw_cell, *, transformed_cell=None, preprocessing_exc_tuple=None)
487 + IPython.core.interactiveshell.InteractiveShell.should_run_async(self, raw_cell, *, transformed_cell=None, preprocessing_exc_tuple=None)
441
488
442 - IPython.terminal.debugger.TerminalPdb.pt_init(self)
489 - IPython.terminal.debugger.TerminalPdb.pt_init(self)
443 + IPython.terminal.debugger.TerminalPdb.pt_init(self, pt_session_options=None)
490 + IPython.terminal.debugger.TerminalPdb.pt_init(self, pt_session_options=None)
444
491
445 This method was added::
492 This method was added::
446
493
447 + IPython.core.interactiveshell.InteractiveShell.get_local_scope
494 + IPython.core.interactiveshell.InteractiveShell.get_local_scope
448
495
449 Which is now also present on subclasses::
496 Which is now also present on subclasses::
450
497
451 + IPython.terminal.embed.InteractiveShellEmbed.get_local_scope
498 + IPython.terminal.embed.InteractiveShellEmbed.get_local_scope
452 + IPython.terminal.interactiveshell.TerminalInteractiveShell.get_local_scope
499 + IPython.terminal.interactiveshell.TerminalInteractiveShell.get_local_scope
453
500
454
501
455 .. _version 716:
502 .. _version 716:
456
503
457 IPython 7.16
504 IPython 7.16
458 ============
505 ============
459
506
460
507
461 The default traceback mode will now skip frames that are marked with
508 The default traceback mode will now skip frames that are marked with
462 ``__tracebackhide__ = True`` and show how many traceback frames have been
509 ``__tracebackhide__ = True`` and show how many traceback frames have been
463 skipped. This can be toggled by using :magic:`xmode` with the ``--show`` or
510 skipped. This can be toggled by using :magic:`xmode` with the ``--show`` or
464 ``--hide`` attribute. It will have no effect on non verbose traceback modes.
511 ``--hide`` attribute. It will have no effect on non verbose traceback modes.
465
512
466 The ipython debugger also now understands ``__tracebackhide__`` as well and will
513 The ipython debugger also now understands ``__tracebackhide__`` as well and will
467 skip hidden frames when displaying. Movement up and down the stack will skip the
514 skip hidden frames when displaying. Movement up and down the stack will skip the
468 hidden frames and will show how many frames were hidden. Internal IPython frames
515 hidden frames and will show how many frames were hidden. Internal IPython frames
469 are also now hidden by default. The behavior can be changed with the
516 are also now hidden by default. The behavior can be changed with the
470 ``skip_hidden`` while in the debugger, command and accepts "yes", "no", "true"
517 ``skip_hidden`` while in the debugger, command and accepts "yes", "no", "true"
471 and "false" case insensitive parameters.
518 and "false" case insensitive parameters.
472
519
473
520
474 Misc Noticeable changes:
521 Misc Noticeable changes:
475 ------------------------
522 ------------------------
476
523
477 - Exceptions are now (re)raised when running notebooks via the :magic:`%run`, helping to catch issues in workflows and
524 - Exceptions are now (re)raised when running notebooks via the :magic:`%run`, helping to catch issues in workflows and
478 pipelines. :ghpull:`12301`
525 pipelines. :ghpull:`12301`
479 - Fix inputhook for qt 5.15.0 :ghpull:`12355`
526 - Fix inputhook for qt 5.15.0 :ghpull:`12355`
480 - Fix wx inputhook :ghpull:`12375`
527 - Fix wx inputhook :ghpull:`12375`
481 - Add handling for malformed pathext env var (Windows) :ghpull:`12367`
528 - Add handling for malformed pathext env var (Windows) :ghpull:`12367`
482 - use $SHELL in system_piped :ghpull:`12360` for uniform behavior with
529 - use $SHELL in system_piped :ghpull:`12360` for uniform behavior with
483 ipykernel.
530 ipykernel.
484
531
485 Reproducible Build
532 Reproducible Build
486 ------------------
533 ------------------
487
534
488 IPython 7.15 reproducible build did not work, so we try again this month
535 IPython 7.15 reproducible build did not work, so we try again this month
489 :ghpull:`12358`.
536 :ghpull:`12358`.
490
537
491
538
492 API Changes
539 API Changes
493 -----------
540 -----------
494
541
495 Change of API and exposed objects automatically detected using `frappuccino
542 Change of API and exposed objects automatically detected using `frappuccino
496 <https://pypi.org/project/frappuccino/>`_ (still in beta):
543 <https://pypi.org/project/frappuccino/>`_ (still in beta):
497
544
498
545
499 The following items are new and mostly related to understanding ``__tracebackbide__``::
546 The following items are new and mostly related to understanding ``__tracebackbide__``::
500
547
501 + IPython.core.debugger.Pdb.do_down(self, arg)
548 + IPython.core.debugger.Pdb.do_down(self, arg)
502 + IPython.core.debugger.Pdb.do_skip_hidden(self, arg)
549 + IPython.core.debugger.Pdb.do_skip_hidden(self, arg)
503 + IPython.core.debugger.Pdb.do_up(self, arg)
550 + IPython.core.debugger.Pdb.do_up(self, arg)
504 + IPython.core.debugger.Pdb.hidden_frames(self, stack)
551 + IPython.core.debugger.Pdb.hidden_frames(self, stack)
505 + IPython.core.debugger.Pdb.stop_here(self, frame)
552 + IPython.core.debugger.Pdb.stop_here(self, frame)
506
553
507
554
508 The following items have been removed::
555 The following items have been removed::
509
556
510 - IPython.core.debugger.Pdb.new_do_down
557 - IPython.core.debugger.Pdb.new_do_down
511 - IPython.core.debugger.Pdb.new_do_up
558 - IPython.core.debugger.Pdb.new_do_up
512
559
513 Those were implementation details.
560 Those were implementation details.
514
561
515
562
516 .. _version 715:
563 .. _version 715:
517
564
518 IPython 7.15
565 IPython 7.15
519 ============
566 ============
520
567
521 IPython 7.15 brings a number of bug fixes and user facing improvements.
568 IPython 7.15 brings a number of bug fixes and user facing improvements.
522
569
523 Misc Noticeable changes:
570 Misc Noticeable changes:
524 ------------------------
571 ------------------------
525
572
526 - Long completion name have better elision in terminal :ghpull:`12284`
573 - Long completion name have better elision in terminal :ghpull:`12284`
527 - I've started to test on Python 3.9 :ghpull:`12307` and fix some errors.
574 - I've started to test on Python 3.9 :ghpull:`12307` and fix some errors.
528 - Hi DPI scaling of figures when using qt eventloop :ghpull:`12314`
575 - Hi DPI scaling of figures when using qt eventloop :ghpull:`12314`
529 - Document the ability to have systemwide configuration for IPython.
576 - Document the ability to have systemwide configuration for IPython.
530 :ghpull:`12328`
577 :ghpull:`12328`
531 - Fix issues with input autoformatting :ghpull:`12336`
578 - Fix issues with input autoformatting :ghpull:`12336`
532 - ``IPython.core.debugger.Pdb`` is now interruptible (:ghpull:`12168`, in 7.14
579 - ``IPython.core.debugger.Pdb`` is now interruptible (:ghpull:`12168`, in 7.14
533 but forgotten in release notes)
580 but forgotten in release notes)
534 - Video HTML attributes (:ghpull:`12212`, in 7.14 but forgotten in release
581 - Video HTML attributes (:ghpull:`12212`, in 7.14 but forgotten in release
535 notes)
582 notes)
536
583
537 Reproducible Build
584 Reproducible Build
538 ------------------
585 ------------------
539
586
540 Starting with IPython 7.15, I am attempting to provide reproducible builds,
587 Starting with IPython 7.15, I am attempting to provide reproducible builds,
541 that is to say you should be able from the source tree to generate an sdist
588 that is to say you should be able from the source tree to generate an sdist
542 and wheel that are identical byte for byte with the publish version on PyPI.
589 and wheel that are identical byte for byte with the publish version on PyPI.
543
590
544 I've only tested on a couple of machines so far and the process is relatively
591 I've only tested on a couple of machines so far and the process is relatively
545 straightforward, so this mean that IPython not only have a deterministic build
592 straightforward, so this mean that IPython not only have a deterministic build
546 process, but also I have either removed, or put under control all effects of
593 process, but also I have either removed, or put under control all effects of
547 the build environments on the final artifact. I encourage you to attempt the
594 the build environments on the final artifact. I encourage you to attempt the
548 build process on your machine as documented in :ref:`core_developer_guide`
595 build process on your machine as documented in :ref:`core_developer_guide`
549 and let me know if you do not obtain an identical artifact.
596 and let me know if you do not obtain an identical artifact.
550
597
551 While reproducible builds is critical to check that the supply chain of (open
598 While reproducible builds is critical to check that the supply chain of (open
552 source) software has not been compromised, it can also help to speedup many
599 source) software has not been compromised, it can also help to speedup many
553 of the build processes in large environment (conda, apt...) by allowing
600 of the build processes in large environment (conda, apt...) by allowing
554 better caching of intermediate build steps.
601 better caching of intermediate build steps.
555
602
556 Learn more on `<https://reproducible-builds.org/>`_. `Reflections on trusting
603 Learn more on `<https://reproducible-builds.org/>`_. `Reflections on trusting
557 trust <https://dl.acm.org/doi/10.1145/358198.358210>`_ is also one of the
604 trust <https://dl.acm.org/doi/10.1145/358198.358210>`_ is also one of the
558 cornerstone and recommended reads on this subject.
605 cornerstone and recommended reads on this subject.
559
606
560 .. note::
607 .. note::
561
608
562 The build commit from which the sdist is generated is also `signed
609 The build commit from which the sdist is generated is also `signed
563 <https://en.wikipedia.org/wiki/Digital_signature>`_, so you should be able to
610 <https://en.wikipedia.org/wiki/Digital_signature>`_, so you should be able to
564 check it has not been compromised, and the git repository is a `merkle-tree
611 check it has not been compromised, and the git repository is a `merkle-tree
565 <https://en.wikipedia.org/wiki/Merkle_tree>`_, you can check the consistency
612 <https://en.wikipedia.org/wiki/Merkle_tree>`_, you can check the consistency
566 with `git-fsck <https://git-scm.com/docs/git-fsck>`_ which you likely `want
613 with `git-fsck <https://git-scm.com/docs/git-fsck>`_ which you likely `want
567 to enable by default
614 to enable by default
568 <https://gist.github.com/mbbx6spp/14b86437e794bffb4120>`_.
615 <https://gist.github.com/mbbx6spp/14b86437e794bffb4120>`_.
569
616
570 NEP29: Last version to support Python 3.6
617 NEP29: Last version to support Python 3.6
571 -----------------------------------------
618 -----------------------------------------
572
619
573 IPython 7.15 will be the Last IPython version to officially support Python
620 IPython 7.15 will be the Last IPython version to officially support Python
574 3.6, as stated by `NumPy Enhancement Proposal 29
621 3.6, as stated by `NumPy Enhancement Proposal 29
575 <https://numpy.org/neps/nep-0029-deprecation_policy.html>`_. Starting with
622 <https://numpy.org/neps/nep-0029-deprecation_policy.html>`_. Starting with
576 next minor version of IPython I may stop testing on Python 3.6 and may stop
623 next minor version of IPython I may stop testing on Python 3.6 and may stop
577 publishing release artifacts that install on Python 3.6
624 publishing release artifacts that install on Python 3.6
578
625
579 Highlighted features
626 Highlighted features
580 --------------------
627 --------------------
581
628
582 Highlighted features are not new, but seem to not be widely known, this
629 Highlighted features are not new, but seem to not be widely known, this
583 section will help you discover in more narrative form what you can do with
630 section will help you discover in more narrative form what you can do with
584 IPython.
631 IPython.
585
632
586 Increase Tab Completion Menu Height
633 Increase Tab Completion Menu Height
587 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
634 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
588
635
589 In terminal IPython it is possible to increase the hight of the tab-completion
636 In terminal IPython it is possible to increase the hight of the tab-completion
590 menu. To do so set the value of
637 menu. To do so set the value of
591 :configtrait:`TerminalInteractiveShell.space_for_menu`, this will reserve more
638 :configtrait:`TerminalInteractiveShell.space_for_menu`, this will reserve more
592 space at the bottom of the screen for various kind of menus in IPython including
639 space at the bottom of the screen for various kind of menus in IPython including
593 tab completion and searching in history.
640 tab completion and searching in history.
594
641
595 Autoformat Code in the terminal
642 Autoformat Code in the terminal
596 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
643 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
597
644
598 If you have a preferred code formatter, you can configure IPython to
645 If you have a preferred code formatter, you can configure IPython to
599 reformat your code. Set the value of
646 reformat your code. Set the value of
600 :configtrait:`TerminalInteractiveShell.autoformatter` to for example ``'black'``
647 :configtrait:`TerminalInteractiveShell.autoformatter` to for example ``'black'``
601 and IPython will auto format your code when possible.
648 and IPython will auto format your code when possible.
602
649
603
650
604 .. _version 714:
651 .. _version 714:
605
652
606 IPython 7.14
653 IPython 7.14
607 ============
654 ============
608
655
609 IPython 7.14 is a minor release that fix a couple of bugs and prepare
656 IPython 7.14 is a minor release that fix a couple of bugs and prepare
610 compatibility with new or future versions of some libraries.
657 compatibility with new or future versions of some libraries.
611
658
612 Important changes:
659 Important changes:
613 ------------------
660 ------------------
614
661
615 - Fix compatibility with Sphinx 3+ :ghpull:`12235`
662 - Fix compatibility with Sphinx 3+ :ghpull:`12235`
616 - Remove deprecated matplotlib parameter usage, compatibility with matplotlib
663 - Remove deprecated matplotlib parameter usage, compatibility with matplotlib
617 3.3+ :`122250`
664 3.3+ :`122250`
618
665
619 Misc Changes
666 Misc Changes
620 ------------
667 ------------
621
668
622 - set ``.py`` extension when editing current buffer in vi/emacs. :ghpull:`12167`
669 - set ``.py`` extension when editing current buffer in vi/emacs. :ghpull:`12167`
623 - support for unicode identifiers in ``?``/``??`` :ghpull:`12208`
670 - support for unicode identifiers in ``?``/``??`` :ghpull:`12208`
624 - add extra options to the ``Video`` Rich objects :ghpull:`12212`
671 - add extra options to the ``Video`` Rich objects :ghpull:`12212`
625 - add pretty-printing to ``SimpleNamespace`` :ghpull:`12230`
672 - add pretty-printing to ``SimpleNamespace`` :ghpull:`12230`
626
673
627 IPython.core.debugger.Pdb is now interruptible
674 IPython.core.debugger.Pdb is now interruptible
628 ----------------------------------------------
675 ----------------------------------------------
629
676
630 A ``KeyboardInterrupt`` will now interrupt IPython's extended debugger, in order to make Jupyter able to interrupt it. (:ghpull:`12168`)
677 A ``KeyboardInterrupt`` will now interrupt IPython's extended debugger, in order to make Jupyter able to interrupt it. (:ghpull:`12168`)
631
678
632 Video HTML attributes
679 Video HTML attributes
633 ---------------------
680 ---------------------
634
681
635 Add an option to `IPython.display.Video` to change the attributes of the HTML display of the video (:ghpull:`12212`)
682 Add an option to `IPython.display.Video` to change the attributes of the HTML display of the video (:ghpull:`12212`)
636
683
637
684
638 Pending deprecated imports
685 Pending deprecated imports
639 --------------------------
686 --------------------------
640
687
641 Many object present in ``IPython.core.display`` are there for internal use only,
688 Many object present in ``IPython.core.display`` are there for internal use only,
642 and should already been imported from ``IPython.display`` by users and external
689 and should already been imported from ``IPython.display`` by users and external
643 libraries. Trying to import those from ``IPython.core.display`` is still possible
690 libraries. Trying to import those from ``IPython.core.display`` is still possible
644 but will trigger a
691 but will trigger a
645 deprecation warning in later versions of IPython and will become errors in the
692 deprecation warning in later versions of IPython and will become errors in the
646 future.
693 future.
647
694
648 This will simplify compatibility with other Python kernels (like Xeus-Python),
695 This will simplify compatibility with other Python kernels (like Xeus-Python),
649 and simplify code base.
696 and simplify code base.
650
697
651
698
652
699
653
700
654 .. _version 713:
701 .. _version 713:
655
702
656 IPython 7.13
703 IPython 7.13
657 ============
704 ============
658
705
659 IPython 7.13 is the final release of the 7.x branch since master is diverging
706 IPython 7.13 is the final release of the 7.x branch since master is diverging
660 toward an 8.0. Exiting new features have already been merged in 8.0 and will
707 toward an 8.0. Exiting new features have already been merged in 8.0 and will
661 not be available on the 7.x branch. All the changes below have been backported
708 not be available on the 7.x branch. All the changes below have been backported
662 from the master branch.
709 from the master branch.
663
710
664
711
665 - Fix inability to run PDB when inside an event loop :ghpull:`12141`
712 - Fix inability to run PDB when inside an event loop :ghpull:`12141`
666 - Fix ability to interrupt some processes on windows :ghpull:`12137`
713 - Fix ability to interrupt some processes on windows :ghpull:`12137`
667 - Fix debugger shortcuts :ghpull:`12132`
714 - Fix debugger shortcuts :ghpull:`12132`
668 - improve tab completion when inside a string by removing irrelevant elements :ghpull:`12128`
715 - improve tab completion when inside a string by removing irrelevant elements :ghpull:`12128`
669 - Fix display of filename tab completion when the path is long :ghpull:`12122`
716 - Fix display of filename tab completion when the path is long :ghpull:`12122`
670 - Many removal of Python 2 specific code path :ghpull:`12110`
717 - Many removal of Python 2 specific code path :ghpull:`12110`
671 - displaying wav files do not require NumPy anymore, and is 5x to 30x faster :ghpull:`12113`
718 - displaying wav files do not require NumPy anymore, and is 5x to 30x faster :ghpull:`12113`
672
719
673 See the list of all closed issues and pull request on `github
720 See the list of all closed issues and pull request on `github
674 <https://github.com/ipython/ipython/pulls?q=is%3Aclosed+milestone%3A7.13>`_.
721 <https://github.com/ipython/ipython/pulls?q=is%3Aclosed+milestone%3A7.13>`_.
675
722
676 .. _version 712:
723 .. _version 712:
677
724
678 IPython 7.12
725 IPython 7.12
679 ============
726 ============
680
727
681 IPython 7.12 is a minor update that mostly brings code cleanup, removal of
728 IPython 7.12 is a minor update that mostly brings code cleanup, removal of
682 longtime deprecated function and a couple update to documentation cleanup as well.
729 longtime deprecated function and a couple update to documentation cleanup as well.
683
730
684 Notable changes are the following:
731 Notable changes are the following:
685
732
686 - Exit non-zero when ipython is given a file path to run that doesn't exist :ghpull:`12074`
733 - Exit non-zero when ipython is given a file path to run that doesn't exist :ghpull:`12074`
687 - Test PR on ARM64 with Travis-CI :ghpull:`12073`
734 - Test PR on ARM64 with Travis-CI :ghpull:`12073`
688 - Update CI to work with latest Pytest :ghpull:`12086`
735 - Update CI to work with latest Pytest :ghpull:`12086`
689 - Add infrastructure to run ipykernel eventloop via trio :ghpull:`12097`
736 - Add infrastructure to run ipykernel eventloop via trio :ghpull:`12097`
690 - Support git blame ignore revs :ghpull:`12091`
737 - Support git blame ignore revs :ghpull:`12091`
691 - Start multi-line ``__repr__`` s on their own line :ghpull:`12099`
738 - Start multi-line ``__repr__`` s on their own line :ghpull:`12099`
692
739
693 .. _version 7111:
740 .. _version 7111:
694
741
695 IPython 7.11.1
742 IPython 7.11.1
696 ==============
743 ==============
697
744
698 A couple of deprecated functions (no-op) have been reintroduces in py3compat as
745 A couple of deprecated functions (no-op) have been reintroduces in py3compat as
699 Cython was still relying on them, and will be removed in a couple of versions.
746 Cython was still relying on them, and will be removed in a couple of versions.
700
747
701 .. _version 711:
748 .. _version 711:
702
749
703 IPython 7.11
750 IPython 7.11
704 ============
751 ============
705
752
706 IPython 7.11 received a couple of compatibility fixes and code cleanup.
753 IPython 7.11 received a couple of compatibility fixes and code cleanup.
707
754
708 A number of function in the ``py3compat`` have been removed; a number of types
755 A number of function in the ``py3compat`` have been removed; a number of types
709 in the IPython code base are now non-ambiguous and now always ``unicode``
756 in the IPython code base are now non-ambiguous and now always ``unicode``
710 instead of ``Union[Unicode,bytes]``; many of the relevant code path have thus
757 instead of ``Union[Unicode,bytes]``; many of the relevant code path have thus
711 been simplified/cleaned and types annotation added.
758 been simplified/cleaned and types annotation added.
712
759
713 IPython support several verbosity level from exceptions. ``xmode plain`` now
760 IPython support several verbosity level from exceptions. ``xmode plain`` now
714 support chained exceptions. :ghpull:`11999`
761 support chained exceptions. :ghpull:`11999`
715
762
716 We are starting to remove ``shell=True`` in some usages of subprocess. While not directly
763 We are starting to remove ``shell=True`` in some usages of subprocess. While not directly
717 a security issue (as IPython is made to run arbitrary code anyway) it is not good
764 a security issue (as IPython is made to run arbitrary code anyway) it is not good
718 practice and we'd like to show the example. :ghissue:`12023`. This discussion
765 practice and we'd like to show the example. :ghissue:`12023`. This discussion
719 was started by ``@mschwager`` thanks to a new auditing tool they are working on
766 was started by ``@mschwager`` thanks to a new auditing tool they are working on
720 with duo-labs (`dlint <https://github.com/duo-labs/dlint>`_).
767 with duo-labs (`dlint <https://github.com/duo-labs/dlint>`_).
721
768
722 Work around some bugs in Python 3.9 tokenizer :ghpull:`12057`
769 Work around some bugs in Python 3.9 tokenizer :ghpull:`12057`
723
770
724 IPython will now print its version after a crash. :ghpull:`11986`
771 IPython will now print its version after a crash. :ghpull:`11986`
725
772
726 This is likely the last release from the 7.x series that will see new feature.
773 This is likely the last release from the 7.x series that will see new feature.
727 The master branch will soon accept large code changes and thrilling new
774 The master branch will soon accept large code changes and thrilling new
728 features; the 7.x branch will only start to accept critical bug fixes, and
775 features; the 7.x branch will only start to accept critical bug fixes, and
729 update dependencies.
776 update dependencies.
730
777
731 .. _version 7102:
778 .. _version 7102:
732
779
733 IPython 7.10.2
780 IPython 7.10.2
734 ==============
781 ==============
735
782
736 IPython 7.10.2 fix a couple of extra incompatibility between IPython, ipdb,
783 IPython 7.10.2 fix a couple of extra incompatibility between IPython, ipdb,
737 asyncio and Prompt Toolkit 3.
784 asyncio and Prompt Toolkit 3.
738
785
739 .. _version 7101:
786 .. _version 7101:
740
787
741 IPython 7.10.1
788 IPython 7.10.1
742 ==============
789 ==============
743
790
744 IPython 7.10.1 fix a couple of incompatibilities with Prompt toolkit 3 (please
791 IPython 7.10.1 fix a couple of incompatibilities with Prompt toolkit 3 (please
745 update Prompt toolkit to 3.0.2 at least), and fixes some interaction with
792 update Prompt toolkit to 3.0.2 at least), and fixes some interaction with
746 headless IPython.
793 headless IPython.
747
794
748 .. _version 7100:
795 .. _version 7100:
749
796
750 IPython 7.10.0
797 IPython 7.10.0
751 ==============
798 ==============
752
799
753 IPython 7.10 is the first double digit minor release in the last decade, and
800 IPython 7.10 is the first double digit minor release in the last decade, and
754 first since the release of IPython 1.0, previous double digit minor release was
801 first since the release of IPython 1.0, previous double digit minor release was
755 in August 2009.
802 in August 2009.
756
803
757 We've been trying to give you regular release on the last Friday of every month
804 We've been trying to give you regular release on the last Friday of every month
758 for a guaranty of rapid access to bug fixes and new features.
805 for a guaranty of rapid access to bug fixes and new features.
759
806
760 Unlike the previous first few releases that have seen only a couple of code
807 Unlike the previous first few releases that have seen only a couple of code
761 changes, 7.10 bring a number of changes, new features and bugfixes.
808 changes, 7.10 bring a number of changes, new features and bugfixes.
762
809
763 Stop Support for Python 3.5 – Adopt NEP 29
810 Stop Support for Python 3.5 – Adopt NEP 29
764 ------------------------------------------
811 ------------------------------------------
765
812
766 IPython has decided to follow the informational `NEP 29
813 IPython has decided to follow the informational `NEP 29
767 <https://numpy.org/neps/nep-0029-deprecation_policy.html>`_ which layout a clear
814 <https://numpy.org/neps/nep-0029-deprecation_policy.html>`_ which layout a clear
768 policy as to which version of (C)Python and NumPy are supported.
815 policy as to which version of (C)Python and NumPy are supported.
769
816
770 We thus dropped support for Python 3.5, and cleaned up a number of code path
817 We thus dropped support for Python 3.5, and cleaned up a number of code path
771 that were Python-version dependant. If you are on 3.5 or earlier pip should
818 that were Python-version dependant. If you are on 3.5 or earlier pip should
772 automatically give you the latest compatible version of IPython so you do not
819 automatically give you the latest compatible version of IPython so you do not
773 need to pin to a given version.
820 need to pin to a given version.
774
821
775 Support for Prompt Toolkit 3.0
822 Support for Prompt Toolkit 3.0
776 ------------------------------
823 ------------------------------
777
824
778 Prompt Toolkit 3.0 was release a week before IPython 7.10 and introduces a few
825 Prompt Toolkit 3.0 was release a week before IPython 7.10 and introduces a few
779 breaking changes. We believe IPython 7.10 should be compatible with both Prompt
826 breaking changes. We believe IPython 7.10 should be compatible with both Prompt
780 Toolkit 2.x and 3.x, though it has not been extensively tested with 3.x so
827 Toolkit 2.x and 3.x, though it has not been extensively tested with 3.x so
781 please report any issues.
828 please report any issues.
782
829
783
830
784 Prompt Rendering Performance improvements
831 Prompt Rendering Performance improvements
785 -----------------------------------------
832 -----------------------------------------
786
833
787 Pull Request :ghpull:`11933` introduced an optimisation in the prompt rendering
834 Pull Request :ghpull:`11933` introduced an optimisation in the prompt rendering
788 logic that should decrease the resource usage of IPython when using the
835 logic that should decrease the resource usage of IPython when using the
789 _default_ configuration but could potentially introduce a regression of
836 _default_ configuration but could potentially introduce a regression of
790 functionalities if you are using a custom prompt.
837 functionalities if you are using a custom prompt.
791
838
792 We know assume if you haven't changed the default keybindings that the prompt
839 We know assume if you haven't changed the default keybindings that the prompt
793 **will not change** during the duration of your input – which is for example
840 **will not change** during the duration of your input – which is for example
794 not true when using vi insert mode that switches between `[ins]` and `[nor]`
841 not true when using vi insert mode that switches between `[ins]` and `[nor]`
795 for the current mode.
842 for the current mode.
796
843
797 If you are experiencing any issue let us know.
844 If you are experiencing any issue let us know.
798
845
799 Code autoformatting
846 Code autoformatting
800 -------------------
847 -------------------
801
848
802 The IPython terminal can now auto format your code just before entering a new
849 The IPython terminal can now auto format your code just before entering a new
803 line or executing a command. To do so use the
850 line or executing a command. To do so use the
804 ``--TerminalInteractiveShell.autoformatter`` option and set it to ``'black'``;
851 ``--TerminalInteractiveShell.autoformatter`` option and set it to ``'black'``;
805 if black is installed IPython will use black to format your code when possible.
852 if black is installed IPython will use black to format your code when possible.
806
853
807 IPython cannot always properly format your code; in particular it will
854 IPython cannot always properly format your code; in particular it will
808 auto formatting with *black* will only work if:
855 auto formatting with *black* will only work if:
809
856
810 - Your code does not contains magics or special python syntax.
857 - Your code does not contains magics or special python syntax.
811
858
812 - There is no code after your cursor.
859 - There is no code after your cursor.
813
860
814 The Black API is also still in motion; so this may not work with all versions of
861 The Black API is also still in motion; so this may not work with all versions of
815 black.
862 black.
816
863
817 It should be possible to register custom formatter, though the API is till in
864 It should be possible to register custom formatter, though the API is till in
818 flux.
865 flux.
819
866
820 Arbitrary Mimetypes Handing in Terminal (Aka inline images in terminal)
867 Arbitrary Mimetypes Handing in Terminal (Aka inline images in terminal)
821 -----------------------------------------------------------------------
868 -----------------------------------------------------------------------
822
869
823 When using IPython terminal it is now possible to register function to handle
870 When using IPython terminal it is now possible to register function to handle
824 arbitrary mimetypes. While rendering non-text based representation was possible in
871 arbitrary mimetypes. While rendering non-text based representation was possible in
825 many jupyter frontend; it was not possible in terminal IPython, as usually
872 many jupyter frontend; it was not possible in terminal IPython, as usually
826 terminal are limited to displaying text. As many terminal these days provide
873 terminal are limited to displaying text. As many terminal these days provide
827 escape sequences to display non-text; bringing this loved feature to IPython CLI
874 escape sequences to display non-text; bringing this loved feature to IPython CLI
828 made a lot of sens. This functionality will not only allow inline images; but
875 made a lot of sens. This functionality will not only allow inline images; but
829 allow opening of external program; for example ``mplayer`` to "display" sound
876 allow opening of external program; for example ``mplayer`` to "display" sound
830 files.
877 files.
831
878
832 So far only the hooks necessary for this are in place, but no default mime
879 So far only the hooks necessary for this are in place, but no default mime
833 renderers added; so inline images will only be available via extensions. We will
880 renderers added; so inline images will only be available via extensions. We will
834 progressively enable these features by default in the next few releases, and
881 progressively enable these features by default in the next few releases, and
835 contribution is welcomed.
882 contribution is welcomed.
836
883
837 We welcome any feedback on the API. See :ref:`shell_mimerenderer` for more
884 We welcome any feedback on the API. See :ref:`shell_mimerenderer` for more
838 informations.
885 informations.
839
886
840 This is originally based on work form in :ghpull:`10610` from @stephanh42
887 This is originally based on work form in :ghpull:`10610` from @stephanh42
841 started over two years ago, and still a lot need to be done.
888 started over two years ago, and still a lot need to be done.
842
889
843 MISC
890 MISC
844 ----
891 ----
845
892
846 - Completions can define their own ordering :ghpull:`11855`
893 - Completions can define their own ordering :ghpull:`11855`
847 - Enable Plotting in the same cell than the one that import matplotlib
894 - Enable Plotting in the same cell than the one that import matplotlib
848 :ghpull:`11916`
895 :ghpull:`11916`
849 - Allow to store and restore multiple variables at once :ghpull:`11930`
896 - Allow to store and restore multiple variables at once :ghpull:`11930`
850
897
851 You can see `all pull-requests <https://github.com/ipython/ipython/pulls?q=is%3Apr+milestone%3A7.10+is%3Aclosed>`_ for this release.
898 You can see `all pull-requests <https://github.com/ipython/ipython/pulls?q=is%3Apr+milestone%3A7.10+is%3Aclosed>`_ for this release.
852
899
853 API Changes
900 API Changes
854 -----------
901 -----------
855
902
856 Change of API and exposed objects automatically detected using `frappuccino <https://pypi.org/project/frappuccino/>`_ (still in beta):
903 Change of API and exposed objects automatically detected using `frappuccino <https://pypi.org/project/frappuccino/>`_ (still in beta):
857
904
858 The following items are new in IPython 7.10::
905 The following items are new in IPython 7.10::
859
906
860 + IPython.terminal.shortcuts.reformat_text_before_cursor(buffer, document, shell)
907 + IPython.terminal.shortcuts.reformat_text_before_cursor(buffer, document, shell)
861 + IPython.terminal.interactiveshell.PTK3
908 + IPython.terminal.interactiveshell.PTK3
862 + IPython.terminal.interactiveshell.black_reformat_handler(text_before_cursor)
909 + IPython.terminal.interactiveshell.black_reformat_handler(text_before_cursor)
863 + IPython.terminal.prompts.RichPromptDisplayHook.write_format_data(self, format_dict, md_dict='None')
910 + IPython.terminal.prompts.RichPromptDisplayHook.write_format_data(self, format_dict, md_dict='None')
864
911
865 The following items have been removed in 7.10::
912 The following items have been removed in 7.10::
866
913
867 - IPython.lib.pretty.DICT_IS_ORDERED
914 - IPython.lib.pretty.DICT_IS_ORDERED
868
915
869 The following signatures differ between versions::
916 The following signatures differ between versions::
870
917
871 - IPython.extensions.storemagic.restore_aliases(ip)
918 - IPython.extensions.storemagic.restore_aliases(ip)
872 + IPython.extensions.storemagic.restore_aliases(ip, alias='None')
919 + IPython.extensions.storemagic.restore_aliases(ip, alias='None')
873
920
874 Special Thanks
921 Special Thanks
875 --------------
922 --------------
876
923
877 - @stephanh42 who started the work on inline images in terminal 2 years ago
924 - @stephanh42 who started the work on inline images in terminal 2 years ago
878 - @augustogoulart who spent a lot of time triaging issues and responding to
925 - @augustogoulart who spent a lot of time triaging issues and responding to
879 users.
926 users.
880 - @con-f-use who is my (@Carreau) first sponsor on GitHub, as a reminder if you
927 - @con-f-use who is my (@Carreau) first sponsor on GitHub, as a reminder if you
881 like IPython, Jupyter and many other library of the SciPy stack you can
928 like IPython, Jupyter and many other library of the SciPy stack you can
882 donate to numfocus.org non profit
929 donate to numfocus.org non profit
883
930
884 .. _version 790:
931 .. _version 790:
885
932
886 IPython 7.9.0
933 IPython 7.9.0
887 =============
934 =============
888
935
889 IPython 7.9 is a small release with a couple of improvement and bug fixes.
936 IPython 7.9 is a small release with a couple of improvement and bug fixes.
890
937
891 - Xterm terminal title should be restored on exit :ghpull:`11910`
938 - Xterm terminal title should be restored on exit :ghpull:`11910`
892 - special variables ``_``,``__``, ``___`` are not set anymore when cache size
939 - special variables ``_``,``__``, ``___`` are not set anymore when cache size
893 is 0 or less. :ghpull:`11877`
940 is 0 or less. :ghpull:`11877`
894 - Autoreload should have regained some speed by using a new heuristic logic to
941 - Autoreload should have regained some speed by using a new heuristic logic to
895 find all objects needing reload. This should avoid large objects traversal
942 find all objects needing reload. This should avoid large objects traversal
896 like pandas dataframes. :ghpull:`11876`
943 like pandas dataframes. :ghpull:`11876`
897 - Get ready for Python 4. :ghpull:`11874`
944 - Get ready for Python 4. :ghpull:`11874`
898 - `%env` Magic now has heuristic to hide potentially sensitive values :ghpull:`11896`
945 - `%env` Magic now has heuristic to hide potentially sensitive values :ghpull:`11896`
899
946
900 This is a small release despite a number of Pull Request Pending that need to
947 This is a small release despite a number of Pull Request Pending that need to
901 be reviewed/worked on. Many of the core developers have been busy outside of
948 be reviewed/worked on. Many of the core developers have been busy outside of
902 IPython/Jupyter and we thanks all contributor for their patience; we'll work on
949 IPython/Jupyter and we thanks all contributor for their patience; we'll work on
903 these as soon as we have time.
950 these as soon as we have time.
904
951
905
952
906 .. _version780:
953 .. _version780:
907
954
908 IPython 7.8.0
955 IPython 7.8.0
909 =============
956 =============
910
957
911 IPython 7.8.0 contain a few bugfix and 2 new APIs:
958 IPython 7.8.0 contain a few bugfix and 2 new APIs:
912
959
913 - Enable changing the font color for LaTeX rendering :ghpull:`11840`
960 - Enable changing the font color for LaTeX rendering :ghpull:`11840`
914 - and Re-Expose some PDB API (see below)
961 - and Re-Expose some PDB API (see below)
915
962
916 Expose Pdb API
963 Expose Pdb API
917 --------------
964 --------------
918
965
919 Expose the built-in ``pdb.Pdb`` API. ``Pdb`` constructor arguments are generically
966 Expose the built-in ``pdb.Pdb`` API. ``Pdb`` constructor arguments are generically
920 exposed, regardless of python version.
967 exposed, regardless of python version.
921 Newly exposed arguments:
968 Newly exposed arguments:
922
969
923 - ``skip`` - Python 3.1+
970 - ``skip`` - Python 3.1+
924 - ``nosiginnt`` - Python 3.2+
971 - ``nosiginnt`` - Python 3.2+
925 - ``readrc`` - Python 3.6+
972 - ``readrc`` - Python 3.6+
926
973
927 Try it out::
974 Try it out::
928
975
929 from IPython.terminal.debugger import TerminalPdb
976 from IPython.terminal.debugger import TerminalPdb
930 pdb = TerminalPdb(skip=["skipthismodule"])
977 pdb = TerminalPdb(skip=["skipthismodule"])
931
978
932
979
933 See :ghpull:`11840`
980 See :ghpull:`11840`
934
981
935 .. _version770:
982 .. _version770:
936
983
937 IPython 7.7.0
984 IPython 7.7.0
938 =============
985 =============
939
986
940 IPython 7.7.0 contain multiple bug fixes and documentation updates; Here are a
987 IPython 7.7.0 contain multiple bug fixes and documentation updates; Here are a
941 few of the outstanding issue fixed:
988 few of the outstanding issue fixed:
942
989
943 - Fix a bug introduced in 7.6 where the ``%matplotlib`` magic would fail on
990 - Fix a bug introduced in 7.6 where the ``%matplotlib`` magic would fail on
944 previously acceptable arguments :ghpull:`11814`.
991 previously acceptable arguments :ghpull:`11814`.
945 - Fix the manage location on freebsd :ghpull:`11808`.
992 - Fix the manage location on freebsd :ghpull:`11808`.
946 - Fix error message about aliases after ``%reset`` call in ipykernel
993 - Fix error message about aliases after ``%reset`` call in ipykernel
947 :ghpull:`11806`
994 :ghpull:`11806`
948 - Fix Duplication completions in emacs :ghpull:`11803`
995 - Fix Duplication completions in emacs :ghpull:`11803`
949
996
950 We are planning to adopt `NEP29 <https://github.com/numpy/numpy/pull/14086>`_
997 We are planning to adopt `NEP29 <https://github.com/numpy/numpy/pull/14086>`_
951 (still currently in draft) which may make this minor version of IPython the
998 (still currently in draft) which may make this minor version of IPython the
952 last one to support Python 3.5 and will make the code base more aggressive
999 last one to support Python 3.5 and will make the code base more aggressive
953 toward removing compatibility with older versions of Python.
1000 toward removing compatibility with older versions of Python.
954
1001
955 GitHub now support to give only "Triage" permissions to users; if you'd like to
1002 GitHub now support to give only "Triage" permissions to users; if you'd like to
956 help close stale issues and labels issues please reach to us with your GitHub
1003 help close stale issues and labels issues please reach to us with your GitHub
957 Username and we'll add you to the triage team. It is a great way to start
1004 Username and we'll add you to the triage team. It is a great way to start
958 contributing and a path toward getting commit rights.
1005 contributing and a path toward getting commit rights.
959
1006
960 .. _version761:
1007 .. _version761:
961
1008
962 IPython 7.6.1
1009 IPython 7.6.1
963 =============
1010 =============
964
1011
965 IPython 7.6.1 contain a critical bugfix in the ``%timeit`` magic, which would
1012 IPython 7.6.1 contain a critical bugfix in the ``%timeit`` magic, which would
966 crash on some inputs as a side effect of :ghpull:`11716`. See :ghpull:`11812`
1013 crash on some inputs as a side effect of :ghpull:`11716`. See :ghpull:`11812`
967
1014
968
1015
969 .. _whatsnew760:
1016 .. _whatsnew760:
970
1017
971 IPython 7.6.0
1018 IPython 7.6.0
972 =============
1019 =============
973
1020
974 IPython 7.6.0 contains a couple of bug fixes and number of small features
1021 IPython 7.6.0 contains a couple of bug fixes and number of small features
975 additions as well as some compatibility with the current development version of
1022 additions as well as some compatibility with the current development version of
976 Python 3.8.
1023 Python 3.8.
977
1024
978 - Add a ``-l`` option to :magic:`psearch` to list the available search
1025 - Add a ``-l`` option to :magic:`psearch` to list the available search
979 types. :ghpull:`11672`
1026 types. :ghpull:`11672`
980 - Support ``PathLike`` for ``DisplayObject`` and ``Image``. :ghpull:`11764`
1027 - Support ``PathLike`` for ``DisplayObject`` and ``Image``. :ghpull:`11764`
981 - Configurability of timeout in the test suite for slow platforms.
1028 - Configurability of timeout in the test suite for slow platforms.
982 :ghpull:`11756`
1029 :ghpull:`11756`
983 - Accept any casing for matplotlib backend. :ghpull:`121748`
1030 - Accept any casing for matplotlib backend. :ghpull:`121748`
984 - Properly skip test that requires numpy to be installed :ghpull:`11723`
1031 - Properly skip test that requires numpy to be installed :ghpull:`11723`
985 - More support for Python 3.8 and positional only arguments (pep570)
1032 - More support for Python 3.8 and positional only arguments (pep570)
986 :ghpull:`11720`
1033 :ghpull:`11720`
987 - Unicode names for the completion are loaded lazily on first use which
1034 - Unicode names for the completion are loaded lazily on first use which
988 should decrease startup time. :ghpull:`11693`
1035 should decrease startup time. :ghpull:`11693`
989 - Autoreload now update the types of reloaded objects; this for example allow
1036 - Autoreload now update the types of reloaded objects; this for example allow
990 pickling of reloaded objects. :ghpull:`11644`
1037 pickling of reloaded objects. :ghpull:`11644`
991 - Fix a bug where ``%%time`` magic would suppress cell output. :ghpull:`11716`
1038 - Fix a bug where ``%%time`` magic would suppress cell output. :ghpull:`11716`
992
1039
993
1040
994 Prepare migration to pytest (instead of nose) for testing
1041 Prepare migration to pytest (instead of nose) for testing
995 ---------------------------------------------------------
1042 ---------------------------------------------------------
996
1043
997 Most of the work between 7.5 and 7.6 was to prepare the migration from our
1044 Most of the work between 7.5 and 7.6 was to prepare the migration from our
998 testing framework to pytest. Most of the test suite should now work by simply
1045 testing framework to pytest. Most of the test suite should now work by simply
999 issuing ``pytest`` from the root of the repository.
1046 issuing ``pytest`` from the root of the repository.
1000
1047
1001 The migration to pytest is just at its beginning. Many of our test still rely
1048 The migration to pytest is just at its beginning. Many of our test still rely
1002 on IPython-specific plugins for nose using pytest (doctest using IPython syntax
1049 on IPython-specific plugins for nose using pytest (doctest using IPython syntax
1003 is one example of this where test appear as "passing", while no code has been
1050 is one example of this where test appear as "passing", while no code has been
1004 ran). Many test also need to be updated like ``yield-test`` to be properly
1051 ran). Many test also need to be updated like ``yield-test`` to be properly
1005 parametrized tests.
1052 parametrized tests.
1006
1053
1007 Migration to pytest allowed me to discover a number of issues in our test
1054 Migration to pytest allowed me to discover a number of issues in our test
1008 suite; which was hiding a number of subtle issues – or not actually running
1055 suite; which was hiding a number of subtle issues – or not actually running
1009 some of the tests in our test suite – I have thus corrected many of those; like
1056 some of the tests in our test suite – I have thus corrected many of those; like
1010 improperly closed resources; or used of deprecated features. I also made use of
1057 improperly closed resources; or used of deprecated features. I also made use of
1011 the ``pytest --durations=...`` to find some of our slowest test and speed them
1058 the ``pytest --durations=...`` to find some of our slowest test and speed them
1012 up (our test suite can now be up to 10% faster). Pytest as also a variety of
1059 up (our test suite can now be up to 10% faster). Pytest as also a variety of
1013 plugins and flags which will make the code quality of IPython and the testing
1060 plugins and flags which will make the code quality of IPython and the testing
1014 experience better.
1061 experience better.
1015
1062
1016 Misc
1063 Misc
1017 ----
1064 ----
1018
1065
1019 We skipped the release of 7.6 at the end of May, but will attempt to get back
1066 We skipped the release of 7.6 at the end of May, but will attempt to get back
1020 on schedule. We are starting to think about making introducing backward
1067 on schedule. We are starting to think about making introducing backward
1021 incompatible change and start the 8.0 series.
1068 incompatible change and start the 8.0 series.
1022
1069
1023 Special Thanks to Gabriel (@gpotter2 on GitHub), who among other took care many
1070 Special Thanks to Gabriel (@gpotter2 on GitHub), who among other took care many
1024 of the remaining task for 7.4 and 7.5, like updating the website.
1071 of the remaining task for 7.4 and 7.5, like updating the website.
1025
1072
1026 .. _whatsnew750:
1073 .. _whatsnew750:
1027
1074
1028 IPython 7.5.0
1075 IPython 7.5.0
1029 =============
1076 =============
1030
1077
1031 IPython 7.5.0 consist mostly of bug-fixes, and documentation updates, with one
1078 IPython 7.5.0 consist mostly of bug-fixes, and documentation updates, with one
1032 minor new feature. The `Audio` display element can now be assigned an element
1079 minor new feature. The `Audio` display element can now be assigned an element
1033 id when displayed in browser. See :ghpull:`11670`
1080 id when displayed in browser. See :ghpull:`11670`
1034
1081
1035 The major outstanding bug fix correct a change of behavior that was introduce
1082 The major outstanding bug fix correct a change of behavior that was introduce
1036 in 7.4.0 where some cell magics would not be able to access or modify global
1083 in 7.4.0 where some cell magics would not be able to access or modify global
1037 scope when using the ``@needs_local_scope`` decorator. This was typically
1084 scope when using the ``@needs_local_scope`` decorator. This was typically
1038 encountered with the ``%%time`` and ``%%timeit`` magics. See :ghissue:`11659`
1085 encountered with the ``%%time`` and ``%%timeit`` magics. See :ghissue:`11659`
1039 and :ghpull:`11698`.
1086 and :ghpull:`11698`.
1040
1087
1041 .. _whatsnew740:
1088 .. _whatsnew740:
1042
1089
1043 IPython 7.4.0
1090 IPython 7.4.0
1044 =============
1091 =============
1045
1092
1046 Unicode name completions
1093 Unicode name completions
1047 ------------------------
1094 ------------------------
1048
1095
1049 Previously, we provided completion for a unicode name with its relative symbol.
1096 Previously, we provided completion for a unicode name with its relative symbol.
1050 With this, now IPython provides complete suggestions to unicode name symbols.
1097 With this, now IPython provides complete suggestions to unicode name symbols.
1051
1098
1052 As on the PR, if user types ``\LAT<tab>``, IPython provides a list of
1099 As on the PR, if user types ``\LAT<tab>``, IPython provides a list of
1053 possible completions. In this case, it would be something like::
1100 possible completions. In this case, it would be something like::
1054
1101
1055 'LATIN CAPITAL LETTER A',
1102 'LATIN CAPITAL LETTER A',
1056 'LATIN CAPITAL LETTER B',
1103 'LATIN CAPITAL LETTER B',
1057 'LATIN CAPITAL LETTER C',
1104 'LATIN CAPITAL LETTER C',
1058 'LATIN CAPITAL LETTER D',
1105 'LATIN CAPITAL LETTER D',
1059 ....
1106 ....
1060
1107
1061 This help to type unicode character that do not have short latex aliases, and
1108 This help to type unicode character that do not have short latex aliases, and
1062 have long unicode names. for example ``Ν°``, ``\GREEK CAPITAL LETTER HETA``.
1109 have long unicode names. for example ``Ν°``, ``\GREEK CAPITAL LETTER HETA``.
1063
1110
1064 This feature was contributed by Luciana Marques :ghpull:`11583`.
1111 This feature was contributed by Luciana Marques :ghpull:`11583`.
1065
1112
1066 Make audio normalization optional
1113 Make audio normalization optional
1067 ---------------------------------
1114 ---------------------------------
1068
1115
1069 Added 'normalize' argument to `IPython.display.Audio`. This argument applies
1116 Added 'normalize' argument to `IPython.display.Audio`. This argument applies
1070 when audio data is given as an array of samples. The default of `normalize=True`
1117 when audio data is given as an array of samples. The default of `normalize=True`
1071 preserves prior behavior of normalizing the audio to the maximum possible range.
1118 preserves prior behavior of normalizing the audio to the maximum possible range.
1072 Setting to `False` disables normalization.
1119 Setting to `False` disables normalization.
1073
1120
1074
1121
1075 Miscellaneous
1122 Miscellaneous
1076 -------------
1123 -------------
1077
1124
1078 - Fix improper acceptation of ``return`` outside of functions. :ghpull:`11641`.
1125 - Fix improper acceptation of ``return`` outside of functions. :ghpull:`11641`.
1079 - Fixed PyQt 5.11 backwards incompatibility causing sip import failure.
1126 - Fixed PyQt 5.11 backwards incompatibility causing sip import failure.
1080 :ghpull:`11613`.
1127 :ghpull:`11613`.
1081 - Fix Bug where ``type?`` would crash IPython. :ghpull:`1608`.
1128 - Fix Bug where ``type?`` would crash IPython. :ghpull:`1608`.
1082 - Allow to apply ``@needs_local_scope`` to cell magics for convenience.
1129 - Allow to apply ``@needs_local_scope`` to cell magics for convenience.
1083 :ghpull:`11542`.
1130 :ghpull:`11542`.
1084
1131
1085 .. _whatsnew730:
1132 .. _whatsnew730:
1086
1133
1087 IPython 7.3.0
1134 IPython 7.3.0
1088 =============
1135 =============
1089
1136
1090 .. _whatsnew720:
1137 .. _whatsnew720:
1091
1138
1092 IPython 7.3.0 bring several bug fixes and small improvements that you will
1139 IPython 7.3.0 bring several bug fixes and small improvements that you will
1093 described bellow.
1140 described bellow.
1094
1141
1095 The biggest change to this release is the implementation of the ``%conda`` and
1142 The biggest change to this release is the implementation of the ``%conda`` and
1096 ``%pip`` magics, that will attempt to install packages in the **current
1143 ``%pip`` magics, that will attempt to install packages in the **current
1097 environment**. You may still need to restart your interpreter or kernel for the
1144 environment**. You may still need to restart your interpreter or kernel for the
1098 change to be taken into account, but it should simplify installation of packages
1145 change to be taken into account, but it should simplify installation of packages
1099 into remote environment. Installing using pip/conda from the command line is
1146 into remote environment. Installing using pip/conda from the command line is
1100 still the prefer method.
1147 still the prefer method.
1101
1148
1102 The ``%pip`` magic was already present, but was only printing a warning; now it
1149 The ``%pip`` magic was already present, but was only printing a warning; now it
1103 will actually forward commands to pip.
1150 will actually forward commands to pip.
1104
1151
1105 Misc bug fixes and improvements:
1152 Misc bug fixes and improvements:
1106
1153
1107 - Compatibility with Python 3.8.
1154 - Compatibility with Python 3.8.
1108 - Do not expand shell variable in execution magics, and added the
1155 - Do not expand shell variable in execution magics, and added the
1109 ``no_var_expand`` decorator for magic requiring a similar functionality
1156 ``no_var_expand`` decorator for magic requiring a similar functionality
1110 :ghpull:`11516`
1157 :ghpull:`11516`
1111 - Add ``%pip`` and ``%conda`` magic :ghpull:`11524`
1158 - Add ``%pip`` and ``%conda`` magic :ghpull:`11524`
1112 - Re-initialize posix aliases after a ``%reset`` :ghpull:`11528`
1159 - Re-initialize posix aliases after a ``%reset`` :ghpull:`11528`
1113 - Allow the IPython command line to run ``*.ipynb`` files :ghpull:`11529`
1160 - Allow the IPython command line to run ``*.ipynb`` files :ghpull:`11529`
1114
1161
1115 IPython 7.2.0
1162 IPython 7.2.0
1116 =============
1163 =============
1117
1164
1118 IPython 7.2.0 brings minor bugfixes, improvements, and new configuration options:
1165 IPython 7.2.0 brings minor bugfixes, improvements, and new configuration options:
1119
1166
1120 - Fix a bug preventing PySide2 GUI integration from working :ghpull:`11464`
1167 - Fix a bug preventing PySide2 GUI integration from working :ghpull:`11464`
1121 - Run CI on Mac OS ! :ghpull:`11471`
1168 - Run CI on Mac OS ! :ghpull:`11471`
1122 - Fix IPython "Demo" mode. :ghpull:`11498`
1169 - Fix IPython "Demo" mode. :ghpull:`11498`
1123 - Fix ``%run`` magic with path in name :ghpull:`11499`
1170 - Fix ``%run`` magic with path in name :ghpull:`11499`
1124 - Fix: add CWD to sys.path *after* stdlib :ghpull:`11502`
1171 - Fix: add CWD to sys.path *after* stdlib :ghpull:`11502`
1125 - Better rendering of signatures, especially long ones. :ghpull:`11505`
1172 - Better rendering of signatures, especially long ones. :ghpull:`11505`
1126 - Re-enable jedi by default if it's installed :ghpull:`11506`
1173 - Re-enable jedi by default if it's installed :ghpull:`11506`
1127 - Add New ``minimal`` exception reporting mode (useful for educational purpose). See :ghpull:`11509`
1174 - Add New ``minimal`` exception reporting mode (useful for educational purpose). See :ghpull:`11509`
1128
1175
1129
1176
1130 Added ability to show subclasses when using pinfo and other utilities
1177 Added ability to show subclasses when using pinfo and other utilities
1131 ---------------------------------------------------------------------
1178 ---------------------------------------------------------------------
1132
1179
1133 When using ``?``/``??`` on a class, IPython will now list the first 10 subclasses.
1180 When using ``?``/``??`` on a class, IPython will now list the first 10 subclasses.
1134
1181
1135 Special Thanks to Chris Mentzel of the Moore Foundation for this feature. Chris
1182 Special Thanks to Chris Mentzel of the Moore Foundation for this feature. Chris
1136 is one of the people who played a critical role in IPython/Jupyter getting
1183 is one of the people who played a critical role in IPython/Jupyter getting
1137 funding.
1184 funding.
1138
1185
1139 We are grateful for all the help Chris has given us over the years,
1186 We are grateful for all the help Chris has given us over the years,
1140 and we're now proud to have code contributed by Chris in IPython.
1187 and we're now proud to have code contributed by Chris in IPython.
1141
1188
1142 OSMagics.cd_force_quiet configuration option
1189 OSMagics.cd_force_quiet configuration option
1143 --------------------------------------------
1190 --------------------------------------------
1144
1191
1145 You can set this option to force the %cd magic to behave as if ``-q`` was passed:
1192 You can set this option to force the %cd magic to behave as if ``-q`` was passed:
1146 ::
1193 ::
1147
1194
1148 In [1]: cd /
1195 In [1]: cd /
1149 /
1196 /
1150
1197
1151 In [2]: %config OSMagics.cd_force_quiet = True
1198 In [2]: %config OSMagics.cd_force_quiet = True
1152
1199
1153 In [3]: cd /tmp
1200 In [3]: cd /tmp
1154
1201
1155 In [4]:
1202 In [4]:
1156
1203
1157 See :ghpull:`11491`
1204 See :ghpull:`11491`
1158
1205
1159 In vi editing mode, whether the prompt includes the current vi mode can now be configured
1206 In vi editing mode, whether the prompt includes the current vi mode can now be configured
1160 -----------------------------------------------------------------------------------------
1207 -----------------------------------------------------------------------------------------
1161
1208
1162 Set the ``TerminalInteractiveShell.prompt_includes_vi_mode`` to a boolean value
1209 Set the ``TerminalInteractiveShell.prompt_includes_vi_mode`` to a boolean value
1163 (default: True) to control this feature. See :ghpull:`11492`
1210 (default: True) to control this feature. See :ghpull:`11492`
1164
1211
1165 .. _whatsnew710:
1212 .. _whatsnew710:
1166
1213
1167 IPython 7.1.0
1214 IPython 7.1.0
1168 =============
1215 =============
1169
1216
1170 IPython 7.1.0 is the first minor release after 7.0.0 and mostly brings fixes to
1217 IPython 7.1.0 is the first minor release after 7.0.0 and mostly brings fixes to
1171 new features, internal refactoring, and fixes for regressions that happened during the 6.x->7.x
1218 new features, internal refactoring, and fixes for regressions that happened during the 6.x->7.x
1172 transition. It also brings **Compatibility with Python 3.7.1**, as we're
1219 transition. It also brings **Compatibility with Python 3.7.1**, as we're
1173 unwillingly relying on a bug in CPython.
1220 unwillingly relying on a bug in CPython.
1174
1221
1175 New Core Dev:
1222 New Core Dev:
1176
1223
1177 - We welcome Jonathan Slenders to the commiters. Jonathan has done a fantastic
1224 - We welcome Jonathan Slenders to the commiters. Jonathan has done a fantastic
1178 work on prompt_toolkit, and we'd like to recognise his impact by giving him
1225 work on prompt_toolkit, and we'd like to recognise his impact by giving him
1179 commit rights. :ghissue:`11397`
1226 commit rights. :ghissue:`11397`
1180
1227
1181 Notable Changes
1228 Notable Changes
1182
1229
1183 - Major update of "latex to unicode" tab completion map (see below)
1230 - Major update of "latex to unicode" tab completion map (see below)
1184
1231
1185 Notable New Features:
1232 Notable New Features:
1186
1233
1187 - Restore functionality and documentation of the **sphinx directive**, which
1234 - Restore functionality and documentation of the **sphinx directive**, which
1188 is now stricter (fail on error by daefault), has new configuration options,
1235 is now stricter (fail on error by daefault), has new configuration options,
1189 has a brand new documentation page :ref:`ipython_directive` (which needs
1236 has a brand new documentation page :ref:`ipython_directive` (which needs
1190 some cleanup). It is also now *tested* so we hope to have less regressions.
1237 some cleanup). It is also now *tested* so we hope to have less regressions.
1191 :ghpull:`11402`
1238 :ghpull:`11402`
1192
1239
1193 - ``IPython.display.Video`` now supports ``width`` and ``height`` arguments,
1240 - ``IPython.display.Video`` now supports ``width`` and ``height`` arguments,
1194 allowing a custom width and height to be set instead of using the video's
1241 allowing a custom width and height to be set instead of using the video's
1195 width and height. :ghpull:`11353`
1242 width and height. :ghpull:`11353`
1196
1243
1197 - Warn when using ``HTML('<iframe>')`` instead of ``IFrame`` :ghpull:`11350`
1244 - Warn when using ``HTML('<iframe>')`` instead of ``IFrame`` :ghpull:`11350`
1198
1245
1199 - Allow Dynamic switching of editing mode between vi/emacs and show
1246 - Allow Dynamic switching of editing mode between vi/emacs and show
1200 normal/input mode in prompt when using vi. :ghpull:`11390`. Use ``%config
1247 normal/input mode in prompt when using vi. :ghpull:`11390`. Use ``%config
1201 TerminalInteractiveShell.editing_mode = 'vi'`` or ``%config
1248 TerminalInteractiveShell.editing_mode = 'vi'`` or ``%config
1202 TerminalInteractiveShell.editing_mode = 'emacs'`` to dynamically switch
1249 TerminalInteractiveShell.editing_mode = 'emacs'`` to dynamically switch
1203 between modes.
1250 between modes.
1204
1251
1205
1252
1206 Notable Fixes:
1253 Notable Fixes:
1207
1254
1208 - Fix entering of **multi-line blocks in terminal** IPython, and various
1255 - Fix entering of **multi-line blocks in terminal** IPython, and various
1209 crashes in the new input transformation machinery :ghpull:`11354`,
1256 crashes in the new input transformation machinery :ghpull:`11354`,
1210 :ghpull:`11356`, :ghpull:`11358`. These also fix a **Compatibility bug
1257 :ghpull:`11356`, :ghpull:`11358`. These also fix a **Compatibility bug
1211 with Python 3.7.1**.
1258 with Python 3.7.1**.
1212
1259
1213 - Fix moving through generator stack in ipdb :ghpull:`11266`
1260 - Fix moving through generator stack in ipdb :ghpull:`11266`
1214
1261
1215 - %Magic command arguments now support quoting. :ghpull:`11330`
1262 - %Magic command arguments now support quoting. :ghpull:`11330`
1216
1263
1217 - Re-add ``rprint`` and ``rprinte`` aliases. :ghpull:`11331`
1264 - Re-add ``rprint`` and ``rprinte`` aliases. :ghpull:`11331`
1218
1265
1219 - Remove implicit dependency on ``ipython_genutils`` :ghpull:`11317`
1266 - Remove implicit dependency on ``ipython_genutils`` :ghpull:`11317`
1220
1267
1221 - Make ``nonlocal`` raise ``SyntaxError`` instead of silently failing in async
1268 - Make ``nonlocal`` raise ``SyntaxError`` instead of silently failing in async
1222 mode. :ghpull:`11382`
1269 mode. :ghpull:`11382`
1223
1270
1224 - Fix mishandling of magics and ``= !`` assignment just after a dedent in
1271 - Fix mishandling of magics and ``= !`` assignment just after a dedent in
1225 nested code blocks :ghpull:`11418`
1272 nested code blocks :ghpull:`11418`
1226
1273
1227 - Fix instructions for custom shortcuts :ghpull:`11426`
1274 - Fix instructions for custom shortcuts :ghpull:`11426`
1228
1275
1229
1276
1230 Notable Internals improvements:
1277 Notable Internals improvements:
1231
1278
1232 - Use of ``os.scandir`` (Python 3 only) to speed up some file system operations.
1279 - Use of ``os.scandir`` (Python 3 only) to speed up some file system operations.
1233 :ghpull:`11365`
1280 :ghpull:`11365`
1234
1281
1235 - use ``perf_counter`` instead of ``clock`` for more precise
1282 - use ``perf_counter`` instead of ``clock`` for more precise
1236 timing results with ``%time`` :ghpull:`11376`
1283 timing results with ``%time`` :ghpull:`11376`
1237
1284
1238 Many thanks to all the contributors and in particular to ``bartskowron`` and
1285 Many thanks to all the contributors and in particular to ``bartskowron`` and
1239 ``tonyfast`` who handled some pretty complicated bugs in the input machinery. We
1286 ``tonyfast`` who handled some pretty complicated bugs in the input machinery. We
1240 had a number of first time contributors and maybe hacktoberfest participants that
1287 had a number of first time contributors and maybe hacktoberfest participants that
1241 made significant contributions and helped us free some time to focus on more
1288 made significant contributions and helped us free some time to focus on more
1242 complicated bugs.
1289 complicated bugs.
1243
1290
1244 You
1291 You
1245 can see all the closed issues and Merged PR, new features and fixes `here
1292 can see all the closed issues and Merged PR, new features and fixes `here
1246 <https://github.com/ipython/ipython/issues?utf8=%E2%9C%93&q=+is%3Aclosed+milestone%3A7.1+>`_.
1293 <https://github.com/ipython/ipython/issues?utf8=%E2%9C%93&q=+is%3Aclosed+milestone%3A7.1+>`_.
1247
1294
1248 Unicode Completion update
1295 Unicode Completion update
1249 -------------------------
1296 -------------------------
1250
1297
1251 In IPython 7.1 the Unicode completion map has been updated and synchronized with
1298 In IPython 7.1 the Unicode completion map has been updated and synchronized with
1252 the Julia language.
1299 the Julia language.
1253
1300
1254 Added and removed character characters:
1301 Added and removed character characters:
1255
1302
1256 ``\jmath`` (``Θ·``), ``\\underleftrightarrow`` (U+034D, combining) have been
1303 ``\jmath`` (``Θ·``), ``\\underleftrightarrow`` (U+034D, combining) have been
1257 added, while ``\\textasciicaron`` have been removed
1304 added, while ``\\textasciicaron`` have been removed
1258
1305
1259 Some sequences have seen their prefix removed:
1306 Some sequences have seen their prefix removed:
1260
1307
1261 - 6 characters ``\text...<tab>`` should now be inputed with ``\...<tab>`` directly,
1308 - 6 characters ``\text...<tab>`` should now be inputed with ``\...<tab>`` directly,
1262 - 45 characters ``\Elz...<tab>`` should now be inputed with ``\...<tab>`` directly,
1309 - 45 characters ``\Elz...<tab>`` should now be inputed with ``\...<tab>`` directly,
1263 - 65 characters ``\B...<tab>`` should now be inputed with ``\...<tab>`` directly,
1310 - 65 characters ``\B...<tab>`` should now be inputed with ``\...<tab>`` directly,
1264 - 450 characters ``\m...<tab>`` should now be inputed with ``\...<tab>`` directly,
1311 - 450 characters ``\m...<tab>`` should now be inputed with ``\...<tab>`` directly,
1265
1312
1266 Some sequences have seen their prefix shortened:
1313 Some sequences have seen their prefix shortened:
1267
1314
1268 - 5 characters ``\mitBbb...<tab>`` should now be inputed with ``\bbi...<tab>`` directly,
1315 - 5 characters ``\mitBbb...<tab>`` should now be inputed with ``\bbi...<tab>`` directly,
1269 - 52 characters ``\mit...<tab>`` should now be inputed with ``\i...<tab>`` directly,
1316 - 52 characters ``\mit...<tab>`` should now be inputed with ``\i...<tab>`` directly,
1270 - 216 characters ``\mbfit...<tab>`` should now be inputed with ``\bi...<tab>`` directly,
1317 - 216 characters ``\mbfit...<tab>`` should now be inputed with ``\bi...<tab>`` directly,
1271 - 222 characters ``\mbf...<tab>`` should now be inputed with ``\b...<tab>`` directly,
1318 - 222 characters ``\mbf...<tab>`` should now be inputed with ``\b...<tab>`` directly,
1272
1319
1273 A couple of characters had their sequence simplified:
1320 A couple of characters had their sequence simplified:
1274
1321
1275 - ``Γ°``, type ``\dh<tab>``, instead of ``\eth<tab>``
1322 - ``Γ°``, type ``\dh<tab>``, instead of ``\eth<tab>``
1276 - ``Δ§``, type ``\hbar<tab>``, instead of ``\Elzxh<tab>``
1323 - ``Δ§``, type ``\hbar<tab>``, instead of ``\Elzxh<tab>``
1277 - ``ΙΈ``, type ``\ltphi<tab>``, instead of ``\textphi<tab>``
1324 - ``ΙΈ``, type ``\ltphi<tab>``, instead of ``\textphi<tab>``
1278 - ``Ο΄``, type ``\varTheta<tab>``, instead of ``\textTheta<tab>``
1325 - ``Ο΄``, type ``\varTheta<tab>``, instead of ``\textTheta<tab>``
1279 - ``ℇ``, type ``\eulermascheroni<tab>``, instead of ``\Eulerconst<tab>``
1326 - ``ℇ``, type ``\eulermascheroni<tab>``, instead of ``\Eulerconst<tab>``
1280 - ``β„Ž``, type ``\planck<tab>``, instead of ``\Planckconst<tab>``
1327 - ``β„Ž``, type ``\planck<tab>``, instead of ``\Planckconst<tab>``
1281
1328
1282 - U+0336 (COMBINING LONG STROKE OVERLAY), type ``\strike<tab>``, instead of ``\Elzbar<tab>``.
1329 - U+0336 (COMBINING LONG STROKE OVERLAY), type ``\strike<tab>``, instead of ``\Elzbar<tab>``.
1283
1330
1284 A couple of sequences have been updated:
1331 A couple of sequences have been updated:
1285
1332
1286 - ``\varepsilon`` now gives ``Ι›`` (GREEK SMALL LETTER EPSILON) instead of ``Ξ΅`` (GREEK LUNATE EPSILON SYMBOL),
1333 - ``\varepsilon`` now gives ``Ι›`` (GREEK SMALL LETTER EPSILON) instead of ``Ξ΅`` (GREEK LUNATE EPSILON SYMBOL),
1287 - ``\underbar`` now gives U+0331 (COMBINING MACRON BELOW) instead of U+0332 (COMBINING LOW LINE).
1334 - ``\underbar`` now gives U+0331 (COMBINING MACRON BELOW) instead of U+0332 (COMBINING LOW LINE).
1288
1335
1289
1336
1290 .. _whatsnew700:
1337 .. _whatsnew700:
1291
1338
1292 IPython 7.0.0
1339 IPython 7.0.0
1293 =============
1340 =============
1294
1341
1295 Released Thursday September 27th, 2018
1342 Released Thursday September 27th, 2018
1296
1343
1297 IPython 7 includes major feature improvements.
1344 IPython 7 includes major feature improvements.
1298 This is also the second major version of IPython to support only
1345 This is also the second major version of IPython to support only
1299 Python 3 – starting at Python 3.4. Python 2 is still community-supported
1346 Python 3 – starting at Python 3.4. Python 2 is still community-supported
1300 on the bugfix only 5.x branch, but we remind you that Python 2 "end of life"
1347 on the bugfix only 5.x branch, but we remind you that Python 2 "end of life"
1301 is on Jan 1st 2020.
1348 is on Jan 1st 2020.
1302
1349
1303 We were able to backport bug fixes to the 5.x branch thanks to our backport bot which
1350 We were able to backport bug fixes to the 5.x branch thanks to our backport bot which
1304 backported more than `70 Pull-Requests
1351 backported more than `70 Pull-Requests
1305 <https://github.com/ipython/ipython/pulls?page=3&q=is%3Apr+sort%3Aupdated-desc+author%3Aapp%2Fmeeseeksdev++5.x&utf8=%E2%9C%93>`_, but there are still many PRs that required manual work. This is an area of the project where you can easily contribute by looking for `PRs that still need manual backport <https://github.com/ipython/ipython/issues?q=label%3A%22Still+Needs+Manual+Backport%22+is%3Aclosed+sort%3Aupdated-desc>`_
1352 <https://github.com/ipython/ipython/pulls?page=3&q=is%3Apr+sort%3Aupdated-desc+author%3Aapp%2Fmeeseeksdev++5.x&utf8=%E2%9C%93>`_, but there are still many PRs that required manual work. This is an area of the project where you can easily contribute by looking for `PRs that still need manual backport <https://github.com/ipython/ipython/issues?q=label%3A%22Still+Needs+Manual+Backport%22+is%3Aclosed+sort%3Aupdated-desc>`_
1306
1353
1307 The IPython 6.x branch will likely not see any further release unless critical
1354 The IPython 6.x branch will likely not see any further release unless critical
1308 bugs are found.
1355 bugs are found.
1309
1356
1310 Make sure you have pip > 9.0 before upgrading. You should be able to update by running:
1357 Make sure you have pip > 9.0 before upgrading. You should be able to update by running:
1311
1358
1312 .. code::
1359 .. code::
1313
1360
1314 pip install ipython --upgrade
1361 pip install ipython --upgrade
1315
1362
1316 .. only:: ipydev
1363 .. only:: ipydev
1317
1364
1318 If you are trying to install or update an ``alpha``, ``beta``, or ``rc``
1365 If you are trying to install or update an ``alpha``, ``beta``, or ``rc``
1319 version, use pip ``--pre`` flag.
1366 version, use pip ``--pre`` flag.
1320
1367
1321 .. code::
1368 .. code::
1322
1369
1323 pip install ipython --upgrade --pre
1370 pip install ipython --upgrade --pre
1324
1371
1325
1372
1326 Or, if you have conda installed:
1373 Or, if you have conda installed:
1327
1374
1328 .. code::
1375 .. code::
1329
1376
1330 conda install ipython
1377 conda install ipython
1331
1378
1332
1379
1333
1380
1334 Prompt Toolkit 2.0
1381 Prompt Toolkit 2.0
1335 ------------------
1382 ------------------
1336
1383
1337 IPython 7.0+ now uses ``prompt_toolkit 2.0``. If you still need to use an earlier
1384 IPython 7.0+ now uses ``prompt_toolkit 2.0``. If you still need to use an earlier
1338 ``prompt_toolkit`` version, you may need to pin IPython to ``<7.0``.
1385 ``prompt_toolkit`` version, you may need to pin IPython to ``<7.0``.
1339
1386
1340 Autowait: Asynchronous REPL
1387 Autowait: Asynchronous REPL
1341 ---------------------------
1388 ---------------------------
1342
1389
1343 Staring with IPython 7.0 on Python 3.6+, IPython can automatically ``await``
1390 Staring with IPython 7.0 on Python 3.6+, IPython can automatically ``await``
1344 top level code. You should not need to access an event loop or runner
1391 top level code. You should not need to access an event loop or runner
1345 yourself. To learn more, read the :ref:`autoawait` section of our docs, see
1392 yourself. To learn more, read the :ref:`autoawait` section of our docs, see
1346 :ghpull:`11265`, or try the following code::
1393 :ghpull:`11265`, or try the following code::
1347
1394
1348 Python 3.6.0
1395 Python 3.6.0
1349 Type 'copyright', 'credits' or 'license' for more information
1396 Type 'copyright', 'credits' or 'license' for more information
1350 IPython 7.0.0 -- An enhanced Interactive Python. Type '?' for help.
1397 IPython 7.0.0 -- An enhanced Interactive Python. Type '?' for help.
1351
1398
1352 In [1]: import aiohttp
1399 In [1]: import aiohttp
1353 ...: result = aiohttp.get('https://api.github.com')
1400 ...: result = aiohttp.get('https://api.github.com')
1354
1401
1355 In [2]: response = await result
1402 In [2]: response = await result
1356 <pause for a few 100s ms>
1403 <pause for a few 100s ms>
1357
1404
1358 In [3]: await response.json()
1405 In [3]: await response.json()
1359 Out[3]:
1406 Out[3]:
1360 {'authorizations_url': 'https://api.github.com/authorizations',
1407 {'authorizations_url': 'https://api.github.com/authorizations',
1361 'code_search_url': 'https://api.github.com/search/code?q={query}{&page,per_page,sort,order}',
1408 'code_search_url': 'https://api.github.com/search/code?q={query}{&page,per_page,sort,order}',
1362 ...
1409 ...
1363 }
1410 }
1364
1411
1365 .. note::
1412 .. note::
1366
1413
1367 Async integration is experimental code, behavior may change or be removed
1414 Async integration is experimental code, behavior may change or be removed
1368 between Python and IPython versions without warnings.
1415 between Python and IPython versions without warnings.
1369
1416
1370 Integration is by default with `asyncio`, but other libraries can be configured --
1417 Integration is by default with `asyncio`, but other libraries can be configured --
1371 like ``curio`` or ``trio`` -- to improve concurrency in the REPL::
1418 like ``curio`` or ``trio`` -- to improve concurrency in the REPL::
1372
1419
1373 In [1]: %autoawait trio
1420 In [1]: %autoawait trio
1374
1421
1375 In [2]: import trio
1422 In [2]: import trio
1376
1423
1377 In [3]: async def child(i):
1424 In [3]: async def child(i):
1378 ...: print(" child %s goes to sleep"%i)
1425 ...: print(" child %s goes to sleep"%i)
1379 ...: await trio.sleep(2)
1426 ...: await trio.sleep(2)
1380 ...: print(" child %s wakes up"%i)
1427 ...: print(" child %s wakes up"%i)
1381
1428
1382 In [4]: print('parent start')
1429 In [4]: print('parent start')
1383 ...: async with trio.open_nursery() as n:
1430 ...: async with trio.open_nursery() as n:
1384 ...: for i in range(3):
1431 ...: for i in range(3):
1385 ...: n.spawn(child, i)
1432 ...: n.spawn(child, i)
1386 ...: print('parent end')
1433 ...: print('parent end')
1387 parent start
1434 parent start
1388 child 2 goes to sleep
1435 child 2 goes to sleep
1389 child 0 goes to sleep
1436 child 0 goes to sleep
1390 child 1 goes to sleep
1437 child 1 goes to sleep
1391 <about 2 seconds pause>
1438 <about 2 seconds pause>
1392 child 2 wakes up
1439 child 2 wakes up
1393 child 1 wakes up
1440 child 1 wakes up
1394 child 0 wakes up
1441 child 0 wakes up
1395 parent end
1442 parent end
1396
1443
1397 See :ref:`autoawait` for more information.
1444 See :ref:`autoawait` for more information.
1398
1445
1399
1446
1400 Asynchronous code in a Notebook interface or any other frontend using the
1447 Asynchronous code in a Notebook interface or any other frontend using the
1401 Jupyter Protocol will require further updates to the IPykernel package.
1448 Jupyter Protocol will require further updates to the IPykernel package.
1402
1449
1403 Non-Asynchronous code
1450 Non-Asynchronous code
1404 ~~~~~~~~~~~~~~~~~~~~~
1451 ~~~~~~~~~~~~~~~~~~~~~
1405
1452
1406 As the internal API of IPython is now asynchronous, IPython needs to run under
1453 As the internal API of IPython is now asynchronous, IPython needs to run under
1407 an event loop. In order to allow many workflows, (like using the :magic:`%run`
1454 an event loop. In order to allow many workflows, (like using the :magic:`%run`
1408 magic, or copy-pasting code that explicitly starts/stop event loop), when
1455 magic, or copy-pasting code that explicitly starts/stop event loop), when
1409 top-level code is detected as not being asynchronous, IPython code is advanced
1456 top-level code is detected as not being asynchronous, IPython code is advanced
1410 via a pseudo-synchronous runner, and may not advance pending tasks.
1457 via a pseudo-synchronous runner, and may not advance pending tasks.
1411
1458
1412 Change to Nested Embed
1459 Change to Nested Embed
1413 ~~~~~~~~~~~~~~~~~~~~~~
1460 ~~~~~~~~~~~~~~~~~~~~~~
1414
1461
1415 The introduction of the ability to run async code had some effect on the
1462 The introduction of the ability to run async code had some effect on the
1416 ``IPython.embed()`` API. By default, embed will not allow you to run asynchronous
1463 ``IPython.embed()`` API. By default, embed will not allow you to run asynchronous
1417 code unless an event loop is specified.
1464 code unless an event loop is specified.
1418
1465
1419 Effects on Magics
1466 Effects on Magics
1420 ~~~~~~~~~~~~~~~~~
1467 ~~~~~~~~~~~~~~~~~
1421
1468
1422 Some magics will not work with async until they're updated.
1469 Some magics will not work with async until they're updated.
1423 Contributions welcome.
1470 Contributions welcome.
1424
1471
1425 Expected Future changes
1472 Expected Future changes
1426 ~~~~~~~~~~~~~~~~~~~~~~~
1473 ~~~~~~~~~~~~~~~~~~~~~~~
1427
1474
1428 We expect more internal but public IPython functions to become ``async``, and
1475 We expect more internal but public IPython functions to become ``async``, and
1429 will likely end up having a persistent event loop while IPython is running.
1476 will likely end up having a persistent event loop while IPython is running.
1430
1477
1431 Thanks
1478 Thanks
1432 ~~~~~~
1479 ~~~~~~
1433
1480
1434 This release took more than a year in the making.
1481 This release took more than a year in the making.
1435 The code was rebased a number of
1482 The code was rebased a number of
1436 times; leading to commit authorship that may have been lost in the final
1483 times; leading to commit authorship that may have been lost in the final
1437 Pull-Request. Huge thanks to many people for contribution, discussion, code,
1484 Pull-Request. Huge thanks to many people for contribution, discussion, code,
1438 documentation, use-cases: dalejung, danielballan, ellisonbg, fperez, gnestor,
1485 documentation, use-cases: dalejung, danielballan, ellisonbg, fperez, gnestor,
1439 minrk, njsmith, pganssle, tacaswell, takluyver , vidartf ... And many others.
1486 minrk, njsmith, pganssle, tacaswell, takluyver , vidartf ... And many others.
1440
1487
1441
1488
1442 Autoreload Improvement
1489 Autoreload Improvement
1443 ----------------------
1490 ----------------------
1444
1491
1445 The magic :magic:`%autoreload 2 <autoreload>` now captures new methods added to
1492 The magic :magic:`%autoreload 2 <autoreload>` now captures new methods added to
1446 classes. Earlier, only methods existing as of the initial import were being
1493 classes. Earlier, only methods existing as of the initial import were being
1447 tracked and updated.
1494 tracked and updated.
1448
1495
1449 This new feature helps dual environment development - Jupyter+IDE - where the
1496 This new feature helps dual environment development - Jupyter+IDE - where the
1450 code gradually moves from notebook cells to package files as it gets
1497 code gradually moves from notebook cells to package files as it gets
1451 structured.
1498 structured.
1452
1499
1453 **Example**: An instance of the class ``MyClass`` will be able to access the
1500 **Example**: An instance of the class ``MyClass`` will be able to access the
1454 method ``cube()`` after it is uncommented and the file ``file1.py`` is saved on
1501 method ``cube()`` after it is uncommented and the file ``file1.py`` is saved on
1455 disk.
1502 disk.
1456
1503
1457
1504
1458 .. code::
1505 .. code::
1459
1506
1460 # notebook
1507 # notebook
1461
1508
1462 from mymodule import MyClass
1509 from mymodule import MyClass
1463 first = MyClass(5)
1510 first = MyClass(5)
1464
1511
1465 .. code::
1512 .. code::
1466
1513
1467 # mymodule/file1.py
1514 # mymodule/file1.py
1468
1515
1469 class MyClass:
1516 class MyClass:
1470
1517
1471 def __init__(self, a=10):
1518 def __init__(self, a=10):
1472 self.a = a
1519 self.a = a
1473
1520
1474 def square(self):
1521 def square(self):
1475 print('compute square')
1522 print('compute square')
1476 return self.a*self.a
1523 return self.a*self.a
1477
1524
1478 # def cube(self):
1525 # def cube(self):
1479 # print('compute cube')
1526 # print('compute cube')
1480 # return self.a*self.a*self.a
1527 # return self.a*self.a*self.a
1481
1528
1482
1529
1483
1530
1484
1531
1485 Misc
1532 Misc
1486 ----
1533 ----
1487
1534
1488 The autoindent feature that was deprecated in 5.x was re-enabled and
1535 The autoindent feature that was deprecated in 5.x was re-enabled and
1489 un-deprecated in :ghpull:`11257`
1536 un-deprecated in :ghpull:`11257`
1490
1537
1491 Make :magic:`%run -n -i ... <run>` work correctly. Earlier, if :magic:`%run` was
1538 Make :magic:`%run -n -i ... <run>` work correctly. Earlier, if :magic:`%run` was
1492 passed both arguments, ``-n`` would be silently ignored. See :ghpull:`10308`
1539 passed both arguments, ``-n`` would be silently ignored. See :ghpull:`10308`
1493
1540
1494
1541
1495 The :cellmagic:`%%script` (as well as :cellmagic:`%%bash`,
1542 The :cellmagic:`%%script` (as well as :cellmagic:`%%bash`,
1496 :cellmagic:`%%ruby`... ) cell magics now raise by default if the return code of
1543 :cellmagic:`%%ruby`... ) cell magics now raise by default if the return code of
1497 the given code is non-zero (thus halting execution of further cells in a
1544 the given code is non-zero (thus halting execution of further cells in a
1498 notebook). The behavior can be disable by passing the ``--no-raise-error`` flag.
1545 notebook). The behavior can be disable by passing the ``--no-raise-error`` flag.
1499
1546
1500
1547
1501 Deprecations
1548 Deprecations
1502 ------------
1549 ------------
1503
1550
1504 A couple of unused functions and methods have been deprecated and will be removed
1551 A couple of unused functions and methods have been deprecated and will be removed
1505 in future versions:
1552 in future versions:
1506
1553
1507 - ``IPython.utils.io.raw_print_err``
1554 - ``IPython.utils.io.raw_print_err``
1508 - ``IPython.utils.io.raw_print``
1555 - ``IPython.utils.io.raw_print``
1509
1556
1510
1557
1511 Backwards incompatible changes
1558 Backwards incompatible changes
1512 ------------------------------
1559 ------------------------------
1513
1560
1514 * The API for transforming input before it is parsed as Python code has been
1561 * The API for transforming input before it is parsed as Python code has been
1515 completely redesigned: any custom input transformations will need to be
1562 completely redesigned: any custom input transformations will need to be
1516 rewritten. See :doc:`/config/inputtransforms` for details of the new API.
1563 rewritten. See :doc:`/config/inputtransforms` for details of the new API.
General Comments 0
You need to be logged in to leave comments. Login now