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