Use LazyContextWrapper more

This commit is contained in:
Dave Halter
2019-07-23 13:59:08 +02:00
parent 3d08eb92d5
commit ff149b74e0

View File

@@ -10,7 +10,7 @@ from jedi import debug
from jedi.evaluate.cache import evaluator_method_cache from jedi.evaluate.cache import evaluator_method_cache
from jedi.evaluate.compiled import builtin_from_name from jedi.evaluate.compiled import builtin_from_name
from jedi.evaluate.base_context import ContextSet, NO_CONTEXTS, Context, \ from jedi.evaluate.base_context import ContextSet, NO_CONTEXTS, Context, \
iterator_to_context_set, HelperContextMixin, ContextWrapper iterator_to_context_set, ContextWrapper, LazyContextWrapper
from jedi.evaluate.lazy_context import LazyKnownContexts from jedi.evaluate.lazy_context import LazyKnownContexts
from jedi.evaluate.context.iterable import SequenceLiteralContext from jedi.evaluate.context.iterable import SequenceLiteralContext
from jedi.evaluate.arguments import repack_with_argument_clinic from jedi.evaluate.arguments import repack_with_argument_clinic
@@ -244,9 +244,9 @@ def _iter_over_arguments(maybe_tuple_context, defining_context):
yield ContextSet(resolve_forward_references(context_set)) yield ContextSet(resolve_forward_references(context_set))
class TypeAlias(HelperContextMixin): class TypeAlias(LazyContextWrapper):
def __init__(self, evaluator, parent_context, origin_tree_name, actual): def __init__(self, parent_context, origin_tree_name, actual):
self.evaluator = evaluator self.evaluator = parent_context.evaluator
self.parent_context = parent_context self.parent_context = parent_context
self._origin_tree_name = origin_tree_name self._origin_tree_name = origin_tree_name
self._actual = actual # e.g. builtins.list self._actual = actual # e.g. builtins.list
@@ -258,14 +258,10 @@ class TypeAlias(HelperContextMixin):
def py__name__(self): def py__name__(self):
return self.name.string_name return self.name.string_name
def __getattr__(self, name):
return getattr(self._get_type_alias_class(), name)
def __repr__(self): def __repr__(self):
return '<%s: %s>' % (self.__class__.__name__, self._actual) return '<%s: %s>' % (self.__class__.__name__, self._actual)
@evaluator_method_cache() def _get_wrapped_context(self):
def _get_type_alias_class(self):
module_name, class_name = self._actual.split('.') module_name, class_name = self._actual.split('.')
if self.evaluator.environment.version_info.major == 2 and module_name == 'builtins': if self.evaluator.environment.version_info.major == 2 and module_name == 'builtins':
module_name = '__builtin__' module_name = '__builtin__'