diff --git a/jedi/inference/compiled/mixed.py b/jedi/inference/compiled/mixed.py index e96957ed..86675794 100644 --- a/jedi/inference/compiled/mixed.py +++ b/jedi/inference/compiled/mixed.py @@ -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. . return None diff --git a/jedi/inference/compiled/subprocess/functions.py b/jedi/inference/compiled/subprocess/functions.py index 9aa1cb2e..601fe6c2 100644 --- a/jedi/inference/compiled/subprocess/functions.py +++ b/jedi/inference/compiled/subprocess/functions.py @@ -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 diff --git a/jedi/inference/references.py b/jedi/inference/references.py index e1b97c41..07a840a1 100644 --- a/jedi/inference/references.py +++ b/jedi/inference/references.py @@ -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 diff --git a/jedi/inference/sys_path.py b/jedi/inference/sys_path.py index b7457e88..0f44be4a 100644 --- a/jedi/inference/sys_path.py +++ b/jedi/inference/sys_path.py @@ -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) diff --git a/test/test_api/test_api.py b/test/test_api/test_api.py index c86be78c..1829e30f 100644 --- a/test/test_api/test_api.py +++ b/test/test_api/test_api.py @@ -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() diff --git a/test/test_inference/test_imports.py b/test/test_inference/test_imports.py index 32acf093..f1eb3f57 100644 --- a/test/test_inference/test_imports.py +++ b/test/test_inference/test_imports.py @@ -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