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