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