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