From 3c90a84f68b4e2a73f3d63d681b3d6ef063234a9 Mon Sep 17 00:00:00 2001 From: Peter Law Date: Sun, 22 Mar 2020 15:47:46 +0000 Subject: [PATCH] Extract common get_generics() calls These no longer need to be guarded by the conditions now that we know these types are generic anyway. --- jedi/inference/gradual/base.py | 7 ++++--- jedi/inference/gradual/typing.py | 13 ++++++------- 2 files changed, 10 insertions(+), 10 deletions(-) diff --git a/jedi/inference/gradual/base.py b/jedi/inference/gradual/base.py index 248a8742..32b321fc 100644 --- a/jedi/inference/gradual/base.py +++ b/jedi/inference/gradual/base.py @@ -207,11 +207,12 @@ class GenericClass(ClassMixin, DefineGenericBase): annotation_name = self.py__name__() type_var_dict = {} if annotation_name == 'Iterable' and not is_class_value: - given = self.get_generics() - if given: - return given[0].infer_type_vars( + annotation_generics = self.get_generics() + if annotation_generics: + return annotation_generics[0].infer_type_vars( value_set.merge_types_of_iterate(), ) + else: # Note: we need to handle the MRO _in order_, so we need to extract # the elements from the set first, then handle them, even if we put diff --git a/jedi/inference/gradual/typing.py b/jedi/inference/gradual/typing.py index b589a8e1..03e5a53d 100644 --- a/jedi/inference/gradual/typing.py +++ b/jedi/inference/gradual/typing.py @@ -187,9 +187,10 @@ class TypingClassValueWithIndex(_TypingClassMixin, TypingValueWithIndex): annotation_name = self.py__name__() type_var_dict = {} + annotation_generics = self.get_generics() + if annotation_name == 'Type': - given = self.get_generics() - if given: + if annotation_generics: if is_class_value: for element in value_set: element_name = element.py__name__() @@ -200,20 +201,18 @@ class TypingClassValueWithIndex(_TypingClassMixin, TypingValueWithIndex): ) else: - return given[0].infer_type_vars( + return annotation_generics[0].infer_type_vars( value_set, is_class_value=True, ) elif annotation_name == 'Callable': - given = self.get_generics() - if len(given) == 2: - return given[1].infer_type_vars( + if len(annotation_generics) == 2: + return annotation_generics[1].infer_type_vars( value_set.execute_annotation(), ) elif annotation_name == 'Tuple': - annotation_generics = self.get_generics() tuple_annotation, = self.execute_annotation() # TODO: is can we avoid using this private method? if tuple_annotation._is_homogenous():