New submission from Dmitry Marakasov <amd...@amdmi3.ru>:

Here's a curious problem. issubclass() check of a type against an ABC-derived 
class raises TypeError claiming that type is not a class, however 
inspect.isclass() says it's a class, and issubclass() check against a simple 
class works fine:

```
from abc import ABC

class C1:
    pass

issubclass(dict[str, str], C1)  # False

class C2(ABC):
    pass

issubclass(dict[str, str], C2)  # TypeError: issubclass() arg 1 must be a class
```

I've ran into this problem while using `inspect` module to look for subclasses 
of a specific ABC in a module which may also contain type aliases, and after 
converting a type alias from `Dict[str, str]` to modern `dict[str, str]` I've 
got an unexpected crash in this code:

    if inspect.isclass(member) and issubclass(member, superclass):

Not sure which is the culprit, ABC or how dict[]-style type aliases are 
implemented.

----------
components: Library (Lib)
messages: 402914
nosy: AMDmi3
priority: normal
severity: normal
status: open
title: Unexpected TypeError with type alias+issubclass+ABC
versions: Python 3.9

_______________________________________
Python tracker <rep...@bugs.python.org>
<https://bugs.python.org/issue45326>
_______________________________________
_______________________________________________
Python-bugs-list mailing list
Unsubscribe: 
https://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com

Reply via email to