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