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