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