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