]> granicus.if.org Git - python/commitdiff
Merged revisions 73774 via svnmerge from
authorBenjamin Peterson <benjamin@python.org>
Thu, 2 Jul 2009 17:19:22 +0000 (17:19 +0000)
committerBenjamin Peterson <benjamin@python.org>
Thu, 2 Jul 2009 17:19:22 +0000 (17:19 +0000)
svn+ssh://pythondev@svn.python.org/python/trunk

........
  r73774 | benjamin.peterson | 2009-07-02 12:06:17 -0500 (Thu, 02 Jul 2009) | 1 line

  only order comparisons are removed in py3k #6119
........

Lib/test/test_py3kwarn.py
Misc/NEWS
Objects/methodobject.c

index 0afa8e72b18ee8316d316f8d5da29dc14596e059..6d8863ad7b50faa15e0c952f5b22fc1d62fe562a 100644 (file)
@@ -22,6 +22,9 @@ class TestPy3KWarnings(unittest.TestCase):
     def assertWarning(self, _, warning, expected_message):
         self.assertEqual(str(warning.message), expected_message)
 
+    def assertNoWarning(self, _, recorder):
+        self.assertEqual(len(recorder.warnings), 0)
+
     def test_backquote(self):
         expected = 'backquote not supported in 3.x; use repr()'
         with check_warnings() as w:
@@ -132,7 +135,7 @@ class TestPy3KWarnings(unittest.TestCase):
 
     def test_builtin_function_or_method_comparisons(self):
         expected = ('builtin_function_or_method '
-                    'inequality comparisons not supported in 3.x')
+                    'order comparisons not supported in 3.x')
         func = eval
         meth = {}.get
         with check_warnings() as w:
@@ -143,6 +146,12 @@ class TestPy3KWarnings(unittest.TestCase):
             self.assertWarning(meth <= func, w, expected)
             w.reset()
             self.assertWarning(meth >= func, w, expected)
+            w.reset()
+            self.assertNoWarning(meth == func, w)
+            self.assertNoWarning(meth != func, w)
+            lam = lambda x: x
+            self.assertNoWarning(lam == func, w)
+            self.assertNoWarning(lam != func, w)
 
     def test_sort_cmp_arg(self):
         expected = "the cmp argument is not supported in 3.x"
index 7b869b56acfd1e263730096e2c261a31297eba05..4870c6a223718de46dbe7bc450819e582ee766d7 100644 (file)
--- a/Misc/NEWS
+++ b/Misc/NEWS
@@ -15,6 +15,9 @@ Core and Builtins
 - Issue #4547: When debugging a very large function, it was not always
   possible to update the lineno attribute of the current frame.
 
+- Issue #6119: Fixed a incorrect Py3k warning about order comparisons of builtin
+  functions and methods.
+
 - Issue #5330: C functions called with keyword arguments were not reported by
   the various profiling modules (profile, cProfile). Patch by Hagen F�rstenau.
 
index 737a3f780ed60eefe6a6b69b4050608c83717254..69d77919792f5cacec04abf73836d77468cc2705 100644 (file)
@@ -230,12 +230,9 @@ meth_richcompare(PyObject *self, PyObject *other, int op)
        PyObject *res;
        int eq;
 
-       if ((op != Py_EQ && op != Py_NE) ||
-           !PyCFunction_Check(self) ||
-           !PyCFunction_Check(other))
-       {
-               /* Py3K warning if types are not equal and comparison isn't == or !=  */
-               if (PyErr_WarnPy3k("builtin_function_or_method inequality "
+       if (op != Py_EQ && op != Py_NE) {
+               /* Py3K warning if comparison isn't == or !=.  */
+               if (PyErr_WarnPy3k("builtin_function_or_method order "
                                   "comparisons not supported in 3.x", 1) < 0) {
                        return NULL;
                }
@@ -243,6 +240,10 @@ meth_richcompare(PyObject *self, PyObject *other, int op)
                Py_INCREF(Py_NotImplemented);
                return Py_NotImplemented;
        }
+       else if (!PyCFunction_Check(self) || !PyCFunction_Check(other)) {
+               Py_INCREF(Py_NotImplemented);
+               return Py_NotImplemented;
+       }
        a = (PyCFunctionObject *)self;
        b = (PyCFunctionObject *)other;
        eq = a->m_self == b->m_self;