Show More
@@ -3,9 +3,9 b' language: python' | |||
|
3 | 3 | python: |
|
4 | 4 | - "nightly" |
|
5 | 5 | - "3.7-dev" |
|
6 | - 3.7 | |
|
6 | 7 | - 3.6 |
|
7 | 8 | - 3.5 |
|
8 | - 3.4 | |
|
9 | 9 | sudo: false |
|
10 | 10 | env: |
|
11 | 11 | global: |
@@ -27,12 +27,12 b' import sys' | |||
|
27 | 27 | #----------------------------------------------------------------------------- |
|
28 | 28 | |
|
29 | 29 | # Don't forget to also update setup.py when this changes! |
|
30 |
if sys.version_info < (3, |
|
|
30 | if sys.version_info < (3, 5): | |
|
31 | 31 | raise ImportError( |
|
32 | 32 | """ |
|
33 |
IPython 7.0+ supports Python 3. |
|
|
33 | IPython 7.0+ supports Python 3.5 and above. | |
|
34 | 34 | When using Python 2.7, please install IPython 5.x LTS Long Term Support version. |
|
35 |
Python 3.3 |
|
|
35 | Python 3.3 and 3.4 were supported up to IPython 6.x. | |
|
36 | 36 | |
|
37 | 37 | See IPython `README.rst` file for more information: |
|
38 | 38 |
@@ -34,112 +34,6 b' You should be able to update by using:' | |||
|
34 | 34 | |
|
35 | 35 | pip install ipython --upgrade |
|
36 | 36 | |
|
37 | New completion API and Interface | |
|
38 | -------------------------------- | |
|
39 | ||
|
40 | The completer Completion API has seen an overhaul, and the new completer have | |
|
41 | plenty of improvement both from the end users of terminal IPython or for | |
|
42 | consumers of the API. | |
|
43 | ||
|
44 | This new API is capable of pulling completions from :any:`jedi`, thus allowing | |
|
45 | type inference on non-executed code. If :any:`jedi` is installed completion like | |
|
46 | the following are now becoming possible without code evaluation: | |
|
47 | ||
|
48 | >>> data = ['Number of users', 123_456] | |
|
49 | ... data[0].<tab> | |
|
50 | ||
|
51 | That is to say, IPython is now capable of inferring that `data[0]` is a string, | |
|
52 | and will suggest completions like `.capitalize`. The completion power of IPython | |
|
53 | will increase with new Jedi releases, and a number of bugs and more completions | |
|
54 | are already available on development version of :any:`jedi` if you are curious. | |
|
55 | ||
|
56 | With the help of prompt toolkit, types of completions can be shown in the | |
|
57 | completer interface: | |
|
58 | ||
|
59 | .. image:: ../_images/jedi_type_inference_60.png | |
|
60 | :alt: Jedi showing ability to do type inference | |
|
61 | :align: center | |
|
62 | :width: 400px | |
|
63 | :target: ../_images/jedi_type_inference_60.png | |
|
64 | ||
|
65 | The appearance of the completer is controlled by the | |
|
66 | ``c.TerminalInteractiveShell.display_completions`` option that will show the | |
|
67 | type differently depending on the value among ``'column'``, ``'multicolumn'`` | |
|
68 | and ``'readlinelike'`` | |
|
69 | ||
|
70 | The use of Jedi also full fill a number of request and fix a number of bugs | |
|
71 | like case insensitive completion, completion after division operator: See | |
|
72 | :ghpull:`10182`. | |
|
73 | ||
|
74 | Extra patches and updates will be needed to the :mod:`ipykernel` package for | |
|
75 | this feature to be available to other clients like jupyter Notebook, Lab, | |
|
76 | Nteract, Hydrogen... | |
|
77 | ||
|
78 | The use of Jedi can is barely noticeable on recent enough machines, but can be | |
|
79 | feel on older ones, in cases were Jedi behavior need to be adjusted, the amount | |
|
80 | of time given to Jedi to compute type inference can be adjusted with | |
|
81 | ``c.IPCompleter.jedi_compute_type_timeout``, with object whose type were not | |
|
82 | inferred will be shown as ``<unknown>``. Jedi can also be completely deactivated | |
|
83 | by using the ``c.Completer.use_jedi=False`` option. | |
|
84 | ||
|
85 | ||
|
86 | The old ``Completer.complete()`` API is waiting deprecation and should be | |
|
87 | replaced replaced by ``Completer.completions()`` in a near future. Feedback on | |
|
88 | the current state of the API and suggestions welcome. | |
|
89 | ||
|
90 | Python 3 only codebase | |
|
91 | ---------------------- | |
|
92 | ||
|
93 | One of the large challenges in IPython 6.0 has been the adoption of a pure | |
|
94 | Python 3 code base, which lead us to great length to upstream patches in pip, | |
|
95 | pypi and warehouse to make sure Python 2 system still upgrade to the latest | |
|
96 | compatible Python version compatible. | |
|
97 | ||
|
98 | We remind our Python 2 users that IPython 5 is still compatible with Python 2.7, | |
|
99 | still maintained and get regular releases. Using pip 9+, upgrading IPython will | |
|
100 | automatically upgrade to the latest version compatible with your system. | |
|
101 | ||
|
102 | .. warning:: | |
|
103 | ||
|
104 | If you are on a system using an older verison of pip on Python 2, pip may | |
|
105 | still install IPython 6.0 on your system, and IPython will refuse to start. | |
|
106 | You can fix this by ugrading pip, and reinstalling ipython, or forcing pip to | |
|
107 | install an earlier version: ``pip install 'ipython<6'`` | |
|
108 | ||
|
109 | The ability to use only Python 3 on the code base of IPython has bring a number | |
|
110 | of advantage. Most of the newly written code make use of `optional function type | |
|
111 | anotation <https://www.python.org/dev/peps/pep-0484/>`_ leading to clearer code | |
|
112 | and better documentation. | |
|
113 | ||
|
114 | The total size of the repository has also for a first time between releases | |
|
115 | (excluding the big split for 4.0) decreased by about 1500 lines, potentially | |
|
116 | quite a bit more codewide as some documents like this one are append only and | |
|
117 | are about 300 lines long. | |
|
118 | ||
|
119 | The removal as of Python2/Python3 shim layer has made the code quite clearer and | |
|
120 | more idiomatic in a number of location, and much friendlier to work with and | |
|
121 | understand. We hope to further embrace Python 3 capability in the next release | |
|
122 | cycle and introduce more of the Python 3 only idioms (yield from, kwarg only, | |
|
123 | general unpacking) in the code base of IPython, and see if we can take advantage | |
|
124 | of these as well to improve user experience with better error messages and | |
|
125 | hints. | |
|
126 | ||
|
127 | ||
|
128 | Miscs improvements | |
|
129 | ------------------ | |
|
130 | ||
|
131 | ||
|
132 | - The :cellmagic:`capture` magic can now capture the result of a cell (from an | |
|
133 | expression on the last line), as well as printed and displayed output. | |
|
134 | :ghpull:`9851`. | |
|
135 | ||
|
136 | - Pressing Ctrl-Z in the terminal debugger now suspends IPython, as it already | |
|
137 | does in the main terminal prompt. | |
|
138 | ||
|
139 | - autoreload can now reload ``Enum``. See :ghissue:`10232` and :ghpull:`10316` | |
|
140 | ||
|
141 | - IPython.display has gained a :any:`GeoJSON <IPython.display.GeoJSON>` object. | |
|
142 | :ghpull:`10288` and :ghpull:`10253` | |
|
143 | 37 | |
|
144 | 38 | .. DO NOT EDIT THIS LINE BEFORE RELEASE. FEATURE INSERTION POINT. |
|
145 | 39 |
@@ -26,7 +26,7 b' import sys' | |||
|
26 | 26 | # |
|
27 | 27 | # This check is also made in IPython/__init__, don't forget to update both when |
|
28 | 28 | # changing Python version requirements. |
|
29 |
if sys.version_info < (3, |
|
|
29 | if sys.version_info < (3, 5): | |
|
30 | 30 | pip_message = 'This may be due to an out of date pip. Make sure you have pip >= 9.0.1.' |
|
31 | 31 | try: |
|
32 | 32 | import pip |
@@ -42,9 +42,9 b' if sys.version_info < (3, 4):' | |||
|
42 | 42 | |
|
43 | 43 | |
|
44 | 44 | error = """ |
|
45 |
IPython 7.0+ supports Python 3. |
|
|
45 | IPython 7.0+ supports Python 3.5 and above. | |
|
46 | 46 | When using Python 2.7, please install IPython 5.x LTS Long Term Support version. |
|
47 |
Python 3.3 |
|
|
47 | Python 3.3 and 3.4 were supported up to IPython 6.x. | |
|
48 | 48 | |
|
49 | 49 | See IPython `README.rst` file for more information: |
|
50 | 50 | |
@@ -201,7 +201,6 b' install_requires = [' | |||
|
201 | 201 | |
|
202 | 202 | extras_require.update({ |
|
203 | 203 | ':python_version == "3.4"': ['typing'], |
|
204 | ':python_version >= "3.5"': ['trio', 'curio'], | |
|
205 | 204 | ':sys_platform != "win32"': ['pexpect'], |
|
206 | 205 | ':sys_platform == "darwin"': ['appnope'], |
|
207 | 206 | ':sys_platform == "win32"': ['colorama'], |
@@ -231,7 +230,7 b' for key, deps in extras_require.items():' | |||
|
231 | 230 | extras_require['all'] = everything |
|
232 | 231 | |
|
233 | 232 | if 'setuptools' in sys.modules: |
|
234 |
setuptools_extra_args['python_requires'] = '>=3. |
|
|
233 | setuptools_extra_args['python_requires'] = '>=3.5' | |
|
235 | 234 | setuptools_extra_args['zip_safe'] = False |
|
236 | 235 | setuptools_extra_args['entry_points'] = { |
|
237 | 236 | 'console_scripts': find_entry_points(), |
General Comments 0
You need to be logged in to leave comments.
Login now