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