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