Avoid AttributeErrors for generics when a module is passed

This commit is contained in:
Dave Halter
2020-04-01 01:50:54 +02:00
parent 28f256d2a6
commit ebb2786748
2 changed files with 14 additions and 8 deletions

View File

@@ -217,18 +217,19 @@ class GenericClass(ClassMixin, DefineGenericBase):
# 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
# them back in a set afterwards.
for element in value_set:
if element.api_type == u'function':
# Functions & methods don't have an MRO and we're not
for py_class in value_set:
if not is_class_value:
if py_class.is_instance():
py_class = py_class.get_annotated_class_object()
else:
continue
if py_class.api_type != u'class':
# Functions & modules don't have an MRO and we're not
# expecting a Callable (those are handled separately within
# TypingClassValueWithIndex).
continue
if element.is_instance():
py_class = element.get_annotated_class_object()
else:
py_class = element
for parent_class in py_class.py__mro__():
class_name = parent_class.py__name__()
if annotation_name == class_name:

View File

@@ -1,4 +1,5 @@
# python >= 3.4
import typing
from typing import (
Callable,
Dict,
@@ -51,6 +52,10 @@ x1 = list_t_to_list_t(foo)[0]
#?
x1
x1 = list_t_to_list_t(typing)[0]
#?
x1
x2 = list_t_to_list_t(tpl)[0]
#?
x2