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