1
0
forked from VimPlug/jedi

Don't use the create function anymore in compiled

Now the whole creation of builtin objects is abstract and was moved to subprocesses etc.
This commit is contained in:
Dave Halter
2017-12-06 15:26:29 +01:00
parent 13f8f37547
commit a210be8198
4 changed files with 18 additions and 9 deletions

View File

@@ -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,

View File

@@ -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)
)

View File

@@ -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)

View File

@@ -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__() == ''