Skip to content

Emit diagnostic on issubclass calls against protocols with non-method members #1878

@AlexWaygood

Description

@AlexWaygood
>>> from typing import Protocol, runtime_checkable
>>> @runtime_checkable
... class X(Protocol):
...     y: int
...     
>>> issubclass(int, X)
Traceback (most recent call last):
  File "<string>", line 1, in <module>
  File "/var/containers/Bundle/Application/55202DCD-E142-4072-8C28-8E3DDC7B66E2/Pythonista3.app/Frameworks/Py3Kit.framework/pylib/abc.py", line 124, in __subclasscheck__
    return _abc_subclasscheck(cls, subclass)
  File "/var/containers/Bundle/Application/55202DCD-E142-4072-8C28-8E3DDC7B66E2/Pythonista3.app/Frameworks/Py3Kit.framework/pylib/typing.py", line 1570, in _proto_hook
    raise TypeError("Protocols with non-method members"
TypeError: Protocols with non-method members don't support issubclass()

Metadata

Metadata

Assignees

No one assigned

    Labels

    Type

    No type

    Projects

    No projects

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions