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