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