Show More
@@ -17,10 +17,10 b' jobs:' | |||||
17 | strategy: |
|
17 | strategy: | |
18 | matrix: |
|
18 | matrix: | |
19 | os: [ubuntu-latest] |
|
19 | os: [ubuntu-latest] | |
20 |
python-version: ["3. |
|
20 | python-version: ["3.10"] | |
21 | include: |
|
21 | include: | |
22 | - os: macos-latest |
|
22 | - os: macos-latest | |
23 |
python-version: "3. |
|
23 | python-version: "3.10" | |
24 |
|
24 | |||
25 | steps: |
|
25 | steps: | |
26 | - uses: actions/checkout@v3 |
|
26 | - uses: actions/checkout@v3 |
@@ -19,12 +19,12 b' jobs:' | |||||
19 | fail-fast: false |
|
19 | fail-fast: false | |
20 | matrix: |
|
20 | matrix: | |
21 | os: [ubuntu-latest, windows-latest] |
|
21 | os: [ubuntu-latest, windows-latest] | |
22 |
python-version: [ |
|
22 | python-version: ["3.10", "3.11", "3.12"] | |
23 | deps: [test_extra] |
|
23 | deps: [test_extra] | |
24 | # Test all on ubuntu, test ends on macos |
|
24 | # Test all on ubuntu, test ends on macos | |
25 | include: |
|
25 | include: | |
26 | - os: macos-latest |
|
26 | - os: macos-latest | |
27 |
python-version: "3. |
|
27 | python-version: "3.10" | |
28 | deps: test_extra |
|
28 | deps: test_extra | |
29 | - os: macos-latest |
|
29 | - os: macos-latest | |
30 | python-version: "3.11" |
|
30 | python-version: "3.11" | |
@@ -35,17 +35,17 b' jobs:' | |||||
35 | deps: test |
|
35 | deps: test | |
36 | # Tests latest development Python version |
|
36 | # Tests latest development Python version | |
37 | - os: ubuntu-latest |
|
37 | - os: ubuntu-latest | |
38 |
python-version: "3.1 |
|
38 | python-version: "3.13-dev" | |
39 | deps: test |
|
39 | deps: test | |
40 | # Installing optional dependencies stuff takes ages on PyPy |
|
40 | # Installing optional dependencies stuff takes ages on PyPy | |
41 | - os: ubuntu-latest |
|
41 | - os: ubuntu-latest | |
42 |
python-version: "pypy-3. |
|
42 | python-version: "pypy-3.10" | |
43 | deps: test |
|
43 | deps: test | |
44 | - os: windows-latest |
|
44 | - os: windows-latest | |
45 |
python-version: "pypy-3. |
|
45 | python-version: "pypy-3.10" | |
46 | deps: test |
|
46 | deps: test | |
47 | - os: macos-latest |
|
47 | - os: macos-latest | |
48 |
python-version: "pypy-3. |
|
48 | python-version: "pypy-3.10" | |
49 | deps: test |
|
49 | deps: test | |
50 |
|
50 | |||
51 | steps: |
|
51 | steps: |
@@ -26,9 +26,10 b' import sys' | |||||
26 | #----------------------------------------------------------------------------- |
|
26 | #----------------------------------------------------------------------------- | |
27 |
|
27 | |||
28 | # Don't forget to also update setup.py when this changes! |
|
28 | # Don't forget to also update setup.py when this changes! | |
29 |
if sys.version_info < (3, |
|
29 | if sys.version_info < (3, 10): | |
30 | raise ImportError( |
|
30 | raise ImportError( | |
31 | """ |
|
31 | """ | |
|
32 | IPython 8.19+ supports Python 3.10 and above, following SPEC0. | |||
32 | IPython 8.13+ supports Python 3.9 and above, following NEP 29. |
|
33 | IPython 8.13+ supports Python 3.9 and above, following NEP 29. | |
33 | IPython 8.0-8.12 supports Python 3.8 and above, following NEP 29. |
|
34 | IPython 8.0-8.12 supports Python 3.8 and above, following NEP 29. | |
34 | When using Python 2.7, please install IPython 5.x LTS Long Term Support version. |
|
35 | When using Python 2.7, please install IPython 5.x LTS Long Term Support version. |
@@ -28,10 +28,7 b' import warnings' | |||||
28 |
|
28 | |||
29 | from typing import Any, Optional, Dict, Union, List, Tuple |
|
29 | from typing import Any, Optional, Dict, Union, List, Tuple | |
30 |
|
30 | |||
31 | if sys.version_info <= (3, 10): |
|
31 | from typing import TypeAlias | |
32 | from typing_extensions import TypeAlias |
|
|||
33 | else: |
|
|||
34 | from typing import TypeAlias |
|
|||
35 |
|
32 | |||
36 | # IPython's own |
|
33 | # IPython's own | |
37 | from IPython.core import page |
|
34 | from IPython.core import page |
@@ -3,13 +3,15 b' Test for async helpers.' | |||||
3 |
|
3 | |||
4 | Should only trigger on python 3.5+ or will have syntax errors. |
|
4 | Should only trigger on python 3.5+ or will have syntax errors. | |
5 | """ |
|
5 | """ | |
6 | import platform |
|
|||
7 | from itertools import chain, repeat |
|
6 | from itertools import chain, repeat | |
8 | from textwrap import dedent, indent |
|
7 | from textwrap import dedent, indent | |
|
8 | from typing import TYPE_CHECKING | |||
9 | from unittest import TestCase |
|
9 | from unittest import TestCase | |
|
10 | ||||
|
11 | import pytest | |||
|
12 | ||||
|
13 | from IPython.core.async_helpers import _should_be_async | |||
10 | from IPython.testing.decorators import skip_without |
|
14 | from IPython.testing.decorators import skip_without | |
11 | import sys |
|
|||
12 | from typing import TYPE_CHECKING |
|
|||
13 |
|
15 | |||
14 | if TYPE_CHECKING: |
|
16 | if TYPE_CHECKING: | |
15 | from IPython import get_ipython |
|
17 | from IPython import get_ipython | |
@@ -17,10 +19,13 b' if TYPE_CHECKING:' | |||||
17 | ip = get_ipython() |
|
19 | ip = get_ipython() | |
18 |
|
20 | |||
19 |
|
21 | |||
20 | iprc = lambda x: ip.run_cell(dedent(x)).raise_error() |
|
22 | def iprc(x): | |
21 | iprc_nr = lambda x: ip.run_cell(dedent(x)) |
|
23 | return ip.run_cell(dedent(x)).raise_error() | |
|
24 | ||||
|
25 | ||||
|
26 | def iprc_nr(x): | |||
|
27 | return ip.run_cell(dedent(x)) | |||
22 |
|
28 | |||
23 | from IPython.core.async_helpers import _should_be_async |
|
|||
24 |
|
29 | |||
25 | class AsyncTest(TestCase): |
|
30 | class AsyncTest(TestCase): | |
26 | def test_should_be_async(self): |
|
31 | def test_should_be_async(self): | |
@@ -283,7 +288,11 b' class AsyncTest(TestCase):' | |||||
283 |
|
288 | |||
284 | iprc("(" * 200 + ")" * 200) |
|
289 | iprc("(" * 200 + ")" * 200) | |
285 |
|
290 | |||
286 | @skip_without('curio') |
|
291 | @pytest.mark.xfail(reason="fail on curio 1.6 and before on Python 3.12") | |
|
292 | @pytest.mark.skip( | |||
|
293 | reason="skip_without(curio) fails on 3.12 for now even with other skip so must uncond skip" | |||
|
294 | ) | |||
|
295 | # @skip_without("curio") | |||
287 | def test_autoawait_curio(self): |
|
296 | def test_autoawait_curio(self): | |
288 | iprc("%autoawait curio") |
|
297 | iprc("%autoawait curio") | |
289 |
|
298 |
@@ -322,7 +322,7 b' class InputSplitterTestCase(unittest.TestCase):' | |||||
322 |
|
322 | |||
323 | @pytest.mark.xfail( |
|
323 | @pytest.mark.xfail( | |
324 | reason="Bug in python 3.9.8 – bpo 45738", |
|
324 | reason="Bug in python 3.9.8 – bpo 45738", | |
325 |
condition=sys.version_info in [ |
|
325 | condition=sys.version_info in [(3, 11, 0, "alpha", 2)], | |
326 | raises=SystemError, |
|
326 | raises=SystemError, | |
327 | strict=True, |
|
327 | strict=True, | |
328 | ) |
|
328 | ) |
@@ -319,8 +319,7 b' examples = [' | |||||
319 | None, |
|
319 | None, | |
320 | marks=pytest.mark.xfail( |
|
320 | marks=pytest.mark.xfail( | |
321 | reason="Bug in python 3.9.8 – bpo 45738", |
|
321 | reason="Bug in python 3.9.8 – bpo 45738", | |
322 | condition=sys.version_info |
|
322 | condition=sys.version_info in [(3, 11, 0, "alpha", 2)], | |
323 | in [(3, 9, 8, "final", 0), (3, 11, 0, "alpha", 2)], |
|
|||
324 | raises=SystemError, |
|
323 | raises=SystemError, | |
325 | strict=True, |
|
324 | strict=True, | |
326 | ), |
|
325 | ), | |
@@ -338,7 +337,7 b' def test_check_complete_param(code, expected, number):' | |||||
338 | @pytest.mark.xfail(platform.python_implementation() == "PyPy", reason="fail on pypy") |
|
337 | @pytest.mark.xfail(platform.python_implementation() == "PyPy", reason="fail on pypy") | |
339 | @pytest.mark.xfail( |
|
338 | @pytest.mark.xfail( | |
340 | reason="Bug in python 3.9.8 – bpo 45738", |
|
339 | reason="Bug in python 3.9.8 – bpo 45738", | |
341 |
condition=sys.version_info in [ |
|
340 | condition=sys.version_info in [(3, 11, 0, "alpha", 2)], | |
342 | raises=SystemError, |
|
341 | raises=SystemError, | |
343 | strict=True, |
|
342 | strict=True, | |
344 | ) |
|
343 | ) |
@@ -64,7 +64,7 b' def test_inspect_getfile_raises_exception():' | |||||
64 | """Check oinspect.find_file/getsource/find_source_lines expectations""" |
|
64 | """Check oinspect.find_file/getsource/find_source_lines expectations""" | |
65 | with pytest.raises(TypeError): |
|
65 | with pytest.raises(TypeError): | |
66 | inspect.getfile(type) |
|
66 | inspect.getfile(type) | |
67 | with pytest.raises(OSError if sys.version_info >= (3, 10) else TypeError): |
|
67 | with pytest.raises(OSError): | |
68 | inspect.getfile(SourceModuleMainTest) |
|
68 | inspect.getfile(SourceModuleMainTest) | |
69 |
|
69 | |||
70 |
|
70 |
@@ -140,7 +140,7 b' def test_pprint_heap_allocated_type():' | |||||
140 | """ |
|
140 | """ | |
141 | Test that pprint works for heap allocated types. |
|
141 | Test that pprint works for heap allocated types. | |
142 | """ |
|
142 | """ | |
143 | module_name = "xxlimited" if sys.version_info < (3, 10) else "xxlimited_35" |
|
143 | module_name = "xxlimited_35" | |
144 | expected_output = ( |
|
144 | expected_output = ( | |
145 | "xxlimited.Null" if sys.version_info < (3, 10, 6) else "xxlimited_35.Null" |
|
145 | "xxlimited.Null" if sys.version_info < (3, 10, 6) else "xxlimited_35.Null" | |
146 | ) |
|
146 | ) |
@@ -3,7 +3,7 b' requires = ["setuptools >= 51.0.0"]' | |||||
3 | build-backend = "setuptools.build_meta" |
|
3 | build-backend = "setuptools.build_meta" | |
4 |
|
4 | |||
5 | [tool.mypy] |
|
5 | [tool.mypy] | |
6 |
python_version = 3. |
|
6 | python_version = 3.10 | |
7 | ignore_missing_imports = true |
|
7 | ignore_missing_imports = true | |
8 | follow_imports = 'silent' |
|
8 | follow_imports = 'silent' | |
9 | exclude = [ |
|
9 | exclude = [ |
@@ -26,7 +26,7 b' classifiers =' | |||||
26 |
|
26 | |||
27 | [options] |
|
27 | [options] | |
28 | packages = find: |
|
28 | packages = find: | |
29 |
python_requires = >=3. |
|
29 | python_requires = >=3.10 | |
30 | zip_safe = False |
|
30 | zip_safe = False | |
31 | install_requires = |
|
31 | install_requires = | |
32 | colorama; sys_platform == "win32" |
|
32 | colorama; sys_platform == "win32" | |
@@ -80,7 +80,7 b' test_extra =' | |||||
80 | curio |
|
80 | curio | |
81 | matplotlib!=3.2.0 |
|
81 | matplotlib!=3.2.0 | |
82 | nbformat |
|
82 | nbformat | |
83 |
numpy>=1.2 |
|
83 | numpy>=1.23 | |
84 | pandas |
|
84 | pandas | |
85 | trio |
|
85 | trio | |
86 | all = |
|
86 | all = |
@@ -23,7 +23,7 b' import sys' | |||||
23 | # |
|
23 | # | |
24 | # This check is also made in IPython/__init__, don't forget to update both when |
|
24 | # This check is also made in IPython/__init__, don't forget to update both when | |
25 | # changing Python version requirements. |
|
25 | # changing Python version requirements. | |
26 |
if sys.version_info < (3, |
|
26 | if sys.version_info < (3, 10): | |
27 | pip_message = 'This may be due to an out of date pip. Make sure you have pip >= 9.0.1.' |
|
27 | pip_message = 'This may be due to an out of date pip. Make sure you have pip >= 9.0.1.' | |
28 | try: |
|
28 | try: | |
29 | import pip |
|
29 | import pip | |
@@ -39,6 +39,7 b' if sys.version_info < (3, 9):' | |||||
39 |
|
39 | |||
40 |
|
40 | |||
41 | error = """ |
|
41 | error = """ | |
|
42 | IPython 8.19+ supports Python 3.10 and above, following SPEC0 | |||
42 | IPython 8.13+ supports Python 3.9 and above, following NEP 29. |
|
43 | IPython 8.13+ supports Python 3.9 and above, following NEP 29. | |
43 | IPython 8.0-8.12 supports Python 3.8 and above, following NEP 29. |
|
44 | IPython 8.0-8.12 supports Python 3.8 and above, following NEP 29. | |
44 | When using Python 2.7, please install IPython 5.x LTS Long Term Support version. |
|
45 | When using Python 2.7, please install IPython 5.x LTS Long Term Support version. |
General Comments 0
You need to be logged in to leave comments.
Login now