1
0
forked from VimPlug/jedi

Use pathlib for file ios, because the new parso is out

This commit is contained in:
Dave Halter
2020-08-05 00:52:50 +02:00
parent 94bf83c826
commit f12ed2088a
6 changed files with 17 additions and 14 deletions

View File

@@ -4,6 +4,7 @@ Used only for REPL Completion.
import inspect
import os
from pathlib import Path
from jedi.parser_utils import get_cached_code_lines
@@ -190,7 +191,8 @@ def _find_syntax_node_name(inference_state, python_object):
except TypeError:
# The type might not be known (e.g. class_with_dict.__weakref__)
return None
if path is None or not os.path.exists(path):
path = None if path is None else Path(path)
if path is None or not path.exists():
# The path might not exist or be e.g. <stdin>.
return None

View File

@@ -3,6 +3,7 @@ import os
import inspect
import importlib
import warnings
from pathlib import Path
from zipimport import zipimporter
from importlib.machinery import all_suffixes
@@ -211,7 +212,7 @@ def _from_loader(loader, string):
if code is None:
return None, is_package
if isinstance(loader, zipimporter):
return ZipFileIO(module_path, code, cast_path(loader.archive)), is_package
return ZipFileIO(module_path, code, Path(cast_path(loader.archive))), is_package
return KnownContentFileIO(module_path, code), is_package

View File

@@ -203,11 +203,11 @@ def recurse_find_python_folders_and_files(folder_io, except_paths=()):
# Delete folders that we don't want to iterate over.
for file_io in file_ios:
path = file_io.path
if path.endswith('.py') or path.endswith('.pyi'):
if path.suffix in ('.py', '.pyi'):
if path not in except_paths:
yield None, file_io
if path.endswith('.gitignore'):
if path.name == '.gitignore':
ignored_paths, ignored_names = \
gitignored_lines(root_folder_io, file_io)
except_paths |= ignored_paths

View File

@@ -164,7 +164,7 @@ def _get_paths_from_buildout_script(inference_state, buildout_script_path):
inference_state, module_node,
file_io=file_io,
string_names=None,
code_lines=get_cached_code_lines(inference_state.grammar, str(buildout_script_path)),
code_lines=get_cached_code_lines(inference_state.grammar, buildout_script_path),
).as_context()
yield from check_sys_path_modifications(module_context)

View File

@@ -15,7 +15,7 @@ from test.helpers import test_dir, get_example_dir
def test_preload_modules():
def check_loaded(*modules):
def check_loaded(*module_names):
for grammar_cache in cache.parser_cache.values():
if None in grammar_cache:
break
@@ -25,9 +25,9 @@ def test_preload_modules():
if path is not None and str(path).startswith(str(typeshed.TYPESHED_PATH))
)
# +1 for None module (currently used)
assert len(grammar_cache) - typeshed_cache_count == len(modules) + 1
for i in modules:
assert [i in k for k in grammar_cache.keys() if k is not None]
assert len(grammar_cache) - typeshed_cache_count == len(module_names) + 1
for i in module_names:
assert [i in str(k) for k in grammar_cache.keys() if k is not None]
old_cache = cache.parser_cache.copy()
cache.parser_cache.clear()

View File

@@ -29,13 +29,13 @@ def test_find_module_basic():
def test_find_module_package():
file_io, is_package = _find_module('json')
assert file_io.path.endswith(os.path.join('json', '__init__.py'))
assert file_io.path.parts[-2:] == ('json', '__init__.py')
assert is_package is True
def test_find_module_not_package():
file_io, is_package = _find_module('io')
assert file_io.path.endswith('io.py')
assert file_io.path.name == 'io.py'
assert is_package is False
@@ -55,8 +55,8 @@ def test_find_module_package_zipped(Script, inference_state, environment):
full_name='pkg'
)
assert file_io is not None
assert file_io.path.endswith(os.path.join('pkg.zip', 'pkg', '__init__.py'))
assert file_io._zip_path.endswith('pkg.zip')
assert file_io.path.parts[-3:] == ('pkg.zip', 'pkg', '__init__.py')
assert file_io._zip_path.name == 'pkg.zip'
assert is_package is True
@@ -108,7 +108,7 @@ def test_find_module_not_package_zipped(Script, inference_state, environment):
string='not_pkg',
full_name='not_pkg'
)
assert file_io.path.endswith(os.path.join('not_pkg.zip', 'not_pkg.py'))
assert file_io.path.parts[-2:] == ('not_pkg.zip', 'not_pkg.py')
assert is_package is False