##// END OF EJS Templates
some updates on 8.0
Matthias Bussonnier -
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