Skip to content

Non-runtime_checkable subclass of a runtime_checkable Protocol allows isinstance() #132604

Open
@JelleZijlstra

Description

@JelleZijlstra

Bug report

Bug description:

I would expect this to raise, but it passes on all versions:

from typing import runtime_checkable, Protocol
@runtime_checkable
class Foo(Protocol):
    x: int
class Bar(Foo, Protocol):
    y: str
isinstance(object(), Bar)

Some previous discussion in #132596 (comment) . We may not want to change this behavior for compatibility reasons, but I think it's a bug so I'm at least opening the issue.

CPython versions tested on:

CPython main branch, 3.13

Operating systems tested on:

macOS

Metadata

Metadata

Assignees

No one assigned

    Labels

    stdlibPython modules in the Lib dirtopic-typingtype-bugAn unexpected behavior, bug, or error

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions