forked from VimPlug/jedi
Refactor a bit more and remove the parent_context parameter from create_from_access
This commit is contained in:
@@ -493,7 +493,7 @@ def _create_from_name(evaluator, compiled_object, name):
|
|||||||
pass
|
pass
|
||||||
|
|
||||||
access = compiled_object.access.getattr(name, default=None)
|
access = compiled_object.access.getattr(name, default=None)
|
||||||
return _create_cached_compiled_object(
|
return create_cached_compiled_object(
|
||||||
evaluator, access, parent_context=compiled_object, faked=faked
|
evaluator, access, parent_context=compiled_object, faked=faked
|
||||||
)
|
)
|
||||||
|
|
||||||
@@ -520,11 +520,7 @@ _SPECIAL_OBJECTS = {
|
|||||||
|
|
||||||
def get_special_object(evaluator, identifier):
|
def get_special_object(evaluator, identifier):
|
||||||
obj = _SPECIAL_OBJECTS[identifier]
|
obj = _SPECIAL_OBJECTS[identifier]
|
||||||
if identifier == 'BUILTINS':
|
return create(evaluator, obj)
|
||||||
parent_context = None
|
|
||||||
else:
|
|
||||||
parent_context = create(evaluator, _builtins)
|
|
||||||
return create(evaluator, obj, parent_context=parent_context)
|
|
||||||
|
|
||||||
|
|
||||||
def _normalize_create_args(func):
|
def _normalize_create_args(func):
|
||||||
@@ -534,43 +530,37 @@ def _normalize_create_args(func):
|
|||||||
return wrapper
|
return wrapper
|
||||||
|
|
||||||
|
|
||||||
def create(evaluator, obj, parent_context=None):
|
def create(evaluator, obj):
|
||||||
if inspect.ismodule(obj):
|
|
||||||
if parent_context is not None:
|
|
||||||
# Modules don't have parents, be careful with caching: recurse.
|
|
||||||
return create(evaluator, obj)
|
|
||||||
|
|
||||||
return create_from_access(
|
return create_from_access(
|
||||||
evaluator, create_access(evaluator, obj), parent_context
|
evaluator, create_access(evaluator, obj)
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
||||||
@evaluator_function_cache()
|
@evaluator_function_cache()
|
||||||
def create_from_access(evaluator, access, parent_context=None):
|
def create_from_access(evaluator, access):
|
||||||
"""
|
"""
|
||||||
Returns a CompiledObject and tries to find fake modules.
|
Returns a CompiledObject and tries to find fake modules.
|
||||||
"""
|
"""
|
||||||
if parent_context is None:
|
access_tuples = access.get_access_path_tuples()
|
||||||
access_tuples = access.get_access_path_tuples()
|
if access_tuples:
|
||||||
if access_tuples:
|
string_names, accesses = zip(*access_tuples)
|
||||||
string_names, accesses = zip(*access_tuples)
|
try:
|
||||||
try:
|
tree_nodes = fake.get_faked_tree_nodes(evaluator.latest_grammar, string_names)
|
||||||
tree_nodes = fake.get_faked_tree_nodes(evaluator.latest_grammar, string_names)
|
except fake.FakeDoesNotExist:
|
||||||
except fake.FakeDoesNotExist:
|
pass
|
||||||
pass
|
else:
|
||||||
else:
|
parent_context = None
|
||||||
for access2, tree_node in zip(accesses, tree_nodes):
|
for access2, tree_node in zip(accesses, tree_nodes):
|
||||||
parent_context = _create_cached_compiled_object(
|
parent_context = create_cached_compiled_object(
|
||||||
evaluator, access2, parent_context, faked=tree_node
|
evaluator, access2, parent_context, faked=tree_node
|
||||||
)
|
)
|
||||||
return parent_context
|
return parent_context
|
||||||
|
|
||||||
parent_context = create(evaluator, _builtins)
|
parent_context = create(evaluator, _builtins)
|
||||||
return _create_cached_compiled_object(evaluator, access, parent_context)
|
return create_cached_compiled_object(evaluator, access, parent_context)
|
||||||
return _create_cached_compiled_object(evaluator, access, parent_context)
|
|
||||||
|
|
||||||
|
|
||||||
@_normalize_create_args
|
@_normalize_create_args
|
||||||
@evaluator_function_cache()
|
@evaluator_function_cache()
|
||||||
def _create_cached_compiled_object(evaluator, access, parent_context, faked):
|
def create_cached_compiled_object(evaluator, access, parent_context, faked):
|
||||||
return CompiledObject(evaluator, access, parent_context, faked)
|
return CompiledObject(evaluator, access, parent_context, faked)
|
||||||
|
|||||||
@@ -197,7 +197,7 @@ def _find_syntax_node_name(evaluator, access):
|
|||||||
def _create(evaluator, access, parent_context=None, *args):
|
def _create(evaluator, access, parent_context=None, *args):
|
||||||
tree_node, path = _find_syntax_node_name(evaluator, access)
|
tree_node, path = _find_syntax_node_name(evaluator, access)
|
||||||
|
|
||||||
compiled_object = compiled.create_from_access(
|
compiled_object = compiled.create_cached_compiled_object(
|
||||||
evaluator, access, parent_context=parent_context.compiled_object)
|
evaluator, access, parent_context=parent_context.compiled_object)
|
||||||
if tree_node is None:
|
if tree_node is None:
|
||||||
return compiled_object
|
return compiled_object
|
||||||
|
|||||||
Reference in New Issue
Block a user