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