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