From e87ab3fefed00618992f5fe60a95ec9487e6303f Mon Sep 17 00:00:00 2001
From: Raymond Hettinger <python@rcn.com>
Date: Sat, 24 Aug 2002 07:33:06 +0000
Subject: [PATCH] Removed < <= > >= from the API.  Implemented as comparisons
 of the underlying dictionaries, there were no reasonable use cases
 (lexicographic sorting of a list of sets is somewhat esoteric).  Frees the
 operators for other uses (such as strict subset and superset comparisons).

Updated documentation and test suite accordingly.
---
 Doc/lib/libsets.tex   |  5 ++---
 Lib/sets.py           | 19 +------------------
 Lib/test/test_sets.py |  4 ++--
 3 files changed, 5 insertions(+), 23 deletions(-)

diff --git a/Doc/lib/libsets.tex b/Doc/lib/libsets.tex
index 5f199a0ce1..8ce62c8898 100644
--- a/Doc/lib/libsets.tex
+++ b/Doc/lib/libsets.tex
@@ -100,9 +100,8 @@ the following operations:
 \end{tableii}
 
 In addition to the above operations, both \class{Set} and \class{ImmutableSet}
-support set to set comparison operators based on the contents of their
-internal dictionaries.  Two sets are equal if and only if every element of
-each set is contained in the other.
+support set to set equality comparisons.  Two sets are equal if and only if
+every element of each set is contained in the other.
 
 The following table lists operations available in \class{ImmutableSet}
 but not found in \class{Set}:
diff --git a/Lib/sets.py b/Lib/sets.py
index 09d9918c69..d42259108c 100644
--- a/Lib/sets.py
+++ b/Lib/sets.py
@@ -102,16 +102,7 @@ class BaseSet(object):
         """
         return self._data.iterkeys()
 
-    # Comparisons.  Ordering is determined by the ordering of the
-    # underlying dicts (which is consistent though unpredictable).
-
-    def __lt__(self, other):
-        self._binary_sanity_check(other)
-        return self._data < other._data
-
-    def __le__(self, other):
-        self._binary_sanity_check(other)
-        return self._data <= other._data
+    # Equality comparisons using the underlying dicts
 
     def __eq__(self, other):
         self._binary_sanity_check(other)
@@ -121,14 +112,6 @@ class BaseSet(object):
         self._binary_sanity_check(other)
         return self._data != other._data
 
-    def __gt__(self, other):
-        self._binary_sanity_check(other)
-        return self._data > other._data
-
-    def __ge__(self, other):
-        self._binary_sanity_check(other)
-        return self._data >= other._data
-
     # Copying operations
 
     def copy(self):
diff --git a/Lib/test/test_sets.py b/Lib/test/test_sets.py
index 9ff98a6503..65b48e2d8d 100644
--- a/Lib/test/test_sets.py
+++ b/Lib/test/test_sets.py
@@ -419,12 +419,12 @@ class TestOnlySetsInBinaryOps(unittest.TestCase):
 
     def test_cmp(self):
         try:
-            self.other < self.set
+            self.other == self.set
             assert 0, "Comparison with non-set on left"
         except TypeError:
             pass
         try:
-            self.set >= self.other
+            self.set != self.other
             assert 0, "Comparison with non-set on right"
         except TypeError:
             pass
-- 
2.40.0