##// END OF EJS Templates
Merge pull request #13660 from Carreau/wn733...
Matthias Bussonnier -
Show More
@@ -1,1784 +1,1795 b''
1 1 ============
2 2 7.x Series
3 3 ============
4 4
5 .. _version 7.31.1:
5 .. _version 7.33:
6 6
7 IPython 7.31.1 (CVE-2022-21699)
8 ===============================
7 IPython 7.33
8 ============
9 9
10 Fixed CVE-2022-21699, see IPython 8.0.1 release notes for informations.
10 - Allow IPython hooks to receive current cell ids when frontend support it. See
11 :ghpull:`13600`
12
13 - ``?`` does not trigger the insertion of a new cell anymore as most frontend
14 allow proper multiline edition. :ghpull:`13625`
11 15
12 16
13 17 .. _version 7.32:
14 18
15 19 IPython 7.32
16 20 ============
17 21
18 22
19 23
20 24 Autoload magic lazily
21 25 ---------------------
22 26
23 27 The ability to configure magics to be lazily loaded has been added to IPython.
24 28 See the ``ipython --help-all`` section on ``MagicsManager.lazy_magic``.
25 29 One can now use::
26 30
27 31 c.MagicsManager.lazy_magics = {
28 32 "my_magic": "slow.to.import",
29 33 "my_other_magic": "also.slow",
30 34 }
31 35
32 36 And on first use of ``%my_magic``, or corresponding cell magic, or other line magic,
33 37 the corresponding ``load_ext`` will be called just before trying to invoke the magic.
34 38
35 39 Misc
36 40 ----
37 41
38 42 - Update sphinxify for Docrepr 0.2.0 :ghpull:`13503`.
39 43 - Set co_name for cells run line by line (to fix debugging with Python 3.10)
40 44 :ghpull:`13535`
41 45
42 46
43 47 Many thanks to all the contributors to this release. You can find all individual
44 48 contributions to this milestone `on github
45 49 <https://github.com/ipython/ipython/milestone/99>`__.
46 50
47 51 Thanks as well to the `D. E. Shaw group <https://deshaw.com/>`__ for sponsoring
48 52 work on IPython and related libraries.
49 53
54 .. _version 7.31.1:
55
56 IPython 7.31.1 (CVE-2022-21699)
57 ===============================
58
59 Fixed CVE-2022-21699, see IPython 8.0.1 release notes for informations.
60
50 61 .. _version 7.31:
51 62
52 63 IPython 7.31
53 64 ============
54 65
55 66 IPython 7.31 brings a couple of backports and fixes from the 8.0 branches,
56 67 it is likely one of the last releases of the 7.x series, as 8.0 will probably be released
57 68 between this release and what would have been 7.32.
58 69
59 70 Please test 8.0 beta/rc releases in addition to this release.
60 71
61 72 This Releases:
62 73 - Backport some fixes for Python 3.10 (:ghpull:`13412`)
63 74 - use full-alpha transparency on dvipng rendered LaTeX (:ghpull:`13372`)
64 75
65 76 Many thanks to all the contributors to this release. You can find all individual
66 77 contributions to this milestone `on github
67 78 <https://github.com/ipython/ipython/milestone/95>`__.
68 79
69 80 Thanks as well to the `D. E. Shaw group <https://deshaw.com/>`__ for sponsoring
70 81 work on IPython and related libraries.
71 82
72 83
73 84 .. _version 7.30:
74 85
75 86 IPython 7.30
76 87 ============
77 88
78 89 IPython 7.30 fixes a couple of bugs introduce in previous releases (in
79 90 particular with respect to path handling), and introduce a few features and
80 91 improvements:
81 92
82 93 Notably we will highlight :ghpull:`13267` "Document that ``%run`` can execute
83 94 notebooks and ipy scripts.", which is the first commit of Fernando PΓ©rez since
84 95 mid 2016 (IPython 5.1). If you are new to IPython, Fernando created IPython in
85 96 2001. The other most recent contribution of Fernando to IPython itself was
86 97 May 2018, by reviewing and merging PRs. I want to note that Fernando is still
87 98 active but mostly as a mentor and leader of the whole Jupyter organisation, but
88 99 we're still happy to see him contribute code !
89 100
90 101 :ghpull:`13290` "Use sphinxify (if available) in object_inspect_mime path"
91 102 should allow richer Repr of docstrings when using jupyterlab inspector.
92 103
93 104 :ghpull:`13311` make the debugger use ``ThreadPoolExecutor`` for debugger cmdloop.
94 105 This should fix some issues/infinite loop, but let us know if you come across
95 106 any regressions. In particular this fixes issues with `kmaork/madbg <https://github.com/kmaork/madbg>`_,
96 107 a remote debugger for IPython.
97 108
98 109 Note that this is likely the ante-penultimate release of IPython 7.x as a stable
99 110 branch, as I hope to release IPython 8.0 as well as IPython 7.31 next
100 111 month/early 2022.
101 112
102 113 IPython 8.0 will drop support for Python 3.7, removed nose as a dependency, and
103 114 7.x will only get critical bug fixes with 8.x becoming the new stable. This will
104 115 not be possible without `NumFOCUS Small Development Grants
105 116 <https://numfocus.org/programs/small-development-grants>`_ Which allowed us to
106 117 hire `Nikita Kniazev <https://github.com/Kojoley>`_ who provide Python and C++
107 118 help and contracting work.
108 119
109 120
110 121 Many thanks to all the contributors to this release. You can find all individual
111 122 contributions to this milestone `on github
112 123 <https://github.com/ipython/ipython/milestone/94?closed=1>`__.
113 124
114 125 Thanks as well to the `D. E. Shaw group <https://deshaw.com/>`__ for sponsoring
115 126 work on IPython and related libraries.
116 127
117 128
118 129 .. _version 7.29:
119 130
120 131 IPython 7.29
121 132 ============
122 133
123 134
124 135 IPython 7.29 brings a couple of new functionalities to IPython and a number of bugfixes.
125 136 It is one of the largest recent release, relatively speaking, with close to 15 Pull Requests.
126 137
127 138
128 139 - fix an issue where base64 was returned instead of bytes when showing figures :ghpull:`13162`
129 140 - fix compatibility with PyQt6, PySide 6 :ghpull:`13172`. This may be of
130 141 interest if you are running on Apple Silicon as only qt6.2+ is natively
131 142 compatible.
132 143 - fix matplotlib qtagg eventloop :ghpull:`13179`
133 144 - Multiple docs fixes, typos, ... etc.
134 145 - Debugger will now exit by default on SigInt :ghpull:`13218`, this will be
135 146 useful in notebook/lab if you forgot to exit the debugger. "Interrupt Kernel"
136 147 will now exist the debugger.
137 148
138 149 It give Pdb the ability to skip code in decorators. If functions contain a
139 150 special value names ``__debuggerskip__ = True|False``, the function will not be
140 151 stepped into, and Pdb will step into lower frames only if the value is set to
141 152 ``False``. The exact behavior is still likely to have corner cases and will be
142 153 refined in subsequent releases. Feedback welcome. See the debugger module
143 154 documentation for more info. Thanks to the `D. E. Shaw
144 155 group <https://deshaw.com/>`__ for funding this feature.
145 156
146 157 The main branch of IPython is receiving a number of changes as we received a
147 158 `NumFOCUS SDG <https://numfocus.org/programs/small-development-grants>`__
148 159 ($4800), to help us finish replacing ``nose`` by ``pytest``, and make IPython
149 160 future proof with an 8.0 release.
150 161
151 162
152 163 Many thanks to all the contributors to this release. You can find all individual
153 164 contributions to this milestone `on github
154 165 <https://github.com/ipython/ipython/milestone/93>`__.
155 166
156 167 Thanks as well to the `D. E. Shaw group <https://deshaw.com/>`__ for sponsoring
157 168 work on IPython and related libraries.
158 169
159 170
160 171 .. _version 7.28:
161 172
162 173 IPython 7.28
163 174 ============
164 175
165 176
166 177 IPython 7.28 is again a minor release that mostly bring bugfixes, and couple of
167 178 improvement. Many thanks to MrMino, who again did all the work this month, and
168 179 made a number of documentation improvements.
169 180
170 181 Here is a non-exhaustive list of changes,
171 182
172 183 Fixes:
173 184
174 185 - async with doesn't allow newlines :ghpull:`13090`
175 186 - Dynamically changing to vi mode via %config magic) :ghpull:`13091`
176 187
177 188 Virtualenv handling fixes:
178 189
179 190 - init_virtualenv now uses Pathlib :ghpull:`12548`
180 191 - Fix Improper path comparison of virtualenv directories :ghpull:`13140`
181 192 - Fix virtual environment user warning for lower case pathes :ghpull:`13094`
182 193 - Adapt to all sorts of drive names for cygwin :ghpull:`13153`
183 194
184 195 New Features:
185 196
186 197 - enable autoplay in embed YouTube player :ghpull:`13133`
187 198
188 199 Documentation:
189 200
190 201 - Fix formatting for the core.interactiveshell documentation :ghpull:`13118`
191 202 - Fix broken ipyparallel's refs :ghpull:`13138`
192 203 - Improve formatting of %time documentation :ghpull:`13125`
193 204 - Reword the YouTubeVideo autoplay WN :ghpull:`13147`
194 205
195 206
196 207 Highlighted features
197 208 --------------------
198 209
199 210
200 211 ``YouTubeVideo`` autoplay and the ability to add extra attributes to ``IFrame``
201 212 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
202 213
203 214 You can add any extra attributes to the ``<iframe>`` tag using the new
204 215 ``extras`` argument in the ``IFrame`` class. For example::
205 216
206 217 In [1]: from IPython.display import IFrame
207 218
208 219 In [2]: IFrame(src="src", width=300, height=300, extras=['loading="eager"'])
209 220
210 221 The above cells will result in the following HTML code being displayed in a
211 222 notebook::
212 223
213 224 <iframe
214 225 width="300"
215 226 height="300"
216 227 src="src"
217 228 frameborder="0"
218 229 allowfullscreen
219 230 loading="eager"
220 231 ></iframe>
221 232
222 233 Related to the above, the ``YouTubeVideo`` class now takes an
223 234 ``allow_autoplay`` flag, which sets up the iframe of the embedded YouTube video
224 235 such that it allows autoplay.
225 236
226 237 .. note::
227 238 Whether this works depends on the autoplay policy of the browser rendering
228 239 the HTML allowing it. It also could get blocked by some browser extensions.
229 240
230 241 Try it out!
231 242 ::
232 243
233 244 In [1]: from IPython.display import YouTubeVideo
234 245
235 246 In [2]: YouTubeVideo("dQw4w9WgXcQ", allow_autoplay=True)
236 247
237 248
238 249
239 250 Thanks
240 251 ------
241 252
242 253 Many thanks to all the contributors to this release. You can find all individual
243 254 contributions to this milestone `on github
244 255 <https://github.com/ipython/ipython/milestone/92>`__.
245 256
246 257 Thanks as well to the `D. E. Shaw group <https://deshaw.com/>`__ for sponsoring
247 258 work on IPython and related libraries.
248 259
249 260
250 261 .. _version 7.27:
251 262
252 263 IPython 7.27
253 264 ============
254 265
255 266 IPython 7.27 is a minor release that fixes a couple of issues and compatibility.
256 267
257 268 - Add support for GTK4 :ghpull:`131011`
258 269 - Add support for Qt6 :ghpull:`13085`
259 270 - Fix an issue with pip magic on windows :ghpull:`13093`
260 271
261 272 Thanks
262 273 ------
263 274
264 275 Many thanks to all the contributors to this release. You can find all individual
265 276 contributions to this milestone `on github
266 277 <https://github.com/ipython/ipython/milestone/91>`__.
267 278
268 279 Thanks as well to the `D. E. Shaw group <https://deshaw.com/>`__ for sponsoring
269 280 work on IPython and related libraries.
270 281
271 282 .. _version 7.26:
272 283
273 284 IPython 7.26
274 285 ============
275 286
276 287 IPython 7.26 is a minor release that fixes a couple of issues, updates in API
277 288 and Copyright/Licenses issues around various part of the codebase.
278 289
279 290 We'll highlight `this issue <https://github.com/ipython/ipython/issues/13039>`
280 291 pointing out we were including and refereeing to code from Stack Overflow which
281 292 was CC-BY-SA, hence incompatible with the BSD license of IPython. This lead us
282 293 to a rewriting of the corresponding logic which in our case was done in a more
283 294 efficient way (in our case we were searching string prefixes instead of full
284 295 strings).
285 296
286 297 You will notice also a number of documentation improvements and cleanup.
287 298
288 299 Of particular interest are the following Pull-requests:
289 300
290 301
291 302 - The IPython directive now uses Sphinx logging for warnings. :ghpull:`13030`.
292 303 - Add expiry days option to pastebin magic and change http protocol to https.
293 304 :ghpull:`13056`
294 305 - Make Ipython.utils.timing work with jupyterlite :ghpull:`13050`.
295 306
296 307 Pastebin magic expiry days option
297 308 ---------------------------------
298 309
299 310 The Pastebin magic now has ``-e`` option to determine
300 311 the number of days for paste expiration. For example
301 312 the paste that created with ``%pastebin -e 20 1`` magic will
302 313 be available for next 20 days.
303 314
304 315
305 316
306 317
307 318
308 319 Thanks
309 320 ------
310 321
311 322 Many thanks to all the contributors to this release and in particular MrMino who
312 323 is doing most of the work those days. You can find all individual contributions
313 324 to this milestone `on github <https://github.com/ipython/ipython/milestone/90>`__.
314 325
315 326 Thanks as well to the `D. E. Shaw group <https://deshaw.com/>`__ for sponsoring
316 327 work on IPython and related libraries.
317 328
318 329
319 330 .. _version 7.25:
320 331
321 332 IPython 7.25
322 333 ============
323 334
324 335 IPython 7.25 is a minor release that contains a single bugfix, which is highly
325 336 recommended for all users of ipdb, ipython debugger %debug magic and similar.
326 337
327 338 Issuing commands like ``where`` from within the debugger would reset the
328 339 local variables changes made by the user. It is interesting to look at the root
329 340 cause of the issue as accessing an attribute (``frame.f_locals``) would trigger
330 341 this side effects.
331 342
332 343 Thanks in particular to the patience from the reporters at D.E. Shaw for their
333 344 initial bug report that was due to a similar coding oversight in an extension,
334 345 and who took time to debug and narrow down the problem.
335 346
336 347 Thanks
337 348 ------
338 349
339 350 Many thanks to all the contributors to this release you can find all individual
340 351 contributions to this milestone `on github <https://github.com/ipython/ipython/milestone/89>`__.
341 352
342 353 Thanks as well to the `D. E. Shaw group <https://deshaw.com/>`__ for sponsoring
343 354 work on IPython and related libraries.
344 355
345 356
346 357 .. _version 7.24:
347 358
348 359 IPython 7.24
349 360 ============
350 361
351 362 Third release of IPython for 2021, mostly containing bug fixes. A couple of not
352 363 typical updates:
353 364
354 365 Misc
355 366 ----
356 367
357 368
358 369 - Fix an issue where ``%recall`` would both succeeded and print an error message
359 370 it failed. :ghpull:`12952`
360 371 - Drop support for NumPy 1.16 – practically has no effect beyond indicating in
361 372 package metadata that we do not support it. :ghpull:`12937`
362 373
363 374 Debugger improvements
364 375 ---------------------
365 376
366 377 The debugger (and ``%debug`` magic) have been improved and can skip or hide frames
367 378 originating from files that are not writable to the user, as these are less
368 379 likely to be the source of errors, or be part of system files this can be a useful
369 380 addition when debugging long errors.
370 381
371 382 In addition to the global ``skip_hidden True|False`` command, the debugger has
372 383 gained finer grained control of predicates as to whether to a frame should be
373 384 considered hidden. So far 3 predicates are available :
374 385
375 386 - ``tbhide``: frames containing the local variable ``__tracebackhide__`` set to
376 387 True.
377 388 - ``readonly``: frames originating from readonly files, set to False.
378 389 - ``ipython_internal``: frames that are likely to be from IPython internal
379 390 code, set to True.
380 391
381 392 You can toggle individual predicates during a session with
382 393
383 394 .. code-block::
384 395
385 396 ipdb> skip_predicates readonly True
386 397
387 398 Read-only files will now be considered hidden frames.
388 399
389 400
390 401 You can call ``skip_predicates`` without arguments to see the states of current
391 402 predicates:
392 403
393 404 .. code-block::
394 405
395 406 ipdb> skip_predicates
396 407 current predicates:
397 408 tbhide : True
398 409 readonly : False
399 410 ipython_internal : True
400 411
401 412 If all predicates are set to ``False``, ``skip_hidden`` will practically have
402 413 no effect. We attempt to warn you when all predicates are False.
403 414
404 415 Note that the ``readonly`` predicate may increase disk access as we check for
405 416 file access permission for all frames on many command invocation, but is usually
406 417 cached by operating systems. Let us know if you encounter any issues.
407 418
408 419 As the IPython debugger does not use the traitlets infrastructure for
409 420 configuration, by editing your ``.pdbrc`` files and appending commands you would
410 421 like to be executed just before entering the interactive prompt. For example:
411 422
412 423
413 424 .. code::
414 425
415 426 # file : ~/.pdbrc
416 427 skip_predicates readonly True
417 428 skip_predicates tbhide False
418 429
419 430 Will hide read only frames by default and show frames marked with
420 431 ``__tracebackhide__``.
421 432
422 433
423 434
424 435
425 436 Thanks
426 437 ------
427 438
428 439 Many thanks to all the contributors to this release you can find all individual
429 440 contributions to this milestone `on github <https://github.com/ipython/ipython/milestone/87>`__.
430 441
431 442 Thanks as well to the `D. E. Shaw group <https://deshaw.com/>`__ for sponsoring
432 443 work on IPython and related libraries, in particular above mentioned
433 444 improvements to the debugger.
434 445
435 446
436 447
437 448
438 449 .. _version 7.23:
439 450
440 451 IPython 7.23 and 7.23.1
441 452 =======================
442 453
443 454
444 455 Third release of IPython for 2021, mostly containing bug fixes. A couple of not
445 456 typical updates:
446 457
447 458 - We moved to GitHub actions away from Travis-CI, the transition may not be
448 459 100% complete (not testing on nightly anymore), but as we ran out of
449 460 Travis-Ci hours on the IPython organisation that was a necessary step.
450 461 :ghpull:`12900`.
451 462
452 463 - We have a new dependency: ``matplotlib-inline``, which try to extract
453 464 matplotlib inline backend specific behavior. It is available on PyPI and
454 465 conda-forge thus should not be a problem to upgrade to this version. If you
455 466 are a package maintainer that might be an extra dependency to package first.
456 467 :ghpull:`12817` (IPython 7.23.1 fix a typo that made this change fail)
457 468
458 469 In the addition/new feature category, ``display()`` now have a ``clear=True``
459 470 option to clear the display if any further outputs arrives, allowing users to
460 471 avoid having to use ``clear_output()`` directly. :ghpull:`12823`.
461 472
462 473 In bug fixes category, this release fix an issue when printing tracebacks
463 474 containing Unicode characters :ghpull:`12758`.
464 475
465 476 In code cleanup category :ghpull:`12932` remove usage of some deprecated
466 477 functionality for compatibility with Python 3.10.
467 478
468 479
469 480
470 481 Thanks
471 482 ------
472 483
473 484 Many thanks to all the contributors to this release you can find all individual
474 485 contributions to this milestone `on github <https://github.com/ipython/ipython/milestone/86>`__.
475 486 In particular MrMino for responding to almost all new issues, and triaging many
476 487 of the old ones, as well as takluyver, minrk, willingc for reacting quikly when
477 488 we ran out of CI Hours.
478 489
479 490 Thanks as well to organisations, QuantStack (martinRenou and SylvainCorlay) for
480 491 extracting matplotlib inline backend into its own package, and the `D. E. Shaw group
481 492 <https://deshaw.com/>`__ for sponsoring work on IPython and related libraries.
482 493
483 494
484 495 .. _version 7.22:
485 496
486 497 IPython 7.22
487 498 ============
488 499
489 500 Second release of IPython for 2021, mostly containing bug fixes. Here is a quick
490 501 rundown of the few changes.
491 502
492 503 - Fix some ``sys.excepthook`` shenanigan when embedding with qt, recommended if
493 504 you – for example – use `napari <https://napari.org>`__. :ghpull:`12842`.
494 505 - Fix bug when using the new ipdb ``%context`` magic :ghpull:`12844`
495 506 - Couples of deprecation cleanup :ghpull:`12868`
496 507 - Update for new dpast.com api if you use the ``%pastbin`` magic. :ghpull:`12712`
497 508 - Remove support for numpy before 1.16. :ghpull:`12836`
498 509
499 510
500 511 Thanks
501 512 ------
502 513
503 514 We have a new team member that you should see more often on the IPython
504 515 repository, BΕ‚aΕΌej Michalik (@MrMino) have been doing regular contributions to
505 516 IPython, and spent time replying to many issues and guiding new users to the
506 517 codebase; they now have triage permissions to the IPython repository and we'll
507 518 work toward giving them more permission in the future.
508 519
509 520 Many thanks to all the contributors to this release you can find all individual
510 521 contributions to this milestone `on github <https://github.com/ipython/ipython/milestone/84>`__.
511 522
512 523 Thanks as well to organisations, QuantStack for working on debugger
513 524 compatibility for Xeus_python, and the `D. E. Shaw group
514 525 <https://deshaw.com/>`__ for sponsoring work on IPython and related libraries.
515 526
516 527 .. _version 721:
517 528
518 529 IPython 7.21
519 530 ============
520 531
521 532 IPython 7.21 is the first release we have back on schedule of one release every
522 533 month; it contains a number of minor fixes and improvements, notably, the new
523 534 context command for ipdb
524 535
525 536
526 537 New "context" command in ipdb
527 538 -----------------------------
528 539
529 540 It is now possible to change the number of lines shown in the backtrace
530 541 information in ipdb using "context" command. :ghpull:`12826`
531 542
532 543 (thanks @MrMino, there are other improvement from them on master).
533 544
534 545 Other notable changes in IPython 7.21
535 546 -------------------------------------
536 547
537 548 - Fix some issues on new osx-arm64 :ghpull:`12804`, :ghpull:`12807`.
538 549 - Compatibility with Xeus-Python for debugger protocol, :ghpull:`12809`
539 550 - Misc docs fixes for compatibility and uniformity with Numpydoc.
540 551 :ghpull:`12824`
541 552
542 553
543 554 Thanks
544 555 ------
545 556
546 557 Many thanks to all the contributors to this release you can find all individual
547 558 contribution to this milestone `on github <https://github.com/ipython/ipython/milestone/83>`__.
548 559
549 560
550 561 .. _version 720:
551 562
552 563 IPython 7.20
553 564 ============
554 565
555 566 IPython 7.20 is the accumulation of 3 month of work on IPython, spacing between
556 567 IPython release have been increased from the usual once a month for various
557 568 reason.
558 569
559 570 - Mainly as I'm too busy and the effectively sole maintainer, and
560 571 - Second because not much changes happened before mid December.
561 572
562 573 The main driver for this release was the new version of Jedi 0.18 breaking API;
563 574 which was taken care of in the master branch early in 2020 but not in 7.x as I
564 575 though that by now 8.0 would be out.
565 576
566 577 The inclusion of a resolver in pip did not help and actually made things worse.
567 578 If usually I would have simply pinned Jedi to ``<0.18``; this is not a solution
568 579 anymore as now pip is free to install Jedi 0.18, and downgrade IPython.
569 580
570 581 I'll do my best to keep the regular release, but as the 8.0-dev branch and 7.x
571 582 are starting to diverge this is becoming difficult in particular with my limited
572 583 time, so if you have any cycles to spare I'll appreciate your help to respond to
573 584 issues and pushing 8.0 forward.
574 585
575 586 Here are thus some of the changes for IPython 7.20.
576 587
577 588 - Support for PyQt5 >= 5.11 :ghpull:`12715`
578 589 - ``%reset`` remove imports more agressively :ghpull:`12718`
579 590 - fix the ``%conda`` magic :ghpull:`12739`
580 591 - compatibility with Jedi 0.18, and bump minimum Jedi version. :ghpull:`12793`
581 592
582 593
583 594 .. _version 719:
584 595
585 596 IPython 7.19
586 597 ============
587 598
588 599 IPython 7.19 accumulative two month of works, bug fixes and improvements, there
589 600 was exceptionally no release last month.
590 601
591 602 - Fix to restore the ability to specify more than one extension using command
592 603 line flags when using traitlets 5.0 :ghpull:`12543`
593 604 - Docs docs formatting that make the install commands work on zsh
594 605 :ghpull:`12587`
595 606 - Always display the last frame in tracebacks even if hidden with
596 607 ``__tracebackhide__`` :ghpull:`12601`
597 608 - Avoid an issue where a callback can be registered multiple times.
598 609 :ghpull:`12625`
599 610 - Avoid an issue in debugger mode where frames changes could be lost.
600 611 :ghpull:`12627`
601 612
602 613 - Never hide the frames that invoke a debugger, even if marked as hidden by
603 614 ``__tracebackhide__`` :ghpull:`12631`
604 615 - Fix calling the debugger in a recursive manner :ghpull:`12659`
605 616
606 617
607 618 A number of code changes have landed on master and we are getting close to
608 619 enough new features and codebase improvement that a 8.0 start to make sens.
609 620 For downstream packages, please start working on migrating downstream testing
610 621 away from iptest and using pytest, as nose will not work on Python 3.10 and we
611 622 will likely start removing it as a dependency for testing.
612 623
613 624 .. _version 718:
614 625
615 626 IPython 7.18
616 627 ============
617 628
618 629 IPython 7.18 is a minor release that mostly contains bugfixes.
619 630
620 631 - ``CRLF`` is now handled by magics my default; solving some issues due to copy
621 632 pasting on windows. :ghpull:`12475`
622 633
623 634 - Requiring pexpect ``>=4.3`` as we are Python 3.7+ only and earlier version of
624 635 pexpect will be incompatible. :ghpull:`12510`
625 636
626 637 - Minimum jedi version is now 0.16. :ghpull:`12488`
627 638
628 639
629 640
630 641 .. _version 717:
631 642
632 643 IPython 7.17
633 644 ============
634 645
635 646 IPython 7.17 brings a couple of new improvements to API and a couple of user
636 647 facing changes to make the terminal experience more user friendly.
637 648
638 649 :ghpull:`12407` introduces the ability to pass extra argument to the IPython
639 650 debugger class; this is to help a new project from ``kmaork``
640 651 (https://github.com/kmaork/madbg) to feature a fully remote debugger.
641 652
642 653 :ghpull:`12410` finally remove support for 3.6, while the codebase is still
643 654 technically compatible; IPython will not install on Python 3.6.
644 655
645 656 lots of work on the debugger and hidden frames from ``@impact27`` in
646 657 :ghpull:`12437`, :ghpull:`12445`, :ghpull:`12460` and in particular
647 658 :ghpull:`12453` which make the debug magic more robust at handling spaces.
648 659
649 660 Biggest API addition is code transformation which is done before code execution;
650 661 IPython allows a number of hooks to catch non-valid Python syntax (magic, prompt
651 662 stripping...etc). Transformers are usually called many time; typically:
652 663
653 664 - When trying to figure out whether the code is complete and valid (should we
654 665 insert a new line or execute ?)
655 666 - During actual code execution pass before giving the code to Python's
656 667 ``exec``.
657 668
658 669 This lead to issues when transformer might have had side effects; or do external
659 670 queries. Starting with IPython 7.17 you can expect your transformer to be called
660 671 less time.
661 672
662 673 Input transformers are now called only once in the execution path of
663 674 `InteractiveShell`, allowing to register transformer that potentially have side
664 675 effects (note that this is not recommended). Internal methods `should_run_async`, and
665 676 `run_cell_async` now take a recommended optional `transformed_cell`, and
666 677 `preprocessing_exc_tuple` parameters that will become mandatory at some point in
667 678 the future; that is to say cells need to be explicitly transformed to be valid
668 679 Python syntax ahead of trying to run them. :ghpull:`12440`;
669 680
670 681 ``input_transformers`` can now also have an attribute ``has_side_effects`` set
671 682 to `True`, when this attribute is present; this will prevent the transformers
672 683 from being ran when IPython is trying to guess whether the user input is
673 684 complete. Note that this may means you will need to explicitly execute in some
674 685 case where your transformations are now not ran; but will not affect users with
675 686 no custom extensions.
676 687
677 688
678 689 API Changes
679 690 -----------
680 691
681 692 Change of API and exposed objects automatically detected using `frappuccino
682 693 <https://pypi.org/project/frappuccino/>`_
683 694
684 695
685 696 The following items are new since 7.16.0::
686 697
687 698 + IPython.core.interactiveshell.InteractiveShell.get_local_scope(self, stack_depth)
688 699
689 700 The following signatures differ since 7.16.0::
690 701
691 702 - IPython.core.interactiveshell.InteractiveShell.run_cell_async(self, raw_cell, store_history=False, silent=False, shell_futures=True)
692 703 + IPython.core.interactiveshell.InteractiveShell.run_cell_async(self, raw_cell, store_history=False, silent=False, shell_futures=True, *, transformed_cell=None, preprocessing_exc_tuple=None)
693 704
694 705 - IPython.core.interactiveshell.InteractiveShell.should_run_async(self, raw_cell)
695 706 + IPython.core.interactiveshell.InteractiveShell.should_run_async(self, raw_cell, *, transformed_cell=None, preprocessing_exc_tuple=None)
696 707
697 708 - IPython.terminal.debugger.TerminalPdb.pt_init(self)
698 709 + IPython.terminal.debugger.TerminalPdb.pt_init(self, pt_session_options=None)
699 710
700 711 This method was added::
701 712
702 713 + IPython.core.interactiveshell.InteractiveShell.get_local_scope
703 714
704 715 Which is now also present on subclasses::
705 716
706 717 + IPython.terminal.embed.InteractiveShellEmbed.get_local_scope
707 718 + IPython.terminal.interactiveshell.TerminalInteractiveShell.get_local_scope
708 719
709 720
710 721 .. _version 716:
711 722
712 723 IPython 7.16.1, 7.16.2
713 724 ======================
714 725
715 726 IPython 7.16.1 was release immediately after 7.16.0 to fix a conda packaging issue.
716 727 The source is identical to 7.16.0 but the file permissions in the tar are different.
717 728
718 729 IPython 7.16.2 pins jedi dependency to "<=0.17.2" which should prevent some
719 730 issues for users still on python 3.6. This may not be sufficient as pip may
720 731 still allow to downgrade IPython.
721 732
722 733 Compatibility with Jedi > 0.17.2 was not added as this would have meant bumping
723 734 the minimal version to >0.16.
724 735
725 736 IPython 7.16
726 737 ============
727 738
728 739
729 740 The default traceback mode will now skip frames that are marked with
730 741 ``__tracebackhide__ = True`` and show how many traceback frames have been
731 742 skipped. This can be toggled by using :magic:`xmode` with the ``--show`` or
732 743 ``--hide`` attribute. It will have no effect on non verbose traceback modes.
733 744
734 745 The ipython debugger also now understands ``__tracebackhide__`` as well and will
735 746 skip hidden frames when displaying. Movement up and down the stack will skip the
736 747 hidden frames and will show how many frames were hidden. Internal IPython frames
737 748 are also now hidden by default. The behavior can be changed with the
738 749 ``skip_hidden`` while in the debugger, command and accepts "yes", "no", "true"
739 750 and "false" case insensitive parameters.
740 751
741 752
742 753 Misc Noticeable changes:
743 754 ------------------------
744 755
745 756 - Exceptions are now (re)raised when running notebooks via the :magic:`%run`, helping to catch issues in workflows and
746 757 pipelines. :ghpull:`12301`
747 758 - Fix inputhook for qt 5.15.0 :ghpull:`12355`
748 759 - Fix wx inputhook :ghpull:`12375`
749 760 - Add handling for malformed pathext env var (Windows) :ghpull:`12367`
750 761 - use $SHELL in system_piped :ghpull:`12360` for uniform behavior with
751 762 ipykernel.
752 763
753 764 Reproducible Build
754 765 ------------------
755 766
756 767 IPython 7.15 reproducible build did not work, so we try again this month
757 768 :ghpull:`12358`.
758 769
759 770
760 771 API Changes
761 772 -----------
762 773
763 774 Change of API and exposed objects automatically detected using `frappuccino
764 775 <https://pypi.org/project/frappuccino/>`_ (still in beta):
765 776
766 777
767 778 The following items are new and mostly related to understanding ``__tracebackhide__``::
768 779
769 780 + IPython.core.debugger.Pdb.do_down(self, arg)
770 781 + IPython.core.debugger.Pdb.do_skip_hidden(self, arg)
771 782 + IPython.core.debugger.Pdb.do_up(self, arg)
772 783 + IPython.core.debugger.Pdb.hidden_frames(self, stack)
773 784 + IPython.core.debugger.Pdb.stop_here(self, frame)
774 785
775 786
776 787 The following items have been removed::
777 788
778 789 - IPython.core.debugger.Pdb.new_do_down
779 790 - IPython.core.debugger.Pdb.new_do_up
780 791
781 792 Those were implementation details.
782 793
783 794
784 795 .. _version 715:
785 796
786 797 IPython 7.15
787 798 ============
788 799
789 800 IPython 7.15 brings a number of bug fixes and user facing improvements.
790 801
791 802 Misc Noticeable changes:
792 803 ------------------------
793 804
794 805 - Long completion name have better elision in terminal :ghpull:`12284`
795 806 - I've started to test on Python 3.9 :ghpull:`12307` and fix some errors.
796 807 - Hi DPI scaling of figures when using qt eventloop :ghpull:`12314`
797 808 - Document the ability to have systemwide configuration for IPython.
798 809 :ghpull:`12328`
799 810 - Fix issues with input autoformatting :ghpull:`12336`
800 811 - ``IPython.core.debugger.Pdb`` is now interruptible (:ghpull:`12168`, in 7.14
801 812 but forgotten in release notes)
802 813 - Video HTML attributes (:ghpull:`12212`, in 7.14 but forgotten in release
803 814 notes)
804 815
805 816 Reproducible Build
806 817 ------------------
807 818
808 819 Starting with IPython 7.15, I am attempting to provide reproducible builds,
809 820 that is to say you should be able from the source tree to generate an sdist
810 821 and wheel that are identical byte for byte with the publish version on PyPI.
811 822
812 823 I've only tested on a couple of machines so far and the process is relatively
813 824 straightforward, so this mean that IPython not only have a deterministic build
814 825 process, but also I have either removed, or put under control all effects of
815 826 the build environments on the final artifact. I encourage you to attempt the
816 827 build process on your machine as documented in :ref:`core_developer_guide`
817 828 and let me know if you do not obtain an identical artifact.
818 829
819 830 While reproducible builds is critical to check that the supply chain of (open
820 831 source) software has not been compromised, it can also help to speedup many
821 832 of the build processes in large environment (conda, apt...) by allowing
822 833 better caching of intermediate build steps.
823 834
824 835 Learn more on `<https://reproducible-builds.org/>`_. `Reflections on trusting
825 836 trust <https://dl.acm.org/doi/10.1145/358198.358210>`_ is also one of the
826 837 cornerstone and recommended reads on this subject.
827 838
828 839 .. note::
829 840
830 841 The build commit from which the sdist is generated is also `signed
831 842 <https://en.wikipedia.org/wiki/Digital_signature>`_, so you should be able to
832 843 check it has not been compromised, and the git repository is a `merkle-tree
833 844 <https://en.wikipedia.org/wiki/Merkle_tree>`_, you can check the consistency
834 845 with `git-fsck <https://git-scm.com/docs/git-fsck>`_ which you likely `want
835 846 to enable by default
836 847 <https://gist.github.com/mbbx6spp/14b86437e794bffb4120>`_.
837 848
838 849 NEP29: Last version to support Python 3.6
839 850 -----------------------------------------
840 851
841 852 IPython 7.15 will be the Last IPython version to officially support Python
842 853 3.6, as stated by `NumPy Enhancement Proposal 29
843 854 <https://numpy.org/neps/nep-0029-deprecation_policy.html>`_. Starting with
844 855 next minor version of IPython I may stop testing on Python 3.6 and may stop
845 856 publishing release artifacts that install on Python 3.6
846 857
847 858 Highlighted features
848 859 --------------------
849 860
850 861 Highlighted features are not new, but seem to not be widely known, this
851 862 section will help you discover in more narrative form what you can do with
852 863 IPython.
853 864
854 865 Increase Tab Completion Menu Height
855 866 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
856 867
857 868 In terminal IPython it is possible to increase the hight of the tab-completion
858 869 menu. To do so set the value of
859 870 :configtrait:`TerminalInteractiveShell.space_for_menu`, this will reserve more
860 871 space at the bottom of the screen for various kind of menus in IPython including
861 872 tab completion and searching in history.
862 873
863 874 Autoformat Code in the terminal
864 875 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
865 876
866 877 If you have a preferred code formatter, you can configure IPython to
867 878 reformat your code. Set the value of
868 879 :configtrait:`TerminalInteractiveShell.autoformatter` to for example ``'black'``
869 880 and IPython will auto format your code when possible.
870 881
871 882
872 883 .. _version 714:
873 884
874 885 IPython 7.14
875 886 ============
876 887
877 888 IPython 7.14 is a minor release that fix a couple of bugs and prepare
878 889 compatibility with new or future versions of some libraries.
879 890
880 891 Important changes:
881 892 ------------------
882 893
883 894 - Fix compatibility with Sphinx 3+ :ghpull:`12235`
884 895 - Remove deprecated matplotlib parameter usage, compatibility with matplotlib
885 896 3.3+ :`122250`
886 897
887 898 Misc Changes
888 899 ------------
889 900
890 901 - set ``.py`` extension when editing current buffer in vi/emacs. :ghpull:`12167`
891 902 - support for unicode identifiers in ``?``/``??`` :ghpull:`12208`
892 903 - add extra options to the ``Video`` Rich objects :ghpull:`12212`
893 904 - add pretty-printing to ``SimpleNamespace`` :ghpull:`12230`
894 905
895 906 IPython.core.debugger.Pdb is now interruptible
896 907 ----------------------------------------------
897 908
898 909 A ``KeyboardInterrupt`` will now interrupt IPython's extended debugger, in order to make Jupyter able to interrupt it. (:ghpull:`12168`)
899 910
900 911 Video HTML attributes
901 912 ---------------------
902 913
903 914 Add an option to `IPython.display.Video` to change the attributes of the HTML display of the video (:ghpull:`12212`)
904 915
905 916
906 917 Pending deprecated imports
907 918 --------------------------
908 919
909 920 Many object present in ``IPython.core.display`` are there for internal use only,
910 921 and should already been imported from ``IPython.display`` by users and external
911 922 libraries. Trying to import those from ``IPython.core.display`` is still possible
912 923 but will trigger a
913 924 deprecation warning in later versions of IPython and will become errors in the
914 925 future.
915 926
916 927 This will simplify compatibility with other Python kernels (like Xeus-Python),
917 928 and simplify code base.
918 929
919 930
920 931
921 932
922 933 .. _version 713:
923 934
924 935 IPython 7.13
925 936 ============
926 937
927 938 IPython 7.13 is the final release of the 7.x branch since master is diverging
928 939 toward an 8.0. Exiting new features have already been merged in 8.0 and will
929 940 not be available on the 7.x branch. All the changes below have been backported
930 941 from the master branch.
931 942
932 943
933 944 - Fix inability to run PDB when inside an event loop :ghpull:`12141`
934 945 - Fix ability to interrupt some processes on windows :ghpull:`12137`
935 946 - Fix debugger shortcuts :ghpull:`12132`
936 947 - improve tab completion when inside a string by removing irrelevant elements :ghpull:`12128`
937 948 - Fix display of filename tab completion when the path is long :ghpull:`12122`
938 949 - Many removal of Python 2 specific code path :ghpull:`12110`
939 950 - displaying wav files do not require NumPy anymore, and is 5x to 30x faster :ghpull:`12113`
940 951
941 952 See the list of all closed issues and pull request on `github
942 953 <https://github.com/ipython/ipython/pulls?q=is%3Aclosed+milestone%3A7.13>`_.
943 954
944 955 .. _version 712:
945 956
946 957 IPython 7.12
947 958 ============
948 959
949 960 IPython 7.12 is a minor update that mostly brings code cleanup, removal of
950 961 longtime deprecated function and a couple update to documentation cleanup as well.
951 962
952 963 Notable changes are the following:
953 964
954 965 - Exit non-zero when ipython is given a file path to run that doesn't exist :ghpull:`12074`
955 966 - Test PR on ARM64 with Travis-CI :ghpull:`12073`
956 967 - Update CI to work with latest Pytest :ghpull:`12086`
957 968 - Add infrastructure to run ipykernel eventloop via trio :ghpull:`12097`
958 969 - Support git blame ignore revs :ghpull:`12091`
959 970 - Start multi-line ``__repr__`` s on their own line :ghpull:`12099`
960 971
961 972 .. _version 7111:
962 973
963 974 IPython 7.11.1
964 975 ==============
965 976
966 977 A couple of deprecated functions (no-op) have been reintroduces in py3compat as
967 978 Cython was still relying on them, and will be removed in a couple of versions.
968 979
969 980 .. _version 711:
970 981
971 982 IPython 7.11
972 983 ============
973 984
974 985 IPython 7.11 received a couple of compatibility fixes and code cleanup.
975 986
976 987 A number of function in the ``py3compat`` have been removed; a number of types
977 988 in the IPython code base are now non-ambiguous and now always ``unicode``
978 989 instead of ``Union[Unicode,bytes]``; many of the relevant code path have thus
979 990 been simplified/cleaned and types annotation added.
980 991
981 992 IPython support several verbosity level from exceptions. ``xmode plain`` now
982 993 support chained exceptions. :ghpull:`11999`
983 994
984 995 We are starting to remove ``shell=True`` in some usages of subprocess. While not directly
985 996 a security issue (as IPython is made to run arbitrary code anyway) it is not good
986 997 practice and we'd like to show the example. :ghissue:`12023`. This discussion
987 998 was started by ``@mschwager`` thanks to a new auditing tool they are working on
988 999 with duo-labs (`dlint <https://github.com/duo-labs/dlint>`_).
989 1000
990 1001 Work around some bugs in Python 3.9 tokenizer :ghpull:`12057`
991 1002
992 1003 IPython will now print its version after a crash. :ghpull:`11986`
993 1004
994 1005 This is likely the last release from the 7.x series that will see new feature.
995 1006 The master branch will soon accept large code changes and thrilling new
996 1007 features; the 7.x branch will only start to accept critical bug fixes, and
997 1008 update dependencies.
998 1009
999 1010 .. _version 7102:
1000 1011
1001 1012 IPython 7.10.2
1002 1013 ==============
1003 1014
1004 1015 IPython 7.10.2 fix a couple of extra incompatibility between IPython, ipdb,
1005 1016 asyncio and Prompt Toolkit 3.
1006 1017
1007 1018 .. _version 7101:
1008 1019
1009 1020 IPython 7.10.1
1010 1021 ==============
1011 1022
1012 1023 IPython 7.10.1 fix a couple of incompatibilities with Prompt toolkit 3 (please
1013 1024 update Prompt toolkit to 3.0.2 at least), and fixes some interaction with
1014 1025 headless IPython.
1015 1026
1016 1027 .. _version 7100:
1017 1028
1018 1029 IPython 7.10.0
1019 1030 ==============
1020 1031
1021 1032 IPython 7.10 is the first double digit minor release in the last decade, and
1022 1033 first since the release of IPython 1.0, previous double digit minor release was
1023 1034 in August 2009.
1024 1035
1025 1036 We've been trying to give you regular release on the last Friday of every month
1026 1037 for a guaranty of rapid access to bug fixes and new features.
1027 1038
1028 1039 Unlike the previous first few releases that have seen only a couple of code
1029 1040 changes, 7.10 bring a number of changes, new features and bugfixes.
1030 1041
1031 1042 Stop Support for Python 3.5 – Adopt NEP 29
1032 1043 ------------------------------------------
1033 1044
1034 1045 IPython has decided to follow the informational `NEP 29
1035 1046 <https://numpy.org/neps/nep-0029-deprecation_policy.html>`_ which layout a clear
1036 1047 policy as to which version of (C)Python and NumPy are supported.
1037 1048
1038 1049 We thus dropped support for Python 3.5, and cleaned up a number of code path
1039 1050 that were Python-version dependant. If you are on 3.5 or earlier pip should
1040 1051 automatically give you the latest compatible version of IPython so you do not
1041 1052 need to pin to a given version.
1042 1053
1043 1054 Support for Prompt Toolkit 3.0
1044 1055 ------------------------------
1045 1056
1046 1057 Prompt Toolkit 3.0 was release a week before IPython 7.10 and introduces a few
1047 1058 breaking changes. We believe IPython 7.10 should be compatible with both Prompt
1048 1059 Toolkit 2.x and 3.x, though it has not been extensively tested with 3.x so
1049 1060 please report any issues.
1050 1061
1051 1062
1052 1063 Prompt Rendering Performance improvements
1053 1064 -----------------------------------------
1054 1065
1055 1066 Pull Request :ghpull:`11933` introduced an optimisation in the prompt rendering
1056 1067 logic that should decrease the resource usage of IPython when using the
1057 1068 _default_ configuration but could potentially introduce a regression of
1058 1069 functionalities if you are using a custom prompt.
1059 1070
1060 1071 We know assume if you haven't changed the default keybindings that the prompt
1061 1072 **will not change** during the duration of your input – which is for example
1062 1073 not true when using vi insert mode that switches between `[ins]` and `[nor]`
1063 1074 for the current mode.
1064 1075
1065 1076 If you are experiencing any issue let us know.
1066 1077
1067 1078 Code autoformatting
1068 1079 -------------------
1069 1080
1070 1081 The IPython terminal can now auto format your code just before entering a new
1071 1082 line or executing a command. To do so use the
1072 1083 ``--TerminalInteractiveShell.autoformatter`` option and set it to ``'black'``;
1073 1084 if black is installed IPython will use black to format your code when possible.
1074 1085
1075 1086 IPython cannot always properly format your code; in particular it will
1076 1087 auto formatting with *black* will only work if:
1077 1088
1078 1089 - Your code does not contains magics or special python syntax.
1079 1090
1080 1091 - There is no code after your cursor.
1081 1092
1082 1093 The Black API is also still in motion; so this may not work with all versions of
1083 1094 black.
1084 1095
1085 1096 It should be possible to register custom formatter, though the API is till in
1086 1097 flux.
1087 1098
1088 1099 Arbitrary Mimetypes Handing in Terminal (Aka inline images in terminal)
1089 1100 -----------------------------------------------------------------------
1090 1101
1091 1102 When using IPython terminal it is now possible to register function to handle
1092 1103 arbitrary mimetypes. While rendering non-text based representation was possible in
1093 1104 many jupyter frontend; it was not possible in terminal IPython, as usually
1094 1105 terminal are limited to displaying text. As many terminal these days provide
1095 1106 escape sequences to display non-text; bringing this loved feature to IPython CLI
1096 1107 made a lot of sens. This functionality will not only allow inline images; but
1097 1108 allow opening of external program; for example ``mplayer`` to "display" sound
1098 1109 files.
1099 1110
1100 1111 So far only the hooks necessary for this are in place, but no default mime
1101 1112 renderers added; so inline images will only be available via extensions. We will
1102 1113 progressively enable these features by default in the next few releases, and
1103 1114 contribution is welcomed.
1104 1115
1105 1116 We welcome any feedback on the API. See :ref:`shell_mimerenderer` for more
1106 1117 informations.
1107 1118
1108 1119 This is originally based on work form in :ghpull:`10610` from @stephanh42
1109 1120 started over two years ago, and still a lot need to be done.
1110 1121
1111 1122 MISC
1112 1123 ----
1113 1124
1114 1125 - Completions can define their own ordering :ghpull:`11855`
1115 1126 - Enable Plotting in the same cell than the one that import matplotlib
1116 1127 :ghpull:`11916`
1117 1128 - Allow to store and restore multiple variables at once :ghpull:`11930`
1118 1129
1119 1130 You can see `all pull-requests <https://github.com/ipython/ipython/pulls?q=is%3Apr+milestone%3A7.10+is%3Aclosed>`_ for this release.
1120 1131
1121 1132 API Changes
1122 1133 -----------
1123 1134
1124 1135 Change of API and exposed objects automatically detected using `frappuccino <https://pypi.org/project/frappuccino/>`_ (still in beta):
1125 1136
1126 1137 The following items are new in IPython 7.10::
1127 1138
1128 1139 + IPython.terminal.shortcuts.reformat_text_before_cursor(buffer, document, shell)
1129 1140 + IPython.terminal.interactiveshell.PTK3
1130 1141 + IPython.terminal.interactiveshell.black_reformat_handler(text_before_cursor)
1131 1142 + IPython.terminal.prompts.RichPromptDisplayHook.write_format_data(self, format_dict, md_dict='None')
1132 1143
1133 1144 The following items have been removed in 7.10::
1134 1145
1135 1146 - IPython.lib.pretty.DICT_IS_ORDERED
1136 1147
1137 1148 The following signatures differ between versions::
1138 1149
1139 1150 - IPython.extensions.storemagic.restore_aliases(ip)
1140 1151 + IPython.extensions.storemagic.restore_aliases(ip, alias='None')
1141 1152
1142 1153 Special Thanks
1143 1154 --------------
1144 1155
1145 1156 - @stephanh42 who started the work on inline images in terminal 2 years ago
1146 1157 - @augustogoulart who spent a lot of time triaging issues and responding to
1147 1158 users.
1148 1159 - @con-f-use who is my (@Carreau) first sponsor on GitHub, as a reminder if you
1149 1160 like IPython, Jupyter and many other library of the SciPy stack you can
1150 1161 donate to numfocus.org non profit
1151 1162
1152 1163 .. _version 790:
1153 1164
1154 1165 IPython 7.9.0
1155 1166 =============
1156 1167
1157 1168 IPython 7.9 is a small release with a couple of improvement and bug fixes.
1158 1169
1159 1170 - Xterm terminal title should be restored on exit :ghpull:`11910`
1160 1171 - special variables ``_``,``__``, ``___`` are not set anymore when cache size
1161 1172 is 0 or less. :ghpull:`11877`
1162 1173 - Autoreload should have regained some speed by using a new heuristic logic to
1163 1174 find all objects needing reload. This should avoid large objects traversal
1164 1175 like pandas dataframes. :ghpull:`11876`
1165 1176 - Get ready for Python 4. :ghpull:`11874`
1166 1177 - `%env` Magic now has heuristic to hide potentially sensitive values :ghpull:`11896`
1167 1178
1168 1179 This is a small release despite a number of Pull Request Pending that need to
1169 1180 be reviewed/worked on. Many of the core developers have been busy outside of
1170 1181 IPython/Jupyter and we thanks all contributor for their patience; we'll work on
1171 1182 these as soon as we have time.
1172 1183
1173 1184
1174 1185 .. _version780:
1175 1186
1176 1187 IPython 7.8.0
1177 1188 =============
1178 1189
1179 1190 IPython 7.8.0 contain a few bugfix and 2 new APIs:
1180 1191
1181 1192 - Enable changing the font color for LaTeX rendering :ghpull:`11840`
1182 1193 - and Re-Expose some PDB API (see below)
1183 1194
1184 1195 Expose Pdb API
1185 1196 --------------
1186 1197
1187 1198 Expose the built-in ``pdb.Pdb`` API. ``Pdb`` constructor arguments are generically
1188 1199 exposed, regardless of python version.
1189 1200 Newly exposed arguments:
1190 1201
1191 1202 - ``skip`` - Python 3.1+
1192 1203 - ``nosiginnt`` - Python 3.2+
1193 1204 - ``readrc`` - Python 3.6+
1194 1205
1195 1206 Try it out::
1196 1207
1197 1208 from IPython.terminal.debugger import TerminalPdb
1198 1209 pdb = TerminalPdb(skip=["skipthismodule"])
1199 1210
1200 1211
1201 1212 See :ghpull:`11840`
1202 1213
1203 1214 .. _version770:
1204 1215
1205 1216 IPython 7.7.0
1206 1217 =============
1207 1218
1208 1219 IPython 7.7.0 contain multiple bug fixes and documentation updates; Here are a
1209 1220 few of the outstanding issue fixed:
1210 1221
1211 1222 - Fix a bug introduced in 7.6 where the ``%matplotlib`` magic would fail on
1212 1223 previously acceptable arguments :ghpull:`11814`.
1213 1224 - Fix the manage location on freebsd :ghpull:`11808`.
1214 1225 - Fix error message about aliases after ``%reset`` call in ipykernel
1215 1226 :ghpull:`11806`
1216 1227 - Fix Duplication completions in emacs :ghpull:`11803`
1217 1228
1218 1229 We are planning to adopt `NEP29 <https://github.com/numpy/numpy/pull/14086>`_
1219 1230 (still currently in draft) which may make this minor version of IPython the
1220 1231 last one to support Python 3.5 and will make the code base more aggressive
1221 1232 toward removing compatibility with older versions of Python.
1222 1233
1223 1234 GitHub now support to give only "Triage" permissions to users; if you'd like to
1224 1235 help close stale issues and labels issues please reach to us with your GitHub
1225 1236 Username and we'll add you to the triage team. It is a great way to start
1226 1237 contributing and a path toward getting commit rights.
1227 1238
1228 1239 .. _version761:
1229 1240
1230 1241 IPython 7.6.1
1231 1242 =============
1232 1243
1233 1244 IPython 7.6.1 contain a critical bugfix in the ``%timeit`` magic, which would
1234 1245 crash on some inputs as a side effect of :ghpull:`11716`. See :ghpull:`11812`
1235 1246
1236 1247
1237 1248 .. _whatsnew760:
1238 1249
1239 1250 IPython 7.6.0
1240 1251 =============
1241 1252
1242 1253 IPython 7.6.0 contains a couple of bug fixes and number of small features
1243 1254 additions as well as some compatibility with the current development version of
1244 1255 Python 3.8.
1245 1256
1246 1257 - Add a ``-l`` option to :magic:`psearch` to list the available search
1247 1258 types. :ghpull:`11672`
1248 1259 - Support ``PathLike`` for ``DisplayObject`` and ``Image``. :ghpull:`11764`
1249 1260 - Configurability of timeout in the test suite for slow platforms.
1250 1261 :ghpull:`11756`
1251 1262 - Accept any casing for matplotlib backend. :ghpull:`121748`
1252 1263 - Properly skip test that requires numpy to be installed :ghpull:`11723`
1253 1264 - More support for Python 3.8 and positional only arguments (pep570)
1254 1265 :ghpull:`11720`
1255 1266 - Unicode names for the completion are loaded lazily on first use which
1256 1267 should decrease startup time. :ghpull:`11693`
1257 1268 - Autoreload now update the types of reloaded objects; this for example allow
1258 1269 pickling of reloaded objects. :ghpull:`11644`
1259 1270 - Fix a bug where ``%%time`` magic would suppress cell output. :ghpull:`11716`
1260 1271
1261 1272
1262 1273 Prepare migration to pytest (instead of nose) for testing
1263 1274 ---------------------------------------------------------
1264 1275
1265 1276 Most of the work between 7.5 and 7.6 was to prepare the migration from our
1266 1277 testing framework to pytest. Most of the test suite should now work by simply
1267 1278 issuing ``pytest`` from the root of the repository.
1268 1279
1269 1280 The migration to pytest is just at its beginning. Many of our test still rely
1270 1281 on IPython-specific plugins for nose using pytest (doctest using IPython syntax
1271 1282 is one example of this where test appear as "passing", while no code has been
1272 1283 ran). Many test also need to be updated like ``yield-test`` to be properly
1273 1284 parametrized tests.
1274 1285
1275 1286 Migration to pytest allowed me to discover a number of issues in our test
1276 1287 suite; which was hiding a number of subtle issues – or not actually running
1277 1288 some of the tests in our test suite – I have thus corrected many of those; like
1278 1289 improperly closed resources; or used of deprecated features. I also made use of
1279 1290 the ``pytest --durations=...`` to find some of our slowest test and speed them
1280 1291 up (our test suite can now be up to 10% faster). Pytest as also a variety of
1281 1292 plugins and flags which will make the code quality of IPython and the testing
1282 1293 experience better.
1283 1294
1284 1295 Misc
1285 1296 ----
1286 1297
1287 1298 We skipped the release of 7.6 at the end of May, but will attempt to get back
1288 1299 on schedule. We are starting to think about making introducing backward
1289 1300 incompatible change and start the 8.0 series.
1290 1301
1291 1302 Special Thanks to Gabriel (@gpotter2 on GitHub), who among other took care many
1292 1303 of the remaining task for 7.4 and 7.5, like updating the website.
1293 1304
1294 1305 .. _whatsnew750:
1295 1306
1296 1307 IPython 7.5.0
1297 1308 =============
1298 1309
1299 1310 IPython 7.5.0 consist mostly of bug-fixes, and documentation updates, with one
1300 1311 minor new feature. The `Audio` display element can now be assigned an element
1301 1312 id when displayed in browser. See :ghpull:`11670`
1302 1313
1303 1314 The major outstanding bug fix correct a change of behavior that was introduce
1304 1315 in 7.4.0 where some cell magics would not be able to access or modify global
1305 1316 scope when using the ``@needs_local_scope`` decorator. This was typically
1306 1317 encountered with the ``%%time`` and ``%%timeit`` magics. See :ghissue:`11659`
1307 1318 and :ghpull:`11698`.
1308 1319
1309 1320 .. _whatsnew740:
1310 1321
1311 1322 IPython 7.4.0
1312 1323 =============
1313 1324
1314 1325 Unicode name completions
1315 1326 ------------------------
1316 1327
1317 1328 Previously, we provided completion for a unicode name with its relative symbol.
1318 1329 With this, now IPython provides complete suggestions to unicode name symbols.
1319 1330
1320 1331 As on the PR, if user types ``\LAT<tab>``, IPython provides a list of
1321 1332 possible completions. In this case, it would be something like::
1322 1333
1323 1334 'LATIN CAPITAL LETTER A',
1324 1335 'LATIN CAPITAL LETTER B',
1325 1336 'LATIN CAPITAL LETTER C',
1326 1337 'LATIN CAPITAL LETTER D',
1327 1338 ....
1328 1339
1329 1340 This help to type unicode character that do not have short latex aliases, and
1330 1341 have long unicode names. for example ``Ν°``, ``\GREEK CAPITAL LETTER HETA``.
1331 1342
1332 1343 This feature was contributed by Luciana Marques :ghpull:`11583`.
1333 1344
1334 1345 Make audio normalization optional
1335 1346 ---------------------------------
1336 1347
1337 1348 Added 'normalize' argument to `IPython.display.Audio`. This argument applies
1338 1349 when audio data is given as an array of samples. The default of `normalize=True`
1339 1350 preserves prior behavior of normalizing the audio to the maximum possible range.
1340 1351 Setting to `False` disables normalization.
1341 1352
1342 1353
1343 1354 Miscellaneous
1344 1355 -------------
1345 1356
1346 1357 - Fix improper acceptation of ``return`` outside of functions. :ghpull:`11641`.
1347 1358 - Fixed PyQt 5.11 backwards incompatibility causing sip import failure.
1348 1359 :ghpull:`11613`.
1349 1360 - Fix Bug where ``type?`` would crash IPython. :ghpull:`1608`.
1350 1361 - Allow to apply ``@needs_local_scope`` to cell magics for convenience.
1351 1362 :ghpull:`11542`.
1352 1363
1353 1364 .. _whatsnew730:
1354 1365
1355 1366 IPython 7.3.0
1356 1367 =============
1357 1368
1358 1369 .. _whatsnew720:
1359 1370
1360 1371 IPython 7.3.0 bring several bug fixes and small improvements that you will
1361 1372 described bellow.
1362 1373
1363 1374 The biggest change to this release is the implementation of the ``%conda`` and
1364 1375 ``%pip`` magics, that will attempt to install packages in the **current
1365 1376 environment**. You may still need to restart your interpreter or kernel for the
1366 1377 change to be taken into account, but it should simplify installation of packages
1367 1378 into remote environment. Installing using pip/conda from the command line is
1368 1379 still the prefer method.
1369 1380
1370 1381 The ``%pip`` magic was already present, but was only printing a warning; now it
1371 1382 will actually forward commands to pip.
1372 1383
1373 1384 Misc bug fixes and improvements:
1374 1385
1375 1386 - Compatibility with Python 3.8.
1376 1387 - Do not expand shell variable in execution magics, and added the
1377 1388 ``no_var_expand`` decorator for magic requiring a similar functionality
1378 1389 :ghpull:`11516`
1379 1390 - Add ``%pip`` and ``%conda`` magic :ghpull:`11524`
1380 1391 - Re-initialize posix aliases after a ``%reset`` :ghpull:`11528`
1381 1392 - Allow the IPython command line to run ``*.ipynb`` files :ghpull:`11529`
1382 1393
1383 1394 IPython 7.2.0
1384 1395 =============
1385 1396
1386 1397 IPython 7.2.0 brings minor bugfixes, improvements, and new configuration options:
1387 1398
1388 1399 - Fix a bug preventing PySide2 GUI integration from working :ghpull:`11464`
1389 1400 - Run CI on Mac OS ! :ghpull:`11471`
1390 1401 - Fix IPython "Demo" mode. :ghpull:`11498`
1391 1402 - Fix ``%run`` magic with path in name :ghpull:`11499`
1392 1403 - Fix: add CWD to sys.path *after* stdlib :ghpull:`11502`
1393 1404 - Better rendering of signatures, especially long ones. :ghpull:`11505`
1394 1405 - Re-enable jedi by default if it's installed :ghpull:`11506`
1395 1406 - Add New ``minimal`` exception reporting mode (useful for educational purpose). See :ghpull:`11509`
1396 1407
1397 1408
1398 1409 Added ability to show subclasses when using pinfo and other utilities
1399 1410 ---------------------------------------------------------------------
1400 1411
1401 1412 When using ``?``/``??`` on a class, IPython will now list the first 10 subclasses.
1402 1413
1403 1414 Special Thanks to Chris Mentzel of the Moore Foundation for this feature. Chris
1404 1415 is one of the people who played a critical role in IPython/Jupyter getting
1405 1416 funding.
1406 1417
1407 1418 We are grateful for all the help Chris has given us over the years,
1408 1419 and we're now proud to have code contributed by Chris in IPython.
1409 1420
1410 1421 OSMagics.cd_force_quiet configuration option
1411 1422 --------------------------------------------
1412 1423
1413 1424 You can set this option to force the %cd magic to behave as if ``-q`` was passed:
1414 1425 ::
1415 1426
1416 1427 In [1]: cd /
1417 1428 /
1418 1429
1419 1430 In [2]: %config OSMagics.cd_force_quiet = True
1420 1431
1421 1432 In [3]: cd /tmp
1422 1433
1423 1434 In [4]:
1424 1435
1425 1436 See :ghpull:`11491`
1426 1437
1427 1438 In vi editing mode, whether the prompt includes the current vi mode can now be configured
1428 1439 -----------------------------------------------------------------------------------------
1429 1440
1430 1441 Set the ``TerminalInteractiveShell.prompt_includes_vi_mode`` to a boolean value
1431 1442 (default: True) to control this feature. See :ghpull:`11492`
1432 1443
1433 1444 .. _whatsnew710:
1434 1445
1435 1446 IPython 7.1.0
1436 1447 =============
1437 1448
1438 1449 IPython 7.1.0 is the first minor release after 7.0.0 and mostly brings fixes to
1439 1450 new features, internal refactoring, and fixes for regressions that happened during the 6.x->7.x
1440 1451 transition. It also brings **Compatibility with Python 3.7.1**, as we're
1441 1452 unwillingly relying on a bug in CPython.
1442 1453
1443 1454 New Core Dev:
1444 1455
1445 1456 - We welcome Jonathan Slenders to the commiters. Jonathan has done a fantastic
1446 1457 work on prompt_toolkit, and we'd like to recognise his impact by giving him
1447 1458 commit rights. :ghissue:`11397`
1448 1459
1449 1460 Notable Changes
1450 1461
1451 1462 - Major update of "latex to unicode" tab completion map (see below)
1452 1463
1453 1464 Notable New Features:
1454 1465
1455 1466 - Restore functionality and documentation of the **sphinx directive**, which
1456 1467 is now stricter (fail on error by daefault), has new configuration options,
1457 1468 has a brand new documentation page :ref:`ipython_directive` (which needs
1458 1469 some cleanup). It is also now *tested* so we hope to have less regressions.
1459 1470 :ghpull:`11402`
1460 1471
1461 1472 - ``IPython.display.Video`` now supports ``width`` and ``height`` arguments,
1462 1473 allowing a custom width and height to be set instead of using the video's
1463 1474 width and height. :ghpull:`11353`
1464 1475
1465 1476 - Warn when using ``HTML('<iframe>')`` instead of ``IFrame`` :ghpull:`11350`
1466 1477
1467 1478 - Allow Dynamic switching of editing mode between vi/emacs and show
1468 1479 normal/input mode in prompt when using vi. :ghpull:`11390`. Use ``%config
1469 1480 TerminalInteractiveShell.editing_mode = 'vi'`` or ``%config
1470 1481 TerminalInteractiveShell.editing_mode = 'emacs'`` to dynamically switch
1471 1482 between modes.
1472 1483
1473 1484
1474 1485 Notable Fixes:
1475 1486
1476 1487 - Fix entering of **multi-line blocks in terminal** IPython, and various
1477 1488 crashes in the new input transformation machinery :ghpull:`11354`,
1478 1489 :ghpull:`11356`, :ghpull:`11358`. These also fix a **Compatibility bug
1479 1490 with Python 3.7.1**.
1480 1491
1481 1492 - Fix moving through generator stack in ipdb :ghpull:`11266`
1482 1493
1483 1494 - %Magic command arguments now support quoting. :ghpull:`11330`
1484 1495
1485 1496 - Re-add ``rprint`` and ``rprinte`` aliases. :ghpull:`11331`
1486 1497
1487 1498 - Remove implicit dependency on ``ipython_genutils`` :ghpull:`11317`
1488 1499
1489 1500 - Make ``nonlocal`` raise ``SyntaxError`` instead of silently failing in async
1490 1501 mode. :ghpull:`11382`
1491 1502
1492 1503 - Fix mishandling of magics and ``= !`` assignment just after a dedent in
1493 1504 nested code blocks :ghpull:`11418`
1494 1505
1495 1506 - Fix instructions for custom shortcuts :ghpull:`11426`
1496 1507
1497 1508
1498 1509 Notable Internals improvements:
1499 1510
1500 1511 - Use of ``os.scandir`` (Python 3 only) to speed up some file system operations.
1501 1512 :ghpull:`11365`
1502 1513
1503 1514 - use ``perf_counter`` instead of ``clock`` for more precise
1504 1515 timing results with ``%time`` :ghpull:`11376`
1505 1516
1506 1517 Many thanks to all the contributors and in particular to ``bartskowron`` and
1507 1518 ``tonyfast`` who handled some pretty complicated bugs in the input machinery. We
1508 1519 had a number of first time contributors and maybe hacktoberfest participants that
1509 1520 made significant contributions and helped us free some time to focus on more
1510 1521 complicated bugs.
1511 1522
1512 1523 You
1513 1524 can see all the closed issues and Merged PR, new features and fixes `here
1514 1525 <https://github.com/ipython/ipython/issues?utf8=%E2%9C%93&q=+is%3Aclosed+milestone%3A7.1+>`_.
1515 1526
1516 1527 Unicode Completion update
1517 1528 -------------------------
1518 1529
1519 1530 In IPython 7.1 the Unicode completion map has been updated and synchronized with
1520 1531 the Julia language.
1521 1532
1522 1533 Added and removed character characters:
1523 1534
1524 1535 ``\jmath`` (``Θ·``), ``\\underleftrightarrow`` (U+034D, combining) have been
1525 1536 added, while ``\\textasciicaron`` have been removed
1526 1537
1527 1538 Some sequences have seen their prefix removed:
1528 1539
1529 1540 - 6 characters ``\text...<tab>`` should now be inputed with ``\...<tab>`` directly,
1530 1541 - 45 characters ``\Elz...<tab>`` should now be inputed with ``\...<tab>`` directly,
1531 1542 - 65 characters ``\B...<tab>`` should now be inputed with ``\...<tab>`` directly,
1532 1543 - 450 characters ``\m...<tab>`` should now be inputed with ``\...<tab>`` directly,
1533 1544
1534 1545 Some sequences have seen their prefix shortened:
1535 1546
1536 1547 - 5 characters ``\mitBbb...<tab>`` should now be inputed with ``\bbi...<tab>`` directly,
1537 1548 - 52 characters ``\mit...<tab>`` should now be inputed with ``\i...<tab>`` directly,
1538 1549 - 216 characters ``\mbfit...<tab>`` should now be inputed with ``\bi...<tab>`` directly,
1539 1550 - 222 characters ``\mbf...<tab>`` should now be inputed with ``\b...<tab>`` directly,
1540 1551
1541 1552 A couple of characters had their sequence simplified:
1542 1553
1543 1554 - ``Γ°``, type ``\dh<tab>``, instead of ``\eth<tab>``
1544 1555 - ``Δ§``, type ``\hbar<tab>``, instead of ``\Elzxh<tab>``
1545 1556 - ``ΙΈ``, type ``\ltphi<tab>``, instead of ``\textphi<tab>``
1546 1557 - ``Ο΄``, type ``\varTheta<tab>``, instead of ``\textTheta<tab>``
1547 1558 - ``ℇ``, type ``\eulermascheroni<tab>``, instead of ``\Eulerconst<tab>``
1548 1559 - ``β„Ž``, type ``\planck<tab>``, instead of ``\Planckconst<tab>``
1549 1560
1550 1561 - U+0336 (COMBINING LONG STROKE OVERLAY), type ``\strike<tab>``, instead of ``\Elzbar<tab>``.
1551 1562
1552 1563 A couple of sequences have been updated:
1553 1564
1554 1565 - ``\varepsilon`` now gives ``Ι›`` (GREEK SMALL LETTER EPSILON) instead of ``Ξ΅`` (GREEK LUNATE EPSILON SYMBOL),
1555 1566 - ``\underbar`` now gives U+0331 (COMBINING MACRON BELOW) instead of U+0332 (COMBINING LOW LINE).
1556 1567
1557 1568
1558 1569 .. _whatsnew700:
1559 1570
1560 1571 IPython 7.0.0
1561 1572 =============
1562 1573
1563 1574 Released Thursday September 27th, 2018
1564 1575
1565 1576 IPython 7 includes major feature improvements.
1566 1577 This is also the second major version of IPython to support only
1567 1578 Python 3 – starting at Python 3.4. Python 2 is still community-supported
1568 1579 on the bugfix only 5.x branch, but we remind you that Python 2 "end of life"
1569 1580 is on Jan 1st 2020.
1570 1581
1571 1582 We were able to backport bug fixes to the 5.x branch thanks to our backport bot which
1572 1583 backported more than `70 Pull-Requests
1573 1584 <https://github.com/ipython/ipython/pulls?page=3&q=is%3Apr+sort%3Aupdated-desc+author%3Aapp%2Fmeeseeksdev++5.x&utf8=%E2%9C%93>`_, but there are still many PRs that required manual work. This is an area of the project where you can easily contribute by looking for `PRs that still need manual backport <https://github.com/ipython/ipython/issues?q=label%3A%22Still+Needs+Manual+Backport%22+is%3Aclosed+sort%3Aupdated-desc>`_
1574 1585
1575 1586 The IPython 6.x branch will likely not see any further release unless critical
1576 1587 bugs are found.
1577 1588
1578 1589 Make sure you have pip > 9.0 before upgrading. You should be able to update by running:
1579 1590
1580 1591 .. code::
1581 1592
1582 1593 pip install ipython --upgrade
1583 1594
1584 1595 .. only:: ipydev
1585 1596
1586 1597 If you are trying to install or update an ``alpha``, ``beta``, or ``rc``
1587 1598 version, use pip ``--pre`` flag.
1588 1599
1589 1600 .. code::
1590 1601
1591 1602 pip install ipython --upgrade --pre
1592 1603
1593 1604
1594 1605 Or, if you have conda installed:
1595 1606
1596 1607 .. code::
1597 1608
1598 1609 conda install ipython
1599 1610
1600 1611
1601 1612
1602 1613 Prompt Toolkit 2.0
1603 1614 ------------------
1604 1615
1605 1616 IPython 7.0+ now uses ``prompt_toolkit 2.0``. If you still need to use an earlier
1606 1617 ``prompt_toolkit`` version, you may need to pin IPython to ``<7.0``.
1607 1618
1608 1619 Autowait: Asynchronous REPL
1609 1620 ---------------------------
1610 1621
1611 1622 Staring with IPython 7.0 on Python 3.6+, IPython can automatically ``await``
1612 1623 top level code. You should not need to access an event loop or runner
1613 1624 yourself. To learn more, read the :ref:`autoawait` section of our docs, see
1614 1625 :ghpull:`11265`, or try the following code::
1615 1626
1616 1627 Python 3.6.0
1617 1628 Type 'copyright', 'credits' or 'license' for more information
1618 1629 IPython 7.0.0 -- An enhanced Interactive Python. Type '?' for help.
1619 1630
1620 1631 In [1]: import aiohttp
1621 1632 ...: result = aiohttp.get('https://api.github.com')
1622 1633
1623 1634 In [2]: response = await result
1624 1635 <pause for a few 100s ms>
1625 1636
1626 1637 In [3]: await response.json()
1627 1638 Out[3]:
1628 1639 {'authorizations_url': 'https://api.github.com/authorizations',
1629 1640 'code_search_url': 'https://api.github.com/search/code?q={query}{&page,per_page,sort,order}',
1630 1641 ...
1631 1642 }
1632 1643
1633 1644 .. note::
1634 1645
1635 1646 Async integration is experimental code, behavior may change or be removed
1636 1647 between Python and IPython versions without warnings.
1637 1648
1638 1649 Integration is by default with `asyncio`, but other libraries can be configured --
1639 1650 like ``curio`` or ``trio`` -- to improve concurrency in the REPL::
1640 1651
1641 1652 In [1]: %autoawait trio
1642 1653
1643 1654 In [2]: import trio
1644 1655
1645 1656 In [3]: async def child(i):
1646 1657 ...: print(" child %s goes to sleep"%i)
1647 1658 ...: await trio.sleep(2)
1648 1659 ...: print(" child %s wakes up"%i)
1649 1660
1650 1661 In [4]: print('parent start')
1651 1662 ...: async with trio.open_nursery() as n:
1652 1663 ...: for i in range(3):
1653 1664 ...: n.spawn(child, i)
1654 1665 ...: print('parent end')
1655 1666 parent start
1656 1667 child 2 goes to sleep
1657 1668 child 0 goes to sleep
1658 1669 child 1 goes to sleep
1659 1670 <about 2 seconds pause>
1660 1671 child 2 wakes up
1661 1672 child 1 wakes up
1662 1673 child 0 wakes up
1663 1674 parent end
1664 1675
1665 1676 See :ref:`autoawait` for more information.
1666 1677
1667 1678
1668 1679 Asynchronous code in a Notebook interface or any other frontend using the
1669 1680 Jupyter Protocol will require further updates to the IPykernel package.
1670 1681
1671 1682 Non-Asynchronous code
1672 1683 ~~~~~~~~~~~~~~~~~~~~~
1673 1684
1674 1685 As the internal API of IPython is now asynchronous, IPython needs to run under
1675 1686 an event loop. In order to allow many workflows, (like using the :magic:`%run`
1676 1687 magic, or copy-pasting code that explicitly starts/stop event loop), when
1677 1688 top-level code is detected as not being asynchronous, IPython code is advanced
1678 1689 via a pseudo-synchronous runner, and may not advance pending tasks.
1679 1690
1680 1691 Change to Nested Embed
1681 1692 ~~~~~~~~~~~~~~~~~~~~~~
1682 1693
1683 1694 The introduction of the ability to run async code had some effect on the
1684 1695 ``IPython.embed()`` API. By default, embed will not allow you to run asynchronous
1685 1696 code unless an event loop is specified.
1686 1697
1687 1698 Effects on Magics
1688 1699 ~~~~~~~~~~~~~~~~~
1689 1700
1690 1701 Some magics will not work with async until they're updated.
1691 1702 Contributions welcome.
1692 1703
1693 1704 Expected Future changes
1694 1705 ~~~~~~~~~~~~~~~~~~~~~~~
1695 1706
1696 1707 We expect more internal but public IPython functions to become ``async``, and
1697 1708 will likely end up having a persistent event loop while IPython is running.
1698 1709
1699 1710 Thanks
1700 1711 ~~~~~~
1701 1712
1702 1713 This release took more than a year in the making.
1703 1714 The code was rebased a number of
1704 1715 times; leading to commit authorship that may have been lost in the final
1705 1716 Pull-Request. Huge thanks to many people for contribution, discussion, code,
1706 1717 documentation, use-cases: dalejung, danielballan, ellisonbg, fperez, gnestor,
1707 1718 minrk, njsmith, pganssle, tacaswell, takluyver , vidartf ... And many others.
1708 1719
1709 1720
1710 1721 Autoreload Improvement
1711 1722 ----------------------
1712 1723
1713 1724 The magic :magic:`%autoreload 2 <autoreload>` now captures new methods added to
1714 1725 classes. Earlier, only methods existing as of the initial import were being
1715 1726 tracked and updated.
1716 1727
1717 1728 This new feature helps dual environment development - Jupyter+IDE - where the
1718 1729 code gradually moves from notebook cells to package files as it gets
1719 1730 structured.
1720 1731
1721 1732 **Example**: An instance of the class ``MyClass`` will be able to access the
1722 1733 method ``cube()`` after it is uncommented and the file ``file1.py`` is saved on
1723 1734 disk.
1724 1735
1725 1736
1726 1737 .. code::
1727 1738
1728 1739 # notebook
1729 1740
1730 1741 from mymodule import MyClass
1731 1742 first = MyClass(5)
1732 1743
1733 1744 .. code::
1734 1745
1735 1746 # mymodule/file1.py
1736 1747
1737 1748 class MyClass:
1738 1749
1739 1750 def __init__(self, a=10):
1740 1751 self.a = a
1741 1752
1742 1753 def square(self):
1743 1754 print('compute square')
1744 1755 return self.a*self.a
1745 1756
1746 1757 # def cube(self):
1747 1758 # print('compute cube')
1748 1759 # return self.a*self.a*self.a
1749 1760
1750 1761
1751 1762
1752 1763
1753 1764 Misc
1754 1765 ----
1755 1766
1756 1767 The autoindent feature that was deprecated in 5.x was re-enabled and
1757 1768 un-deprecated in :ghpull:`11257`
1758 1769
1759 1770 Make :magic:`%run -n -i ... <run>` work correctly. Earlier, if :magic:`%run` was
1760 1771 passed both arguments, ``-n`` would be silently ignored. See :ghpull:`10308`
1761 1772
1762 1773
1763 1774 The :cellmagic:`%%script` (as well as :cellmagic:`%%bash`,
1764 1775 :cellmagic:`%%ruby`... ) cell magics now raise by default if the return code of
1765 1776 the given code is non-zero (thus halting execution of further cells in a
1766 1777 notebook). The behavior can be disable by passing the ``--no-raise-error`` flag.
1767 1778
1768 1779
1769 1780 Deprecations
1770 1781 ------------
1771 1782
1772 1783 A couple of unused functions and methods have been deprecated and will be removed
1773 1784 in future versions:
1774 1785
1775 1786 - ``IPython.utils.io.raw_print_err``
1776 1787 - ``IPython.utils.io.raw_print``
1777 1788
1778 1789
1779 1790 Backwards incompatible changes
1780 1791 ------------------------------
1781 1792
1782 1793 * The API for transforming input before it is parsed as Python code has been
1783 1794 completely redesigned: any custom input transformations will need to be
1784 1795 rewritten. See :doc:`/config/inputtransforms` for details of the new API.
General Comments 0
You need to be logged in to leave comments. Login now