##// END OF EJS Templates
Whats new 8.29 (#14560)
M Bussonnier -
r28931:b2fc3082 merge
parent child Browse files
Show More
@@ -1,2406 +1,2442
1 ============
1 ============
2 8.x Series
2 8.x Series
3 ============
3 ============
4
4
5 .. _version 8.29:
5 .. _version 8.29:
6
6
7 IPython 8.29
7 IPython 8.29
8 ============
8 ============
9
9
10 Medium release for this end of october;
10
11
12 - Misc Python 3.13 compatibility :ghpull:`14536`, :ghpull:`14559`
13 - Add a ``uv`` line magic :ghpull:`14537`
11 - Add support for WEBP to ``IPython.display.Image``. :ghpull:`14526`
14 - Add support for WEBP to ``IPython.display.Image``. :ghpull:`14526`
15 - And many more bugfixes and quality of life improvements.
16
17 As usual you can find the full list of PRs on GitHub under `the 8.29
18 <https://github.com/ipython/ipython/milestone/136?closed=1>`__ milestone.
19
20 Preparing for 9.0
21 -----------------
22
23 IPython 3.13 was released earlier this month, and this means that according to
24 `Spec-0 <https://scientific-python.org/specs/spec-0000/>`__, support for 3.10
25 will end soon.
26
27 There have been many minor version of IPython 8.x, so it is likely that one of
28 the next version will simply bump to 9.0 and remove a lot of code mark as
29 deprecated, and documentation/examples not relevant for terminal IPython.
30
31 The frequency of release and my time reviewing will also likely decrease more
32 than it has already.
33
34
35 For something completely different
36 ----------------------------------
37
38 `Rosalind Franklin <https://en.wikipedia.org/wiki/Rosalind_Franklin>`__ made
39 some of the biggest contribution to the discovery of the helix structure of DNA.
40 Unfortunately her work was `not recognized
41 <https://www.nature.com/scitable/topicpage/rosalind-franklin-a-crucial-contribution-6538012/>`__
42
43 Thanks
44 ------
45
46 Thanks as well to the `D. E. Shaw group <https://deshaw.com/>`__ for sponsoring
47 work on IPython and related libraries.
12
48
13 .. _version 8.28:
49 .. _version 8.28:
14
50
15 IPython 8.28
51 IPython 8.28
16 ============
52 ============
17
53
18 Slight delay of this September release as I was busy at Pydata Paris last week.
54 Slight delay of this September release as I was busy at Pydata Paris last week.
19 Not many user visible changes for this release, a couple of bug fixes and
55 Not many user visible changes for this release, a couple of bug fixes and
20 workaround:
56 workaround:
21
57
22 - :ghpull:`14480` AssertionError: assert _xterm_term_title_saved in WSL – It is
58 - :ghpull:`14480` AssertionError: assert _xterm_term_title_saved in WSL – It is
23 unclear why the terminal title is not saved in WSL, if you've WSL experience
59 unclear why the terminal title is not saved in WSL, if you've WSL experience
24 we'd love your feedback and help to not just ignore an error
60 we'd love your feedback and help to not just ignore an error
25 - :ghpull:`14510` Fix use of pyside6 >= 6.7.0
61 - :ghpull:`14510` Fix use of pyside6 >= 6.7.0
26 - :ghpull:`14518` Make values public (_tb_highlight & _tb_highlight_style)
62 - :ghpull:`14518` Make values public (_tb_highlight & _tb_highlight_style)
27 - :ghpull:`14515` Use environment variable to identify conda / mamba
63 - :ghpull:`14515` Use environment variable to identify conda / mamba
28
64
29
65
30 As usual you can find the full list of PRs on GitHub under `the 8.28
66 As usual you can find the full list of PRs on GitHub under `the 8.28
31 <https://github.com/ipython/ipython/milestone/135?closed=1>`__ milestone.
67 <https://github.com/ipython/ipython/milestone/135?closed=1>`__ milestone.
32
68
33 For something completely different
69 For something completely different
34 ----------------------------------
70 ----------------------------------
35
71
36 One of the first works of Science Fiction (`Frankenstein
72 One of the first works of Science Fiction (`Frankenstein
37 <https://en.wikipedia.org/wiki/Frankenstein>`__), was written by `Mary Shelley
73 <https://en.wikipedia.org/wiki/Frankenstein>`__), was written by `Mary Shelley
38 <https://en.wikipedia.org/wiki/Mary_Shelley>`__ when she was 18, before being
74 <https://en.wikipedia.org/wiki/Mary_Shelley>`__ when she was 18, before being
39 published in London on 1 January 1818 when she was 20. This is often overlooked,
75 published in London on 1 January 1818 when she was 20. This is often overlooked,
40 and the role of founders of science fiction attribute to Edgar Allan Poe and
76 and the role of founders of science fiction attribute to Edgar Allan Poe and
41 Jules Verne despite being published later.
77 Jules Verne despite being published later.
42
78
43 Thanks
79 Thanks
44 ------
80 ------
45
81
46 Thanks as well to the `D. E. Shaw group <https://deshaw.com/>`__ for sponsoring
82 Thanks as well to the `D. E. Shaw group <https://deshaw.com/>`__ for sponsoring
47 work on IPython and related libraries.
83 work on IPython and related libraries.
48
84
49
85
50 .. _version 8.27:
86 .. _version 8.27:
51
87
52 IPython 8.27
88 IPython 8.27
53 ============
89 ============
54
90
55 New release of IPython after a month off (not enough changes). We can see a few
91 New release of IPython after a month off (not enough changes). We can see a few
56 important changes for this release.
92 important changes for this release.
57
93
58 - autocall was being call getitem, :ghpull:`14486`
94 - autocall was being call getitem, :ghpull:`14486`
59 - Only copy files in startup dir if we just created it. :ghpull:`14497`
95 - Only copy files in startup dir if we just created it. :ghpull:`14497`
60 - Fix some tests on Python 3.13 RC1 :ghpull:`14504`; this one I guess make this
96 - Fix some tests on Python 3.13 RC1 :ghpull:`14504`; this one I guess make this
61 the first IPython release officially compatible with Python 3.13; you will
97 the first IPython release officially compatible with Python 3.13; you will
62 need the most recent ``executing`` and ``stack_data``, we won't pin to avoid
98 need the most recent ``executing`` and ``stack_data``, we won't pin to avoid
63 forcing user of older Python version to upgrade.
99 forcing user of older Python version to upgrade.
64
100
65
101
66 As usual you can find the full list of PRs on GitHub under `the 8.27
102 As usual you can find the full list of PRs on GitHub under `the 8.27
67 <https://github.com/ipython/ipython/milestone/134?closed=1>`__ milestone.
103 <https://github.com/ipython/ipython/milestone/134?closed=1>`__ milestone.
68
104
69 Thanks
105 Thanks
70 ------
106 ------
71
107
72 Many thanks to `@Kleirre <https://github.com/Kleirre>`__ our June intern for
108 Many thanks to `@Kleirre <https://github.com/Kleirre>`__ our June intern for
73 doing her first contribution to open source, doing the releases notes and
109 doing her first contribution to open source, doing the releases notes and
74 release. I guess you didn't even notice it was not me who released :-). I wish
110 release. I guess you didn't even notice it was not me who released :-). I wish
75 her all the best in her future endeavor and look forward for her work in
111 her all the best in her future endeavor and look forward for her work in
76 astrophysics.
112 astrophysics.
77
113
78 Thanks as well to the `D. E. Shaw group <https://deshaw.com/>`__ for sponsoring
114 Thanks as well to the `D. E. Shaw group <https://deshaw.com/>`__ for sponsoring
79 work on IPython and related libraries.
115 work on IPython and related libraries.
80
116
81 .. _version 8.26:
117 .. _version 8.26:
82
118
83 IPython 8.26
119 IPython 8.26
84 ============
120 ============
85
121
86 Hey, the release of IPython for this month is here! (I know you were waiting for it)
122 Hey, the release of IPython for this month is here! (I know you were waiting for it)
87
123
88 - :ghpull:`14453` bugfix for call to structured_traceback
124 - :ghpull:`14453` bugfix for call to structured_traceback
89
125
90 - :ghpull:`14466` fixed honoring custom repr for NamedTuple if assigned by partialmethod
126 - :ghpull:`14466` fixed honoring custom repr for NamedTuple if assigned by partialmethod
91
127
92 - :ghpull:`14451` Convert matplotlib gui name in enable_gui
128 - :ghpull:`14451` Convert matplotlib gui name in enable_gui
93
129
94 As usual you can find the full list of PRs on GitHub under `the 8.26
130 As usual you can find the full list of PRs on GitHub under `the 8.26
95 <https://github.com/ipython/ipython/milestone/133?closed=1>`__ milestone.
131 <https://github.com/ipython/ipython/milestone/133?closed=1>`__ milestone.
96
132
97 Thanks
133 Thanks
98 ------
134 ------
99
135
100 Thanks to the `D. E. Shaw group <https://deshaw.com/>`__ for sponsoring
136 Thanks to the `D. E. Shaw group <https://deshaw.com/>`__ for sponsoring
101 work on IPython and related libraries.
137 work on IPython and related libraries.
102
138
103
139
104 .. _version 8.25:
140 .. _version 8.25:
105
141
106 IPython 8.25
142 IPython 8.25
107 ============
143 ============
108
144
109 Mostly internal changes for this end of may release of IPython.
145 Mostly internal changes for this end of may release of IPython.
110
146
111 We'll count about a dozen PRs for this moth, with small bugfixes related to
147 We'll count about a dozen PRs for this moth, with small bugfixes related to
112 matplotlib fixes.
148 matplotlib fixes.
113
149
114 Of notable interest,
150 Of notable interest,
115
151
116 - :ghpull:`14426` replaces the unicode micro symbol with greek letter mu,
152 - :ghpull:`14426` replaces the unicode micro symbol with greek letter mu,
117 visually identical but should fix nfkc normalisations issues.
153 visually identical but should fix nfkc normalisations issues.
118
154
119 - :ghpull:`14444` introduces ``intersphinx_registry`` as a new dependency
155 - :ghpull:`14444` introduces ``intersphinx_registry`` as a new dependency
120 which is recommended only to build documentation.
156 which is recommended only to build documentation.
121
157
122 As usual you can find the full list of PRs on GitHub under `the 8.25
158 As usual you can find the full list of PRs on GitHub under `the 8.25
123 <https://github.com/ipython/ipython/milestone/132?closed=1>`__ milestone.
159 <https://github.com/ipython/ipython/milestone/132?closed=1>`__ milestone.
124
160
125 Thanks
161 Thanks
126 ------
162 ------
127
163
128 Thanks to the `D. E. Shaw group <https://deshaw.com/>`__ for sponsoring
164 Thanks to the `D. E. Shaw group <https://deshaw.com/>`__ for sponsoring
129 work on IPython and related libraries.
165 work on IPython and related libraries.
130
166
131
167
132 .. _version 8.24:
168 .. _version 8.24:
133
169
134 IPython 8.24
170 IPython 8.24
135 ============
171 ============
136
172
137 Back on regular release schedule, as usual month releases are relatively tiny.
173 Back on regular release schedule, as usual month releases are relatively tiny.
138
174
139 The biggest change is the move of the matplotlib backend handling from IPython
175 The biggest change is the move of the matplotlib backend handling from IPython
140 to matplotlib. :ghpull:`14371` :ghpull:`14403`.
176 to matplotlib. :ghpull:`14371` :ghpull:`14403`.
141
177
142 We will note:
178 We will note:
143
179
144 - pytest 8 compatibility :ghpull:`14413`
180 - pytest 8 compatibility :ghpull:`14413`
145 - ``typing-extension`` now needs 4.6 or newer. It was already the case, but not
181 - ``typing-extension`` now needs 4.6 or newer. It was already the case, but not
146 explicated. :ghpull:`14380`
182 explicated. :ghpull:`14380`
147 - Attempt to speed running code under debugger in some cases. :ghpull:`14386`
183 - Attempt to speed running code under debugger in some cases. :ghpull:`14386`
148 :ghpull:`14418`.
184 :ghpull:`14418`.
149 - Multiple fixes to documentation for ipyparallel, simple_prompt and emacs
185 - Multiple fixes to documentation for ipyparallel, simple_prompt and emacs
150 :ghpull:`14384` :ghpull:`14404` :ghpull:`14407`
186 :ghpull:`14384` :ghpull:`14404` :ghpull:`14407`
151 - Maintenance and cleanup of debugger :ghpull:`14387` :ghpull:`14393`
187 - Maintenance and cleanup of debugger :ghpull:`14387` :ghpull:`14393`
152
188
153 As usual you can find the full list of PRs on GitHub under `the 8.24
189 As usual you can find the full list of PRs on GitHub under `the 8.24
154 <https://github.com/ipython/ipython/milestone/131?closed=1>`__ milestone.
190 <https://github.com/ipython/ipython/milestone/131?closed=1>`__ milestone.
155
191
156 Thanks
192 Thanks
157 ------
193 ------
158
194
159 Thanks to the `D. E. Shaw group <https://deshaw.com/>`__ for sponsoring
195 Thanks to the `D. E. Shaw group <https://deshaw.com/>`__ for sponsoring
160 work on IPython and related libraries.
196 work on IPython and related libraries.
161
197
162
198
163 .. _version 8.23:
199 .. _version 8.23:
164
200
165 IPython 8.23
201 IPython 8.23
166 ============
202 ============
167
203
168 Super tiny release of IPython on Sunday – a bit later than usual, which is also
204 Super tiny release of IPython on Sunday – a bit later than usual, which is also
169 `πŸ³οΈβ€βš§οΈ International Transgender Day of VisibilityπŸ³οΈβ€βš§οΈ
205 `πŸ³οΈβ€βš§οΈ International Transgender Day of VisibilityπŸ³οΈβ€βš§οΈ
170 <https://en.wikipedia.org/wiki/International_Transgender_Day_of_Visibility>`_ –
206 <https://en.wikipedia.org/wiki/International_Transgender_Day_of_Visibility>`_ –
171 so a though for you on this day, you matter and you are valid [1]_.
207 so a though for you on this day, you matter and you are valid [1]_.
172
208
173 This is a minuscule release with only 5 Pull requests.
209 This is a minuscule release with only 5 Pull requests.
174
210
175 Main change is :ghpull:`14357` which improve inference from return type
211 Main change is :ghpull:`14357` which improve inference from return type
176 annotations in completer and the introduction of the optional target
212 annotations in completer and the introduction of the optional target
177 ``ipython[matplotlib]`` to explicitly request the matplotlib optional
213 ``ipython[matplotlib]`` to explicitly request the matplotlib optional
178 dependencies.
214 dependencies.
179
215
180 As usual you can find the full list of PRs on GitHub under `the 8.23
216 As usual you can find the full list of PRs on GitHub under `the 8.23
181 <https://github.com/ipython/ipython/milestone/130?closed=1>`__ milestone.
217 <https://github.com/ipython/ipython/milestone/130?closed=1>`__ milestone.
182
218
183 Thanks
219 Thanks
184 ------
220 ------
185
221
186 Thanks to the `D. E. Shaw group <https://deshaw.com/>`__ for sponsoring
222 Thanks to the `D. E. Shaw group <https://deshaw.com/>`__ for sponsoring
187 work on IPython and related libraries.
223 work on IPython and related libraries.
188
224
189
225
190 .. _version 8.22:
226 .. _version 8.22:
191
227
192 IPython 8.22, 8.22.1 and 8.22.2
228 IPython 8.22, 8.22.1 and 8.22.2
193 ===============================
229 ===============================
194
230
195 Quick release of IPython for this short month of February, with quite a bit of
231 Quick release of IPython for this short month of February, with quite a bit of
196 activity with more than 15 PRs.
232 activity with more than 15 PRs.
197
233
198 I am not going to details all the changes, but among other we have :
234 I am not going to details all the changes, but among other we have :
199
235
200 - More compatibility with emscripten :ghpull:`14316`, :ghpull:`14318`,
236 - More compatibility with emscripten :ghpull:`14316`, :ghpull:`14318`,
201 - Test more downstream project to avoid breakage :ghpull:`14317`
237 - Test more downstream project to avoid breakage :ghpull:`14317`
202 - Fix recently introduced bug with the ``store`` magic.
238 - Fix recently introduced bug with the ``store`` magic.
203 - Fix issues with multiple call to ``matplotlib.pyplot.switch_backend``
239 - Fix issues with multiple call to ``matplotlib.pyplot.switch_backend``
204 - Fix crashing IPython when some tracebacks encounter dynamically evaluated
240 - Fix crashing IPython when some tracebacks encounter dynamically evaluated
205 code.
241 code.
206
242
207 IPython 8.22.1 increase the minimal traitlets version, and 8.22.2 fix a critical
243 IPython 8.22.1 increase the minimal traitlets version, and 8.22.2 fix a critical
208 bug on emscripten preventing to use some magics like ``%matplotlib`` on
244 bug on emscripten preventing to use some magics like ``%matplotlib`` on
209 jupyter-light.
245 jupyter-light.
210
246
211 API changes
247 API changes
212 -----------
248 -----------
213
249
214 One of the largest change is the update the mimehooks and inspector API, see
250 One of the largest change is the update the mimehooks and inspector API, see
215 :ghpull:`14342`. It should be backward compatible, but many hooks now receive a
251 :ghpull:`14342`. It should be backward compatible, but many hooks now receive a
216 single object with many fields allowing us flexibility to update the API later.
252 single object with many fields allowing us flexibility to update the API later.
217
253
218
254
219 Packaging changes
255 Packaging changes
220 -----------------
256 -----------------
221
257
222 Thanks to `@mkoppe <https://github.com/mkoeppe>`__, we are slowly getting rid of
258 Thanks to `@mkoppe <https://github.com/mkoeppe>`__, we are slowly getting rid of
223 setup.py finally migrating to ``pyproject.toml``. There is still quite a bit of
259 setup.py finally migrating to ``pyproject.toml``. There is still quite a bit of
224 work, and please open an issue if you encounter any problem.
260 work, and please open an issue if you encounter any problem.
225
261
226
262
227 Deprecation
263 Deprecation
228 -----------
264 -----------
229
265
230 A number of unused functions have been marked deprecated or pending deprecation.
266 A number of unused functions have been marked deprecated or pending deprecation.
231 Please let us know if you encounter any of those deprecation messages for us to
267 Please let us know if you encounter any of those deprecation messages for us to
232 adjust the removal timeline.
268 adjust the removal timeline.
233
269
234
270
235 Thanks
271 Thanks
236 ------
272 ------
237
273
238 Many thanks to `@mkoppe <https://github.com/mkoeppe>`__ and `@krassowski
274 Many thanks to `@mkoppe <https://github.com/mkoeppe>`__ and `@krassowski
239 <https://github.com/krassowski>`__ for their multiple contributions and codebase
275 <https://github.com/krassowski>`__ for their multiple contributions and codebase
240 cleanup.
276 cleanup.
241
277
242 As usual you can find the full list of PRs on GitHub under `the 8.22
278 As usual you can find the full list of PRs on GitHub under `the 8.22
243 <https://github.com/ipython/ipython/milestone/129?closed=1>`__ milestone.
279 <https://github.com/ipython/ipython/milestone/129?closed=1>`__ milestone.
244
280
245 Thanks to the `D. E. Shaw group <https://deshaw.com/>`__ for sponsoring
281 Thanks to the `D. E. Shaw group <https://deshaw.com/>`__ for sponsoring
246 work on IPython and related libraries.
282 work on IPython and related libraries.
247
283
248
284
249 .. _version 8.21:
285 .. _version 8.21:
250
286
251 IPython 8.21
287 IPython 8.21
252 ------------
288 ------------
253
289
254 More substantial release of IPython slightly out of schedule as it was not
290 More substantial release of IPython slightly out of schedule as it was not
255 possible for me to make a release last Friday.
291 possible for me to make a release last Friday.
256
292
257 Few new features are present, but the codebase has been cleaned, and a couple
293 Few new features are present, but the codebase has been cleaned, and a couple
258 of API are _considered_ for deprecation. They are not deprecated yet, but as
294 of API are _considered_ for deprecation. They are not deprecated yet, but as
259 they do not seem to be quite used, they may emit a warning, in which case please
295 they do not seem to be quite used, they may emit a warning, in which case please
260 comment on the relevant issue to inform me of _which_ project use those feature
296 comment on the relevant issue to inform me of _which_ project use those feature
261 and how you use them. Depending on the feedback I might change the timeline for
297 and how you use them. Depending on the feedback I might change the timeline for
262 deprecation.
298 deprecation.
263
299
264 This release saw 14 PRs, with more outside contribution than usual,
300 This release saw 14 PRs, with more outside contribution than usual,
265 I'll note in particular PRs related to making IPython work on emscripten.
301 I'll note in particular PRs related to making IPython work on emscripten.
266
302
267 I also want to point that we are _trying_ to keep compatibility with Python 3.13,
303 I also want to point that we are _trying_ to keep compatibility with Python 3.13,
268 but it's a cat and mouse game. Plus I am low on time, so I would appreciate any
304 but it's a cat and mouse game. Plus I am low on time, so I would appreciate any
269 help with that.
305 help with that.
270
306
271 Deprecations
307 Deprecations
272 ~~~~~~~~~~~~
308 ~~~~~~~~~~~~
273
309
274 - :ghpull:`14307` Pending Deprecation of
310 - :ghpull:`14307` Pending Deprecation of
275 ``ColorSchemeTable.set_active_scheme(...)``'s ``case_sensitive`` Parameter.
311 ``ColorSchemeTable.set_active_scheme(...)``'s ``case_sensitive`` Parameter.
276 - :ghpull:`14305` Pending Deprecation of constructing ``ColorScheme`` via
312 - :ghpull:`14305` Pending Deprecation of constructing ``ColorScheme`` via
277 ``kwargs``, in favor passing a single dict.
313 ``kwargs``, in favor passing a single dict.
278
314
279
315
280 Fixes
316 Fixes
281 ~~~~~
317 ~~~~~
282
318
283 - :ghpull:`14284` TerminalIPythonApp's would warn that ``auto_create`` option is not
319 - :ghpull:`14284` TerminalIPythonApp's would warn that ``auto_create`` option is not
284 recognized.
320 recognized.
285 - :ghpull:`14286` Fix a crash with ``NotOneValueFound`` when rendering complex
321 - :ghpull:`14286` Fix a crash with ``NotOneValueFound`` when rendering complex
286 tracebacks.
322 tracebacks.
287
323
288 - :ghpull:`14287` Partial Python 3.13 compatibility
324 - :ghpull:`14287` Partial Python 3.13 compatibility
289 - :ghpull:`14290` Docs/Typos.
325 - :ghpull:`14290` Docs/Typos.
290
326
291 Changes
327 Changes
292 ~~~~~~~
328 ~~~~~~~
293
329
294 - :ghpull:`14289` ``ipdb.set_trace()`` now accepts ``header=`` for better
330 - :ghpull:`14289` ``ipdb.set_trace()`` now accepts ``header=`` for better
295 compatibility with ``pdb.set_trace()``
331 compatibility with ``pdb.set_trace()``
296
332
297 - :ghpull:`14300` and :ghpull:`14301` Add hooking ability to produce
333 - :ghpull:`14300` and :ghpull:`14301` Add hooking ability to produce
298 mimebundle.
334 mimebundle.
299
335
300 We'll outline :ghpull:`14300`, it is now possible to extend the ``?/??``
336 We'll outline :ghpull:`14300`, it is now possible to extend the ``?/??``
301 operator to return more mimetypes to render richer help in frontends that
337 operator to return more mimetypes to render richer help in frontends that
302 support it. In particular you could send a json representation of the help that
338 support it. In particular you could send a json representation of the help that
303 could be displayed in a customizable way.
339 could be displayed in a customizable way.
304
340
305 Miscellaneous
341 Miscellaneous
306 ~~~~~~~~~~~~~
342 ~~~~~~~~~~~~~
307
343
308 - :ghpull:`14291` Misc Refactor of Color handling
344 - :ghpull:`14291` Misc Refactor of Color handling
309 - :ghpull:`14295` Misc test skip on problematic Pypy versions.
345 - :ghpull:`14295` Misc test skip on problematic Pypy versions.
310
346
311
347
312 Thanks
348 Thanks
313 ~~~~~~
349 ~~~~~~
314
350
315 Special thanks to all our contributors, and to the Pypy team that was extremely
351 Special thanks to all our contributors, and to the Pypy team that was extremely
316 reactive in helping to investigate a fixing a rare unicode+windows bug.
352 reactive in helping to investigate a fixing a rare unicode+windows bug.
317
353
318 As usual you can find the full list of PRs on GitHub under `the 8.21
354 As usual you can find the full list of PRs on GitHub under `the 8.21
319 <https://github.com/ipython/ipython/milestone/128?closed=1>`__ milestone.
355 <https://github.com/ipython/ipython/milestone/128?closed=1>`__ milestone.
320
356
321 Thanks to the `D. E. Shaw group <https://deshaw.com/>`__ for sponsoring
357 Thanks to the `D. E. Shaw group <https://deshaw.com/>`__ for sponsoring
322 work on IPython and related libraries.
358 work on IPython and related libraries.
323
359
324
360
325 .. _version 8.20:
361 .. _version 8.20:
326
362
327 IPython 8.20
363 IPython 8.20
328 ------------
364 ------------
329
365
330 Quick IPython release in this beginning of 2024, barely 2 weeks after the previous
366 Quick IPython release in this beginning of 2024, barely 2 weeks after the previous
331 release.
367 release.
332
368
333 This is mostly to fix a backward compatibility issue, I would have done a patch
369 This is mostly to fix a backward compatibility issue, I would have done a patch
334 release earlier if I could. As a few other cleanup are also part of this
370 release earlier if I could. As a few other cleanup are also part of this
335 release, this will get a minor version bump.
371 release, this will get a minor version bump.
336
372
337
373
338 The crux of this release is :ghpull:`14274` (Inspect continuation prompt
374 The crux of this release is :ghpull:`14274` (Inspect continuation prompt
339 signature and pass only viable arguments), the rest of the changes are mostly
375 signature and pass only viable arguments), the rest of the changes are mostly
340 type annotation, and a few compatibility issues with Python 3.13 that are
376 type annotation, and a few compatibility issues with Python 3.13 that are
341 getting addressed.
377 getting addressed.
342
378
343 Python 3.13 compatibility is still not complete (help welcomed).
379 Python 3.13 compatibility is still not complete (help welcomed).
344
380
345 As usual you can find the full list of PRs on GitHub under `the 8.20
381 As usual you can find the full list of PRs on GitHub under `the 8.20
346 <https://github.com/ipython/ipython/milestone/127?closed=1>`__ milestone.
382 <https://github.com/ipython/ipython/milestone/127?closed=1>`__ milestone.
347
383
348 Thanks to the `D. E. Shaw group <https://deshaw.com/>`__ for sponsoring
384 Thanks to the `D. E. Shaw group <https://deshaw.com/>`__ for sponsoring
349 work on IPython and related libraries.
385 work on IPython and related libraries.
350
386
351
387
352 .. _version 8.19:
388 .. _version 8.19:
353
389
354 IPython 8.19
390 IPython 8.19
355 ------------
391 ------------
356
392
357 New release of IPython a bit before the end of the month, and end of the year.
393 New release of IPython a bit before the end of the month, and end of the year.
358
394
359 Mostly cleanup and deprecation, due to upstream deprecation and removal.
395 Mostly cleanup and deprecation, due to upstream deprecation and removal.
360
396
361 Remove of Python 3.9 support
397 Remove of Python 3.9 support
362 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~
398 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~
363
399
364 A bit later than originally plan, IPython 8.19 does not support Python 3.9
400 A bit later than originally plan, IPython 8.19 does not support Python 3.9
365 anymore, as well as the few conditional code that were executing only on Python
401 anymore, as well as the few conditional code that were executing only on Python
366 3.9. :ghpull:`14254`
402 3.9. :ghpull:`14254`
367
403
368 We used the opportunity to deprecate ``IPython.utils.tz`` :ghpull:`14256`, due
404 We used the opportunity to deprecate ``IPython.utils.tz`` :ghpull:`14256`, due
369 to upstream deprecation of some timezone utilities. It will be removed at a later
405 to upstream deprecation of some timezone utilities. It will be removed at a later
370 date.
406 date.
371
407
372 We now also run CI on Python 3.12 (what I likely should have done before), but
408 We now also run CI on Python 3.12 (what I likely should have done before), but
373 running on too many Python version uses a lot of CI time.
409 running on too many Python version uses a lot of CI time.
374
410
375 Absolute and relative Line Numbers in Prompts
411 Absolute and relative Line Numbers in Prompts
376 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
412 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
377
413
378 Thanks to the contribution of ``cohml``, IPython CLI now support absolute and
414 Thanks to the contribution of ``cohml``, IPython CLI now support absolute and
379 relative line numbers in both vi and emacs prompt, use for example
415 relative line numbers in both vi and emacs prompt, use for example
380 ``c.TerminalInteractiveShell.prompt_line_number_format='{line: 4d}/{rel_line:+03d} | '``
416 ``c.TerminalInteractiveShell.prompt_line_number_format='{line: 4d}/{rel_line:+03d} | '``
381 configuration option to display both in a custom format.
417 configuration option to display both in a custom format.
382
418
383 Miscellaneous
419 Miscellaneous
384 ~~~~~~~~~~~~~
420 ~~~~~~~~~~~~~
385
421
386 In addition to various bugfixes, I unpinned pytest, let me know if there are any
422 In addition to various bugfixes, I unpinned pytest, let me know if there are any
387 issues and we'll re-pin.
423 issues and we'll re-pin.
388
424
389 See you in 2024
425 See you in 2024
390 ~~~~~~~~~~~~~~~
426 ~~~~~~~~~~~~~~~
391
427
392 As usual you can find the full list of PRs on GitHub under `the 8.19
428 As usual you can find the full list of PRs on GitHub under `the 8.19
393 <https://github.com/ipython/ipython/milestone/126?closed=1>`__ milestone.
429 <https://github.com/ipython/ipython/milestone/126?closed=1>`__ milestone.
394
430
395 Thanks to the `D. E. Shaw group <https://deshaw.com/>`__ for sponsoring
431 Thanks to the `D. E. Shaw group <https://deshaw.com/>`__ for sponsoring
396 work on IPython and related libraries.
432 work on IPython and related libraries.
397
433
398 .. _version 8.18:
434 .. _version 8.18:
399
435
400 IPython 8.18 and 8.18.1
436 IPython 8.18 and 8.18.1
401 -----------------------
437 -----------------------
402
438
403 8.18.1 is identical to 8.18 but pin ``prompt_toolkit`` to greater than ``3.0.41``
439 8.18.1 is identical to 8.18 but pin ``prompt_toolkit`` to greater than ``3.0.41``
404
440
405 Small release of IPython that fixes a small number of inconveniences.
441 Small release of IPython that fixes a small number of inconveniences.
406
442
407 - :ghpull:`14251` Fix a memory leak in qt event loop integration by setting
443 - :ghpull:`14251` Fix a memory leak in qt event loop integration by setting
408 the Loop parent to None.
444 the Loop parent to None.
409 - :ghpull:`14252` Pickleshare was made an optional dependency in 8.17, this
445 - :ghpull:`14252` Pickleshare was made an optional dependency in 8.17, this
410 leads to warnings in some installations when using modules completions. The
446 leads to warnings in some installations when using modules completions. The
411 warning has been silenced.
447 warning has been silenced.
412 - :ghpull:`14241` Update event loop code for compatibility with more recent
448 - :ghpull:`14241` Update event loop code for compatibility with more recent
413 ``prompt_toolkit`` due to deprecations in Python 3.12.
449 ``prompt_toolkit`` due to deprecations in Python 3.12.
414 - :ghpull:`14245` Fix doc example on Pygments styles
450 - :ghpull:`14245` Fix doc example on Pygments styles
415 - :ghpull:`14238` Remove dependency on app_nope, this is actually only a
451 - :ghpull:`14238` Remove dependency on app_nope, this is actually only a
416 dependency of IPykernel.
452 dependency of IPykernel.
417
453
418 As usual you can find the full list of PRs on GitHub under `the 8.18
454 As usual you can find the full list of PRs on GitHub under `the 8.18
419 <https://github.com/ipython/ipython/milestone/125?closed=1>`__ milestone.
455 <https://github.com/ipython/ipython/milestone/125?closed=1>`__ milestone.
420
456
421 Thanks to the `D. E. Shaw group <https://deshaw.com/>`__ for sponsoring
457 Thanks to the `D. E. Shaw group <https://deshaw.com/>`__ for sponsoring
422 work on IPython and related libraries.
458 work on IPython and related libraries.
423
459
424 .. _version 8.17.1:
460 .. _version 8.17.1:
425 .. _version 8.17:
461 .. _version 8.17:
426
462
427 IPython 8.17, 8.17.1
463 IPython 8.17, 8.17.1
428 --------------------
464 --------------------
429
465
430 Medium-sized release of IPython that includes some cleanup (backcall, python2 leftovers)
466 Medium-sized release of IPython that includes some cleanup (backcall, python2 leftovers)
431 and some refactoring improvements (typing, pathlib) and a fix on completion.
467 and some refactoring improvements (typing, pathlib) and a fix on completion.
432
468
433 - :ghpull:`14216` remove backcall dependency
469 - :ghpull:`14216` remove backcall dependency
434 - :ghpull:`14217` make pickleshare dependency optional
470 - :ghpull:`14217` make pickleshare dependency optional
435 - :ghpull:`14185` support completion based on type annotations of calls
471 - :ghpull:`14185` support completion based on type annotations of calls
436
472
437 Reverted in 8.17.1:
473 Reverted in 8.17.1:
438
474
439 - :ghpull:`14190` remove support for python 2 in lexers (reverted in 8.17.1 as it is imported by qtconsole/spyder)
475 - :ghpull:`14190` remove support for python 2 in lexers (reverted in 8.17.1 as it is imported by qtconsole/spyder)
440
476
441
477
442 Mamba and Micromamba magic commands
478 Mamba and Micromamba magic commands
443 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
479 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
444
480
445 In addition to the ``%conda`` magic command for calling ``conda`` in IPython,
481 In addition to the ``%conda`` magic command for calling ``conda`` in IPython,
446 the ``%mamba`` and ``%micromamba`` magic commands now
482 the ``%mamba`` and ``%micromamba`` magic commands now
447 call ``mamba`` and ``micromamba`` if they are on ``sys.path``.
483 call ``mamba`` and ``micromamba`` if they are on ``sys.path``.
448
484
449 .. code::
485 .. code::
450
486
451 %mamba install pkgname
487 %mamba install pkgname
452 %micromamba install pkgname
488 %micromamba install pkgname
453 %conda install pkgname
489 %conda install pkgname
454 %pip install pkgname
490 %pip install pkgname
455
491
456 %mamba --help
492 %mamba --help
457 %micromamba --help
493 %micromamba --help
458 %conda --help
494 %conda --help
459 %pip --help # works w/ JupyterLite
495 %pip --help # works w/ JupyterLite
460 !pip --help
496 !pip --help
461
497
462
498
463 :ghpull:`14191`
499 :ghpull:`14191`
464
500
465 ----
501 ----
466
502
467 As usual you can find the full list of PRs on GitHub under `the 8.17
503 As usual you can find the full list of PRs on GitHub under `the 8.17
468 <https://github.com/ipython/ipython/milestone/123?closed=1>`__ milestone.
504 <https://github.com/ipython/ipython/milestone/123?closed=1>`__ milestone.
469
505
470 Thanks to the `D. E. Shaw group <https://deshaw.com/>`__ for sponsoring
506 Thanks to the `D. E. Shaw group <https://deshaw.com/>`__ for sponsoring
471 work on IPython and related libraries.
507 work on IPython and related libraries.
472
508
473 .. _version 8.16:
509 .. _version 8.16:
474 .. _version 8.16.1:
510 .. _version 8.16.1:
475
511
476 IPython 8.16, 8.16.1
512 IPython 8.16, 8.16.1
477 --------------------
513 --------------------
478
514
479 Small double release of IPython (with the 8.12.3 release notes just below).
515 Small double release of IPython (with the 8.12.3 release notes just below).
480 Mostly bug fixes and cleanups, and type annotations. Of interest for users:
516 Mostly bug fixes and cleanups, and type annotations. Of interest for users:
481
517
482 - :ghpull:`14153` Fix a bug of the new iPdb chained traceback where some
518 - :ghpull:`14153` Fix a bug of the new iPdb chained traceback where some
483 Exception would not have any traceback. (see upstream fix in CPython for more
519 Exception would not have any traceback. (see upstream fix in CPython for more
484 details).
520 details).
485 - :ghpull:`14168` Fix case with spurious message about event loops when using
521 - :ghpull:`14168` Fix case with spurious message about event loops when using
486 matplotlib.
522 matplotlib.
487
523
488 This PR is in 8.16.0 but reverted in 8.16.1, we'll rework the fix for 8.17
524 This PR is in 8.16.0 but reverted in 8.16.1, we'll rework the fix for 8.17
489
525
490 - :ghpull:`14163` Fix an error where semicolon would not suppress output.
526 - :ghpull:`14163` Fix an error where semicolon would not suppress output.
491
527
492 As usual you can find the full list of PRs on GitHub under `the 8.16
528 As usual you can find the full list of PRs on GitHub under `the 8.16
493 <https://github.com/ipython/ipython/milestone/121?closed=1>`__ and `8.16.1 milestone
529 <https://github.com/ipython/ipython/milestone/121?closed=1>`__ and `8.16.1 milestone
494 <https://github.com/ipython/ipython/milestone/124?closed=1>`__.
530 <https://github.com/ipython/ipython/milestone/124?closed=1>`__.
495
531
496 Thanks to the `D. E. Shaw group <https://deshaw.com/>`__ for sponsoring
532 Thanks to the `D. E. Shaw group <https://deshaw.com/>`__ for sponsoring
497 work on IPython and related libraries.
533 work on IPython and related libraries.
498
534
499 .. _version 8.12.3:
535 .. _version 8.12.3:
500
536
501 IPython 8.12.3
537 IPython 8.12.3
502 --------------
538 --------------
503
539
504 Tiny release of 8.12.3 that backport a small number of fixes for users still
540 Tiny release of 8.12.3 that backport a small number of fixes for users still
505 using Python 3.8.
541 using Python 3.8.
506
542
507 - :ghpull:`14080` add passthrough filter shortcuts
543 - :ghpull:`14080` add passthrough filter shortcuts
508 - :ghpull:`14169` Fix `InteractiveShellEmbed`
544 - :ghpull:`14169` Fix `InteractiveShellEmbed`
509
545
510 .. _version 8.15:
546 .. _version 8.15:
511
547
512 IPython 8.15
548 IPython 8.15
513 ------------
549 ------------
514
550
515 Medium release of IPython after a couple of month hiatus, and a bit
551 Medium release of IPython after a couple of month hiatus, and a bit
516 off-schedule.
552 off-schedule.
517
553
518 Among other, IPython 8.15:
554 Among other, IPython 8.15:
519
555
520 - Improve compatibility with future version of Python 3.12/3.13
556 - Improve compatibility with future version of Python 3.12/3.13
521 :ghpull:`14107`, :ghpull:`14139`,
557 :ghpull:`14107`, :ghpull:`14139`,
522 - Improve support for ``ExceptionGroups``, :ghpull:`14108`
558 - Improve support for ``ExceptionGroups``, :ghpull:`14108`
523 - Fix hangs in ``%gui osx``, :ghpull:`14125`
559 - Fix hangs in ``%gui osx``, :ghpull:`14125`
524 - Fix memory lead with ``%reset``, :ghpull:`14133`
560 - Fix memory lead with ``%reset``, :ghpull:`14133`
525 - Unstable config option to modify traceback highlighting that is sometime hard
561 - Unstable config option to modify traceback highlighting that is sometime hard
526 to read :ghpull:`14138`
562 to read :ghpull:`14138`
527 - Support ``.`` in ``ipdb`` as an argument to the ``list`` command
563 - Support ``.`` in ``ipdb`` as an argument to the ``list`` command
528 :ghpull:`14121`
564 :ghpull:`14121`
529 - Workroud ``parso`` showing warning message when the default logger level is
565 - Workroud ``parso`` showing warning message when the default logger level is
530 changed :ghpull:`14119`
566 changed :ghpull:`14119`
531 - Fix multiple issues with matplotlib interactive mode, qt5/qt6 :ghpull:`14128`
567 - Fix multiple issues with matplotlib interactive mode, qt5/qt6 :ghpull:`14128`
532
568
533 Support for PEP-678 Exception Notes
569 Support for PEP-678 Exception Notes
534 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
570 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
535
571
536 Ultratb now shows :pep:`678` notes, improving your debugging experience on
572 Ultratb now shows :pep:`678` notes, improving your debugging experience on
537 Python 3.11+ or with libraries such as Pytest and Hypothesis.
573 Python 3.11+ or with libraries such as Pytest and Hypothesis.
538
574
539 Native fallback for displaying ExceptionGroup
575 Native fallback for displaying ExceptionGroup
540 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
576 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
541 ExceptionGroups are now displayed with ``traceback.print_exc``, as a temporary fix until UltraTB properly supports displaying child exceptions.
577 ExceptionGroups are now displayed with ``traceback.print_exc``, as a temporary fix until UltraTB properly supports displaying child exceptions.
542
578
543
579
544 We have two larger features:
580 We have two larger features:
545
581
546 AST-based macros
582 AST-based macros
547 ~~~~~~~~~~~~~~~~
583 ~~~~~~~~~~~~~~~~
548
584
549 :ghpull:`14100` introduce a new and efficient way to modify each execution block
585 :ghpull:`14100` introduce a new and efficient way to modify each execution block
550 (cell) using an template-ast-based transform. Unlike IPython pre and post code
586 (cell) using an template-ast-based transform. Unlike IPython pre and post code
551 execution hooks, this actually transform the code that is execute with as
587 execution hooks, this actually transform the code that is execute with as
552 minimal as possible overhead. While it was already technically possible to
588 minimal as possible overhead. While it was already technically possible to
553 register ast transformers for IPython this was far from evident.
589 register ast transformers for IPython this was far from evident.
554
590
555 This should make it trivial to hook into IPython to implement custom hooks, that
591 This should make it trivial to hook into IPython to implement custom hooks, that
556 for example time or profile your code, catch exceptions to provide error
592 for example time or profile your code, catch exceptions to provide error
557 messages for students or do any other kind of transformations.
593 messages for students or do any other kind of transformations.
558
594
559 In addition to programmatic API there is also a magic to quickly register
595 In addition to programmatic API there is also a magic to quickly register
560 hooks::
596 hooks::
561
597
562 In [1]: %%code_wrap before_after
598 In [1]: %%code_wrap before_after
563 ...: print('before')
599 ...: print('before')
564 ...: __code__
600 ...: __code__
565 ...: print('after')
601 ...: print('after')
566 ...: __ret__
602 ...: __ret__
567
603
568 This mean that for any subsequent execution code will be executed.
604 This mean that for any subsequent execution code will be executed.
569 You can modify the above to print the date, compute the execution time,
605 You can modify the above to print the date, compute the execution time,
570 retry the code in a for loop....
606 retry the code in a for loop....
571
607
572
608
573 Allow IPdb/Pdb to move between chained exceptions
609 Allow IPdb/Pdb to move between chained exceptions
574 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
610 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
575
611
576 The main change is the addition of the ability to move between chained
612 The main change is the addition of the ability to move between chained
577 exceptions when using IPdb, this feature was also contributed to upstream Pdb
613 exceptions when using IPdb, this feature was also contributed to upstream Pdb
578 and is thus native to CPython in Python 3.13+ Though ipdb should support this
614 and is thus native to CPython in Python 3.13+ Though ipdb should support this
579 feature in older version of Python. I invite you to look at the `CPython changes
615 feature in older version of Python. I invite you to look at the `CPython changes
580 and docs <https://github.com/python/cpython/pull/106676>`__ for more details.
616 and docs <https://github.com/python/cpython/pull/106676>`__ for more details.
581
617
582 In short, once in post-mortem debugger (``%debug``), you can use the ipdb
618 In short, once in post-mortem debugger (``%debug``), you can use the ipdb
583 ``exceptions`` command to switch exceptions, for example:
619 ``exceptions`` command to switch exceptions, for example:
584
620
585 .. code-block:: ipython
621 .. code-block:: ipython
586
622
587 In [1]: def foo(x):
623 In [1]: def foo(x):
588 ...: try:
624 ...: try:
589 ...: bar(x)
625 ...: bar(x)
590 ...: except Exception as e:
626 ...: except Exception as e:
591 ...: raise ValueError("foo (): bar failed") from e
627 ...: raise ValueError("foo (): bar failed") from e
592 ...:
628 ...:
593 ...: def bar(x):
629 ...: def bar(x):
594 ...: 1 / X
630 ...: 1 / X
595 ...:
631 ...:
596
632
597 In [2]: foo(0)
633 In [2]: foo(0)
598 ---------------------------------------------------------------------------
634 ---------------------------------------------------------------------------
599 NameError Traceback (most recent call last)
635 NameError Traceback (most recent call last)
600 Cell In[1], line 3, in foo(x)
636 Cell In[1], line 3, in foo(x)
601 2 try:
637 2 try:
602 ----> 3 bar(x)
638 ----> 3 bar(x)
603 4 except Exception as e:
639 4 except Exception as e:
604
640
605 Cell In[1], line 9, in bar(x)
641 Cell In[1], line 9, in bar(x)
606 8 def bar(x):
642 8 def bar(x):
607 ----> 9 1 / X
643 ----> 9 1 / X
608
644
609 NameError: name 'X' is not defined
645 NameError: name 'X' is not defined
610
646
611 The above exception was the direct cause of the following exception:
647 The above exception was the direct cause of the following exception:
612
648
613 ValueError Traceback (most recent call last)
649 ValueError Traceback (most recent call last)
614 Cell In[2], line 1
650 Cell In[2], line 1
615 ----> 1 foo(0)
651 ----> 1 foo(0)
616
652
617 Cell In[1], line 5, in foo(x)
653 Cell In[1], line 5, in foo(x)
618 3 bar(x)
654 3 bar(x)
619 4 except Exception as e:
655 4 except Exception as e:
620 ----> 5 raise ValueError("foo (): bar failed") from e
656 ----> 5 raise ValueError("foo (): bar failed") from e
621
657
622 ValueError: foo (): bar failed
658 ValueError: foo (): bar failed
623
659
624 In [3]: %debug
660 In [3]: %debug
625 > <ipython-input-1-b0bbdc271ffb>(5)foo()
661 > <ipython-input-1-b0bbdc271ffb>(5)foo()
626 3 bar(x)
662 3 bar(x)
627 4 except Exception as e:
663 4 except Exception as e:
628 ----> 5 raise ValueError("foo (): bar failed") from e
664 ----> 5 raise ValueError("foo (): bar failed") from e
629
665
630 In previous ipdb you could not go into the bar error, now from within pdb you
666 In previous ipdb you could not go into the bar error, now from within pdb you
631 can use ``exceptions``:
667 can use ``exceptions``:
632
668
633 .. code-block:: ipython
669 .. code-block:: ipython
634
670
635 ipdb> exceptions
671 ipdb> exceptions
636 0 NameError("name 'X' is not defined")
672 0 NameError("name 'X' is not defined")
637 > 1 ValueError('foo (): bar failed')
673 > 1 ValueError('foo (): bar failed')
638
674
639 ipdb> exceptions 0
675 ipdb> exceptions 0
640 > <ipython-input-1-b0bbdc271ffb>(9)bar()
676 > <ipython-input-1-b0bbdc271ffb>(9)bar()
641 6
677 6
642 7
678 7
643 8 def bar(x):
679 8 def bar(x):
644 ----> 9 1 / X
680 ----> 9 1 / X
645 10
681 10
646
682
647 ipdb>
683 ipdb>
648
684
649 In particular I want to thank the `D.E. Shaw group <https://www.deshaw.com/>`__
685 In particular I want to thank the `D.E. Shaw group <https://www.deshaw.com/>`__
650 for suggesting and funding the two largest feature as well as many bug fixes of
686 for suggesting and funding the two largest feature as well as many bug fixes of
651 this release.
687 this release.
652
688
653 As usual you can find the full list of PRs on GitHub under `the 8.15 milestone
689 As usual you can find the full list of PRs on GitHub under `the 8.15 milestone
654 <https://github.com/ipython/ipython/milestone/120?closed=1>`__.
690 <https://github.com/ipython/ipython/milestone/120?closed=1>`__.
655
691
656
692
657
693
658 .. _version 8.14:
694 .. _version 8.14:
659
695
660 IPython 8.14
696 IPython 8.14
661 ------------
697 ------------
662
698
663 Small release of IPython.
699 Small release of IPython.
664
700
665 - :ghpull:`14080` fixes some shortcuts issues.
701 - :ghpull:`14080` fixes some shortcuts issues.
666 - :ghpull:`14056` Add option to ``%autoreload`` to hide errors when reloading code. This will be the default for spyder
702 - :ghpull:`14056` Add option to ``%autoreload`` to hide errors when reloading code. This will be the default for spyder
667 user is my understanding.
703 user is my understanding.
668 - :ghpull:`14039` (and :ghpull:`14040`) to show exception notes in tracebacks.
704 - :ghpull:`14039` (and :ghpull:`14040`) to show exception notes in tracebacks.
669
705
670 - :ghpull:`14076` Add option to EventManager to prevent printing
706 - :ghpull:`14076` Add option to EventManager to prevent printing
671
707
672
708
673 SPEC 0 and SPEC 4
709 SPEC 0 and SPEC 4
674 ~~~~~~~~~~~~~~~~~
710 ~~~~~~~~~~~~~~~~~
675
711
676 You've heard about the NEPs, (NumPy enhancement Proposal), having a NEP for something non-numpy specific was sometime confusing.
712 You've heard about the NEPs, (NumPy enhancement Proposal), having a NEP for something non-numpy specific was sometime confusing.
677 Long live the `SPECs <https://scientific-python.org/specs/>`_.
713 Long live the `SPECs <https://scientific-python.org/specs/>`_.
678
714
679 We are now trying to follow SPEC 0 (aka old NEP 29) for support of upstream libraries.
715 We are now trying to follow SPEC 0 (aka old NEP 29) for support of upstream libraries.
680
716
681 We also now try to follow SPEC 4 (test and publish nightly on a centralized nightly repository).
717 We also now try to follow SPEC 4 (test and publish nightly on a centralized nightly repository).
682 We encourage you to do so as well in order to report breakage, and contribute to the SPEC process !
718 We encourage you to do so as well in order to report breakage, and contribute to the SPEC process !
683
719
684
720
685 Python 3.12 compatibility ?
721 Python 3.12 compatibility ?
686 ~~~~~~~~~~~~~~~~~~~~~~~~~~~
722 ~~~~~~~~~~~~~~~~~~~~~~~~~~~
687
723
688 Python 3.12 changed its tokenizer to have better support for f-strings and allow arbitrary expression.
724 Python 3.12 changed its tokenizer to have better support for f-strings and allow arbitrary expression.
689 This is a great new feature and performance improvement in Python 3.12.
725 This is a great new feature and performance improvement in Python 3.12.
690
726
691 Unfortunately this means the new tokenizer does not support incomplete or invalid Python which will
727 Unfortunately this means the new tokenizer does not support incomplete or invalid Python which will
692 break many features of IPython. Thus compatibility of IPython with Python 3.12 is not guaranteed.
728 break many features of IPython. Thus compatibility of IPython with Python 3.12 is not guaranteed.
693 It is unclear to which extent IPython is affected, and whether we can/should try to still support magics, shell
729 It is unclear to which extent IPython is affected, and whether we can/should try to still support magics, shell
694 escape (``! ....``), ..., as well as how to do it if we can.
730 escape (``! ....``), ..., as well as how to do it if we can.
695
731
696 In addition even if we there is technical feasibility to do so, it is no clear we have the resources to do it.
732 In addition even if we there is technical feasibility to do so, it is no clear we have the resources to do it.
697 We are thus looking for your help if you can _test_ on Python 3.12 to see to which extent this affects users and which
733 We are thus looking for your help if you can _test_ on Python 3.12 to see to which extent this affects users and which
698 features are critical.
734 features are critical.
699
735
700 We are not going to pin IPython to Python ``<3.12`` as otherwise on install pip would downgrade/resolve to IPython 8.13,
736 We are not going to pin IPython to Python ``<3.12`` as otherwise on install pip would downgrade/resolve to IPython 8.13,
701 so if you plan to update to Python 3.12 after its release, we encourage for extra care.
737 so if you plan to update to Python 3.12 after its release, we encourage for extra care.
702
738
703
739
704 .. _version 8.13.1:
740 .. _version 8.13.1:
705 .. _version 8.13.2:
741 .. _version 8.13.2:
706 .. _version 8.12.2:
742 .. _version 8.12.2:
707
743
708 IPython 8.13.1, 8.13.2 and 8.12.2
744 IPython 8.13.1, 8.13.2 and 8.12.2
709 ---------------------------------
745 ---------------------------------
710
746
711 3 quick in succession patch release of IPython in addition to IPython 8.13.0
747 3 quick in succession patch release of IPython in addition to IPython 8.13.0
712 having been yanked.
748 having been yanked.
713
749
714 IPython 8.13.0 was improperly tagged as still compatible with Python 3.8, and
750 IPython 8.13.0 was improperly tagged as still compatible with Python 3.8, and
715 still had some mention of compatibility with 3.8. IPython 8.13.1 is identical to
751 still had some mention of compatibility with 3.8. IPython 8.13.1 is identical to
716 8.13 but with the exception of being correctly tagged. This release and yank was
752 8.13 but with the exception of being correctly tagged. This release and yank was
717 mostly done to fix CI.
753 mostly done to fix CI.
718
754
719 IPython 8.12.2 and 8.13.2 contain UI fixes, with respect to right arrow not
755 IPython 8.12.2 and 8.13.2 contain UI fixes, with respect to right arrow not
720 working in some case in the terminal, and 8.12.2 contain also a requested
756 working in some case in the terminal, and 8.12.2 contain also a requested
721 backport of :ghpull:`14029` (Allow safe access to the ``__getattribute__``
757 backport of :ghpull:`14029` (Allow safe access to the ``__getattribute__``
722 method of modules) for tab completion.
758 method of modules) for tab completion.
723
759
724 .. _version 8.13:
760 .. _version 8.13:
725
761
726 IPython 8.13
762 IPython 8.13
727 ------------
763 ------------
728
764
729 As usual for the end of the month, minor release of IPython. This release is
765 As usual for the end of the month, minor release of IPython. This release is
730 significant in that it not only has a number of bugfixes, but also drop support
766 significant in that it not only has a number of bugfixes, but also drop support
731 for Python 3.8 as per NEP 29 (:ghpull:`14023`).
767 for Python 3.8 as per NEP 29 (:ghpull:`14023`).
732
768
733 All the critical bugfixes have been backported onto the 8.12.1 release (see
769 All the critical bugfixes have been backported onto the 8.12.1 release (see
734 below). In addition to that went into 8.12.1 you'll find:
770 below). In addition to that went into 8.12.1 you'll find:
735
771
736 - Pretty representation for ``Counter`` has been fixed to match the Python one
772 - Pretty representation for ``Counter`` has been fixed to match the Python one
737 and be in decreasing order. :ghpull:`14032`
773 and be in decreasing order. :ghpull:`14032`
738 - Module completion is better when jedi is disabled :ghpull:`14029`.
774 - Module completion is better when jedi is disabled :ghpull:`14029`.
739 - Improvement of ``%%bash`` magic that would get stuck :ghpull:`14019`
775 - Improvement of ``%%bash`` magic that would get stuck :ghpull:`14019`
740
776
741
777
742 We hope you enjoy this release an will maybe see you at JupyterCon in less than
778 We hope you enjoy this release an will maybe see you at JupyterCon in less than
743 two weeks.
779 two weeks.
744
780
745 As usual you can find the full list of PRs on GitHub under `the 8.13 milestone
781 As usual you can find the full list of PRs on GitHub under `the 8.13 milestone
746 <https://github.com/ipython/ipython/milestone/115?closed=1>`__.
782 <https://github.com/ipython/ipython/milestone/115?closed=1>`__.
747
783
748 Thanks to the `D. E. Shaw group <https://deshaw.com/>`__ for sponsoring
784 Thanks to the `D. E. Shaw group <https://deshaw.com/>`__ for sponsoring
749 work on IPython and related libraries.
785 work on IPython and related libraries.
750
786
751
787
752 .. _version 8.12.1:
788 .. _version 8.12.1:
753
789
754 IPython 8.12.1
790 IPython 8.12.1
755 --------------
791 --------------
756
792
757 This is the twin release of IPython 8.13 that contain only critical UI and bug
793 This is the twin release of IPython 8.13 that contain only critical UI and bug
758 fixes. The next minor version of IPython has dropped support for Python 3.8 – as
794 fixes. The next minor version of IPython has dropped support for Python 3.8 – as
759 per Nep 29 and this IPython 8.12.x will now only receive bugfixes.
795 per Nep 29 and this IPython 8.12.x will now only receive bugfixes.
760
796
761
797
762 - :ghpull:`14004` Fix a bug introduced in IPython 8.12 that crash when
798 - :ghpull:`14004` Fix a bug introduced in IPython 8.12 that crash when
763 inspecting some docstrings.
799 inspecting some docstrings.
764 - :ghpull:`14010` Fix fast traceback code that was not working in some case.
800 - :ghpull:`14010` Fix fast traceback code that was not working in some case.
765 - :ghpull:`14014` Fix ``%page`` magic broken in some case.
801 - :ghpull:`14014` Fix ``%page`` magic broken in some case.
766 - :ghpull:`14026`, :ghpull:`14027` Tweak default shortcut with respect to
802 - :ghpull:`14026`, :ghpull:`14027` Tweak default shortcut with respect to
767 autosuggestions.
803 autosuggestions.
768 - :ghpull:`14033` add back the ability to use ``.get()`` on OInfo object for
804 - :ghpull:`14033` add back the ability to use ``.get()`` on OInfo object for
769 backward compatibility with h5py (this will be re-deprecated later, and h5py
805 backward compatibility with h5py (this will be re-deprecated later, and h5py
770 will also get a fix).
806 will also get a fix).
771
807
772 As usual you can find the full list of PRs on GitHub under `the 8.12.1 milestone
808 As usual you can find the full list of PRs on GitHub under `the 8.12.1 milestone
773 <https://github.com/ipython/ipython/milestone/116?closed=1>`__.
809 <https://github.com/ipython/ipython/milestone/116?closed=1>`__.
774
810
775 Thanks to the `D. E. Shaw group <https://deshaw.com/>`__ for sponsoring
811 Thanks to the `D. E. Shaw group <https://deshaw.com/>`__ for sponsoring
776 work on IPython and related libraries.
812 work on IPython and related libraries.
777
813
778 .. _version 8.12.0:
814 .. _version 8.12.0:
779
815
780 IPython 8.12
816 IPython 8.12
781 ------------
817 ------------
782
818
783 Hopefully slightly early release for IPython 8.12. Last Thursday of the month,
819 Hopefully slightly early release for IPython 8.12. Last Thursday of the month,
784 even if I guess it's likely already Friday somewhere in the pacific ocean.
820 even if I guess it's likely already Friday somewhere in the pacific ocean.
785
821
786 A number of PRs and bug fixes this month with close to 20 PRs merged !
822 A number of PRs and bug fixes this month with close to 20 PRs merged !
787
823
788
824
789 The IPython repo reached :ghpull:`14000` !! Actually the PR that create those exact release
825 The IPython repo reached :ghpull:`14000` !! Actually the PR that create those exact release
790 note is :ghpull:`14000`. Ok, more issues and PR is not always better, and I'd
826 note is :ghpull:`14000`. Ok, more issues and PR is not always better, and I'd
791 love to have more time to close issues and Pull Requests.
827 love to have more time to close issues and Pull Requests.
792
828
793 Let's note that in less than 2 month JupyterCon is back, in Paris please visit
829 Let's note that in less than 2 month JupyterCon is back, in Paris please visit
794 `jupytercon.com <https://jupytercon.com>`__, and looking forward to see you
830 `jupytercon.com <https://jupytercon.com>`__, and looking forward to see you
795 there.
831 there.
796
832
797 Packagers should take note that ``typing_extension`` is now a mandatory dependency
833 Packagers should take note that ``typing_extension`` is now a mandatory dependency
798 for Python versions ``<3.10``.
834 for Python versions ``<3.10``.
799
835
800
836
801
837
802 Let's note also that according to `NEP29
838 Let's note also that according to `NEP29
803 <https://numpy.org/neps/nep-0029-deprecation_policy.html>`__, It is soon time to
839 <https://numpy.org/neps/nep-0029-deprecation_policy.html>`__, It is soon time to
804 stop support for Python 3.8 that will be release more than 3 and 1/2 years ago::
840 stop support for Python 3.8 that will be release more than 3 and 1/2 years ago::
805
841
806 On Apr 14, 2023 drop support for Python 3.8 (initially released on Oct 14, 2019)
842 On Apr 14, 2023 drop support for Python 3.8 (initially released on Oct 14, 2019)
807
843
808 Thus I am likely to stop advertising support for Python 3.8 in the next
844 Thus I am likely to stop advertising support for Python 3.8 in the next
809 release at the end of April.
845 release at the end of April.
810
846
811
847
812 Here are some miscellaneous updates of interest:
848 Here are some miscellaneous updates of interest:
813
849
814 - :ghpull:`13957` brings updates to the Qt integration, particularly for Qt6.
850 - :ghpull:`13957` brings updates to the Qt integration, particularly for Qt6.
815 - :ghpull:`13960` fixes the %debug magic command to give access to the local
851 - :ghpull:`13960` fixes the %debug magic command to give access to the local
816 scope.
852 scope.
817 - :ghpull:`13964` fixes some crashes with the new fast traceback code. Note that
853 - :ghpull:`13964` fixes some crashes with the new fast traceback code. Note that
818 there are still some issues with the fast traceback code, and I a, likely
854 there are still some issues with the fast traceback code, and I a, likely
819 to fix and tweak behavior.
855 to fix and tweak behavior.
820 - :ghpull:`13973` We are slowly migrating IPython internals to use proper type
856 - :ghpull:`13973` We are slowly migrating IPython internals to use proper type
821 objects/dataclasses instead of dictionaries to allow static typing checks.
857 objects/dataclasses instead of dictionaries to allow static typing checks.
822 These are technically public API and could lead to breakage, so please let us
858 These are technically public API and could lead to breakage, so please let us
823 know if that's the case and I'll mitigate.
859 know if that's the case and I'll mitigate.
824 - :ghpull:`13990`, :ghpull:`13991`, :ghpull:`13994` all improve keybinding and
860 - :ghpull:`13990`, :ghpull:`13991`, :ghpull:`13994` all improve keybinding and
825 shortcut configurability.
861 shortcut configurability.
826
862
827 As usual you can find the full list of PRs on GitHub under `the 8.12 milestone
863 As usual you can find the full list of PRs on GitHub under `the 8.12 milestone
828 <https://github.com/ipython/ipython/milestone/114?closed=1>`__.
864 <https://github.com/ipython/ipython/milestone/114?closed=1>`__.
829
865
830 We want to thank the D.E. Shaw group for requesting and sponsoring the work on
866 We want to thank the D.E. Shaw group for requesting and sponsoring the work on
831 the following big feature. We had productive discussions on how to best expose
867 the following big feature. We had productive discussions on how to best expose
832 this feature
868 this feature
833
869
834 Dynamic documentation dispatch
870 Dynamic documentation dispatch
835 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
871 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
836
872
837 We are experimenting with dynamic documentation dispatch for object attribute.
873 We are experimenting with dynamic documentation dispatch for object attribute.
838 See :ghissue:`13860`. The goal is to allow object to define documentation for
874 See :ghissue:`13860`. The goal is to allow object to define documentation for
839 their attributes, properties, even when those are dynamically defined with
875 their attributes, properties, even when those are dynamically defined with
840 `__getattr__`.
876 `__getattr__`.
841
877
842 In particular when those objects are base types it can be useful to show the
878 In particular when those objects are base types it can be useful to show the
843 documentation
879 documentation
844
880
845
881
846 .. code-block:: ipython
882 .. code-block:: ipython
847
883
848
884
849 In [1]: class User:
885 In [1]: class User:
850 ...:
886 ...:
851 ...: __custom_documentations__ = {
887 ...: __custom_documentations__ = {
852 ...: "first": "The first name of the user.",
888 ...: "first": "The first name of the user.",
853 ...: "last": "The last name of the user.",
889 ...: "last": "The last name of the user.",
854 ...: }
890 ...: }
855 ...:
891 ...:
856 ...: first:str
892 ...: first:str
857 ...: last:str
893 ...: last:str
858 ...:
894 ...:
859 ...: def __init__(self, first, last):
895 ...: def __init__(self, first, last):
860 ...: self.first = first
896 ...: self.first = first
861 ...: self.last = last
897 ...: self.last = last
862 ...:
898 ...:
863 ...: @property
899 ...: @property
864 ...: def full(self):
900 ...: def full(self):
865 ...: """`self.first` and `self.last` joined by a space."""
901 ...: """`self.first` and `self.last` joined by a space."""
866 ...: return self.first + " " + self.last
902 ...: return self.first + " " + self.last
867 ...:
903 ...:
868 ...:
904 ...:
869 ...: user = Person('Jane', 'Doe')
905 ...: user = Person('Jane', 'Doe')
870
906
871 In [2]: user.first?
907 In [2]: user.first?
872 Type: str
908 Type: str
873 String form: Jane
909 String form: Jane
874 Length: 4
910 Length: 4
875 Docstring: the first name of a the person object, a str
911 Docstring: the first name of a the person object, a str
876 Class docstring:
912 Class docstring:
877 ....
913 ....
878
914
879 In [3]: user.last?
915 In [3]: user.last?
880 Type: str
916 Type: str
881 String form: Doe
917 String form: Doe
882 Length: 3
918 Length: 3
883 Docstring: the last name, also a str
919 Docstring: the last name, also a str
884 ...
920 ...
885
921
886
922
887 We can see here the symmetry with IPython looking for the docstring on the
923 We can see here the symmetry with IPython looking for the docstring on the
888 properties:
924 properties:
889
925
890 .. code-block:: ipython
926 .. code-block:: ipython
891
927
892
928
893 In [4]: user.full?
929 In [4]: user.full?
894 HERE
930 HERE
895 Type: property
931 Type: property
896 String form: <property object at 0x102bb15d0>
932 String form: <property object at 0x102bb15d0>
897 Docstring: first and last join by a space
933 Docstring: first and last join by a space
898
934
899
935
900 Note that while in the above example we use a static dictionary, libraries may
936 Note that while in the above example we use a static dictionary, libraries may
901 decide to use a custom object that define ``__getitem__``, we caution against
937 decide to use a custom object that define ``__getitem__``, we caution against
902 using objects that would trigger computation to show documentation, but it is
938 using objects that would trigger computation to show documentation, but it is
903 sometime preferable for highly dynamic code that for example export ans API as
939 sometime preferable for highly dynamic code that for example export ans API as
904 object.
940 object.
905
941
906
942
907
943
908 .. _version 8.11.0:
944 .. _version 8.11.0:
909
945
910 IPython 8.11
946 IPython 8.11
911 ------------
947 ------------
912
948
913 Back on almost regular monthly schedule for IPython with end-of-month
949 Back on almost regular monthly schedule for IPython with end-of-month
914 really-late-Friday release to make sure some bugs are properly fixed.
950 really-late-Friday release to make sure some bugs are properly fixed.
915 Small addition of with a few new features, bugfix and UX improvements.
951 Small addition of with a few new features, bugfix and UX improvements.
916
952
917 This is a non-exhaustive list, but among other you will find:
953 This is a non-exhaustive list, but among other you will find:
918
954
919 Faster Traceback Highlighting
955 Faster Traceback Highlighting
920 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
956 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
921
957
922 Resurrection of pre-IPython-8 traceback highlighting code.
958 Resurrection of pre-IPython-8 traceback highlighting code.
923
959
924 Really long and complicated files were slow to highlight in traceback with
960 Really long and complicated files were slow to highlight in traceback with
925 IPython 8 despite upstream improvement that make many case better. Therefore
961 IPython 8 despite upstream improvement that make many case better. Therefore
926 starting with IPython 8.11 when one of the highlighted file is more than 10 000
962 starting with IPython 8.11 when one of the highlighted file is more than 10 000
927 line long by default, we'll fallback to a faster path that does not have all the
963 line long by default, we'll fallback to a faster path that does not have all the
928 features of highlighting failing AST nodes.
964 features of highlighting failing AST nodes.
929
965
930 This can be configures by setting the value of
966 This can be configures by setting the value of
931 ``IPython.code.ultratb.FAST_THRESHOLD`` to an arbitrary low or large value.
967 ``IPython.code.ultratb.FAST_THRESHOLD`` to an arbitrary low or large value.
932
968
933
969
934 Autoreload verbosity
970 Autoreload verbosity
935 ~~~~~~~~~~~~~~~~~~~~
971 ~~~~~~~~~~~~~~~~~~~~
936
972
937 We introduce more descriptive names for the ``%autoreload`` parameter:
973 We introduce more descriptive names for the ``%autoreload`` parameter:
938
974
939 - ``%autoreload now`` (also ``%autoreload``) - perform autoreload immediately.
975 - ``%autoreload now`` (also ``%autoreload``) - perform autoreload immediately.
940 - ``%autoreload off`` (also ``%autoreload 0``) - turn off autoreload.
976 - ``%autoreload off`` (also ``%autoreload 0``) - turn off autoreload.
941 - ``%autoreload explicit`` (also ``%autoreload 1``) - turn on autoreload only for modules
977 - ``%autoreload explicit`` (also ``%autoreload 1``) - turn on autoreload only for modules
942 whitelisted by ``%aimport`` statements.
978 whitelisted by ``%aimport`` statements.
943 - ``%autoreload all`` (also ``%autoreload 2``) - turn on autoreload for all modules except those
979 - ``%autoreload all`` (also ``%autoreload 2``) - turn on autoreload for all modules except those
944 blacklisted by ``%aimport`` statements.
980 blacklisted by ``%aimport`` statements.
945 - ``%autoreload complete`` (also ``%autoreload 3``) - all the features of ``all`` but also adding new
981 - ``%autoreload complete`` (also ``%autoreload 3``) - all the features of ``all`` but also adding new
946 objects from the imported modules (see
982 objects from the imported modules (see
947 IPython/extensions/tests/test_autoreload.py::test_autoload_newly_added_objects).
983 IPython/extensions/tests/test_autoreload.py::test_autoload_newly_added_objects).
948
984
949 The original designations (e.g. "2") still work, and these new ones are case-insensitive.
985 The original designations (e.g. "2") still work, and these new ones are case-insensitive.
950
986
951 Additionally, the option ``--print`` or ``-p`` can be added to the line to print the names of
987 Additionally, the option ``--print`` or ``-p`` can be added to the line to print the names of
952 modules being reloaded. Similarly, ``--log`` or ``-l`` will output the names to the logger at INFO
988 modules being reloaded. Similarly, ``--log`` or ``-l`` will output the names to the logger at INFO
953 level. Both can be used simultaneously.
989 level. Both can be used simultaneously.
954
990
955 The parsing logic for ``%aimport`` is now improved such that modules can be whitelisted and
991 The parsing logic for ``%aimport`` is now improved such that modules can be whitelisted and
956 blacklisted in the same line, e.g. it's now possible to call ``%aimport os, -math`` to include
992 blacklisted in the same line, e.g. it's now possible to call ``%aimport os, -math`` to include
957 ``os`` for ``%autoreload explicit`` and exclude ``math`` for modes ``all`` and ``complete``.
993 ``os`` for ``%autoreload explicit`` and exclude ``math`` for modes ``all`` and ``complete``.
958
994
959 Terminal shortcuts customization
995 Terminal shortcuts customization
960 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
996 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
961
997
962 Previously modifying shortcuts was only possible by hooking into startup files
998 Previously modifying shortcuts was only possible by hooking into startup files
963 and practically limited to adding new shortcuts or removing all shortcuts bound
999 and practically limited to adding new shortcuts or removing all shortcuts bound
964 to a specific key. This release enables users to override existing terminal
1000 to a specific key. This release enables users to override existing terminal
965 shortcuts, disable them or add new keybindings.
1001 shortcuts, disable them or add new keybindings.
966
1002
967 For example, to set the :kbd:`right` to accept a single character of auto-suggestion
1003 For example, to set the :kbd:`right` to accept a single character of auto-suggestion
968 you could use::
1004 you could use::
969
1005
970 my_shortcuts = [
1006 my_shortcuts = [
971 {
1007 {
972 "command": "IPython:auto_suggest.accept_character",
1008 "command": "IPython:auto_suggest.accept_character",
973 "new_keys": ["right"]
1009 "new_keys": ["right"]
974 }
1010 }
975 ]
1011 ]
976 %config TerminalInteractiveShell.shortcuts = my_shortcuts
1012 %config TerminalInteractiveShell.shortcuts = my_shortcuts
977
1013
978 You can learn more in :std:configtrait:`TerminalInteractiveShell.shortcuts`
1014 You can learn more in :std:configtrait:`TerminalInteractiveShell.shortcuts`
979 configuration reference.
1015 configuration reference.
980
1016
981 Miscellaneous
1017 Miscellaneous
982 ~~~~~~~~~~~~~
1018 ~~~~~~~~~~~~~
983
1019
984 - ``%gui`` should now support PySide6. :ghpull:`13864`
1020 - ``%gui`` should now support PySide6. :ghpull:`13864`
985 - Cli shortcuts can now be configured :ghpull:`13928`, see above.
1021 - Cli shortcuts can now be configured :ghpull:`13928`, see above.
986 (note that there might be an issue with prompt_toolkit 3.0.37 and shortcut configuration).
1022 (note that there might be an issue with prompt_toolkit 3.0.37 and shortcut configuration).
987
1023
988 - Capture output should now respect ``;`` semicolon to suppress output.
1024 - Capture output should now respect ``;`` semicolon to suppress output.
989 :ghpull:`13940`
1025 :ghpull:`13940`
990 - Base64 encoded images (in jupyter frontend), will not have trailing newlines.
1026 - Base64 encoded images (in jupyter frontend), will not have trailing newlines.
991 :ghpull:`13941`
1027 :ghpull:`13941`
992
1028
993 As usual you can find the full list of PRs on GitHub under `the 8.11 milestone
1029 As usual you can find the full list of PRs on GitHub under `the 8.11 milestone
994 <https://github.com/ipython/ipython/milestone/113?closed=1>`__.
1030 <https://github.com/ipython/ipython/milestone/113?closed=1>`__.
995
1031
996 Thanks to the `D. E. Shaw group <https://deshaw.com/>`__ for sponsoring
1032 Thanks to the `D. E. Shaw group <https://deshaw.com/>`__ for sponsoring
997 work on IPython and related libraries.
1033 work on IPython and related libraries.
998
1034
999 .. _version 8.10.0:
1035 .. _version 8.10.0:
1000
1036
1001 IPython 8.10
1037 IPython 8.10
1002 ------------
1038 ------------
1003
1039
1004 Out of schedule release of IPython with minor fixes to patch a potential CVE-2023-24816.
1040 Out of schedule release of IPython with minor fixes to patch a potential CVE-2023-24816.
1005 This is a really low severity CVE that you most likely are not affected by unless:
1041 This is a really low severity CVE that you most likely are not affected by unless:
1006
1042
1007 - You are on windows.
1043 - You are on windows.
1008 - You have a custom build of Python without ``_ctypes``
1044 - You have a custom build of Python without ``_ctypes``
1009 - You cd or start IPython or Jupyter in untrusted directory which names may be
1045 - You cd or start IPython or Jupyter in untrusted directory which names may be
1010 valid shell commands.
1046 valid shell commands.
1011
1047
1012 You can read more on `the advisory
1048 You can read more on `the advisory
1013 <https://github.com/ipython/ipython/security/advisories/GHSA-29gw-9793-fvw7>`__.
1049 <https://github.com/ipython/ipython/security/advisories/GHSA-29gw-9793-fvw7>`__.
1014
1050
1015 In addition to fixing this CVE we also fix a couple of outstanding bugs and issues.
1051 In addition to fixing this CVE we also fix a couple of outstanding bugs and issues.
1016
1052
1017 As usual you can find the full list of PRs on GitHub under `the 8.10 milestone
1053 As usual you can find the full list of PRs on GitHub under `the 8.10 milestone
1018 <https://github.com/ipython/ipython/milestone/112?closed=1>`__.
1054 <https://github.com/ipython/ipython/milestone/112?closed=1>`__.
1019
1055
1020 In Particular:
1056 In Particular:
1021
1057
1022 - bump minimum numpy to `>=1.21` version following NEP29. :ghpull:`13930`
1058 - bump minimum numpy to `>=1.21` version following NEP29. :ghpull:`13930`
1023 - fix for compatibility with MyPy 1.0. :ghpull:`13933`
1059 - fix for compatibility with MyPy 1.0. :ghpull:`13933`
1024 - fix nbgrader stalling when IPython's ``showtraceback`` function is
1060 - fix nbgrader stalling when IPython's ``showtraceback`` function is
1025 monkeypatched. :ghpull:`13934`
1061 monkeypatched. :ghpull:`13934`
1026
1062
1027
1063
1028
1064
1029 As this release also contains those minimal changes in addition to fixing the
1065 As this release also contains those minimal changes in addition to fixing the
1030 CVE I decided to bump the minor version anyway.
1066 CVE I decided to bump the minor version anyway.
1031
1067
1032 This will not affect the normal release schedule, so IPython 8.11 is due in
1068 This will not affect the normal release schedule, so IPython 8.11 is due in
1033 about 2 weeks.
1069 about 2 weeks.
1034
1070
1035 .. _version 8.9.0:
1071 .. _version 8.9.0:
1036
1072
1037 IPython 8.9.0
1073 IPython 8.9.0
1038 -------------
1074 -------------
1039
1075
1040 Second release of IPython in 2023, last Friday of the month, we are back on
1076 Second release of IPython in 2023, last Friday of the month, we are back on
1041 track. This is a small release with a few bug-fixes, and improvements, mostly
1077 track. This is a small release with a few bug-fixes, and improvements, mostly
1042 with respect to terminal shortcuts.
1078 with respect to terminal shortcuts.
1043
1079
1044
1080
1045 The biggest improvement for 8.9 is a drastic amelioration of the
1081 The biggest improvement for 8.9 is a drastic amelioration of the
1046 auto-suggestions sponsored by D.E. Shaw and implemented by the more and more
1082 auto-suggestions sponsored by D.E. Shaw and implemented by the more and more
1047 active contributor `@krassowski <https://github.com/krassowski>`.
1083 active contributor `@krassowski <https://github.com/krassowski>`.
1048
1084
1049 - ``right`` accepts a single character from suggestion
1085 - ``right`` accepts a single character from suggestion
1050 - ``ctrl+right`` accepts a semantic token (macos default shortcuts take
1086 - ``ctrl+right`` accepts a semantic token (macos default shortcuts take
1051 precedence and need to be disabled to make this work)
1087 precedence and need to be disabled to make this work)
1052 - ``backspace`` deletes a character and resumes hinting autosuggestions
1088 - ``backspace`` deletes a character and resumes hinting autosuggestions
1053 - ``ctrl-left`` accepts suggestion and moves cursor left one character.
1089 - ``ctrl-left`` accepts suggestion and moves cursor left one character.
1054 - ``backspace`` deletes a character and resumes hinting autosuggestions
1090 - ``backspace`` deletes a character and resumes hinting autosuggestions
1055 - ``down`` moves to suggestion to later in history when no lines are present below the cursors.
1091 - ``down`` moves to suggestion to later in history when no lines are present below the cursors.
1056 - ``up`` moves to suggestion from earlier in history when no lines are present above the cursor.
1092 - ``up`` moves to suggestion from earlier in history when no lines are present above the cursor.
1057
1093
1058 This is best described by the Gif posted by `@krassowski
1094 This is best described by the Gif posted by `@krassowski
1059 <https://github.com/krassowski>`, and in the PR itself :ghpull:`13888`.
1095 <https://github.com/krassowski>`, and in the PR itself :ghpull:`13888`.
1060
1096
1061 .. image:: ../_images/autosuggest.gif
1097 .. image:: ../_images/autosuggest.gif
1062
1098
1063 Please report any feedback in order for us to improve the user experience.
1099 Please report any feedback in order for us to improve the user experience.
1064 In particular we are also working on making the shortcuts configurable.
1100 In particular we are also working on making the shortcuts configurable.
1065
1101
1066 If you are interested in better terminal shortcuts, I also invite you to
1102 If you are interested in better terminal shortcuts, I also invite you to
1067 participate in issue `13879
1103 participate in issue `13879
1068 <https://github.com/ipython/ipython/issues/13879>`__.
1104 <https://github.com/ipython/ipython/issues/13879>`__.
1069
1105
1070
1106
1071 As we follow `NEP29
1107 As we follow `NEP29
1072 <https://numpy.org/neps/nep-0029-deprecation_policy.html>`__, next version of
1108 <https://numpy.org/neps/nep-0029-deprecation_policy.html>`__, next version of
1073 IPython will officially stop supporting numpy 1.20, and will stop supporting
1109 IPython will officially stop supporting numpy 1.20, and will stop supporting
1074 Python 3.8 after April release.
1110 Python 3.8 after April release.
1075
1111
1076 As usual you can find the full list of PRs on GitHub under `the 8.9 milestone
1112 As usual you can find the full list of PRs on GitHub under `the 8.9 milestone
1077 <https://github.com/ipython/ipython/milestone/111?closed=1>`__.
1113 <https://github.com/ipython/ipython/milestone/111?closed=1>`__.
1078
1114
1079
1115
1080 Thanks to the `D. E. Shaw group <https://deshaw.com/>`__ for sponsoring
1116 Thanks to the `D. E. Shaw group <https://deshaw.com/>`__ for sponsoring
1081 work on IPython and related libraries.
1117 work on IPython and related libraries.
1082
1118
1083 .. _version 8.8.0:
1119 .. _version 8.8.0:
1084
1120
1085 IPython 8.8.0
1121 IPython 8.8.0
1086 -------------
1122 -------------
1087
1123
1088 First release of IPython in 2023 as there was no release at the end of
1124 First release of IPython in 2023 as there was no release at the end of
1089 December.
1125 December.
1090
1126
1091 This is an unusually big release (relatively speaking) with more than 15 Pull
1127 This is an unusually big release (relatively speaking) with more than 15 Pull
1092 Requests merged.
1128 Requests merged.
1093
1129
1094 Of particular interest are:
1130 Of particular interest are:
1095
1131
1096 - :ghpull:`13852` that replaces the greedy completer and improves
1132 - :ghpull:`13852` that replaces the greedy completer and improves
1097 completion, in particular for dictionary keys.
1133 completion, in particular for dictionary keys.
1098 - :ghpull:`13858` that adds ``py.typed`` to ``setup.cfg`` to make sure it is
1134 - :ghpull:`13858` that adds ``py.typed`` to ``setup.cfg`` to make sure it is
1099 bundled in wheels.
1135 bundled in wheels.
1100 - :ghpull:`13869` that implements tab completions for IPython options in the
1136 - :ghpull:`13869` that implements tab completions for IPython options in the
1101 shell when using `argcomplete <https://github.com/kislyuk/argcomplete>`. I
1137 shell when using `argcomplete <https://github.com/kislyuk/argcomplete>`. I
1102 believe this also needs a recent version of Traitlets.
1138 believe this also needs a recent version of Traitlets.
1103 - :ghpull:`13865` makes the ``inspector`` class of `InteractiveShell`
1139 - :ghpull:`13865` makes the ``inspector`` class of `InteractiveShell`
1104 configurable.
1140 configurable.
1105 - :ghpull:`13880` that removes minor-version entrypoints as the minor version
1141 - :ghpull:`13880` that removes minor-version entrypoints as the minor version
1106 entry points that would be included in the wheel would be the one of the
1142 entry points that would be included in the wheel would be the one of the
1107 Python version that was used to build the ``whl`` file.
1143 Python version that was used to build the ``whl`` file.
1108
1144
1109 In no particular order, the rest of the changes update the test suite to be
1145 In no particular order, the rest of the changes update the test suite to be
1110 compatible with Pygments 2.14, various docfixes, testing on more recent python
1146 compatible with Pygments 2.14, various docfixes, testing on more recent python
1111 versions and various updates.
1147 versions and various updates.
1112
1148
1113 As usual you can find the full list of PRs on GitHub under `the 8.8 milestone
1149 As usual you can find the full list of PRs on GitHub under `the 8.8 milestone
1114 <https://github.com/ipython/ipython/milestone/110>`__.
1150 <https://github.com/ipython/ipython/milestone/110>`__.
1115
1151
1116 Many thanks to @krassowski for the many PRs and @jasongrout for reviewing and
1152 Many thanks to @krassowski for the many PRs and @jasongrout for reviewing and
1117 merging contributions.
1153 merging contributions.
1118
1154
1119 Thanks to the `D. E. Shaw group <https://deshaw.com/>`__ for sponsoring
1155 Thanks to the `D. E. Shaw group <https://deshaw.com/>`__ for sponsoring
1120 work on IPython and related libraries.
1156 work on IPython and related libraries.
1121
1157
1122 .. _version 8.7.0:
1158 .. _version 8.7.0:
1123
1159
1124 IPython 8.7.0
1160 IPython 8.7.0
1125 -------------
1161 -------------
1126
1162
1127
1163
1128 Small release of IPython with a couple of bug fixes and new features for this
1164 Small release of IPython with a couple of bug fixes and new features for this
1129 month. Next month is the end of year, it is unclear if there will be a release
1165 month. Next month is the end of year, it is unclear if there will be a release
1130 close to the new year's eve, or if the next release will be at the end of January.
1166 close to the new year's eve, or if the next release will be at the end of January.
1131
1167
1132 Here are a few of the relevant fixes,
1168 Here are a few of the relevant fixes,
1133 as usual you can find the full list of PRs on GitHub under `the 8.7 milestone
1169 as usual you can find the full list of PRs on GitHub under `the 8.7 milestone
1134 <https://github.com/ipython/ipython/pulls?q=milestone%3A8.7>`__.
1170 <https://github.com/ipython/ipython/pulls?q=milestone%3A8.7>`__.
1135
1171
1136
1172
1137 - :ghpull:`13834` bump the minimum prompt toolkit to 3.0.11.
1173 - :ghpull:`13834` bump the minimum prompt toolkit to 3.0.11.
1138 - IPython shipped with the ``py.typed`` marker now, and we are progressively
1174 - IPython shipped with the ``py.typed`` marker now, and we are progressively
1139 adding more types. :ghpull:`13831`
1175 adding more types. :ghpull:`13831`
1140 - :ghpull:`13817` add configuration of code blacks formatting.
1176 - :ghpull:`13817` add configuration of code blacks formatting.
1141
1177
1142
1178
1143 Thanks to the `D. E. Shaw group <https://deshaw.com/>`__ for sponsoring
1179 Thanks to the `D. E. Shaw group <https://deshaw.com/>`__ for sponsoring
1144 work on IPython and related libraries.
1180 work on IPython and related libraries.
1145
1181
1146
1182
1147 .. _version 8.6.0:
1183 .. _version 8.6.0:
1148
1184
1149 IPython 8.6.0
1185 IPython 8.6.0
1150 -------------
1186 -------------
1151
1187
1152 Back to a more regular release schedule (at least I try), as Friday is
1188 Back to a more regular release schedule (at least I try), as Friday is
1153 already over by more than 24h hours. This is a slightly bigger release with a
1189 already over by more than 24h hours. This is a slightly bigger release with a
1154 few new features that contain no less than 25 PRs.
1190 few new features that contain no less than 25 PRs.
1155
1191
1156 We'll notably found a couple of non negligible changes:
1192 We'll notably found a couple of non negligible changes:
1157
1193
1158 The ``install_ext`` and related functions have been removed after being
1194 The ``install_ext`` and related functions have been removed after being
1159 deprecated for years. You can use pip to install extensions. ``pip`` did not
1195 deprecated for years. You can use pip to install extensions. ``pip`` did not
1160 exist when ``install_ext`` was introduced. You can still load local extensions
1196 exist when ``install_ext`` was introduced. You can still load local extensions
1161 without installing them. Just set your ``sys.path`` for example. :ghpull:`13744`
1197 without installing them. Just set your ``sys.path`` for example. :ghpull:`13744`
1162
1198
1163 IPython now has extra entry points that use the major *and minor* version of
1199 IPython now has extra entry points that use the major *and minor* version of
1164 python. For some of you this means that you can do a quick ``ipython3.10`` to
1200 python. For some of you this means that you can do a quick ``ipython3.10`` to
1165 launch IPython from the Python 3.10 interpreter, while still using Python 3.11
1201 launch IPython from the Python 3.10 interpreter, while still using Python 3.11
1166 as your main Python. :ghpull:`13743`
1202 as your main Python. :ghpull:`13743`
1167
1203
1168 The completer matcher API has been improved. See :ghpull:`13745`. This should
1204 The completer matcher API has been improved. See :ghpull:`13745`. This should
1169 improve the type inference and improve dict keys completions in many use case.
1205 improve the type inference and improve dict keys completions in many use case.
1170 Thanks ``@krassowski`` for all the work, and the D.E. Shaw group for sponsoring
1206 Thanks ``@krassowski`` for all the work, and the D.E. Shaw group for sponsoring
1171 it.
1207 it.
1172
1208
1173 The color of error nodes in tracebacks can now be customized. See
1209 The color of error nodes in tracebacks can now be customized. See
1174 :ghpull:`13756`. This is a private attribute until someone finds the time to
1210 :ghpull:`13756`. This is a private attribute until someone finds the time to
1175 properly add a configuration option. Note that with Python 3.11 that also shows
1211 properly add a configuration option. Note that with Python 3.11 that also shows
1176 the relevant nodes in traceback, it would be good to leverage this information
1212 the relevant nodes in traceback, it would be good to leverage this information
1177 (plus the "did you mean" info added on attribute errors). But that's likely work
1213 (plus the "did you mean" info added on attribute errors). But that's likely work
1178 I won't have time to do before long, so contributions welcome.
1214 I won't have time to do before long, so contributions welcome.
1179
1215
1180 As we follow NEP 29, we removed support for numpy 1.19 :ghpull:`13760`.
1216 As we follow NEP 29, we removed support for numpy 1.19 :ghpull:`13760`.
1181
1217
1182
1218
1183 The ``open()`` function present in the user namespace by default will now refuse
1219 The ``open()`` function present in the user namespace by default will now refuse
1184 to open the file descriptors 0,1,2 (stdin, out, err), to avoid crashing IPython.
1220 to open the file descriptors 0,1,2 (stdin, out, err), to avoid crashing IPython.
1185 This mostly occurs in teaching context when incorrect values get passed around.
1221 This mostly occurs in teaching context when incorrect values get passed around.
1186
1222
1187
1223
1188 The ``?``, ``??``, and corresponding ``pinfo``, ``pinfo2`` magics can now find
1224 The ``?``, ``??``, and corresponding ``pinfo``, ``pinfo2`` magics can now find
1189 objects inside arrays. That is to say, the following now works::
1225 objects inside arrays. That is to say, the following now works::
1190
1226
1191
1227
1192 >>> def my_func(*arg, **kwargs):pass
1228 >>> def my_func(*arg, **kwargs):pass
1193 >>> container = [my_func]
1229 >>> container = [my_func]
1194 >>> container[0]?
1230 >>> container[0]?
1195
1231
1196
1232
1197 If ``container`` define a custom ``getitem``, this __will__ trigger the custom
1233 If ``container`` define a custom ``getitem``, this __will__ trigger the custom
1198 method. So don't put side effects in your ``getitems``. Thanks to the D.E. Shaw
1234 method. So don't put side effects in your ``getitems``. Thanks to the D.E. Shaw
1199 group for the request and sponsoring the work.
1235 group for the request and sponsoring the work.
1200
1236
1201
1237
1202 As usual you can find the full list of PRs on GitHub under `the 8.6 milestone
1238 As usual you can find the full list of PRs on GitHub under `the 8.6 milestone
1203 <https://github.com/ipython/ipython/pulls?q=milestone%3A8.6>`__.
1239 <https://github.com/ipython/ipython/pulls?q=milestone%3A8.6>`__.
1204
1240
1205 Thanks to all hacktoberfest contributors, please contribute to
1241 Thanks to all hacktoberfest contributors, please contribute to
1206 `closember.org <https://closember.org/>`__.
1242 `closember.org <https://closember.org/>`__.
1207
1243
1208 Thanks to the `D. E. Shaw group <https://deshaw.com/>`__ for sponsoring
1244 Thanks to the `D. E. Shaw group <https://deshaw.com/>`__ for sponsoring
1209 work on IPython and related libraries.
1245 work on IPython and related libraries.
1210
1246
1211 .. _version 8.5.0:
1247 .. _version 8.5.0:
1212
1248
1213 IPython 8.5.0
1249 IPython 8.5.0
1214 -------------
1250 -------------
1215
1251
1216 First release since a couple of month due to various reasons and timing preventing
1252 First release since a couple of month due to various reasons and timing preventing
1217 me for sticking to the usual monthly release the last Friday of each month. This
1253 me for sticking to the usual monthly release the last Friday of each month. This
1218 is of non negligible size as it has more than two dozen PRs with various fixes
1254 is of non negligible size as it has more than two dozen PRs with various fixes
1219 an bug fixes.
1255 an bug fixes.
1220
1256
1221 Many thanks to everybody who contributed PRs for your patience in review and
1257 Many thanks to everybody who contributed PRs for your patience in review and
1222 merges.
1258 merges.
1223
1259
1224 Here is a non-exhaustive list of changes that have been implemented for IPython
1260 Here is a non-exhaustive list of changes that have been implemented for IPython
1225 8.5.0. As usual you can find the full list of issues and PRs tagged with `the
1261 8.5.0. As usual you can find the full list of issues and PRs tagged with `the
1226 8.5 milestone
1262 8.5 milestone
1227 <https://github.com/ipython/ipython/pulls?q=is%3Aclosed+milestone%3A8.5+>`__.
1263 <https://github.com/ipython/ipython/pulls?q=is%3Aclosed+milestone%3A8.5+>`__.
1228
1264
1229 - Added a shortcut for accepting auto suggestion. The End key shortcut for
1265 - Added a shortcut for accepting auto suggestion. The End key shortcut for
1230 accepting auto-suggestion This binding works in Vi mode too, provided
1266 accepting auto-suggestion This binding works in Vi mode too, provided
1231 ``TerminalInteractiveShell.emacs_bindings_in_vi_insert_mode`` is set to be
1267 ``TerminalInteractiveShell.emacs_bindings_in_vi_insert_mode`` is set to be
1232 ``True`` :ghpull:`13566`.
1268 ``True`` :ghpull:`13566`.
1233
1269
1234 - No popup in window for latex generation when generating latex (e.g. via
1270 - No popup in window for latex generation when generating latex (e.g. via
1235 `_latex_repr_`) no popup window is shows under Windows. :ghpull:`13679`
1271 `_latex_repr_`) no popup window is shows under Windows. :ghpull:`13679`
1236
1272
1237 - Fixed error raised when attempting to tab-complete an input string with
1273 - Fixed error raised when attempting to tab-complete an input string with
1238 consecutive periods or forward slashes (such as "file:///var/log/...").
1274 consecutive periods or forward slashes (such as "file:///var/log/...").
1239 :ghpull:`13675`
1275 :ghpull:`13675`
1240
1276
1241 - Relative filenames in Latex rendering :
1277 - Relative filenames in Latex rendering :
1242 The `latex_to_png_dvipng` command internally generates input and output file
1278 The `latex_to_png_dvipng` command internally generates input and output file
1243 arguments to `latex` and `dvipis`. These arguments are now generated as
1279 arguments to `latex` and `dvipis`. These arguments are now generated as
1244 relative files to the current working directory instead of absolute file
1280 relative files to the current working directory instead of absolute file
1245 paths. This solves a problem where the current working directory contains
1281 paths. This solves a problem where the current working directory contains
1246 characters that are not handled properly by `latex` and `dvips`. There are
1282 characters that are not handled properly by `latex` and `dvips`. There are
1247 no changes to the user API. :ghpull:`13680`
1283 no changes to the user API. :ghpull:`13680`
1248
1284
1249 - Stripping decorators bug: Fixed bug which meant that ipython code blocks in
1285 - Stripping decorators bug: Fixed bug which meant that ipython code blocks in
1250 restructured text documents executed with the ipython-sphinx extension
1286 restructured text documents executed with the ipython-sphinx extension
1251 skipped any lines of code containing python decorators. :ghpull:`13612`
1287 skipped any lines of code containing python decorators. :ghpull:`13612`
1252
1288
1253 - Allow some modules with frozen dataclasses to be reloaded. :ghpull:`13732`
1289 - Allow some modules with frozen dataclasses to be reloaded. :ghpull:`13732`
1254 - Fix paste magic on wayland. :ghpull:`13671`
1290 - Fix paste magic on wayland. :ghpull:`13671`
1255 - show maxlen in deque's repr. :ghpull:`13648`
1291 - show maxlen in deque's repr. :ghpull:`13648`
1256
1292
1257 Restore line numbers for Input
1293 Restore line numbers for Input
1258 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
1294 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
1259
1295
1260 Line number information in tracebacks from input are restored.
1296 Line number information in tracebacks from input are restored.
1261 Line numbers from input were removed during the transition to v8 enhanced traceback reporting.
1297 Line numbers from input were removed during the transition to v8 enhanced traceback reporting.
1262
1298
1263 So, instead of::
1299 So, instead of::
1264
1300
1265 ---------------------------------------------------------------------------
1301 ---------------------------------------------------------------------------
1266 ZeroDivisionError Traceback (most recent call last)
1302 ZeroDivisionError Traceback (most recent call last)
1267 Input In [3], in <cell line: 1>()
1303 Input In [3], in <cell line: 1>()
1268 ----> 1 myfunc(2)
1304 ----> 1 myfunc(2)
1269
1305
1270 Input In [2], in myfunc(z)
1306 Input In [2], in myfunc(z)
1271 1 def myfunc(z):
1307 1 def myfunc(z):
1272 ----> 2 foo.boo(z-1)
1308 ----> 2 foo.boo(z-1)
1273
1309
1274 File ~/code/python/ipython/foo.py:3, in boo(x)
1310 File ~/code/python/ipython/foo.py:3, in boo(x)
1275 2 def boo(x):
1311 2 def boo(x):
1276 ----> 3 return 1/(1-x)
1312 ----> 3 return 1/(1-x)
1277
1313
1278 ZeroDivisionError: division by zero
1314 ZeroDivisionError: division by zero
1279
1315
1280 The error traceback now looks like::
1316 The error traceback now looks like::
1281
1317
1282 ---------------------------------------------------------------------------
1318 ---------------------------------------------------------------------------
1283 ZeroDivisionError Traceback (most recent call last)
1319 ZeroDivisionError Traceback (most recent call last)
1284 Cell In [3], line 1
1320 Cell In [3], line 1
1285 ----> 1 myfunc(2)
1321 ----> 1 myfunc(2)
1286
1322
1287 Cell In [2], line 2, in myfunc(z)
1323 Cell In [2], line 2, in myfunc(z)
1288 1 def myfunc(z):
1324 1 def myfunc(z):
1289 ----> 2 foo.boo(z-1)
1325 ----> 2 foo.boo(z-1)
1290
1326
1291 File ~/code/python/ipython/foo.py:3, in boo(x)
1327 File ~/code/python/ipython/foo.py:3, in boo(x)
1292 2 def boo(x):
1328 2 def boo(x):
1293 ----> 3 return 1/(1-x)
1329 ----> 3 return 1/(1-x)
1294
1330
1295 ZeroDivisionError: division by zero
1331 ZeroDivisionError: division by zero
1296
1332
1297 or, with xmode=Plain::
1333 or, with xmode=Plain::
1298
1334
1299 Traceback (most recent call last):
1335 Traceback (most recent call last):
1300 Cell In [12], line 1
1336 Cell In [12], line 1
1301 myfunc(2)
1337 myfunc(2)
1302 Cell In [6], line 2 in myfunc
1338 Cell In [6], line 2 in myfunc
1303 foo.boo(z-1)
1339 foo.boo(z-1)
1304 File ~/code/python/ipython/foo.py:3 in boo
1340 File ~/code/python/ipython/foo.py:3 in boo
1305 return 1/(1-x)
1341 return 1/(1-x)
1306 ZeroDivisionError: division by zero
1342 ZeroDivisionError: division by zero
1307
1343
1308 :ghpull:`13560`
1344 :ghpull:`13560`
1309
1345
1310 New setting to silence warning if working inside a virtual environment
1346 New setting to silence warning if working inside a virtual environment
1311 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
1347 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
1312
1348
1313 Previously, when starting IPython in a virtual environment without IPython installed (so IPython from the global environment is used), the following warning was printed:
1349 Previously, when starting IPython in a virtual environment without IPython installed (so IPython from the global environment is used), the following warning was printed:
1314
1350
1315 Attempting to work in a virtualenv. If you encounter problems, please install IPython inside the virtualenv.
1351 Attempting to work in a virtualenv. If you encounter problems, please install IPython inside the virtualenv.
1316
1352
1317 This warning can be permanently silenced by setting ``c.InteractiveShell.warn_venv`` to ``False`` (the default is ``True``).
1353 This warning can be permanently silenced by setting ``c.InteractiveShell.warn_venv`` to ``False`` (the default is ``True``).
1318
1354
1319 :ghpull:`13706`
1355 :ghpull:`13706`
1320
1356
1321 -------
1357 -------
1322
1358
1323 Thanks to the `D. E. Shaw group <https://deshaw.com/>`__ for sponsoring
1359 Thanks to the `D. E. Shaw group <https://deshaw.com/>`__ for sponsoring
1324 work on IPython and related libraries.
1360 work on IPython and related libraries.
1325
1361
1326
1362
1327 .. _version 8.4.0:
1363 .. _version 8.4.0:
1328
1364
1329 IPython 8.4.0
1365 IPython 8.4.0
1330 -------------
1366 -------------
1331
1367
1332 As for 7.34, this version contains a single fix: fix uncaught BdbQuit exceptions on ipdb
1368 As for 7.34, this version contains a single fix: fix uncaught BdbQuit exceptions on ipdb
1333 exit :ghpull:`13668`, and a single typo fix in documentation: :ghpull:`13682`
1369 exit :ghpull:`13668`, and a single typo fix in documentation: :ghpull:`13682`
1334
1370
1335 Thanks to the `D. E. Shaw group <https://deshaw.com/>`__ for sponsoring
1371 Thanks to the `D. E. Shaw group <https://deshaw.com/>`__ for sponsoring
1336 work on IPython and related libraries.
1372 work on IPython and related libraries.
1337
1373
1338
1374
1339 .. _version 8.3.0:
1375 .. _version 8.3.0:
1340
1376
1341 IPython 8.3.0
1377 IPython 8.3.0
1342 -------------
1378 -------------
1343
1379
1344 - :ghpull:`13625`, using ``?``, ``??``, ``*?`` will not call
1380 - :ghpull:`13625`, using ``?``, ``??``, ``*?`` will not call
1345 ``set_next_input`` as most frontend allow proper multiline editing and it was
1381 ``set_next_input`` as most frontend allow proper multiline editing and it was
1346 causing issues for many users of multi-cell frontends. This has been backported to 7.33
1382 causing issues for many users of multi-cell frontends. This has been backported to 7.33
1347
1383
1348
1384
1349 - :ghpull:`13600`, ``pre_run_*``-hooks will now have a ``cell_id`` attribute on
1385 - :ghpull:`13600`, ``pre_run_*``-hooks will now have a ``cell_id`` attribute on
1350 the info object when frontend provides it. This has been backported to 7.33
1386 the info object when frontend provides it. This has been backported to 7.33
1351
1387
1352 - :ghpull:`13624`, fixed :kbd:`End` key being broken after accepting an
1388 - :ghpull:`13624`, fixed :kbd:`End` key being broken after accepting an
1353 auto-suggestion.
1389 auto-suggestion.
1354
1390
1355 - :ghpull:`13657` fixed an issue where history from different sessions would be mixed.
1391 - :ghpull:`13657` fixed an issue where history from different sessions would be mixed.
1356
1392
1357 .. _version 8.2.0:
1393 .. _version 8.2.0:
1358
1394
1359 IPython 8.2.0
1395 IPython 8.2.0
1360 -------------
1396 -------------
1361
1397
1362 IPython 8.2 mostly bring bugfixes to IPython.
1398 IPython 8.2 mostly bring bugfixes to IPython.
1363
1399
1364 - Auto-suggestion can now be elected with the ``end`` key. :ghpull:`13566`
1400 - Auto-suggestion can now be elected with the ``end`` key. :ghpull:`13566`
1365 - Some traceback issues with ``assert etb is not None`` have been fixed. :ghpull:`13588`
1401 - Some traceback issues with ``assert etb is not None`` have been fixed. :ghpull:`13588`
1366 - History is now pulled from the sqitel database and not from in-memory.
1402 - History is now pulled from the sqitel database and not from in-memory.
1367 In particular when using the ``%paste`` magic, the content of the pasted text will
1403 In particular when using the ``%paste`` magic, the content of the pasted text will
1368 be part of the history and not the verbatim text ``%paste`` anymore. :ghpull:`13592`
1404 be part of the history and not the verbatim text ``%paste`` anymore. :ghpull:`13592`
1369 - Fix ``Ctrl-\\`` exit cleanup :ghpull:`13603`
1405 - Fix ``Ctrl-\\`` exit cleanup :ghpull:`13603`
1370 - Fixes to ``ultratb`` ipdb support when used outside of IPython. :ghpull:`13498`
1406 - Fixes to ``ultratb`` ipdb support when used outside of IPython. :ghpull:`13498`
1371
1407
1372
1408
1373 I am still trying to fix and investigate :ghissue:`13598`, which seems to be
1409 I am still trying to fix and investigate :ghissue:`13598`, which seems to be
1374 random, and would appreciate help if you find a reproducible minimal case. I've
1410 random, and would appreciate help if you find a reproducible minimal case. I've
1375 tried to make various changes to the codebase to mitigate it, but a proper fix
1411 tried to make various changes to the codebase to mitigate it, but a proper fix
1376 will be difficult without understanding the cause.
1412 will be difficult without understanding the cause.
1377
1413
1378
1414
1379 All the issues on pull-requests for this release can be found in the `8.2
1415 All the issues on pull-requests for this release can be found in the `8.2
1380 milestone. <https://github.com/ipython/ipython/milestone/100>`__ . And some
1416 milestone. <https://github.com/ipython/ipython/milestone/100>`__ . And some
1381 documentation only PR can be found as part of the `7.33 milestone
1417 documentation only PR can be found as part of the `7.33 milestone
1382 <https://github.com/ipython/ipython/milestone/101>`__ (currently not released).
1418 <https://github.com/ipython/ipython/milestone/101>`__ (currently not released).
1383
1419
1384 Thanks to the `D. E. Shaw group <https://deshaw.com/>`__ for sponsoring
1420 Thanks to the `D. E. Shaw group <https://deshaw.com/>`__ for sponsoring
1385 work on IPython and related libraries.
1421 work on IPython and related libraries.
1386
1422
1387 .. _version 8.1.1:
1423 .. _version 8.1.1:
1388
1424
1389 IPython 8.1.1
1425 IPython 8.1.1
1390 -------------
1426 -------------
1391
1427
1392 Fix an issue with virtualenv and Python 3.8 introduced in 8.1
1428 Fix an issue with virtualenv and Python 3.8 introduced in 8.1
1393
1429
1394 Revert :ghpull:`13537` (fix an issue with symlinks in virtualenv) that raises an
1430 Revert :ghpull:`13537` (fix an issue with symlinks in virtualenv) that raises an
1395 error in Python 3.8, and fixed in a different way in :ghpull:`13559`.
1431 error in Python 3.8, and fixed in a different way in :ghpull:`13559`.
1396
1432
1397 .. _version 8.1:
1433 .. _version 8.1:
1398
1434
1399 IPython 8.1.0
1435 IPython 8.1.0
1400 -------------
1436 -------------
1401
1437
1402 IPython 8.1 is the first minor release after 8.0 and fixes a number of bugs and
1438 IPython 8.1 is the first minor release after 8.0 and fixes a number of bugs and
1403 updates a few behaviors that were problematic with the 8.0 as with many new major
1439 updates a few behaviors that were problematic with the 8.0 as with many new major
1404 release.
1440 release.
1405
1441
1406 Note that beyond the changes listed here, IPython 8.1.0 also contains all the
1442 Note that beyond the changes listed here, IPython 8.1.0 also contains all the
1407 features listed in :ref:`version 7.32`.
1443 features listed in :ref:`version 7.32`.
1408
1444
1409 - Misc and multiple fixes around quotation auto-closing. It is now disabled by
1445 - Misc and multiple fixes around quotation auto-closing. It is now disabled by
1410 default. Run with ``TerminalInteractiveShell.auto_match=True`` to re-enabled
1446 default. Run with ``TerminalInteractiveShell.auto_match=True`` to re-enabled
1411 - Require pygments>=2.4.0 :ghpull:`13459`, this was implicit in the code, but
1447 - Require pygments>=2.4.0 :ghpull:`13459`, this was implicit in the code, but
1412 is now explicit in ``setup.cfg``/``setup.py``
1448 is now explicit in ``setup.cfg``/``setup.py``
1413 - Docs improvement of ``core.magic_arguments`` examples. :ghpull:`13433`
1449 - Docs improvement of ``core.magic_arguments`` examples. :ghpull:`13433`
1414 - Multi-line edit executes too early with await. :ghpull:`13424`
1450 - Multi-line edit executes too early with await. :ghpull:`13424`
1415
1451
1416 - ``black`` is back as an optional dependency, and autoformatting disabled by
1452 - ``black`` is back as an optional dependency, and autoformatting disabled by
1417 default until some fixes are implemented (black improperly reformat magics).
1453 default until some fixes are implemented (black improperly reformat magics).
1418 :ghpull:`13471` Additionally the ability to use ``yapf`` as a code
1454 :ghpull:`13471` Additionally the ability to use ``yapf`` as a code
1419 reformatter has been added :ghpull:`13528` . You can use
1455 reformatter has been added :ghpull:`13528` . You can use
1420 ``TerminalInteractiveShell.autoformatter="black"``,
1456 ``TerminalInteractiveShell.autoformatter="black"``,
1421 ``TerminalInteractiveShell.autoformatter="yapf"`` to re-enable auto formatting
1457 ``TerminalInteractiveShell.autoformatter="yapf"`` to re-enable auto formatting
1422 with black, or switch to yapf.
1458 with black, or switch to yapf.
1423
1459
1424 - Fix and issue where ``display`` was not defined.
1460 - Fix and issue where ``display`` was not defined.
1425
1461
1426 - Auto suggestions are now configurable. Currently only
1462 - Auto suggestions are now configurable. Currently only
1427 ``AutoSuggestFromHistory`` (default) and ``None``. new provider contribution
1463 ``AutoSuggestFromHistory`` (default) and ``None``. new provider contribution
1428 welcomed. :ghpull:`13475`
1464 welcomed. :ghpull:`13475`
1429
1465
1430 - multiple packaging/testing improvement to simplify downstream packaging
1466 - multiple packaging/testing improvement to simplify downstream packaging
1431 (xfail with reasons, try to not access network...).
1467 (xfail with reasons, try to not access network...).
1432
1468
1433 - Update deprecation. ``InteractiveShell.magic`` internal method has been
1469 - Update deprecation. ``InteractiveShell.magic`` internal method has been
1434 deprecated for many years but did not emit a warning until now.
1470 deprecated for many years but did not emit a warning until now.
1435
1471
1436 - internal ``appended_to_syspath`` context manager has been deprecated.
1472 - internal ``appended_to_syspath`` context manager has been deprecated.
1437
1473
1438 - fix an issue with symlinks in virtualenv :ghpull:`13537` (Reverted in 8.1.1)
1474 - fix an issue with symlinks in virtualenv :ghpull:`13537` (Reverted in 8.1.1)
1439
1475
1440 - Fix an issue with vim mode, where cursor would not be reset on exit :ghpull:`13472`
1476 - Fix an issue with vim mode, where cursor would not be reset on exit :ghpull:`13472`
1441
1477
1442 - ipython directive now remove only known pseudo-decorators :ghpull:`13532`
1478 - ipython directive now remove only known pseudo-decorators :ghpull:`13532`
1443
1479
1444 - ``IPython/lib/security`` which used to be used for jupyter notebook has been
1480 - ``IPython/lib/security`` which used to be used for jupyter notebook has been
1445 removed.
1481 removed.
1446
1482
1447 - Fix an issue where ``async with`` would execute on new lines. :ghpull:`13436`
1483 - Fix an issue where ``async with`` would execute on new lines. :ghpull:`13436`
1448
1484
1449
1485
1450 We want to remind users that IPython is part of the Jupyter organisations, and
1486 We want to remind users that IPython is part of the Jupyter organisations, and
1451 thus governed by a Code of Conduct. Some of the behavior we have seen on GitHub is not acceptable.
1487 thus governed by a Code of Conduct. Some of the behavior we have seen on GitHub is not acceptable.
1452 Abuse and non-respectful comments on discussion will not be tolerated.
1488 Abuse and non-respectful comments on discussion will not be tolerated.
1453
1489
1454 Many thanks to all the contributors to this release, many of the above fixed issues and
1490 Many thanks to all the contributors to this release, many of the above fixed issues and
1455 new features were done by first time contributors, showing there is still
1491 new features were done by first time contributors, showing there is still
1456 plenty of easy contribution possible in IPython
1492 plenty of easy contribution possible in IPython
1457 . You can find all individual contributions
1493 . You can find all individual contributions
1458 to this milestone `on github <https://github.com/ipython/ipython/milestone/91>`__.
1494 to this milestone `on github <https://github.com/ipython/ipython/milestone/91>`__.
1459
1495
1460 Thanks as well to the `D. E. Shaw group <https://deshaw.com/>`__ for sponsoring
1496 Thanks as well to the `D. E. Shaw group <https://deshaw.com/>`__ for sponsoring
1461 work on IPython and related libraries. In particular the Lazy autoloading of
1497 work on IPython and related libraries. In particular the Lazy autoloading of
1462 magics that you will find described in the 7.32 release notes.
1498 magics that you will find described in the 7.32 release notes.
1463
1499
1464
1500
1465 .. _version 8.0.1:
1501 .. _version 8.0.1:
1466
1502
1467 IPython 8.0.1 (CVE-2022-21699)
1503 IPython 8.0.1 (CVE-2022-21699)
1468 ------------------------------
1504 ------------------------------
1469
1505
1470 IPython 8.0.1, 7.31.1 and 5.11 are security releases that change some default
1506 IPython 8.0.1, 7.31.1 and 5.11 are security releases that change some default
1471 values in order to prevent potential Execution with Unnecessary Privileges.
1507 values in order to prevent potential Execution with Unnecessary Privileges.
1472
1508
1473 Almost all version of IPython looks for configuration and profiles in current
1509 Almost all version of IPython looks for configuration and profiles in current
1474 working directory. Since IPython was developed before pip and environments
1510 working directory. Since IPython was developed before pip and environments
1475 existed it was used a convenient way to load code/packages in a project
1511 existed it was used a convenient way to load code/packages in a project
1476 dependent way.
1512 dependent way.
1477
1513
1478 In 2022, it is not necessary anymore, and can lead to confusing behavior where
1514 In 2022, it is not necessary anymore, and can lead to confusing behavior where
1479 for example cloning a repository and starting IPython or loading a notebook from
1515 for example cloning a repository and starting IPython or loading a notebook from
1480 any Jupyter-Compatible interface that has ipython set as a kernel can lead to
1516 any Jupyter-Compatible interface that has ipython set as a kernel can lead to
1481 code execution.
1517 code execution.
1482
1518
1483
1519
1484 I did not find any standard way for packaged to advertise CVEs they fix, I'm
1520 I did not find any standard way for packaged to advertise CVEs they fix, I'm
1485 thus trying to add a ``__patched_cves__`` attribute to the IPython module that
1521 thus trying to add a ``__patched_cves__`` attribute to the IPython module that
1486 list the CVEs that should have been fixed. This attribute is informational only
1522 list the CVEs that should have been fixed. This attribute is informational only
1487 as if a executable has a flaw, this value can always be changed by an attacker.
1523 as if a executable has a flaw, this value can always be changed by an attacker.
1488
1524
1489 .. code::
1525 .. code::
1490
1526
1491 In [1]: import IPython
1527 In [1]: import IPython
1492
1528
1493 In [2]: IPython.__patched_cves__
1529 In [2]: IPython.__patched_cves__
1494 Out[2]: {'CVE-2022-21699'}
1530 Out[2]: {'CVE-2022-21699'}
1495
1531
1496 In [3]: 'CVE-2022-21699' in IPython.__patched_cves__
1532 In [3]: 'CVE-2022-21699' in IPython.__patched_cves__
1497 Out[3]: True
1533 Out[3]: True
1498
1534
1499 Thus starting with this version:
1535 Thus starting with this version:
1500
1536
1501 - The current working directory is not searched anymore for profiles or
1537 - The current working directory is not searched anymore for profiles or
1502 configurations files.
1538 configurations files.
1503 - Added a ``__patched_cves__`` attribute (set of strings) to IPython module that contain
1539 - Added a ``__patched_cves__`` attribute (set of strings) to IPython module that contain
1504 the list of fixed CVE. This is informational only.
1540 the list of fixed CVE. This is informational only.
1505
1541
1506 Further details can be read on the `GitHub Advisory <https://github.com/ipython/ipython/security/advisories/GHSA-pq7m-3gw7-gq5x>`__
1542 Further details can be read on the `GitHub Advisory <https://github.com/ipython/ipython/security/advisories/GHSA-pq7m-3gw7-gq5x>`__
1507
1543
1508
1544
1509 .. _version 8.0:
1545 .. _version 8.0:
1510
1546
1511 IPython 8.0
1547 IPython 8.0
1512 -----------
1548 -----------
1513
1549
1514 IPython 8.0 is bringing a large number of new features and improvements to both the
1550 IPython 8.0 is bringing a large number of new features and improvements to both the
1515 user of the terminal and of the kernel via Jupyter. The removal of compatibility
1551 user of the terminal and of the kernel via Jupyter. The removal of compatibility
1516 with an older version of Python is also the opportunity to do a couple of
1552 with an older version of Python is also the opportunity to do a couple of
1517 performance improvements in particular with respect to startup time.
1553 performance improvements in particular with respect to startup time.
1518 The 8.x branch started diverging from its predecessor around IPython 7.12
1554 The 8.x branch started diverging from its predecessor around IPython 7.12
1519 (January 2020).
1555 (January 2020).
1520
1556
1521 This release contains 250+ pull requests, in addition to many of the features
1557 This release contains 250+ pull requests, in addition to many of the features
1522 and backports that have made it to the 7.x branch. Please see the
1558 and backports that have made it to the 7.x branch. Please see the
1523 `8.0 milestone <https://github.com/ipython/ipython/milestone/73?closed=1>`__ for the full list of pull requests.
1559 `8.0 milestone <https://github.com/ipython/ipython/milestone/73?closed=1>`__ for the full list of pull requests.
1524
1560
1525 Please feel free to send pull requests to update those notes after release,
1561 Please feel free to send pull requests to update those notes after release,
1526 I have likely forgotten a few things reviewing 250+ PRs.
1562 I have likely forgotten a few things reviewing 250+ PRs.
1527
1563
1528 Dependencies changes/downstream packaging
1564 Dependencies changes/downstream packaging
1529 -----------------------------------------
1565 -----------------------------------------
1530
1566
1531 Most of our building steps have been changed to be (mostly) declarative
1567 Most of our building steps have been changed to be (mostly) declarative
1532 and follow PEP 517. We are trying to completely remove ``setup.py`` (:ghpull:`13238`) and are
1568 and follow PEP 517. We are trying to completely remove ``setup.py`` (:ghpull:`13238`) and are
1533 looking for help to do so.
1569 looking for help to do so.
1534
1570
1535 - minimum supported ``traitlets`` version is now 5+
1571 - minimum supported ``traitlets`` version is now 5+
1536 - we now require ``stack_data``
1572 - we now require ``stack_data``
1537 - minimal Python is now 3.8
1573 - minimal Python is now 3.8
1538 - ``nose`` is not a testing requirement anymore
1574 - ``nose`` is not a testing requirement anymore
1539 - ``pytest`` replaces nose.
1575 - ``pytest`` replaces nose.
1540 - ``iptest``/``iptest3`` cli entrypoints do not exist anymore.
1576 - ``iptest``/``iptest3`` cli entrypoints do not exist anymore.
1541 - the minimum officially ​supported ``numpy`` version has been bumped, but this should
1577 - the minimum officially ​supported ``numpy`` version has been bumped, but this should
1542 not have much effect on packaging.
1578 not have much effect on packaging.
1543
1579
1544
1580
1545 Deprecation and removal
1581 Deprecation and removal
1546 -----------------------
1582 -----------------------
1547
1583
1548 We removed almost all features, arguments, functions, and modules that were
1584 We removed almost all features, arguments, functions, and modules that were
1549 marked as deprecated between IPython 1.0 and 5.0. As a reminder, 5.0 was released
1585 marked as deprecated between IPython 1.0 and 5.0. As a reminder, 5.0 was released
1550 in 2016, and 1.0 in 2013. Last release of the 5 branch was 5.10.0, in May 2020.
1586 in 2016, and 1.0 in 2013. Last release of the 5 branch was 5.10.0, in May 2020.
1551 The few remaining deprecated features we left have better deprecation warnings
1587 The few remaining deprecated features we left have better deprecation warnings
1552 or have been turned into explicit errors for better error messages.
1588 or have been turned into explicit errors for better error messages.
1553
1589
1554 I will use this occasion to add the following requests to anyone emitting a
1590 I will use this occasion to add the following requests to anyone emitting a
1555 deprecation warning:
1591 deprecation warning:
1556
1592
1557 - Please add at least ``stacklevel=2`` so that the warning is emitted into the
1593 - Please add at least ``stacklevel=2`` so that the warning is emitted into the
1558 caller context, and not the callee one.
1594 caller context, and not the callee one.
1559 - Please add **since which version** something is deprecated.
1595 - Please add **since which version** something is deprecated.
1560
1596
1561 As a side note, it is much easier to conditionally compare version
1597 As a side note, it is much easier to conditionally compare version
1562 numbers rather than using ``try/except`` when functionality changes with a version.
1598 numbers rather than using ``try/except`` when functionality changes with a version.
1563
1599
1564 I won't list all the removed features here, but modules like ``IPython.kernel``,
1600 I won't list all the removed features here, but modules like ``IPython.kernel``,
1565 which was just a shim module around ``ipykernel`` for the past 8 years, have been
1601 which was just a shim module around ``ipykernel`` for the past 8 years, have been
1566 removed, and so many other similar things that pre-date the name **Jupyter**
1602 removed, and so many other similar things that pre-date the name **Jupyter**
1567 itself.
1603 itself.
1568
1604
1569 We no longer need to add ``IPython.extensions`` to the PYTHONPATH because that is being
1605 We no longer need to add ``IPython.extensions`` to the PYTHONPATH because that is being
1570 handled by ``load_extension``.
1606 handled by ``load_extension``.
1571
1607
1572 We are also removing ``Cythonmagic``, ``sympyprinting`` and ``rmagic`` as they are now in
1608 We are also removing ``Cythonmagic``, ``sympyprinting`` and ``rmagic`` as they are now in
1573 other packages and no longer need to be inside IPython.
1609 other packages and no longer need to be inside IPython.
1574
1610
1575
1611
1576 Documentation
1612 Documentation
1577 -------------
1613 -------------
1578
1614
1579 The majority of our docstrings have now been reformatted and automatically fixed by
1615 The majority of our docstrings have now been reformatted and automatically fixed by
1580 the experimental `VΓ©lin <https://pypi.org/project/velin/>`_ project to conform
1616 the experimental `VΓ©lin <https://pypi.org/project/velin/>`_ project to conform
1581 to numpydoc.
1617 to numpydoc.
1582
1618
1583 Type annotations
1619 Type annotations
1584 ----------------
1620 ----------------
1585
1621
1586 While IPython itself is highly dynamic and can't be completely typed, many of
1622 While IPython itself is highly dynamic and can't be completely typed, many of
1587 the functions now have type annotations, and part of the codebase is now checked
1623 the functions now have type annotations, and part of the codebase is now checked
1588 by mypy.
1624 by mypy.
1589
1625
1590
1626
1591 Featured changes
1627 Featured changes
1592 ----------------
1628 ----------------
1593
1629
1594 Here is a features list of changes in IPython 8.0. This is of course non-exhaustive.
1630 Here is a features list of changes in IPython 8.0. This is of course non-exhaustive.
1595 Please note as well that many features have been added in the 7.x branch as well
1631 Please note as well that many features have been added in the 7.x branch as well
1596 (and hence why you want to read the 7.x what's new notes), in particular
1632 (and hence why you want to read the 7.x what's new notes), in particular
1597 features contributed by QuantStack (with respect to debugger protocol and Xeus
1633 features contributed by QuantStack (with respect to debugger protocol and Xeus
1598 Python), as well as many debugger features that I was pleased to implement as
1634 Python), as well as many debugger features that I was pleased to implement as
1599 part of my work at QuanSight and sponsored by DE Shaw.
1635 part of my work at QuanSight and sponsored by DE Shaw.
1600
1636
1601 Traceback improvements
1637 Traceback improvements
1602 ~~~~~~~~~~~~~~~~~~~~~~
1638 ~~~~~~~~~~~~~~~~~~~~~~
1603
1639
1604 Previously, error tracebacks for errors happening in code cells were showing a
1640 Previously, error tracebacks for errors happening in code cells were showing a
1605 hash, the one used for compiling the Python AST::
1641 hash, the one used for compiling the Python AST::
1606
1642
1607 In [1]: def foo():
1643 In [1]: def foo():
1608 ...: return 3 / 0
1644 ...: return 3 / 0
1609 ...:
1645 ...:
1610
1646
1611 In [2]: foo()
1647 In [2]: foo()
1612 ---------------------------------------------------------------------------
1648 ---------------------------------------------------------------------------
1613 ZeroDivisionError Traceback (most recent call last)
1649 ZeroDivisionError Traceback (most recent call last)
1614 <ipython-input-2-c19b6d9633cf> in <module>
1650 <ipython-input-2-c19b6d9633cf> in <module>
1615 ----> 1 foo()
1651 ----> 1 foo()
1616
1652
1617 <ipython-input-1-1595a74c32d5> in foo()
1653 <ipython-input-1-1595a74c32d5> in foo()
1618 1 def foo():
1654 1 def foo():
1619 ----> 2 return 3 / 0
1655 ----> 2 return 3 / 0
1620 3
1656 3
1621
1657
1622 ZeroDivisionError: division by zero
1658 ZeroDivisionError: division by zero
1623
1659
1624 The error traceback is now correctly formatted, showing the cell number in which the error happened::
1660 The error traceback is now correctly formatted, showing the cell number in which the error happened::
1625
1661
1626 In [1]: def foo():
1662 In [1]: def foo():
1627 ...: return 3 / 0
1663 ...: return 3 / 0
1628 ...:
1664 ...:
1629
1665
1630 Input In [2]: foo()
1666 Input In [2]: foo()
1631 ---------------------------------------------------------------------------
1667 ---------------------------------------------------------------------------
1632 ZeroDivisionError Traceback (most recent call last)
1668 ZeroDivisionError Traceback (most recent call last)
1633 input In [2], in <module>
1669 input In [2], in <module>
1634 ----> 1 foo()
1670 ----> 1 foo()
1635
1671
1636 Input In [1], in foo()
1672 Input In [1], in foo()
1637 1 def foo():
1673 1 def foo():
1638 ----> 2 return 3 / 0
1674 ----> 2 return 3 / 0
1639
1675
1640 ZeroDivisionError: division by zero
1676 ZeroDivisionError: division by zero
1641
1677
1642 The ``stack_data`` package has been integrated, which provides smarter information in the traceback;
1678 The ``stack_data`` package has been integrated, which provides smarter information in the traceback;
1643 in particular it will highlight the AST node where an error occurs which can help to quickly narrow down errors.
1679 in particular it will highlight the AST node where an error occurs which can help to quickly narrow down errors.
1644
1680
1645 For example in the following snippet::
1681 For example in the following snippet::
1646
1682
1647 def foo(i):
1683 def foo(i):
1648 x = [[[0]]]
1684 x = [[[0]]]
1649 return x[0][i][0]
1685 return x[0][i][0]
1650
1686
1651
1687
1652 def bar():
1688 def bar():
1653 return foo(0) + foo(
1689 return foo(0) + foo(
1654 1
1690 1
1655 ) + foo(2)
1691 ) + foo(2)
1656
1692
1657
1693
1658 calling ``bar()`` would raise an ``IndexError`` on the return line of ``foo``,
1694 calling ``bar()`` would raise an ``IndexError`` on the return line of ``foo``,
1659 and IPython 8.0 is capable of telling you where the index error occurs::
1695 and IPython 8.0 is capable of telling you where the index error occurs::
1660
1696
1661
1697
1662 IndexError
1698 IndexError
1663 Input In [2], in <module>
1699 Input In [2], in <module>
1664 ----> 1 bar()
1700 ----> 1 bar()
1665 ^^^^^
1701 ^^^^^
1666
1702
1667 Input In [1], in bar()
1703 Input In [1], in bar()
1668 6 def bar():
1704 6 def bar():
1669 ----> 7 return foo(0) + foo(
1705 ----> 7 return foo(0) + foo(
1670 ^^^^
1706 ^^^^
1671 8 1
1707 8 1
1672 ^^^^^^^^
1708 ^^^^^^^^
1673 9 ) + foo(2)
1709 9 ) + foo(2)
1674 ^^^^
1710 ^^^^
1675
1711
1676 Input In [1], in foo(i)
1712 Input In [1], in foo(i)
1677 1 def foo(i):
1713 1 def foo(i):
1678 2 x = [[[0]]]
1714 2 x = [[[0]]]
1679 ----> 3 return x[0][i][0]
1715 ----> 3 return x[0][i][0]
1680 ^^^^^^^
1716 ^^^^^^^
1681
1717
1682 The corresponding locations marked here with ``^`` will show up highlighted in
1718 The corresponding locations marked here with ``^`` will show up highlighted in
1683 the terminal and notebooks.
1719 the terminal and notebooks.
1684
1720
1685 Finally, a colon ``::`` and line number is appended after a filename in
1721 Finally, a colon ``::`` and line number is appended after a filename in
1686 traceback::
1722 traceback::
1687
1723
1688
1724
1689 ZeroDivisionError Traceback (most recent call last)
1725 ZeroDivisionError Traceback (most recent call last)
1690 File ~/error.py:4, in <module>
1726 File ~/error.py:4, in <module>
1691 1 def f():
1727 1 def f():
1692 2 1/0
1728 2 1/0
1693 ----> 4 f()
1729 ----> 4 f()
1694
1730
1695 File ~/error.py:2, in f()
1731 File ~/error.py:2, in f()
1696 1 def f():
1732 1 def f():
1697 ----> 2 1/0
1733 ----> 2 1/0
1698
1734
1699 Many terminals and editors have integrations enabling you to directly jump to the
1735 Many terminals and editors have integrations enabling you to directly jump to the
1700 relevant file/line when this syntax is used, so this small addition may have a high
1736 relevant file/line when this syntax is used, so this small addition may have a high
1701 impact on productivity.
1737 impact on productivity.
1702
1738
1703
1739
1704 Autosuggestions
1740 Autosuggestions
1705 ~~~~~~~~~~~~~~~
1741 ~~~~~~~~~~~~~~~
1706
1742
1707 Autosuggestion is a very useful feature available in `fish <https://fishshell.com/>`__, `zsh <https://en.wikipedia.org/wiki/Z_shell>`__, and `prompt-toolkit <https://python-prompt-toolkit.readthedocs.io/en/master/pages/asking_for_input.html#auto-suggestion>`__.
1743 Autosuggestion is a very useful feature available in `fish <https://fishshell.com/>`__, `zsh <https://en.wikipedia.org/wiki/Z_shell>`__, and `prompt-toolkit <https://python-prompt-toolkit.readthedocs.io/en/master/pages/asking_for_input.html#auto-suggestion>`__.
1708
1744
1709 `Ptpython <https://github.com/prompt-toolkit/ptpython#ptpython>`__ allows users to enable this feature in
1745 `Ptpython <https://github.com/prompt-toolkit/ptpython#ptpython>`__ allows users to enable this feature in
1710 `ptpython/config.py <https://github.com/prompt-toolkit/ptpython/blob/master/examples/ptpython_config/config.py#L90>`__.
1746 `ptpython/config.py <https://github.com/prompt-toolkit/ptpython/blob/master/examples/ptpython_config/config.py#L90>`__.
1711
1747
1712 This feature allows users to accept autosuggestions with ctrl e, ctrl f,
1748 This feature allows users to accept autosuggestions with ctrl e, ctrl f,
1713 or right arrow as described below.
1749 or right arrow as described below.
1714
1750
1715 1. Start ipython
1751 1. Start ipython
1716
1752
1717 .. image:: ../_images/8.0/auto_suggest_1_prompt_no_text.png
1753 .. image:: ../_images/8.0/auto_suggest_1_prompt_no_text.png
1718
1754
1719 2. Run ``print("hello")``
1755 2. Run ``print("hello")``
1720
1756
1721 .. image:: ../_images/8.0/auto_suggest_2_print_hello_suggest.png
1757 .. image:: ../_images/8.0/auto_suggest_2_print_hello_suggest.png
1722
1758
1723 3. start typing ``print`` again to see the autosuggestion
1759 3. start typing ``print`` again to see the autosuggestion
1724
1760
1725 .. image:: ../_images/8.0/auto_suggest_3_print_hello_suggest.png
1761 .. image:: ../_images/8.0/auto_suggest_3_print_hello_suggest.png
1726
1762
1727 4. Press ``ctrl-f``, or ``ctrl-e``, or ``right-arrow`` to accept the suggestion
1763 4. Press ``ctrl-f``, or ``ctrl-e``, or ``right-arrow`` to accept the suggestion
1728
1764
1729 .. image:: ../_images/8.0/auto_suggest_4_print_hello.png
1765 .. image:: ../_images/8.0/auto_suggest_4_print_hello.png
1730
1766
1731 You can also complete word by word:
1767 You can also complete word by word:
1732
1768
1733 1. Run ``def say_hello(): print("hello")``
1769 1. Run ``def say_hello(): print("hello")``
1734
1770
1735 .. image:: ../_images/8.0/auto_suggest_second_prompt.png
1771 .. image:: ../_images/8.0/auto_suggest_second_prompt.png
1736
1772
1737 2. Start typing the first letter if ``def`` to see the autosuggestion
1773 2. Start typing the first letter if ``def`` to see the autosuggestion
1738
1774
1739 .. image:: ../_images/8.0/auto_suggest_d_phantom.png
1775 .. image:: ../_images/8.0/auto_suggest_d_phantom.png
1740
1776
1741 3. Press ``alt-f`` (or ``escape`` followed by ``f``), to accept the first word of the suggestion
1777 3. Press ``alt-f`` (or ``escape`` followed by ``f``), to accept the first word of the suggestion
1742
1778
1743 .. image:: ../_images/8.0/auto_suggest_def_phantom.png
1779 .. image:: ../_images/8.0/auto_suggest_def_phantom.png
1744
1780
1745 Importantly, this feature does not interfere with tab completion:
1781 Importantly, this feature does not interfere with tab completion:
1746
1782
1747 1. After running ``def say_hello(): print("hello")``, press d
1783 1. After running ``def say_hello(): print("hello")``, press d
1748
1784
1749 .. image:: ../_images/8.0/auto_suggest_d_phantom.png
1785 .. image:: ../_images/8.0/auto_suggest_d_phantom.png
1750
1786
1751 2. Press Tab to start tab completion
1787 2. Press Tab to start tab completion
1752
1788
1753 .. image:: ../_images/8.0/auto_suggest_d_completions.png
1789 .. image:: ../_images/8.0/auto_suggest_d_completions.png
1754
1790
1755 3A. Press Tab again to select the first option
1791 3A. Press Tab again to select the first option
1756
1792
1757 .. image:: ../_images/8.0/auto_suggest_def_completions.png
1793 .. image:: ../_images/8.0/auto_suggest_def_completions.png
1758
1794
1759 3B. Press ``alt f`` (``escape``, ``f``) to accept to accept the first word of the suggestion
1795 3B. Press ``alt f`` (``escape``, ``f``) to accept to accept the first word of the suggestion
1760
1796
1761 .. image:: ../_images/8.0/auto_suggest_def_phantom.png
1797 .. image:: ../_images/8.0/auto_suggest_def_phantom.png
1762
1798
1763 3C. Press ``ctrl-f`` or ``ctrl-e`` to accept the entire suggestion
1799 3C. Press ``ctrl-f`` or ``ctrl-e`` to accept the entire suggestion
1764
1800
1765 .. image:: ../_images/8.0/auto_suggest_match_parens.png
1801 .. image:: ../_images/8.0/auto_suggest_match_parens.png
1766
1802
1767
1803
1768 Currently, autosuggestions are only shown in the emacs or vi insert editing modes:
1804 Currently, autosuggestions are only shown in the emacs or vi insert editing modes:
1769
1805
1770 - The ctrl e, ctrl f, and alt f shortcuts work by default in emacs mode.
1806 - The ctrl e, ctrl f, and alt f shortcuts work by default in emacs mode.
1771 - To use these shortcuts in vi insert mode, you will have to create `custom keybindings in your config.py <https://github.com/mskar/setup/commit/2892fcee46f9f80ef7788f0749edc99daccc52f4/>`__.
1807 - To use these shortcuts in vi insert mode, you will have to create `custom keybindings in your config.py <https://github.com/mskar/setup/commit/2892fcee46f9f80ef7788f0749edc99daccc52f4/>`__.
1772
1808
1773
1809
1774 Show pinfo information in ipdb using "?" and "??"
1810 Show pinfo information in ipdb using "?" and "??"
1775 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
1811 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
1776
1812
1777 In IPDB, it is now possible to show the information about an object using "?"
1813 In IPDB, it is now possible to show the information about an object using "?"
1778 and "??", in much the same way that it can be done when using the IPython prompt::
1814 and "??", in much the same way that it can be done when using the IPython prompt::
1779
1815
1780 ipdb> partial?
1816 ipdb> partial?
1781 Init signature: partial(self, /, *args, **kwargs)
1817 Init signature: partial(self, /, *args, **kwargs)
1782 Docstring:
1818 Docstring:
1783 partial(func, *args, **keywords) - new function with partial application
1819 partial(func, *args, **keywords) - new function with partial application
1784 of the given arguments and keywords.
1820 of the given arguments and keywords.
1785 File: ~/.pyenv/versions/3.8.6/lib/python3.8/functools.py
1821 File: ~/.pyenv/versions/3.8.6/lib/python3.8/functools.py
1786 Type: type
1822 Type: type
1787 Subclasses:
1823 Subclasses:
1788
1824
1789 Previously, ``pinfo`` or ``pinfo2`` command had to be used for this purpose.
1825 Previously, ``pinfo`` or ``pinfo2`` command had to be used for this purpose.
1790
1826
1791
1827
1792 Autoreload 3 feature
1828 Autoreload 3 feature
1793 ~~~~~~~~~~~~~~~~~~~~
1829 ~~~~~~~~~~~~~~~~~~~~
1794
1830
1795 Example: When an IPython session is run with the 'autoreload' extension loaded,
1831 Example: When an IPython session is run with the 'autoreload' extension loaded,
1796 you will now have the option '3' to select, which means the following:
1832 you will now have the option '3' to select, which means the following:
1797
1833
1798 1. replicate all functionality from option 2
1834 1. replicate all functionality from option 2
1799 2. autoload all new funcs/classes/enums/globals from the module when they are added
1835 2. autoload all new funcs/classes/enums/globals from the module when they are added
1800 3. autoload all newly imported funcs/classes/enums/globals from external modules
1836 3. autoload all newly imported funcs/classes/enums/globals from external modules
1801
1837
1802 Try ``%autoreload 3`` in an IPython session after running ``%load_ext autoreload``.
1838 Try ``%autoreload 3`` in an IPython session after running ``%load_ext autoreload``.
1803
1839
1804 For more information please see the following unit test : ``extensions/tests/test_autoreload.py:test_autoload_newly_added_objects``
1840 For more information please see the following unit test : ``extensions/tests/test_autoreload.py:test_autoload_newly_added_objects``
1805
1841
1806 Auto formatting with black in the CLI
1842 Auto formatting with black in the CLI
1807 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
1843 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
1808
1844
1809 This feature was present in 7.x, but disabled by default.
1845 This feature was present in 7.x, but disabled by default.
1810
1846
1811 In 8.0, input was automatically reformatted with Black when black was installed.
1847 In 8.0, input was automatically reformatted with Black when black was installed.
1812 This feature has been reverted for the time being.
1848 This feature has been reverted for the time being.
1813 You can re-enable it by setting ``TerminalInteractiveShell.autoformatter`` to ``"black"``
1849 You can re-enable it by setting ``TerminalInteractiveShell.autoformatter`` to ``"black"``
1814
1850
1815 History Range Glob feature
1851 History Range Glob feature
1816 ~~~~~~~~~~~~~~~~~~~~~~~~~~
1852 ~~~~~~~~~~~~~~~~~~~~~~~~~~
1817
1853
1818 Previously, when using ``%history``, users could specify either
1854 Previously, when using ``%history``, users could specify either
1819 a range of sessions and lines, for example:
1855 a range of sessions and lines, for example:
1820
1856
1821 .. code-block:: python
1857 .. code-block:: python
1822
1858
1823 ~8/1-~6/5 # see history from the first line of 8 sessions ago,
1859 ~8/1-~6/5 # see history from the first line of 8 sessions ago,
1824 # to the fifth line of 6 sessions ago.``
1860 # to the fifth line of 6 sessions ago.``
1825
1861
1826 Or users could specify a glob pattern:
1862 Or users could specify a glob pattern:
1827
1863
1828 .. code-block:: python
1864 .. code-block:: python
1829
1865
1830 -g <pattern> # glob ALL history for the specified pattern.
1866 -g <pattern> # glob ALL history for the specified pattern.
1831
1867
1832 However users could *not* specify both.
1868 However users could *not* specify both.
1833
1869
1834 If a user *did* specify both a range and a glob pattern,
1870 If a user *did* specify both a range and a glob pattern,
1835 then the glob pattern would be used (globbing *all* history) *and the range would be ignored*.
1871 then the glob pattern would be used (globbing *all* history) *and the range would be ignored*.
1836
1872
1837 With this enhancement, if a user specifies both a range and a glob pattern, then the glob pattern will be applied to the specified range of history.
1873 With this enhancement, if a user specifies both a range and a glob pattern, then the glob pattern will be applied to the specified range of history.
1838
1874
1839 Don't start a multi-line cell with sunken parenthesis
1875 Don't start a multi-line cell with sunken parenthesis
1840 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
1876 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
1841
1877
1842 From now on, IPython will not ask for the next line of input when given a single
1878 From now on, IPython will not ask for the next line of input when given a single
1843 line with more closing than opening brackets. For example, this means that if
1879 line with more closing than opening brackets. For example, this means that if
1844 you (mis)type ``]]`` instead of ``[]``, a ``SyntaxError`` will show up, instead of
1880 you (mis)type ``]]`` instead of ``[]``, a ``SyntaxError`` will show up, instead of
1845 the ``...:`` prompt continuation.
1881 the ``...:`` prompt continuation.
1846
1882
1847 IPython shell for ipdb interact
1883 IPython shell for ipdb interact
1848 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
1884 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
1849
1885
1850 The ipdb ``interact`` starts an IPython shell instead of Python's built-in ``code.interact()``.
1886 The ipdb ``interact`` starts an IPython shell instead of Python's built-in ``code.interact()``.
1851
1887
1852 Automatic Vi prompt stripping
1888 Automatic Vi prompt stripping
1853 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
1889 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
1854
1890
1855 When pasting code into IPython, it will strip the leading prompt characters if
1891 When pasting code into IPython, it will strip the leading prompt characters if
1856 there are any. For example, you can paste the following code into the console -
1892 there are any. For example, you can paste the following code into the console -
1857 it will still work, even though each line is prefixed with prompts (``In``,
1893 it will still work, even though each line is prefixed with prompts (``In``,
1858 ``Out``)::
1894 ``Out``)::
1859
1895
1860 In [1]: 2 * 2 == 4
1896 In [1]: 2 * 2 == 4
1861 Out[1]: True
1897 Out[1]: True
1862
1898
1863 In [2]: print("This still works as pasted")
1899 In [2]: print("This still works as pasted")
1864
1900
1865
1901
1866 Previously, this was not the case for the Vi-mode prompts::
1902 Previously, this was not the case for the Vi-mode prompts::
1867
1903
1868 In [1]: [ins] In [13]: 2 * 2 == 4
1904 In [1]: [ins] In [13]: 2 * 2 == 4
1869 ...: Out[13]: True
1905 ...: Out[13]: True
1870 ...:
1906 ...:
1871 File "<ipython-input-1-727bb88eaf33>", line 1
1907 File "<ipython-input-1-727bb88eaf33>", line 1
1872 [ins] In [13]: 2 * 2 == 4
1908 [ins] In [13]: 2 * 2 == 4
1873 ^
1909 ^
1874 SyntaxError: invalid syntax
1910 SyntaxError: invalid syntax
1875
1911
1876 This is now fixed, and Vi prompt prefixes - ``[ins]`` and ``[nav]`` - are
1912 This is now fixed, and Vi prompt prefixes - ``[ins]`` and ``[nav]`` - are
1877 skipped just as the normal ``In`` would be.
1913 skipped just as the normal ``In`` would be.
1878
1914
1879 IPython shell can be started in the Vi mode using ``ipython --TerminalInteractiveShell.editing_mode=vi``,
1915 IPython shell can be started in the Vi mode using ``ipython --TerminalInteractiveShell.editing_mode=vi``,
1880 You should be able to change mode dynamically with ``%config TerminalInteractiveShell.editing_mode='vi'``
1916 You should be able to change mode dynamically with ``%config TerminalInteractiveShell.editing_mode='vi'``
1881
1917
1882 Empty History Ranges
1918 Empty History Ranges
1883 ~~~~~~~~~~~~~~~~~~~~
1919 ~~~~~~~~~~~~~~~~~~~~
1884
1920
1885 A number of magics that take history ranges can now be used with an empty
1921 A number of magics that take history ranges can now be used with an empty
1886 range. These magics are:
1922 range. These magics are:
1887
1923
1888 * ``%save``
1924 * ``%save``
1889 * ``%load``
1925 * ``%load``
1890 * ``%pastebin``
1926 * ``%pastebin``
1891 * ``%pycat``
1927 * ``%pycat``
1892
1928
1893 Using them this way will make them take the history of the current session up
1929 Using them this way will make them take the history of the current session up
1894 to the point of the magic call (such that the magic itself will not be
1930 to the point of the magic call (such that the magic itself will not be
1895 included).
1931 included).
1896
1932
1897 Therefore it is now possible to save the whole history to a file using
1933 Therefore it is now possible to save the whole history to a file using
1898 ``%save <filename>``, load and edit it using ``%load`` (makes for a nice usage
1934 ``%save <filename>``, load and edit it using ``%load`` (makes for a nice usage
1899 when followed with :kbd:`F2`), send it to `dpaste.org <http://dpast.org>`_ using
1935 when followed with :kbd:`F2`), send it to `dpaste.org <http://dpast.org>`_ using
1900 ``%pastebin``, or view the whole thing syntax-highlighted with a single
1936 ``%pastebin``, or view the whole thing syntax-highlighted with a single
1901 ``%pycat``.
1937 ``%pycat``.
1902
1938
1903
1939
1904 Windows timing implementation: Switch to process_time
1940 Windows timing implementation: Switch to process_time
1905 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
1941 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
1906 Timing on Windows, for example with ``%%time``, was changed from being based on ``time.perf_counter``
1942 Timing on Windows, for example with ``%%time``, was changed from being based on ``time.perf_counter``
1907 (which counted time even when the process was sleeping) to being based on ``time.process_time`` instead
1943 (which counted time even when the process was sleeping) to being based on ``time.process_time`` instead
1908 (which only counts CPU time). This brings it closer to the behavior on Linux. See :ghpull:`12984`.
1944 (which only counts CPU time). This brings it closer to the behavior on Linux. See :ghpull:`12984`.
1909
1945
1910 Miscellaneous
1946 Miscellaneous
1911 ~~~~~~~~~~~~~
1947 ~~~~~~~~~~~~~
1912 - Non-text formatters are not disabled in the terminal, which should simplify
1948 - Non-text formatters are not disabled in the terminal, which should simplify
1913 writing extensions displaying images or other mimetypes in supporting terminals.
1949 writing extensions displaying images or other mimetypes in supporting terminals.
1914 :ghpull:`12315`
1950 :ghpull:`12315`
1915 - It is now possible to automatically insert matching brackets in Terminal IPython using the
1951 - It is now possible to automatically insert matching brackets in Terminal IPython using the
1916 ``TerminalInteractiveShell.auto_match=True`` option. :ghpull:`12586`
1952 ``TerminalInteractiveShell.auto_match=True`` option. :ghpull:`12586`
1917 - We are thinking of deprecating the current ``%%javascript`` magic in favor of a better replacement. See :ghpull:`13376`.
1953 - We are thinking of deprecating the current ``%%javascript`` magic in favor of a better replacement. See :ghpull:`13376`.
1918 - ``~`` is now expanded when part of a path in most magics :ghpull:`13385`
1954 - ``~`` is now expanded when part of a path in most magics :ghpull:`13385`
1919 - ``%/%%timeit`` magic now adds a comma every thousands to make reading a long number easier :ghpull:`13379`
1955 - ``%/%%timeit`` magic now adds a comma every thousands to make reading a long number easier :ghpull:`13379`
1920 - ``"info"`` messages can now be customised to hide some fields :ghpull:`13343`
1956 - ``"info"`` messages can now be customised to hide some fields :ghpull:`13343`
1921 - ``collections.UserList`` now pretty-prints :ghpull:`13320`
1957 - ``collections.UserList`` now pretty-prints :ghpull:`13320`
1922 - The debugger now has a persistent history, which should make it less
1958 - The debugger now has a persistent history, which should make it less
1923 annoying to retype commands :ghpull:`13246`
1959 annoying to retype commands :ghpull:`13246`
1924 - ``!pip`` ``!conda`` ``!cd`` or ``!ls`` are likely doing the wrong thing. We
1960 - ``!pip`` ``!conda`` ``!cd`` or ``!ls`` are likely doing the wrong thing. We
1925 now warn users if they use one of those commands. :ghpull:`12954`
1961 now warn users if they use one of those commands. :ghpull:`12954`
1926 - Make ``%precision`` work for ``numpy.float64`` type :ghpull:`12902`
1962 - Make ``%precision`` work for ``numpy.float64`` type :ghpull:`12902`
1927
1963
1928 Re-added support for XDG config directories
1964 Re-added support for XDG config directories
1929 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
1965 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
1930
1966
1931 XDG support through the years comes and goes. There is a tension between having
1967 XDG support through the years comes and goes. There is a tension between having
1932 an identical location for configuration in all platforms versus having simple instructions.
1968 an identical location for configuration in all platforms versus having simple instructions.
1933 After initial failures a couple of years ago, IPython was modified to automatically migrate XDG
1969 After initial failures a couple of years ago, IPython was modified to automatically migrate XDG
1934 config files back into ``~/.ipython``. That migration code has now been removed.
1970 config files back into ``~/.ipython``. That migration code has now been removed.
1935 IPython now checks the XDG locations, so if you _manually_ move your config
1971 IPython now checks the XDG locations, so if you _manually_ move your config
1936 files to your preferred location, IPython will not move them back.
1972 files to your preferred location, IPython will not move them back.
1937
1973
1938
1974
1939 Preparing for Python 3.10
1975 Preparing for Python 3.10
1940 -------------------------
1976 -------------------------
1941
1977
1942 To prepare for Python 3.10, we have started working on removing reliance and
1978 To prepare for Python 3.10, we have started working on removing reliance and
1943 any dependency that is not compatible with Python 3.10. This includes migrating our
1979 any dependency that is not compatible with Python 3.10. This includes migrating our
1944 test suite to pytest and starting to remove nose. This also means that the
1980 test suite to pytest and starting to remove nose. This also means that the
1945 ``iptest`` command is now gone and all testing is via pytest.
1981 ``iptest`` command is now gone and all testing is via pytest.
1946
1982
1947 This was in large part thanks to the NumFOCUS Small Developer grant, which enabled us to
1983 This was in large part thanks to the NumFOCUS Small Developer grant, which enabled us to
1948 allocate \$4000 to hire `Nikita Kniazev (@Kojoley) <https://github.com/Kojoley>`_,
1984 allocate \$4000 to hire `Nikita Kniazev (@Kojoley) <https://github.com/Kojoley>`_,
1949 who did a fantastic job at updating our code base, migrating to pytest, pushing
1985 who did a fantastic job at updating our code base, migrating to pytest, pushing
1950 our coverage, and fixing a large number of bugs. I highly recommend contacting
1986 our coverage, and fixing a large number of bugs. I highly recommend contacting
1951 them if you need help with C++ and Python projects.
1987 them if you need help with C++ and Python projects.
1952
1988
1953 You can find all relevant issues and PRs with `the SDG 2021 tag <https://github.com/ipython/ipython/issues?q=label%3A%22Numfocus+SDG+2021%22+>`__
1989 You can find all relevant issues and PRs with `the SDG 2021 tag <https://github.com/ipython/ipython/issues?q=label%3A%22Numfocus+SDG+2021%22+>`__
1954
1990
1955 Removing support for older Python versions
1991 Removing support for older Python versions
1956 ------------------------------------------
1992 ------------------------------------------
1957
1993
1958
1994
1959 We are removing support for Python up through 3.7, allowing internal code to use the more
1995 We are removing support for Python up through 3.7, allowing internal code to use the more
1960 efficient ``pathlib`` and to make better use of type annotations.
1996 efficient ``pathlib`` and to make better use of type annotations.
1961
1997
1962 .. image:: ../_images/8.0/pathlib_pathlib_everywhere.jpg
1998 .. image:: ../_images/8.0/pathlib_pathlib_everywhere.jpg
1963 :alt: "Meme image of Toy Story with Woody and Buzz, with the text 'pathlib, pathlib everywhere'"
1999 :alt: "Meme image of Toy Story with Woody and Buzz, with the text 'pathlib, pathlib everywhere'"
1964
2000
1965
2001
1966 We had about 34 PRs only to update some logic to update some functions from managing strings to
2002 We had about 34 PRs only to update some logic to update some functions from managing strings to
1967 using Pathlib.
2003 using Pathlib.
1968
2004
1969 The completer has also seen significant updates and now makes use of newer Jedi APIs,
2005 The completer has also seen significant updates and now makes use of newer Jedi APIs,
1970 offering faster and more reliable tab completion.
2006 offering faster and more reliable tab completion.
1971
2007
1972 Misc Statistics
2008 Misc Statistics
1973 ---------------
2009 ---------------
1974
2010
1975 Here are some numbers::
2011 Here are some numbers::
1976
2012
1977 7.x: 296 files, 12561 blank lines, 20282 comments, 35142 line of code.
2013 7.x: 296 files, 12561 blank lines, 20282 comments, 35142 line of code.
1978 8.0: 252 files, 12053 blank lines, 19232 comments, 34505 line of code.
2014 8.0: 252 files, 12053 blank lines, 19232 comments, 34505 line of code.
1979
2015
1980 $ git diff --stat 7.x...master | tail -1
2016 $ git diff --stat 7.x...master | tail -1
1981 340 files changed, 13399 insertions(+), 12421 deletions(-)
2017 340 files changed, 13399 insertions(+), 12421 deletions(-)
1982
2018
1983 We have commits from 162 authors, who contributed 1916 commits in 23 month, excluding merges (to not bias toward
2019 We have commits from 162 authors, who contributed 1916 commits in 23 month, excluding merges (to not bias toward
1984 maintainers pushing buttons).::
2020 maintainers pushing buttons).::
1985
2021
1986 $ git shortlog -s --no-merges 7.x...master | sort -nr
2022 $ git shortlog -s --no-merges 7.x...master | sort -nr
1987 535 Matthias Bussonnier
2023 535 Matthias Bussonnier
1988 86 Nikita Kniazev
2024 86 Nikita Kniazev
1989 69 Blazej Michalik
2025 69 Blazej Michalik
1990 49 Samuel Gaist
2026 49 Samuel Gaist
1991 27 Itamar Turner-Trauring
2027 27 Itamar Turner-Trauring
1992 18 Spas Kalaydzhisyki
2028 18 Spas Kalaydzhisyki
1993 17 Thomas Kluyver
2029 17 Thomas Kluyver
1994 17 Quentin Peter
2030 17 Quentin Peter
1995 17 James Morris
2031 17 James Morris
1996 17 Artur Svistunov
2032 17 Artur Svistunov
1997 15 Bart Skowron
2033 15 Bart Skowron
1998 14 Alex Hall
2034 14 Alex Hall
1999 13 rushabh-v
2035 13 rushabh-v
2000 13 Terry Davis
2036 13 Terry Davis
2001 13 Benjamin Ragan-Kelley
2037 13 Benjamin Ragan-Kelley
2002 8 martinRenou
2038 8 martinRenou
2003 8 farisachugthai
2039 8 farisachugthai
2004 7 dswij
2040 7 dswij
2005 7 Gal B
2041 7 Gal B
2006 7 Corentin Cadiou
2042 7 Corentin Cadiou
2007 6 yuji96
2043 6 yuji96
2008 6 Martin Skarzynski
2044 6 Martin Skarzynski
2009 6 Justin Palmer
2045 6 Justin Palmer
2010 6 Daniel Goldfarb
2046 6 Daniel Goldfarb
2011 6 Ben Greiner
2047 6 Ben Greiner
2012 5 Sammy Al Hashemi
2048 5 Sammy Al Hashemi
2013 5 Paul Ivanov
2049 5 Paul Ivanov
2014 5 Inception95
2050 5 Inception95
2015 5 Eyenpi
2051 5 Eyenpi
2016 5 Douglas Blank
2052 5 Douglas Blank
2017 5 Coco Mishra
2053 5 Coco Mishra
2018 5 Bibo Hao
2054 5 Bibo Hao
2019 5 AndrΓ© A. Gomes
2055 5 AndrΓ© A. Gomes
2020 5 Ahmed Fasih
2056 5 Ahmed Fasih
2021 4 takuya fujiwara
2057 4 takuya fujiwara
2022 4 palewire
2058 4 palewire
2023 4 Thomas A Caswell
2059 4 Thomas A Caswell
2024 4 Talley Lambert
2060 4 Talley Lambert
2025 4 Scott Sanderson
2061 4 Scott Sanderson
2026 4 Ram Rachum
2062 4 Ram Rachum
2027 4 Nick Muoh
2063 4 Nick Muoh
2028 4 Nathan Goldbaum
2064 4 Nathan Goldbaum
2029 4 Mithil Poojary
2065 4 Mithil Poojary
2030 4 Michael T
2066 4 Michael T
2031 4 Jakub Klus
2067 4 Jakub Klus
2032 4 Ian Castleden
2068 4 Ian Castleden
2033 4 Eli Rykoff
2069 4 Eli Rykoff
2034 4 Ashwin Vishnu
2070 4 Ashwin Vishnu
2035 3 谭九鼎
2071 3 谭九鼎
2036 3 sleeping
2072 3 sleeping
2037 3 Sylvain Corlay
2073 3 Sylvain Corlay
2038 3 Peter Corke
2074 3 Peter Corke
2039 3 Paul Bissex
2075 3 Paul Bissex
2040 3 Matthew Feickert
2076 3 Matthew Feickert
2041 3 Fernando Perez
2077 3 Fernando Perez
2042 3 Eric Wieser
2078 3 Eric Wieser
2043 3 Daniel Mietchen
2079 3 Daniel Mietchen
2044 3 Aditya Sathe
2080 3 Aditya Sathe
2045 3 007vedant
2081 3 007vedant
2046 2 rchiodo
2082 2 rchiodo
2047 2 nicolaslazo
2083 2 nicolaslazo
2048 2 luttik
2084 2 luttik
2049 2 gorogoroumaru
2085 2 gorogoroumaru
2050 2 foobarbyte
2086 2 foobarbyte
2051 2 bar-hen
2087 2 bar-hen
2052 2 Theo Ouzhinski
2088 2 Theo Ouzhinski
2053 2 Strawkage
2089 2 Strawkage
2054 2 Samreen Zarroug
2090 2 Samreen Zarroug
2055 2 Pete Blois
2091 2 Pete Blois
2056 2 Meysam Azad
2092 2 Meysam Azad
2057 2 Matthieu Ancellin
2093 2 Matthieu Ancellin
2058 2 Mark Schmitz
2094 2 Mark Schmitz
2059 2 Maor Kleinberger
2095 2 Maor Kleinberger
2060 2 MRCWirtz
2096 2 MRCWirtz
2061 2 Lumir Balhar
2097 2 Lumir Balhar
2062 2 Julien Rabinow
2098 2 Julien Rabinow
2063 2 Juan Luis Cano RodrΓ­guez
2099 2 Juan Luis Cano RodrΓ­guez
2064 2 Joyce Er
2100 2 Joyce Er
2065 2 Jakub
2101 2 Jakub
2066 2 Faris A Chugthai
2102 2 Faris A Chugthai
2067 2 Ethan Madden
2103 2 Ethan Madden
2068 2 Dimitri Papadopoulos
2104 2 Dimitri Papadopoulos
2069 2 Diego Fernandez
2105 2 Diego Fernandez
2070 2 Daniel Shimon
2106 2 Daniel Shimon
2071 2 Coco Bennett
2107 2 Coco Bennett
2072 2 Carlos Cordoba
2108 2 Carlos Cordoba
2073 2 Boyuan Liu
2109 2 Boyuan Liu
2074 2 BaoGiang HoangVu
2110 2 BaoGiang HoangVu
2075 2 Augusto
2111 2 Augusto
2076 2 Arthur Svistunov
2112 2 Arthur Svistunov
2077 2 Arthur Moreira
2113 2 Arthur Moreira
2078 2 Ali Nabipour
2114 2 Ali Nabipour
2079 2 Adam Hackbarth
2115 2 Adam Hackbarth
2080 1 richard
2116 1 richard
2081 1 linar-jether
2117 1 linar-jether
2082 1 lbennett
2118 1 lbennett
2083 1 juacrumar
2119 1 juacrumar
2084 1 gpotter2
2120 1 gpotter2
2085 1 digitalvirtuoso
2121 1 digitalvirtuoso
2086 1 dalthviz
2122 1 dalthviz
2087 1 Yonatan Goldschmidt
2123 1 Yonatan Goldschmidt
2088 1 Tomasz KΕ‚oczko
2124 1 Tomasz KΕ‚oczko
2089 1 Tobias Bengfort
2125 1 Tobias Bengfort
2090 1 Timur Kushukov
2126 1 Timur Kushukov
2091 1 Thomas
2127 1 Thomas
2092 1 Snir Broshi
2128 1 Snir Broshi
2093 1 Shao Yang Hong
2129 1 Shao Yang Hong
2094 1 Sanjana-03
2130 1 Sanjana-03
2095 1 Romulo Filho
2131 1 Romulo Filho
2096 1 Rodolfo Carvalho
2132 1 Rodolfo Carvalho
2097 1 Richard Shadrach
2133 1 Richard Shadrach
2098 1 Reilly Tucker Siemens
2134 1 Reilly Tucker Siemens
2099 1 Rakessh Roshan
2135 1 Rakessh Roshan
2100 1 Piers Titus van der Torren
2136 1 Piers Titus van der Torren
2101 1 PhanatosZou
2137 1 PhanatosZou
2102 1 Pavel Safronov
2138 1 Pavel Safronov
2103 1 Paulo S. Costa
2139 1 Paulo S. Costa
2104 1 Paul McCarthy
2140 1 Paul McCarthy
2105 1 NotWearingPants
2141 1 NotWearingPants
2106 1 Naelson Douglas
2142 1 Naelson Douglas
2107 1 Michael Tiemann
2143 1 Michael Tiemann
2108 1 Matt Wozniski
2144 1 Matt Wozniski
2109 1 Markus Wageringel
2145 1 Markus Wageringel
2110 1 Marcus Wirtz
2146 1 Marcus Wirtz
2111 1 Marcio Mazza
2147 1 Marcio Mazza
2112 1 LumΓ­r 'Frenzy' Balhar
2148 1 LumΓ­r 'Frenzy' Balhar
2113 1 Lightyagami1
2149 1 Lightyagami1
2114 1 Leon Anavi
2150 1 Leon Anavi
2115 1 LeafyLi
2151 1 LeafyLi
2116 1 L0uisJ0shua
2152 1 L0uisJ0shua
2117 1 Kyle Cutler
2153 1 Kyle Cutler
2118 1 Krzysztof Cybulski
2154 1 Krzysztof Cybulski
2119 1 Kevin Kirsche
2155 1 Kevin Kirsche
2120 1 KIU Shueng Chuan
2156 1 KIU Shueng Chuan
2121 1 Jonathan Slenders
2157 1 Jonathan Slenders
2122 1 Jay Qi
2158 1 Jay Qi
2123 1 Jake VanderPlas
2159 1 Jake VanderPlas
2124 1 Iwan Briquemont
2160 1 Iwan Briquemont
2125 1 Hussaina Begum Nandyala
2161 1 Hussaina Begum Nandyala
2126 1 Gordon Ball
2162 1 Gordon Ball
2127 1 Gabriel Simonetto
2163 1 Gabriel Simonetto
2128 1 Frank Tobia
2164 1 Frank Tobia
2129 1 Erik
2165 1 Erik
2130 1 Elliott Sales de Andrade
2166 1 Elliott Sales de Andrade
2131 1 Daniel Hahler
2167 1 Daniel Hahler
2132 1 Dan Green-Leipciger
2168 1 Dan Green-Leipciger
2133 1 Dan Green
2169 1 Dan Green
2134 1 Damian Yurzola
2170 1 Damian Yurzola
2135 1 Coon, Ethan T
2171 1 Coon, Ethan T
2136 1 Carol Willing
2172 1 Carol Willing
2137 1 Brian Lee
2173 1 Brian Lee
2138 1 Brendan Gerrity
2174 1 Brendan Gerrity
2139 1 Blake Griffin
2175 1 Blake Griffin
2140 1 Bastian Ebeling
2176 1 Bastian Ebeling
2141 1 Bartosz Telenczuk
2177 1 Bartosz Telenczuk
2142 1 Ankitsingh6299
2178 1 Ankitsingh6299
2143 1 Andrew Port
2179 1 Andrew Port
2144 1 Andrew J. Hesford
2180 1 Andrew J. Hesford
2145 1 Albert Zhang
2181 1 Albert Zhang
2146 1 Adam Johnson
2182 1 Adam Johnson
2147
2183
2148 This does not, of course, represent non-code contributions, for which we are also grateful.
2184 This does not, of course, represent non-code contributions, for which we are also grateful.
2149
2185
2150
2186
2151 API Changes using Frappuccino
2187 API Changes using Frappuccino
2152 -----------------------------
2188 -----------------------------
2153
2189
2154 This is an experimental exhaustive API difference using `Frappuccino <https://pypi.org/project/frappuccino/>`_
2190 This is an experimental exhaustive API difference using `Frappuccino <https://pypi.org/project/frappuccino/>`_
2155
2191
2156
2192
2157 The following items are new in IPython 8.0 ::
2193 The following items are new in IPython 8.0 ::
2158
2194
2159 + IPython.core.async_helpers.get_asyncio_loop()
2195 + IPython.core.async_helpers.get_asyncio_loop()
2160 + IPython.core.completer.Dict
2196 + IPython.core.completer.Dict
2161 + IPython.core.completer.Pattern
2197 + IPython.core.completer.Pattern
2162 + IPython.core.completer.Sequence
2198 + IPython.core.completer.Sequence
2163 + IPython.core.completer.__skip_doctest__
2199 + IPython.core.completer.__skip_doctest__
2164 + IPython.core.debugger.Pdb.precmd(self, line)
2200 + IPython.core.debugger.Pdb.precmd(self, line)
2165 + IPython.core.debugger.__skip_doctest__
2201 + IPython.core.debugger.__skip_doctest__
2166 + IPython.core.display.__getattr__(name)
2202 + IPython.core.display.__getattr__(name)
2167 + IPython.core.display.warn
2203 + IPython.core.display.warn
2168 + IPython.core.display_functions
2204 + IPython.core.display_functions
2169 + IPython.core.display_functions.DisplayHandle
2205 + IPython.core.display_functions.DisplayHandle
2170 + IPython.core.display_functions.DisplayHandle.display(self, obj, **kwargs)
2206 + IPython.core.display_functions.DisplayHandle.display(self, obj, **kwargs)
2171 + IPython.core.display_functions.DisplayHandle.update(self, obj, **kwargs)
2207 + IPython.core.display_functions.DisplayHandle.update(self, obj, **kwargs)
2172 + IPython.core.display_functions.__all__
2208 + IPython.core.display_functions.__all__
2173 + IPython.core.display_functions.__builtins__
2209 + IPython.core.display_functions.__builtins__
2174 + IPython.core.display_functions.__cached__
2210 + IPython.core.display_functions.__cached__
2175 + IPython.core.display_functions.__doc__
2211 + IPython.core.display_functions.__doc__
2176 + IPython.core.display_functions.__file__
2212 + IPython.core.display_functions.__file__
2177 + IPython.core.display_functions.__loader__
2213 + IPython.core.display_functions.__loader__
2178 + IPython.core.display_functions.__name__
2214 + IPython.core.display_functions.__name__
2179 + IPython.core.display_functions.__package__
2215 + IPython.core.display_functions.__package__
2180 + IPython.core.display_functions.__spec__
2216 + IPython.core.display_functions.__spec__
2181 + IPython.core.display_functions.b2a_hex
2217 + IPython.core.display_functions.b2a_hex
2182 + IPython.core.display_functions.clear_output(wait=False)
2218 + IPython.core.display_functions.clear_output(wait=False)
2183 + IPython.core.display_functions.display(*objs, include='None', exclude='None', metadata='None', transient='None', display_id='None', raw=False, clear=False, **kwargs)
2219 + IPython.core.display_functions.display(*objs, include='None', exclude='None', metadata='None', transient='None', display_id='None', raw=False, clear=False, **kwargs)
2184 + IPython.core.display_functions.publish_display_data(data, metadata='None', source='<deprecated>', *, transient='None', **kwargs)
2220 + IPython.core.display_functions.publish_display_data(data, metadata='None', source='<deprecated>', *, transient='None', **kwargs)
2185 + IPython.core.display_functions.update_display(obj, *, display_id, **kwargs)
2221 + IPython.core.display_functions.update_display(obj, *, display_id, **kwargs)
2186 + IPython.core.extensions.BUILTINS_EXTS
2222 + IPython.core.extensions.BUILTINS_EXTS
2187 + IPython.core.inputtransformer2.has_sunken_brackets(tokens)
2223 + IPython.core.inputtransformer2.has_sunken_brackets(tokens)
2188 + IPython.core.interactiveshell.Callable
2224 + IPython.core.interactiveshell.Callable
2189 + IPython.core.interactiveshell.__annotations__
2225 + IPython.core.interactiveshell.__annotations__
2190 + IPython.core.ultratb.List
2226 + IPython.core.ultratb.List
2191 + IPython.core.ultratb.Tuple
2227 + IPython.core.ultratb.Tuple
2192 + IPython.lib.pretty.CallExpression
2228 + IPython.lib.pretty.CallExpression
2193 + IPython.lib.pretty.CallExpression.factory(name)
2229 + IPython.lib.pretty.CallExpression.factory(name)
2194 + IPython.lib.pretty.RawStringLiteral
2230 + IPython.lib.pretty.RawStringLiteral
2195 + IPython.lib.pretty.RawText
2231 + IPython.lib.pretty.RawText
2196 + IPython.terminal.debugger.TerminalPdb.do_interact(self, arg)
2232 + IPython.terminal.debugger.TerminalPdb.do_interact(self, arg)
2197 + IPython.terminal.embed.Set
2233 + IPython.terminal.embed.Set
2198
2234
2199 The following items have been removed (or moved to superclass)::
2235 The following items have been removed (or moved to superclass)::
2200
2236
2201 - IPython.core.application.BaseIPythonApplication.initialize_subcommand
2237 - IPython.core.application.BaseIPythonApplication.initialize_subcommand
2202 - IPython.core.completer.Sentinel
2238 - IPython.core.completer.Sentinel
2203 - IPython.core.completer.skip_doctest
2239 - IPython.core.completer.skip_doctest
2204 - IPython.core.debugger.Tracer
2240 - IPython.core.debugger.Tracer
2205 - IPython.core.display.DisplayHandle
2241 - IPython.core.display.DisplayHandle
2206 - IPython.core.display.DisplayHandle.display
2242 - IPython.core.display.DisplayHandle.display
2207 - IPython.core.display.DisplayHandle.update
2243 - IPython.core.display.DisplayHandle.update
2208 - IPython.core.display.b2a_hex
2244 - IPython.core.display.b2a_hex
2209 - IPython.core.display.clear_output
2245 - IPython.core.display.clear_output
2210 - IPython.core.display.display
2246 - IPython.core.display.display
2211 - IPython.core.display.publish_display_data
2247 - IPython.core.display.publish_display_data
2212 - IPython.core.display.update_display
2248 - IPython.core.display.update_display
2213 - IPython.core.excolors.Deprec
2249 - IPython.core.excolors.Deprec
2214 - IPython.core.excolors.ExceptionColors
2250 - IPython.core.excolors.ExceptionColors
2215 - IPython.core.history.warn
2251 - IPython.core.history.warn
2216 - IPython.core.hooks.late_startup_hook
2252 - IPython.core.hooks.late_startup_hook
2217 - IPython.core.hooks.pre_run_code_hook
2253 - IPython.core.hooks.pre_run_code_hook
2218 - IPython.core.hooks.shutdown_hook
2254 - IPython.core.hooks.shutdown_hook
2219 - IPython.core.interactiveshell.InteractiveShell.init_deprecation_warnings
2255 - IPython.core.interactiveshell.InteractiveShell.init_deprecation_warnings
2220 - IPython.core.interactiveshell.InteractiveShell.init_readline
2256 - IPython.core.interactiveshell.InteractiveShell.init_readline
2221 - IPython.core.interactiveshell.InteractiveShell.write
2257 - IPython.core.interactiveshell.InteractiveShell.write
2222 - IPython.core.interactiveshell.InteractiveShell.write_err
2258 - IPython.core.interactiveshell.InteractiveShell.write_err
2223 - IPython.core.interactiveshell.get_default_colors
2259 - IPython.core.interactiveshell.get_default_colors
2224 - IPython.core.interactiveshell.removed_co_newlocals
2260 - IPython.core.interactiveshell.removed_co_newlocals
2225 - IPython.core.magics.execution.ExecutionMagics.profile_missing_notice
2261 - IPython.core.magics.execution.ExecutionMagics.profile_missing_notice
2226 - IPython.core.magics.script.PIPE
2262 - IPython.core.magics.script.PIPE
2227 - IPython.core.prefilter.PrefilterManager.init_transformers
2263 - IPython.core.prefilter.PrefilterManager.init_transformers
2228 - IPython.core.release.classifiers
2264 - IPython.core.release.classifiers
2229 - IPython.core.release.description
2265 - IPython.core.release.description
2230 - IPython.core.release.keywords
2266 - IPython.core.release.keywords
2231 - IPython.core.release.long_description
2267 - IPython.core.release.long_description
2232 - IPython.core.release.name
2268 - IPython.core.release.name
2233 - IPython.core.release.platforms
2269 - IPython.core.release.platforms
2234 - IPython.core.release.url
2270 - IPython.core.release.url
2235 - IPython.core.ultratb.VerboseTB.format_records
2271 - IPython.core.ultratb.VerboseTB.format_records
2236 - IPython.core.ultratb.find_recursion
2272 - IPython.core.ultratb.find_recursion
2237 - IPython.core.ultratb.findsource
2273 - IPython.core.ultratb.findsource
2238 - IPython.core.ultratb.fix_frame_records_filenames
2274 - IPython.core.ultratb.fix_frame_records_filenames
2239 - IPython.core.ultratb.inspect_error
2275 - IPython.core.ultratb.inspect_error
2240 - IPython.core.ultratb.is_recursion_error
2276 - IPython.core.ultratb.is_recursion_error
2241 - IPython.core.ultratb.with_patch_inspect
2277 - IPython.core.ultratb.with_patch_inspect
2242 - IPython.external.__all__
2278 - IPython.external.__all__
2243 - IPython.external.__builtins__
2279 - IPython.external.__builtins__
2244 - IPython.external.__cached__
2280 - IPython.external.__cached__
2245 - IPython.external.__doc__
2281 - IPython.external.__doc__
2246 - IPython.external.__file__
2282 - IPython.external.__file__
2247 - IPython.external.__loader__
2283 - IPython.external.__loader__
2248 - IPython.external.__name__
2284 - IPython.external.__name__
2249 - IPython.external.__package__
2285 - IPython.external.__package__
2250 - IPython.external.__path__
2286 - IPython.external.__path__
2251 - IPython.external.__spec__
2287 - IPython.external.__spec__
2252 - IPython.kernel.KernelConnectionInfo
2288 - IPython.kernel.KernelConnectionInfo
2253 - IPython.kernel.__builtins__
2289 - IPython.kernel.__builtins__
2254 - IPython.kernel.__cached__
2290 - IPython.kernel.__cached__
2255 - IPython.kernel.__warningregistry__
2291 - IPython.kernel.__warningregistry__
2256 - IPython.kernel.pkg
2292 - IPython.kernel.pkg
2257 - IPython.kernel.protocol_version
2293 - IPython.kernel.protocol_version
2258 - IPython.kernel.protocol_version_info
2294 - IPython.kernel.protocol_version_info
2259 - IPython.kernel.src
2295 - IPython.kernel.src
2260 - IPython.kernel.version_info
2296 - IPython.kernel.version_info
2261 - IPython.kernel.warn
2297 - IPython.kernel.warn
2262 - IPython.lib.backgroundjobs
2298 - IPython.lib.backgroundjobs
2263 - IPython.lib.backgroundjobs.BackgroundJobBase
2299 - IPython.lib.backgroundjobs.BackgroundJobBase
2264 - IPython.lib.backgroundjobs.BackgroundJobBase.run
2300 - IPython.lib.backgroundjobs.BackgroundJobBase.run
2265 - IPython.lib.backgroundjobs.BackgroundJobBase.traceback
2301 - IPython.lib.backgroundjobs.BackgroundJobBase.traceback
2266 - IPython.lib.backgroundjobs.BackgroundJobExpr
2302 - IPython.lib.backgroundjobs.BackgroundJobExpr
2267 - IPython.lib.backgroundjobs.BackgroundJobExpr.call
2303 - IPython.lib.backgroundjobs.BackgroundJobExpr.call
2268 - IPython.lib.backgroundjobs.BackgroundJobFunc
2304 - IPython.lib.backgroundjobs.BackgroundJobFunc
2269 - IPython.lib.backgroundjobs.BackgroundJobFunc.call
2305 - IPython.lib.backgroundjobs.BackgroundJobFunc.call
2270 - IPython.lib.backgroundjobs.BackgroundJobManager
2306 - IPython.lib.backgroundjobs.BackgroundJobManager
2271 - IPython.lib.backgroundjobs.BackgroundJobManager.flush
2307 - IPython.lib.backgroundjobs.BackgroundJobManager.flush
2272 - IPython.lib.backgroundjobs.BackgroundJobManager.new
2308 - IPython.lib.backgroundjobs.BackgroundJobManager.new
2273 - IPython.lib.backgroundjobs.BackgroundJobManager.remove
2309 - IPython.lib.backgroundjobs.BackgroundJobManager.remove
2274 - IPython.lib.backgroundjobs.BackgroundJobManager.result
2310 - IPython.lib.backgroundjobs.BackgroundJobManager.result
2275 - IPython.lib.backgroundjobs.BackgroundJobManager.status
2311 - IPython.lib.backgroundjobs.BackgroundJobManager.status
2276 - IPython.lib.backgroundjobs.BackgroundJobManager.traceback
2312 - IPython.lib.backgroundjobs.BackgroundJobManager.traceback
2277 - IPython.lib.backgroundjobs.__builtins__
2313 - IPython.lib.backgroundjobs.__builtins__
2278 - IPython.lib.backgroundjobs.__cached__
2314 - IPython.lib.backgroundjobs.__cached__
2279 - IPython.lib.backgroundjobs.__doc__
2315 - IPython.lib.backgroundjobs.__doc__
2280 - IPython.lib.backgroundjobs.__file__
2316 - IPython.lib.backgroundjobs.__file__
2281 - IPython.lib.backgroundjobs.__loader__
2317 - IPython.lib.backgroundjobs.__loader__
2282 - IPython.lib.backgroundjobs.__name__
2318 - IPython.lib.backgroundjobs.__name__
2283 - IPython.lib.backgroundjobs.__package__
2319 - IPython.lib.backgroundjobs.__package__
2284 - IPython.lib.backgroundjobs.__spec__
2320 - IPython.lib.backgroundjobs.__spec__
2285 - IPython.lib.kernel.__builtins__
2321 - IPython.lib.kernel.__builtins__
2286 - IPython.lib.kernel.__cached__
2322 - IPython.lib.kernel.__cached__
2287 - IPython.lib.kernel.__doc__
2323 - IPython.lib.kernel.__doc__
2288 - IPython.lib.kernel.__file__
2324 - IPython.lib.kernel.__file__
2289 - IPython.lib.kernel.__loader__
2325 - IPython.lib.kernel.__loader__
2290 - IPython.lib.kernel.__name__
2326 - IPython.lib.kernel.__name__
2291 - IPython.lib.kernel.__package__
2327 - IPython.lib.kernel.__package__
2292 - IPython.lib.kernel.__spec__
2328 - IPython.lib.kernel.__spec__
2293 - IPython.lib.kernel.__warningregistry__
2329 - IPython.lib.kernel.__warningregistry__
2294 - IPython.paths.fs_encoding
2330 - IPython.paths.fs_encoding
2295 - IPython.terminal.debugger.DEFAULT_BUFFER
2331 - IPython.terminal.debugger.DEFAULT_BUFFER
2296 - IPython.terminal.debugger.cursor_in_leading_ws
2332 - IPython.terminal.debugger.cursor_in_leading_ws
2297 - IPython.terminal.debugger.emacs_insert_mode
2333 - IPython.terminal.debugger.emacs_insert_mode
2298 - IPython.terminal.debugger.has_selection
2334 - IPython.terminal.debugger.has_selection
2299 - IPython.terminal.debugger.vi_insert_mode
2335 - IPython.terminal.debugger.vi_insert_mode
2300 - IPython.terminal.interactiveshell.DISPLAY_BANNER_DEPRECATED
2336 - IPython.terminal.interactiveshell.DISPLAY_BANNER_DEPRECATED
2301 - IPython.terminal.ipapp.TerminalIPythonApp.parse_command_line
2337 - IPython.terminal.ipapp.TerminalIPythonApp.parse_command_line
2302 - IPython.testing.test
2338 - IPython.testing.test
2303 - IPython.utils.contexts.NoOpContext
2339 - IPython.utils.contexts.NoOpContext
2304 - IPython.utils.io.IOStream
2340 - IPython.utils.io.IOStream
2305 - IPython.utils.io.IOStream.close
2341 - IPython.utils.io.IOStream.close
2306 - IPython.utils.io.IOStream.write
2342 - IPython.utils.io.IOStream.write
2307 - IPython.utils.io.IOStream.writelines
2343 - IPython.utils.io.IOStream.writelines
2308 - IPython.utils.io.__warningregistry__
2344 - IPython.utils.io.__warningregistry__
2309 - IPython.utils.io.atomic_writing
2345 - IPython.utils.io.atomic_writing
2310 - IPython.utils.io.stderr
2346 - IPython.utils.io.stderr
2311 - IPython.utils.io.stdin
2347 - IPython.utils.io.stdin
2312 - IPython.utils.io.stdout
2348 - IPython.utils.io.stdout
2313 - IPython.utils.io.unicode_std_stream
2349 - IPython.utils.io.unicode_std_stream
2314 - IPython.utils.path.get_ipython_cache_dir
2350 - IPython.utils.path.get_ipython_cache_dir
2315 - IPython.utils.path.get_ipython_dir
2351 - IPython.utils.path.get_ipython_dir
2316 - IPython.utils.path.get_ipython_module_path
2352 - IPython.utils.path.get_ipython_module_path
2317 - IPython.utils.path.get_ipython_package_dir
2353 - IPython.utils.path.get_ipython_package_dir
2318 - IPython.utils.path.locate_profile
2354 - IPython.utils.path.locate_profile
2319 - IPython.utils.path.unquote_filename
2355 - IPython.utils.path.unquote_filename
2320 - IPython.utils.py3compat.PY2
2356 - IPython.utils.py3compat.PY2
2321 - IPython.utils.py3compat.PY3
2357 - IPython.utils.py3compat.PY3
2322 - IPython.utils.py3compat.buffer_to_bytes
2358 - IPython.utils.py3compat.buffer_to_bytes
2323 - IPython.utils.py3compat.builtin_mod_name
2359 - IPython.utils.py3compat.builtin_mod_name
2324 - IPython.utils.py3compat.cast_bytes
2360 - IPython.utils.py3compat.cast_bytes
2325 - IPython.utils.py3compat.getcwd
2361 - IPython.utils.py3compat.getcwd
2326 - IPython.utils.py3compat.isidentifier
2362 - IPython.utils.py3compat.isidentifier
2327 - IPython.utils.py3compat.u_format
2363 - IPython.utils.py3compat.u_format
2328
2364
2329 The following signatures differ between 7.x and 8.0::
2365 The following signatures differ between 7.x and 8.0::
2330
2366
2331 - IPython.core.completer.IPCompleter.unicode_name_matches(self, text)
2367 - IPython.core.completer.IPCompleter.unicode_name_matches(self, text)
2332 + IPython.core.completer.IPCompleter.unicode_name_matches(text)
2368 + IPython.core.completer.IPCompleter.unicode_name_matches(text)
2333
2369
2334 - IPython.core.completer.match_dict_keys(keys, prefix, delims)
2370 - IPython.core.completer.match_dict_keys(keys, prefix, delims)
2335 + IPython.core.completer.match_dict_keys(keys, prefix, delims, extra_prefix='None')
2371 + IPython.core.completer.match_dict_keys(keys, prefix, delims, extra_prefix='None')
2336
2372
2337 - IPython.core.interactiveshell.InteractiveShell.object_inspect_mime(self, oname, detail_level=0)
2373 - IPython.core.interactiveshell.InteractiveShell.object_inspect_mime(self, oname, detail_level=0)
2338 + IPython.core.interactiveshell.InteractiveShell.object_inspect_mime(self, oname, detail_level=0, omit_sections='()')
2374 + IPython.core.interactiveshell.InteractiveShell.object_inspect_mime(self, oname, detail_level=0, omit_sections='()')
2339
2375
2340 - IPython.core.interactiveshell.InteractiveShell.set_hook(self, name, hook, priority=50, str_key='None', re_key='None', _warn_deprecated=True)
2376 - IPython.core.interactiveshell.InteractiveShell.set_hook(self, name, hook, priority=50, str_key='None', re_key='None', _warn_deprecated=True)
2341 + IPython.core.interactiveshell.InteractiveShell.set_hook(self, name, hook, priority=50, str_key='None', re_key='None')
2377 + IPython.core.interactiveshell.InteractiveShell.set_hook(self, name, hook, priority=50, str_key='None', re_key='None')
2342
2378
2343 - IPython.core.oinspect.Inspector.info(self, obj, oname='', formatter='None', info='None', detail_level=0)
2379 - IPython.core.oinspect.Inspector.info(self, obj, oname='', formatter='None', info='None', detail_level=0)
2344 + IPython.core.oinspect.Inspector.info(self, obj, oname='', info='None', detail_level=0)
2380 + IPython.core.oinspect.Inspector.info(self, obj, oname='', info='None', detail_level=0)
2345
2381
2346 - IPython.core.oinspect.Inspector.pinfo(self, obj, oname='', formatter='None', info='None', detail_level=0, enable_html_pager=True)
2382 - IPython.core.oinspect.Inspector.pinfo(self, obj, oname='', formatter='None', info='None', detail_level=0, enable_html_pager=True)
2347 + IPython.core.oinspect.Inspector.pinfo(self, obj, oname='', formatter='None', info='None', detail_level=0, enable_html_pager=True, omit_sections='()')
2383 + IPython.core.oinspect.Inspector.pinfo(self, obj, oname='', formatter='None', info='None', detail_level=0, enable_html_pager=True, omit_sections='()')
2348
2384
2349 - IPython.core.profiledir.ProfileDir.copy_config_file(self, config_file, path='None', overwrite=False)
2385 - IPython.core.profiledir.ProfileDir.copy_config_file(self, config_file, path='None', overwrite=False)
2350 + IPython.core.profiledir.ProfileDir.copy_config_file(self, config_file, path, overwrite=False)
2386 + IPython.core.profiledir.ProfileDir.copy_config_file(self, config_file, path, overwrite=False)
2351
2387
2352 - IPython.core.ultratb.VerboseTB.format_record(self, frame, file, lnum, func, lines, index)
2388 - IPython.core.ultratb.VerboseTB.format_record(self, frame, file, lnum, func, lines, index)
2353 + IPython.core.ultratb.VerboseTB.format_record(self, frame_info)
2389 + IPython.core.ultratb.VerboseTB.format_record(self, frame_info)
2354
2390
2355 - IPython.terminal.embed.InteractiveShellEmbed.mainloop(self, local_ns='None', module='None', stack_depth=0, display_banner='None', global_ns='None', compile_flags='None')
2391 - IPython.terminal.embed.InteractiveShellEmbed.mainloop(self, local_ns='None', module='None', stack_depth=0, display_banner='None', global_ns='None', compile_flags='None')
2356 + IPython.terminal.embed.InteractiveShellEmbed.mainloop(self, local_ns='None', module='None', stack_depth=0, compile_flags='None')
2392 + IPython.terminal.embed.InteractiveShellEmbed.mainloop(self, local_ns='None', module='None', stack_depth=0, compile_flags='None')
2357
2393
2358 - IPython.terminal.embed.embed(**kwargs)
2394 - IPython.terminal.embed.embed(**kwargs)
2359 + IPython.terminal.embed.embed(*, header='', compile_flags='None', **kwargs)
2395 + IPython.terminal.embed.embed(*, header='', compile_flags='None', **kwargs)
2360
2396
2361 - IPython.terminal.interactiveshell.TerminalInteractiveShell.interact(self, display_banner='<object object at 0xffffff>')
2397 - IPython.terminal.interactiveshell.TerminalInteractiveShell.interact(self, display_banner='<object object at 0xffffff>')
2362 + IPython.terminal.interactiveshell.TerminalInteractiveShell.interact(self)
2398 + IPython.terminal.interactiveshell.TerminalInteractiveShell.interact(self)
2363
2399
2364 - IPython.terminal.interactiveshell.TerminalInteractiveShell.mainloop(self, display_banner='<object object at 0xffffff>')
2400 - IPython.terminal.interactiveshell.TerminalInteractiveShell.mainloop(self, display_banner='<object object at 0xffffff>')
2365 + IPython.terminal.interactiveshell.TerminalInteractiveShell.mainloop(self)
2401 + IPython.terminal.interactiveshell.TerminalInteractiveShell.mainloop(self)
2366
2402
2367 - IPython.utils.path.get_py_filename(name, force_win32='None')
2403 - IPython.utils.path.get_py_filename(name, force_win32='None')
2368 + IPython.utils.path.get_py_filename(name)
2404 + IPython.utils.path.get_py_filename(name)
2369
2405
2370 The following are new attributes (that might be inherited)::
2406 The following are new attributes (that might be inherited)::
2371
2407
2372 + IPython.core.completer.IPCompleter.unicode_names
2408 + IPython.core.completer.IPCompleter.unicode_names
2373 + IPython.core.debugger.InterruptiblePdb.precmd
2409 + IPython.core.debugger.InterruptiblePdb.precmd
2374 + IPython.core.debugger.Pdb.precmd
2410 + IPython.core.debugger.Pdb.precmd
2375 + IPython.core.ultratb.AutoFormattedTB.has_colors
2411 + IPython.core.ultratb.AutoFormattedTB.has_colors
2376 + IPython.core.ultratb.ColorTB.has_colors
2412 + IPython.core.ultratb.ColorTB.has_colors
2377 + IPython.core.ultratb.FormattedTB.has_colors
2413 + IPython.core.ultratb.FormattedTB.has_colors
2378 + IPython.core.ultratb.ListTB.has_colors
2414 + IPython.core.ultratb.ListTB.has_colors
2379 + IPython.core.ultratb.SyntaxTB.has_colors
2415 + IPython.core.ultratb.SyntaxTB.has_colors
2380 + IPython.core.ultratb.TBTools.has_colors
2416 + IPython.core.ultratb.TBTools.has_colors
2381 + IPython.core.ultratb.VerboseTB.has_colors
2417 + IPython.core.ultratb.VerboseTB.has_colors
2382 + IPython.terminal.debugger.TerminalPdb.do_interact
2418 + IPython.terminal.debugger.TerminalPdb.do_interact
2383 + IPython.terminal.debugger.TerminalPdb.precmd
2419 + IPython.terminal.debugger.TerminalPdb.precmd
2384
2420
2385 The following attribute/methods have been removed::
2421 The following attribute/methods have been removed::
2386
2422
2387 - IPython.core.application.BaseIPythonApplication.deprecated_subcommands
2423 - IPython.core.application.BaseIPythonApplication.deprecated_subcommands
2388 - IPython.core.ultratb.AutoFormattedTB.format_records
2424 - IPython.core.ultratb.AutoFormattedTB.format_records
2389 - IPython.core.ultratb.ColorTB.format_records
2425 - IPython.core.ultratb.ColorTB.format_records
2390 - IPython.core.ultratb.FormattedTB.format_records
2426 - IPython.core.ultratb.FormattedTB.format_records
2391 - IPython.terminal.embed.InteractiveShellEmbed.init_deprecation_warnings
2427 - IPython.terminal.embed.InteractiveShellEmbed.init_deprecation_warnings
2392 - IPython.terminal.embed.InteractiveShellEmbed.init_readline
2428 - IPython.terminal.embed.InteractiveShellEmbed.init_readline
2393 - IPython.terminal.embed.InteractiveShellEmbed.write
2429 - IPython.terminal.embed.InteractiveShellEmbed.write
2394 - IPython.terminal.embed.InteractiveShellEmbed.write_err
2430 - IPython.terminal.embed.InteractiveShellEmbed.write_err
2395 - IPython.terminal.interactiveshell.TerminalInteractiveShell.init_deprecation_warnings
2431 - IPython.terminal.interactiveshell.TerminalInteractiveShell.init_deprecation_warnings
2396 - IPython.terminal.interactiveshell.TerminalInteractiveShell.init_readline
2432 - IPython.terminal.interactiveshell.TerminalInteractiveShell.init_readline
2397 - IPython.terminal.interactiveshell.TerminalInteractiveShell.write
2433 - IPython.terminal.interactiveshell.TerminalInteractiveShell.write
2398 - IPython.terminal.interactiveshell.TerminalInteractiveShell.write_err
2434 - IPython.terminal.interactiveshell.TerminalInteractiveShell.write_err
2399 - IPython.terminal.ipapp.LocateIPythonApp.deprecated_subcommands
2435 - IPython.terminal.ipapp.LocateIPythonApp.deprecated_subcommands
2400 - IPython.terminal.ipapp.LocateIPythonApp.initialize_subcommand
2436 - IPython.terminal.ipapp.LocateIPythonApp.initialize_subcommand
2401 - IPython.terminal.ipapp.TerminalIPythonApp.deprecated_subcommands
2437 - IPython.terminal.ipapp.TerminalIPythonApp.deprecated_subcommands
2402 - IPython.terminal.ipapp.TerminalIPythonApp.initialize_subcommand
2438 - IPython.terminal.ipapp.TerminalIPythonApp.initialize_subcommand
2403
2439
2404 ------
2440 ------
2405
2441
2406 .. [1] If this make you uncomfortable feel free to not use IPython 8.23.
2442 .. [1] If this make you uncomfortable feel free to not use IPython 8.23.
General Comments 0
You need to be logged in to leave comments. Login now