##// END OF EJS Templates
misc wn updates
Matthias Bussonnier -
Show More
@@ -1,181 +1,220 b''
1 =====================
1 =====================
2 Development version
2 Development version
3 =====================
3 =====================
4
4
5 This document describes in-flight development work.
5 This document describes in-flight development work.
6
6
7 .. warning::
7 .. warning::
8
8
9 Please do not edit this file by hand (doing so will likely cause merge
9 Please do not edit this file by hand (doing so will likely cause merge
10 conflicts for other Pull Requests). Instead, create a new file in the
10 conflicts for other Pull Requests). Instead, create a new file in the
11 `docs/source/whatsnew/pr` folder
11 `docs/source/whatsnew/pr` folder
12
12
13
13
14 Released .... ...., 2019
14 Released .... ...., 2019
15
15
16
16
17 Need to be updated:
17 Need to be updated:
18
18
19 .. toctree::
19 .. toctree::
20 :maxdepth: 2
20 :maxdepth: 2
21 :glob:
21 :glob:
22
22
23 pr/*
23 pr/*
24
24
25 IPython 8.0 is bringing a number of new features and improvements to both the
25 IPython 8.0 is bringing a large number of new features and improvements to both the
26 user of the terminal and of the kernel via Jupyter. The removal of compatibility
26 user of the terminal and of the kernel via Jupyter. The removal of compatibility
27 with older version of Python is also the opportunity to do a couple of
27 with older version of Python is also the opportunity to do a couple of
28 performance improvement in particular with respect to startup time.
28 performance improvement in particular with respect to startup time.
29
29
30 The main change in IPython 8.0 is the integration of the ``stack_data`` package;
30 This release contains 250+ Pull requests, in addition to many of the features
31 and backports that have made it to the 7.x branch.
32
33 We removed almost all features, arguments, functions, and modules that were
34 marked as deprecated between IPython 1.0 and 5.0 and before. As reminder 5.0 was
35 released in 2016, and 1.0 in 2013. Last release of the 5 branch was 5.10.0, in
36 may 2020. The few remaining deprecated features have better deprecation warnings
37 or errors.
38
39 There are many change in IPython 8.0 will will try to describe subsequently,
40
41
42 The first on is the integration of the ``stack_data`` package;
31 which provide smarter information in traceback; in particular it will highlight
43 which provide smarter information in traceback; in particular it will highlight
32 the AST node where an error occurs which can help to quickly narrow down errors.
44 the AST node where an error occurs which can help to quickly narrow down errors.
33
45
34 For example in the following snippet::
46 For example in the following snippet::
35
47
36 def foo(i):
48 def foo(i):
37 x = [[[0]]]
49 x = [[[0]]]
38 return x[0][i][0]
50 return x[0][i][0]
39
51
40
52
41 def bar():
53 def bar():
42 return foo(0) + foo(
54 return foo(0) + foo(
43 1
55 1
44 ) + foo(2)
56 ) + foo(2)
45
57
46
58
47 Calling ``bar()`` would raise an ``IndexError`` on the return line of ``foo``,
59 Calling ``bar()`` would raise an ``IndexError`` on the return line of ``foo``,
48 IPython 8.0 is capable of telling you, where the index error occurs::
60 IPython 8.0 is capable of telling you, where the index error occurs::
49
61
50 return x[0][i][0]
62 return x[0][i][0]
51 ^
63 ^
52
64
65
66 Numfocus Small Developer Grant
67 ------------------------------
68
53 To prepare for Python 3.10 we have also started working on removing reliance and
69 To prepare for Python 3.10 we have also started working on removing reliance and
54 any dependency that is not Python 3.10 compatible; that include migrating our
70 any dependency that is not Python 3.10 compatible; that include migrating our
55 test suite to Pytest, and starting to remove nose.
71 test suite to pytest, and starting to remove nose. This also mean that the
72 ``iptest`` command is now gone, and all testing is via pytest.
73
74 This was in bog part thanks the NumFOCUS Small Developer grant, we were able to
75 allocate 4000 to hire `Nikita Kniazev @Kojoley <https://github.com/Kojoley>`__
76 who did a fantastic job at updating our code base, migrating to pytest, pushing
77 our coverage, and fixing a large number of bugs. I highly recommend contacting
78 them if you need help with C++ and Python projects
56
79
57 We are also removing support for Python 3.6 allowing internal code to use more
80 You can find all relevant issues and PRs with the SDG 2021 tag:
81
82 https://github.com/ipython/ipython/issues?q=label%3A%22Numfocus+SDG+2021%22+
83
84 Removing support for Older Python
85 ---------------------------------
86
87
88 We are also removing support for Python up to 3.7 allowing internal code to use more
58 efficient ``pathlib``, and make better use of type annotations.
89 efficient ``pathlib``, and make better use of type annotations.
59
90
91 IMAGE : Pathlib, pathlib everywhere.
92
60 The completer has also seen significant updates and make use of newer Jedi API
93 The completer has also seen significant updates and make use of newer Jedi API
61 offering faster and more reliable tab completion.
94 offering faster and more reliable tab completion.
62
95
63 For the terminal users this also enable the auto-suggestion feature, described
96 For the terminal users this also enable the auto-suggestion feature, described
64 below, which show "ghost text" ahead of your cursor you can accept without
97 below, which show "ghost text" ahead of your cursor you can accept without
65 having to press the tab key or ask the completer to suggest completions.
98 having to press the tab key or ask the completer to suggest completions.
66
99
67
100
68 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>`__.
101 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>`__.
69
102
70 `Ptpython <https://github.com/prompt-toolkit/ptpython#ptpython>`__ allows users to enable this feature in
103 `Ptpython <https://github.com/prompt-toolkit/ptpython#ptpython>`__ allows users to enable this feature in
71 `ptpython/config.py <https://github.com/prompt-toolkit/ptpython/blob/master/examples/ptpython_config/config.py#L90>`__.
104 `ptpython/config.py <https://github.com/prompt-toolkit/ptpython/blob/master/examples/ptpython_config/config.py#L90>`__.
72
105
73 This feature allows users to accept autosuggestions with ctrl e, ctrl f,
106 This feature allows users to accept autosuggestions with ctrl e, ctrl f,
74 or right arrow as described below.
107 or right arrow as described below.
75
108
76 1. Start ipython
109 1. Start ipython
77
110
78 .. image:: ../_images/auto_suggest_prompt_no_text.png
111 .. image:: ../_images/auto_suggest_prompt_no_text.png
79
112
80 2. Run ``print("hello")``
113 2. Run ``print("hello")``
81
114
82 .. image:: ../_images/auto_suggest_print_hello_suggest.png
115 .. image:: ../_images/auto_suggest_print_hello_suggest.png
83
116
84 3. Press p to see the autosuggestion
117 3. Press p to see the autosuggestion
85
118
86 .. image:: ../_images/auto_suggest_print_hello_suggest.png
119 .. image:: ../_images/auto_suggest_print_hello_suggest.png
87
120
88 4. Press ctrl f, or ctrl e, or right arrow to accept the suggestion
121 4. Press ctrl f, or ctrl e, or right arrow to accept the suggestion
89
122
90 .. image:: ../_images/auto_suggest_print_hello.png
123 .. image:: ../_images/auto_suggest_print_hello.png
91
124
92 You can also complete word by word:
125 You can also complete word by word:
93
126
94 1. Run ``def say_hello(): print("hello")``
127 1. Run ``def say_hello(): print("hello")``
95
128
96 .. image:: ../_images/auto_suggest_second_prompt.png
129 .. image:: ../_images/auto_suggest_second_prompt.png
97
130
98 2. Press d to see the autosuggestion
131 2. Press d to see the autosuggestion
99
132
100 .. image:: ../_images/audo_suggest_d_phantom.png
133 .. image:: ../_images/audo_suggest_d_phantom.png
101
134
102 3. Press alt f to accept the first word of the suggestion
135 3. Press alt f to accept the first word of the suggestion
103
136
104 .. image:: ../_images/auto_suggest_def_phantom.png
137 .. image:: ../_images/auto_suggest_def_phantom.png
105
138
106 Importantly, this feature does not interfere with tab completion:
139 Importantly, this feature does not interfere with tab completion:
107
140
108 1. After running ``def say_hello(): print("hello")``, press d
141 1. After running ``def say_hello(): print("hello")``, press d
109
142
110 .. image:: ../_images/audo_suggest_d_phantom.png
143 .. image:: ../_images/audo_suggest_d_phantom.png
111
144
112 2. Press Tab to start tab completion
145 2. Press Tab to start tab completion
113
146
114 .. image:: ../_images/auto_suggest_d_completions.png
147 .. image:: ../_images/auto_suggest_d_completions.png
115
148
116 3A. Press Tab again to select the first option
149 3A. Press Tab again to select the first option
117
150
118 .. image:: ../_images/auto_suggest_def_completions.png
151 .. image:: ../_images/auto_suggest_def_completions.png
119
152
120 3B. Press alt f to accept to accept the first word of the suggestion
153 3B. Press alt f to accept to accept the first word of the suggestion
121
154
122 .. image:: ../_images/auto_suggest_def_phantom.png
155 .. image:: ../_images/auto_suggest_def_phantom.png
123
156
124 3C. Press ctrl f or ctrl e to accept the entire suggestion
157 3C. Press ctrl f or ctrl e to accept the entire suggestion
125
158
126 .. image:: ../_images/auto_suggest_match_parens.png
159 .. image:: ../_images/auto_suggest_match_parens.png
127
160
128 To install a version of ipython with autosuggestions enabled, run:
161 To install a version of ipython with autosuggestions enabled, run:
129
162
130 ``pip install git+https://github.com/mskar/ipython@auto_suggest``
163 ``pip install git+https://github.com/mskar/ipython@auto_suggest``
131
164
132 Currently, autosuggestions are only shown in the emacs or vi insert editing modes:
165 Currently, autosuggestions are only shown in the emacs or vi insert editing modes:
133
166
134 - The ctrl e, ctrl f, and alt f shortcuts work by default in emacs mode.
167 - The ctrl e, ctrl f, and alt f shortcuts work by default in emacs mode.
135 - 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/>`__.
168 - 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/>`__.
136
169
137
170
138 Show pinfo information in ipdb using "?" and "??"
171 Show pinfo information in ipdb using "?" and "??"
139 -------------------------------------------------
172 -------------------------------------------------
140
173
141 In IPDB, it is now possible to show the information about an object using "?"
174 In IPDB, it is now possible to show the information about an object using "?"
142 and "??", in much the same way it can be done when using the IPython prompt::
175 and "??", in much the same way it can be done when using the IPython prompt::
143
176
144 ipdb> partial?
177 ipdb> partial?
145 Init signature: partial(self, /, *args, **kwargs)
178 Init signature: partial(self, /, *args, **kwargs)
146 Docstring:
179 Docstring:
147 partial(func, *args, **keywords) - new function with partial application
180 partial(func, *args, **keywords) - new function with partial application
148 of the given arguments and keywords.
181 of the given arguments and keywords.
149 File: ~/.pyenv/versions/3.8.6/lib/python3.8/functools.py
182 File: ~/.pyenv/versions/3.8.6/lib/python3.8/functools.py
150 Type: type
183 Type: type
151 Subclasses:
184 Subclasses:
152
185
153 Previously, "pinfo" or "pinfo2" command had to be used for this purpose.
186 Previously, "pinfo" or "pinfo2" command had to be used for this purpose.
154
187
155
188
156 Autoreload 3 feature
189 Autoreload 3 feature
157 ====================
190 ====================
158
191
159 Example: When an IPython session is ran with the 'autoreload' extension loaded,
192 Example: When an IPython session is ran with the 'autoreload' extension loaded,
160 you will now have the option '3' to select which means the following:
193 you will now have the option '3' to select which means the following:
161
194
162 1. replicate all functionality from option 2
195 1. replicate all functionality from option 2
163 2. autoload all new funcs/classes/enums/globals from the module when they're added
196 2. autoload all new funcs/classes/enums/globals from the module when they're added
164 3. autoload all newly imported funcs/classes/enums/globals from external modules
197 3. autoload all newly imported funcs/classes/enums/globals from external modules
165
198
166 Try ``%autoreload 3`` in an IPython session after running ``%load_ext autoreload``
199 Try ``%autoreload 3`` in an IPython session after running ``%load_ext autoreload``
167
200
168 For more information please see unit test -
201 For more information please see unit test -
169 extensions/tests/test_autoreload.py : 'test_autoload_newly_added_objects'
202 extensions/tests/test_autoreload.py : 'test_autoload_newly_added_objects'
170
203
204
205 Miscelanious
206 ------------
207
208 Minimum supported
209
171 =======
210 =======
172
211
173 .. DO NOT EDIT THIS LINE BEFORE RELEASE. FEATURE INSERTION POINT.
212 .. DO NOT EDIT THIS LINE BEFORE RELEASE. FEATURE INSERTION POINT.
174
213
175 As a reminder, IPython master has diverged from the 7.x branch, thus master may
214 As a reminder, IPython master has diverged from the 7.x branch, thus master may
176 have more feature and API changes.
215 have more feature and API changes.
177
216
178 Backwards incompatible changes
217 Backwards incompatible changes
179 ------------------------------
218 ------------------------------
180
219
181 .. DO NOT EDIT THIS LINE BEFORE RELEASE. INCOMPAT INSERTION POINT.
220 .. DO NOT EDIT THIS LINE BEFORE RELEASE. INCOMPAT INSERTION POINT.
General Comments 0
You need to be logged in to leave comments. Login now