diff --git a/jedi/plugins/typeshed.py b/jedi/plugins/typeshed.py index 18b132f8..0126e7e4 100644 --- a/jedi/plugins/typeshed.py +++ b/jedi/plugins/typeshed.py @@ -1,5 +1,6 @@ import os import re +from pkg_resources import resource_filename from jedi._compatibility import FileNotFoundError from jedi.plugins.base import BasePlugin @@ -8,11 +9,7 @@ from jedi.evaluate.base_context import Context, ContextSet from jedi.evaluate.context import ModuleContext -_TYPESHED_PATH = os.path.join( - os.path.dirname(os.path.dirname(__file__)), - 'third_party', - 'typeshed', -) +_TYPESHED_PATH = resource_filename('jedi', os.path.join('third_party', 'typeshed')) def _create_stub_map(directory): @@ -125,6 +122,8 @@ class StubProxy(object): typeshed_results = self._stub_context.py__getattribute__( *args, **kwargs ) + print() + print(context_results, typeshed_results) return context_results def __getattr__(self, name): diff --git a/test/test_plugin/test_stub.py b/test/test_plugin/test_stub.py new file mode 100644 index 00000000..8f992b97 --- /dev/null +++ b/test/test_plugin/test_stub.py @@ -0,0 +1,26 @@ +import os + +from jedi.plugins import typeshed +from parso.utils import PythonVersionInfo + + +def test_get_typeshed_directories(): + def get_dirs(version_info): + return { + d.replace(typeshed._TYPESHED_PATH, '').lstrip(os.path.sep) + for d in typeshed._get_typeshed_directories(version_info) + } + + dirs = get_dirs(PythonVersionInfo(2, 7)) + assert dirs == {'stdlib/2and3', 'stdlib/2', 'third_party/2and3', 'third_party/2'} + + dirs = get_dirs(PythonVersionInfo(3, 4)) + assert dirs == {'stdlib/2and3', 'stdlib/3', 'third_party/2and3', 'third_party/3'} + + dirs = get_dirs(PythonVersionInfo(3, 5)) + assert dirs == {'stdlib/2and3', 'stdlib/3', 'stdlib/3.5', + 'third_party/2and3', 'third_party/3', 'third_party/3.5'} + + dirs = get_dirs(PythonVersionInfo(3, 6)) + assert dirs == {'stdlib/2and3', 'stdlib/3', 'stdlib/3.5', 'stdlib/3.6', + 'third_party/2and3', 'third_party/3', 'third_party/3.5', 'third_party/3.6'}