diff --git a/Lib/_pydecimal.py b/Lib/_pydecimal.py index 659e370ca6a..ca6c4bd98d4 100644 --- a/Lib/_pydecimal.py +++ b/Lib/_pydecimal.py @@ -923,15 +923,6 @@ class Decimal(object): return False return self._cmp(other) == 0 - def __ne__(self, other, context=None): - self, other = _convert_for_comparison(self, other, equality_op=True) - if other is NotImplemented: - return other - if self._check_nans(other, context): - return True - return self._cmp(other) != 0 - - def __lt__(self, other, context=None): self, other = _convert_for_comparison(self, other) if other is NotImplemented: diff --git a/Lib/argparse.py b/Lib/argparse.py index be276bb62ff..ba9e3df3806 100644 --- a/Lib/argparse.py +++ b/Lib/argparse.py @@ -1209,11 +1209,6 @@ class Namespace(_AttributeHolder): return NotImplemented return vars(self) == vars(other) - def __ne__(self, other): - if not isinstance(other, Namespace): - return NotImplemented - return not (self == other) - def __contains__(self, key): return key in self.__dict__ diff --git a/Lib/asyncio/events.py b/Lib/asyncio/events.py index 8a7bb814a31..01320cdf62b 100644 --- a/Lib/asyncio/events.py +++ b/Lib/asyncio/events.py @@ -178,10 +178,6 @@ class TimerHandle(Handle): 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) diff --git a/Lib/collections/__init__.py b/Lib/collections/__init__.py index 7925af6050a..ce67f0b3125 100644 --- a/Lib/collections/__init__.py +++ b/Lib/collections/__init__.py @@ -987,7 +987,6 @@ class UserList(MutableSequence): def __lt__(self, other): return self.data < self.__cast(other) def __le__(self, other): return self.data <= self.__cast(other) def __eq__(self, other): return self.data == self.__cast(other) - def __ne__(self, other): return self.data != self.__cast(other) def __gt__(self, other): return self.data > self.__cast(other) def __ge__(self, other): return self.data >= self.__cast(other) def __cast(self, other): @@ -1064,10 +1063,6 @@ class UserString(Sequence): if isinstance(string, UserString): return self.data == string.data return self.data == string - def __ne__(self, string): - if isinstance(string, UserString): - return self.data != string.data - return self.data != string def __lt__(self, string): if isinstance(string, UserString): return self.data < string.data diff --git a/Lib/datetime.py b/Lib/datetime.py index 86c80c3101c..4afe9a53814 100644 --- a/Lib/datetime.py +++ b/Lib/datetime.py @@ -567,12 +567,6 @@ class timedelta: else: return False - def __ne__(self, other): - if isinstance(other, timedelta): - return self._cmp(other) != 0 - else: - return True - def __le__(self, other): if isinstance(other, timedelta): return self._cmp(other) <= 0 @@ -804,11 +798,6 @@ class date: return self._cmp(other) == 0 return NotImplemented - def __ne__(self, other): - if isinstance(other, date): - return self._cmp(other) != 0 - return NotImplemented - def __le__(self, other): if isinstance(other, date): return self._cmp(other) <= 0 @@ -1079,12 +1068,6 @@ class time: else: return False - def __ne__(self, other): - if isinstance(other, time): - return self._cmp(other, allow_mixed=True) != 0 - else: - return True - def __le__(self, other): if isinstance(other, time): return self._cmp(other) <= 0 @@ -1651,14 +1634,6 @@ class datetime(date): else: return False - def __ne__(self, other): - if isinstance(other, datetime): - return self._cmp(other, allow_mixed=True) != 0 - elif not isinstance(other, date): - return NotImplemented - else: - return True - def __le__(self, other): if isinstance(other, datetime): return self._cmp(other) <= 0 diff --git a/Lib/distutils/version.py b/Lib/distutils/version.py index ebcab84e4e2..af14cc13481 100644 --- a/Lib/distutils/version.py +++ b/Lib/distutils/version.py @@ -48,12 +48,6 @@ class Version: return c return c == 0 - def __ne__(self, other): - c = self._cmp(other) - if c is NotImplemented: - return c - return c != 0 - def __lt__(self, other): c = self._cmp(other) if c is NotImplemented: diff --git a/Lib/email/charset.py b/Lib/email/charset.py index e999472355e..ee564040c68 100644 --- a/Lib/email/charset.py +++ b/Lib/email/charset.py @@ -249,9 +249,6 @@ class Charset: def __eq__(self, other): return str(self) == str(other).lower() - def __ne__(self, other): - return not self.__eq__(other) - def get_body_encoding(self): """Return the content-transfer-encoding used for body encoding. diff --git a/Lib/email/header.py b/Lib/email/header.py index 9c89589e6eb..6820ea16baf 100644 --- a/Lib/email/header.py +++ b/Lib/email/header.py @@ -262,9 +262,6 @@ class Header: # args and do another comparison. return other == str(self) - def __ne__(self, other): - return not self == other - def append(self, s, charset=None, errors='strict'): """Append a string to the MIME header. diff --git a/Lib/functools.py b/Lib/functools.py index fa5bfdef091..20a26f9a2c7 100644 --- a/Lib/functools.py +++ b/Lib/functools.py @@ -223,8 +223,6 @@ def cmp_to_key(mycmp): return mycmp(self.obj, other.obj) <= 0 def __ge__(self, other): return mycmp(self.obj, other.obj) >= 0 - def __ne__(self, other): - return mycmp(self.obj, other.obj) != 0 __hash__ = None return K diff --git a/Lib/inspect.py b/Lib/inspect.py index b789d66b5b7..98d665dd45f 100644 --- a/Lib/inspect.py +++ b/Lib/inspect.py @@ -2255,9 +2255,6 @@ class Parameter: self._default == other._default and self._annotation == other._annotation) - def __ne__(self, other): - return not self.__eq__(other) - class BoundArguments: """Result of `Signature.bind` call. Holds the mapping of arguments @@ -2342,9 +2339,6 @@ class BoundArguments: self.signature == other.signature and self.arguments == other.arguments) - def __ne__(self, other): - return not self.__eq__(other) - class Signature: """A Signature object represents the overall signature of a function. @@ -2559,9 +2553,6 @@ class Signature: return (isinstance(other, Signature) and self._hash_basis() == other._hash_basis()) - def __ne__(self, other): - return not self.__eq__(other) - def _bind(self, args, kwargs, *, partial=False): """Private method. Don't use directly.""" diff --git a/Lib/sched.py b/Lib/sched.py index 409d126ef5e..b47648d973a 100644 --- a/Lib/sched.py +++ b/Lib/sched.py @@ -41,7 +41,6 @@ __all__ = ["scheduler"] class Event(namedtuple('Event', 'time, priority, action, argument, kwargs')): def __eq__(s, o): return (s.time, s.priority) == (o.time, o.priority) - def __ne__(s, o): return (s.time, s.priority) != (o.time, o.priority) def __lt__(s, o): return (s.time, s.priority) < (o.time, o.priority) def __le__(s, o): return (s.time, s.priority) <= (o.time, o.priority) def __gt__(s, o): return (s.time, s.priority) > (o.time, o.priority) diff --git a/Lib/test/datetimetester.py b/Lib/test/datetimetester.py index 564ff522439..7935cf23204 100644 --- a/Lib/test/datetimetester.py +++ b/Lib/test/datetimetester.py @@ -1305,8 +1305,6 @@ class TestDate(HarmlessMixedComparison, unittest.TestCase): return isinstance(other, LargerThanAnything) def __eq__(self, other): return isinstance(other, LargerThanAnything) - def __ne__(self, other): - return not isinstance(other, LargerThanAnything) def __gt__(self, other): return not isinstance(other, LargerThanAnything) def __ge__(self, other): diff --git a/Lib/test/test_argparse.py b/Lib/test/test_argparse.py index d7e6cda60a5..a0b91628aca 100644 --- a/Lib/test/test_argparse.py +++ b/Lib/test/test_argparse.py @@ -69,9 +69,6 @@ class NS(object): def __eq__(self, other): return vars(self) == vars(other) - def __ne__(self, other): - return not (self == other) - class ArgumentParserError(Exception): diff --git a/Lib/test/test_long.py b/Lib/test/test_long.py index 5f14795649a..57847d88f74 100644 --- a/Lib/test/test_long.py +++ b/Lib/test/test_long.py @@ -599,8 +599,6 @@ class LongTest(unittest.TestCase): return (x > y) - (x < y) def __eq__(self, other): return self._cmp__(other) == 0 - def __ne__(self, other): - return self._cmp__(other) != 0 def __ge__(self, other): return self._cmp__(other) >= 0 def __gt__(self, other): diff --git a/Lib/unittest/mock.py b/Lib/unittest/mock.py index 9d9b3e21cca..3b7c157c7d4 100644 --- a/Lib/unittest/mock.py +++ b/Lib/unittest/mock.py @@ -2015,10 +2015,6 @@ class _Call(tuple): return (other_args, other_kwargs) == (self_args, self_kwargs) - def __ne__(self, other): - return not self.__eq__(other) - - def __call__(self, *args, **kwargs): if self.name is None: return _Call(('', args, kwargs), name='()') diff --git a/Lib/uuid.py b/Lib/uuid.py index 7b0b413966c..e627573969c 100644 --- a/Lib/uuid.py +++ b/Lib/uuid.py @@ -185,11 +185,6 @@ class UUID(object): return self.int == other.int return NotImplemented - def __ne__(self, other): - if isinstance(other, UUID): - return self.int != other.int - return NotImplemented - # Q. What's the value of being able to sort UUIDs? # A. Use them as keys in a B-Tree or similar mapping. diff --git a/Lib/xml/dom/minidom.py b/Lib/xml/dom/minidom.py index c76b14d6a4c..a5d813f932a 100644 --- a/Lib/xml/dom/minidom.py +++ b/Lib/xml/dom/minidom.py @@ -545,9 +545,6 @@ class NamedNodeMap(object): def __lt__(self, other): return self._cmp(other) < 0 - def __ne__(self, other): - return self._cmp(other) != 0 - def __getitem__(self, attname_or_tuple): if isinstance(attname_or_tuple, tuple): return self._attrsNS[attname_or_tuple] diff --git a/Lib/xml/etree/ElementTree.py b/Lib/xml/etree/ElementTree.py index ca6c7d6f718..4c109a2f612 100644 --- a/Lib/xml/etree/ElementTree.py +++ b/Lib/xml/etree/ElementTree.py @@ -532,10 +532,6 @@ class QName: if isinstance(other, QName): return self.text == other.text return self.text == other - def __ne__(self, other): - if isinstance(other, QName): - return self.text != other.text - return self.text != other # -------------------------------------------------------------------- diff --git a/Lib/xmlrpc/client.py b/Lib/xmlrpc/client.py index 94350151449..047929a8611 100644 --- a/Lib/xmlrpc/client.py +++ b/Lib/xmlrpc/client.py @@ -340,10 +340,6 @@ class DateTime: s, o = self.make_comparable(other) return s == o - def __ne__(self, other): - s, o = self.make_comparable(other) - return s != o - def timetuple(self): return time.strptime(self.value, "%Y%m%dT%H:%M:%S") @@ -407,11 +403,6 @@ class Binary: other = other.data return self.data == other - def __ne__(self, other): - if isinstance(other, Binary): - other = other.data - return self.data != other - def decode(self, data): self.data = base64.decodebytes(data) diff --git a/Misc/NEWS b/Misc/NEWS index 01af9d6f6f0..1588a2228e8 100644 --- a/Misc/NEWS +++ b/Misc/NEWS @@ -226,6 +226,9 @@ Core and Builtins Library ------- +- Issue #23326: Removed __ne__ implementations. Since fixing default __ne__ + implementation in issue #21408 they are redundant. + - Issue #14099: Restored support of writing ZIP files to tellable but non-seekable streams.