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