mirror of
https://github.com/davidhalter/jedi.git
synced 2025-12-07 14:34:31 +08:00
Load -stubs packages properly in _load_python_module
This commit is contained in:
@@ -19,6 +19,7 @@ from parso.tree import search_ancestor
|
|||||||
from jedi._compatibility import ImplicitNSInfo, force_unicode, FileNotFoundError
|
from jedi._compatibility import ImplicitNSInfo, force_unicode, FileNotFoundError
|
||||||
from jedi import debug
|
from jedi import debug
|
||||||
from jedi import settings
|
from jedi import settings
|
||||||
|
from jedi.file_io import FolderIO
|
||||||
from jedi.parser_utils import get_cached_code_lines
|
from jedi.parser_utils import get_cached_code_lines
|
||||||
from jedi.inference import sys_path
|
from jedi.inference import sys_path
|
||||||
from jedi.inference import helpers
|
from jedi.inference import helpers
|
||||||
@@ -439,9 +440,17 @@ def _load_python_module(inference_state, file_io,
|
|||||||
|
|
||||||
if is_stub:
|
if is_stub:
|
||||||
folder_io = file_io.get_parent_folder()
|
folder_io = file_io.get_parent_folder()
|
||||||
python_file_io = folder_io.get_file_io(import_names[-1] + '.py')
|
if folder_io.path.endswith('-stubs'):
|
||||||
|
folder_io = FolderIO(folder_io.path[:-6])
|
||||||
|
if file_io.path.endswith('__init__.pyi'):
|
||||||
|
python_file_io = folder_io.get_file_io('__init__.py')
|
||||||
|
stub_import_names = import_names
|
||||||
|
else:
|
||||||
|
python_file_io = folder_io.get_file_io(import_names[-1] + '.py')
|
||||||
|
stub_import_names = import_names[:-1]
|
||||||
|
|
||||||
try:
|
try:
|
||||||
v = load_module_from_path(inference_state, python_file_io, import_names[:-1])
|
v = load_module_from_path(inference_state, python_file_io, stub_import_names)
|
||||||
values = ValueSet([v])
|
values = ValueSet([v])
|
||||||
except FileNotFoundError:
|
except FileNotFoundError:
|
||||||
values = NO_VALUES
|
values = NO_VALUES
|
||||||
|
|||||||
@@ -89,11 +89,9 @@ def test_load_save_project(tmpdir):
|
|||||||
'examples.implicit_namespace_package.ns2'],
|
'examples.implicit_namespace_package.ns2'],
|
||||||
dict(complete=True)),
|
dict(complete=True)),
|
||||||
|
|
||||||
# With namespace & stub
|
# With stubs
|
||||||
('with_python.module', ['stub:examples.stub_packages.with_python.module',
|
('with_python.module', ['examples.stub_packages.with_python.module'], {}),
|
||||||
'examples.stub_packages.with_python.module'], {}),
|
('with_python.modul', ['examples.stub_packages.with_python.module'],
|
||||||
('with_python.modul', ['stub:examples.stub_packages.with_python.module',
|
|
||||||
'examples.stub_packages.with_python.module'],
|
|
||||||
dict(complete=True)),
|
dict(complete=True)),
|
||||||
('no_python.foo', ['stub:examples.stub_packages.no_python.foo'], {}),
|
('no_python.foo', ['stub:examples.stub_packages.no_python.foo'], {}),
|
||||||
('no_python.fo', ['stub:examples.stub_packages.no_python.foo'],
|
('no_python.fo', ['stub:examples.stub_packages.no_python.foo'],
|
||||||
@@ -102,8 +100,7 @@ def test_load_save_project(tmpdir):
|
|||||||
('no_python-stubs.foo', [], {}),
|
('no_python-stubs.foo', [], {}),
|
||||||
# Both locations are given, because they live in separate folders (one
|
# Both locations are given, because they live in separate folders (one
|
||||||
# suffixed with -stubs.
|
# suffixed with -stubs.
|
||||||
('with_python', ['stub:examples.stub_packages.with_python',
|
('with_python', ['examples.stub_packages.with_python'], {}),
|
||||||
'examples.stub_packages.with_python'], {}),
|
|
||||||
('no_python', ['stub:examples.stub_packages.no_python'], {}),
|
('no_python', ['stub:examples.stub_packages.no_python'], {}),
|
||||||
# Completion stubs
|
# Completion stubs
|
||||||
('stub_only', ['stub:completion.stub_folder.stub_only',
|
('stub_only', ['stub:completion.stub_folder.stub_only',
|
||||||
|
|||||||
Reference in New Issue
Block a user