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