-
-
Notifications
You must be signed in to change notification settings - Fork 1.9k
Closed
Description
In builtins.pyi
there is:
def __eq__(self, __o: object) -> bool: ...
def __ne__(self, __o: object) -> bool: ...
But I think that both of these methods should return object
. I believe that they eventually get called in CPython by tp_richcompare
which doesn't necessarily return bool
(https://github.com/python/cpython/blob/1626bf4ac7aef1244e6f886e63a31f7ed65fbd10/Objects/object.c#L655).
There is Python code that takes advantage of this to override ==
to return something other than a bool (e.g., numpy arrays). Type checking code like that against the typeshed type stubs leads to incompatible overrides (e.g., numpy array is not a subtype of bool
).
Should these methods be annotated as returning object
?
Metadata
Metadata
Assignees
Labels
No labels