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