bpo-37685: Fixed __eq__, __lt__ etc implementations in some classes. (GH-14952)
They now return NotImplemented for unsupported type of the other operand.
diff --git a/Lib/asyncio/events.py b/Lib/asyncio/events.py
index d381b1c..5fb5464 100644
--- a/Lib/asyncio/events.py
+++ b/Lib/asyncio/events.py
@@ -119,20 +119,24 @@
return hash(self._when)
def __lt__(self, other):
- return self._when < other._when
+ if isinstance(other, TimerHandle):
+ return self._when < other._when
+ return NotImplemented
def __le__(self, other):
- if self._when < other._when:
- return True
- return self.__eq__(other)
+ if isinstance(other, TimerHandle):
+ return self._when < other._when or self.__eq__(other)
+ return NotImplemented
def __gt__(self, other):
- return self._when > other._when
+ if isinstance(other, TimerHandle):
+ return self._when > other._when
+ return NotImplemented
def __ge__(self, other):
- if self._when > other._when:
- return True
- return self.__eq__(other)
+ if isinstance(other, TimerHandle):
+ return self._when > other._when or self.__eq__(other)
+ return NotImplemented
def __eq__(self, other):
if isinstance(other, TimerHandle):
@@ -142,10 +146,6 @@
self._cancelled == other._cancelled)
return NotImplemented
- def __ne__(self, other):
- equal = self.__eq__(other)
- return NotImplemented if equal is NotImplemented else not equal
-
def cancel(self):
if not self._cancelled:
self._loop._timer_handle_cancelled(self)