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