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