##// END OF EJS Templates
DOC: add some what's new with respect to #13888
Matthias Bussonnier -
Show More
1 NO CONTENT: new file 100644, binary diff hidden
@@ -1,1324 +1,1351 b''
1 1 ============
2 2 8.x Series
3 3 ============
4 4
5 .. _version 8.9.0:
6
7 IPython 8.9.0
8 -------------
9
10
11 The biggest improvement for 8.9 is a drastic amelioration if the
12 auto-suggestions sponsored by D.E. Shaw and implmented by the more and more
13 active contributor `@krassowski <https://github.com/krassowski>`.
14
15 - ``right`` accepts a single character from suggestion
16 - ``ctrl+right`` accepts a semantic token (macos default shortcuts take
17 precedence and need to be disabled to make this work)
18 - ``backspace`` deletes a character and resumes hinting autosuggestions
19 - ``left`` accepts suggestion and moves cursor left one character.
20 - ``backspace`` deletes a character and resumes hinting autosuggestions
21 - ``down`` moves to suggestion to later in history when no lines are present below the cursors.
22 - ``up`` moves to suggestion from earlier in history when no lines are present above the cursor.
23
24 This is best described by the Gif posted by @krassowski, and in the PR itself
25 :ghpull:`13888`.
26
27 .. image:: ../_images/autosuggest.png
28
29 Please report any feedback in order for us to improve the user experience.
30 In particular we are also working on make the shortcuts configurable.
31
5 32 .. _version 8.8.0:
6 33
7 34 IPython 8.8.0
8 35 -------------
9 36
10 37 First release of IPython in 2023 as there was no release at the end of
11 38 December.
12 39
13 40 This is an unusually big release (relatively speaking) with more than 15 Pull
14 41 Requests merge.
15 42
16 43 Of particular interest are:
17 44
18 45 - :ghpull:`13852` that replace the greedy completer and improve
19 46 completion, in particular for dictionary keys.
20 47 - :ghpull:`13858` that adds ``py.typed`` to ``setup.cfg`` to make sure it is
21 48 bundled in wheels.
22 49 - :ghpull:`13869` that implements tab completions for IPython options in the
23 50 shell when using `argcomplete <https://github.com/kislyuk/argcomplete>`. I
24 51 believe this also needs a recent version of Traitlets.
25 52 - :ghpull:`13865` makes the ``inspector`` class of `InteractiveShell`
26 53 configurable.
27 54 - :ghpull:`13880` that remove minor-version entrypoints as the minor version
28 55 entry points that would be included in the wheel would be the one of the
29 56 Python version that was used to build the ``whl`` file.
30 57
31 58 In no particular order, the rest of the changes update the test suite to be
32 59 compatible with Pygments 2.14, various docfixes, testing on more recent python
33 60 versions and various updates.
34 61
35 62 As usual you can find the full list of PRs on GitHub under `the 8.8 milestone
36 63 <https://github.com/ipython/ipython/milestone/110>`__.
37 64
38 65 Many thanks to @krassowski for the many PRs and @jasongrout for reviewing and
39 66 merging contributions.
40 67
41 68 Thanks to the `D. E. Shaw group <https://deshaw.com/>`__ for sponsoring
42 69 work on IPython and related libraries.
43 70
44 71 .. _version 8.7.0:
45 72
46 73 IPython 8.7.0
47 74 -------------
48 75
49 76
50 77 Small release of IPython with a couple of bug fixes and new features for this
51 78 month. Next month is end of year, it is unclear if there will be a release close
52 79 the new year's eve, or if the next release will be at end of January.
53 80
54 81 Here are a few of the relevant fixes,
55 82 as usual you can find the full list of PRs on GitHub under `the 8.7 milestone
56 83 <https://github.com/ipython/ipython/pulls?q=milestone%3A8.7>`__.
57 84
58 85
59 86 - :ghpull:`13834` bump the minimum prompt toolkit to 3.0.11.
60 87 - IPython shipped with the ``py.typed`` marker now, and we are progressively
61 88 adding more types. :ghpull:`13831`
62 89 - :ghpull:`13817` add configuration of code blacks formatting.
63 90
64 91
65 92 Thanks to the `D. E. Shaw group <https://deshaw.com/>`__ for sponsoring
66 93 work on IPython and related libraries.
67 94
68 95
69 96 .. _version 8.6.0:
70 97
71 98 IPython 8.6.0
72 99 -------------
73 100
74 101 Back to a more regular release schedule (at least I try), as Friday is
75 102 already over by more than 24h hours. This is a slightly bigger release with a
76 103 few new features that contain no less then 25 PRs.
77 104
78 105 We'll notably found a couple of non negligible changes:
79 106
80 107 The ``install_ext`` and related functions have been removed after being
81 108 deprecated for years. You can use pip to install extensions. ``pip`` did not
82 109 exists when ``install_ext`` was introduced. You can still load local extensions
83 110 without installing them. Just set your ``sys.path`` for example. :ghpull:`13744`
84 111
85 112 IPython now have extra entry points that that the major *and minor* version of
86 113 python. For some of you this mean that you can do a quick ``ipython3.10`` to
87 114 launch IPython from the Python 3.10 interpreter, while still using Python 3.11
88 115 as your main Python. :ghpull:`13743`
89 116
90 117 The completer matcher API have been improved. See :ghpull:`13745`. This should
91 118 improve the type inference and improve dict keys completions in many use case.
92 119 Tanks ``@krassowski`` for all the works, and the D.E. Shaw group for sponsoring
93 120 it.
94 121
95 122 The color of error nodes in tracebacks can now be customized. See
96 123 :ghpull:`13756`. This is a private attribute until someone find the time to
97 124 properly add a configuration option. Note that with Python 3.11 that also show
98 125 the relevant nodes in traceback, it would be good to leverage this informations
99 126 (plus the "did you mean" info added on attribute errors). But that's likely work
100 127 I won't have time to do before long, so contributions welcome.
101 128
102 129 As we follow NEP 29, we removed support for numpy 1.19 :ghpull:`13760`.
103 130
104 131
105 132 The ``open()`` function present in the user namespace by default will now refuse
106 133 to open the file descriptors 0,1,2 (stdin, out, err), to avoid crashing IPython.
107 134 This mostly occurs in teaching context when incorrect values get passed around.
108 135
109 136
110 137 The ``?``, ``??``, and corresponding ``pinfo``, ``pinfo2`` magics can now find
111 138 objects insides arrays. That is to say, the following now works::
112 139
113 140
114 141 >>> def my_func(*arg, **kwargs):pass
115 142 >>> container = [my_func]
116 143 >>> container[0]?
117 144
118 145
119 146 If ``container`` define a custom ``getitem``, this __will__ trigger the custom
120 147 method. So don't put side effects in your ``getitems``. Thanks the D.E. Shaw
121 148 group for the request and sponsoring the work.
122 149
123 150
124 151 As usual you can find the full list of PRs on GitHub under `the 8.6 milestone
125 152 <https://github.com/ipython/ipython/pulls?q=milestone%3A8.6>`__.
126 153
127 154 Thanks to all hacktoberfest contributors, please contribute to
128 155 `closember.org <https://closember.org/>`__.
129 156
130 157 Thanks to the `D. E. Shaw group <https://deshaw.com/>`__ for sponsoring
131 158 work on IPython and related libraries.
132 159
133 160 .. _version 8.5.0:
134 161
135 162 IPython 8.5.0
136 163 -------------
137 164
138 165 First release since a couple of month due to various reasons and timing preventing
139 166 me for sticking to the usual monthly release the last Friday of each month. This
140 167 is of non negligible size as it has more than two dozen PRs with various fixes
141 168 an bug fixes.
142 169
143 170 Many thanks to everybody who contributed PRs for your patience in review and
144 171 merges.
145 172
146 173 Here is a non exhaustive list of changes that have been implemented for IPython
147 174 8.5.0. As usual you can find the full list of issues and PRs tagged with `the
148 175 8.5 milestone
149 176 <https://github.com/ipython/ipython/pulls?q=is%3Aclosed+milestone%3A8.5+>`__.
150 177
151 178 - Added shortcut for accepting auto suggestion. The End key shortcut for
152 179 accepting auto-suggestion This binding works in Vi mode too, provided
153 180 ``TerminalInteractiveShell.emacs_bindings_in_vi_insert_mode`` is set to be
154 181 ``True`` :ghpull:`13566`.
155 182
156 183 - No popup in window for latex generation w hen generating latex (e.g. via
157 184 `_latex_repr_`) no popup window is shows under Windows. :ghpull:`13679`
158 185
159 186 - Fixed error raised when attempting to tab-complete an input string with
160 187 consecutive periods or forward slashes (such as "file:///var/log/...").
161 188 :ghpull:`13675`
162 189
163 190 - Relative filenames in Latex rendering :
164 191 The `latex_to_png_dvipng` command internally generates input and output file
165 192 arguments to `latex` and `dvipis`. These arguments are now generated as
166 193 relative files to the current working directory instead of absolute file
167 194 paths. This solves a problem where the current working directory contains
168 195 characters that are not handled properly by `latex` and `dvips`. There are
169 196 no changes to the user API. :ghpull:`13680`
170 197
171 198 - Stripping decorators bug: Fixed bug which meant that ipython code blocks in
172 199 restructured text documents executed with the ipython-sphinx extension
173 200 skipped any lines of code containing python decorators. :ghpull:`13612`
174 201
175 202 - Allow some modules with frozen dataclasses to be reloaded. :ghpull:`13732`
176 203 - Fix paste magic on wayland. :ghpull:`13671`
177 204 - show maxlen in deque's repr. :ghpull:`13648`
178 205
179 206 Restore line numbers for Input
180 207 ------------------------------
181 208
182 209 Line number information in tracebacks from input are restored.
183 210 Line numbers from input were removed during the transition to v8 enhanced traceback reporting.
184 211
185 212 So, instead of::
186 213
187 214 ---------------------------------------------------------------------------
188 215 ZeroDivisionError Traceback (most recent call last)
189 216 Input In [3], in <cell line: 1>()
190 217 ----> 1 myfunc(2)
191 218
192 219 Input In [2], in myfunc(z)
193 220 1 def myfunc(z):
194 221 ----> 2 foo.boo(z-1)
195 222
196 223 File ~/code/python/ipython/foo.py:3, in boo(x)
197 224 2 def boo(x):
198 225 ----> 3 return 1/(1-x)
199 226
200 227 ZeroDivisionError: division by zero
201 228
202 229 The error traceback now looks like::
203 230
204 231 ---------------------------------------------------------------------------
205 232 ZeroDivisionError Traceback (most recent call last)
206 233 Cell In [3], line 1
207 234 ----> 1 myfunc(2)
208 235
209 236 Cell In [2], line 2, in myfunc(z)
210 237 1 def myfunc(z):
211 238 ----> 2 foo.boo(z-1)
212 239
213 240 File ~/code/python/ipython/foo.py:3, in boo(x)
214 241 2 def boo(x):
215 242 ----> 3 return 1/(1-x)
216 243
217 244 ZeroDivisionError: division by zero
218 245
219 246 or, with xmode=Plain::
220 247
221 248 Traceback (most recent call last):
222 249 Cell In [12], line 1
223 250 myfunc(2)
224 251 Cell In [6], line 2 in myfunc
225 252 foo.boo(z-1)
226 253 File ~/code/python/ipython/foo.py:3 in boo
227 254 return 1/(1-x)
228 255 ZeroDivisionError: division by zero
229 256
230 257 :ghpull:`13560`
231 258
232 259 New setting to silence warning if working inside a virtual environment
233 260 ----------------------------------------------------------------------
234 261
235 262 Previously, when starting IPython in a virtual environment without IPython installed (so IPython from the global environment is used), the following warning was printed:
236 263
237 264 Attempting to work in a virtualenv. If you encounter problems, please install IPython inside the virtualenv.
238 265
239 266 This warning can be permanently silenced by setting ``c.InteractiveShell.warn_venv`` to ``False`` (the default is ``True``).
240 267
241 268 :ghpull:`13706`
242 269
243 270 -------
244 271
245 272 Thanks to the `D. E. Shaw group <https://deshaw.com/>`__ for sponsoring
246 273 work on IPython and related libraries.
247 274
248 275
249 276 .. _version 8.4.0:
250 277
251 278 IPython 8.4.0
252 279 -------------
253 280
254 281 As for 7.34, this version contains a single fix: fix uncaught BdbQuit exceptions on ipdb
255 282 exit :ghpull:`13668`, and a single typo fix in documentation: :ghpull:`13682`
256 283
257 284 Thanks to the `D. E. Shaw group <https://deshaw.com/>`__ for sponsoring
258 285 work on IPython and related libraries.
259 286
260 287
261 288 .. _version 8.3.0:
262 289
263 290 IPython 8.3.0
264 291 -------------
265 292
266 293 - :ghpull:`13625`, using ``?``, ``??``, ``*?`` will not call
267 294 ``set_next_input`` as most frontend allow proper multiline editing and it was
268 295 causing issues for many users of multi-cell frontends. This has been backported to 7.33
269 296
270 297
271 298 - :ghpull:`13600`, ``pre_run_*``-hooks will now have a ``cell_id`` attribute on
272 299 the info object when frontend provide it. This has been backported to 7.33
273 300
274 301 - :ghpull:`13624`, fixed :kbd:`End` key being broken after accepting an
275 302 auto-suggestion.
276 303
277 304 - :ghpull:`13657` fix issue where history from different sessions would be mixed.
278 305
279 306 .. _version 8.2.0:
280 307
281 308 IPython 8.2.0
282 309 -------------
283 310
284 311 IPython 8.2 mostly bring bugfixes to IPython.
285 312
286 313 - Auto-suggestion can now be elected with the ``end`` key. :ghpull:`13566`
287 314 - Some traceback issues with ``assert etb is not None`` have been fixed. :ghpull:`13588`
288 315 - History is now pulled from the sqitel database and not from in-memory.
289 316 In particular when using the ``%paste`` magic, the content of the pasted text will
290 317 be part of the history and not the verbatim text ``%paste`` anymore. :ghpull:`13592`
291 318 - Fix ``Ctrl-\\`` exit cleanup :ghpull:`13603`
292 319 - Fixes to ``ultratb`` ipdb support when used outside of IPython. :ghpull:`13498`
293 320
294 321
295 322 I am still trying to fix and investigate :ghissue:`13598`, which seem to be
296 323 random, and would appreciate help if you find reproducible minimal case. I've
297 324 tried to make various changes to the codebase to mitigate it, but a proper fix
298 325 will be difficult without understanding the cause.
299 326
300 327
301 328 All the issues on pull-requests for this release can be found in the `8.2
302 329 milestone. <https://github.com/ipython/ipython/milestone/100>`__ . And some
303 330 documentation only PR can be found as part of the `7.33 milestone
304 331 <https://github.com/ipython/ipython/milestone/101>`__ (currently not released).
305 332
306 333 Thanks to the `D. E. Shaw group <https://deshaw.com/>`__ for sponsoring
307 334 work on IPython and related libraries.
308 335
309 336 .. _version 8.1.1:
310 337
311 338 IPython 8.1.1
312 339 -------------
313 340
314 341 Fix an issue with virtualenv and Python 3.8 introduced in 8.1
315 342
316 343 Revert :ghpull:`13537` (fix an issue with symlinks in virtualenv) that raises an
317 344 error in Python 3.8, and fixed in a different way in :ghpull:`13559`.
318 345
319 346 .. _version 8.1:
320 347
321 348 IPython 8.1.0
322 349 -------------
323 350
324 351 IPython 8.1 is the first minor release after 8.0 and fixes a number of bugs and
325 352 Update a few behavior that were problematic with the 8.0 as with many new major
326 353 release.
327 354
328 355 Note that beyond the changes listed here, IPython 8.1.0 also contains all the
329 356 features listed in :ref:`version 7.32`.
330 357
331 358 - Misc and multiple fixes around quotation auto-closing. It is now disabled by
332 359 default. Run with ``TerminalInteractiveShell.auto_match=True`` to re-enabled
333 360 - Require pygments>=2.4.0 :ghpull:`13459`, this was implicit in the code, but
334 361 is now explicit in ``setup.cfg``/``setup.py``
335 362 - Docs improvement of ``core.magic_arguments`` examples. :ghpull:`13433`
336 363 - Multi-line edit executes too early with await. :ghpull:`13424`
337 364
338 365 - ``black`` is back as an optional dependency, and autoformatting disabled by
339 366 default until some fixes are implemented (black improperly reformat magics).
340 367 :ghpull:`13471` Additionally the ability to use ``yapf`` as a code
341 368 reformatter has been added :ghpull:`13528` . You can use
342 369 ``TerminalInteractiveShell.autoformatter="black"``,
343 370 ``TerminalInteractiveShell.autoformatter="yapf"`` to re-enable auto formating
344 371 with black, or switch to yapf.
345 372
346 373 - Fix and issue where ``display`` was not defined.
347 374
348 375 - Auto suggestions are now configurable. Currently only
349 376 ``AutoSuggestFromHistory`` (default) and ``None``. new provider contribution
350 377 welcomed. :ghpull:`13475`
351 378
352 379 - multiple packaging/testing improvement to simplify downstream packaging
353 380 (xfail with reasons, try to not access network...).
354 381
355 382 - Update deprecation. ``InteractiveShell.magic`` internal method has been
356 383 deprecated for many years but did not emit a warning until now.
357 384
358 385 - internal ``appended_to_syspath`` context manager has been deprecated.
359 386
360 387 - fix an issue with symlinks in virtualenv :ghpull:`13537` (Reverted in 8.1.1)
361 388
362 389 - Fix an issue with vim mode, where cursor would not be reset on exit :ghpull:`13472`
363 390
364 391 - ipython directive now remove only known pseudo-decorators :ghpull:`13532`
365 392
366 393 - ``IPython/lib/security`` which used to be used for jupyter notebook has been
367 394 removed.
368 395
369 396 - Fix an issue where ``async with`` would execute on new lines. :ghpull:`13436`
370 397
371 398
372 399 We want to remind users that IPython is part of the Jupyter organisations, and
373 400 thus governed by a Code of Conduct. Some of the behavior we have seen on GitHub is not acceptable.
374 401 Abuse and non-respectful comments on discussion will not be tolerated.
375 402
376 403 Many thanks to all the contributors to this release, many of the above fixed issue and
377 404 new features where done by first time contributors, showing there is still
378 405 plenty of easy contribution possible in IPython
379 406 . You can find all individual contributions
380 407 to this milestone `on github <https://github.com/ipython/ipython/milestone/91>`__.
381 408
382 409 Thanks as well to the `D. E. Shaw group <https://deshaw.com/>`__ for sponsoring
383 410 work on IPython and related libraries. In particular the Lazy autoloading of
384 411 magics that you will find described in the 7.32 release notes.
385 412
386 413
387 414 .. _version 8.0.1:
388 415
389 416 IPython 8.0.1 (CVE-2022-21699)
390 417 ------------------------------
391 418
392 419 IPython 8.0.1, 7.31.1 and 5.11 are security releases that change some default
393 420 values in order to prevent potential Execution with Unnecessary Privileges.
394 421
395 422 Almost all version of IPython looks for configuration and profiles in current
396 423 working directory. Since IPython was developed before pip and environments
397 424 existed it was used a convenient way to load code/packages in a project
398 425 dependant way.
399 426
400 427 In 2022, it is not necessary anymore, and can lead to confusing behavior where
401 428 for example cloning a repository and starting IPython or loading a notebook from
402 429 any Jupyter-Compatible interface that has ipython set as a kernel can lead to
403 430 code execution.
404 431
405 432
406 433 I did not find any standard way for packaged to advertise CVEs they fix, I'm
407 434 thus trying to add a ``__patched_cves__`` attribute to the IPython module that
408 435 list the CVEs that should have been fixed. This attribute is informational only
409 436 as if a executable has a flaw, this value can always be changed by an attacker.
410 437
411 438 .. code::
412 439
413 440 In [1]: import IPython
414 441
415 442 In [2]: IPython.__patched_cves__
416 443 Out[2]: {'CVE-2022-21699'}
417 444
418 445 In [3]: 'CVE-2022-21699' in IPython.__patched_cves__
419 446 Out[3]: True
420 447
421 448 Thus starting with this version:
422 449
423 450 - The current working directory is not searched anymore for profiles or
424 451 configurations files.
425 452 - Added a ``__patched_cves__`` attribute (set of strings) to IPython module that contain
426 453 the list of fixed CVE. This is informational only.
427 454
428 455 Further details can be read on the `GitHub Advisory <https://github.com/ipython/ipython/security/advisories/GHSA-pq7m-3gw7-gq5x>`__
429 456
430 457
431 458 .. _version 8.0:
432 459
433 460 IPython 8.0
434 461 -----------
435 462
436 463 IPython 8.0 is bringing a large number of new features and improvements to both the
437 464 user of the terminal and of the kernel via Jupyter. The removal of compatibility
438 465 with older version of Python is also the opportunity to do a couple of
439 466 performance improvements in particular with respect to startup time.
440 467 The 8.x branch started diverging from its predecessor around IPython 7.12
441 468 (January 2020).
442 469
443 470 This release contains 250+ pull requests, in addition to many of the features
444 471 and backports that have made it to the 7.x branch. Please see the
445 472 `8.0 milestone <https://github.com/ipython/ipython/milestone/73?closed=1>`__ for the full list of pull requests.
446 473
447 474 Please feel free to send pull requests to updates those notes after release,
448 475 I have likely forgotten a few things reviewing 250+ PRs.
449 476
450 477 Dependencies changes/downstream packaging
451 478 -----------------------------------------
452 479
453 480 Most of our building steps have been changed to be (mostly) declarative
454 481 and follow PEP 517. We are trying to completely remove ``setup.py`` (:ghpull:`13238`) and are
455 482 looking for help to do so.
456 483
457 484 - minimum supported ``traitlets`` version is now 5+
458 485 - we now require ``stack_data``
459 486 - minimal Python is now 3.8
460 487 - ``nose`` is not a testing requirement anymore
461 488 - ``pytest`` replaces nose.
462 489 - ``iptest``/``iptest3`` cli entrypoints do not exists anymore.
463 490 - minimum officially support ``numpy`` version has been bumped, but this should
464 491 not have much effect on packaging.
465 492
466 493
467 494 Deprecation and removal
468 495 -----------------------
469 496
470 497 We removed almost all features, arguments, functions, and modules that were
471 498 marked as deprecated between IPython 1.0 and 5.0. As a reminder, 5.0 was released
472 499 in 2016, and 1.0 in 2013. Last release of the 5 branch was 5.10.0, in May 2020.
473 500 The few remaining deprecated features we left have better deprecation warnings
474 501 or have been turned into explicit errors for better error messages.
475 502
476 503 I will use this occasion to add the following requests to anyone emitting a
477 504 deprecation warning:
478 505
479 506 - Please add at least ``stacklevel=2`` so that the warning is emitted into the
480 507 caller context, and not the callee one.
481 508 - Please add **since which version** something is deprecated.
482 509
483 510 As a side note, it is much easier to conditionally compare version
484 511 numbers rather than using ``try/except`` when functionality changes with a version.
485 512
486 513 I won't list all the removed features here, but modules like ``IPython.kernel``,
487 514 which was just a shim module around ``ipykernel`` for the past 8 years, have been
488 515 removed, and so many other similar things that pre-date the name **Jupyter**
489 516 itself.
490 517
491 518 We no longer need to add ``IPython.extensions`` to the PYTHONPATH because that is being
492 519 handled by ``load_extension``.
493 520
494 521 We are also removing ``Cythonmagic``, ``sympyprinting`` and ``rmagic`` as they are now in
495 522 other packages and no longer need to be inside IPython.
496 523
497 524
498 525 Documentation
499 526 -------------
500 527
501 528 The majority of our docstrings have now been reformatted and automatically fixed by
502 529 the experimental `Vélin <https://pypi.org/project/velin/>`_ project to conform
503 530 to numpydoc.
504 531
505 532 Type annotations
506 533 ----------------
507 534
508 535 While IPython itself is highly dynamic and can't be completely typed, many of
509 536 the functions now have type annotations, and part of the codebase is now checked
510 537 by mypy.
511 538
512 539
513 540 Featured changes
514 541 ----------------
515 542
516 543 Here is a features list of changes in IPython 8.0. This is of course non-exhaustive.
517 544 Please note as well that many features have been added in the 7.x branch as well
518 545 (and hence why you want to read the 7.x what's new notes), in particular
519 546 features contributed by QuantStack (with respect to debugger protocol and Xeus
520 547 Python), as well as many debugger features that I was pleased to implement as
521 548 part of my work at QuanSight and sponsored by DE Shaw.
522 549
523 550 Traceback improvements
524 551 ~~~~~~~~~~~~~~~~~~~~~~
525 552
526 553 Previously, error tracebacks for errors happening in code cells were showing a
527 554 hash, the one used for compiling the Python AST::
528 555
529 556 In [1]: def foo():
530 557 ...: return 3 / 0
531 558 ...:
532 559
533 560 In [2]: foo()
534 561 ---------------------------------------------------------------------------
535 562 ZeroDivisionError Traceback (most recent call last)
536 563 <ipython-input-2-c19b6d9633cf> in <module>
537 564 ----> 1 foo()
538 565
539 566 <ipython-input-1-1595a74c32d5> in foo()
540 567 1 def foo():
541 568 ----> 2 return 3 / 0
542 569 3
543 570
544 571 ZeroDivisionError: division by zero
545 572
546 573 The error traceback is now correctly formatted, showing the cell number in which the error happened::
547 574
548 575 In [1]: def foo():
549 576 ...: return 3 / 0
550 577 ...:
551 578
552 579 Input In [2]: foo()
553 580 ---------------------------------------------------------------------------
554 581 ZeroDivisionError Traceback (most recent call last)
555 582 input In [2], in <module>
556 583 ----> 1 foo()
557 584
558 585 Input In [1], in foo()
559 586 1 def foo():
560 587 ----> 2 return 3 / 0
561 588
562 589 ZeroDivisionError: division by zero
563 590
564 591 The ``stack_data`` package has been integrated, which provides smarter information in the traceback;
565 592 in particular it will highlight the AST node where an error occurs which can help to quickly narrow down errors.
566 593
567 594 For example in the following snippet::
568 595
569 596 def foo(i):
570 597 x = [[[0]]]
571 598 return x[0][i][0]
572 599
573 600
574 601 def bar():
575 602 return foo(0) + foo(
576 603 1
577 604 ) + foo(2)
578 605
579 606
580 607 calling ``bar()`` would raise an ``IndexError`` on the return line of ``foo``,
581 608 and IPython 8.0 is capable of telling you where the index error occurs::
582 609
583 610
584 611 IndexError
585 612 Input In [2], in <module>
586 613 ----> 1 bar()
587 614 ^^^^^
588 615
589 616 Input In [1], in bar()
590 617 6 def bar():
591 618 ----> 7 return foo(0) + foo(
592 619 ^^^^
593 620 8 1
594 621 ^^^^^^^^
595 622 9 ) + foo(2)
596 623 ^^^^
597 624
598 625 Input In [1], in foo(i)
599 626 1 def foo(i):
600 627 2 x = [[[0]]]
601 628 ----> 3 return x[0][i][0]
602 629 ^^^^^^^
603 630
604 631 The corresponding locations marked here with ``^`` will show up highlighted in
605 632 the terminal and notebooks.
606 633
607 634 Finally, a colon ``::`` and line number is appended after a filename in
608 635 traceback::
609 636
610 637
611 638 ZeroDivisionError Traceback (most recent call last)
612 639 File ~/error.py:4, in <module>
613 640 1 def f():
614 641 2 1/0
615 642 ----> 4 f()
616 643
617 644 File ~/error.py:2, in f()
618 645 1 def f():
619 646 ----> 2 1/0
620 647
621 648 Many terminals and editors have integrations enabling you to directly jump to the
622 649 relevant file/line when this syntax is used, so this small addition may have a high
623 650 impact on productivity.
624 651
625 652
626 653 Autosuggestions
627 654 ~~~~~~~~~~~~~~~
628 655
629 656 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>`__.
630 657
631 658 `Ptpython <https://github.com/prompt-toolkit/ptpython#ptpython>`__ allows users to enable this feature in
632 659 `ptpython/config.py <https://github.com/prompt-toolkit/ptpython/blob/master/examples/ptpython_config/config.py#L90>`__.
633 660
634 661 This feature allows users to accept autosuggestions with ctrl e, ctrl f,
635 662 or right arrow as described below.
636 663
637 664 1. Start ipython
638 665
639 666 .. image:: ../_images/8.0/auto_suggest_1_prompt_no_text.png
640 667
641 668 2. Run ``print("hello")``
642 669
643 670 .. image:: ../_images/8.0/auto_suggest_2_print_hello_suggest.png
644 671
645 672 3. start typing ``print`` again to see the autosuggestion
646 673
647 674 .. image:: ../_images/8.0/auto_suggest_3_print_hello_suggest.png
648 675
649 676 4. Press ``ctrl-f``, or ``ctrl-e``, or ``right-arrow`` to accept the suggestion
650 677
651 678 .. image:: ../_images/8.0/auto_suggest_4_print_hello.png
652 679
653 680 You can also complete word by word:
654 681
655 682 1. Run ``def say_hello(): print("hello")``
656 683
657 684 .. image:: ../_images/8.0/auto_suggest_second_prompt.png
658 685
659 686 2. Start typing the first letter if ``def`` to see the autosuggestion
660 687
661 688 .. image:: ../_images/8.0/auto_suggest_d_phantom.png
662 689
663 690 3. Press ``alt-f`` (or ``escape`` followed by ``f``), to accept the first word of the suggestion
664 691
665 692 .. image:: ../_images/8.0/auto_suggest_def_phantom.png
666 693
667 694 Importantly, this feature does not interfere with tab completion:
668 695
669 696 1. After running ``def say_hello(): print("hello")``, press d
670 697
671 698 .. image:: ../_images/8.0/auto_suggest_d_phantom.png
672 699
673 700 2. Press Tab to start tab completion
674 701
675 702 .. image:: ../_images/8.0/auto_suggest_d_completions.png
676 703
677 704 3A. Press Tab again to select the first option
678 705
679 706 .. image:: ../_images/8.0/auto_suggest_def_completions.png
680 707
681 708 3B. Press ``alt f`` (``escape``, ``f``) to accept to accept the first word of the suggestion
682 709
683 710 .. image:: ../_images/8.0/auto_suggest_def_phantom.png
684 711
685 712 3C. Press ``ctrl-f`` or ``ctrl-e`` to accept the entire suggestion
686 713
687 714 .. image:: ../_images/8.0/auto_suggest_match_parens.png
688 715
689 716
690 717 Currently, autosuggestions are only shown in the emacs or vi insert editing modes:
691 718
692 719 - The ctrl e, ctrl f, and alt f shortcuts work by default in emacs mode.
693 720 - 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/>`__.
694 721
695 722
696 723 Show pinfo information in ipdb using "?" and "??"
697 724 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
698 725
699 726 In IPDB, it is now possible to show the information about an object using "?"
700 727 and "??", in much the same way that it can be done when using the IPython prompt::
701 728
702 729 ipdb> partial?
703 730 Init signature: partial(self, /, *args, **kwargs)
704 731 Docstring:
705 732 partial(func, *args, **keywords) - new function with partial application
706 733 of the given arguments and keywords.
707 734 File: ~/.pyenv/versions/3.8.6/lib/python3.8/functools.py
708 735 Type: type
709 736 Subclasses:
710 737
711 738 Previously, ``pinfo`` or ``pinfo2`` command had to be used for this purpose.
712 739
713 740
714 741 Autoreload 3 feature
715 742 ~~~~~~~~~~~~~~~~~~~~
716 743
717 744 Example: When an IPython session is run with the 'autoreload' extension loaded,
718 745 you will now have the option '3' to select, which means the following:
719 746
720 747 1. replicate all functionality from option 2
721 748 2. autoload all new funcs/classes/enums/globals from the module when they are added
722 749 3. autoload all newly imported funcs/classes/enums/globals from external modules
723 750
724 751 Try ``%autoreload 3`` in an IPython session after running ``%load_ext autoreload``.
725 752
726 753 For more information please see the following unit test : ``extensions/tests/test_autoreload.py:test_autoload_newly_added_objects``
727 754
728 755 Auto formatting with black in the CLI
729 756 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
730 757
731 758 This feature was present in 7.x, but disabled by default.
732 759
733 760 In 8.0, input was automatically reformatted with Black when black was installed.
734 761 This feature has been reverted for the time being.
735 762 You can re-enable it by setting ``TerminalInteractiveShell.autoformatter`` to ``"black"``
736 763
737 764 History Range Glob feature
738 765 ~~~~~~~~~~~~~~~~~~~~~~~~~~
739 766
740 767 Previously, when using ``%history``, users could specify either
741 768 a range of sessions and lines, for example:
742 769
743 770 .. code-block:: python
744 771
745 772 ~8/1-~6/5 # see history from the first line of 8 sessions ago,
746 773 # to the fifth line of 6 sessions ago.``
747 774
748 775 Or users could specify a glob pattern:
749 776
750 777 .. code-block:: python
751 778
752 779 -g <pattern> # glob ALL history for the specified pattern.
753 780
754 781 However users could *not* specify both.
755 782
756 783 If a user *did* specify both a range and a glob pattern,
757 784 then the glob pattern would be used (globbing *all* history) *and the range would be ignored*.
758 785
759 786 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.
760 787
761 788 Don't start a multi-line cell with sunken parenthesis
762 789 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
763 790
764 791 From now on, IPython will not ask for the next line of input when given a single
765 792 line with more closing than opening brackets. For example, this means that if
766 793 you (mis)type ``]]`` instead of ``[]``, a ``SyntaxError`` will show up, instead of
767 794 the ``...:`` prompt continuation.
768 795
769 796 IPython shell for ipdb interact
770 797 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
771 798
772 799 The ipdb ``interact`` starts an IPython shell instead of Python's built-in ``code.interact()``.
773 800
774 801 Automatic Vi prompt stripping
775 802 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
776 803
777 804 When pasting code into IPython, it will strip the leading prompt characters if
778 805 there are any. For example, you can paste the following code into the console -
779 806 it will still work, even though each line is prefixed with prompts (``In``,
780 807 ``Out``)::
781 808
782 809 In [1]: 2 * 2 == 4
783 810 Out[1]: True
784 811
785 812 In [2]: print("This still works as pasted")
786 813
787 814
788 815 Previously, this was not the case for the Vi-mode prompts::
789 816
790 817 In [1]: [ins] In [13]: 2 * 2 == 4
791 818 ...: Out[13]: True
792 819 ...:
793 820 File "<ipython-input-1-727bb88eaf33>", line 1
794 821 [ins] In [13]: 2 * 2 == 4
795 822 ^
796 823 SyntaxError: invalid syntax
797 824
798 825 This is now fixed, and Vi prompt prefixes - ``[ins]`` and ``[nav]`` - are
799 826 skipped just as the normal ``In`` would be.
800 827
801 828 IPython shell can be started in the Vi mode using ``ipython --TerminalInteractiveShell.editing_mode=vi``,
802 829 You should be able to change mode dynamically with ``%config TerminalInteractiveShell.editing_mode='vi'``
803 830
804 831 Empty History Ranges
805 832 ~~~~~~~~~~~~~~~~~~~~
806 833
807 834 A number of magics that take history ranges can now be used with an empty
808 835 range. These magics are:
809 836
810 837 * ``%save``
811 838 * ``%load``
812 839 * ``%pastebin``
813 840 * ``%pycat``
814 841
815 842 Using them this way will make them take the history of the current session up
816 843 to the point of the magic call (such that the magic itself will not be
817 844 included).
818 845
819 846 Therefore it is now possible to save the whole history to a file using
820 847 ``%save <filename>``, load and edit it using ``%load`` (makes for a nice usage
821 848 when followed with :kbd:`F2`), send it to `dpaste.org <http://dpast.org>`_ using
822 849 ``%pastebin``, or view the whole thing syntax-highlighted with a single
823 850 ``%pycat``.
824 851
825 852
826 853 Windows timing implementation: Switch to process_time
827 854 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
828 855 Timing on Windows, for example with ``%%time``, was changed from being based on ``time.perf_counter``
829 856 (which counted time even when the process was sleeping) to being based on ``time.process_time`` instead
830 857 (which only counts CPU time). This brings it closer to the behavior on Linux. See :ghpull:`12984`.
831 858
832 859 Miscellaneous
833 860 ~~~~~~~~~~~~~
834 861 - Non-text formatters are not disabled in the terminal, which should simplify
835 862 writing extensions displaying images or other mimetypes in supporting terminals.
836 863 :ghpull:`12315`
837 864 - It is now possible to automatically insert matching brackets in Terminal IPython using the
838 865 ``TerminalInteractiveShell.auto_match=True`` option. :ghpull:`12586`
839 866 - We are thinking of deprecating the current ``%%javascript`` magic in favor of a better replacement. See :ghpull:`13376`.
840 867 - ``~`` is now expanded when part of a path in most magics :ghpull:`13385`
841 868 - ``%/%%timeit`` magic now adds a comma every thousands to make reading a long number easier :ghpull:`13379`
842 869 - ``"info"`` messages can now be customised to hide some fields :ghpull:`13343`
843 870 - ``collections.UserList`` now pretty-prints :ghpull:`13320`
844 871 - The debugger now has a persistent history, which should make it less
845 872 annoying to retype commands :ghpull:`13246`
846 873 - ``!pip`` ``!conda`` ``!cd`` or ``!ls`` are likely doing the wrong thing. We
847 874 now warn users if they use one of those commands. :ghpull:`12954`
848 875 - Make ``%precision`` work for ``numpy.float64`` type :ghpull:`12902`
849 876
850 877 Re-added support for XDG config directories
851 878 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
852 879
853 880 XDG support through the years comes and goes. There is a tension between having
854 881 an identical location for configuration in all platforms versus having simple instructions.
855 882 After initial failures a couple of years ago, IPython was modified to automatically migrate XDG
856 883 config files back into ``~/.ipython``. That migration code has now been removed.
857 884 IPython now checks the XDG locations, so if you _manually_ move your config
858 885 files to your preferred location, IPython will not move them back.
859 886
860 887
861 888 Preparing for Python 3.10
862 889 -------------------------
863 890
864 891 To prepare for Python 3.10, we have started working on removing reliance and
865 892 any dependency that is not compatible with Python 3.10. This includes migrating our
866 893 test suite to pytest and starting to remove nose. This also means that the
867 894 ``iptest`` command is now gone and all testing is via pytest.
868 895
869 896 This was in large part thanks to the NumFOCUS Small Developer grant, which enabled us to
870 897 allocate \$4000 to hire `Nikita Kniazev (@Kojoley) <https://github.com/Kojoley>`_,
871 898 who did a fantastic job at updating our code base, migrating to pytest, pushing
872 899 our coverage, and fixing a large number of bugs. I highly recommend contacting
873 900 them if you need help with C++ and Python projects.
874 901
875 902 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+>`__
876 903
877 904 Removing support for older Python versions
878 905 ------------------------------------------
879 906
880 907
881 908 We are removing support for Python up through 3.7, allowing internal code to use the more
882 909 efficient ``pathlib`` and to make better use of type annotations.
883 910
884 911 .. image:: ../_images/8.0/pathlib_pathlib_everywhere.jpg
885 912 :alt: "Meme image of Toy Story with Woody and Buzz, with the text 'pathlib, pathlib everywhere'"
886 913
887 914
888 915 We had about 34 PRs only to update some logic to update some functions from managing strings to
889 916 using Pathlib.
890 917
891 918 The completer has also seen significant updates and now makes use of newer Jedi APIs,
892 919 offering faster and more reliable tab completion.
893 920
894 921 Misc Statistics
895 922 ---------------
896 923
897 924 Here are some numbers::
898 925
899 926 7.x: 296 files, 12561 blank lines, 20282 comments, 35142 line of code.
900 927 8.0: 252 files, 12053 blank lines, 19232 comments, 34505 line of code.
901 928
902 929 $ git diff --stat 7.x...master | tail -1
903 930 340 files changed, 13399 insertions(+), 12421 deletions(-)
904 931
905 932 We have commits from 162 authors, who contributed 1916 commits in 23 month, excluding merges (to not bias toward
906 933 maintainers pushing buttons).::
907 934
908 935 $ git shortlog -s --no-merges 7.x...master | sort -nr
909 936 535 Matthias Bussonnier
910 937 86 Nikita Kniazev
911 938 69 Blazej Michalik
912 939 49 Samuel Gaist
913 940 27 Itamar Turner-Trauring
914 941 18 Spas Kalaydzhisyki
915 942 17 Thomas Kluyver
916 943 17 Quentin Peter
917 944 17 James Morris
918 945 17 Artur Svistunov
919 946 15 Bart Skowron
920 947 14 Alex Hall
921 948 13 rushabh-v
922 949 13 Terry Davis
923 950 13 Benjamin Ragan-Kelley
924 951 8 martinRenou
925 952 8 farisachugthai
926 953 7 dswij
927 954 7 Gal B
928 955 7 Corentin Cadiou
929 956 6 yuji96
930 957 6 Martin Skarzynski
931 958 6 Justin Palmer
932 959 6 Daniel Goldfarb
933 960 6 Ben Greiner
934 961 5 Sammy Al Hashemi
935 962 5 Paul Ivanov
936 963 5 Inception95
937 964 5 Eyenpi
938 965 5 Douglas Blank
939 966 5 Coco Mishra
940 967 5 Bibo Hao
941 968 5 André A. Gomes
942 969 5 Ahmed Fasih
943 970 4 takuya fujiwara
944 971 4 palewire
945 972 4 Thomas A Caswell
946 973 4 Talley Lambert
947 974 4 Scott Sanderson
948 975 4 Ram Rachum
949 976 4 Nick Muoh
950 977 4 Nathan Goldbaum
951 978 4 Mithil Poojary
952 979 4 Michael T
953 980 4 Jakub Klus
954 981 4 Ian Castleden
955 982 4 Eli Rykoff
956 983 4 Ashwin Vishnu
957 984 3 谭九鼎
958 985 3 sleeping
959 986 3 Sylvain Corlay
960 987 3 Peter Corke
961 988 3 Paul Bissex
962 989 3 Matthew Feickert
963 990 3 Fernando Perez
964 991 3 Eric Wieser
965 992 3 Daniel Mietchen
966 993 3 Aditya Sathe
967 994 3 007vedant
968 995 2 rchiodo
969 996 2 nicolaslazo
970 997 2 luttik
971 998 2 gorogoroumaru
972 999 2 foobarbyte
973 1000 2 bar-hen
974 1001 2 Theo Ouzhinski
975 1002 2 Strawkage
976 1003 2 Samreen Zarroug
977 1004 2 Pete Blois
978 1005 2 Meysam Azad
979 1006 2 Matthieu Ancellin
980 1007 2 Mark Schmitz
981 1008 2 Maor Kleinberger
982 1009 2 MRCWirtz
983 1010 2 Lumir Balhar
984 1011 2 Julien Rabinow
985 1012 2 Juan Luis Cano Rodríguez
986 1013 2 Joyce Er
987 1014 2 Jakub
988 1015 2 Faris A Chugthai
989 1016 2 Ethan Madden
990 1017 2 Dimitri Papadopoulos
991 1018 2 Diego Fernandez
992 1019 2 Daniel Shimon
993 1020 2 Coco Bennett
994 1021 2 Carlos Cordoba
995 1022 2 Boyuan Liu
996 1023 2 BaoGiang HoangVu
997 1024 2 Augusto
998 1025 2 Arthur Svistunov
999 1026 2 Arthur Moreira
1000 1027 2 Ali Nabipour
1001 1028 2 Adam Hackbarth
1002 1029 1 richard
1003 1030 1 linar-jether
1004 1031 1 lbennett
1005 1032 1 juacrumar
1006 1033 1 gpotter2
1007 1034 1 digitalvirtuoso
1008 1035 1 dalthviz
1009 1036 1 Yonatan Goldschmidt
1010 1037 1 Tomasz Kłoczko
1011 1038 1 Tobias Bengfort
1012 1039 1 Timur Kushukov
1013 1040 1 Thomas
1014 1041 1 Snir Broshi
1015 1042 1 Shao Yang Hong
1016 1043 1 Sanjana-03
1017 1044 1 Romulo Filho
1018 1045 1 Rodolfo Carvalho
1019 1046 1 Richard Shadrach
1020 1047 1 Reilly Tucker Siemens
1021 1048 1 Rakessh Roshan
1022 1049 1 Piers Titus van der Torren
1023 1050 1 PhanatosZou
1024 1051 1 Pavel Safronov
1025 1052 1 Paulo S. Costa
1026 1053 1 Paul McCarthy
1027 1054 1 NotWearingPants
1028 1055 1 Naelson Douglas
1029 1056 1 Michael Tiemann
1030 1057 1 Matt Wozniski
1031 1058 1 Markus Wageringel
1032 1059 1 Marcus Wirtz
1033 1060 1 Marcio Mazza
1034 1061 1 Lumír 'Frenzy' Balhar
1035 1062 1 Lightyagami1
1036 1063 1 Leon Anavi
1037 1064 1 LeafyLi
1038 1065 1 L0uisJ0shua
1039 1066 1 Kyle Cutler
1040 1067 1 Krzysztof Cybulski
1041 1068 1 Kevin Kirsche
1042 1069 1 KIU Shueng Chuan
1043 1070 1 Jonathan Slenders
1044 1071 1 Jay Qi
1045 1072 1 Jake VanderPlas
1046 1073 1 Iwan Briquemont
1047 1074 1 Hussaina Begum Nandyala
1048 1075 1 Gordon Ball
1049 1076 1 Gabriel Simonetto
1050 1077 1 Frank Tobia
1051 1078 1 Erik
1052 1079 1 Elliott Sales de Andrade
1053 1080 1 Daniel Hahler
1054 1081 1 Dan Green-Leipciger
1055 1082 1 Dan Green
1056 1083 1 Damian Yurzola
1057 1084 1 Coon, Ethan T
1058 1085 1 Carol Willing
1059 1086 1 Brian Lee
1060 1087 1 Brendan Gerrity
1061 1088 1 Blake Griffin
1062 1089 1 Bastian Ebeling
1063 1090 1 Bartosz Telenczuk
1064 1091 1 Ankitsingh6299
1065 1092 1 Andrew Port
1066 1093 1 Andrew J. Hesford
1067 1094 1 Albert Zhang
1068 1095 1 Adam Johnson
1069 1096
1070 1097 This does not, of course, represent non-code contributions, for which we are also grateful.
1071 1098
1072 1099
1073 1100 API Changes using Frappuccino
1074 1101 -----------------------------
1075 1102
1076 1103 This is an experimental exhaustive API difference using `Frappuccino <https://pypi.org/project/frappuccino/>`_
1077 1104
1078 1105
1079 1106 The following items are new in IPython 8.0 ::
1080 1107
1081 1108 + IPython.core.async_helpers.get_asyncio_loop()
1082 1109 + IPython.core.completer.Dict
1083 1110 + IPython.core.completer.Pattern
1084 1111 + IPython.core.completer.Sequence
1085 1112 + IPython.core.completer.__skip_doctest__
1086 1113 + IPython.core.debugger.Pdb.precmd(self, line)
1087 1114 + IPython.core.debugger.__skip_doctest__
1088 1115 + IPython.core.display.__getattr__(name)
1089 1116 + IPython.core.display.warn
1090 1117 + IPython.core.display_functions
1091 1118 + IPython.core.display_functions.DisplayHandle
1092 1119 + IPython.core.display_functions.DisplayHandle.display(self, obj, **kwargs)
1093 1120 + IPython.core.display_functions.DisplayHandle.update(self, obj, **kwargs)
1094 1121 + IPython.core.display_functions.__all__
1095 1122 + IPython.core.display_functions.__builtins__
1096 1123 + IPython.core.display_functions.__cached__
1097 1124 + IPython.core.display_functions.__doc__
1098 1125 + IPython.core.display_functions.__file__
1099 1126 + IPython.core.display_functions.__loader__
1100 1127 + IPython.core.display_functions.__name__
1101 1128 + IPython.core.display_functions.__package__
1102 1129 + IPython.core.display_functions.__spec__
1103 1130 + IPython.core.display_functions.b2a_hex
1104 1131 + IPython.core.display_functions.clear_output(wait=False)
1105 1132 + IPython.core.display_functions.display(*objs, include='None', exclude='None', metadata='None', transient='None', display_id='None', raw=False, clear=False, **kwargs)
1106 1133 + IPython.core.display_functions.publish_display_data(data, metadata='None', source='<deprecated>', *, transient='None', **kwargs)
1107 1134 + IPython.core.display_functions.update_display(obj, *, display_id, **kwargs)
1108 1135 + IPython.core.extensions.BUILTINS_EXTS
1109 1136 + IPython.core.inputtransformer2.has_sunken_brackets(tokens)
1110 1137 + IPython.core.interactiveshell.Callable
1111 1138 + IPython.core.interactiveshell.__annotations__
1112 1139 + IPython.core.ultratb.List
1113 1140 + IPython.core.ultratb.Tuple
1114 1141 + IPython.lib.pretty.CallExpression
1115 1142 + IPython.lib.pretty.CallExpression.factory(name)
1116 1143 + IPython.lib.pretty.RawStringLiteral
1117 1144 + IPython.lib.pretty.RawText
1118 1145 + IPython.terminal.debugger.TerminalPdb.do_interact(self, arg)
1119 1146 + IPython.terminal.embed.Set
1120 1147
1121 1148 The following items have been removed (or moved to superclass)::
1122 1149
1123 1150 - IPython.core.application.BaseIPythonApplication.initialize_subcommand
1124 1151 - IPython.core.completer.Sentinel
1125 1152 - IPython.core.completer.skip_doctest
1126 1153 - IPython.core.debugger.Tracer
1127 1154 - IPython.core.display.DisplayHandle
1128 1155 - IPython.core.display.DisplayHandle.display
1129 1156 - IPython.core.display.DisplayHandle.update
1130 1157 - IPython.core.display.b2a_hex
1131 1158 - IPython.core.display.clear_output
1132 1159 - IPython.core.display.display
1133 1160 - IPython.core.display.publish_display_data
1134 1161 - IPython.core.display.update_display
1135 1162 - IPython.core.excolors.Deprec
1136 1163 - IPython.core.excolors.ExceptionColors
1137 1164 - IPython.core.history.warn
1138 1165 - IPython.core.hooks.late_startup_hook
1139 1166 - IPython.core.hooks.pre_run_code_hook
1140 1167 - IPython.core.hooks.shutdown_hook
1141 1168 - IPython.core.interactiveshell.InteractiveShell.init_deprecation_warnings
1142 1169 - IPython.core.interactiveshell.InteractiveShell.init_readline
1143 1170 - IPython.core.interactiveshell.InteractiveShell.write
1144 1171 - IPython.core.interactiveshell.InteractiveShell.write_err
1145 1172 - IPython.core.interactiveshell.get_default_colors
1146 1173 - IPython.core.interactiveshell.removed_co_newlocals
1147 1174 - IPython.core.magics.execution.ExecutionMagics.profile_missing_notice
1148 1175 - IPython.core.magics.script.PIPE
1149 1176 - IPython.core.prefilter.PrefilterManager.init_transformers
1150 1177 - IPython.core.release.classifiers
1151 1178 - IPython.core.release.description
1152 1179 - IPython.core.release.keywords
1153 1180 - IPython.core.release.long_description
1154 1181 - IPython.core.release.name
1155 1182 - IPython.core.release.platforms
1156 1183 - IPython.core.release.url
1157 1184 - IPython.core.ultratb.VerboseTB.format_records
1158 1185 - IPython.core.ultratb.find_recursion
1159 1186 - IPython.core.ultratb.findsource
1160 1187 - IPython.core.ultratb.fix_frame_records_filenames
1161 1188 - IPython.core.ultratb.inspect_error
1162 1189 - IPython.core.ultratb.is_recursion_error
1163 1190 - IPython.core.ultratb.with_patch_inspect
1164 1191 - IPython.external.__all__
1165 1192 - IPython.external.__builtins__
1166 1193 - IPython.external.__cached__
1167 1194 - IPython.external.__doc__
1168 1195 - IPython.external.__file__
1169 1196 - IPython.external.__loader__
1170 1197 - IPython.external.__name__
1171 1198 - IPython.external.__package__
1172 1199 - IPython.external.__path__
1173 1200 - IPython.external.__spec__
1174 1201 - IPython.kernel.KernelConnectionInfo
1175 1202 - IPython.kernel.__builtins__
1176 1203 - IPython.kernel.__cached__
1177 1204 - IPython.kernel.__warningregistry__
1178 1205 - IPython.kernel.pkg
1179 1206 - IPython.kernel.protocol_version
1180 1207 - IPython.kernel.protocol_version_info
1181 1208 - IPython.kernel.src
1182 1209 - IPython.kernel.version_info
1183 1210 - IPython.kernel.warn
1184 1211 - IPython.lib.backgroundjobs
1185 1212 - IPython.lib.backgroundjobs.BackgroundJobBase
1186 1213 - IPython.lib.backgroundjobs.BackgroundJobBase.run
1187 1214 - IPython.lib.backgroundjobs.BackgroundJobBase.traceback
1188 1215 - IPython.lib.backgroundjobs.BackgroundJobExpr
1189 1216 - IPython.lib.backgroundjobs.BackgroundJobExpr.call
1190 1217 - IPython.lib.backgroundjobs.BackgroundJobFunc
1191 1218 - IPython.lib.backgroundjobs.BackgroundJobFunc.call
1192 1219 - IPython.lib.backgroundjobs.BackgroundJobManager
1193 1220 - IPython.lib.backgroundjobs.BackgroundJobManager.flush
1194 1221 - IPython.lib.backgroundjobs.BackgroundJobManager.new
1195 1222 - IPython.lib.backgroundjobs.BackgroundJobManager.remove
1196 1223 - IPython.lib.backgroundjobs.BackgroundJobManager.result
1197 1224 - IPython.lib.backgroundjobs.BackgroundJobManager.status
1198 1225 - IPython.lib.backgroundjobs.BackgroundJobManager.traceback
1199 1226 - IPython.lib.backgroundjobs.__builtins__
1200 1227 - IPython.lib.backgroundjobs.__cached__
1201 1228 - IPython.lib.backgroundjobs.__doc__
1202 1229 - IPython.lib.backgroundjobs.__file__
1203 1230 - IPython.lib.backgroundjobs.__loader__
1204 1231 - IPython.lib.backgroundjobs.__name__
1205 1232 - IPython.lib.backgroundjobs.__package__
1206 1233 - IPython.lib.backgroundjobs.__spec__
1207 1234 - IPython.lib.kernel.__builtins__
1208 1235 - IPython.lib.kernel.__cached__
1209 1236 - IPython.lib.kernel.__doc__
1210 1237 - IPython.lib.kernel.__file__
1211 1238 - IPython.lib.kernel.__loader__
1212 1239 - IPython.lib.kernel.__name__
1213 1240 - IPython.lib.kernel.__package__
1214 1241 - IPython.lib.kernel.__spec__
1215 1242 - IPython.lib.kernel.__warningregistry__
1216 1243 - IPython.paths.fs_encoding
1217 1244 - IPython.terminal.debugger.DEFAULT_BUFFER
1218 1245 - IPython.terminal.debugger.cursor_in_leading_ws
1219 1246 - IPython.terminal.debugger.emacs_insert_mode
1220 1247 - IPython.terminal.debugger.has_selection
1221 1248 - IPython.terminal.debugger.vi_insert_mode
1222 1249 - IPython.terminal.interactiveshell.DISPLAY_BANNER_DEPRECATED
1223 1250 - IPython.terminal.ipapp.TerminalIPythonApp.parse_command_line
1224 1251 - IPython.testing.test
1225 1252 - IPython.utils.contexts.NoOpContext
1226 1253 - IPython.utils.io.IOStream
1227 1254 - IPython.utils.io.IOStream.close
1228 1255 - IPython.utils.io.IOStream.write
1229 1256 - IPython.utils.io.IOStream.writelines
1230 1257 - IPython.utils.io.__warningregistry__
1231 1258 - IPython.utils.io.atomic_writing
1232 1259 - IPython.utils.io.stderr
1233 1260 - IPython.utils.io.stdin
1234 1261 - IPython.utils.io.stdout
1235 1262 - IPython.utils.io.unicode_std_stream
1236 1263 - IPython.utils.path.get_ipython_cache_dir
1237 1264 - IPython.utils.path.get_ipython_dir
1238 1265 - IPython.utils.path.get_ipython_module_path
1239 1266 - IPython.utils.path.get_ipython_package_dir
1240 1267 - IPython.utils.path.locate_profile
1241 1268 - IPython.utils.path.unquote_filename
1242 1269 - IPython.utils.py3compat.PY2
1243 1270 - IPython.utils.py3compat.PY3
1244 1271 - IPython.utils.py3compat.buffer_to_bytes
1245 1272 - IPython.utils.py3compat.builtin_mod_name
1246 1273 - IPython.utils.py3compat.cast_bytes
1247 1274 - IPython.utils.py3compat.getcwd
1248 1275 - IPython.utils.py3compat.isidentifier
1249 1276 - IPython.utils.py3compat.u_format
1250 1277
1251 1278 The following signatures differ between 7.x and 8.0::
1252 1279
1253 1280 - IPython.core.completer.IPCompleter.unicode_name_matches(self, text)
1254 1281 + IPython.core.completer.IPCompleter.unicode_name_matches(text)
1255 1282
1256 1283 - IPython.core.completer.match_dict_keys(keys, prefix, delims)
1257 1284 + IPython.core.completer.match_dict_keys(keys, prefix, delims, extra_prefix='None')
1258 1285
1259 1286 - IPython.core.interactiveshell.InteractiveShell.object_inspect_mime(self, oname, detail_level=0)
1260 1287 + IPython.core.interactiveshell.InteractiveShell.object_inspect_mime(self, oname, detail_level=0, omit_sections='()')
1261 1288
1262 1289 - IPython.core.interactiveshell.InteractiveShell.set_hook(self, name, hook, priority=50, str_key='None', re_key='None', _warn_deprecated=True)
1263 1290 + IPython.core.interactiveshell.InteractiveShell.set_hook(self, name, hook, priority=50, str_key='None', re_key='None')
1264 1291
1265 1292 - IPython.core.oinspect.Inspector.info(self, obj, oname='', formatter='None', info='None', detail_level=0)
1266 1293 + IPython.core.oinspect.Inspector.info(self, obj, oname='', info='None', detail_level=0)
1267 1294
1268 1295 - IPython.core.oinspect.Inspector.pinfo(self, obj, oname='', formatter='None', info='None', detail_level=0, enable_html_pager=True)
1269 1296 + IPython.core.oinspect.Inspector.pinfo(self, obj, oname='', formatter='None', info='None', detail_level=0, enable_html_pager=True, omit_sections='()')
1270 1297
1271 1298 - IPython.core.profiledir.ProfileDir.copy_config_file(self, config_file, path='None', overwrite=False)
1272 1299 + IPython.core.profiledir.ProfileDir.copy_config_file(self, config_file, path, overwrite=False)
1273 1300
1274 1301 - IPython.core.ultratb.VerboseTB.format_record(self, frame, file, lnum, func, lines, index)
1275 1302 + IPython.core.ultratb.VerboseTB.format_record(self, frame_info)
1276 1303
1277 1304 - IPython.terminal.embed.InteractiveShellEmbed.mainloop(self, local_ns='None', module='None', stack_depth=0, display_banner='None', global_ns='None', compile_flags='None')
1278 1305 + IPython.terminal.embed.InteractiveShellEmbed.mainloop(self, local_ns='None', module='None', stack_depth=0, compile_flags='None')
1279 1306
1280 1307 - IPython.terminal.embed.embed(**kwargs)
1281 1308 + IPython.terminal.embed.embed(*, header='', compile_flags='None', **kwargs)
1282 1309
1283 1310 - IPython.terminal.interactiveshell.TerminalInteractiveShell.interact(self, display_banner='<object object at 0xffffff>')
1284 1311 + IPython.terminal.interactiveshell.TerminalInteractiveShell.interact(self)
1285 1312
1286 1313 - IPython.terminal.interactiveshell.TerminalInteractiveShell.mainloop(self, display_banner='<object object at 0xffffff>')
1287 1314 + IPython.terminal.interactiveshell.TerminalInteractiveShell.mainloop(self)
1288 1315
1289 1316 - IPython.utils.path.get_py_filename(name, force_win32='None')
1290 1317 + IPython.utils.path.get_py_filename(name)
1291 1318
1292 1319 The following are new attributes (that might be inherited)::
1293 1320
1294 1321 + IPython.core.completer.IPCompleter.unicode_names
1295 1322 + IPython.core.debugger.InterruptiblePdb.precmd
1296 1323 + IPython.core.debugger.Pdb.precmd
1297 1324 + IPython.core.ultratb.AutoFormattedTB.has_colors
1298 1325 + IPython.core.ultratb.ColorTB.has_colors
1299 1326 + IPython.core.ultratb.FormattedTB.has_colors
1300 1327 + IPython.core.ultratb.ListTB.has_colors
1301 1328 + IPython.core.ultratb.SyntaxTB.has_colors
1302 1329 + IPython.core.ultratb.TBTools.has_colors
1303 1330 + IPython.core.ultratb.VerboseTB.has_colors
1304 1331 + IPython.terminal.debugger.TerminalPdb.do_interact
1305 1332 + IPython.terminal.debugger.TerminalPdb.precmd
1306 1333
1307 1334 The following attribute/methods have been removed::
1308 1335
1309 1336 - IPython.core.application.BaseIPythonApplication.deprecated_subcommands
1310 1337 - IPython.core.ultratb.AutoFormattedTB.format_records
1311 1338 - IPython.core.ultratb.ColorTB.format_records
1312 1339 - IPython.core.ultratb.FormattedTB.format_records
1313 1340 - IPython.terminal.embed.InteractiveShellEmbed.init_deprecation_warnings
1314 1341 - IPython.terminal.embed.InteractiveShellEmbed.init_readline
1315 1342 - IPython.terminal.embed.InteractiveShellEmbed.write
1316 1343 - IPython.terminal.embed.InteractiveShellEmbed.write_err
1317 1344 - IPython.terminal.interactiveshell.TerminalInteractiveShell.init_deprecation_warnings
1318 1345 - IPython.terminal.interactiveshell.TerminalInteractiveShell.init_readline
1319 1346 - IPython.terminal.interactiveshell.TerminalInteractiveShell.write
1320 1347 - IPython.terminal.interactiveshell.TerminalInteractiveShell.write_err
1321 1348 - IPython.terminal.ipapp.LocateIPythonApp.deprecated_subcommands
1322 1349 - IPython.terminal.ipapp.LocateIPythonApp.initialize_subcommand
1323 1350 - IPython.terminal.ipapp.TerminalIPythonApp.deprecated_subcommands
1324 1351 - IPython.terminal.ipapp.TerminalIPythonApp.initialize_subcommand
General Comments 0
You need to be logged in to leave comments. Login now