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