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