Skip to content

Presence of property in Protocol causes false positive in multiple inheritance scenario #16873

Closed
@slanzmich

Description

@slanzmich

Bug Report

I'm getting a false positive from the following example

from typing import Protocol
from typing_extensions import Self

class P(Protocol):
    # Removing the property makes the problem disappear
    @property
    def x(self) -> int: ...

    def clone(self) -> Self: ...

class A:
    def clone(self) -> Self:
        return self

class B(A, P):
    @property
    def x(self) -> int:
        return 100
main.py:18: error: Definition of "clone" in base class "A" is incompatible with definition in base class "P"  [misc]

Obviously, A.clone does not actually clone the instance, but that is left out for clarity.

The false positive is not reported when I remove the property x from the protocol P.

To Reproduce

https://mypy-play.net/?mypy=latest&python=3.12&gist=fe15d8bc18aa7b61feb3e56fce615f47

Metadata

Metadata

Assignees

No one assigned

    Labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions