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