forked from VimPlug/jedi
given_types -> generics
This commit is contained in:
@@ -274,7 +274,7 @@ class ClassContext(use_metaclass(CachedMetaClass, ClassMixin, FunctionAndClassBa
|
|||||||
if type_var_dict:
|
if type_var_dict:
|
||||||
return AnnotatedSubClass(
|
return AnnotatedSubClass(
|
||||||
self,
|
self,
|
||||||
given_types=tuple(remap_type_vars())
|
generics=tuple(remap_type_vars())
|
||||||
)
|
)
|
||||||
return self
|
return self
|
||||||
|
|
||||||
|
|||||||
@@ -277,7 +277,7 @@ def _infer_type_vars(annotation_context, context_set):
|
|||||||
elif isinstance(annotation_context, AnnotatedClass):
|
elif isinstance(annotation_context, AnnotatedClass):
|
||||||
name = annotation_context.py__name__()
|
name = annotation_context.py__name__()
|
||||||
if name == 'Iterable':
|
if name == 'Iterable':
|
||||||
given = annotation_context.get_given_types()
|
given = annotation_context.get_generics()
|
||||||
if given:
|
if given:
|
||||||
for nested_annotation_context in given[0]:
|
for nested_annotation_context in given[0]:
|
||||||
_merge_type_var_dicts(
|
_merge_type_var_dicts(
|
||||||
@@ -288,7 +288,7 @@ def _infer_type_vars(annotation_context, context_set):
|
|||||||
)
|
)
|
||||||
)
|
)
|
||||||
elif name == 'Mapping':
|
elif name == 'Mapping':
|
||||||
given = annotation_context.get_given_types()
|
given = annotation_context.get_generics()
|
||||||
if len(given) == 2:
|
if len(given) == 2:
|
||||||
for context in context_set:
|
for context in context_set:
|
||||||
try:
|
try:
|
||||||
|
|||||||
@@ -492,15 +492,15 @@ class TypeVarFilter(object):
|
|||||||
|
|
||||||
In this example we would have two type vars given: A and B
|
In this example we would have two type vars given: A and B
|
||||||
"""
|
"""
|
||||||
def __init__(self, given_types, type_vars):
|
def __init__(self, generics, type_vars):
|
||||||
self._given_types = given_types
|
self._generics = generics
|
||||||
self._type_vars = type_vars
|
self._type_vars = type_vars
|
||||||
|
|
||||||
def get(self, name):
|
def get(self, name):
|
||||||
for i, type_var in enumerate(self._type_vars):
|
for i, type_var in enumerate(self._type_vars):
|
||||||
if type_var.py__name__() == name:
|
if type_var.py__name__() == name:
|
||||||
try:
|
try:
|
||||||
return [BoundTypeVarName(type_var, self._given_types[i])]
|
return [BoundTypeVarName(type_var, self._generics[i])]
|
||||||
except IndexError:
|
except IndexError:
|
||||||
return [type_var.name]
|
return [type_var.name]
|
||||||
return []
|
return []
|
||||||
@@ -513,7 +513,7 @@ class TypeVarFilter(object):
|
|||||||
|
|
||||||
class AbstractAnnotatedClass(ClassMixin, ContextWrapper):
|
class AbstractAnnotatedClass(ClassMixin, ContextWrapper):
|
||||||
def get_type_var_filter(self):
|
def get_type_var_filter(self):
|
||||||
return TypeVarFilter(self.get_given_types(), self.list_type_vars())
|
return TypeVarFilter(self.get_generics(), self.list_type_vars())
|
||||||
|
|
||||||
def get_filters(self, search_global=False, *args, **kwargs):
|
def get_filters(self, search_global=False, *args, **kwargs):
|
||||||
filters = super(AbstractAnnotatedClass, self).get_filters(
|
filters = super(AbstractAnnotatedClass, self).get_filters(
|
||||||
@@ -535,8 +535,8 @@ class AbstractAnnotatedClass(ClassMixin, ContextWrapper):
|
|||||||
if self.tree_node != other.tree_node:
|
if self.tree_node != other.tree_node:
|
||||||
# TODO not sure if this is nice.
|
# TODO not sure if this is nice.
|
||||||
return False
|
return False
|
||||||
given_params1 = self.get_given_types()
|
given_params1 = self.get_generics()
|
||||||
given_params2 = other.get_given_types()
|
given_params2 = other.get_generics()
|
||||||
|
|
||||||
if len(given_params1) != len(given_params2):
|
if len(given_params1) != len(given_params2):
|
||||||
# If the amount of type vars doesn't match, the class doesn't
|
# If the amount of type vars doesn't match, the class doesn't
|
||||||
@@ -557,13 +557,13 @@ class AbstractAnnotatedClass(ClassMixin, ContextWrapper):
|
|||||||
instance, = super(AbstractAnnotatedClass, self).py__call__(arguments)
|
instance, = super(AbstractAnnotatedClass, self).py__call__(arguments)
|
||||||
return ContextSet([InstanceWrapper(instance)])
|
return ContextSet([InstanceWrapper(instance)])
|
||||||
|
|
||||||
def get_given_types(self):
|
def get_generics(self):
|
||||||
raise NotImplementedError
|
raise NotImplementedError
|
||||||
|
|
||||||
def define_generics(self, type_var_dict):
|
def define_generics(self, type_var_dict):
|
||||||
changed = False
|
changed = False
|
||||||
new_generics = []
|
new_generics = []
|
||||||
for generic_set in self.get_given_types():
|
for generic_set in self.get_generics():
|
||||||
contexts = NO_CONTEXTS
|
contexts = NO_CONTEXTS
|
||||||
for generic in generic_set:
|
for generic in generic_set:
|
||||||
if isinstance(generic, AbstractAnnotatedClass):
|
if isinstance(generic, AbstractAnnotatedClass):
|
||||||
@@ -590,14 +590,14 @@ class AbstractAnnotatedClass(ClassMixin, ContextWrapper):
|
|||||||
|
|
||||||
return AnnotatedSubClass(
|
return AnnotatedSubClass(
|
||||||
self._wrapped_context,
|
self._wrapped_context,
|
||||||
given_types=tuple(new_generics)
|
generics=tuple(new_generics)
|
||||||
)
|
)
|
||||||
|
|
||||||
def __repr__(self):
|
def __repr__(self):
|
||||||
return '<%s: %s%s>' % (
|
return '<%s: %s%s>' % (
|
||||||
self.__class__.__name__,
|
self.__class__.__name__,
|
||||||
self._wrapped_context,
|
self._wrapped_context,
|
||||||
list(self.get_given_types()),
|
list(self.get_generics()),
|
||||||
)
|
)
|
||||||
|
|
||||||
@to_list
|
@to_list
|
||||||
@@ -613,7 +613,7 @@ class AnnotatedClass(AbstractAnnotatedClass):
|
|||||||
self._context_of_index = context_of_index
|
self._context_of_index = context_of_index
|
||||||
|
|
||||||
@evaluator_method_cache()
|
@evaluator_method_cache()
|
||||||
def get_given_types(self):
|
def get_generics(self):
|
||||||
return list(_iter_over_arguments(self._index_context, self._context_of_index))
|
return list(_iter_over_arguments(self._index_context, self._context_of_index))
|
||||||
|
|
||||||
def annotate_other_class(self, cls):
|
def annotate_other_class(self, cls):
|
||||||
@@ -621,12 +621,12 @@ class AnnotatedClass(AbstractAnnotatedClass):
|
|||||||
|
|
||||||
|
|
||||||
class AnnotatedSubClass(AbstractAnnotatedClass):
|
class AnnotatedSubClass(AbstractAnnotatedClass):
|
||||||
def __init__(self, class_context, given_types):
|
def __init__(self, class_context, generics):
|
||||||
super(AnnotatedSubClass, self).__init__(class_context)
|
super(AnnotatedSubClass, self).__init__(class_context)
|
||||||
self._given_types = given_types
|
self._generics = generics
|
||||||
|
|
||||||
def get_given_types(self):
|
def get_generics(self):
|
||||||
return self._given_types
|
return self._generics
|
||||||
|
|
||||||
|
|
||||||
class LazyAnnotatedBaseClass(object):
|
class LazyAnnotatedBaseClass(object):
|
||||||
@@ -649,7 +649,7 @@ class LazyAnnotatedBaseClass(object):
|
|||||||
|
|
||||||
def _remap_type_vars(self, base):
|
def _remap_type_vars(self, base):
|
||||||
filter = self._class_context.get_type_var_filter()
|
filter = self._class_context.get_type_var_filter()
|
||||||
for type_var_set in base.get_given_types():
|
for type_var_set in base.get_generics():
|
||||||
new = NO_CONTEXTS
|
new = NO_CONTEXTS
|
||||||
for type_var in type_var_set:
|
for type_var in type_var_set:
|
||||||
if isinstance(type_var, TypeVar):
|
if isinstance(type_var, TypeVar):
|
||||||
@@ -669,9 +669,9 @@ class InstanceWrapper(ContextWrapper):
|
|||||||
def py__stop_iteration_returns(self):
|
def py__stop_iteration_returns(self):
|
||||||
for cls in self._wrapped_context.class_context.py__mro__():
|
for cls in self._wrapped_context.class_context.py__mro__():
|
||||||
if cls.py__name__() == 'Generator':
|
if cls.py__name__() == 'Generator':
|
||||||
given_types = cls.get_given_types()
|
generics = cls.get_generics()
|
||||||
try:
|
try:
|
||||||
return given_types[2].execute_annotation()
|
return generics[2].execute_annotation()
|
||||||
except IndexError:
|
except IndexError:
|
||||||
pass
|
pass
|
||||||
elif cls.py__name__() == 'Iterator':
|
elif cls.py__name__() == 'Iterator':
|
||||||
|
|||||||
Reference in New Issue
Block a user