diff --git a/jedi/api/interpreter.py b/jedi/api/interpreter.py index 202f345e..365f88e9 100644 --- a/jedi/api/interpreter.py +++ b/jedi/api/interpreter.py @@ -5,9 +5,16 @@ TODO Some parts of this module are still not well documented. from jedi.evaluate.context import ModuleContext from jedi.evaluate import compiled from jedi.evaluate.compiled import mixed +from jedi.evaluate.compiled.access import create_access_path from jedi.evaluate.base_context import Context +def _create(evaluator, obj): + return compiled.create_from_access_path( + evaluator, create_access_path(evaluator, obj) + ) + + class NamespaceObject(object): def __init__(self, dct): self.__dict__ = dct @@ -33,7 +40,7 @@ class MixedModuleContext(Context): yield filter for namespace_obj in self._namespace_objects: - compiled_object = compiled.create(self.evaluator, namespace_obj) + compiled_object = _create(self.evaluator, namespace_obj) mixed_object = mixed.MixedObject( self.evaluator, parent_context=self, diff --git a/jedi/evaluate/compiled/__init__.py b/jedi/evaluate/compiled/__init__.py index d3ac7c70..8114a919 100644 --- a/jedi/evaluate/compiled/__init__.py +++ b/jedi/evaluate/compiled/__init__.py @@ -16,12 +16,9 @@ def create_simple_object(evaluator, obj): versions. """ assert isinstance(obj, (int, float, str, bytes, slice, complex, type(Ellipsis))) - return create(evaluator, obj) - - -def create(evaluator, obj): return create_from_access_path( - evaluator, access.create_access_path(evaluator, obj) + evaluator, + evaluator.compiled_subprocess.create_simple_object(obj) ) diff --git a/jedi/evaluate/compiled/subprocess/functions.py b/jedi/evaluate/compiled/subprocess/functions.py index cbf39d5d..d5602436 100644 --- a/jedi/evaluate/compiled/subprocess/functions.py +++ b/jedi/evaluate/compiled/subprocess/functions.py @@ -17,3 +17,7 @@ def get_compiled_method_return(evaluator, id, attribute, *args, **kwargs): def get_special_object(evaluator, identifier): return access.get_special_object(evaluator, identifier) + + +def create_simple_object(evaluator, obj): + return access.create_access_path(evaluator, obj) diff --git a/test/test_evaluate/test_compiled.py b/test/test_evaluate/test_compiled.py index 0553f8a2..bf120ac3 100644 --- a/test/test_evaluate/test_compiled.py +++ b/test/test_evaluate/test_compiled.py @@ -9,11 +9,12 @@ from jedi.evaluate.context.function import FunctionContext from jedi.evaluate import Evaluator from jedi.evaluate.project import Project from jedi.parser_utils import clean_scope_docstring +from jedi.api import interpreter from jedi import Script def test_simple(evaluator): - obj = compiled.create(evaluator, '_str_') + obj = compiled.create_simple_object(evaluator, '_str_') upper, = obj.py__getattribute__('upper') objs = list(upper.execute_evaluated()) assert len(objs) == 1 @@ -28,7 +29,7 @@ def test_fake_loading(evaluator): def test_fake_docstr(evaluator): - next_ = compiled.create(evaluator, next) + next_ = interpreter._create(evaluator, next) assert next_.py__doc__() assert next_.tree_node is not None assert next_.py__doc__() == next.__doc__ @@ -48,7 +49,7 @@ def test_doc(evaluator): Even CompiledObject docs always return empty docstrings - not None, that's just a Jedi API definition. """ - obj = compiled.create(evaluator, ''.__getnewargs__) + obj = interpreter._create(evaluator, ''.__getnewargs__) assert obj.py__doc__() == ''