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