diff --git a/Lib/test/test_heapq.py b/Lib/test/test_heapq.py index fba4fd71f85..484ab482887 100644 --- a/Lib/test/test_heapq.py +++ b/Lib/test/test_heapq.py @@ -198,7 +198,8 @@ class TestHeapC(TestHeap): module = c_heapq def test_comparison_operator(self): - # Issue 3501: Make sure heapq works with both __lt__ and __le__ + # Issue 3501: Make sure heapq works with both __lt__ + # For python 3.0, __le__ alone is not enough def hsort(data, comp): data = [comp(x) for x in data] self.module.heapify(data) @@ -215,9 +216,8 @@ class TestHeapC(TestHeap): return self.x >= other.x data = [random.random() for i in range(100)] target = sorted(data, reverse=True) - print("HASATTR", hasattr(LE(0), "__lt__"), LE(0).__lt__) self.assertEqual(hsort(data, LT), target) - self.assertEqual(hsort(data, LE), target) + self.assertRaises(TypeError, data, LE) #============================================================================== diff --git a/Modules/_heapqmodule.c b/Modules/_heapqmodule.c index 4cf6c95bb81..7921823696f 100644 --- a/Modules/_heapqmodule.c +++ b/Modules/_heapqmodule.c @@ -8,28 +8,10 @@ annotated by Fran #include "Python.h" -/* Older implementations of heapq used Py_LE for comparisons. Now, it uses - Py_LT so it will match min(), sorted(), and bisect(). Unfortunately, some - client code (Twisted for example) relied on Py_LE, so this little function - restores compatability by trying both. -*/ static int cmp_lt(PyObject *x, PyObject *y) { - int cmp; - static PyObject *lt = NULL; - - if (lt == NULL) { - lt = PyUnicode_FromString("__lt__"); - if (lt == NULL) - return -1; - } - if (PyObject_HasAttr(x, lt)) - return PyObject_RichCompareBool(x, y, Py_LT); - cmp = PyObject_RichCompareBool(y, x, Py_LE); - if (cmp != -1) - cmp = 1 - cmp; - return cmp; + return PyObject_RichCompareBool(x, y, Py_LT); } static int