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