##// END OF EJS Templates
updates to whatsnew in 7.6
Matthias Bussonnier -
Show More
@@ -1,547 +1,552 b''
1 ============
1 ============
2 7.x Series
2 7.x Series
3 ============
3 ============
4
4
5 .. _whatsnew760:
5 .. _whatsnew760:
6
6
7 IPython 7.6.0
7 IPython 7.6.0
8 =============
8 =============
9
9
10 IPython 7.6.0 contains a couple of bug fixes and number of small features
10 IPython 7.6.0 contains a couple of bug fixes and number of small features
11 additions as well as some compatibility with the current development version of
11 additions as well as some compatibility with the current development version of
12 Python 3.8.
12 Python 3.8.
13
13
14 - Add a ``-l`` option to :magic:`psearch` to list the available search
14 - Add a ``-l`` option to :magic:`psearch` to list the available search
15 types. :ghpull:`11672`
15 types. :ghpull:`11672`
16 - Support ``PathLike`` for ``DisplayObject`` and ``Image``. :ghpull:`11764`
16 - Support ``PathLike`` for ``DisplayObject`` and ``Image``. :ghpull:`11764`
17 - Configurability of timeout in the test suite for slow platforms.
17 - Configurability of timeout in the test suite for slow platforms.
18 :ghpull:`11756`
18 :ghpull:`11756`
19 - Accept any casing for matplotlib backend. :ghpull:`121748`
19 - Accept any casing for matplotlib backend. :ghpull:`121748`
20 - Properly skip test that requires numpy to be installed :ghpull:`11723`
20 - Properly skip test that requires numpy to be installed :ghpull:`11723`
21 - More support for Python 3.8 and positional only arguments (pep570)
21 - More support for Python 3.8 and positional only arguments (pep570)
22 :ghpull:`11720`
22 :ghpull:`11720`
23 - Unicode names for the completion are loaded lazily on first use which
23 - Unicode names for the completion are loaded lazily on first use which
24 should decrease startup time. :ghpull:`11693`
24 should decrease startup time. :ghpull:`11693`
25 - Autoreload now fix the types of reloaded objects; this for example allow
25 - Autoreload now update the types of reloaded objects; this for example allow
26 pickling of reloaded objects. :ghpull:`11644`
26 pickling of reloaded objects. :ghpull:`11644`
27 - Fix a big where ``%%time`` magic would suppress cell output. :ghpull:`11716`
27
28
28
29
29 Prepare migration to pytest (instead of nose) for testing
30 Prepare migration to pytest (instead of nose) for testing
30 ---------------------------------------------------------
31 ---------------------------------------------------------
31
32
32 Most of the work between 7.5 and 7.6 was to prepare the migration from our
33 Most of the work between 7.5 and 7.6 was to prepare the migration from our
33 testing framework to pytest. Most of the test suite should now work by simply
34 testing framework to pytest. Most of the test suite should now work by simply
34 issuing ``pytest`` from the root of the repository.
35 issuing ``pytest`` from the root of the repository.
35
36
36 The migration to pytest is just at its beginning. Many of our test still rely
37 The migration to pytest is just at its beginning. Many of our test still rely
37 on IPython-specific plugins for nose using pytest (doctest using IPython syntax
38 on IPython-specific plugins for nose using pytest (doctest using IPython syntax
38 is one example of this where test appear as "passing", while no code has been
39 is one example of this where test appear as "passing", while no code has been
39 ran). Many test also need to be updated like ``yield-test`` to be properly
40 ran). Many test also need to be updated like ``yield-test`` to be properly
40 parametrized tests.
41 parametrized tests.
41
42
42 Migration to pytest allowed me to discover a number of issues in our test
43 Migration to pytest allowed me to discover a number of issues in our test
43 suite; which was hiding a number of subtle issues – or not actually running
44 suite; which was hiding a number of subtle issues – or not actually running
44 some of the tests in our test suite – I have thus corrected many of those; like
45 some of the tests in our test suite – I have thus corrected many of those; like
45 improperly closed resources; or used of deprecated features. I also made use of
46 improperly closed resources; or used of deprecated features. I also made use of
46 the ``pytest --durations=...`` to find some of our slowest test and speed them
47 the ``pytest --durations=...`` to find some of our slowest test and speed them
47 up (our test suite can now be up to 10% faster). Pytest as also a variety of
48 up (our test suite can now be up to 10% faster). Pytest as also a variety of
48 plugins and flags which will make the code quality of IPython and the testing
49 plugins and flags which will make the code quality of IPython and the testing
49 experience better.
50 experience better.
50
51
51 Misc
52 Misc
52 ----
53 ----
53
54
55 We skipped the release of 7.6 at the end of May, but will attempt to get back
56 on schedule. We are starting to think about making introducing backward
57 incompatible change and start the 8.0 series.
58
54 Special Thanks to Gabriel (@gpotter2 on GitHub), who among other took care many
59 Special Thanks to Gabriel (@gpotter2 on GitHub), who among other took care many
55 of the remaining task for 7.4 and 7.5, like updating the website.
60 of the remaining task for 7.4 and 7.5, like updating the website.
56
61
57 .. _whatsnew750:
62 .. _whatsnew750:
58
63
59 IPython 7.5.0
64 IPython 7.5.0
60 =============
65 =============
61
66
62 IPython 7.5.0 consist mostly of bug-fixes, and documentation updates, with one
67 IPython 7.5.0 consist mostly of bug-fixes, and documentation updates, with one
63 minor new feature. The `Audio` display element can now be assigned an element
68 minor new feature. The `Audio` display element can now be assigned an element
64 id when displayed in browser. See :ghpull:`11670`
69 id when displayed in browser. See :ghpull:`11670`
65
70
66 The major outstanding bug fix correct a change of behavior that was introduce
71 The major outstanding bug fix correct a change of behavior that was introduce
67 in 7.4.0 where some cell magics would not be able to access or modify global
72 in 7.4.0 where some cell magics would not be able to access or modify global
68 scope when using the ``@needs_local_scope`` decorator. This was typically
73 scope when using the ``@needs_local_scope`` decorator. This was typically
69 encountered with the ``%%time`` and ``%%timeit`` magics. See :ghissue:`11659`
74 encountered with the ``%%time`` and ``%%timeit`` magics. See :ghissue:`11659`
70 and :ghpull:`11698`.
75 and :ghpull:`11698`.
71
76
72 .. _whatsnew740:
77 .. _whatsnew740:
73
78
74 IPython 7.4.0
79 IPython 7.4.0
75 =============
80 =============
76
81
77 Unicode name completions
82 Unicode name completions
78 ------------------------
83 ------------------------
79
84
80 Previously, we provided completion for a unicode name with its relative symbol.
85 Previously, we provided completion for a unicode name with its relative symbol.
81 With this, now IPython provides complete suggestions to unicode name symbols.
86 With this, now IPython provides complete suggestions to unicode name symbols.
82
87
83 As on the PR, if user types ``\LAT<tab>``, IPython provides a list of
88 As on the PR, if user types ``\LAT<tab>``, IPython provides a list of
84 possible completions. In this case, it would be something like::
89 possible completions. In this case, it would be something like::
85
90
86 'LATIN CAPITAL LETTER A',
91 'LATIN CAPITAL LETTER A',
87 'LATIN CAPITAL LETTER B',
92 'LATIN CAPITAL LETTER B',
88 'LATIN CAPITAL LETTER C',
93 'LATIN CAPITAL LETTER C',
89 'LATIN CAPITAL LETTER D',
94 'LATIN CAPITAL LETTER D',
90 ....
95 ....
91
96
92 This help to type unicode character that do not have short latex aliases, and
97 This help to type unicode character that do not have short latex aliases, and
93 have long unicode names. for example ``Ν°``, ``\GREEK CAPITAL LETTER HETA``.
98 have long unicode names. for example ``Ν°``, ``\GREEK CAPITAL LETTER HETA``.
94
99
95 This feature was contributed by Luciana Marques :ghpull:`11583`.
100 This feature was contributed by Luciana Marques :ghpull:`11583`.
96
101
97 Make audio normalization optional
102 Make audio normalization optional
98 ---------------------------------
103 ---------------------------------
99
104
100 Added 'normalize' argument to `IPython.display.Audio`. This argument applies
105 Added 'normalize' argument to `IPython.display.Audio`. This argument applies
101 when audio data is given as an array of samples. The default of `normalize=True`
106 when audio data is given as an array of samples. The default of `normalize=True`
102 preserves prior behavior of normalizing the audio to the maximum possible range.
107 preserves prior behavior of normalizing the audio to the maximum possible range.
103 Setting to `False` disables normalization.
108 Setting to `False` disables normalization.
104
109
105
110
106 Miscelanious
111 Miscelanious
107 ------------
112 ------------
108
113
109 - Fix improper acceptation of ``return`` outside of functions. :ghpull:`11641`.
114 - Fix improper acceptation of ``return`` outside of functions. :ghpull:`11641`.
110 - Fixed PyQt 5.11 backwards incompatibility causing sip import failure.
115 - Fixed PyQt 5.11 backwards incompatibility causing sip import failure.
111 :ghpull:`11613`.
116 :ghpull:`11613`.
112 - Fix Bug where ``type?`` would crash IPython. :ghpull:`1608`.
117 - Fix Bug where ``type?`` would crash IPython. :ghpull:`1608`.
113 - Allow to apply ``@needs_local_scope`` to cell magics for convenience.
118 - Allow to apply ``@needs_local_scope`` to cell magics for convenience.
114 :ghpull:`11542`.
119 :ghpull:`11542`.
115
120
116 .. _whatsnew730:
121 .. _whatsnew730:
117
122
118 IPython 7.3.0
123 IPython 7.3.0
119 =============
124 =============
120
125
121 .. _whatsnew720:
126 .. _whatsnew720:
122
127
123 IPython 7.3.0 bring several bug fixes and small improvements that you will
128 IPython 7.3.0 bring several bug fixes and small improvements that you will
124 described bellow.
129 described bellow.
125
130
126 The biggest change to this release is the implementation of the ``%conda`` and
131 The biggest change to this release is the implementation of the ``%conda`` and
127 ``%pip`` magics, that will attempt to install packages in the **current
132 ``%pip`` magics, that will attempt to install packages in the **current
128 environment**. You may still need to restart your interpreter or kernel for the
133 environment**. You may still need to restart your interpreter or kernel for the
129 change to be taken into account, but it should simplify installation of packages
134 change to be taken into account, but it should simplify installation of packages
130 into remote environment. Installing using pip/conda from the command line is
135 into remote environment. Installing using pip/conda from the command line is
131 still the prefer method.
136 still the prefer method.
132
137
133 The ``%pip`` magic was already present, but was only printing a warning; now it
138 The ``%pip`` magic was already present, but was only printing a warning; now it
134 will actually forward commands to pip.
139 will actually forward commands to pip.
135
140
136 Misc bug fixes and improvements:
141 Misc bug fixes and improvements:
137
142
138 - Compatibility with Python 3.8.
143 - Compatibility with Python 3.8.
139 - Do not expand shell variable in execution magics, and added the
144 - Do not expand shell variable in execution magics, and added the
140 ``no_var_expand`` decorator for magic requiring a similar functionality
145 ``no_var_expand`` decorator for magic requiring a similar functionality
141 :ghpull:`11516`
146 :ghpull:`11516`
142 - Add ``%pip`` and ``%conda`` magic :ghpull:`11524`
147 - Add ``%pip`` and ``%conda`` magic :ghpull:`11524`
143 - Re-initialize posix aliases after a ``%reset`` :ghpull:`11528`
148 - Re-initialize posix aliases after a ``%reset`` :ghpull:`11528`
144 - Allow the IPython command line to run ``*.ipynb`` files :ghpull:`11529`
149 - Allow the IPython command line to run ``*.ipynb`` files :ghpull:`11529`
145
150
146 IPython 7.2.0
151 IPython 7.2.0
147 =============
152 =============
148
153
149 IPython 7.2.0 brings minor bugfixes, improvements, and new configuration options:
154 IPython 7.2.0 brings minor bugfixes, improvements, and new configuration options:
150
155
151 - Fix a bug preventing PySide2 GUI integration from working :ghpull:`11464`
156 - Fix a bug preventing PySide2 GUI integration from working :ghpull:`11464`
152 - Run CI on Mac OS ! :ghpull:`11471`
157 - Run CI on Mac OS ! :ghpull:`11471`
153 - Fix IPython "Demo" mode. :ghpull:`11498`
158 - Fix IPython "Demo" mode. :ghpull:`11498`
154 - Fix ``%run`` magic with path in name :ghpull:`11499`
159 - Fix ``%run`` magic with path in name :ghpull:`11499`
155 - Fix: add CWD to sys.path *after* stdlib :ghpull:`11502`
160 - Fix: add CWD to sys.path *after* stdlib :ghpull:`11502`
156 - Better rendering of signatures, especially long ones. :ghpull:`11505`
161 - Better rendering of signatures, especially long ones. :ghpull:`11505`
157 - Re-enable jedi by default if it's installed :ghpull:`11506`
162 - Re-enable jedi by default if it's installed :ghpull:`11506`
158 - Add New ``minimal`` exception reporting mode (useful for educational purpose). See :ghpull:`11509`
163 - Add New ``minimal`` exception reporting mode (useful for educational purpose). See :ghpull:`11509`
159
164
160
165
161 Added ability to show subclasses when using pinfo and other utilities
166 Added ability to show subclasses when using pinfo and other utilities
162 ---------------------------------------------------------------------
167 ---------------------------------------------------------------------
163
168
164 When using ``?``/``??`` on a class, IPython will now list the first 10 subclasses.
169 When using ``?``/``??`` on a class, IPython will now list the first 10 subclasses.
165
170
166 Special Thanks to Chris Mentzel of the Moore Foundation for this feature. Chris
171 Special Thanks to Chris Mentzel of the Moore Foundation for this feature. Chris
167 is one of the people who played a critical role in IPython/Jupyter getting
172 is one of the people who played a critical role in IPython/Jupyter getting
168 funding.
173 funding.
169
174
170 We are grateful for all the help Chris has given us over the years,
175 We are grateful for all the help Chris has given us over the years,
171 and we're now proud to have code contributed by Chris in IPython.
176 and we're now proud to have code contributed by Chris in IPython.
172
177
173 OSMagics.cd_force_quiet configuration option
178 OSMagics.cd_force_quiet configuration option
174 --------------------------------------------
179 --------------------------------------------
175
180
176 You can set this option to force the %cd magic to behave as if ``-q`` was passed:
181 You can set this option to force the %cd magic to behave as if ``-q`` was passed:
177 ::
182 ::
178
183
179 In [1]: cd /
184 In [1]: cd /
180 /
185 /
181
186
182 In [2]: %config OSMagics.cd_force_quiet = True
187 In [2]: %config OSMagics.cd_force_quiet = True
183
188
184 In [3]: cd /tmp
189 In [3]: cd /tmp
185
190
186 In [4]:
191 In [4]:
187
192
188 See :ghpull:`11491`
193 See :ghpull:`11491`
189
194
190 In vi editing mode, whether the prompt includes the current vi mode can now be configured
195 In vi editing mode, whether the prompt includes the current vi mode can now be configured
191 -----------------------------------------------------------------------------------------
196 -----------------------------------------------------------------------------------------
192
197
193 Set the ``TerminalInteractiveShell.prompt_includes_vi_mode`` to a boolean value
198 Set the ``TerminalInteractiveShell.prompt_includes_vi_mode`` to a boolean value
194 (default: True) to control this feature. See :ghpull:`11492`
199 (default: True) to control this feature. See :ghpull:`11492`
195
200
196 .. _whatsnew710:
201 .. _whatsnew710:
197
202
198 IPython 7.1.0
203 IPython 7.1.0
199 =============
204 =============
200
205
201 IPython 7.1.0 is the first minor release after 7.0.0 and mostly brings fixes to
206 IPython 7.1.0 is the first minor release after 7.0.0 and mostly brings fixes to
202 new features, internal refactoring, and fixes for regressions that happened during the 6.x->7.x
207 new features, internal refactoring, and fixes for regressions that happened during the 6.x->7.x
203 transition. It also brings **Compatibility with Python 3.7.1**, as we're
208 transition. It also brings **Compatibility with Python 3.7.1**, as we're
204 unwillingly relying on a bug in CPython.
209 unwillingly relying on a bug in CPython.
205
210
206 New Core Dev:
211 New Core Dev:
207
212
208 - We welcome Jonathan Slenders to the commiters. Jonathan has done a fantastic
213 - We welcome Jonathan Slenders to the commiters. Jonathan has done a fantastic
209 work on prompt_toolkit, and we'd like to recognise his impact by giving him
214 work on prompt_toolkit, and we'd like to recognise his impact by giving him
210 commit rights. :ghissue:`11397`
215 commit rights. :ghissue:`11397`
211
216
212 Notable Changes
217 Notable Changes
213
218
214 - Major update of "latex to unicode" tab completion map (see below)
219 - Major update of "latex to unicode" tab completion map (see below)
215
220
216 Notable New Features:
221 Notable New Features:
217
222
218 - Restore functionality and documentation of the **sphinx directive**, which
223 - Restore functionality and documentation of the **sphinx directive**, which
219 is now stricter (fail on error by daefault), has new configuration options,
224 is now stricter (fail on error by daefault), has new configuration options,
220 has a brand new documentation page :ref:`ipython_directive` (which needs
225 has a brand new documentation page :ref:`ipython_directive` (which needs
221 some cleanup). It is also now *tested* so we hope to have less regressions.
226 some cleanup). It is also now *tested* so we hope to have less regressions.
222 :ghpull:`11402`
227 :ghpull:`11402`
223
228
224 - ``IPython.display.Video`` now supports ``width`` and ``height`` arguments,
229 - ``IPython.display.Video`` now supports ``width`` and ``height`` arguments,
225 allowing a custom width and height to be set instead of using the video's
230 allowing a custom width and height to be set instead of using the video's
226 width and height. :ghpull:`11353`
231 width and height. :ghpull:`11353`
227
232
228 - Warn when using ``HTML('<iframe>')`` instead of ``IFrame`` :ghpull:`11350`
233 - Warn when using ``HTML('<iframe>')`` instead of ``IFrame`` :ghpull:`11350`
229
234
230 - Allow Dynamic switching of editing mode between vi/emacs and show
235 - Allow Dynamic switching of editing mode between vi/emacs and show
231 normal/input mode in prompt when using vi. :ghpull:`11390`. Use ``%config
236 normal/input mode in prompt when using vi. :ghpull:`11390`. Use ``%config
232 TerminalInteractiveShell.editing_mode = 'vi'`` or ``%config
237 TerminalInteractiveShell.editing_mode = 'vi'`` or ``%config
233 TerminalInteractiveShell.editing_mode = 'emacs'`` to dynamically switch
238 TerminalInteractiveShell.editing_mode = 'emacs'`` to dynamically switch
234 between modes.
239 between modes.
235
240
236
241
237 Notable Fixes:
242 Notable Fixes:
238
243
239 - Fix entering of **multi-line blocks in terminal** IPython, and various
244 - Fix entering of **multi-line blocks in terminal** IPython, and various
240 crashes in the new input transformation machinery :ghpull:`11354`,
245 crashes in the new input transformation machinery :ghpull:`11354`,
241 :ghpull:`11356`, :ghpull:`11358`. These also fix a **Compatibility bug
246 :ghpull:`11356`, :ghpull:`11358`. These also fix a **Compatibility bug
242 with Python 3.7.1**.
247 with Python 3.7.1**.
243
248
244 - Fix moving through generator stack in ipdb :ghpull:`11266`
249 - Fix moving through generator stack in ipdb :ghpull:`11266`
245
250
246 - %Magic command arguments now support quoting. :ghpull:`11330`
251 - %Magic command arguments now support quoting. :ghpull:`11330`
247
252
248 - Re-add ``rprint`` and ``rprinte`` aliases. :ghpull:`11331`
253 - Re-add ``rprint`` and ``rprinte`` aliases. :ghpull:`11331`
249
254
250 - Remove implicit dependency on ``ipython_genutils`` :ghpull:`11317`
255 - Remove implicit dependency on ``ipython_genutils`` :ghpull:`11317`
251
256
252 - Make ``nonlocal`` raise ``SyntaxError`` instead of silently failing in async
257 - Make ``nonlocal`` raise ``SyntaxError`` instead of silently failing in async
253 mode. :ghpull:`11382`
258 mode. :ghpull:`11382`
254
259
255 - Fix mishandling of magics and ``= !`` assignment just after a dedent in
260 - Fix mishandling of magics and ``= !`` assignment just after a dedent in
256 nested code blocks :ghpull:`11418`
261 nested code blocks :ghpull:`11418`
257
262
258 - Fix instructions for custom shortcuts :ghpull:`11426`
263 - Fix instructions for custom shortcuts :ghpull:`11426`
259
264
260
265
261 Notable Internals improvements:
266 Notable Internals improvements:
262
267
263 - Use of ``os.scandir`` (Python 3 only) to speed up some file system operations.
268 - Use of ``os.scandir`` (Python 3 only) to speed up some file system operations.
264 :ghpull:`11365`
269 :ghpull:`11365`
265
270
266 - use ``perf_counter`` instead of ``clock`` for more precise
271 - use ``perf_counter`` instead of ``clock`` for more precise
267 timing results with ``%time`` :ghpull:`11376`
272 timing results with ``%time`` :ghpull:`11376`
268
273
269 Many thanks to all the contributors and in particular to ``bartskowron`` and
274 Many thanks to all the contributors and in particular to ``bartskowron`` and
270 ``tonyfast`` who handled some pretty complicated bugs in the input machinery. We
275 ``tonyfast`` who handled some pretty complicated bugs in the input machinery. We
271 had a number of first time contributors and maybe hacktoberfest participants that
276 had a number of first time contributors and maybe hacktoberfest participants that
272 made significant contributions and helped us free some time to focus on more
277 made significant contributions and helped us free some time to focus on more
273 complicated bugs.
278 complicated bugs.
274
279
275 You
280 You
276 can see all the closed issues and Merged PR, new features and fixes `here
281 can see all the closed issues and Merged PR, new features and fixes `here
277 <https://github.com/ipython/ipython/issues?utf8=%E2%9C%93&q=+is%3Aclosed+milestone%3A7.1+>`_.
282 <https://github.com/ipython/ipython/issues?utf8=%E2%9C%93&q=+is%3Aclosed+milestone%3A7.1+>`_.
278
283
279 Unicode Completion update
284 Unicode Completion update
280 -------------------------
285 -------------------------
281
286
282 In IPython 7.1 the Unicode completion map has been updated and synchronized with
287 In IPython 7.1 the Unicode completion map has been updated and synchronized with
283 the Julia language.
288 the Julia language.
284
289
285 Added and removed character characters:
290 Added and removed character characters:
286
291
287 ``\jmath`` (``Θ·``), ``\\underleftrightarrow`` (U+034D, combining) have been
292 ``\jmath`` (``Θ·``), ``\\underleftrightarrow`` (U+034D, combining) have been
288 added, while ``\\textasciicaron`` have been removed
293 added, while ``\\textasciicaron`` have been removed
289
294
290 Some sequences have seen their prefix removed:
295 Some sequences have seen their prefix removed:
291
296
292 - 6 characters ``\text...<tab>`` should now be inputed with ``\...<tab>`` directly,
297 - 6 characters ``\text...<tab>`` should now be inputed with ``\...<tab>`` directly,
293 - 45 characters ``\Elz...<tab>`` should now be inputed with ``\...<tab>`` directly,
298 - 45 characters ``\Elz...<tab>`` should now be inputed with ``\...<tab>`` directly,
294 - 65 characters ``\B...<tab>`` should now be inputed with ``\...<tab>`` directly,
299 - 65 characters ``\B...<tab>`` should now be inputed with ``\...<tab>`` directly,
295 - 450 characters ``\m...<tab>`` should now be inputed with ``\...<tab>`` directly,
300 - 450 characters ``\m...<tab>`` should now be inputed with ``\...<tab>`` directly,
296
301
297 Some sequences have seen their prefix shortened:
302 Some sequences have seen their prefix shortened:
298
303
299 - 5 characters ``\mitBbb...<tab>`` should now be inputed with ``\bbi...<tab>`` directly,
304 - 5 characters ``\mitBbb...<tab>`` should now be inputed with ``\bbi...<tab>`` directly,
300 - 52 characters ``\mit...<tab>`` should now be inputed with ``\i...<tab>`` directly,
305 - 52 characters ``\mit...<tab>`` should now be inputed with ``\i...<tab>`` directly,
301 - 216 characters ``\mbfit...<tab>`` should now be inputed with ``\bi...<tab>`` directly,
306 - 216 characters ``\mbfit...<tab>`` should now be inputed with ``\bi...<tab>`` directly,
302 - 222 characters ``\mbf...<tab>`` should now be inputed with ``\b...<tab>`` directly,
307 - 222 characters ``\mbf...<tab>`` should now be inputed with ``\b...<tab>`` directly,
303
308
304 A couple of characters had their sequence simplified:
309 A couple of characters had their sequence simplified:
305
310
306 - ``Γ°``, type ``\dh<tab>``, instead of ``\eth<tab>``
311 - ``Γ°``, type ``\dh<tab>``, instead of ``\eth<tab>``
307 - ``Δ§``, type ``\hbar<tab>``, instead of ``\Elzxh<tab>``
312 - ``Δ§``, type ``\hbar<tab>``, instead of ``\Elzxh<tab>``
308 - ``ΙΈ``, type ``\ltphi<tab>``, instead of ``\textphi<tab>``
313 - ``ΙΈ``, type ``\ltphi<tab>``, instead of ``\textphi<tab>``
309 - ``Ο΄``, type ``\varTheta<tab>``, instead of ``\textTheta<tab>``
314 - ``Ο΄``, type ``\varTheta<tab>``, instead of ``\textTheta<tab>``
310 - ``ℇ``, type ``\eulermascheroni<tab>``, instead of ``\Eulerconst<tab>``
315 - ``ℇ``, type ``\eulermascheroni<tab>``, instead of ``\Eulerconst<tab>``
311 - ``β„Ž``, type ``\planck<tab>``, instead of ``\Planckconst<tab>``
316 - ``β„Ž``, type ``\planck<tab>``, instead of ``\Planckconst<tab>``
312
317
313 - U+0336 (COMBINING LONG STROKE OVERLAY), type ``\strike<tab>``, instead of ``\Elzbar<tab>``.
318 - U+0336 (COMBINING LONG STROKE OVERLAY), type ``\strike<tab>``, instead of ``\Elzbar<tab>``.
314
319
315 A couple of sequences have been updated:
320 A couple of sequences have been updated:
316
321
317 - ``\varepsilon`` now gives ``Ι›`` (GREEK SMALL LETTER EPSILON) instead of ``Ξ΅`` (GREEK LUNATE EPSILON SYMBOL),
322 - ``\varepsilon`` now gives ``Ι›`` (GREEK SMALL LETTER EPSILON) instead of ``Ξ΅`` (GREEK LUNATE EPSILON SYMBOL),
318 - ``\underbar`` now gives U+0331 (COMBINING MACRON BELOW) instead of U+0332 (COMBINING LOW LINE).
323 - ``\underbar`` now gives U+0331 (COMBINING MACRON BELOW) instead of U+0332 (COMBINING LOW LINE).
319
324
320
325
321 .. _whatsnew700:
326 .. _whatsnew700:
322
327
323 IPython 7.0.0
328 IPython 7.0.0
324 =============
329 =============
325
330
326 Released Thursday September 27th, 2018
331 Released Thursday September 27th, 2018
327
332
328 IPython 7 includes major feature improvements.
333 IPython 7 includes major feature improvements.
329 This is also the second major version of IPython to support only
334 This is also the second major version of IPython to support only
330 Python 3 – starting at Python 3.4. Python 2 is still community-supported
335 Python 3 – starting at Python 3.4. Python 2 is still community-supported
331 on the bugfix only 5.x branch, but we remind you that Python 2 "end of life"
336 on the bugfix only 5.x branch, but we remind you that Python 2 "end of life"
332 is on Jan 1st 2020.
337 is on Jan 1st 2020.
333
338
334 We were able to backport bug fixes to the 5.x branch thanks to our backport bot which
339 We were able to backport bug fixes to the 5.x branch thanks to our backport bot which
335 backported more than `70 Pull-Requests
340 backported more than `70 Pull-Requests
336 <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>`_
341 <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>`_
337
342
338 The IPython 6.x branch will likely not see any further release unless critical
343 The IPython 6.x branch will likely not see any further release unless critical
339 bugs are found.
344 bugs are found.
340
345
341 Make sure you have pip > 9.0 before upgrading. You should be able to update by running:
346 Make sure you have pip > 9.0 before upgrading. You should be able to update by running:
342
347
343 .. code::
348 .. code::
344
349
345 pip install ipython --upgrade
350 pip install ipython --upgrade
346
351
347 .. only:: ipydev
352 .. only:: ipydev
348
353
349 If you are trying to install or update an ``alpha``, ``beta``, or ``rc``
354 If you are trying to install or update an ``alpha``, ``beta``, or ``rc``
350 version, use pip ``--pre`` flag.
355 version, use pip ``--pre`` flag.
351
356
352 .. code::
357 .. code::
353
358
354 pip install ipython --upgrade --pre
359 pip install ipython --upgrade --pre
355
360
356
361
357 Or, if you have conda installed:
362 Or, if you have conda installed:
358
363
359 .. code::
364 .. code::
360
365
361 conda install ipython
366 conda install ipython
362
367
363
368
364
369
365 Prompt Toolkit 2.0
370 Prompt Toolkit 2.0
366 ------------------
371 ------------------
367
372
368 IPython 7.0+ now uses ``prompt_toolkit 2.0``. If you still need to use an earlier
373 IPython 7.0+ now uses ``prompt_toolkit 2.0``. If you still need to use an earlier
369 ``prompt_toolkit`` version, you may need to pin IPython to ``<7.0``.
374 ``prompt_toolkit`` version, you may need to pin IPython to ``<7.0``.
370
375
371 Autowait: Asynchronous REPL
376 Autowait: Asynchronous REPL
372 ---------------------------
377 ---------------------------
373
378
374 Staring with IPython 7.0 on Python 3.6+, IPython can automatically ``await``
379 Staring with IPython 7.0 on Python 3.6+, IPython can automatically ``await``
375 top level code. You should not need to access an event loop or runner
380 top level code. You should not need to access an event loop or runner
376 yourself. To learn more, read the :ref:`autoawait` section of our docs, see
381 yourself. To learn more, read the :ref:`autoawait` section of our docs, see
377 :ghpull:`11265`, or try the following code::
382 :ghpull:`11265`, or try the following code::
378
383
379 Python 3.6.0
384 Python 3.6.0
380 Type 'copyright', 'credits' or 'license' for more information
385 Type 'copyright', 'credits' or 'license' for more information
381 IPython 7.0.0 -- An enhanced Interactive Python. Type '?' for help.
386 IPython 7.0.0 -- An enhanced Interactive Python. Type '?' for help.
382
387
383 In [1]: import aiohttp
388 In [1]: import aiohttp
384 ...: result = aiohttp.get('https://api.github.com')
389 ...: result = aiohttp.get('https://api.github.com')
385
390
386 In [2]: response = await result
391 In [2]: response = await result
387 <pause for a few 100s ms>
392 <pause for a few 100s ms>
388
393
389 In [3]: await response.json()
394 In [3]: await response.json()
390 Out[3]:
395 Out[3]:
391 {'authorizations_url': 'https://api.github.com/authorizations',
396 {'authorizations_url': 'https://api.github.com/authorizations',
392 'code_search_url': 'https://api.github.com/search/code?q={query}{&page,per_page,sort,order}',
397 'code_search_url': 'https://api.github.com/search/code?q={query}{&page,per_page,sort,order}',
393 ...
398 ...
394 }
399 }
395
400
396 .. note::
401 .. note::
397
402
398 Async integration is experimental code, behavior may change or be removed
403 Async integration is experimental code, behavior may change or be removed
399 between Python and IPython versions without warnings.
404 between Python and IPython versions without warnings.
400
405
401 Integration is by default with `asyncio`, but other libraries can be configured --
406 Integration is by default with `asyncio`, but other libraries can be configured --
402 like ``curio`` or ``trio`` -- to improve concurrency in the REPL::
407 like ``curio`` or ``trio`` -- to improve concurrency in the REPL::
403
408
404 In [1]: %autoawait trio
409 In [1]: %autoawait trio
405
410
406 In [2]: import trio
411 In [2]: import trio
407
412
408 In [3]: async def child(i):
413 In [3]: async def child(i):
409 ...: print(" child %s goes to sleep"%i)
414 ...: print(" child %s goes to sleep"%i)
410 ...: await trio.sleep(2)
415 ...: await trio.sleep(2)
411 ...: print(" child %s wakes up"%i)
416 ...: print(" child %s wakes up"%i)
412
417
413 In [4]: print('parent start')
418 In [4]: print('parent start')
414 ...: async with trio.open_nursery() as n:
419 ...: async with trio.open_nursery() as n:
415 ...: for i in range(3):
420 ...: for i in range(3):
416 ...: n.spawn(child, i)
421 ...: n.spawn(child, i)
417 ...: print('parent end')
422 ...: print('parent end')
418 parent start
423 parent start
419 child 2 goes to sleep
424 child 2 goes to sleep
420 child 0 goes to sleep
425 child 0 goes to sleep
421 child 1 goes to sleep
426 child 1 goes to sleep
422 <about 2 seconds pause>
427 <about 2 seconds pause>
423 child 2 wakes up
428 child 2 wakes up
424 child 1 wakes up
429 child 1 wakes up
425 child 0 wakes up
430 child 0 wakes up
426 parent end
431 parent end
427
432
428 See :ref:`autoawait` for more information.
433 See :ref:`autoawait` for more information.
429
434
430
435
431 Asynchronous code in a Notebook interface or any other frontend using the
436 Asynchronous code in a Notebook interface or any other frontend using the
432 Jupyter Protocol will require further updates to the IPykernel package.
437 Jupyter Protocol will require further updates to the IPykernel package.
433
438
434 Non-Asynchronous code
439 Non-Asynchronous code
435 ~~~~~~~~~~~~~~~~~~~~~
440 ~~~~~~~~~~~~~~~~~~~~~
436
441
437 As the internal API of IPython is now asynchronous, IPython needs to run under
442 As the internal API of IPython is now asynchronous, IPython needs to run under
438 an event loop. In order to allow many workflows, (like using the :magic:`%run`
443 an event loop. In order to allow many workflows, (like using the :magic:`%run`
439 magic, or copy-pasting code that explicitly starts/stop event loop), when
444 magic, or copy-pasting code that explicitly starts/stop event loop), when
440 top-level code is detected as not being asynchronous, IPython code is advanced
445 top-level code is detected as not being asynchronous, IPython code is advanced
441 via a pseudo-synchronous runner, and may not advance pending tasks.
446 via a pseudo-synchronous runner, and may not advance pending tasks.
442
447
443 Change to Nested Embed
448 Change to Nested Embed
444 ~~~~~~~~~~~~~~~~~~~~~~
449 ~~~~~~~~~~~~~~~~~~~~~~
445
450
446 The introduction of the ability to run async code had some effect on the
451 The introduction of the ability to run async code had some effect on the
447 ``IPython.embed()`` API. By default, embed will not allow you to run asynchronous
452 ``IPython.embed()`` API. By default, embed will not allow you to run asynchronous
448 code unless an event loop is specified.
453 code unless an event loop is specified.
449
454
450 Effects on Magics
455 Effects on Magics
451 ~~~~~~~~~~~~~~~~~
456 ~~~~~~~~~~~~~~~~~
452
457
453 Some magics will not work with async until they're updated.
458 Some magics will not work with async until they're updated.
454 Contributions welcome.
459 Contributions welcome.
455
460
456 Expected Future changes
461 Expected Future changes
457 ~~~~~~~~~~~~~~~~~~~~~~~
462 ~~~~~~~~~~~~~~~~~~~~~~~
458
463
459 We expect more internal but public IPython functions to become ``async``, and
464 We expect more internal but public IPython functions to become ``async``, and
460 will likely end up having a persistent event loop while IPython is running.
465 will likely end up having a persistent event loop while IPython is running.
461
466
462 Thanks
467 Thanks
463 ~~~~~~
468 ~~~~~~
464
469
465 This release took more than a year in the making.
470 This release took more than a year in the making.
466 The code was rebased a number of
471 The code was rebased a number of
467 times; leading to commit authorship that may have been lost in the final
472 times; leading to commit authorship that may have been lost in the final
468 Pull-Request. Huge thanks to many people for contribution, discussion, code,
473 Pull-Request. Huge thanks to many people for contribution, discussion, code,
469 documentation, use-cases: dalejung, danielballan, ellisonbg, fperez, gnestor,
474 documentation, use-cases: dalejung, danielballan, ellisonbg, fperez, gnestor,
470 minrk, njsmith, pganssle, tacaswell, takluyver , vidartf ... And many others.
475 minrk, njsmith, pganssle, tacaswell, takluyver , vidartf ... And many others.
471
476
472
477
473 Autoreload Improvement
478 Autoreload Improvement
474 ----------------------
479 ----------------------
475
480
476 The magic :magic:`%autoreload 2 <autoreload>` now captures new methods added to
481 The magic :magic:`%autoreload 2 <autoreload>` now captures new methods added to
477 classes. Earlier, only methods existing as of the initial import were being
482 classes. Earlier, only methods existing as of the initial import were being
478 tracked and updated.
483 tracked and updated.
479
484
480 This new feature helps dual environment development - Jupyter+IDE - where the
485 This new feature helps dual environment development - Jupyter+IDE - where the
481 code gradually moves from notebook cells to package files as it gets
486 code gradually moves from notebook cells to package files as it gets
482 structured.
487 structured.
483
488
484 **Example**: An instance of the class ``MyClass`` will be able to access the
489 **Example**: An instance of the class ``MyClass`` will be able to access the
485 method ``cube()`` after it is uncommented and the file ``file1.py`` is saved on
490 method ``cube()`` after it is uncommented and the file ``file1.py`` is saved on
486 disk.
491 disk.
487
492
488
493
489 .. code::
494 .. code::
490
495
491 # notebook
496 # notebook
492
497
493 from mymodule import MyClass
498 from mymodule import MyClass
494 first = MyClass(5)
499 first = MyClass(5)
495
500
496 .. code::
501 .. code::
497
502
498 # mymodule/file1.py
503 # mymodule/file1.py
499
504
500 class MyClass:
505 class MyClass:
501
506
502 def __init__(self, a=10):
507 def __init__(self, a=10):
503 self.a = a
508 self.a = a
504
509
505 def square(self):
510 def square(self):
506 print('compute square')
511 print('compute square')
507 return self.a*self.a
512 return self.a*self.a
508
513
509 # def cube(self):
514 # def cube(self):
510 # print('compute cube')
515 # print('compute cube')
511 # return self.a*self.a*self.a
516 # return self.a*self.a*self.a
512
517
513
518
514
519
515
520
516 Misc
521 Misc
517 ----
522 ----
518
523
519 The autoindent feature that was deprecated in 5.x was re-enabled and
524 The autoindent feature that was deprecated in 5.x was re-enabled and
520 un-deprecated in :ghpull:`11257`
525 un-deprecated in :ghpull:`11257`
521
526
522 Make :magic:`%run -n -i ... <run>` work correctly. Earlier, if :magic:`%run` was
527 Make :magic:`%run -n -i ... <run>` work correctly. Earlier, if :magic:`%run` was
523 passed both arguments, ``-n`` would be silently ignored. See :ghpull:`10308`
528 passed both arguments, ``-n`` would be silently ignored. See :ghpull:`10308`
524
529
525
530
526 The :cellmagic:`%%script` (as well as :cellmagic:`%%bash`,
531 The :cellmagic:`%%script` (as well as :cellmagic:`%%bash`,
527 :cellmagic:`%%ruby`... ) cell magics now raise by default if the return code of
532 :cellmagic:`%%ruby`... ) cell magics now raise by default if the return code of
528 the given code is non-zero (thus halting execution of further cells in a
533 the given code is non-zero (thus halting execution of further cells in a
529 notebook). The behavior can be disable by passing the ``--no-raise-error`` flag.
534 notebook). The behavior can be disable by passing the ``--no-raise-error`` flag.
530
535
531
536
532 Deprecations
537 Deprecations
533 ------------
538 ------------
534
539
535 A couple of unused functions and methods have been deprecated and will be removed
540 A couple of unused functions and methods have been deprecated and will be removed
536 in future versions:
541 in future versions:
537
542
538 - ``IPython.utils.io.raw_print_err``
543 - ``IPython.utils.io.raw_print_err``
539 - ``IPython.utils.io.raw_print``
544 - ``IPython.utils.io.raw_print``
540
545
541
546
542 Backwards incompatible changes
547 Backwards incompatible changes
543 ------------------------------
548 ------------------------------
544
549
545 * The API for transforming input before it is parsed as Python code has been
550 * The API for transforming input before it is parsed as Python code has been
546 completely redesigned: any custom input transformations will need to be
551 completely redesigned: any custom input transformations will need to be
547 rewritten. See :doc:`/config/inputtransforms` for details of the new API.
552 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