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