Thanks to visit codestin.com
Credit goes to github.com

Skip to content

Commit 1b7d82f

Browse files
hugovktakluyver
authored andcommitted
Drop support for Python 3.3
1 parent 3d62c22 commit 1b7d82f

6 files changed

Lines changed: 14 additions & 61 deletions

File tree

IPython/core/tests/test_oinspect.py

Lines changed: 1 addition & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -430,8 +430,5 @@ def test_init_colors():
430430
def test_builtin_init():
431431
info = inspector.info(list)
432432
init_def = info['init_definition']
433-
# Python < 3.4 can't get init definition from builtins,
434-
# but still exercise the inspection in case of error-raising bugs.
435-
if sys.version_info >= (3,4):
436-
nt.assert_is_not_none(init_def)
433+
nt.assert_is_not_none(init_def)
437434

IPython/external/qt_loaders.py

Lines changed: 0 additions & 43 deletions
Original file line numberDiff line numberDiff line change
@@ -109,47 +109,6 @@ def loaded_api():
109109
def has_binding(api):
110110
"""Safely check for PyQt4/5, PySide or PySide2, without importing submodules
111111
112-
Supports Python <= 3.3
113-
114-
Parameters
115-
----------
116-
api : str [ 'pyqtv1' | 'pyqt' | 'pyqt5' | 'pyside' | 'pyside2' | 'pyqtdefault']
117-
Which module to check for
118-
119-
Returns
120-
-------
121-
True if the relevant module appears to be importable
122-
"""
123-
# we can't import an incomplete pyside and pyqt4
124-
# this will cause a crash in sip (#1431)
125-
# check for complete presence before importing
126-
module_name = api_to_module[api]
127-
128-
import imp
129-
try:
130-
#importing top level PyQt4/PySide module is ok...
131-
mod = import_module(module_name)
132-
#...importing submodules is not
133-
imp.find_module('QtCore', mod.__path__)
134-
imp.find_module('QtGui', mod.__path__)
135-
imp.find_module('QtSvg', mod.__path__)
136-
if api in (QT_API_PYQT5, QT_API_PYSIDE2):
137-
# QT5 requires QtWidgets too
138-
imp.find_module('QtWidgets', mod.__path__)
139-
140-
#we can also safely check PySide version
141-
if api == QT_API_PYSIDE:
142-
return check_version(mod.__version__, '1.0.3')
143-
else:
144-
return True
145-
except ImportError:
146-
return False
147-
148-
def has_binding_new(api):
149-
"""Safely check for PyQt4/5, PySide or PySide2, without importing submodules
150-
151-
Supports Python >= 3.4
152-
153112
Parameters
154113
----------
155114
api : str [ 'pyqtv1' | 'pyqt' | 'pyqt5' | 'pyside' | 'pyside2' | 'pyqtdefault']
@@ -185,8 +144,6 @@ def has_binding_new(api):
185144

186145
return True
187146

188-
if sys.version_info >= (3, 4):
189-
has_binding = has_binding_new
190147

191148
def qtapi_version():
192149
"""Return which QString API has been set, if any

IPython/utils/tests/test_text.py

Lines changed: 3 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -133,13 +133,9 @@ def eval_formatter_no_slicing_check(f):
133133

134134
s = f.format('{stuff[slice(1,4)]}', **ns)
135135
nt.assert_equal(s, 'ell')
136-
137-
if sys.version_info >= (3, 4):
138-
# String formatting has changed in Python 3.4, so this now works.
139-
s = f.format("{a[:]}", a=[1, 2])
140-
nt.assert_equal(s, "[1, 2]")
141-
else:
142-
nt.assert_raises(SyntaxError, f.format, "{a[:]}")
136+
137+
s = f.format("{a[:]}", a=[1, 2])
138+
nt.assert_equal(s, "[1, 2]")
143139

144140
def test_eval_formatter():
145141
f = text.EvalFormatter()

README.rst

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,9 @@ contribute to the project.
2323

2424
**IPython versions and Python Support**
2525

26-
**IPython 6** requires Python version 3.3 and above.
26+
**IPython 6.3** requires Python version 3.4 and above.
27+
28+
**IPython 6.0-6.2** requires Python version 3.3 and above.
2729

2830
**IPython 5.x LTS** is the compatible release for Python 2.7.
2931
If you require Python 2 support, you **must** use IPython 5.x LTS. Please

docs/source/overview.rst

Lines changed: 6 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -217,29 +217,30 @@ running, use the ``%connect_info`` magic to get the unique connection file,
217217
which will be something like ``--existing kernel-19732.json`` but with
218218
different numbers which correspond to the Process ID of the kernel.
219219

220-
You can read more about using `jupyter qtconsole
220+
You can read more about using `jupyter qtconsole
221221
<http://jupyter.org/qtconsole/>`_, and
222222
`jupyter notebook <http://jupyter-notebook.readthedocs.io/en/latest/>`_. There
223-
is also a :ref:`message spec <messaging>` which documents the protocol for
223+
is also a :ref:`message spec <messaging>` which documents the protocol for
224224
communication between kernels
225225
and clients.
226226

227227
.. seealso::
228-
228+
229229
`Frontend/Kernel Model`_ example notebook
230230

231231

232232
Interactive parallel computing
233233
==============================
234234

235-
235+
236236
This functionality is optional and now part of the `ipyparallel
237237
<http://ipyparallel.readthedocs.io/>`_ project.
238238

239239
Portability and Python requirements
240240
-----------------------------------
241241

242-
Version 6.0+ supports compatibility with Python 3.3 and higher.
242+
Version 6.3+ supports Python 3.4 and higher.
243+
Versions 6.0 to 6.2 support Python 3.3 and higher.
243244
Versions 2.0 to 5.x work with Python 2.7.x releases and Python 3.3 and higher.
244245
Version 1.0 additionally worked with Python 2.6 and 3.2.
245246
Version 0.12 was the first version to fully support Python 3.

setup.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -200,7 +200,7 @@
200200
# but requires pip >= 6. pip < 6 ignores these.
201201

202202
extras_require.update({
203-
':python_version <= "3.4"': ['typing'],
203+
':python_version == "3.4"': ['typing'],
204204
':sys_platform != "win32"': ['pexpect'],
205205
':sys_platform == "darwin"': ['appnope'],
206206
':sys_platform == "win32"': ['colorama'],

0 commit comments

Comments
 (0)