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