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