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