##// END OF EJS Templates
fixup docs
Matthias Bussonnier -
Show More
@@ -1,34 +1,33 b''
1 =====================
1 =====================
2 Development version
2 Development version
3 =====================
3 =====================
4
4
5 This document describes in-flight development work.
5 This document describes in-flight development work.
6
6
7 .. warning::
7 .. warning::
8
8
9 Please do not edit this file by hand (doing so will likely cause merge
9 Please do not edit this file by hand (doing so will likely cause merge
10 conflicts for other Pull Requests). Instead, create a new file in the
10 conflicts for other Pull Requests). Instead, create a new file in the
11 `docs/source/whatsnew/pr` folder
11 `docs/source/whatsnew/pr` folder
12
12
13
13
14 Released .... ...., 2019
14 Released .... ...., 2019
15
15
16
16
17 Need to be updated:
17 Need to be updated:
18
18
19 .. toctree::
19 .. toctree::
20 :maxdepth: 2
20 :maxdepth: 2
21 :glob:
21 :glob:
22
22
23 pr/*
23 pr/*
24
24
25
25
26
26
27
27
28
29 .. DO NOT EDIT THIS LINE BEFORE RELEASE. FEATURE INSERTION POINT.
28 .. DO NOT EDIT THIS LINE BEFORE RELEASE. FEATURE INSERTION POINT.
30
29
31 Backwards incompatible changes
30 Backwards incompatible changes
32 ------------------------------
31 ------------------------------
33
32
34 .. DO NOT EDIT THIS LINE BEFORE RELEASE. INCOMPAT INSERTION POINT.
33 .. DO NOT EDIT THIS LINE BEFORE RELEASE. INCOMPAT INSERTION POINT.
@@ -1,1450 +1,1499 b''
1 ============
1 ============
2 8.x Series
2 8.x Series
3 ============
3 ============
4
4
5 .. _version 8.11.0:
5 .. _version 8.11.0:
6
6
7 IPython 8.11
7 IPython 8.11
8 ------------
8 ------------
9
9
10 Back on almost regular monthly schedule for IPython with end-of-month
10 Back on almost regular monthly schedule for IPython with end-of-month
11 really-late-Friday release to make sure some bugs are properly fixed.
11 really-late-Friday release to make sure some bugs are properly fixed.
12 Small addition of with a few new features, bugfix and UX improvements.
12 Small addition of with a few new features, bugfix and UX improvements.
13
13
14 This is a non-exhaustive list, but among other you will find:
14 This is a non-exhaustive list, but among other you will find:
15
15
16 Faster Traceback Highlighting
16 Faster Traceback Highlighting
17 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
17 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
18
18
19 Resurrection of pre-IPython-8 traceback highlighting code.
19 Resurrection of pre-IPython-8 traceback highlighting code.
20
20
21 Really long and complicated files were slow to highlight in traceback with
21 Really long and complicated files were slow to highlight in traceback with
22 IPython 8 despite upstream improvement that make many case better. Therefore
22 IPython 8 despite upstream improvement that make many case better. Therefore
23 starting with IPython 8.11 when one of the highlighted file is more than 10 000
23 starting with IPython 8.11 when one of the highlighted file is more than 10 000
24 line long by default, we'll fallback to a faster path that does not have all the
24 line long by default, we'll fallback to a faster path that does not have all the
25 features of highlighting failing AST nodes.
25 features of highlighting failing AST nodes.
26
26
27 This can be configures by setting the value of
27 This can be configures by setting the value of
28 ``IPython.code.ultratb.FAST_THRESHOLD`` to an arbitrary low or large value.
28 ``IPython.code.ultratb.FAST_THRESHOLD`` to an arbitrary low or large value.
29
29
30
31 Autoreload verbosity
32 ~~~~~~~~~~~~~~~~~~~~
33
34 We introduce more descriptive names for the ``%autoreload`` parameter:
35
36 - ``%autoreload now`` (also ``%autoreload``) - perform autoreload immediately.
37 - ``%autoreload off`` (also ``%autoreload 0``) - turn off autoreload.
38 - ``%autoreload explicit`` (also ``%autoreload 1``) - turn on autoreload only for modules
39 whitelisted by ``%aimport`` statements.
40 - ``%autoreload all`` (also ``%autoreload 2``) - turn on autoreload for all modules except those
41 blacklisted by ``%aimport`` statements.
42 - ``%autoreload complete`` (also ``%autoreload 3``) - all the fatures of ``all`` but also adding new
43 objects from the imported modules (see
44 IPython/extensions/tests/test_autoreload.py::test_autoload_newly_added_objects).
45
46 The original designations (e.g. "2") still work, and these new ones are case-insensitive.
47
48 Additionally, the option ``--print`` or ``-p`` can be added to the line to print the names of
49 modules being reloaded. Similarly, ``--log`` or ``-l`` will output the names to the logger at INFO
50 level. Both can be used simultaneously.
51
52 The parsing logic for ``%aimport`` is now improved such that modules can be whitelisted and
53 blacklisted in the same line, e.g. it's now possible to call ``%aimport os, -math`` to include
54 ``os`` for ``%autoreload explicit`` and exclude ``math`` for modes ``all`` and ``complete``.
55
56 Terminal shortcuts customization
57 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
58
59 Previously modifying shortcuts was only possible by hooking into startup files
60 and practically limited to adding new shortcuts or removing all shortcuts bound
61 to a specific key. This release enables users to override existing terminal
62 shortcuts, disable them or add new keybindings.
63
64 For example, to set the :kbd:`right` to accept a single character of auto-suggestion
65 you could use::
66
67 my_shortcuts = [
68 {
69 "command": "IPython:auto_suggest.accept_character",
70 "new_keys": ["right"]
71 }
72 ]
73 %config TerminalInteractiveShell.shortcuts = my_shortcuts
74
75 You can learn more in :std:configtrait:`TerminalInteractiveShell.shortcuts`
76 configuration reference.
77
30 Miscellaneous
78 Miscellaneous
31 ~~~~~~~~~~~~~
79 ~~~~~~~~~~~~~
32
80
33 - ``%gui`` should now support PySide6. :ghpull:`13864`
81 - ``%gui`` should now support PySide6. :ghpull:`13864`
34 - Cli shortcuts can now be configured :ghpull:`13928`
82 - Cli shortcuts can now be configured :ghpull:`13928`, see above.
35 (note that there might be an issue with prompt_toolkit 3.0.37 and shortcut configuration).
83 (note that there might be an issue with prompt_toolkit 3.0.37 and shortcut configuration).
84
36 - Capture output should now respect ``;`` semicolon to suppress output.
85 - Capture output should now respect ``;`` semicolon to suppress output.
37 :ghpull:`13940`
86 :ghpull:`13940`
38 - Base64 encoded images (in jupyter frontend), will not have trailing newlines.
87 - Base64 encoded images (in jupyter frontend), will not have trailing newlines.
39 :ghpull:`13941`
88 :ghpull:`13941`
40
89
41 As usual you can find the full list of PRs on GitHub under `the 8.10 milestone
90 As usual you can find the full list of PRs on GitHub under `the 8.11 milestone
42 <https://github.com/ipython/ipython/milestone/113?closed=1>`__.
91 <https://github.com/ipython/ipython/milestone/113?closed=1>`__.
43
92
44 Thanks to the `D. E. Shaw group <https://deshaw.com/>`__ for sponsoring
93 Thanks to the `D. E. Shaw group <https://deshaw.com/>`__ for sponsoring
45 work on IPython and related libraries.
94 work on IPython and related libraries.
46
95
47 .. _version 8.10.0:
96 .. _version 8.10.0:
48
97
49 IPython 8.10
98 IPython 8.10
50 ------------
99 ------------
51
100
52 Out of schedule release of IPython with minor fixes to patch a potential CVE-2023-24816.
101 Out of schedule release of IPython with minor fixes to patch a potential CVE-2023-24816.
53 This is a really low severity CVE that you most likely are not affected by unless:
102 This is a really low severity CVE that you most likely are not affected by unless:
54
103
55 - You are on windows.
104 - You are on windows.
56 - You have a custom build of Python without ``_ctypes``
105 - You have a custom build of Python without ``_ctypes``
57 - You cd or start IPython or Jupyter in untrusted directory which names may be
106 - You cd or start IPython or Jupyter in untrusted directory which names may be
58 valid shell commands.
107 valid shell commands.
59
108
60 You can read more on `the advisory
109 You can read more on `the advisory
61 <https://github.com/ipython/ipython/security/advisories/GHSA-29gw-9793-fvw7>`__.
110 <https://github.com/ipython/ipython/security/advisories/GHSA-29gw-9793-fvw7>`__.
62
111
63 In addition to fixing this CVE we also fix a couple of outstanding bugs and issues.
112 In addition to fixing this CVE we also fix a couple of outstanding bugs and issues.
64
113
65 As usual you can find the full list of PRs on GitHub under `the 8.10 milestone
114 As usual you can find the full list of PRs on GitHub under `the 8.10 milestone
66 <https://github.com/ipython/ipython/milestone/112?closed=1>`__.
115 <https://github.com/ipython/ipython/milestone/112?closed=1>`__.
67
116
68 In Particular:
117 In Particular:
69
118
70 - bump minimum numpy to `>=1.21` version following NEP29. :ghpull:`13930`
119 - bump minimum numpy to `>=1.21` version following NEP29. :ghpull:`13930`
71 - fix for compatibility with MyPy 1.0. :ghpull:`13933`
120 - fix for compatibility with MyPy 1.0. :ghpull:`13933`
72 - fix nbgrader stalling when IPython's ``showtraceback`` function is
121 - fix nbgrader stalling when IPython's ``showtraceback`` function is
73 monkeypatched. :ghpull:`13934`
122 monkeypatched. :ghpull:`13934`
74
123
75
124
76
125
77 As this release also contains those minimal changes in addition to fixing the
126 As this release also contains those minimal changes in addition to fixing the
78 CVE I decided to bump the minor version anyway.
127 CVE I decided to bump the minor version anyway.
79
128
80 This will not affect the normal release schedule, so IPython 8.11 is due in
129 This will not affect the normal release schedule, so IPython 8.11 is due in
81 about 2 weeks.
130 about 2 weeks.
82
131
83 .. _version 8.9.0:
132 .. _version 8.9.0:
84
133
85 IPython 8.9.0
134 IPython 8.9.0
86 -------------
135 -------------
87
136
88 Second release of IPython in 2023, last Friday of the month, we are back on
137 Second release of IPython in 2023, last Friday of the month, we are back on
89 track. This is a small release with a few bug-fixes, and improvements, mostly
138 track. This is a small release with a few bug-fixes, and improvements, mostly
90 with respect to terminal shortcuts.
139 with respect to terminal shortcuts.
91
140
92
141
93 The biggest improvement for 8.9 is a drastic amelioration of the
142 The biggest improvement for 8.9 is a drastic amelioration of the
94 auto-suggestions sponsored by D.E. Shaw and implemented by the more and more
143 auto-suggestions sponsored by D.E. Shaw and implemented by the more and more
95 active contributor `@krassowski <https://github.com/krassowski>`.
144 active contributor `@krassowski <https://github.com/krassowski>`.
96
145
97 - ``right`` accepts a single character from suggestion
146 - ``right`` accepts a single character from suggestion
98 - ``ctrl+right`` accepts a semantic token (macos default shortcuts take
147 - ``ctrl+right`` accepts a semantic token (macos default shortcuts take
99 precedence and need to be disabled to make this work)
148 precedence and need to be disabled to make this work)
100 - ``backspace`` deletes a character and resumes hinting autosuggestions
149 - ``backspace`` deletes a character and resumes hinting autosuggestions
101 - ``ctrl-left`` accepts suggestion and moves cursor left one character.
150 - ``ctrl-left`` accepts suggestion and moves cursor left one character.
102 - ``backspace`` deletes a character and resumes hinting autosuggestions
151 - ``backspace`` deletes a character and resumes hinting autosuggestions
103 - ``down`` moves to suggestion to later in history when no lines are present below the cursors.
152 - ``down`` moves to suggestion to later in history when no lines are present below the cursors.
104 - ``up`` moves to suggestion from earlier in history when no lines are present above the cursor.
153 - ``up`` moves to suggestion from earlier in history when no lines are present above the cursor.
105
154
106 This is best described by the Gif posted by `@krassowski
155 This is best described by the Gif posted by `@krassowski
107 <https://github.com/krassowski>`, and in the PR itself :ghpull:`13888`.
156 <https://github.com/krassowski>`, and in the PR itself :ghpull:`13888`.
108
157
109 .. image:: ../_images/autosuggest.gif
158 .. image:: ../_images/autosuggest.gif
110
159
111 Please report any feedback in order for us to improve the user experience.
160 Please report any feedback in order for us to improve the user experience.
112 In particular we are also working on making the shortcuts configurable.
161 In particular we are also working on making the shortcuts configurable.
113
162
114 If you are interested in better terminal shortcuts, I also invite you to
163 If you are interested in better terminal shortcuts, I also invite you to
115 participate in issue `13879
164 participate in issue `13879
116 <https://github.com/ipython/ipython/issues/13879>`__.
165 <https://github.com/ipython/ipython/issues/13879>`__.
117
166
118
167
119 As we follow `NEP29
168 As we follow `NEP29
120 <https://numpy.org/neps/nep-0029-deprecation_policy.html>`__, next version of
169 <https://numpy.org/neps/nep-0029-deprecation_policy.html>`__, next version of
121 IPython will officially stop supporting numpy 1.20, and will stop supporting
170 IPython will officially stop supporting numpy 1.20, and will stop supporting
122 Python 3.8 after April release.
171 Python 3.8 after April release.
123
172
124 As usual you can find the full list of PRs on GitHub under `the 8.9 milestone
173 As usual you can find the full list of PRs on GitHub under `the 8.9 milestone
125 <https://github.com/ipython/ipython/milestone/111?closed=1>`__.
174 <https://github.com/ipython/ipython/milestone/111?closed=1>`__.
126
175
127
176
128 Thanks to the `D. E. Shaw group <https://deshaw.com/>`__ for sponsoring
177 Thanks to the `D. E. Shaw group <https://deshaw.com/>`__ for sponsoring
129 work on IPython and related libraries.
178 work on IPython and related libraries.
130
179
131 .. _version 8.8.0:
180 .. _version 8.8.0:
132
181
133 IPython 8.8.0
182 IPython 8.8.0
134 -------------
183 -------------
135
184
136 First release of IPython in 2023 as there was no release at the end of
185 First release of IPython in 2023 as there was no release at the end of
137 December.
186 December.
138
187
139 This is an unusually big release (relatively speaking) with more than 15 Pull
188 This is an unusually big release (relatively speaking) with more than 15 Pull
140 Requests merged.
189 Requests merged.
141
190
142 Of particular interest are:
191 Of particular interest are:
143
192
144 - :ghpull:`13852` that replaces the greedy completer and improves
193 - :ghpull:`13852` that replaces the greedy completer and improves
145 completion, in particular for dictionary keys.
194 completion, in particular for dictionary keys.
146 - :ghpull:`13858` that adds ``py.typed`` to ``setup.cfg`` to make sure it is
195 - :ghpull:`13858` that adds ``py.typed`` to ``setup.cfg`` to make sure it is
147 bundled in wheels.
196 bundled in wheels.
148 - :ghpull:`13869` that implements tab completions for IPython options in the
197 - :ghpull:`13869` that implements tab completions for IPython options in the
149 shell when using `argcomplete <https://github.com/kislyuk/argcomplete>`. I
198 shell when using `argcomplete <https://github.com/kislyuk/argcomplete>`. I
150 believe this also needs a recent version of Traitlets.
199 believe this also needs a recent version of Traitlets.
151 - :ghpull:`13865` makes the ``inspector`` class of `InteractiveShell`
200 - :ghpull:`13865` makes the ``inspector`` class of `InteractiveShell`
152 configurable.
201 configurable.
153 - :ghpull:`13880` that removes minor-version entrypoints as the minor version
202 - :ghpull:`13880` that removes minor-version entrypoints as the minor version
154 entry points that would be included in the wheel would be the one of the
203 entry points that would be included in the wheel would be the one of the
155 Python version that was used to build the ``whl`` file.
204 Python version that was used to build the ``whl`` file.
156
205
157 In no particular order, the rest of the changes update the test suite to be
206 In no particular order, the rest of the changes update the test suite to be
158 compatible with Pygments 2.14, various docfixes, testing on more recent python
207 compatible with Pygments 2.14, various docfixes, testing on more recent python
159 versions and various updates.
208 versions and various updates.
160
209
161 As usual you can find the full list of PRs on GitHub under `the 8.8 milestone
210 As usual you can find the full list of PRs on GitHub under `the 8.8 milestone
162 <https://github.com/ipython/ipython/milestone/110>`__.
211 <https://github.com/ipython/ipython/milestone/110>`__.
163
212
164 Many thanks to @krassowski for the many PRs and @jasongrout for reviewing and
213 Many thanks to @krassowski for the many PRs and @jasongrout for reviewing and
165 merging contributions.
214 merging contributions.
166
215
167 Thanks to the `D. E. Shaw group <https://deshaw.com/>`__ for sponsoring
216 Thanks to the `D. E. Shaw group <https://deshaw.com/>`__ for sponsoring
168 work on IPython and related libraries.
217 work on IPython and related libraries.
169
218
170 .. _version 8.7.0:
219 .. _version 8.7.0:
171
220
172 IPython 8.7.0
221 IPython 8.7.0
173 -------------
222 -------------
174
223
175
224
176 Small release of IPython with a couple of bug fixes and new features for this
225 Small release of IPython with a couple of bug fixes and new features for this
177 month. Next month is the end of year, it is unclear if there will be a release
226 month. Next month is the end of year, it is unclear if there will be a release
178 close to the new year's eve, or if the next release will be at the end of January.
227 close to the new year's eve, or if the next release will be at the end of January.
179
228
180 Here are a few of the relevant fixes,
229 Here are a few of the relevant fixes,
181 as usual you can find the full list of PRs on GitHub under `the 8.7 milestone
230 as usual you can find the full list of PRs on GitHub under `the 8.7 milestone
182 <https://github.com/ipython/ipython/pulls?q=milestone%3A8.7>`__.
231 <https://github.com/ipython/ipython/pulls?q=milestone%3A8.7>`__.
183
232
184
233
185 - :ghpull:`13834` bump the minimum prompt toolkit to 3.0.11.
234 - :ghpull:`13834` bump the minimum prompt toolkit to 3.0.11.
186 - IPython shipped with the ``py.typed`` marker now, and we are progressively
235 - IPython shipped with the ``py.typed`` marker now, and we are progressively
187 adding more types. :ghpull:`13831`
236 adding more types. :ghpull:`13831`
188 - :ghpull:`13817` add configuration of code blacks formatting.
237 - :ghpull:`13817` add configuration of code blacks formatting.
189
238
190
239
191 Thanks to the `D. E. Shaw group <https://deshaw.com/>`__ for sponsoring
240 Thanks to the `D. E. Shaw group <https://deshaw.com/>`__ for sponsoring
192 work on IPython and related libraries.
241 work on IPython and related libraries.
193
242
194
243
195 .. _version 8.6.0:
244 .. _version 8.6.0:
196
245
197 IPython 8.6.0
246 IPython 8.6.0
198 -------------
247 -------------
199
248
200 Back to a more regular release schedule (at least I try), as Friday is
249 Back to a more regular release schedule (at least I try), as Friday is
201 already over by more than 24h hours. This is a slightly bigger release with a
250 already over by more than 24h hours. This is a slightly bigger release with a
202 few new features that contain no less than 25 PRs.
251 few new features that contain no less than 25 PRs.
203
252
204 We'll notably found a couple of non negligible changes:
253 We'll notably found a couple of non negligible changes:
205
254
206 The ``install_ext`` and related functions have been removed after being
255 The ``install_ext`` and related functions have been removed after being
207 deprecated for years. You can use pip to install extensions. ``pip`` did not
256 deprecated for years. You can use pip to install extensions. ``pip`` did not
208 exist when ``install_ext`` was introduced. You can still load local extensions
257 exist when ``install_ext`` was introduced. You can still load local extensions
209 without installing them. Just set your ``sys.path`` for example. :ghpull:`13744`
258 without installing them. Just set your ``sys.path`` for example. :ghpull:`13744`
210
259
211 IPython now has extra entry points that use the major *and minor* version of
260 IPython now has extra entry points that use the major *and minor* version of
212 python. For some of you this means that you can do a quick ``ipython3.10`` to
261 python. For some of you this means that you can do a quick ``ipython3.10`` to
213 launch IPython from the Python 3.10 interpreter, while still using Python 3.11
262 launch IPython from the Python 3.10 interpreter, while still using Python 3.11
214 as your main Python. :ghpull:`13743`
263 as your main Python. :ghpull:`13743`
215
264
216 The completer matcher API has been improved. See :ghpull:`13745`. This should
265 The completer matcher API has been improved. See :ghpull:`13745`. This should
217 improve the type inference and improve dict keys completions in many use case.
266 improve the type inference and improve dict keys completions in many use case.
218 Thanks ``@krassowski`` for all the work, and the D.E. Shaw group for sponsoring
267 Thanks ``@krassowski`` for all the work, and the D.E. Shaw group for sponsoring
219 it.
268 it.
220
269
221 The color of error nodes in tracebacks can now be customized. See
270 The color of error nodes in tracebacks can now be customized. See
222 :ghpull:`13756`. This is a private attribute until someone finds the time to
271 :ghpull:`13756`. This is a private attribute until someone finds the time to
223 properly add a configuration option. Note that with Python 3.11 that also shows
272 properly add a configuration option. Note that with Python 3.11 that also shows
224 the relevant nodes in traceback, it would be good to leverage this information
273 the relevant nodes in traceback, it would be good to leverage this information
225 (plus the "did you mean" info added on attribute errors). But that's likely work
274 (plus the "did you mean" info added on attribute errors). But that's likely work
226 I won't have time to do before long, so contributions welcome.
275 I won't have time to do before long, so contributions welcome.
227
276
228 As we follow NEP 29, we removed support for numpy 1.19 :ghpull:`13760`.
277 As we follow NEP 29, we removed support for numpy 1.19 :ghpull:`13760`.
229
278
230
279
231 The ``open()`` function present in the user namespace by default will now refuse
280 The ``open()`` function present in the user namespace by default will now refuse
232 to open the file descriptors 0,1,2 (stdin, out, err), to avoid crashing IPython.
281 to open the file descriptors 0,1,2 (stdin, out, err), to avoid crashing IPython.
233 This mostly occurs in teaching context when incorrect values get passed around.
282 This mostly occurs in teaching context when incorrect values get passed around.
234
283
235
284
236 The ``?``, ``??``, and corresponding ``pinfo``, ``pinfo2`` magics can now find
285 The ``?``, ``??``, and corresponding ``pinfo``, ``pinfo2`` magics can now find
237 objects inside arrays. That is to say, the following now works::
286 objects inside arrays. That is to say, the following now works::
238
287
239
288
240 >>> def my_func(*arg, **kwargs):pass
289 >>> def my_func(*arg, **kwargs):pass
241 >>> container = [my_func]
290 >>> container = [my_func]
242 >>> container[0]?
291 >>> container[0]?
243
292
244
293
245 If ``container`` define a custom ``getitem``, this __will__ trigger the custom
294 If ``container`` define a custom ``getitem``, this __will__ trigger the custom
246 method. So don't put side effects in your ``getitems``. Thanks to the D.E. Shaw
295 method. So don't put side effects in your ``getitems``. Thanks to the D.E. Shaw
247 group for the request and sponsoring the work.
296 group for the request and sponsoring the work.
248
297
249
298
250 As usual you can find the full list of PRs on GitHub under `the 8.6 milestone
299 As usual you can find the full list of PRs on GitHub under `the 8.6 milestone
251 <https://github.com/ipython/ipython/pulls?q=milestone%3A8.6>`__.
300 <https://github.com/ipython/ipython/pulls?q=milestone%3A8.6>`__.
252
301
253 Thanks to all hacktoberfest contributors, please contribute to
302 Thanks to all hacktoberfest contributors, please contribute to
254 `closember.org <https://closember.org/>`__.
303 `closember.org <https://closember.org/>`__.
255
304
256 Thanks to the `D. E. Shaw group <https://deshaw.com/>`__ for sponsoring
305 Thanks to the `D. E. Shaw group <https://deshaw.com/>`__ for sponsoring
257 work on IPython and related libraries.
306 work on IPython and related libraries.
258
307
259 .. _version 8.5.0:
308 .. _version 8.5.0:
260
309
261 IPython 8.5.0
310 IPython 8.5.0
262 -------------
311 -------------
263
312
264 First release since a couple of month due to various reasons and timing preventing
313 First release since a couple of month due to various reasons and timing preventing
265 me for sticking to the usual monthly release the last Friday of each month. This
314 me for sticking to the usual monthly release the last Friday of each month. This
266 is of non negligible size as it has more than two dozen PRs with various fixes
315 is of non negligible size as it has more than two dozen PRs with various fixes
267 an bug fixes.
316 an bug fixes.
268
317
269 Many thanks to everybody who contributed PRs for your patience in review and
318 Many thanks to everybody who contributed PRs for your patience in review and
270 merges.
319 merges.
271
320
272 Here is a non-exhaustive list of changes that have been implemented for IPython
321 Here is a non-exhaustive list of changes that have been implemented for IPython
273 8.5.0. As usual you can find the full list of issues and PRs tagged with `the
322 8.5.0. As usual you can find the full list of issues and PRs tagged with `the
274 8.5 milestone
323 8.5 milestone
275 <https://github.com/ipython/ipython/pulls?q=is%3Aclosed+milestone%3A8.5+>`__.
324 <https://github.com/ipython/ipython/pulls?q=is%3Aclosed+milestone%3A8.5+>`__.
276
325
277 - Added a shortcut for accepting auto suggestion. The End key shortcut for
326 - Added a shortcut for accepting auto suggestion. The End key shortcut for
278 accepting auto-suggestion This binding works in Vi mode too, provided
327 accepting auto-suggestion This binding works in Vi mode too, provided
279 ``TerminalInteractiveShell.emacs_bindings_in_vi_insert_mode`` is set to be
328 ``TerminalInteractiveShell.emacs_bindings_in_vi_insert_mode`` is set to be
280 ``True`` :ghpull:`13566`.
329 ``True`` :ghpull:`13566`.
281
330
282 - No popup in window for latex generation when generating latex (e.g. via
331 - No popup in window for latex generation when generating latex (e.g. via
283 `_latex_repr_`) no popup window is shows under Windows. :ghpull:`13679`
332 `_latex_repr_`) no popup window is shows under Windows. :ghpull:`13679`
284
333
285 - Fixed error raised when attempting to tab-complete an input string with
334 - Fixed error raised when attempting to tab-complete an input string with
286 consecutive periods or forward slashes (such as "file:///var/log/...").
335 consecutive periods or forward slashes (such as "file:///var/log/...").
287 :ghpull:`13675`
336 :ghpull:`13675`
288
337
289 - Relative filenames in Latex rendering :
338 - Relative filenames in Latex rendering :
290 The `latex_to_png_dvipng` command internally generates input and output file
339 The `latex_to_png_dvipng` command internally generates input and output file
291 arguments to `latex` and `dvipis`. These arguments are now generated as
340 arguments to `latex` and `dvipis`. These arguments are now generated as
292 relative files to the current working directory instead of absolute file
341 relative files to the current working directory instead of absolute file
293 paths. This solves a problem where the current working directory contains
342 paths. This solves a problem where the current working directory contains
294 characters that are not handled properly by `latex` and `dvips`. There are
343 characters that are not handled properly by `latex` and `dvips`. There are
295 no changes to the user API. :ghpull:`13680`
344 no changes to the user API. :ghpull:`13680`
296
345
297 - Stripping decorators bug: Fixed bug which meant that ipython code blocks in
346 - Stripping decorators bug: Fixed bug which meant that ipython code blocks in
298 restructured text documents executed with the ipython-sphinx extension
347 restructured text documents executed with the ipython-sphinx extension
299 skipped any lines of code containing python decorators. :ghpull:`13612`
348 skipped any lines of code containing python decorators. :ghpull:`13612`
300
349
301 - Allow some modules with frozen dataclasses to be reloaded. :ghpull:`13732`
350 - Allow some modules with frozen dataclasses to be reloaded. :ghpull:`13732`
302 - Fix paste magic on wayland. :ghpull:`13671`
351 - Fix paste magic on wayland. :ghpull:`13671`
303 - show maxlen in deque's repr. :ghpull:`13648`
352 - show maxlen in deque's repr. :ghpull:`13648`
304
353
305 Restore line numbers for Input
354 Restore line numbers for Input
306 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
355 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
307
356
308 Line number information in tracebacks from input are restored.
357 Line number information in tracebacks from input are restored.
309 Line numbers from input were removed during the transition to v8 enhanced traceback reporting.
358 Line numbers from input were removed during the transition to v8 enhanced traceback reporting.
310
359
311 So, instead of::
360 So, instead of::
312
361
313 ---------------------------------------------------------------------------
362 ---------------------------------------------------------------------------
314 ZeroDivisionError Traceback (most recent call last)
363 ZeroDivisionError Traceback (most recent call last)
315 Input In [3], in <cell line: 1>()
364 Input In [3], in <cell line: 1>()
316 ----> 1 myfunc(2)
365 ----> 1 myfunc(2)
317
366
318 Input In [2], in myfunc(z)
367 Input In [2], in myfunc(z)
319 1 def myfunc(z):
368 1 def myfunc(z):
320 ----> 2 foo.boo(z-1)
369 ----> 2 foo.boo(z-1)
321
370
322 File ~/code/python/ipython/foo.py:3, in boo(x)
371 File ~/code/python/ipython/foo.py:3, in boo(x)
323 2 def boo(x):
372 2 def boo(x):
324 ----> 3 return 1/(1-x)
373 ----> 3 return 1/(1-x)
325
374
326 ZeroDivisionError: division by zero
375 ZeroDivisionError: division by zero
327
376
328 The error traceback now looks like::
377 The error traceback now looks like::
329
378
330 ---------------------------------------------------------------------------
379 ---------------------------------------------------------------------------
331 ZeroDivisionError Traceback (most recent call last)
380 ZeroDivisionError Traceback (most recent call last)
332 Cell In [3], line 1
381 Cell In [3], line 1
333 ----> 1 myfunc(2)
382 ----> 1 myfunc(2)
334
383
335 Cell In [2], line 2, in myfunc(z)
384 Cell In [2], line 2, in myfunc(z)
336 1 def myfunc(z):
385 1 def myfunc(z):
337 ----> 2 foo.boo(z-1)
386 ----> 2 foo.boo(z-1)
338
387
339 File ~/code/python/ipython/foo.py:3, in boo(x)
388 File ~/code/python/ipython/foo.py:3, in boo(x)
340 2 def boo(x):
389 2 def boo(x):
341 ----> 3 return 1/(1-x)
390 ----> 3 return 1/(1-x)
342
391
343 ZeroDivisionError: division by zero
392 ZeroDivisionError: division by zero
344
393
345 or, with xmode=Plain::
394 or, with xmode=Plain::
346
395
347 Traceback (most recent call last):
396 Traceback (most recent call last):
348 Cell In [12], line 1
397 Cell In [12], line 1
349 myfunc(2)
398 myfunc(2)
350 Cell In [6], line 2 in myfunc
399 Cell In [6], line 2 in myfunc
351 foo.boo(z-1)
400 foo.boo(z-1)
352 File ~/code/python/ipython/foo.py:3 in boo
401 File ~/code/python/ipython/foo.py:3 in boo
353 return 1/(1-x)
402 return 1/(1-x)
354 ZeroDivisionError: division by zero
403 ZeroDivisionError: division by zero
355
404
356 :ghpull:`13560`
405 :ghpull:`13560`
357
406
358 New setting to silence warning if working inside a virtual environment
407 New setting to silence warning if working inside a virtual environment
359 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
408 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
360
409
361 Previously, when starting IPython in a virtual environment without IPython installed (so IPython from the global environment is used), the following warning was printed:
410 Previously, when starting IPython in a virtual environment without IPython installed (so IPython from the global environment is used), the following warning was printed:
362
411
363 Attempting to work in a virtualenv. If you encounter problems, please install IPython inside the virtualenv.
412 Attempting to work in a virtualenv. If you encounter problems, please install IPython inside the virtualenv.
364
413
365 This warning can be permanently silenced by setting ``c.InteractiveShell.warn_venv`` to ``False`` (the default is ``True``).
414 This warning can be permanently silenced by setting ``c.InteractiveShell.warn_venv`` to ``False`` (the default is ``True``).
366
415
367 :ghpull:`13706`
416 :ghpull:`13706`
368
417
369 -------
418 -------
370
419
371 Thanks to the `D. E. Shaw group <https://deshaw.com/>`__ for sponsoring
420 Thanks to the `D. E. Shaw group <https://deshaw.com/>`__ for sponsoring
372 work on IPython and related libraries.
421 work on IPython and related libraries.
373
422
374
423
375 .. _version 8.4.0:
424 .. _version 8.4.0:
376
425
377 IPython 8.4.0
426 IPython 8.4.0
378 -------------
427 -------------
379
428
380 As for 7.34, this version contains a single fix: fix uncaught BdbQuit exceptions on ipdb
429 As for 7.34, this version contains a single fix: fix uncaught BdbQuit exceptions on ipdb
381 exit :ghpull:`13668`, and a single typo fix in documentation: :ghpull:`13682`
430 exit :ghpull:`13668`, and a single typo fix in documentation: :ghpull:`13682`
382
431
383 Thanks to the `D. E. Shaw group <https://deshaw.com/>`__ for sponsoring
432 Thanks to the `D. E. Shaw group <https://deshaw.com/>`__ for sponsoring
384 work on IPython and related libraries.
433 work on IPython and related libraries.
385
434
386
435
387 .. _version 8.3.0:
436 .. _version 8.3.0:
388
437
389 IPython 8.3.0
438 IPython 8.3.0
390 -------------
439 -------------
391
440
392 - :ghpull:`13625`, using ``?``, ``??``, ``*?`` will not call
441 - :ghpull:`13625`, using ``?``, ``??``, ``*?`` will not call
393 ``set_next_input`` as most frontend allow proper multiline editing and it was
442 ``set_next_input`` as most frontend allow proper multiline editing and it was
394 causing issues for many users of multi-cell frontends. This has been backported to 7.33
443 causing issues for many users of multi-cell frontends. This has been backported to 7.33
395
444
396
445
397 - :ghpull:`13600`, ``pre_run_*``-hooks will now have a ``cell_id`` attribute on
446 - :ghpull:`13600`, ``pre_run_*``-hooks will now have a ``cell_id`` attribute on
398 the info object when frontend provides it. This has been backported to 7.33
447 the info object when frontend provides it. This has been backported to 7.33
399
448
400 - :ghpull:`13624`, fixed :kbd:`End` key being broken after accepting an
449 - :ghpull:`13624`, fixed :kbd:`End` key being broken after accepting an
401 auto-suggestion.
450 auto-suggestion.
402
451
403 - :ghpull:`13657` fixed an issue where history from different sessions would be mixed.
452 - :ghpull:`13657` fixed an issue where history from different sessions would be mixed.
404
453
405 .. _version 8.2.0:
454 .. _version 8.2.0:
406
455
407 IPython 8.2.0
456 IPython 8.2.0
408 -------------
457 -------------
409
458
410 IPython 8.2 mostly bring bugfixes to IPython.
459 IPython 8.2 mostly bring bugfixes to IPython.
411
460
412 - Auto-suggestion can now be elected with the ``end`` key. :ghpull:`13566`
461 - Auto-suggestion can now be elected with the ``end`` key. :ghpull:`13566`
413 - Some traceback issues with ``assert etb is not None`` have been fixed. :ghpull:`13588`
462 - Some traceback issues with ``assert etb is not None`` have been fixed. :ghpull:`13588`
414 - History is now pulled from the sqitel database and not from in-memory.
463 - History is now pulled from the sqitel database and not from in-memory.
415 In particular when using the ``%paste`` magic, the content of the pasted text will
464 In particular when using the ``%paste`` magic, the content of the pasted text will
416 be part of the history and not the verbatim text ``%paste`` anymore. :ghpull:`13592`
465 be part of the history and not the verbatim text ``%paste`` anymore. :ghpull:`13592`
417 - Fix ``Ctrl-\\`` exit cleanup :ghpull:`13603`
466 - Fix ``Ctrl-\\`` exit cleanup :ghpull:`13603`
418 - Fixes to ``ultratb`` ipdb support when used outside of IPython. :ghpull:`13498`
467 - Fixes to ``ultratb`` ipdb support when used outside of IPython. :ghpull:`13498`
419
468
420
469
421 I am still trying to fix and investigate :ghissue:`13598`, which seems to be
470 I am still trying to fix and investigate :ghissue:`13598`, which seems to be
422 random, and would appreciate help if you find a reproducible minimal case. I've
471 random, and would appreciate help if you find a reproducible minimal case. I've
423 tried to make various changes to the codebase to mitigate it, but a proper fix
472 tried to make various changes to the codebase to mitigate it, but a proper fix
424 will be difficult without understanding the cause.
473 will be difficult without understanding the cause.
425
474
426
475
427 All the issues on pull-requests for this release can be found in the `8.2
476 All the issues on pull-requests for this release can be found in the `8.2
428 milestone. <https://github.com/ipython/ipython/milestone/100>`__ . And some
477 milestone. <https://github.com/ipython/ipython/milestone/100>`__ . And some
429 documentation only PR can be found as part of the `7.33 milestone
478 documentation only PR can be found as part of the `7.33 milestone
430 <https://github.com/ipython/ipython/milestone/101>`__ (currently not released).
479 <https://github.com/ipython/ipython/milestone/101>`__ (currently not released).
431
480
432 Thanks to the `D. E. Shaw group <https://deshaw.com/>`__ for sponsoring
481 Thanks to the `D. E. Shaw group <https://deshaw.com/>`__ for sponsoring
433 work on IPython and related libraries.
482 work on IPython and related libraries.
434
483
435 .. _version 8.1.1:
484 .. _version 8.1.1:
436
485
437 IPython 8.1.1
486 IPython 8.1.1
438 -------------
487 -------------
439
488
440 Fix an issue with virtualenv and Python 3.8 introduced in 8.1
489 Fix an issue with virtualenv and Python 3.8 introduced in 8.1
441
490
442 Revert :ghpull:`13537` (fix an issue with symlinks in virtualenv) that raises an
491 Revert :ghpull:`13537` (fix an issue with symlinks in virtualenv) that raises an
443 error in Python 3.8, and fixed in a different way in :ghpull:`13559`.
492 error in Python 3.8, and fixed in a different way in :ghpull:`13559`.
444
493
445 .. _version 8.1:
494 .. _version 8.1:
446
495
447 IPython 8.1.0
496 IPython 8.1.0
448 -------------
497 -------------
449
498
450 IPython 8.1 is the first minor release after 8.0 and fixes a number of bugs and
499 IPython 8.1 is the first minor release after 8.0 and fixes a number of bugs and
451 updates a few behaviors that were problematic with the 8.0 as with many new major
500 updates a few behaviors that were problematic with the 8.0 as with many new major
452 release.
501 release.
453
502
454 Note that beyond the changes listed here, IPython 8.1.0 also contains all the
503 Note that beyond the changes listed here, IPython 8.1.0 also contains all the
455 features listed in :ref:`version 7.32`.
504 features listed in :ref:`version 7.32`.
456
505
457 - Misc and multiple fixes around quotation auto-closing. It is now disabled by
506 - Misc and multiple fixes around quotation auto-closing. It is now disabled by
458 default. Run with ``TerminalInteractiveShell.auto_match=True`` to re-enabled
507 default. Run with ``TerminalInteractiveShell.auto_match=True`` to re-enabled
459 - Require pygments>=2.4.0 :ghpull:`13459`, this was implicit in the code, but
508 - Require pygments>=2.4.0 :ghpull:`13459`, this was implicit in the code, but
460 is now explicit in ``setup.cfg``/``setup.py``
509 is now explicit in ``setup.cfg``/``setup.py``
461 - Docs improvement of ``core.magic_arguments`` examples. :ghpull:`13433`
510 - Docs improvement of ``core.magic_arguments`` examples. :ghpull:`13433`
462 - Multi-line edit executes too early with await. :ghpull:`13424`
511 - Multi-line edit executes too early with await. :ghpull:`13424`
463
512
464 - ``black`` is back as an optional dependency, and autoformatting disabled by
513 - ``black`` is back as an optional dependency, and autoformatting disabled by
465 default until some fixes are implemented (black improperly reformat magics).
514 default until some fixes are implemented (black improperly reformat magics).
466 :ghpull:`13471` Additionally the ability to use ``yapf`` as a code
515 :ghpull:`13471` Additionally the ability to use ``yapf`` as a code
467 reformatter has been added :ghpull:`13528` . You can use
516 reformatter has been added :ghpull:`13528` . You can use
468 ``TerminalInteractiveShell.autoformatter="black"``,
517 ``TerminalInteractiveShell.autoformatter="black"``,
469 ``TerminalInteractiveShell.autoformatter="yapf"`` to re-enable auto formating
518 ``TerminalInteractiveShell.autoformatter="yapf"`` to re-enable auto formating
470 with black, or switch to yapf.
519 with black, or switch to yapf.
471
520
472 - Fix and issue where ``display`` was not defined.
521 - Fix and issue where ``display`` was not defined.
473
522
474 - Auto suggestions are now configurable. Currently only
523 - Auto suggestions are now configurable. Currently only
475 ``AutoSuggestFromHistory`` (default) and ``None``. new provider contribution
524 ``AutoSuggestFromHistory`` (default) and ``None``. new provider contribution
476 welcomed. :ghpull:`13475`
525 welcomed. :ghpull:`13475`
477
526
478 - multiple packaging/testing improvement to simplify downstream packaging
527 - multiple packaging/testing improvement to simplify downstream packaging
479 (xfail with reasons, try to not access network...).
528 (xfail with reasons, try to not access network...).
480
529
481 - Update deprecation. ``InteractiveShell.magic`` internal method has been
530 - Update deprecation. ``InteractiveShell.magic`` internal method has been
482 deprecated for many years but did not emit a warning until now.
531 deprecated for many years but did not emit a warning until now.
483
532
484 - internal ``appended_to_syspath`` context manager has been deprecated.
533 - internal ``appended_to_syspath`` context manager has been deprecated.
485
534
486 - fix an issue with symlinks in virtualenv :ghpull:`13537` (Reverted in 8.1.1)
535 - fix an issue with symlinks in virtualenv :ghpull:`13537` (Reverted in 8.1.1)
487
536
488 - Fix an issue with vim mode, where cursor would not be reset on exit :ghpull:`13472`
537 - Fix an issue with vim mode, where cursor would not be reset on exit :ghpull:`13472`
489
538
490 - ipython directive now remove only known pseudo-decorators :ghpull:`13532`
539 - ipython directive now remove only known pseudo-decorators :ghpull:`13532`
491
540
492 - ``IPython/lib/security`` which used to be used for jupyter notebook has been
541 - ``IPython/lib/security`` which used to be used for jupyter notebook has been
493 removed.
542 removed.
494
543
495 - Fix an issue where ``async with`` would execute on new lines. :ghpull:`13436`
544 - Fix an issue where ``async with`` would execute on new lines. :ghpull:`13436`
496
545
497
546
498 We want to remind users that IPython is part of the Jupyter organisations, and
547 We want to remind users that IPython is part of the Jupyter organisations, and
499 thus governed by a Code of Conduct. Some of the behavior we have seen on GitHub is not acceptable.
548 thus governed by a Code of Conduct. Some of the behavior we have seen on GitHub is not acceptable.
500 Abuse and non-respectful comments on discussion will not be tolerated.
549 Abuse and non-respectful comments on discussion will not be tolerated.
501
550
502 Many thanks to all the contributors to this release, many of the above fixed issues and
551 Many thanks to all the contributors to this release, many of the above fixed issues and
503 new features were done by first time contributors, showing there is still
552 new features were done by first time contributors, showing there is still
504 plenty of easy contribution possible in IPython
553 plenty of easy contribution possible in IPython
505 . You can find all individual contributions
554 . You can find all individual contributions
506 to this milestone `on github <https://github.com/ipython/ipython/milestone/91>`__.
555 to this milestone `on github <https://github.com/ipython/ipython/milestone/91>`__.
507
556
508 Thanks as well to the `D. E. Shaw group <https://deshaw.com/>`__ for sponsoring
557 Thanks as well to the `D. E. Shaw group <https://deshaw.com/>`__ for sponsoring
509 work on IPython and related libraries. In particular the Lazy autoloading of
558 work on IPython and related libraries. In particular the Lazy autoloading of
510 magics that you will find described in the 7.32 release notes.
559 magics that you will find described in the 7.32 release notes.
511
560
512
561
513 .. _version 8.0.1:
562 .. _version 8.0.1:
514
563
515 IPython 8.0.1 (CVE-2022-21699)
564 IPython 8.0.1 (CVE-2022-21699)
516 ------------------------------
565 ------------------------------
517
566
518 IPython 8.0.1, 7.31.1 and 5.11 are security releases that change some default
567 IPython 8.0.1, 7.31.1 and 5.11 are security releases that change some default
519 values in order to prevent potential Execution with Unnecessary Privileges.
568 values in order to prevent potential Execution with Unnecessary Privileges.
520
569
521 Almost all version of IPython looks for configuration and profiles in current
570 Almost all version of IPython looks for configuration and profiles in current
522 working directory. Since IPython was developed before pip and environments
571 working directory. Since IPython was developed before pip and environments
523 existed it was used a convenient way to load code/packages in a project
572 existed it was used a convenient way to load code/packages in a project
524 dependant way.
573 dependant way.
525
574
526 In 2022, it is not necessary anymore, and can lead to confusing behavior where
575 In 2022, it is not necessary anymore, and can lead to confusing behavior where
527 for example cloning a repository and starting IPython or loading a notebook from
576 for example cloning a repository and starting IPython or loading a notebook from
528 any Jupyter-Compatible interface that has ipython set as a kernel can lead to
577 any Jupyter-Compatible interface that has ipython set as a kernel can lead to
529 code execution.
578 code execution.
530
579
531
580
532 I did not find any standard way for packaged to advertise CVEs they fix, I'm
581 I did not find any standard way for packaged to advertise CVEs they fix, I'm
533 thus trying to add a ``__patched_cves__`` attribute to the IPython module that
582 thus trying to add a ``__patched_cves__`` attribute to the IPython module that
534 list the CVEs that should have been fixed. This attribute is informational only
583 list the CVEs that should have been fixed. This attribute is informational only
535 as if a executable has a flaw, this value can always be changed by an attacker.
584 as if a executable has a flaw, this value can always be changed by an attacker.
536
585
537 .. code::
586 .. code::
538
587
539 In [1]: import IPython
588 In [1]: import IPython
540
589
541 In [2]: IPython.__patched_cves__
590 In [2]: IPython.__patched_cves__
542 Out[2]: {'CVE-2022-21699'}
591 Out[2]: {'CVE-2022-21699'}
543
592
544 In [3]: 'CVE-2022-21699' in IPython.__patched_cves__
593 In [3]: 'CVE-2022-21699' in IPython.__patched_cves__
545 Out[3]: True
594 Out[3]: True
546
595
547 Thus starting with this version:
596 Thus starting with this version:
548
597
549 - The current working directory is not searched anymore for profiles or
598 - The current working directory is not searched anymore for profiles or
550 configurations files.
599 configurations files.
551 - Added a ``__patched_cves__`` attribute (set of strings) to IPython module that contain
600 - Added a ``__patched_cves__`` attribute (set of strings) to IPython module that contain
552 the list of fixed CVE. This is informational only.
601 the list of fixed CVE. This is informational only.
553
602
554 Further details can be read on the `GitHub Advisory <https://github.com/ipython/ipython/security/advisories/GHSA-pq7m-3gw7-gq5x>`__
603 Further details can be read on the `GitHub Advisory <https://github.com/ipython/ipython/security/advisories/GHSA-pq7m-3gw7-gq5x>`__
555
604
556
605
557 .. _version 8.0:
606 .. _version 8.0:
558
607
559 IPython 8.0
608 IPython 8.0
560 -----------
609 -----------
561
610
562 IPython 8.0 is bringing a large number of new features and improvements to both the
611 IPython 8.0 is bringing a large number of new features and improvements to both the
563 user of the terminal and of the kernel via Jupyter. The removal of compatibility
612 user of the terminal and of the kernel via Jupyter. The removal of compatibility
564 with an older version of Python is also the opportunity to do a couple of
613 with an older version of Python is also the opportunity to do a couple of
565 performance improvements in particular with respect to startup time.
614 performance improvements in particular with respect to startup time.
566 The 8.x branch started diverging from its predecessor around IPython 7.12
615 The 8.x branch started diverging from its predecessor around IPython 7.12
567 (January 2020).
616 (January 2020).
568
617
569 This release contains 250+ pull requests, in addition to many of the features
618 This release contains 250+ pull requests, in addition to many of the features
570 and backports that have made it to the 7.x branch. Please see the
619 and backports that have made it to the 7.x branch. Please see the
571 `8.0 milestone <https://github.com/ipython/ipython/milestone/73?closed=1>`__ for the full list of pull requests.
620 `8.0 milestone <https://github.com/ipython/ipython/milestone/73?closed=1>`__ for the full list of pull requests.
572
621
573 Please feel free to send pull requests to update those notes after release,
622 Please feel free to send pull requests to update those notes after release,
574 I have likely forgotten a few things reviewing 250+ PRs.
623 I have likely forgotten a few things reviewing 250+ PRs.
575
624
576 Dependencies changes/downstream packaging
625 Dependencies changes/downstream packaging
577 -----------------------------------------
626 -----------------------------------------
578
627
579 Most of our building steps have been changed to be (mostly) declarative
628 Most of our building steps have been changed to be (mostly) declarative
580 and follow PEP 517. We are trying to completely remove ``setup.py`` (:ghpull:`13238`) and are
629 and follow PEP 517. We are trying to completely remove ``setup.py`` (:ghpull:`13238`) and are
581 looking for help to do so.
630 looking for help to do so.
582
631
583 - minimum supported ``traitlets`` version is now 5+
632 - minimum supported ``traitlets`` version is now 5+
584 - we now require ``stack_data``
633 - we now require ``stack_data``
585 - minimal Python is now 3.8
634 - minimal Python is now 3.8
586 - ``nose`` is not a testing requirement anymore
635 - ``nose`` is not a testing requirement anymore
587 - ``pytest`` replaces nose.
636 - ``pytest`` replaces nose.
588 - ``iptest``/``iptest3`` cli entrypoints do not exist anymore.
637 - ``iptest``/``iptest3`` cli entrypoints do not exist anymore.
589 - the minimum officially ​supported ``numpy`` version has been bumped, but this should
638 - the minimum officially ​supported ``numpy`` version has been bumped, but this should
590 not have much effect on packaging.
639 not have much effect on packaging.
591
640
592
641
593 Deprecation and removal
642 Deprecation and removal
594 -----------------------
643 -----------------------
595
644
596 We removed almost all features, arguments, functions, and modules that were
645 We removed almost all features, arguments, functions, and modules that were
597 marked as deprecated between IPython 1.0 and 5.0. As a reminder, 5.0 was released
646 marked as deprecated between IPython 1.0 and 5.0. As a reminder, 5.0 was released
598 in 2016, and 1.0 in 2013. Last release of the 5 branch was 5.10.0, in May 2020.
647 in 2016, and 1.0 in 2013. Last release of the 5 branch was 5.10.0, in May 2020.
599 The few remaining deprecated features we left have better deprecation warnings
648 The few remaining deprecated features we left have better deprecation warnings
600 or have been turned into explicit errors for better error messages.
649 or have been turned into explicit errors for better error messages.
601
650
602 I will use this occasion to add the following requests to anyone emitting a
651 I will use this occasion to add the following requests to anyone emitting a
603 deprecation warning:
652 deprecation warning:
604
653
605 - Please add at least ``stacklevel=2`` so that the warning is emitted into the
654 - Please add at least ``stacklevel=2`` so that the warning is emitted into the
606 caller context, and not the callee one.
655 caller context, and not the callee one.
607 - Please add **since which version** something is deprecated.
656 - Please add **since which version** something is deprecated.
608
657
609 As a side note, it is much easier to conditionally compare version
658 As a side note, it is much easier to conditionally compare version
610 numbers rather than using ``try/except`` when functionality changes with a version.
659 numbers rather than using ``try/except`` when functionality changes with a version.
611
660
612 I won't list all the removed features here, but modules like ``IPython.kernel``,
661 I won't list all the removed features here, but modules like ``IPython.kernel``,
613 which was just a shim module around ``ipykernel`` for the past 8 years, have been
662 which was just a shim module around ``ipykernel`` for the past 8 years, have been
614 removed, and so many other similar things that pre-date the name **Jupyter**
663 removed, and so many other similar things that pre-date the name **Jupyter**
615 itself.
664 itself.
616
665
617 We no longer need to add ``IPython.extensions`` to the PYTHONPATH because that is being
666 We no longer need to add ``IPython.extensions`` to the PYTHONPATH because that is being
618 handled by ``load_extension``.
667 handled by ``load_extension``.
619
668
620 We are also removing ``Cythonmagic``, ``sympyprinting`` and ``rmagic`` as they are now in
669 We are also removing ``Cythonmagic``, ``sympyprinting`` and ``rmagic`` as they are now in
621 other packages and no longer need to be inside IPython.
670 other packages and no longer need to be inside IPython.
622
671
623
672
624 Documentation
673 Documentation
625 -------------
674 -------------
626
675
627 The majority of our docstrings have now been reformatted and automatically fixed by
676 The majority of our docstrings have now been reformatted and automatically fixed by
628 the experimental `Vélin <https://pypi.org/project/velin/>`_ project to conform
677 the experimental `Vélin <https://pypi.org/project/velin/>`_ project to conform
629 to numpydoc.
678 to numpydoc.
630
679
631 Type annotations
680 Type annotations
632 ----------------
681 ----------------
633
682
634 While IPython itself is highly dynamic and can't be completely typed, many of
683 While IPython itself is highly dynamic and can't be completely typed, many of
635 the functions now have type annotations, and part of the codebase is now checked
684 the functions now have type annotations, and part of the codebase is now checked
636 by mypy.
685 by mypy.
637
686
638
687
639 Featured changes
688 Featured changes
640 ----------------
689 ----------------
641
690
642 Here is a features list of changes in IPython 8.0. This is of course non-exhaustive.
691 Here is a features list of changes in IPython 8.0. This is of course non-exhaustive.
643 Please note as well that many features have been added in the 7.x branch as well
692 Please note as well that many features have been added in the 7.x branch as well
644 (and hence why you want to read the 7.x what's new notes), in particular
693 (and hence why you want to read the 7.x what's new notes), in particular
645 features contributed by QuantStack (with respect to debugger protocol and Xeus
694 features contributed by QuantStack (with respect to debugger protocol and Xeus
646 Python), as well as many debugger features that I was pleased to implement as
695 Python), as well as many debugger features that I was pleased to implement as
647 part of my work at QuanSight and sponsored by DE Shaw.
696 part of my work at QuanSight and sponsored by DE Shaw.
648
697
649 Traceback improvements
698 Traceback improvements
650 ~~~~~~~~~~~~~~~~~~~~~~
699 ~~~~~~~~~~~~~~~~~~~~~~
651
700
652 Previously, error tracebacks for errors happening in code cells were showing a
701 Previously, error tracebacks for errors happening in code cells were showing a
653 hash, the one used for compiling the Python AST::
702 hash, the one used for compiling the Python AST::
654
703
655 In [1]: def foo():
704 In [1]: def foo():
656 ...: return 3 / 0
705 ...: return 3 / 0
657 ...:
706 ...:
658
707
659 In [2]: foo()
708 In [2]: foo()
660 ---------------------------------------------------------------------------
709 ---------------------------------------------------------------------------
661 ZeroDivisionError Traceback (most recent call last)
710 ZeroDivisionError Traceback (most recent call last)
662 <ipython-input-2-c19b6d9633cf> in <module>
711 <ipython-input-2-c19b6d9633cf> in <module>
663 ----> 1 foo()
712 ----> 1 foo()
664
713
665 <ipython-input-1-1595a74c32d5> in foo()
714 <ipython-input-1-1595a74c32d5> in foo()
666 1 def foo():
715 1 def foo():
667 ----> 2 return 3 / 0
716 ----> 2 return 3 / 0
668 3
717 3
669
718
670 ZeroDivisionError: division by zero
719 ZeroDivisionError: division by zero
671
720
672 The error traceback is now correctly formatted, showing the cell number in which the error happened::
721 The error traceback is now correctly formatted, showing the cell number in which the error happened::
673
722
674 In [1]: def foo():
723 In [1]: def foo():
675 ...: return 3 / 0
724 ...: return 3 / 0
676 ...:
725 ...:
677
726
678 Input In [2]: foo()
727 Input In [2]: foo()
679 ---------------------------------------------------------------------------
728 ---------------------------------------------------------------------------
680 ZeroDivisionError Traceback (most recent call last)
729 ZeroDivisionError Traceback (most recent call last)
681 input In [2], in <module>
730 input In [2], in <module>
682 ----> 1 foo()
731 ----> 1 foo()
683
732
684 Input In [1], in foo()
733 Input In [1], in foo()
685 1 def foo():
734 1 def foo():
686 ----> 2 return 3 / 0
735 ----> 2 return 3 / 0
687
736
688 ZeroDivisionError: division by zero
737 ZeroDivisionError: division by zero
689
738
690 The ``stack_data`` package has been integrated, which provides smarter information in the traceback;
739 The ``stack_data`` package has been integrated, which provides smarter information in the traceback;
691 in particular it will highlight the AST node where an error occurs which can help to quickly narrow down errors.
740 in particular it will highlight the AST node where an error occurs which can help to quickly narrow down errors.
692
741
693 For example in the following snippet::
742 For example in the following snippet::
694
743
695 def foo(i):
744 def foo(i):
696 x = [[[0]]]
745 x = [[[0]]]
697 return x[0][i][0]
746 return x[0][i][0]
698
747
699
748
700 def bar():
749 def bar():
701 return foo(0) + foo(
750 return foo(0) + foo(
702 1
751 1
703 ) + foo(2)
752 ) + foo(2)
704
753
705
754
706 calling ``bar()`` would raise an ``IndexError`` on the return line of ``foo``,
755 calling ``bar()`` would raise an ``IndexError`` on the return line of ``foo``,
707 and IPython 8.0 is capable of telling you where the index error occurs::
756 and IPython 8.0 is capable of telling you where the index error occurs::
708
757
709
758
710 IndexError
759 IndexError
711 Input In [2], in <module>
760 Input In [2], in <module>
712 ----> 1 bar()
761 ----> 1 bar()
713 ^^^^^
762 ^^^^^
714
763
715 Input In [1], in bar()
764 Input In [1], in bar()
716 6 def bar():
765 6 def bar():
717 ----> 7 return foo(0) + foo(
766 ----> 7 return foo(0) + foo(
718 ^^^^
767 ^^^^
719 8 1
768 8 1
720 ^^^^^^^^
769 ^^^^^^^^
721 9 ) + foo(2)
770 9 ) + foo(2)
722 ^^^^
771 ^^^^
723
772
724 Input In [1], in foo(i)
773 Input In [1], in foo(i)
725 1 def foo(i):
774 1 def foo(i):
726 2 x = [[[0]]]
775 2 x = [[[0]]]
727 ----> 3 return x[0][i][0]
776 ----> 3 return x[0][i][0]
728 ^^^^^^^
777 ^^^^^^^
729
778
730 The corresponding locations marked here with ``^`` will show up highlighted in
779 The corresponding locations marked here with ``^`` will show up highlighted in
731 the terminal and notebooks.
780 the terminal and notebooks.
732
781
733 Finally, a colon ``::`` and line number is appended after a filename in
782 Finally, a colon ``::`` and line number is appended after a filename in
734 traceback::
783 traceback::
735
784
736
785
737 ZeroDivisionError Traceback (most recent call last)
786 ZeroDivisionError Traceback (most recent call last)
738 File ~/error.py:4, in <module>
787 File ~/error.py:4, in <module>
739 1 def f():
788 1 def f():
740 2 1/0
789 2 1/0
741 ----> 4 f()
790 ----> 4 f()
742
791
743 File ~/error.py:2, in f()
792 File ~/error.py:2, in f()
744 1 def f():
793 1 def f():
745 ----> 2 1/0
794 ----> 2 1/0
746
795
747 Many terminals and editors have integrations enabling you to directly jump to the
796 Many terminals and editors have integrations enabling you to directly jump to the
748 relevant file/line when this syntax is used, so this small addition may have a high
797 relevant file/line when this syntax is used, so this small addition may have a high
749 impact on productivity.
798 impact on productivity.
750
799
751
800
752 Autosuggestions
801 Autosuggestions
753 ~~~~~~~~~~~~~~~
802 ~~~~~~~~~~~~~~~
754
803
755 Autosuggestion is a very useful feature available in `fish <https://fishshell.com/>`__, `zsh <https://en.wikipedia.org/wiki/Z_shell>`__, and `prompt-toolkit <https://python-prompt-toolkit.readthedocs.io/en/master/pages/asking_for_input.html#auto-suggestion>`__.
804 Autosuggestion is a very useful feature available in `fish <https://fishshell.com/>`__, `zsh <https://en.wikipedia.org/wiki/Z_shell>`__, and `prompt-toolkit <https://python-prompt-toolkit.readthedocs.io/en/master/pages/asking_for_input.html#auto-suggestion>`__.
756
805
757 `Ptpython <https://github.com/prompt-toolkit/ptpython#ptpython>`__ allows users to enable this feature in
806 `Ptpython <https://github.com/prompt-toolkit/ptpython#ptpython>`__ allows users to enable this feature in
758 `ptpython/config.py <https://github.com/prompt-toolkit/ptpython/blob/master/examples/ptpython_config/config.py#L90>`__.
807 `ptpython/config.py <https://github.com/prompt-toolkit/ptpython/blob/master/examples/ptpython_config/config.py#L90>`__.
759
808
760 This feature allows users to accept autosuggestions with ctrl e, ctrl f,
809 This feature allows users to accept autosuggestions with ctrl e, ctrl f,
761 or right arrow as described below.
810 or right arrow as described below.
762
811
763 1. Start ipython
812 1. Start ipython
764
813
765 .. image:: ../_images/8.0/auto_suggest_1_prompt_no_text.png
814 .. image:: ../_images/8.0/auto_suggest_1_prompt_no_text.png
766
815
767 2. Run ``print("hello")``
816 2. Run ``print("hello")``
768
817
769 .. image:: ../_images/8.0/auto_suggest_2_print_hello_suggest.png
818 .. image:: ../_images/8.0/auto_suggest_2_print_hello_suggest.png
770
819
771 3. start typing ``print`` again to see the autosuggestion
820 3. start typing ``print`` again to see the autosuggestion
772
821
773 .. image:: ../_images/8.0/auto_suggest_3_print_hello_suggest.png
822 .. image:: ../_images/8.0/auto_suggest_3_print_hello_suggest.png
774
823
775 4. Press ``ctrl-f``, or ``ctrl-e``, or ``right-arrow`` to accept the suggestion
824 4. Press ``ctrl-f``, or ``ctrl-e``, or ``right-arrow`` to accept the suggestion
776
825
777 .. image:: ../_images/8.0/auto_suggest_4_print_hello.png
826 .. image:: ../_images/8.0/auto_suggest_4_print_hello.png
778
827
779 You can also complete word by word:
828 You can also complete word by word:
780
829
781 1. Run ``def say_hello(): print("hello")``
830 1. Run ``def say_hello(): print("hello")``
782
831
783 .. image:: ../_images/8.0/auto_suggest_second_prompt.png
832 .. image:: ../_images/8.0/auto_suggest_second_prompt.png
784
833
785 2. Start typing the first letter if ``def`` to see the autosuggestion
834 2. Start typing the first letter if ``def`` to see the autosuggestion
786
835
787 .. image:: ../_images/8.0/auto_suggest_d_phantom.png
836 .. image:: ../_images/8.0/auto_suggest_d_phantom.png
788
837
789 3. Press ``alt-f`` (or ``escape`` followed by ``f``), to accept the first word of the suggestion
838 3. Press ``alt-f`` (or ``escape`` followed by ``f``), to accept the first word of the suggestion
790
839
791 .. image:: ../_images/8.0/auto_suggest_def_phantom.png
840 .. image:: ../_images/8.0/auto_suggest_def_phantom.png
792
841
793 Importantly, this feature does not interfere with tab completion:
842 Importantly, this feature does not interfere with tab completion:
794
843
795 1. After running ``def say_hello(): print("hello")``, press d
844 1. After running ``def say_hello(): print("hello")``, press d
796
845
797 .. image:: ../_images/8.0/auto_suggest_d_phantom.png
846 .. image:: ../_images/8.0/auto_suggest_d_phantom.png
798
847
799 2. Press Tab to start tab completion
848 2. Press Tab to start tab completion
800
849
801 .. image:: ../_images/8.0/auto_suggest_d_completions.png
850 .. image:: ../_images/8.0/auto_suggest_d_completions.png
802
851
803 3A. Press Tab again to select the first option
852 3A. Press Tab again to select the first option
804
853
805 .. image:: ../_images/8.0/auto_suggest_def_completions.png
854 .. image:: ../_images/8.0/auto_suggest_def_completions.png
806
855
807 3B. Press ``alt f`` (``escape``, ``f``) to accept to accept the first word of the suggestion
856 3B. Press ``alt f`` (``escape``, ``f``) to accept to accept the first word of the suggestion
808
857
809 .. image:: ../_images/8.0/auto_suggest_def_phantom.png
858 .. image:: ../_images/8.0/auto_suggest_def_phantom.png
810
859
811 3C. Press ``ctrl-f`` or ``ctrl-e`` to accept the entire suggestion
860 3C. Press ``ctrl-f`` or ``ctrl-e`` to accept the entire suggestion
812
861
813 .. image:: ../_images/8.0/auto_suggest_match_parens.png
862 .. image:: ../_images/8.0/auto_suggest_match_parens.png
814
863
815
864
816 Currently, autosuggestions are only shown in the emacs or vi insert editing modes:
865 Currently, autosuggestions are only shown in the emacs or vi insert editing modes:
817
866
818 - The ctrl e, ctrl f, and alt f shortcuts work by default in emacs mode.
867 - The ctrl e, ctrl f, and alt f shortcuts work by default in emacs mode.
819 - To use these shortcuts in vi insert mode, you will have to create `custom keybindings in your config.py <https://github.com/mskar/setup/commit/2892fcee46f9f80ef7788f0749edc99daccc52f4/>`__.
868 - To use these shortcuts in vi insert mode, you will have to create `custom keybindings in your config.py <https://github.com/mskar/setup/commit/2892fcee46f9f80ef7788f0749edc99daccc52f4/>`__.
820
869
821
870
822 Show pinfo information in ipdb using "?" and "??"
871 Show pinfo information in ipdb using "?" and "??"
823 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
872 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
824
873
825 In IPDB, it is now possible to show the information about an object using "?"
874 In IPDB, it is now possible to show the information about an object using "?"
826 and "??", in much the same way that it can be done when using the IPython prompt::
875 and "??", in much the same way that it can be done when using the IPython prompt::
827
876
828 ipdb> partial?
877 ipdb> partial?
829 Init signature: partial(self, /, *args, **kwargs)
878 Init signature: partial(self, /, *args, **kwargs)
830 Docstring:
879 Docstring:
831 partial(func, *args, **keywords) - new function with partial application
880 partial(func, *args, **keywords) - new function with partial application
832 of the given arguments and keywords.
881 of the given arguments and keywords.
833 File: ~/.pyenv/versions/3.8.6/lib/python3.8/functools.py
882 File: ~/.pyenv/versions/3.8.6/lib/python3.8/functools.py
834 Type: type
883 Type: type
835 Subclasses:
884 Subclasses:
836
885
837 Previously, ``pinfo`` or ``pinfo2`` command had to be used for this purpose.
886 Previously, ``pinfo`` or ``pinfo2`` command had to be used for this purpose.
838
887
839
888
840 Autoreload 3 feature
889 Autoreload 3 feature
841 ~~~~~~~~~~~~~~~~~~~~
890 ~~~~~~~~~~~~~~~~~~~~
842
891
843 Example: When an IPython session is run with the 'autoreload' extension loaded,
892 Example: When an IPython session is run with the 'autoreload' extension loaded,
844 you will now have the option '3' to select, which means the following:
893 you will now have the option '3' to select, which means the following:
845
894
846 1. replicate all functionality from option 2
895 1. replicate all functionality from option 2
847 2. autoload all new funcs/classes/enums/globals from the module when they are added
896 2. autoload all new funcs/classes/enums/globals from the module when they are added
848 3. autoload all newly imported funcs/classes/enums/globals from external modules
897 3. autoload all newly imported funcs/classes/enums/globals from external modules
849
898
850 Try ``%autoreload 3`` in an IPython session after running ``%load_ext autoreload``.
899 Try ``%autoreload 3`` in an IPython session after running ``%load_ext autoreload``.
851
900
852 For more information please see the following unit test : ``extensions/tests/test_autoreload.py:test_autoload_newly_added_objects``
901 For more information please see the following unit test : ``extensions/tests/test_autoreload.py:test_autoload_newly_added_objects``
853
902
854 Auto formatting with black in the CLI
903 Auto formatting with black in the CLI
855 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
904 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
856
905
857 This feature was present in 7.x, but disabled by default.
906 This feature was present in 7.x, but disabled by default.
858
907
859 In 8.0, input was automatically reformatted with Black when black was installed.
908 In 8.0, input was automatically reformatted with Black when black was installed.
860 This feature has been reverted for the time being.
909 This feature has been reverted for the time being.
861 You can re-enable it by setting ``TerminalInteractiveShell.autoformatter`` to ``"black"``
910 You can re-enable it by setting ``TerminalInteractiveShell.autoformatter`` to ``"black"``
862
911
863 History Range Glob feature
912 History Range Glob feature
864 ~~~~~~~~~~~~~~~~~~~~~~~~~~
913 ~~~~~~~~~~~~~~~~~~~~~~~~~~
865
914
866 Previously, when using ``%history``, users could specify either
915 Previously, when using ``%history``, users could specify either
867 a range of sessions and lines, for example:
916 a range of sessions and lines, for example:
868
917
869 .. code-block:: python
918 .. code-block:: python
870
919
871 ~8/1-~6/5 # see history from the first line of 8 sessions ago,
920 ~8/1-~6/5 # see history from the first line of 8 sessions ago,
872 # to the fifth line of 6 sessions ago.``
921 # to the fifth line of 6 sessions ago.``
873
922
874 Or users could specify a glob pattern:
923 Or users could specify a glob pattern:
875
924
876 .. code-block:: python
925 .. code-block:: python
877
926
878 -g <pattern> # glob ALL history for the specified pattern.
927 -g <pattern> # glob ALL history for the specified pattern.
879
928
880 However users could *not* specify both.
929 However users could *not* specify both.
881
930
882 If a user *did* specify both a range and a glob pattern,
931 If a user *did* specify both a range and a glob pattern,
883 then the glob pattern would be used (globbing *all* history) *and the range would be ignored*.
932 then the glob pattern would be used (globbing *all* history) *and the range would be ignored*.
884
933
885 With this enhancement, if a user specifies both a range and a glob pattern, then the glob pattern will be applied to the specified range of history.
934 With this enhancement, if a user specifies both a range and a glob pattern, then the glob pattern will be applied to the specified range of history.
886
935
887 Don't start a multi-line cell with sunken parenthesis
936 Don't start a multi-line cell with sunken parenthesis
888 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
937 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
889
938
890 From now on, IPython will not ask for the next line of input when given a single
939 From now on, IPython will not ask for the next line of input when given a single
891 line with more closing than opening brackets. For example, this means that if
940 line with more closing than opening brackets. For example, this means that if
892 you (mis)type ``]]`` instead of ``[]``, a ``SyntaxError`` will show up, instead of
941 you (mis)type ``]]`` instead of ``[]``, a ``SyntaxError`` will show up, instead of
893 the ``...:`` prompt continuation.
942 the ``...:`` prompt continuation.
894
943
895 IPython shell for ipdb interact
944 IPython shell for ipdb interact
896 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
945 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
897
946
898 The ipdb ``interact`` starts an IPython shell instead of Python's built-in ``code.interact()``.
947 The ipdb ``interact`` starts an IPython shell instead of Python's built-in ``code.interact()``.
899
948
900 Automatic Vi prompt stripping
949 Automatic Vi prompt stripping
901 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
950 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
902
951
903 When pasting code into IPython, it will strip the leading prompt characters if
952 When pasting code into IPython, it will strip the leading prompt characters if
904 there are any. For example, you can paste the following code into the console -
953 there are any. For example, you can paste the following code into the console -
905 it will still work, even though each line is prefixed with prompts (``In``,
954 it will still work, even though each line is prefixed with prompts (``In``,
906 ``Out``)::
955 ``Out``)::
907
956
908 In [1]: 2 * 2 == 4
957 In [1]: 2 * 2 == 4
909 Out[1]: True
958 Out[1]: True
910
959
911 In [2]: print("This still works as pasted")
960 In [2]: print("This still works as pasted")
912
961
913
962
914 Previously, this was not the case for the Vi-mode prompts::
963 Previously, this was not the case for the Vi-mode prompts::
915
964
916 In [1]: [ins] In [13]: 2 * 2 == 4
965 In [1]: [ins] In [13]: 2 * 2 == 4
917 ...: Out[13]: True
966 ...: Out[13]: True
918 ...:
967 ...:
919 File "<ipython-input-1-727bb88eaf33>", line 1
968 File "<ipython-input-1-727bb88eaf33>", line 1
920 [ins] In [13]: 2 * 2 == 4
969 [ins] In [13]: 2 * 2 == 4
921 ^
970 ^
922 SyntaxError: invalid syntax
971 SyntaxError: invalid syntax
923
972
924 This is now fixed, and Vi prompt prefixes - ``[ins]`` and ``[nav]`` - are
973 This is now fixed, and Vi prompt prefixes - ``[ins]`` and ``[nav]`` - are
925 skipped just as the normal ``In`` would be.
974 skipped just as the normal ``In`` would be.
926
975
927 IPython shell can be started in the Vi mode using ``ipython --TerminalInteractiveShell.editing_mode=vi``,
976 IPython shell can be started in the Vi mode using ``ipython --TerminalInteractiveShell.editing_mode=vi``,
928 You should be able to change mode dynamically with ``%config TerminalInteractiveShell.editing_mode='vi'``
977 You should be able to change mode dynamically with ``%config TerminalInteractiveShell.editing_mode='vi'``
929
978
930 Empty History Ranges
979 Empty History Ranges
931 ~~~~~~~~~~~~~~~~~~~~
980 ~~~~~~~~~~~~~~~~~~~~
932
981
933 A number of magics that take history ranges can now be used with an empty
982 A number of magics that take history ranges can now be used with an empty
934 range. These magics are:
983 range. These magics are:
935
984
936 * ``%save``
985 * ``%save``
937 * ``%load``
986 * ``%load``
938 * ``%pastebin``
987 * ``%pastebin``
939 * ``%pycat``
988 * ``%pycat``
940
989
941 Using them this way will make them take the history of the current session up
990 Using them this way will make them take the history of the current session up
942 to the point of the magic call (such that the magic itself will not be
991 to the point of the magic call (such that the magic itself will not be
943 included).
992 included).
944
993
945 Therefore it is now possible to save the whole history to a file using
994 Therefore it is now possible to save the whole history to a file using
946 ``%save <filename>``, load and edit it using ``%load`` (makes for a nice usage
995 ``%save <filename>``, load and edit it using ``%load`` (makes for a nice usage
947 when followed with :kbd:`F2`), send it to `dpaste.org <http://dpast.org>`_ using
996 when followed with :kbd:`F2`), send it to `dpaste.org <http://dpast.org>`_ using
948 ``%pastebin``, or view the whole thing syntax-highlighted with a single
997 ``%pastebin``, or view the whole thing syntax-highlighted with a single
949 ``%pycat``.
998 ``%pycat``.
950
999
951
1000
952 Windows timing implementation: Switch to process_time
1001 Windows timing implementation: Switch to process_time
953 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
1002 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
954 Timing on Windows, for example with ``%%time``, was changed from being based on ``time.perf_counter``
1003 Timing on Windows, for example with ``%%time``, was changed from being based on ``time.perf_counter``
955 (which counted time even when the process was sleeping) to being based on ``time.process_time`` instead
1004 (which counted time even when the process was sleeping) to being based on ``time.process_time`` instead
956 (which only counts CPU time). This brings it closer to the behavior on Linux. See :ghpull:`12984`.
1005 (which only counts CPU time). This brings it closer to the behavior on Linux. See :ghpull:`12984`.
957
1006
958 Miscellaneous
1007 Miscellaneous
959 ~~~~~~~~~~~~~
1008 ~~~~~~~~~~~~~
960 - Non-text formatters are not disabled in the terminal, which should simplify
1009 - Non-text formatters are not disabled in the terminal, which should simplify
961 writing extensions displaying images or other mimetypes in supporting terminals.
1010 writing extensions displaying images or other mimetypes in supporting terminals.
962 :ghpull:`12315`
1011 :ghpull:`12315`
963 - It is now possible to automatically insert matching brackets in Terminal IPython using the
1012 - It is now possible to automatically insert matching brackets in Terminal IPython using the
964 ``TerminalInteractiveShell.auto_match=True`` option. :ghpull:`12586`
1013 ``TerminalInteractiveShell.auto_match=True`` option. :ghpull:`12586`
965 - We are thinking of deprecating the current ``%%javascript`` magic in favor of a better replacement. See :ghpull:`13376`.
1014 - We are thinking of deprecating the current ``%%javascript`` magic in favor of a better replacement. See :ghpull:`13376`.
966 - ``~`` is now expanded when part of a path in most magics :ghpull:`13385`
1015 - ``~`` is now expanded when part of a path in most magics :ghpull:`13385`
967 - ``%/%%timeit`` magic now adds a comma every thousands to make reading a long number easier :ghpull:`13379`
1016 - ``%/%%timeit`` magic now adds a comma every thousands to make reading a long number easier :ghpull:`13379`
968 - ``"info"`` messages can now be customised to hide some fields :ghpull:`13343`
1017 - ``"info"`` messages can now be customised to hide some fields :ghpull:`13343`
969 - ``collections.UserList`` now pretty-prints :ghpull:`13320`
1018 - ``collections.UserList`` now pretty-prints :ghpull:`13320`
970 - The debugger now has a persistent history, which should make it less
1019 - The debugger now has a persistent history, which should make it less
971 annoying to retype commands :ghpull:`13246`
1020 annoying to retype commands :ghpull:`13246`
972 - ``!pip`` ``!conda`` ``!cd`` or ``!ls`` are likely doing the wrong thing. We
1021 - ``!pip`` ``!conda`` ``!cd`` or ``!ls`` are likely doing the wrong thing. We
973 now warn users if they use one of those commands. :ghpull:`12954`
1022 now warn users if they use one of those commands. :ghpull:`12954`
974 - Make ``%precision`` work for ``numpy.float64`` type :ghpull:`12902`
1023 - Make ``%precision`` work for ``numpy.float64`` type :ghpull:`12902`
975
1024
976 Re-added support for XDG config directories
1025 Re-added support for XDG config directories
977 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
1026 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
978
1027
979 XDG support through the years comes and goes. There is a tension between having
1028 XDG support through the years comes and goes. There is a tension between having
980 an identical location for configuration in all platforms versus having simple instructions.
1029 an identical location for configuration in all platforms versus having simple instructions.
981 After initial failures a couple of years ago, IPython was modified to automatically migrate XDG
1030 After initial failures a couple of years ago, IPython was modified to automatically migrate XDG
982 config files back into ``~/.ipython``. That migration code has now been removed.
1031 config files back into ``~/.ipython``. That migration code has now been removed.
983 IPython now checks the XDG locations, so if you _manually_ move your config
1032 IPython now checks the XDG locations, so if you _manually_ move your config
984 files to your preferred location, IPython will not move them back.
1033 files to your preferred location, IPython will not move them back.
985
1034
986
1035
987 Preparing for Python 3.10
1036 Preparing for Python 3.10
988 -------------------------
1037 -------------------------
989
1038
990 To prepare for Python 3.10, we have started working on removing reliance and
1039 To prepare for Python 3.10, we have started working on removing reliance and
991 any dependency that is not compatible with Python 3.10. This includes migrating our
1040 any dependency that is not compatible with Python 3.10. This includes migrating our
992 test suite to pytest and starting to remove nose. This also means that the
1041 test suite to pytest and starting to remove nose. This also means that the
993 ``iptest`` command is now gone and all testing is via pytest.
1042 ``iptest`` command is now gone and all testing is via pytest.
994
1043
995 This was in large part thanks to the NumFOCUS Small Developer grant, which enabled us to
1044 This was in large part thanks to the NumFOCUS Small Developer grant, which enabled us to
996 allocate \$4000 to hire `Nikita Kniazev (@Kojoley) <https://github.com/Kojoley>`_,
1045 allocate \$4000 to hire `Nikita Kniazev (@Kojoley) <https://github.com/Kojoley>`_,
997 who did a fantastic job at updating our code base, migrating to pytest, pushing
1046 who did a fantastic job at updating our code base, migrating to pytest, pushing
998 our coverage, and fixing a large number of bugs. I highly recommend contacting
1047 our coverage, and fixing a large number of bugs. I highly recommend contacting
999 them if you need help with C++ and Python projects.
1048 them if you need help with C++ and Python projects.
1000
1049
1001 You can find all relevant issues and PRs with `the SDG 2021 tag <https://github.com/ipython/ipython/issues?q=label%3A%22Numfocus+SDG+2021%22+>`__
1050 You can find all relevant issues and PRs with `the SDG 2021 tag <https://github.com/ipython/ipython/issues?q=label%3A%22Numfocus+SDG+2021%22+>`__
1002
1051
1003 Removing support for older Python versions
1052 Removing support for older Python versions
1004 ------------------------------------------
1053 ------------------------------------------
1005
1054
1006
1055
1007 We are removing support for Python up through 3.7, allowing internal code to use the more
1056 We are removing support for Python up through 3.7, allowing internal code to use the more
1008 efficient ``pathlib`` and to make better use of type annotations.
1057 efficient ``pathlib`` and to make better use of type annotations.
1009
1058
1010 .. image:: ../_images/8.0/pathlib_pathlib_everywhere.jpg
1059 .. image:: ../_images/8.0/pathlib_pathlib_everywhere.jpg
1011 :alt: "Meme image of Toy Story with Woody and Buzz, with the text 'pathlib, pathlib everywhere'"
1060 :alt: "Meme image of Toy Story with Woody and Buzz, with the text 'pathlib, pathlib everywhere'"
1012
1061
1013
1062
1014 We had about 34 PRs only to update some logic to update some functions from managing strings to
1063 We had about 34 PRs only to update some logic to update some functions from managing strings to
1015 using Pathlib.
1064 using Pathlib.
1016
1065
1017 The completer has also seen significant updates and now makes use of newer Jedi APIs,
1066 The completer has also seen significant updates and now makes use of newer Jedi APIs,
1018 offering faster and more reliable tab completion.
1067 offering faster and more reliable tab completion.
1019
1068
1020 Misc Statistics
1069 Misc Statistics
1021 ---------------
1070 ---------------
1022
1071
1023 Here are some numbers::
1072 Here are some numbers::
1024
1073
1025 7.x: 296 files, 12561 blank lines, 20282 comments, 35142 line of code.
1074 7.x: 296 files, 12561 blank lines, 20282 comments, 35142 line of code.
1026 8.0: 252 files, 12053 blank lines, 19232 comments, 34505 line of code.
1075 8.0: 252 files, 12053 blank lines, 19232 comments, 34505 line of code.
1027
1076
1028 $ git diff --stat 7.x...master | tail -1
1077 $ git diff --stat 7.x...master | tail -1
1029 340 files changed, 13399 insertions(+), 12421 deletions(-)
1078 340 files changed, 13399 insertions(+), 12421 deletions(-)
1030
1079
1031 We have commits from 162 authors, who contributed 1916 commits in 23 month, excluding merges (to not bias toward
1080 We have commits from 162 authors, who contributed 1916 commits in 23 month, excluding merges (to not bias toward
1032 maintainers pushing buttons).::
1081 maintainers pushing buttons).::
1033
1082
1034 $ git shortlog -s --no-merges 7.x...master | sort -nr
1083 $ git shortlog -s --no-merges 7.x...master | sort -nr
1035 535 Matthias Bussonnier
1084 535 Matthias Bussonnier
1036 86 Nikita Kniazev
1085 86 Nikita Kniazev
1037 69 Blazej Michalik
1086 69 Blazej Michalik
1038 49 Samuel Gaist
1087 49 Samuel Gaist
1039 27 Itamar Turner-Trauring
1088 27 Itamar Turner-Trauring
1040 18 Spas Kalaydzhisyki
1089 18 Spas Kalaydzhisyki
1041 17 Thomas Kluyver
1090 17 Thomas Kluyver
1042 17 Quentin Peter
1091 17 Quentin Peter
1043 17 James Morris
1092 17 James Morris
1044 17 Artur Svistunov
1093 17 Artur Svistunov
1045 15 Bart Skowron
1094 15 Bart Skowron
1046 14 Alex Hall
1095 14 Alex Hall
1047 13 rushabh-v
1096 13 rushabh-v
1048 13 Terry Davis
1097 13 Terry Davis
1049 13 Benjamin Ragan-Kelley
1098 13 Benjamin Ragan-Kelley
1050 8 martinRenou
1099 8 martinRenou
1051 8 farisachugthai
1100 8 farisachugthai
1052 7 dswij
1101 7 dswij
1053 7 Gal B
1102 7 Gal B
1054 7 Corentin Cadiou
1103 7 Corentin Cadiou
1055 6 yuji96
1104 6 yuji96
1056 6 Martin Skarzynski
1105 6 Martin Skarzynski
1057 6 Justin Palmer
1106 6 Justin Palmer
1058 6 Daniel Goldfarb
1107 6 Daniel Goldfarb
1059 6 Ben Greiner
1108 6 Ben Greiner
1060 5 Sammy Al Hashemi
1109 5 Sammy Al Hashemi
1061 5 Paul Ivanov
1110 5 Paul Ivanov
1062 5 Inception95
1111 5 Inception95
1063 5 Eyenpi
1112 5 Eyenpi
1064 5 Douglas Blank
1113 5 Douglas Blank
1065 5 Coco Mishra
1114 5 Coco Mishra
1066 5 Bibo Hao
1115 5 Bibo Hao
1067 5 André A. Gomes
1116 5 André A. Gomes
1068 5 Ahmed Fasih
1117 5 Ahmed Fasih
1069 4 takuya fujiwara
1118 4 takuya fujiwara
1070 4 palewire
1119 4 palewire
1071 4 Thomas A Caswell
1120 4 Thomas A Caswell
1072 4 Talley Lambert
1121 4 Talley Lambert
1073 4 Scott Sanderson
1122 4 Scott Sanderson
1074 4 Ram Rachum
1123 4 Ram Rachum
1075 4 Nick Muoh
1124 4 Nick Muoh
1076 4 Nathan Goldbaum
1125 4 Nathan Goldbaum
1077 4 Mithil Poojary
1126 4 Mithil Poojary
1078 4 Michael T
1127 4 Michael T
1079 4 Jakub Klus
1128 4 Jakub Klus
1080 4 Ian Castleden
1129 4 Ian Castleden
1081 4 Eli Rykoff
1130 4 Eli Rykoff
1082 4 Ashwin Vishnu
1131 4 Ashwin Vishnu
1083 3 谭九鼎
1132 3 谭九鼎
1084 3 sleeping
1133 3 sleeping
1085 3 Sylvain Corlay
1134 3 Sylvain Corlay
1086 3 Peter Corke
1135 3 Peter Corke
1087 3 Paul Bissex
1136 3 Paul Bissex
1088 3 Matthew Feickert
1137 3 Matthew Feickert
1089 3 Fernando Perez
1138 3 Fernando Perez
1090 3 Eric Wieser
1139 3 Eric Wieser
1091 3 Daniel Mietchen
1140 3 Daniel Mietchen
1092 3 Aditya Sathe
1141 3 Aditya Sathe
1093 3 007vedant
1142 3 007vedant
1094 2 rchiodo
1143 2 rchiodo
1095 2 nicolaslazo
1144 2 nicolaslazo
1096 2 luttik
1145 2 luttik
1097 2 gorogoroumaru
1146 2 gorogoroumaru
1098 2 foobarbyte
1147 2 foobarbyte
1099 2 bar-hen
1148 2 bar-hen
1100 2 Theo Ouzhinski
1149 2 Theo Ouzhinski
1101 2 Strawkage
1150 2 Strawkage
1102 2 Samreen Zarroug
1151 2 Samreen Zarroug
1103 2 Pete Blois
1152 2 Pete Blois
1104 2 Meysam Azad
1153 2 Meysam Azad
1105 2 Matthieu Ancellin
1154 2 Matthieu Ancellin
1106 2 Mark Schmitz
1155 2 Mark Schmitz
1107 2 Maor Kleinberger
1156 2 Maor Kleinberger
1108 2 MRCWirtz
1157 2 MRCWirtz
1109 2 Lumir Balhar
1158 2 Lumir Balhar
1110 2 Julien Rabinow
1159 2 Julien Rabinow
1111 2 Juan Luis Cano Rodríguez
1160 2 Juan Luis Cano Rodríguez
1112 2 Joyce Er
1161 2 Joyce Er
1113 2 Jakub
1162 2 Jakub
1114 2 Faris A Chugthai
1163 2 Faris A Chugthai
1115 2 Ethan Madden
1164 2 Ethan Madden
1116 2 Dimitri Papadopoulos
1165 2 Dimitri Papadopoulos
1117 2 Diego Fernandez
1166 2 Diego Fernandez
1118 2 Daniel Shimon
1167 2 Daniel Shimon
1119 2 Coco Bennett
1168 2 Coco Bennett
1120 2 Carlos Cordoba
1169 2 Carlos Cordoba
1121 2 Boyuan Liu
1170 2 Boyuan Liu
1122 2 BaoGiang HoangVu
1171 2 BaoGiang HoangVu
1123 2 Augusto
1172 2 Augusto
1124 2 Arthur Svistunov
1173 2 Arthur Svistunov
1125 2 Arthur Moreira
1174 2 Arthur Moreira
1126 2 Ali Nabipour
1175 2 Ali Nabipour
1127 2 Adam Hackbarth
1176 2 Adam Hackbarth
1128 1 richard
1177 1 richard
1129 1 linar-jether
1178 1 linar-jether
1130 1 lbennett
1179 1 lbennett
1131 1 juacrumar
1180 1 juacrumar
1132 1 gpotter2
1181 1 gpotter2
1133 1 digitalvirtuoso
1182 1 digitalvirtuoso
1134 1 dalthviz
1183 1 dalthviz
1135 1 Yonatan Goldschmidt
1184 1 Yonatan Goldschmidt
1136 1 Tomasz Kłoczko
1185 1 Tomasz Kłoczko
1137 1 Tobias Bengfort
1186 1 Tobias Bengfort
1138 1 Timur Kushukov
1187 1 Timur Kushukov
1139 1 Thomas
1188 1 Thomas
1140 1 Snir Broshi
1189 1 Snir Broshi
1141 1 Shao Yang Hong
1190 1 Shao Yang Hong
1142 1 Sanjana-03
1191 1 Sanjana-03
1143 1 Romulo Filho
1192 1 Romulo Filho
1144 1 Rodolfo Carvalho
1193 1 Rodolfo Carvalho
1145 1 Richard Shadrach
1194 1 Richard Shadrach
1146 1 Reilly Tucker Siemens
1195 1 Reilly Tucker Siemens
1147 1 Rakessh Roshan
1196 1 Rakessh Roshan
1148 1 Piers Titus van der Torren
1197 1 Piers Titus van der Torren
1149 1 PhanatosZou
1198 1 PhanatosZou
1150 1 Pavel Safronov
1199 1 Pavel Safronov
1151 1 Paulo S. Costa
1200 1 Paulo S. Costa
1152 1 Paul McCarthy
1201 1 Paul McCarthy
1153 1 NotWearingPants
1202 1 NotWearingPants
1154 1 Naelson Douglas
1203 1 Naelson Douglas
1155 1 Michael Tiemann
1204 1 Michael Tiemann
1156 1 Matt Wozniski
1205 1 Matt Wozniski
1157 1 Markus Wageringel
1206 1 Markus Wageringel
1158 1 Marcus Wirtz
1207 1 Marcus Wirtz
1159 1 Marcio Mazza
1208 1 Marcio Mazza
1160 1 Lumír 'Frenzy' Balhar
1209 1 Lumír 'Frenzy' Balhar
1161 1 Lightyagami1
1210 1 Lightyagami1
1162 1 Leon Anavi
1211 1 Leon Anavi
1163 1 LeafyLi
1212 1 LeafyLi
1164 1 L0uisJ0shua
1213 1 L0uisJ0shua
1165 1 Kyle Cutler
1214 1 Kyle Cutler
1166 1 Krzysztof Cybulski
1215 1 Krzysztof Cybulski
1167 1 Kevin Kirsche
1216 1 Kevin Kirsche
1168 1 KIU Shueng Chuan
1217 1 KIU Shueng Chuan
1169 1 Jonathan Slenders
1218 1 Jonathan Slenders
1170 1 Jay Qi
1219 1 Jay Qi
1171 1 Jake VanderPlas
1220 1 Jake VanderPlas
1172 1 Iwan Briquemont
1221 1 Iwan Briquemont
1173 1 Hussaina Begum Nandyala
1222 1 Hussaina Begum Nandyala
1174 1 Gordon Ball
1223 1 Gordon Ball
1175 1 Gabriel Simonetto
1224 1 Gabriel Simonetto
1176 1 Frank Tobia
1225 1 Frank Tobia
1177 1 Erik
1226 1 Erik
1178 1 Elliott Sales de Andrade
1227 1 Elliott Sales de Andrade
1179 1 Daniel Hahler
1228 1 Daniel Hahler
1180 1 Dan Green-Leipciger
1229 1 Dan Green-Leipciger
1181 1 Dan Green
1230 1 Dan Green
1182 1 Damian Yurzola
1231 1 Damian Yurzola
1183 1 Coon, Ethan T
1232 1 Coon, Ethan T
1184 1 Carol Willing
1233 1 Carol Willing
1185 1 Brian Lee
1234 1 Brian Lee
1186 1 Brendan Gerrity
1235 1 Brendan Gerrity
1187 1 Blake Griffin
1236 1 Blake Griffin
1188 1 Bastian Ebeling
1237 1 Bastian Ebeling
1189 1 Bartosz Telenczuk
1238 1 Bartosz Telenczuk
1190 1 Ankitsingh6299
1239 1 Ankitsingh6299
1191 1 Andrew Port
1240 1 Andrew Port
1192 1 Andrew J. Hesford
1241 1 Andrew J. Hesford
1193 1 Albert Zhang
1242 1 Albert Zhang
1194 1 Adam Johnson
1243 1 Adam Johnson
1195
1244
1196 This does not, of course, represent non-code contributions, for which we are also grateful.
1245 This does not, of course, represent non-code contributions, for which we are also grateful.
1197
1246
1198
1247
1199 API Changes using Frappuccino
1248 API Changes using Frappuccino
1200 -----------------------------
1249 -----------------------------
1201
1250
1202 This is an experimental exhaustive API difference using `Frappuccino <https://pypi.org/project/frappuccino/>`_
1251 This is an experimental exhaustive API difference using `Frappuccino <https://pypi.org/project/frappuccino/>`_
1203
1252
1204
1253
1205 The following items are new in IPython 8.0 ::
1254 The following items are new in IPython 8.0 ::
1206
1255
1207 + IPython.core.async_helpers.get_asyncio_loop()
1256 + IPython.core.async_helpers.get_asyncio_loop()
1208 + IPython.core.completer.Dict
1257 + IPython.core.completer.Dict
1209 + IPython.core.completer.Pattern
1258 + IPython.core.completer.Pattern
1210 + IPython.core.completer.Sequence
1259 + IPython.core.completer.Sequence
1211 + IPython.core.completer.__skip_doctest__
1260 + IPython.core.completer.__skip_doctest__
1212 + IPython.core.debugger.Pdb.precmd(self, line)
1261 + IPython.core.debugger.Pdb.precmd(self, line)
1213 + IPython.core.debugger.__skip_doctest__
1262 + IPython.core.debugger.__skip_doctest__
1214 + IPython.core.display.__getattr__(name)
1263 + IPython.core.display.__getattr__(name)
1215 + IPython.core.display.warn
1264 + IPython.core.display.warn
1216 + IPython.core.display_functions
1265 + IPython.core.display_functions
1217 + IPython.core.display_functions.DisplayHandle
1266 + IPython.core.display_functions.DisplayHandle
1218 + IPython.core.display_functions.DisplayHandle.display(self, obj, **kwargs)
1267 + IPython.core.display_functions.DisplayHandle.display(self, obj, **kwargs)
1219 + IPython.core.display_functions.DisplayHandle.update(self, obj, **kwargs)
1268 + IPython.core.display_functions.DisplayHandle.update(self, obj, **kwargs)
1220 + IPython.core.display_functions.__all__
1269 + IPython.core.display_functions.__all__
1221 + IPython.core.display_functions.__builtins__
1270 + IPython.core.display_functions.__builtins__
1222 + IPython.core.display_functions.__cached__
1271 + IPython.core.display_functions.__cached__
1223 + IPython.core.display_functions.__doc__
1272 + IPython.core.display_functions.__doc__
1224 + IPython.core.display_functions.__file__
1273 + IPython.core.display_functions.__file__
1225 + IPython.core.display_functions.__loader__
1274 + IPython.core.display_functions.__loader__
1226 + IPython.core.display_functions.__name__
1275 + IPython.core.display_functions.__name__
1227 + IPython.core.display_functions.__package__
1276 + IPython.core.display_functions.__package__
1228 + IPython.core.display_functions.__spec__
1277 + IPython.core.display_functions.__spec__
1229 + IPython.core.display_functions.b2a_hex
1278 + IPython.core.display_functions.b2a_hex
1230 + IPython.core.display_functions.clear_output(wait=False)
1279 + IPython.core.display_functions.clear_output(wait=False)
1231 + IPython.core.display_functions.display(*objs, include='None', exclude='None', metadata='None', transient='None', display_id='None', raw=False, clear=False, **kwargs)
1280 + IPython.core.display_functions.display(*objs, include='None', exclude='None', metadata='None', transient='None', display_id='None', raw=False, clear=False, **kwargs)
1232 + IPython.core.display_functions.publish_display_data(data, metadata='None', source='<deprecated>', *, transient='None', **kwargs)
1281 + IPython.core.display_functions.publish_display_data(data, metadata='None', source='<deprecated>', *, transient='None', **kwargs)
1233 + IPython.core.display_functions.update_display(obj, *, display_id, **kwargs)
1282 + IPython.core.display_functions.update_display(obj, *, display_id, **kwargs)
1234 + IPython.core.extensions.BUILTINS_EXTS
1283 + IPython.core.extensions.BUILTINS_EXTS
1235 + IPython.core.inputtransformer2.has_sunken_brackets(tokens)
1284 + IPython.core.inputtransformer2.has_sunken_brackets(tokens)
1236 + IPython.core.interactiveshell.Callable
1285 + IPython.core.interactiveshell.Callable
1237 + IPython.core.interactiveshell.__annotations__
1286 + IPython.core.interactiveshell.__annotations__
1238 + IPython.core.ultratb.List
1287 + IPython.core.ultratb.List
1239 + IPython.core.ultratb.Tuple
1288 + IPython.core.ultratb.Tuple
1240 + IPython.lib.pretty.CallExpression
1289 + IPython.lib.pretty.CallExpression
1241 + IPython.lib.pretty.CallExpression.factory(name)
1290 + IPython.lib.pretty.CallExpression.factory(name)
1242 + IPython.lib.pretty.RawStringLiteral
1291 + IPython.lib.pretty.RawStringLiteral
1243 + IPython.lib.pretty.RawText
1292 + IPython.lib.pretty.RawText
1244 + IPython.terminal.debugger.TerminalPdb.do_interact(self, arg)
1293 + IPython.terminal.debugger.TerminalPdb.do_interact(self, arg)
1245 + IPython.terminal.embed.Set
1294 + IPython.terminal.embed.Set
1246
1295
1247 The following items have been removed (or moved to superclass)::
1296 The following items have been removed (or moved to superclass)::
1248
1297
1249 - IPython.core.application.BaseIPythonApplication.initialize_subcommand
1298 - IPython.core.application.BaseIPythonApplication.initialize_subcommand
1250 - IPython.core.completer.Sentinel
1299 - IPython.core.completer.Sentinel
1251 - IPython.core.completer.skip_doctest
1300 - IPython.core.completer.skip_doctest
1252 - IPython.core.debugger.Tracer
1301 - IPython.core.debugger.Tracer
1253 - IPython.core.display.DisplayHandle
1302 - IPython.core.display.DisplayHandle
1254 - IPython.core.display.DisplayHandle.display
1303 - IPython.core.display.DisplayHandle.display
1255 - IPython.core.display.DisplayHandle.update
1304 - IPython.core.display.DisplayHandle.update
1256 - IPython.core.display.b2a_hex
1305 - IPython.core.display.b2a_hex
1257 - IPython.core.display.clear_output
1306 - IPython.core.display.clear_output
1258 - IPython.core.display.display
1307 - IPython.core.display.display
1259 - IPython.core.display.publish_display_data
1308 - IPython.core.display.publish_display_data
1260 - IPython.core.display.update_display
1309 - IPython.core.display.update_display
1261 - IPython.core.excolors.Deprec
1310 - IPython.core.excolors.Deprec
1262 - IPython.core.excolors.ExceptionColors
1311 - IPython.core.excolors.ExceptionColors
1263 - IPython.core.history.warn
1312 - IPython.core.history.warn
1264 - IPython.core.hooks.late_startup_hook
1313 - IPython.core.hooks.late_startup_hook
1265 - IPython.core.hooks.pre_run_code_hook
1314 - IPython.core.hooks.pre_run_code_hook
1266 - IPython.core.hooks.shutdown_hook
1315 - IPython.core.hooks.shutdown_hook
1267 - IPython.core.interactiveshell.InteractiveShell.init_deprecation_warnings
1316 - IPython.core.interactiveshell.InteractiveShell.init_deprecation_warnings
1268 - IPython.core.interactiveshell.InteractiveShell.init_readline
1317 - IPython.core.interactiveshell.InteractiveShell.init_readline
1269 - IPython.core.interactiveshell.InteractiveShell.write
1318 - IPython.core.interactiveshell.InteractiveShell.write
1270 - IPython.core.interactiveshell.InteractiveShell.write_err
1319 - IPython.core.interactiveshell.InteractiveShell.write_err
1271 - IPython.core.interactiveshell.get_default_colors
1320 - IPython.core.interactiveshell.get_default_colors
1272 - IPython.core.interactiveshell.removed_co_newlocals
1321 - IPython.core.interactiveshell.removed_co_newlocals
1273 - IPython.core.magics.execution.ExecutionMagics.profile_missing_notice
1322 - IPython.core.magics.execution.ExecutionMagics.profile_missing_notice
1274 - IPython.core.magics.script.PIPE
1323 - IPython.core.magics.script.PIPE
1275 - IPython.core.prefilter.PrefilterManager.init_transformers
1324 - IPython.core.prefilter.PrefilterManager.init_transformers
1276 - IPython.core.release.classifiers
1325 - IPython.core.release.classifiers
1277 - IPython.core.release.description
1326 - IPython.core.release.description
1278 - IPython.core.release.keywords
1327 - IPython.core.release.keywords
1279 - IPython.core.release.long_description
1328 - IPython.core.release.long_description
1280 - IPython.core.release.name
1329 - IPython.core.release.name
1281 - IPython.core.release.platforms
1330 - IPython.core.release.platforms
1282 - IPython.core.release.url
1331 - IPython.core.release.url
1283 - IPython.core.ultratb.VerboseTB.format_records
1332 - IPython.core.ultratb.VerboseTB.format_records
1284 - IPython.core.ultratb.find_recursion
1333 - IPython.core.ultratb.find_recursion
1285 - IPython.core.ultratb.findsource
1334 - IPython.core.ultratb.findsource
1286 - IPython.core.ultratb.fix_frame_records_filenames
1335 - IPython.core.ultratb.fix_frame_records_filenames
1287 - IPython.core.ultratb.inspect_error
1336 - IPython.core.ultratb.inspect_error
1288 - IPython.core.ultratb.is_recursion_error
1337 - IPython.core.ultratb.is_recursion_error
1289 - IPython.core.ultratb.with_patch_inspect
1338 - IPython.core.ultratb.with_patch_inspect
1290 - IPython.external.__all__
1339 - IPython.external.__all__
1291 - IPython.external.__builtins__
1340 - IPython.external.__builtins__
1292 - IPython.external.__cached__
1341 - IPython.external.__cached__
1293 - IPython.external.__doc__
1342 - IPython.external.__doc__
1294 - IPython.external.__file__
1343 - IPython.external.__file__
1295 - IPython.external.__loader__
1344 - IPython.external.__loader__
1296 - IPython.external.__name__
1345 - IPython.external.__name__
1297 - IPython.external.__package__
1346 - IPython.external.__package__
1298 - IPython.external.__path__
1347 - IPython.external.__path__
1299 - IPython.external.__spec__
1348 - IPython.external.__spec__
1300 - IPython.kernel.KernelConnectionInfo
1349 - IPython.kernel.KernelConnectionInfo
1301 - IPython.kernel.__builtins__
1350 - IPython.kernel.__builtins__
1302 - IPython.kernel.__cached__
1351 - IPython.kernel.__cached__
1303 - IPython.kernel.__warningregistry__
1352 - IPython.kernel.__warningregistry__
1304 - IPython.kernel.pkg
1353 - IPython.kernel.pkg
1305 - IPython.kernel.protocol_version
1354 - IPython.kernel.protocol_version
1306 - IPython.kernel.protocol_version_info
1355 - IPython.kernel.protocol_version_info
1307 - IPython.kernel.src
1356 - IPython.kernel.src
1308 - IPython.kernel.version_info
1357 - IPython.kernel.version_info
1309 - IPython.kernel.warn
1358 - IPython.kernel.warn
1310 - IPython.lib.backgroundjobs
1359 - IPython.lib.backgroundjobs
1311 - IPython.lib.backgroundjobs.BackgroundJobBase
1360 - IPython.lib.backgroundjobs.BackgroundJobBase
1312 - IPython.lib.backgroundjobs.BackgroundJobBase.run
1361 - IPython.lib.backgroundjobs.BackgroundJobBase.run
1313 - IPython.lib.backgroundjobs.BackgroundJobBase.traceback
1362 - IPython.lib.backgroundjobs.BackgroundJobBase.traceback
1314 - IPython.lib.backgroundjobs.BackgroundJobExpr
1363 - IPython.lib.backgroundjobs.BackgroundJobExpr
1315 - IPython.lib.backgroundjobs.BackgroundJobExpr.call
1364 - IPython.lib.backgroundjobs.BackgroundJobExpr.call
1316 - IPython.lib.backgroundjobs.BackgroundJobFunc
1365 - IPython.lib.backgroundjobs.BackgroundJobFunc
1317 - IPython.lib.backgroundjobs.BackgroundJobFunc.call
1366 - IPython.lib.backgroundjobs.BackgroundJobFunc.call
1318 - IPython.lib.backgroundjobs.BackgroundJobManager
1367 - IPython.lib.backgroundjobs.BackgroundJobManager
1319 - IPython.lib.backgroundjobs.BackgroundJobManager.flush
1368 - IPython.lib.backgroundjobs.BackgroundJobManager.flush
1320 - IPython.lib.backgroundjobs.BackgroundJobManager.new
1369 - IPython.lib.backgroundjobs.BackgroundJobManager.new
1321 - IPython.lib.backgroundjobs.BackgroundJobManager.remove
1370 - IPython.lib.backgroundjobs.BackgroundJobManager.remove
1322 - IPython.lib.backgroundjobs.BackgroundJobManager.result
1371 - IPython.lib.backgroundjobs.BackgroundJobManager.result
1323 - IPython.lib.backgroundjobs.BackgroundJobManager.status
1372 - IPython.lib.backgroundjobs.BackgroundJobManager.status
1324 - IPython.lib.backgroundjobs.BackgroundJobManager.traceback
1373 - IPython.lib.backgroundjobs.BackgroundJobManager.traceback
1325 - IPython.lib.backgroundjobs.__builtins__
1374 - IPython.lib.backgroundjobs.__builtins__
1326 - IPython.lib.backgroundjobs.__cached__
1375 - IPython.lib.backgroundjobs.__cached__
1327 - IPython.lib.backgroundjobs.__doc__
1376 - IPython.lib.backgroundjobs.__doc__
1328 - IPython.lib.backgroundjobs.__file__
1377 - IPython.lib.backgroundjobs.__file__
1329 - IPython.lib.backgroundjobs.__loader__
1378 - IPython.lib.backgroundjobs.__loader__
1330 - IPython.lib.backgroundjobs.__name__
1379 - IPython.lib.backgroundjobs.__name__
1331 - IPython.lib.backgroundjobs.__package__
1380 - IPython.lib.backgroundjobs.__package__
1332 - IPython.lib.backgroundjobs.__spec__
1381 - IPython.lib.backgroundjobs.__spec__
1333 - IPython.lib.kernel.__builtins__
1382 - IPython.lib.kernel.__builtins__
1334 - IPython.lib.kernel.__cached__
1383 - IPython.lib.kernel.__cached__
1335 - IPython.lib.kernel.__doc__
1384 - IPython.lib.kernel.__doc__
1336 - IPython.lib.kernel.__file__
1385 - IPython.lib.kernel.__file__
1337 - IPython.lib.kernel.__loader__
1386 - IPython.lib.kernel.__loader__
1338 - IPython.lib.kernel.__name__
1387 - IPython.lib.kernel.__name__
1339 - IPython.lib.kernel.__package__
1388 - IPython.lib.kernel.__package__
1340 - IPython.lib.kernel.__spec__
1389 - IPython.lib.kernel.__spec__
1341 - IPython.lib.kernel.__warningregistry__
1390 - IPython.lib.kernel.__warningregistry__
1342 - IPython.paths.fs_encoding
1391 - IPython.paths.fs_encoding
1343 - IPython.terminal.debugger.DEFAULT_BUFFER
1392 - IPython.terminal.debugger.DEFAULT_BUFFER
1344 - IPython.terminal.debugger.cursor_in_leading_ws
1393 - IPython.terminal.debugger.cursor_in_leading_ws
1345 - IPython.terminal.debugger.emacs_insert_mode
1394 - IPython.terminal.debugger.emacs_insert_mode
1346 - IPython.terminal.debugger.has_selection
1395 - IPython.terminal.debugger.has_selection
1347 - IPython.terminal.debugger.vi_insert_mode
1396 - IPython.terminal.debugger.vi_insert_mode
1348 - IPython.terminal.interactiveshell.DISPLAY_BANNER_DEPRECATED
1397 - IPython.terminal.interactiveshell.DISPLAY_BANNER_DEPRECATED
1349 - IPython.terminal.ipapp.TerminalIPythonApp.parse_command_line
1398 - IPython.terminal.ipapp.TerminalIPythonApp.parse_command_line
1350 - IPython.testing.test
1399 - IPython.testing.test
1351 - IPython.utils.contexts.NoOpContext
1400 - IPython.utils.contexts.NoOpContext
1352 - IPython.utils.io.IOStream
1401 - IPython.utils.io.IOStream
1353 - IPython.utils.io.IOStream.close
1402 - IPython.utils.io.IOStream.close
1354 - IPython.utils.io.IOStream.write
1403 - IPython.utils.io.IOStream.write
1355 - IPython.utils.io.IOStream.writelines
1404 - IPython.utils.io.IOStream.writelines
1356 - IPython.utils.io.__warningregistry__
1405 - IPython.utils.io.__warningregistry__
1357 - IPython.utils.io.atomic_writing
1406 - IPython.utils.io.atomic_writing
1358 - IPython.utils.io.stderr
1407 - IPython.utils.io.stderr
1359 - IPython.utils.io.stdin
1408 - IPython.utils.io.stdin
1360 - IPython.utils.io.stdout
1409 - IPython.utils.io.stdout
1361 - IPython.utils.io.unicode_std_stream
1410 - IPython.utils.io.unicode_std_stream
1362 - IPython.utils.path.get_ipython_cache_dir
1411 - IPython.utils.path.get_ipython_cache_dir
1363 - IPython.utils.path.get_ipython_dir
1412 - IPython.utils.path.get_ipython_dir
1364 - IPython.utils.path.get_ipython_module_path
1413 - IPython.utils.path.get_ipython_module_path
1365 - IPython.utils.path.get_ipython_package_dir
1414 - IPython.utils.path.get_ipython_package_dir
1366 - IPython.utils.path.locate_profile
1415 - IPython.utils.path.locate_profile
1367 - IPython.utils.path.unquote_filename
1416 - IPython.utils.path.unquote_filename
1368 - IPython.utils.py3compat.PY2
1417 - IPython.utils.py3compat.PY2
1369 - IPython.utils.py3compat.PY3
1418 - IPython.utils.py3compat.PY3
1370 - IPython.utils.py3compat.buffer_to_bytes
1419 - IPython.utils.py3compat.buffer_to_bytes
1371 - IPython.utils.py3compat.builtin_mod_name
1420 - IPython.utils.py3compat.builtin_mod_name
1372 - IPython.utils.py3compat.cast_bytes
1421 - IPython.utils.py3compat.cast_bytes
1373 - IPython.utils.py3compat.getcwd
1422 - IPython.utils.py3compat.getcwd
1374 - IPython.utils.py3compat.isidentifier
1423 - IPython.utils.py3compat.isidentifier
1375 - IPython.utils.py3compat.u_format
1424 - IPython.utils.py3compat.u_format
1376
1425
1377 The following signatures differ between 7.x and 8.0::
1426 The following signatures differ between 7.x and 8.0::
1378
1427
1379 - IPython.core.completer.IPCompleter.unicode_name_matches(self, text)
1428 - IPython.core.completer.IPCompleter.unicode_name_matches(self, text)
1380 + IPython.core.completer.IPCompleter.unicode_name_matches(text)
1429 + IPython.core.completer.IPCompleter.unicode_name_matches(text)
1381
1430
1382 - IPython.core.completer.match_dict_keys(keys, prefix, delims)
1431 - IPython.core.completer.match_dict_keys(keys, prefix, delims)
1383 + IPython.core.completer.match_dict_keys(keys, prefix, delims, extra_prefix='None')
1432 + IPython.core.completer.match_dict_keys(keys, prefix, delims, extra_prefix='None')
1384
1433
1385 - IPython.core.interactiveshell.InteractiveShell.object_inspect_mime(self, oname, detail_level=0)
1434 - IPython.core.interactiveshell.InteractiveShell.object_inspect_mime(self, oname, detail_level=0)
1386 + IPython.core.interactiveshell.InteractiveShell.object_inspect_mime(self, oname, detail_level=0, omit_sections='()')
1435 + IPython.core.interactiveshell.InteractiveShell.object_inspect_mime(self, oname, detail_level=0, omit_sections='()')
1387
1436
1388 - IPython.core.interactiveshell.InteractiveShell.set_hook(self, name, hook, priority=50, str_key='None', re_key='None', _warn_deprecated=True)
1437 - IPython.core.interactiveshell.InteractiveShell.set_hook(self, name, hook, priority=50, str_key='None', re_key='None', _warn_deprecated=True)
1389 + IPython.core.interactiveshell.InteractiveShell.set_hook(self, name, hook, priority=50, str_key='None', re_key='None')
1438 + IPython.core.interactiveshell.InteractiveShell.set_hook(self, name, hook, priority=50, str_key='None', re_key='None')
1390
1439
1391 - IPython.core.oinspect.Inspector.info(self, obj, oname='', formatter='None', info='None', detail_level=0)
1440 - IPython.core.oinspect.Inspector.info(self, obj, oname='', formatter='None', info='None', detail_level=0)
1392 + IPython.core.oinspect.Inspector.info(self, obj, oname='', info='None', detail_level=0)
1441 + IPython.core.oinspect.Inspector.info(self, obj, oname='', info='None', detail_level=0)
1393
1442
1394 - IPython.core.oinspect.Inspector.pinfo(self, obj, oname='', formatter='None', info='None', detail_level=0, enable_html_pager=True)
1443 - IPython.core.oinspect.Inspector.pinfo(self, obj, oname='', formatter='None', info='None', detail_level=0, enable_html_pager=True)
1395 + IPython.core.oinspect.Inspector.pinfo(self, obj, oname='', formatter='None', info='None', detail_level=0, enable_html_pager=True, omit_sections='()')
1444 + IPython.core.oinspect.Inspector.pinfo(self, obj, oname='', formatter='None', info='None', detail_level=0, enable_html_pager=True, omit_sections='()')
1396
1445
1397 - IPython.core.profiledir.ProfileDir.copy_config_file(self, config_file, path='None', overwrite=False)
1446 - IPython.core.profiledir.ProfileDir.copy_config_file(self, config_file, path='None', overwrite=False)
1398 + IPython.core.profiledir.ProfileDir.copy_config_file(self, config_file, path, overwrite=False)
1447 + IPython.core.profiledir.ProfileDir.copy_config_file(self, config_file, path, overwrite=False)
1399
1448
1400 - IPython.core.ultratb.VerboseTB.format_record(self, frame, file, lnum, func, lines, index)
1449 - IPython.core.ultratb.VerboseTB.format_record(self, frame, file, lnum, func, lines, index)
1401 + IPython.core.ultratb.VerboseTB.format_record(self, frame_info)
1450 + IPython.core.ultratb.VerboseTB.format_record(self, frame_info)
1402
1451
1403 - IPython.terminal.embed.InteractiveShellEmbed.mainloop(self, local_ns='None', module='None', stack_depth=0, display_banner='None', global_ns='None', compile_flags='None')
1452 - IPython.terminal.embed.InteractiveShellEmbed.mainloop(self, local_ns='None', module='None', stack_depth=0, display_banner='None', global_ns='None', compile_flags='None')
1404 + IPython.terminal.embed.InteractiveShellEmbed.mainloop(self, local_ns='None', module='None', stack_depth=0, compile_flags='None')
1453 + IPython.terminal.embed.InteractiveShellEmbed.mainloop(self, local_ns='None', module='None', stack_depth=0, compile_flags='None')
1405
1454
1406 - IPython.terminal.embed.embed(**kwargs)
1455 - IPython.terminal.embed.embed(**kwargs)
1407 + IPython.terminal.embed.embed(*, header='', compile_flags='None', **kwargs)
1456 + IPython.terminal.embed.embed(*, header='', compile_flags='None', **kwargs)
1408
1457
1409 - IPython.terminal.interactiveshell.TerminalInteractiveShell.interact(self, display_banner='<object object at 0xffffff>')
1458 - IPython.terminal.interactiveshell.TerminalInteractiveShell.interact(self, display_banner='<object object at 0xffffff>')
1410 + IPython.terminal.interactiveshell.TerminalInteractiveShell.interact(self)
1459 + IPython.terminal.interactiveshell.TerminalInteractiveShell.interact(self)
1411
1460
1412 - IPython.terminal.interactiveshell.TerminalInteractiveShell.mainloop(self, display_banner='<object object at 0xffffff>')
1461 - IPython.terminal.interactiveshell.TerminalInteractiveShell.mainloop(self, display_banner='<object object at 0xffffff>')
1413 + IPython.terminal.interactiveshell.TerminalInteractiveShell.mainloop(self)
1462 + IPython.terminal.interactiveshell.TerminalInteractiveShell.mainloop(self)
1414
1463
1415 - IPython.utils.path.get_py_filename(name, force_win32='None')
1464 - IPython.utils.path.get_py_filename(name, force_win32='None')
1416 + IPython.utils.path.get_py_filename(name)
1465 + IPython.utils.path.get_py_filename(name)
1417
1466
1418 The following are new attributes (that might be inherited)::
1467 The following are new attributes (that might be inherited)::
1419
1468
1420 + IPython.core.completer.IPCompleter.unicode_names
1469 + IPython.core.completer.IPCompleter.unicode_names
1421 + IPython.core.debugger.InterruptiblePdb.precmd
1470 + IPython.core.debugger.InterruptiblePdb.precmd
1422 + IPython.core.debugger.Pdb.precmd
1471 + IPython.core.debugger.Pdb.precmd
1423 + IPython.core.ultratb.AutoFormattedTB.has_colors
1472 + IPython.core.ultratb.AutoFormattedTB.has_colors
1424 + IPython.core.ultratb.ColorTB.has_colors
1473 + IPython.core.ultratb.ColorTB.has_colors
1425 + IPython.core.ultratb.FormattedTB.has_colors
1474 + IPython.core.ultratb.FormattedTB.has_colors
1426 + IPython.core.ultratb.ListTB.has_colors
1475 + IPython.core.ultratb.ListTB.has_colors
1427 + IPython.core.ultratb.SyntaxTB.has_colors
1476 + IPython.core.ultratb.SyntaxTB.has_colors
1428 + IPython.core.ultratb.TBTools.has_colors
1477 + IPython.core.ultratb.TBTools.has_colors
1429 + IPython.core.ultratb.VerboseTB.has_colors
1478 + IPython.core.ultratb.VerboseTB.has_colors
1430 + IPython.terminal.debugger.TerminalPdb.do_interact
1479 + IPython.terminal.debugger.TerminalPdb.do_interact
1431 + IPython.terminal.debugger.TerminalPdb.precmd
1480 + IPython.terminal.debugger.TerminalPdb.precmd
1432
1481
1433 The following attribute/methods have been removed::
1482 The following attribute/methods have been removed::
1434
1483
1435 - IPython.core.application.BaseIPythonApplication.deprecated_subcommands
1484 - IPython.core.application.BaseIPythonApplication.deprecated_subcommands
1436 - IPython.core.ultratb.AutoFormattedTB.format_records
1485 - IPython.core.ultratb.AutoFormattedTB.format_records
1437 - IPython.core.ultratb.ColorTB.format_records
1486 - IPython.core.ultratb.ColorTB.format_records
1438 - IPython.core.ultratb.FormattedTB.format_records
1487 - IPython.core.ultratb.FormattedTB.format_records
1439 - IPython.terminal.embed.InteractiveShellEmbed.init_deprecation_warnings
1488 - IPython.terminal.embed.InteractiveShellEmbed.init_deprecation_warnings
1440 - IPython.terminal.embed.InteractiveShellEmbed.init_readline
1489 - IPython.terminal.embed.InteractiveShellEmbed.init_readline
1441 - IPython.terminal.embed.InteractiveShellEmbed.write
1490 - IPython.terminal.embed.InteractiveShellEmbed.write
1442 - IPython.terminal.embed.InteractiveShellEmbed.write_err
1491 - IPython.terminal.embed.InteractiveShellEmbed.write_err
1443 - IPython.terminal.interactiveshell.TerminalInteractiveShell.init_deprecation_warnings
1492 - IPython.terminal.interactiveshell.TerminalInteractiveShell.init_deprecation_warnings
1444 - IPython.terminal.interactiveshell.TerminalInteractiveShell.init_readline
1493 - IPython.terminal.interactiveshell.TerminalInteractiveShell.init_readline
1445 - IPython.terminal.interactiveshell.TerminalInteractiveShell.write
1494 - IPython.terminal.interactiveshell.TerminalInteractiveShell.write
1446 - IPython.terminal.interactiveshell.TerminalInteractiveShell.write_err
1495 - IPython.terminal.interactiveshell.TerminalInteractiveShell.write_err
1447 - IPython.terminal.ipapp.LocateIPythonApp.deprecated_subcommands
1496 - IPython.terminal.ipapp.LocateIPythonApp.deprecated_subcommands
1448 - IPython.terminal.ipapp.LocateIPythonApp.initialize_subcommand
1497 - IPython.terminal.ipapp.LocateIPythonApp.initialize_subcommand
1449 - IPython.terminal.ipapp.TerminalIPythonApp.deprecated_subcommands
1498 - IPython.terminal.ipapp.TerminalIPythonApp.deprecated_subcommands
1450 - IPython.terminal.ipapp.TerminalIPythonApp.initialize_subcommand
1499 - IPython.terminal.ipapp.TerminalIPythonApp.initialize_subcommand
1 NO CONTENT: file was removed
NO CONTENT: file was removed
1 NO CONTENT: file was removed
NO CONTENT: file was removed
General Comments 0
You need to be logged in to leave comments. Login now