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