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