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