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