##// END OF EJS Templates
Merge pull request #13342 from meeseeksmachine/auto-backport-of-pr-13339-on-7.x...
Matthias Bussonnier -
r27179:7a997039 merge
parent child Browse files
Show More
@@ -1,1671 +1,1716 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.1, 7.16.2
600 645 ======================
601 646
602 647 IPython 7.16.1 was release immediately after 7.16.0 to fix a conda packaging issue.
603 648 The source is identical to 7.16.0 but the file permissions in the tar are different.
604 649
605 650 IPython 7.16.2 pins jedi dependency to "<=0.17.2" which should prevent some
606 651 issues for users still on python 3.6. This may not be sufficient as pip may
607 652 still allow to downgrade IPython.
608 653
609 654 Compatibility with Jedi > 0.17.2 was not added as this would have meant bumping
610 655 the minimal version to >0.16.
611 656
612 657 IPython 7.16
613 658 ============
614 659
615 660
616 661 The default traceback mode will now skip frames that are marked with
617 662 ``__tracebackhide__ = True`` and show how many traceback frames have been
618 663 skipped. This can be toggled by using :magic:`xmode` with the ``--show`` or
619 664 ``--hide`` attribute. It will have no effect on non verbose traceback modes.
620 665
621 666 The ipython debugger also now understands ``__tracebackhide__`` as well and will
622 667 skip hidden frames when displaying. Movement up and down the stack will skip the
623 668 hidden frames and will show how many frames were hidden. Internal IPython frames
624 669 are also now hidden by default. The behavior can be changed with the
625 670 ``skip_hidden`` while in the debugger, command and accepts "yes", "no", "true"
626 671 and "false" case insensitive parameters.
627 672
628 673
629 674 Misc Noticeable changes:
630 675 ------------------------
631 676
632 677 - Exceptions are now (re)raised when running notebooks via the :magic:`%run`, helping to catch issues in workflows and
633 678 pipelines. :ghpull:`12301`
634 679 - Fix inputhook for qt 5.15.0 :ghpull:`12355`
635 680 - Fix wx inputhook :ghpull:`12375`
636 681 - Add handling for malformed pathext env var (Windows) :ghpull:`12367`
637 682 - use $SHELL in system_piped :ghpull:`12360` for uniform behavior with
638 683 ipykernel.
639 684
640 685 Reproducible Build
641 686 ------------------
642 687
643 688 IPython 7.15 reproducible build did not work, so we try again this month
644 689 :ghpull:`12358`.
645 690
646 691
647 692 API Changes
648 693 -----------
649 694
650 695 Change of API and exposed objects automatically detected using `frappuccino
651 696 <https://pypi.org/project/frappuccino/>`_ (still in beta):
652 697
653 698
654 699 The following items are new and mostly related to understanding ``__tracebackhide__``::
655 700
656 701 + IPython.core.debugger.Pdb.do_down(self, arg)
657 702 + IPython.core.debugger.Pdb.do_skip_hidden(self, arg)
658 703 + IPython.core.debugger.Pdb.do_up(self, arg)
659 704 + IPython.core.debugger.Pdb.hidden_frames(self, stack)
660 705 + IPython.core.debugger.Pdb.stop_here(self, frame)
661 706
662 707
663 708 The following items have been removed::
664 709
665 710 - IPython.core.debugger.Pdb.new_do_down
666 711 - IPython.core.debugger.Pdb.new_do_up
667 712
668 713 Those were implementation details.
669 714
670 715
671 716 .. _version 715:
672 717
673 718 IPython 7.15
674 719 ============
675 720
676 721 IPython 7.15 brings a number of bug fixes and user facing improvements.
677 722
678 723 Misc Noticeable changes:
679 724 ------------------------
680 725
681 726 - Long completion name have better elision in terminal :ghpull:`12284`
682 727 - I've started to test on Python 3.9 :ghpull:`12307` and fix some errors.
683 728 - Hi DPI scaling of figures when using qt eventloop :ghpull:`12314`
684 729 - Document the ability to have systemwide configuration for IPython.
685 730 :ghpull:`12328`
686 731 - Fix issues with input autoformatting :ghpull:`12336`
687 732 - ``IPython.core.debugger.Pdb`` is now interruptible (:ghpull:`12168`, in 7.14
688 733 but forgotten in release notes)
689 734 - Video HTML attributes (:ghpull:`12212`, in 7.14 but forgotten in release
690 735 notes)
691 736
692 737 Reproducible Build
693 738 ------------------
694 739
695 740 Starting with IPython 7.15, I am attempting to provide reproducible builds,
696 741 that is to say you should be able from the source tree to generate an sdist
697 742 and wheel that are identical byte for byte with the publish version on PyPI.
698 743
699 744 I've only tested on a couple of machines so far and the process is relatively
700 745 straightforward, so this mean that IPython not only have a deterministic build
701 746 process, but also I have either removed, or put under control all effects of
702 747 the build environments on the final artifact. I encourage you to attempt the
703 748 build process on your machine as documented in :ref:`core_developer_guide`
704 749 and let me know if you do not obtain an identical artifact.
705 750
706 751 While reproducible builds is critical to check that the supply chain of (open
707 752 source) software has not been compromised, it can also help to speedup many
708 753 of the build processes in large environment (conda, apt...) by allowing
709 754 better caching of intermediate build steps.
710 755
711 756 Learn more on `<https://reproducible-builds.org/>`_. `Reflections on trusting
712 757 trust <https://dl.acm.org/doi/10.1145/358198.358210>`_ is also one of the
713 758 cornerstone and recommended reads on this subject.
714 759
715 760 .. note::
716 761
717 762 The build commit from which the sdist is generated is also `signed
718 763 <https://en.wikipedia.org/wiki/Digital_signature>`_, so you should be able to
719 764 check it has not been compromised, and the git repository is a `merkle-tree
720 765 <https://en.wikipedia.org/wiki/Merkle_tree>`_, you can check the consistency
721 766 with `git-fsck <https://git-scm.com/docs/git-fsck>`_ which you likely `want
722 767 to enable by default
723 768 <https://gist.github.com/mbbx6spp/14b86437e794bffb4120>`_.
724 769
725 770 NEP29: Last version to support Python 3.6
726 771 -----------------------------------------
727 772
728 773 IPython 7.15 will be the Last IPython version to officially support Python
729 774 3.6, as stated by `NumPy Enhancement Proposal 29
730 775 <https://numpy.org/neps/nep-0029-deprecation_policy.html>`_. Starting with
731 776 next minor version of IPython I may stop testing on Python 3.6 and may stop
732 777 publishing release artifacts that install on Python 3.6
733 778
734 779 Highlighted features
735 780 --------------------
736 781
737 782 Highlighted features are not new, but seem to not be widely known, this
738 783 section will help you discover in more narrative form what you can do with
739 784 IPython.
740 785
741 786 Increase Tab Completion Menu Height
742 787 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
743 788
744 789 In terminal IPython it is possible to increase the hight of the tab-completion
745 790 menu. To do so set the value of
746 791 :configtrait:`TerminalInteractiveShell.space_for_menu`, this will reserve more
747 792 space at the bottom of the screen for various kind of menus in IPython including
748 793 tab completion and searching in history.
749 794
750 795 Autoformat Code in the terminal
751 796 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
752 797
753 798 If you have a preferred code formatter, you can configure IPython to
754 799 reformat your code. Set the value of
755 800 :configtrait:`TerminalInteractiveShell.autoformatter` to for example ``'black'``
756 801 and IPython will auto format your code when possible.
757 802
758 803
759 804 .. _version 714:
760 805
761 806 IPython 7.14
762 807 ============
763 808
764 809 IPython 7.14 is a minor release that fix a couple of bugs and prepare
765 810 compatibility with new or future versions of some libraries.
766 811
767 812 Important changes:
768 813 ------------------
769 814
770 815 - Fix compatibility with Sphinx 3+ :ghpull:`12235`
771 816 - Remove deprecated matplotlib parameter usage, compatibility with matplotlib
772 817 3.3+ :`122250`
773 818
774 819 Misc Changes
775 820 ------------
776 821
777 822 - set ``.py`` extension when editing current buffer in vi/emacs. :ghpull:`12167`
778 823 - support for unicode identifiers in ``?``/``??`` :ghpull:`12208`
779 824 - add extra options to the ``Video`` Rich objects :ghpull:`12212`
780 825 - add pretty-printing to ``SimpleNamespace`` :ghpull:`12230`
781 826
782 827 IPython.core.debugger.Pdb is now interruptible
783 828 ----------------------------------------------
784 829
785 830 A ``KeyboardInterrupt`` will now interrupt IPython's extended debugger, in order to make Jupyter able to interrupt it. (:ghpull:`12168`)
786 831
787 832 Video HTML attributes
788 833 ---------------------
789 834
790 835 Add an option to `IPython.display.Video` to change the attributes of the HTML display of the video (:ghpull:`12212`)
791 836
792 837
793 838 Pending deprecated imports
794 839 --------------------------
795 840
796 841 Many object present in ``IPython.core.display`` are there for internal use only,
797 842 and should already been imported from ``IPython.display`` by users and external
798 843 libraries. Trying to import those from ``IPython.core.display`` is still possible
799 844 but will trigger a
800 845 deprecation warning in later versions of IPython and will become errors in the
801 846 future.
802 847
803 848 This will simplify compatibility with other Python kernels (like Xeus-Python),
804 849 and simplify code base.
805 850
806 851
807 852
808 853
809 854 .. _version 713:
810 855
811 856 IPython 7.13
812 857 ============
813 858
814 859 IPython 7.13 is the final release of the 7.x branch since master is diverging
815 860 toward an 8.0. Exiting new features have already been merged in 8.0 and will
816 861 not be available on the 7.x branch. All the changes below have been backported
817 862 from the master branch.
818 863
819 864
820 865 - Fix inability to run PDB when inside an event loop :ghpull:`12141`
821 866 - Fix ability to interrupt some processes on windows :ghpull:`12137`
822 867 - Fix debugger shortcuts :ghpull:`12132`
823 868 - improve tab completion when inside a string by removing irrelevant elements :ghpull:`12128`
824 869 - Fix display of filename tab completion when the path is long :ghpull:`12122`
825 870 - Many removal of Python 2 specific code path :ghpull:`12110`
826 871 - displaying wav files do not require NumPy anymore, and is 5x to 30x faster :ghpull:`12113`
827 872
828 873 See the list of all closed issues and pull request on `github
829 874 <https://github.com/ipython/ipython/pulls?q=is%3Aclosed+milestone%3A7.13>`_.
830 875
831 876 .. _version 712:
832 877
833 878 IPython 7.12
834 879 ============
835 880
836 881 IPython 7.12 is a minor update that mostly brings code cleanup, removal of
837 882 longtime deprecated function and a couple update to documentation cleanup as well.
838 883
839 884 Notable changes are the following:
840 885
841 886 - Exit non-zero when ipython is given a file path to run that doesn't exist :ghpull:`12074`
842 887 - Test PR on ARM64 with Travis-CI :ghpull:`12073`
843 888 - Update CI to work with latest Pytest :ghpull:`12086`
844 889 - Add infrastructure to run ipykernel eventloop via trio :ghpull:`12097`
845 890 - Support git blame ignore revs :ghpull:`12091`
846 891 - Start multi-line ``__repr__`` s on their own line :ghpull:`12099`
847 892
848 893 .. _version 7111:
849 894
850 895 IPython 7.11.1
851 896 ==============
852 897
853 898 A couple of deprecated functions (no-op) have been reintroduces in py3compat as
854 899 Cython was still relying on them, and will be removed in a couple of versions.
855 900
856 901 .. _version 711:
857 902
858 903 IPython 7.11
859 904 ============
860 905
861 906 IPython 7.11 received a couple of compatibility fixes and code cleanup.
862 907
863 908 A number of function in the ``py3compat`` have been removed; a number of types
864 909 in the IPython code base are now non-ambiguous and now always ``unicode``
865 910 instead of ``Union[Unicode,bytes]``; many of the relevant code path have thus
866 911 been simplified/cleaned and types annotation added.
867 912
868 913 IPython support several verbosity level from exceptions. ``xmode plain`` now
869 914 support chained exceptions. :ghpull:`11999`
870 915
871 916 We are starting to remove ``shell=True`` in some usages of subprocess. While not directly
872 917 a security issue (as IPython is made to run arbitrary code anyway) it is not good
873 918 practice and we'd like to show the example. :ghissue:`12023`. This discussion
874 919 was started by ``@mschwager`` thanks to a new auditing tool they are working on
875 920 with duo-labs (`dlint <https://github.com/duo-labs/dlint>`_).
876 921
877 922 Work around some bugs in Python 3.9 tokenizer :ghpull:`12057`
878 923
879 924 IPython will now print its version after a crash. :ghpull:`11986`
880 925
881 926 This is likely the last release from the 7.x series that will see new feature.
882 927 The master branch will soon accept large code changes and thrilling new
883 928 features; the 7.x branch will only start to accept critical bug fixes, and
884 929 update dependencies.
885 930
886 931 .. _version 7102:
887 932
888 933 IPython 7.10.2
889 934 ==============
890 935
891 936 IPython 7.10.2 fix a couple of extra incompatibility between IPython, ipdb,
892 937 asyncio and Prompt Toolkit 3.
893 938
894 939 .. _version 7101:
895 940
896 941 IPython 7.10.1
897 942 ==============
898 943
899 944 IPython 7.10.1 fix a couple of incompatibilities with Prompt toolkit 3 (please
900 945 update Prompt toolkit to 3.0.2 at least), and fixes some interaction with
901 946 headless IPython.
902 947
903 948 .. _version 7100:
904 949
905 950 IPython 7.10.0
906 951 ==============
907 952
908 953 IPython 7.10 is the first double digit minor release in the last decade, and
909 954 first since the release of IPython 1.0, previous double digit minor release was
910 955 in August 2009.
911 956
912 957 We've been trying to give you regular release on the last Friday of every month
913 958 for a guaranty of rapid access to bug fixes and new features.
914 959
915 960 Unlike the previous first few releases that have seen only a couple of code
916 961 changes, 7.10 bring a number of changes, new features and bugfixes.
917 962
918 963 Stop Support for Python 3.5 – Adopt NEP 29
919 964 ------------------------------------------
920 965
921 966 IPython has decided to follow the informational `NEP 29
922 967 <https://numpy.org/neps/nep-0029-deprecation_policy.html>`_ which layout a clear
923 968 policy as to which version of (C)Python and NumPy are supported.
924 969
925 970 We thus dropped support for Python 3.5, and cleaned up a number of code path
926 971 that were Python-version dependant. If you are on 3.5 or earlier pip should
927 972 automatically give you the latest compatible version of IPython so you do not
928 973 need to pin to a given version.
929 974
930 975 Support for Prompt Toolkit 3.0
931 976 ------------------------------
932 977
933 978 Prompt Toolkit 3.0 was release a week before IPython 7.10 and introduces a few
934 979 breaking changes. We believe IPython 7.10 should be compatible with both Prompt
935 980 Toolkit 2.x and 3.x, though it has not been extensively tested with 3.x so
936 981 please report any issues.
937 982
938 983
939 984 Prompt Rendering Performance improvements
940 985 -----------------------------------------
941 986
942 987 Pull Request :ghpull:`11933` introduced an optimisation in the prompt rendering
943 988 logic that should decrease the resource usage of IPython when using the
944 989 _default_ configuration but could potentially introduce a regression of
945 990 functionalities if you are using a custom prompt.
946 991
947 992 We know assume if you haven't changed the default keybindings that the prompt
948 993 **will not change** during the duration of your input – which is for example
949 994 not true when using vi insert mode that switches between `[ins]` and `[nor]`
950 995 for the current mode.
951 996
952 997 If you are experiencing any issue let us know.
953 998
954 999 Code autoformatting
955 1000 -------------------
956 1001
957 1002 The IPython terminal can now auto format your code just before entering a new
958 1003 line or executing a command. To do so use the
959 1004 ``--TerminalInteractiveShell.autoformatter`` option and set it to ``'black'``;
960 1005 if black is installed IPython will use black to format your code when possible.
961 1006
962 1007 IPython cannot always properly format your code; in particular it will
963 1008 auto formatting with *black* will only work if:
964 1009
965 1010 - Your code does not contains magics or special python syntax.
966 1011
967 1012 - There is no code after your cursor.
968 1013
969 1014 The Black API is also still in motion; so this may not work with all versions of
970 1015 black.
971 1016
972 1017 It should be possible to register custom formatter, though the API is till in
973 1018 flux.
974 1019
975 1020 Arbitrary Mimetypes Handing in Terminal (Aka inline images in terminal)
976 1021 -----------------------------------------------------------------------
977 1022
978 1023 When using IPython terminal it is now possible to register function to handle
979 1024 arbitrary mimetypes. While rendering non-text based representation was possible in
980 1025 many jupyter frontend; it was not possible in terminal IPython, as usually
981 1026 terminal are limited to displaying text. As many terminal these days provide
982 1027 escape sequences to display non-text; bringing this loved feature to IPython CLI
983 1028 made a lot of sens. This functionality will not only allow inline images; but
984 1029 allow opening of external program; for example ``mplayer`` to "display" sound
985 1030 files.
986 1031
987 1032 So far only the hooks necessary for this are in place, but no default mime
988 1033 renderers added; so inline images will only be available via extensions. We will
989 1034 progressively enable these features by default in the next few releases, and
990 1035 contribution is welcomed.
991 1036
992 1037 We welcome any feedback on the API. See :ref:`shell_mimerenderer` for more
993 1038 informations.
994 1039
995 1040 This is originally based on work form in :ghpull:`10610` from @stephanh42
996 1041 started over two years ago, and still a lot need to be done.
997 1042
998 1043 MISC
999 1044 ----
1000 1045
1001 1046 - Completions can define their own ordering :ghpull:`11855`
1002 1047 - Enable Plotting in the same cell than the one that import matplotlib
1003 1048 :ghpull:`11916`
1004 1049 - Allow to store and restore multiple variables at once :ghpull:`11930`
1005 1050
1006 1051 You can see `all pull-requests <https://github.com/ipython/ipython/pulls?q=is%3Apr+milestone%3A7.10+is%3Aclosed>`_ for this release.
1007 1052
1008 1053 API Changes
1009 1054 -----------
1010 1055
1011 1056 Change of API and exposed objects automatically detected using `frappuccino <https://pypi.org/project/frappuccino/>`_ (still in beta):
1012 1057
1013 1058 The following items are new in IPython 7.10::
1014 1059
1015 1060 + IPython.terminal.shortcuts.reformat_text_before_cursor(buffer, document, shell)
1016 1061 + IPython.terminal.interactiveshell.PTK3
1017 1062 + IPython.terminal.interactiveshell.black_reformat_handler(text_before_cursor)
1018 1063 + IPython.terminal.prompts.RichPromptDisplayHook.write_format_data(self, format_dict, md_dict='None')
1019 1064
1020 1065 The following items have been removed in 7.10::
1021 1066
1022 1067 - IPython.lib.pretty.DICT_IS_ORDERED
1023 1068
1024 1069 The following signatures differ between versions::
1025 1070
1026 1071 - IPython.extensions.storemagic.restore_aliases(ip)
1027 1072 + IPython.extensions.storemagic.restore_aliases(ip, alias='None')
1028 1073
1029 1074 Special Thanks
1030 1075 --------------
1031 1076
1032 1077 - @stephanh42 who started the work on inline images in terminal 2 years ago
1033 1078 - @augustogoulart who spent a lot of time triaging issues and responding to
1034 1079 users.
1035 1080 - @con-f-use who is my (@Carreau) first sponsor on GitHub, as a reminder if you
1036 1081 like IPython, Jupyter and many other library of the SciPy stack you can
1037 1082 donate to numfocus.org non profit
1038 1083
1039 1084 .. _version 790:
1040 1085
1041 1086 IPython 7.9.0
1042 1087 =============
1043 1088
1044 1089 IPython 7.9 is a small release with a couple of improvement and bug fixes.
1045 1090
1046 1091 - Xterm terminal title should be restored on exit :ghpull:`11910`
1047 1092 - special variables ``_``,``__``, ``___`` are not set anymore when cache size
1048 1093 is 0 or less. :ghpull:`11877`
1049 1094 - Autoreload should have regained some speed by using a new heuristic logic to
1050 1095 find all objects needing reload. This should avoid large objects traversal
1051 1096 like pandas dataframes. :ghpull:`11876`
1052 1097 - Get ready for Python 4. :ghpull:`11874`
1053 1098 - `%env` Magic now has heuristic to hide potentially sensitive values :ghpull:`11896`
1054 1099
1055 1100 This is a small release despite a number of Pull Request Pending that need to
1056 1101 be reviewed/worked on. Many of the core developers have been busy outside of
1057 1102 IPython/Jupyter and we thanks all contributor for their patience; we'll work on
1058 1103 these as soon as we have time.
1059 1104
1060 1105
1061 1106 .. _version780:
1062 1107
1063 1108 IPython 7.8.0
1064 1109 =============
1065 1110
1066 1111 IPython 7.8.0 contain a few bugfix and 2 new APIs:
1067 1112
1068 1113 - Enable changing the font color for LaTeX rendering :ghpull:`11840`
1069 1114 - and Re-Expose some PDB API (see below)
1070 1115
1071 1116 Expose Pdb API
1072 1117 --------------
1073 1118
1074 1119 Expose the built-in ``pdb.Pdb`` API. ``Pdb`` constructor arguments are generically
1075 1120 exposed, regardless of python version.
1076 1121 Newly exposed arguments:
1077 1122
1078 1123 - ``skip`` - Python 3.1+
1079 1124 - ``nosiginnt`` - Python 3.2+
1080 1125 - ``readrc`` - Python 3.6+
1081 1126
1082 1127 Try it out::
1083 1128
1084 1129 from IPython.terminal.debugger import TerminalPdb
1085 1130 pdb = TerminalPdb(skip=["skipthismodule"])
1086 1131
1087 1132
1088 1133 See :ghpull:`11840`
1089 1134
1090 1135 .. _version770:
1091 1136
1092 1137 IPython 7.7.0
1093 1138 =============
1094 1139
1095 1140 IPython 7.7.0 contain multiple bug fixes and documentation updates; Here are a
1096 1141 few of the outstanding issue fixed:
1097 1142
1098 1143 - Fix a bug introduced in 7.6 where the ``%matplotlib`` magic would fail on
1099 1144 previously acceptable arguments :ghpull:`11814`.
1100 1145 - Fix the manage location on freebsd :ghpull:`11808`.
1101 1146 - Fix error message about aliases after ``%reset`` call in ipykernel
1102 1147 :ghpull:`11806`
1103 1148 - Fix Duplication completions in emacs :ghpull:`11803`
1104 1149
1105 1150 We are planning to adopt `NEP29 <https://github.com/numpy/numpy/pull/14086>`_
1106 1151 (still currently in draft) which may make this minor version of IPython the
1107 1152 last one to support Python 3.5 and will make the code base more aggressive
1108 1153 toward removing compatibility with older versions of Python.
1109 1154
1110 1155 GitHub now support to give only "Triage" permissions to users; if you'd like to
1111 1156 help close stale issues and labels issues please reach to us with your GitHub
1112 1157 Username and we'll add you to the triage team. It is a great way to start
1113 1158 contributing and a path toward getting commit rights.
1114 1159
1115 1160 .. _version761:
1116 1161
1117 1162 IPython 7.6.1
1118 1163 =============
1119 1164
1120 1165 IPython 7.6.1 contain a critical bugfix in the ``%timeit`` magic, which would
1121 1166 crash on some inputs as a side effect of :ghpull:`11716`. See :ghpull:`11812`
1122 1167
1123 1168
1124 1169 .. _whatsnew760:
1125 1170
1126 1171 IPython 7.6.0
1127 1172 =============
1128 1173
1129 1174 IPython 7.6.0 contains a couple of bug fixes and number of small features
1130 1175 additions as well as some compatibility with the current development version of
1131 1176 Python 3.8.
1132 1177
1133 1178 - Add a ``-l`` option to :magic:`psearch` to list the available search
1134 1179 types. :ghpull:`11672`
1135 1180 - Support ``PathLike`` for ``DisplayObject`` and ``Image``. :ghpull:`11764`
1136 1181 - Configurability of timeout in the test suite for slow platforms.
1137 1182 :ghpull:`11756`
1138 1183 - Accept any casing for matplotlib backend. :ghpull:`121748`
1139 1184 - Properly skip test that requires numpy to be installed :ghpull:`11723`
1140 1185 - More support for Python 3.8 and positional only arguments (pep570)
1141 1186 :ghpull:`11720`
1142 1187 - Unicode names for the completion are loaded lazily on first use which
1143 1188 should decrease startup time. :ghpull:`11693`
1144 1189 - Autoreload now update the types of reloaded objects; this for example allow
1145 1190 pickling of reloaded objects. :ghpull:`11644`
1146 1191 - Fix a bug where ``%%time`` magic would suppress cell output. :ghpull:`11716`
1147 1192
1148 1193
1149 1194 Prepare migration to pytest (instead of nose) for testing
1150 1195 ---------------------------------------------------------
1151 1196
1152 1197 Most of the work between 7.5 and 7.6 was to prepare the migration from our
1153 1198 testing framework to pytest. Most of the test suite should now work by simply
1154 1199 issuing ``pytest`` from the root of the repository.
1155 1200
1156 1201 The migration to pytest is just at its beginning. Many of our test still rely
1157 1202 on IPython-specific plugins for nose using pytest (doctest using IPython syntax
1158 1203 is one example of this where test appear as "passing", while no code has been
1159 1204 ran). Many test also need to be updated like ``yield-test`` to be properly
1160 1205 parametrized tests.
1161 1206
1162 1207 Migration to pytest allowed me to discover a number of issues in our test
1163 1208 suite; which was hiding a number of subtle issues – or not actually running
1164 1209 some of the tests in our test suite – I have thus corrected many of those; like
1165 1210 improperly closed resources; or used of deprecated features. I also made use of
1166 1211 the ``pytest --durations=...`` to find some of our slowest test and speed them
1167 1212 up (our test suite can now be up to 10% faster). Pytest as also a variety of
1168 1213 plugins and flags which will make the code quality of IPython and the testing
1169 1214 experience better.
1170 1215
1171 1216 Misc
1172 1217 ----
1173 1218
1174 1219 We skipped the release of 7.6 at the end of May, but will attempt to get back
1175 1220 on schedule. We are starting to think about making introducing backward
1176 1221 incompatible change and start the 8.0 series.
1177 1222
1178 1223 Special Thanks to Gabriel (@gpotter2 on GitHub), who among other took care many
1179 1224 of the remaining task for 7.4 and 7.5, like updating the website.
1180 1225
1181 1226 .. _whatsnew750:
1182 1227
1183 1228 IPython 7.5.0
1184 1229 =============
1185 1230
1186 1231 IPython 7.5.0 consist mostly of bug-fixes, and documentation updates, with one
1187 1232 minor new feature. The `Audio` display element can now be assigned an element
1188 1233 id when displayed in browser. See :ghpull:`11670`
1189 1234
1190 1235 The major outstanding bug fix correct a change of behavior that was introduce
1191 1236 in 7.4.0 where some cell magics would not be able to access or modify global
1192 1237 scope when using the ``@needs_local_scope`` decorator. This was typically
1193 1238 encountered with the ``%%time`` and ``%%timeit`` magics. See :ghissue:`11659`
1194 1239 and :ghpull:`11698`.
1195 1240
1196 1241 .. _whatsnew740:
1197 1242
1198 1243 IPython 7.4.0
1199 1244 =============
1200 1245
1201 1246 Unicode name completions
1202 1247 ------------------------
1203 1248
1204 1249 Previously, we provided completion for a unicode name with its relative symbol.
1205 1250 With this, now IPython provides complete suggestions to unicode name symbols.
1206 1251
1207 1252 As on the PR, if user types ``\LAT<tab>``, IPython provides a list of
1208 1253 possible completions. In this case, it would be something like::
1209 1254
1210 1255 'LATIN CAPITAL LETTER A',
1211 1256 'LATIN CAPITAL LETTER B',
1212 1257 'LATIN CAPITAL LETTER C',
1213 1258 'LATIN CAPITAL LETTER D',
1214 1259 ....
1215 1260
1216 1261 This help to type unicode character that do not have short latex aliases, and
1217 1262 have long unicode names. for example ``Ν°``, ``\GREEK CAPITAL LETTER HETA``.
1218 1263
1219 1264 This feature was contributed by Luciana Marques :ghpull:`11583`.
1220 1265
1221 1266 Make audio normalization optional
1222 1267 ---------------------------------
1223 1268
1224 1269 Added 'normalize' argument to `IPython.display.Audio`. This argument applies
1225 1270 when audio data is given as an array of samples. The default of `normalize=True`
1226 1271 preserves prior behavior of normalizing the audio to the maximum possible range.
1227 1272 Setting to `False` disables normalization.
1228 1273
1229 1274
1230 1275 Miscellaneous
1231 1276 -------------
1232 1277
1233 1278 - Fix improper acceptation of ``return`` outside of functions. :ghpull:`11641`.
1234 1279 - Fixed PyQt 5.11 backwards incompatibility causing sip import failure.
1235 1280 :ghpull:`11613`.
1236 1281 - Fix Bug where ``type?`` would crash IPython. :ghpull:`1608`.
1237 1282 - Allow to apply ``@needs_local_scope`` to cell magics for convenience.
1238 1283 :ghpull:`11542`.
1239 1284
1240 1285 .. _whatsnew730:
1241 1286
1242 1287 IPython 7.3.0
1243 1288 =============
1244 1289
1245 1290 .. _whatsnew720:
1246 1291
1247 1292 IPython 7.3.0 bring several bug fixes and small improvements that you will
1248 1293 described bellow.
1249 1294
1250 1295 The biggest change to this release is the implementation of the ``%conda`` and
1251 1296 ``%pip`` magics, that will attempt to install packages in the **current
1252 1297 environment**. You may still need to restart your interpreter or kernel for the
1253 1298 change to be taken into account, but it should simplify installation of packages
1254 1299 into remote environment. Installing using pip/conda from the command line is
1255 1300 still the prefer method.
1256 1301
1257 1302 The ``%pip`` magic was already present, but was only printing a warning; now it
1258 1303 will actually forward commands to pip.
1259 1304
1260 1305 Misc bug fixes and improvements:
1261 1306
1262 1307 - Compatibility with Python 3.8.
1263 1308 - Do not expand shell variable in execution magics, and added the
1264 1309 ``no_var_expand`` decorator for magic requiring a similar functionality
1265 1310 :ghpull:`11516`
1266 1311 - Add ``%pip`` and ``%conda`` magic :ghpull:`11524`
1267 1312 - Re-initialize posix aliases after a ``%reset`` :ghpull:`11528`
1268 1313 - Allow the IPython command line to run ``*.ipynb`` files :ghpull:`11529`
1269 1314
1270 1315 IPython 7.2.0
1271 1316 =============
1272 1317
1273 1318 IPython 7.2.0 brings minor bugfixes, improvements, and new configuration options:
1274 1319
1275 1320 - Fix a bug preventing PySide2 GUI integration from working :ghpull:`11464`
1276 1321 - Run CI on Mac OS ! :ghpull:`11471`
1277 1322 - Fix IPython "Demo" mode. :ghpull:`11498`
1278 1323 - Fix ``%run`` magic with path in name :ghpull:`11499`
1279 1324 - Fix: add CWD to sys.path *after* stdlib :ghpull:`11502`
1280 1325 - Better rendering of signatures, especially long ones. :ghpull:`11505`
1281 1326 - Re-enable jedi by default if it's installed :ghpull:`11506`
1282 1327 - Add New ``minimal`` exception reporting mode (useful for educational purpose). See :ghpull:`11509`
1283 1328
1284 1329
1285 1330 Added ability to show subclasses when using pinfo and other utilities
1286 1331 ---------------------------------------------------------------------
1287 1332
1288 1333 When using ``?``/``??`` on a class, IPython will now list the first 10 subclasses.
1289 1334
1290 1335 Special Thanks to Chris Mentzel of the Moore Foundation for this feature. Chris
1291 1336 is one of the people who played a critical role in IPython/Jupyter getting
1292 1337 funding.
1293 1338
1294 1339 We are grateful for all the help Chris has given us over the years,
1295 1340 and we're now proud to have code contributed by Chris in IPython.
1296 1341
1297 1342 OSMagics.cd_force_quiet configuration option
1298 1343 --------------------------------------------
1299 1344
1300 1345 You can set this option to force the %cd magic to behave as if ``-q`` was passed:
1301 1346 ::
1302 1347
1303 1348 In [1]: cd /
1304 1349 /
1305 1350
1306 1351 In [2]: %config OSMagics.cd_force_quiet = True
1307 1352
1308 1353 In [3]: cd /tmp
1309 1354
1310 1355 In [4]:
1311 1356
1312 1357 See :ghpull:`11491`
1313 1358
1314 1359 In vi editing mode, whether the prompt includes the current vi mode can now be configured
1315 1360 -----------------------------------------------------------------------------------------
1316 1361
1317 1362 Set the ``TerminalInteractiveShell.prompt_includes_vi_mode`` to a boolean value
1318 1363 (default: True) to control this feature. See :ghpull:`11492`
1319 1364
1320 1365 .. _whatsnew710:
1321 1366
1322 1367 IPython 7.1.0
1323 1368 =============
1324 1369
1325 1370 IPython 7.1.0 is the first minor release after 7.0.0 and mostly brings fixes to
1326 1371 new features, internal refactoring, and fixes for regressions that happened during the 6.x->7.x
1327 1372 transition. It also brings **Compatibility with Python 3.7.1**, as we're
1328 1373 unwillingly relying on a bug in CPython.
1329 1374
1330 1375 New Core Dev:
1331 1376
1332 1377 - We welcome Jonathan Slenders to the commiters. Jonathan has done a fantastic
1333 1378 work on prompt_toolkit, and we'd like to recognise his impact by giving him
1334 1379 commit rights. :ghissue:`11397`
1335 1380
1336 1381 Notable Changes
1337 1382
1338 1383 - Major update of "latex to unicode" tab completion map (see below)
1339 1384
1340 1385 Notable New Features:
1341 1386
1342 1387 - Restore functionality and documentation of the **sphinx directive**, which
1343 1388 is now stricter (fail on error by daefault), has new configuration options,
1344 1389 has a brand new documentation page :ref:`ipython_directive` (which needs
1345 1390 some cleanup). It is also now *tested* so we hope to have less regressions.
1346 1391 :ghpull:`11402`
1347 1392
1348 1393 - ``IPython.display.Video`` now supports ``width`` and ``height`` arguments,
1349 1394 allowing a custom width and height to be set instead of using the video's
1350 1395 width and height. :ghpull:`11353`
1351 1396
1352 1397 - Warn when using ``HTML('<iframe>')`` instead of ``IFrame`` :ghpull:`11350`
1353 1398
1354 1399 - Allow Dynamic switching of editing mode between vi/emacs and show
1355 1400 normal/input mode in prompt when using vi. :ghpull:`11390`. Use ``%config
1356 1401 TerminalInteractiveShell.editing_mode = 'vi'`` or ``%config
1357 1402 TerminalInteractiveShell.editing_mode = 'emacs'`` to dynamically switch
1358 1403 between modes.
1359 1404
1360 1405
1361 1406 Notable Fixes:
1362 1407
1363 1408 - Fix entering of **multi-line blocks in terminal** IPython, and various
1364 1409 crashes in the new input transformation machinery :ghpull:`11354`,
1365 1410 :ghpull:`11356`, :ghpull:`11358`. These also fix a **Compatibility bug
1366 1411 with Python 3.7.1**.
1367 1412
1368 1413 - Fix moving through generator stack in ipdb :ghpull:`11266`
1369 1414
1370 1415 - %Magic command arguments now support quoting. :ghpull:`11330`
1371 1416
1372 1417 - Re-add ``rprint`` and ``rprinte`` aliases. :ghpull:`11331`
1373 1418
1374 1419 - Remove implicit dependency on ``ipython_genutils`` :ghpull:`11317`
1375 1420
1376 1421 - Make ``nonlocal`` raise ``SyntaxError`` instead of silently failing in async
1377 1422 mode. :ghpull:`11382`
1378 1423
1379 1424 - Fix mishandling of magics and ``= !`` assignment just after a dedent in
1380 1425 nested code blocks :ghpull:`11418`
1381 1426
1382 1427 - Fix instructions for custom shortcuts :ghpull:`11426`
1383 1428
1384 1429
1385 1430 Notable Internals improvements:
1386 1431
1387 1432 - Use of ``os.scandir`` (Python 3 only) to speed up some file system operations.
1388 1433 :ghpull:`11365`
1389 1434
1390 1435 - use ``perf_counter`` instead of ``clock`` for more precise
1391 1436 timing results with ``%time`` :ghpull:`11376`
1392 1437
1393 1438 Many thanks to all the contributors and in particular to ``bartskowron`` and
1394 1439 ``tonyfast`` who handled some pretty complicated bugs in the input machinery. We
1395 1440 had a number of first time contributors and maybe hacktoberfest participants that
1396 1441 made significant contributions and helped us free some time to focus on more
1397 1442 complicated bugs.
1398 1443
1399 1444 You
1400 1445 can see all the closed issues and Merged PR, new features and fixes `here
1401 1446 <https://github.com/ipython/ipython/issues?utf8=%E2%9C%93&q=+is%3Aclosed+milestone%3A7.1+>`_.
1402 1447
1403 1448 Unicode Completion update
1404 1449 -------------------------
1405 1450
1406 1451 In IPython 7.1 the Unicode completion map has been updated and synchronized with
1407 1452 the Julia language.
1408 1453
1409 1454 Added and removed character characters:
1410 1455
1411 1456 ``\jmath`` (``Θ·``), ``\\underleftrightarrow`` (U+034D, combining) have been
1412 1457 added, while ``\\textasciicaron`` have been removed
1413 1458
1414 1459 Some sequences have seen their prefix removed:
1415 1460
1416 1461 - 6 characters ``\text...<tab>`` should now be inputed with ``\...<tab>`` directly,
1417 1462 - 45 characters ``\Elz...<tab>`` should now be inputed with ``\...<tab>`` directly,
1418 1463 - 65 characters ``\B...<tab>`` should now be inputed with ``\...<tab>`` directly,
1419 1464 - 450 characters ``\m...<tab>`` should now be inputed with ``\...<tab>`` directly,
1420 1465
1421 1466 Some sequences have seen their prefix shortened:
1422 1467
1423 1468 - 5 characters ``\mitBbb...<tab>`` should now be inputed with ``\bbi...<tab>`` directly,
1424 1469 - 52 characters ``\mit...<tab>`` should now be inputed with ``\i...<tab>`` directly,
1425 1470 - 216 characters ``\mbfit...<tab>`` should now be inputed with ``\bi...<tab>`` directly,
1426 1471 - 222 characters ``\mbf...<tab>`` should now be inputed with ``\b...<tab>`` directly,
1427 1472
1428 1473 A couple of characters had their sequence simplified:
1429 1474
1430 1475 - ``Γ°``, type ``\dh<tab>``, instead of ``\eth<tab>``
1431 1476 - ``Δ§``, type ``\hbar<tab>``, instead of ``\Elzxh<tab>``
1432 1477 - ``ΙΈ``, type ``\ltphi<tab>``, instead of ``\textphi<tab>``
1433 1478 - ``Ο΄``, type ``\varTheta<tab>``, instead of ``\textTheta<tab>``
1434 1479 - ``ℇ``, type ``\eulermascheroni<tab>``, instead of ``\Eulerconst<tab>``
1435 1480 - ``β„Ž``, type ``\planck<tab>``, instead of ``\Planckconst<tab>``
1436 1481
1437 1482 - U+0336 (COMBINING LONG STROKE OVERLAY), type ``\strike<tab>``, instead of ``\Elzbar<tab>``.
1438 1483
1439 1484 A couple of sequences have been updated:
1440 1485
1441 1486 - ``\varepsilon`` now gives ``Ι›`` (GREEK SMALL LETTER EPSILON) instead of ``Ξ΅`` (GREEK LUNATE EPSILON SYMBOL),
1442 1487 - ``\underbar`` now gives U+0331 (COMBINING MACRON BELOW) instead of U+0332 (COMBINING LOW LINE).
1443 1488
1444 1489
1445 1490 .. _whatsnew700:
1446 1491
1447 1492 IPython 7.0.0
1448 1493 =============
1449 1494
1450 1495 Released Thursday September 27th, 2018
1451 1496
1452 1497 IPython 7 includes major feature improvements.
1453 1498 This is also the second major version of IPython to support only
1454 1499 Python 3 – starting at Python 3.4. Python 2 is still community-supported
1455 1500 on the bugfix only 5.x branch, but we remind you that Python 2 "end of life"
1456 1501 is on Jan 1st 2020.
1457 1502
1458 1503 We were able to backport bug fixes to the 5.x branch thanks to our backport bot which
1459 1504 backported more than `70 Pull-Requests
1460 1505 <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>`_
1461 1506
1462 1507 The IPython 6.x branch will likely not see any further release unless critical
1463 1508 bugs are found.
1464 1509
1465 1510 Make sure you have pip > 9.0 before upgrading. You should be able to update by running:
1466 1511
1467 1512 .. code::
1468 1513
1469 1514 pip install ipython --upgrade
1470 1515
1471 1516 .. only:: ipydev
1472 1517
1473 1518 If you are trying to install or update an ``alpha``, ``beta``, or ``rc``
1474 1519 version, use pip ``--pre`` flag.
1475 1520
1476 1521 .. code::
1477 1522
1478 1523 pip install ipython --upgrade --pre
1479 1524
1480 1525
1481 1526 Or, if you have conda installed:
1482 1527
1483 1528 .. code::
1484 1529
1485 1530 conda install ipython
1486 1531
1487 1532
1488 1533
1489 1534 Prompt Toolkit 2.0
1490 1535 ------------------
1491 1536
1492 1537 IPython 7.0+ now uses ``prompt_toolkit 2.0``. If you still need to use an earlier
1493 1538 ``prompt_toolkit`` version, you may need to pin IPython to ``<7.0``.
1494 1539
1495 1540 Autowait: Asynchronous REPL
1496 1541 ---------------------------
1497 1542
1498 1543 Staring with IPython 7.0 on Python 3.6+, IPython can automatically ``await``
1499 1544 top level code. You should not need to access an event loop or runner
1500 1545 yourself. To learn more, read the :ref:`autoawait` section of our docs, see
1501 1546 :ghpull:`11265`, or try the following code::
1502 1547
1503 1548 Python 3.6.0
1504 1549 Type 'copyright', 'credits' or 'license' for more information
1505 1550 IPython 7.0.0 -- An enhanced Interactive Python. Type '?' for help.
1506 1551
1507 1552 In [1]: import aiohttp
1508 1553 ...: result = aiohttp.get('https://api.github.com')
1509 1554
1510 1555 In [2]: response = await result
1511 1556 <pause for a few 100s ms>
1512 1557
1513 1558 In [3]: await response.json()
1514 1559 Out[3]:
1515 1560 {'authorizations_url': 'https://api.github.com/authorizations',
1516 1561 'code_search_url': 'https://api.github.com/search/code?q={query}{&page,per_page,sort,order}',
1517 1562 ...
1518 1563 }
1519 1564
1520 1565 .. note::
1521 1566
1522 1567 Async integration is experimental code, behavior may change or be removed
1523 1568 between Python and IPython versions without warnings.
1524 1569
1525 1570 Integration is by default with `asyncio`, but other libraries can be configured --
1526 1571 like ``curio`` or ``trio`` -- to improve concurrency in the REPL::
1527 1572
1528 1573 In [1]: %autoawait trio
1529 1574
1530 1575 In [2]: import trio
1531 1576
1532 1577 In [3]: async def child(i):
1533 1578 ...: print(" child %s goes to sleep"%i)
1534 1579 ...: await trio.sleep(2)
1535 1580 ...: print(" child %s wakes up"%i)
1536 1581
1537 1582 In [4]: print('parent start')
1538 1583 ...: async with trio.open_nursery() as n:
1539 1584 ...: for i in range(3):
1540 1585 ...: n.spawn(child, i)
1541 1586 ...: print('parent end')
1542 1587 parent start
1543 1588 child 2 goes to sleep
1544 1589 child 0 goes to sleep
1545 1590 child 1 goes to sleep
1546 1591 <about 2 seconds pause>
1547 1592 child 2 wakes up
1548 1593 child 1 wakes up
1549 1594 child 0 wakes up
1550 1595 parent end
1551 1596
1552 1597 See :ref:`autoawait` for more information.
1553 1598
1554 1599
1555 1600 Asynchronous code in a Notebook interface or any other frontend using the
1556 1601 Jupyter Protocol will require further updates to the IPykernel package.
1557 1602
1558 1603 Non-Asynchronous code
1559 1604 ~~~~~~~~~~~~~~~~~~~~~
1560 1605
1561 1606 As the internal API of IPython is now asynchronous, IPython needs to run under
1562 1607 an event loop. In order to allow many workflows, (like using the :magic:`%run`
1563 1608 magic, or copy-pasting code that explicitly starts/stop event loop), when
1564 1609 top-level code is detected as not being asynchronous, IPython code is advanced
1565 1610 via a pseudo-synchronous runner, and may not advance pending tasks.
1566 1611
1567 1612 Change to Nested Embed
1568 1613 ~~~~~~~~~~~~~~~~~~~~~~
1569 1614
1570 1615 The introduction of the ability to run async code had some effect on the
1571 1616 ``IPython.embed()`` API. By default, embed will not allow you to run asynchronous
1572 1617 code unless an event loop is specified.
1573 1618
1574 1619 Effects on Magics
1575 1620 ~~~~~~~~~~~~~~~~~
1576 1621
1577 1622 Some magics will not work with async until they're updated.
1578 1623 Contributions welcome.
1579 1624
1580 1625 Expected Future changes
1581 1626 ~~~~~~~~~~~~~~~~~~~~~~~
1582 1627
1583 1628 We expect more internal but public IPython functions to become ``async``, and
1584 1629 will likely end up having a persistent event loop while IPython is running.
1585 1630
1586 1631 Thanks
1587 1632 ~~~~~~
1588 1633
1589 1634 This release took more than a year in the making.
1590 1635 The code was rebased a number of
1591 1636 times; leading to commit authorship that may have been lost in the final
1592 1637 Pull-Request. Huge thanks to many people for contribution, discussion, code,
1593 1638 documentation, use-cases: dalejung, danielballan, ellisonbg, fperez, gnestor,
1594 1639 minrk, njsmith, pganssle, tacaswell, takluyver , vidartf ... And many others.
1595 1640
1596 1641
1597 1642 Autoreload Improvement
1598 1643 ----------------------
1599 1644
1600 1645 The magic :magic:`%autoreload 2 <autoreload>` now captures new methods added to
1601 1646 classes. Earlier, only methods existing as of the initial import were being
1602 1647 tracked and updated.
1603 1648
1604 1649 This new feature helps dual environment development - Jupyter+IDE - where the
1605 1650 code gradually moves from notebook cells to package files as it gets
1606 1651 structured.
1607 1652
1608 1653 **Example**: An instance of the class ``MyClass`` will be able to access the
1609 1654 method ``cube()`` after it is uncommented and the file ``file1.py`` is saved on
1610 1655 disk.
1611 1656
1612 1657
1613 1658 .. code::
1614 1659
1615 1660 # notebook
1616 1661
1617 1662 from mymodule import MyClass
1618 1663 first = MyClass(5)
1619 1664
1620 1665 .. code::
1621 1666
1622 1667 # mymodule/file1.py
1623 1668
1624 1669 class MyClass:
1625 1670
1626 1671 def __init__(self, a=10):
1627 1672 self.a = a
1628 1673
1629 1674 def square(self):
1630 1675 print('compute square')
1631 1676 return self.a*self.a
1632 1677
1633 1678 # def cube(self):
1634 1679 # print('compute cube')
1635 1680 # return self.a*self.a*self.a
1636 1681
1637 1682
1638 1683
1639 1684
1640 1685 Misc
1641 1686 ----
1642 1687
1643 1688 The autoindent feature that was deprecated in 5.x was re-enabled and
1644 1689 un-deprecated in :ghpull:`11257`
1645 1690
1646 1691 Make :magic:`%run -n -i ... <run>` work correctly. Earlier, if :magic:`%run` was
1647 1692 passed both arguments, ``-n`` would be silently ignored. See :ghpull:`10308`
1648 1693
1649 1694
1650 1695 The :cellmagic:`%%script` (as well as :cellmagic:`%%bash`,
1651 1696 :cellmagic:`%%ruby`... ) cell magics now raise by default if the return code of
1652 1697 the given code is non-zero (thus halting execution of further cells in a
1653 1698 notebook). The behavior can be disable by passing the ``--no-raise-error`` flag.
1654 1699
1655 1700
1656 1701 Deprecations
1657 1702 ------------
1658 1703
1659 1704 A couple of unused functions and methods have been deprecated and will be removed
1660 1705 in future versions:
1661 1706
1662 1707 - ``IPython.utils.io.raw_print_err``
1663 1708 - ``IPython.utils.io.raw_print``
1664 1709
1665 1710
1666 1711 Backwards incompatible changes
1667 1712 ------------------------------
1668 1713
1669 1714 * The API for transforming input before it is parsed as Python code has been
1670 1715 completely redesigned: any custom input transformations will need to be
1671 1716 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