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