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