Show More
@@ -1,104 +1,145 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 | |||
|
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 | |||
|
28 | performance improvement in particular with respect to startup time. | |||
|
29 | ||||
|
30 | The main change in IPython 8.0 is the integration of the ``stack_data`` package; | |||
|
31 | 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. | |||
|
33 | ||||
|
34 | For example in the following snippet:: | |||
|
35 | ||||
|
36 | def foo(i): | |||
|
37 | x = [[[0]]] | |||
|
38 | return x[0][i][0] | |||
|
39 | ||||
|
40 | ||||
|
41 | def bar(): | |||
|
42 | return foo(0) + foo( | |||
|
43 | 1 | |||
|
44 | ) + foo(2) | |||
|
45 | ||||
|
46 | ||||
|
47 | 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:: | |||
|
49 | ||||
|
50 | return x[0][i][0] | |||
|
51 | ^ | |||
|
52 | ||||
|
53 | 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 | |||
|
55 | test suite to Pytest, and starting to remove nose. | |||
|
56 | ||||
|
57 | We are also removing support for Python 3.6 allowing internal code to use more | |||
|
58 | efficient ``pathlib``, and make better use of type annotations. | |||
|
59 | ||||
|
60 | The completer has also seen significant updates and make use of newer Jedi API | |||
|
61 | offering faster and more reliable tab completion. | |||
|
62 | ||||
|
63 | 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 | |||
|
65 | having to press the tab key or ask the completer to suggest completions. | |||
25 |
|
66 | |||
26 |
|
67 | |||
27 | 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>`__. |
|
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>`__. | |
28 |
|
69 | |||
29 | `Ptpython <https://github.com/prompt-toolkit/ptpython#ptpython>`__ allows users to enable this feature in |
|
70 | `Ptpython <https://github.com/prompt-toolkit/ptpython#ptpython>`__ allows users to enable this feature in | |
30 | `ptpython/config.py <https://github.com/prompt-toolkit/ptpython/blob/master/examples/ptpython_config/config.py#L90>`__. |
|
71 | `ptpython/config.py <https://github.com/prompt-toolkit/ptpython/blob/master/examples/ptpython_config/config.py#L90>`__. | |
31 |
|
72 | |||
32 | This feature allows users to accept autosuggestions with ctrl e, ctrl f, |
|
73 | This feature allows users to accept autosuggestions with ctrl e, ctrl f, | |
33 | or right arrow as described below. |
|
74 | or right arrow as described below. | |
34 |
|
75 | |||
35 | 1. Start ipython |
|
76 | 1. Start ipython | |
36 |
|
77 | |||
37 | .. image:: ../_images/auto_suggest_prompt_no_text.png |
|
78 | .. image:: ../_images/auto_suggest_prompt_no_text.png | |
38 |
|
79 | |||
39 | 2. Run ``print("hello")`` |
|
80 | 2. Run ``print("hello")`` | |
40 |
|
81 | |||
41 | .. image:: ../_images/auto_suggest_print_hello_suggest.png |
|
82 | .. image:: ../_images/auto_suggest_print_hello_suggest.png | |
42 |
|
83 | |||
43 | 3. Press p to see the autosuggestion |
|
84 | 3. Press p to see the autosuggestion | |
44 |
|
85 | |||
45 | .. image:: ../_images/auto_suggest_print_hello_suggest.png |
|
86 | .. image:: ../_images/auto_suggest_print_hello_suggest.png | |
46 |
|
87 | |||
47 | 4. Press ctrl f, or ctrl e, or right arrow to accept the suggestion |
|
88 | 4. Press ctrl f, or ctrl e, or right arrow to accept the suggestion | |
48 |
|
89 | |||
49 | .. image:: ../_images/auto_suggest_print_hello.png |
|
90 | .. image:: ../_images/auto_suggest_print_hello.png | |
50 |
|
91 | |||
51 | You can also complete word by word: |
|
92 | You can also complete word by word: | |
52 |
|
93 | |||
53 | 1. Run ``def say_hello(): print("hello")`` |
|
94 | 1. Run ``def say_hello(): print("hello")`` | |
54 |
|
95 | |||
55 | .. image:: ../_images/auto_suggest_second_prompt.png |
|
96 | .. image:: ../_images/auto_suggest_second_prompt.png | |
56 |
|
97 | |||
57 | 2. Press d to see the autosuggestion |
|
98 | 2. Press d to see the autosuggestion | |
58 |
|
99 | |||
59 | .. image:: ../_images/audo_suggest_d_phantom.png |
|
100 | .. image:: ../_images/audo_suggest_d_phantom.png | |
60 |
|
101 | |||
61 | 3. Press alt f to accept the first word of the suggestion |
|
102 | 3. Press alt f to accept the first word of the suggestion | |
62 |
|
103 | |||
63 | .. image:: ../_images/auto_suggest_def_phantom.png |
|
104 | .. image:: ../_images/auto_suggest_def_phantom.png | |
64 |
|
105 | |||
65 | Importantly, this feature does not interfere with tab completion: |
|
106 | Importantly, this feature does not interfere with tab completion: | |
66 |
|
107 | |||
67 | 1. After running ``def say_hello(): print("hello")``, press d |
|
108 | 1. After running ``def say_hello(): print("hello")``, press d | |
68 |
|
109 | |||
69 | .. image:: ../_images/audo_suggest_d_phantom.png |
|
110 | .. image:: ../_images/audo_suggest_d_phantom.png | |
70 |
|
111 | |||
71 | 2. Press Tab to start tab completion |
|
112 | 2. Press Tab to start tab completion | |
72 |
|
113 | |||
73 | .. image:: ../_images/auto_suggest_d_completions.png |
|
114 | .. image:: ../_images/auto_suggest_d_completions.png | |
74 |
|
115 | |||
75 | 3A. Press Tab again to select the first option |
|
116 | 3A. Press Tab again to select the first option | |
76 |
|
117 | |||
77 | .. image:: ../_images/auto_suggest_def_completions.png |
|
118 | .. image:: ../_images/auto_suggest_def_completions.png | |
78 |
|
119 | |||
79 | 3B. Press alt f to accept to accept the first word of the suggestion |
|
120 | 3B. Press alt f to accept to accept the first word of the suggestion | |
80 |
|
121 | |||
81 | .. image:: ../_images/auto_suggest_def_phantom.png |
|
122 | .. image:: ../_images/auto_suggest_def_phantom.png | |
82 |
|
123 | |||
83 | 3C. Press ctrl f or ctrl e to accept the entire suggestion |
|
124 | 3C. Press ctrl f or ctrl e to accept the entire suggestion | |
84 |
|
125 | |||
85 | .. image:: ../_images/auto_suggest_match_parens.png |
|
126 | .. image:: ../_images/auto_suggest_match_parens.png | |
86 |
|
127 | |||
87 | To install a version of ipython with autosuggestions enabled, run: |
|
128 | To install a version of ipython with autosuggestions enabled, run: | |
88 |
|
129 | |||
89 | ``pip install git+https://github.com/mskar/ipython@auto_suggest`` |
|
130 | ``pip install git+https://github.com/mskar/ipython@auto_suggest`` | |
90 |
|
131 | |||
91 | Currently, autosuggestions are only shown in the emacs or vi insert editing modes: |
|
132 | Currently, autosuggestions are only shown in the emacs or vi insert editing modes: | |
92 |
|
133 | |||
93 | - The ctrl e, ctrl f, and alt f shortcuts work by default in emacs mode. |
|
134 | - The ctrl e, ctrl f, and alt f shortcuts work by default in emacs mode. | |
94 | - 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/>`__. |
|
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/>`__. | |
95 |
|
136 | |||
96 | .. DO NOT EDIT THIS LINE BEFORE RELEASE. FEATURE INSERTION POINT. |
|
137 | .. DO NOT EDIT THIS LINE BEFORE RELEASE. FEATURE INSERTION POINT. | |
97 |
|
138 | |||
98 | As a reminder, IPython master has diverged from the 7.x branch, thus master may |
|
139 | As a reminder, IPython master has diverged from the 7.x branch, thus master may | |
99 | have more feature and API changes. |
|
140 | have more feature and API changes. | |
100 |
|
141 | |||
101 | Backwards incompatible changes |
|
142 | Backwards incompatible changes | |
102 | ------------------------------ |
|
143 | ------------------------------ | |
103 |
|
144 | |||
104 | .. DO NOT EDIT THIS LINE BEFORE RELEASE. INCOMPAT INSERTION POINT. |
|
145 | .. DO NOT EDIT THIS LINE BEFORE RELEASE. INCOMPAT INSERTION POINT. |
General Comments 0
You need to be logged in to leave comments.
Login now