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