mirror of
https://github.com/davidhalter/jedi.git
synced 2025-12-07 14:34:31 +08:00
Merge GenericClass and _AbstractAnnotatedClass
This commit is contained in:
@@ -132,7 +132,7 @@ class DefineGenericBase(LazyValueWrapper):
|
|||||||
for generic_set in self.get_generics():
|
for generic_set in self.get_generics():
|
||||||
values = NO_VALUES
|
values = NO_VALUES
|
||||||
for generic in generic_set:
|
for generic in generic_set:
|
||||||
if isinstance(generic, (_AbstractAnnotatedClass, TypeVar)):
|
if isinstance(generic, (GenericClass, TypeVar)):
|
||||||
result = generic.define_generics(type_var_dict)
|
result = generic.define_generics(type_var_dict)
|
||||||
values |= result
|
values |= result
|
||||||
if result != ValueSet({generic}):
|
if result != ValueSet({generic}):
|
||||||
@@ -185,18 +185,19 @@ class DefineGenericBase(LazyValueWrapper):
|
|||||||
)
|
)
|
||||||
|
|
||||||
|
|
||||||
class _AbstractAnnotatedClass(ClassMixin, DefineGenericBase):
|
class GenericClass(ClassMixin, DefineGenericBase):
|
||||||
def __init__(self, wrapped_class):
|
def __init__(self, class_value, generics_manager):
|
||||||
self._wrapped_class = wrapped_class
|
self._class_value = class_value
|
||||||
|
self._generics_manager = generics_manager
|
||||||
|
|
||||||
def _get_wrapped_value(self):
|
def _get_wrapped_value(self):
|
||||||
return self._wrapped_class
|
return self._class_value
|
||||||
|
|
||||||
def get_type_var_filter(self):
|
def get_type_var_filter(self):
|
||||||
return TypeVarFilter(self.get_generics(), self.list_type_vars())
|
return TypeVarFilter(self.get_generics(), self.list_type_vars())
|
||||||
|
|
||||||
def py__call__(self, arguments):
|
def py__call__(self, arguments):
|
||||||
instance, = super(_AbstractAnnotatedClass, self).py__call__(arguments)
|
instance, = super(GenericClass, self).py__call__(arguments)
|
||||||
return ValueSet([_InstanceWrapper(instance)])
|
return ValueSet([_InstanceWrapper(instance)])
|
||||||
|
|
||||||
def _as_context(self):
|
def _as_context(self):
|
||||||
@@ -207,12 +208,6 @@ class _AbstractAnnotatedClass(ClassMixin, DefineGenericBase):
|
|||||||
for base in self._wrapped_value.py__bases__():
|
for base in self._wrapped_value.py__bases__():
|
||||||
yield _LazyAnnotatedBaseClass(self, base)
|
yield _LazyAnnotatedBaseClass(self, base)
|
||||||
|
|
||||||
|
|
||||||
class GenericClass(_AbstractAnnotatedClass):
|
|
||||||
def __init__(self, class_value, generics_manager):
|
|
||||||
super(GenericClass, self).__init__(class_value)
|
|
||||||
self._generics_manager = generics_manager
|
|
||||||
|
|
||||||
@inference_state_method_cache()
|
@inference_state_method_cache()
|
||||||
def get_generics(self):
|
def get_generics(self):
|
||||||
return self._generics_manager.to_tuple()
|
return self._generics_manager.to_tuple()
|
||||||
@@ -226,7 +221,7 @@ class _LazyAnnotatedBaseClass(object):
|
|||||||
@iterator_to_value_set
|
@iterator_to_value_set
|
||||||
def infer(self):
|
def infer(self):
|
||||||
for base in self._lazy_base_class.infer():
|
for base in self._lazy_base_class.infer():
|
||||||
if isinstance(base, _AbstractAnnotatedClass):
|
if isinstance(base, GenericClass):
|
||||||
# Here we have to recalculate the given types.
|
# Here we have to recalculate the given types.
|
||||||
yield GenericClass.create_cached(
|
yield GenericClass.create_cached(
|
||||||
base.inference_state,
|
base.inference_state,
|
||||||
|
|||||||
Reference in New Issue
Block a user