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