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