From 9eef771ec52ed6824c6a689bba36dabbebfc99cd Mon Sep 17 00:00:00 2001 From: Dave Halter Date: Sun, 8 Dec 2019 22:55:52 +0100 Subject: [PATCH] Remove get_index_and_execute and use something else --- jedi/inference/gradual/generics.py | 16 +++++++++++++--- jedi/inference/gradual/typing.py | 27 +++++++++------------------ 2 files changed, 22 insertions(+), 21 deletions(-) diff --git a/jedi/inference/gradual/generics.py b/jedi/inference/gradual/generics.py index b064b60a..5d1bcd14 100644 --- a/jedi/inference/gradual/generics.py +++ b/jedi/inference/gradual/generics.py @@ -3,9 +3,10 @@ This module is about generics, like the `int` in `List[int]`. It's not about the Generic class. """ +from jedi import debug from jedi.cache import memoize_method from jedi.inference.utils import to_tuple -from jedi.inference.base_value import ValueSet +from jedi.inference.base_value import ValueSet, NO_VALUES from jedi.inference.value.iterable import SequenceLiteralValue from jedi.inference.helpers import is_string @@ -22,7 +23,16 @@ def _resolve_forward_references(context, value_set): yield value -class LazyGenericManager(object): +class _AbstractGenericManager(object): + def get_index_and_execute(self, index): + try: + return self[index].execute_annotation() + except IndexError: + debug.warning('No param #%s found for annotation %s', index, self) + return NO_VALUES + + +class LazyGenericManager(_AbstractGenericManager): def __init__(self, context_of_index, index_value): self._context_of_index = context_of_index self._index_value = index_value @@ -65,7 +75,7 @@ class LazyGenericManager(object): return False -class TupleGenericManager(object): +class TupleGenericManager(_AbstractGenericManager): def __init__(self, tup): self._tuple = tup diff --git a/jedi/inference/gradual/typing.py b/jedi/inference/gradual/typing.py index 8a156c3d..0a70896e 100644 --- a/jedi/inference/gradual/typing.py +++ b/jedi/inference/gradual/typing.py @@ -219,22 +219,13 @@ class TypeAlias(LazyValueWrapper): return cls -class _GetItemMixin(object): - def _get_getitem_values(self, index): - try: - return self._generics_manager[index] - except IndexError: - debug.warning('No param #%s found for annotation %s', index, self._generics_manager) - return NO_VALUES - - -class Callable(_WithIndexBase, _GetItemMixin): +class Callable(_WithIndexBase): def py__call__(self, arguments): # The 0th index are the arguments. - return self._get_getitem_values(1).execute_annotation() + return self._generics_manager.get_index_and_execute(1) -class Tuple(LazyValueWrapper, _GetItemMixin): +class Tuple(LazyValueWrapper): def __init__(self, inference_state, parent_context, name, generics_manager): self.inference_state = inference_state self.parent_context = parent_context @@ -247,24 +238,24 @@ class Tuple(LazyValueWrapper, _GetItemMixin): def py__simple_getitem__(self, index): if self._is_homogenous(): - return self._get_getitem_values(0).execute_annotation() + return self._generics_manager.get_index_and_execute(0) else: if isinstance(index, int): - return self._get_getitem_values(index).execute_annotation() + return self._generics_manager.get_index_and_execute(index) debug.dbg('The getitem type on Tuple was %s' % index) return NO_VALUES def py__iter__(self, contextualized_node=None): if self._is_homogenous(): - yield LazyKnownValues(self._get_getitem_values(0).execute_annotation()) + yield LazyKnownValues(self._generics_manager.get_index_and_execute(0)) else: for v in self._generics_manager.to_tuple(): yield LazyKnownValues(v.execute_annotation()) def py__getitem__(self, index_value_set, contextualized_node): if self._is_homogenous(): - return self._get_getitem_values(0).execute_annotation() + return self._generics_manager.get_index_and_execute(0) return ValueSet.from_sets( self._generics_manager.to_tuple() @@ -276,11 +267,11 @@ class Tuple(LazyValueWrapper, _GetItemMixin): return tuple_ -class Generic(_WithIndexBase, _GetItemMixin): +class Generic(_WithIndexBase): pass -class Protocol(_WithIndexBase, _GetItemMixin): +class Protocol(_WithIndexBase): pass