forked from VimPlug/jedi
Merge pull request #1956 from PeterJCLaw/python-3.12
Support Python 3.12
This commit is contained in:
6
.github/workflows/ci.yml
vendored
6
.github/workflows/ci.yml
vendored
@@ -7,8 +7,8 @@ jobs:
|
|||||||
strategy:
|
strategy:
|
||||||
matrix:
|
matrix:
|
||||||
os: [ubuntu-20.04, windows-2019]
|
os: [ubuntu-20.04, windows-2019]
|
||||||
python-version: ["3.11", "3.10", "3.9", "3.8", "3.7", "3.6"]
|
python-version: ["3.12", "3.11", "3.10", "3.9", "3.8", "3.7", "3.6"]
|
||||||
environment: ['3.8', '3.11', '3.10', '3.9', '3.7', '3.6', 'interpreter']
|
environment: ['3.8', '3.12', '3.11', '3.10', '3.9', '3.7', '3.6', 'interpreter']
|
||||||
steps:
|
steps:
|
||||||
- name: Checkout code
|
- name: Checkout code
|
||||||
uses: actions/checkout@v4
|
uses: actions/checkout@v4
|
||||||
@@ -19,10 +19,12 @@ jobs:
|
|||||||
if: ${{ matrix.environment != 'interpreter' }}
|
if: ${{ matrix.environment != 'interpreter' }}
|
||||||
with:
|
with:
|
||||||
python-version: ${{ matrix.environment }}
|
python-version: ${{ matrix.environment }}
|
||||||
|
allow-prereleases: true
|
||||||
|
|
||||||
- uses: actions/setup-python@v4
|
- uses: actions/setup-python@v4
|
||||||
with:
|
with:
|
||||||
python-version: ${{ matrix.python-version }}
|
python-version: ${{ matrix.python-version }}
|
||||||
|
allow-prereleases: true
|
||||||
|
|
||||||
- name: Install dependencies
|
- name: Install dependencies
|
||||||
run: 'pip install .[testing]'
|
run: 'pip install .[testing]'
|
||||||
|
|||||||
@@ -6,6 +6,8 @@ Changelog
|
|||||||
Unreleased
|
Unreleased
|
||||||
++++++++++
|
++++++++++
|
||||||
|
|
||||||
|
- Python 3.12 support
|
||||||
|
|
||||||
0.19.0 (2023-07-29)
|
0.19.0 (2023-07-29)
|
||||||
+++++++++++++++++++
|
+++++++++++++++++++
|
||||||
|
|
||||||
|
|||||||
@@ -17,7 +17,7 @@ import parso
|
|||||||
|
|
||||||
_VersionInfo = namedtuple('VersionInfo', 'major minor micro') # type: ignore[name-match]
|
_VersionInfo = namedtuple('VersionInfo', 'major minor micro') # type: ignore[name-match]
|
||||||
|
|
||||||
_SUPPORTED_PYTHONS = ['3.11', '3.10', '3.9', '3.8', '3.7', '3.6']
|
_SUPPORTED_PYTHONS = ['3.12', '3.11', '3.10', '3.9', '3.8', '3.7', '3.6']
|
||||||
_SAFE_PATHS = ['/usr/bin', '/usr/local/bin']
|
_SAFE_PATHS = ['/usr/bin', '/usr/local/bin']
|
||||||
_CONDA_VAR = 'CONDA_PREFIX'
|
_CONDA_VAR = 'CONDA_PREFIX'
|
||||||
_CURRENT_VERSION = '%s.%s' % (sys.version_info.major, sys.version_info.minor)
|
_CURRENT_VERSION = '%s.%s' % (sys.version_info.major, sys.version_info.minor)
|
||||||
|
|||||||
@@ -90,7 +90,7 @@ class InferenceState:
|
|||||||
self.compiled_subprocess = environment.get_inference_state_subprocess(self)
|
self.compiled_subprocess = environment.get_inference_state_subprocess(self)
|
||||||
self.grammar = environment.get_grammar()
|
self.grammar = environment.get_grammar()
|
||||||
|
|
||||||
self.latest_grammar = parso.load_grammar(version='3.11')
|
self.latest_grammar = parso.load_grammar(version='3.12')
|
||||||
self.memoize_cache = {} # for memoize decorators
|
self.memoize_cache = {} # for memoize decorators
|
||||||
self.module_cache = imports.ModuleCache() # does the job of `sys.modules`.
|
self.module_cache = imports.ModuleCache() # does the job of `sys.modules`.
|
||||||
self.stub_module_cache = {} # Dict[Tuple[str, ...], Optional[ModuleValue]]
|
self.stub_module_cache = {} # Dict[Tuple[str, ...], Optional[ModuleValue]]
|
||||||
|
|||||||
3
setup.py
3
setup.py
@@ -32,7 +32,7 @@ setup(name='jedi',
|
|||||||
long_description=readme,
|
long_description=readme,
|
||||||
packages=find_packages(exclude=['test', 'test.*']),
|
packages=find_packages(exclude=['test', 'test.*']),
|
||||||
python_requires='>=3.6',
|
python_requires='>=3.6',
|
||||||
# Python 3.11 grammar is added to parso in 0.8.3
|
# Python 3.11 & 3.12 grammars are added to parso in 0.8.3
|
||||||
install_requires=['parso>=0.8.3,<0.9.0'],
|
install_requires=['parso>=0.8.3,<0.9.0'],
|
||||||
extras_require={
|
extras_require={
|
||||||
'testing': [
|
'testing': [
|
||||||
@@ -97,6 +97,7 @@ setup(name='jedi',
|
|||||||
'Programming Language :: Python :: 3.9',
|
'Programming Language :: Python :: 3.9',
|
||||||
'Programming Language :: Python :: 3.10',
|
'Programming Language :: Python :: 3.10',
|
||||||
'Programming Language :: Python :: 3.11',
|
'Programming Language :: Python :: 3.11',
|
||||||
|
'Programming Language :: Python :: 3.12',
|
||||||
'Topic :: Software Development :: Libraries :: Python Modules',
|
'Topic :: Software Development :: Libraries :: Python Modules',
|
||||||
'Topic :: Text Editors :: Integrated Development Environments (IDE)',
|
'Topic :: Text Editors :: Integrated Development Environments (IDE)',
|
||||||
'Topic :: Utilities',
|
'Topic :: Utilities',
|
||||||
|
|||||||
@@ -1,4 +1,5 @@
|
|||||||
from textwrap import dedent
|
from textwrap import dedent
|
||||||
|
import sys
|
||||||
import math
|
import math
|
||||||
from collections import Counter
|
from collections import Counter
|
||||||
from datetime import datetime
|
from datetime import datetime
|
||||||
@@ -26,7 +27,10 @@ def test_builtin_loading(inference_state):
|
|||||||
assert not from_name.py__doc__() # It's a stub
|
assert not from_name.py__doc__() # It's a stub
|
||||||
|
|
||||||
|
|
||||||
def test_next_docstr(inference_state):
|
def test_next_docstr(inference_state, environment):
|
||||||
|
if environment.version_info[:2] != sys.version_info[:2]:
|
||||||
|
pytest.skip()
|
||||||
|
|
||||||
next_ = compiled.builtin_from_name(inference_state, 'next')
|
next_ = compiled.builtin_from_name(inference_state, 'next')
|
||||||
assert next_.tree_node is not None
|
assert next_.tree_node is not None
|
||||||
assert next_.py__doc__() == '' # It's a stub
|
assert next_.py__doc__() == '' # It's a stub
|
||||||
|
|||||||
@@ -13,7 +13,8 @@ from ..helpers import get_example_dir
|
|||||||
'code, sig, names, op, version', [
|
'code, sig, names, op, version', [
|
||||||
('import math; math.cos', 'cos(x, /)', ['x'], ge, (3, 6)),
|
('import math; math.cos', 'cos(x, /)', ['x'], ge, (3, 6)),
|
||||||
|
|
||||||
('next', 'next(iterator, default=None, /)', ['iterator', 'default'], ge, (3, 6)),
|
('next', 'next(iterator, default=None, /)', ['iterator', 'default'], lt, (3, 12)),
|
||||||
|
('next', 'next()', [], ge, (3, 12)),
|
||||||
|
|
||||||
('str', "str(object='', /) -> str", ['object'], ge, (3, 6)),
|
('str', "str(object='', /) -> str", ['object'], ge, (3, 6)),
|
||||||
|
|
||||||
|
|||||||
@@ -81,7 +81,7 @@ class TestSetupReadline(unittest.TestCase):
|
|||||||
if all(not x.startswith('from os import ' + s)
|
if all(not x.startswith('from os import ' + s)
|
||||||
for s in ['_', 'O_', 'EX_', 'MFD_', 'SF_', 'ST_',
|
for s in ['_', 'O_', 'EX_', 'MFD_', 'SF_', 'ST_',
|
||||||
'CLD_', 'POSIX_SPAWN_', 'P_', 'RWF_',
|
'CLD_', 'POSIX_SPAWN_', 'P_', 'RWF_',
|
||||||
'SCHED_'])
|
'CLONE_', 'SCHED_'])
|
||||||
}
|
}
|
||||||
# There are quite a few differences, because both Windows and Linux
|
# There are quite a few differences, because both Windows and Linux
|
||||||
# (posix and nt) libraries are included.
|
# (posix and nt) libraries are included.
|
||||||
|
|||||||
Reference in New Issue
Block a user