Closed
Description
If I run mypy on the following code:
class Base:
value = 123
@property
def x(self) -> int:
return self.value
@x.setter
def x(self, value: int) -> None:
self.value = value
class Sub(Base):
@property
def x(self) -> bool:
return self.value != 0
@x.setter
def x(self, value: int) -> None:
self.value = value
It reports:
error: Signature of "x" incompatible with supertype "Base" [override]
I'd expect mypy to not report any error, as bool
is a subtype of int
and therefore the property type returned by the subclass always conforms to the property type defined in the superclass.
This problem only occurs for writable properties: if I remove the setter definitions from both the superclass and the subclass, no false positive is reported.
I can produce this problem using mypy 0.991 on Python 3.10.8. When using mypy 0.981 instead, no false positive is reported.