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