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