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