diff options
author | Benjamin Peterson <benjamin@python.org> | 2009-07-02 17:19:22 (GMT) |
---|---|---|
committer | Benjamin Peterson <benjamin@python.org> | 2009-07-02 17:19:22 (GMT) |
commit | f92146938377651100db8a00bb3356ceff760037 (patch) | |
tree | 5ce1689d4ea682c943dd07212ada086bdc4778b8 | |
parent | 585ad8ae5e352c99bbd87955c64cc9a0654da8c3 (diff) | |
download | cpython-f92146938377651100db8a00bb3356ceff760037.zip cpython-f92146938377651100db8a00bb3356ceff760037.tar.gz cpython-f92146938377651100db8a00bb3356ceff760037.tar.bz2 |
Merged revisions 73774 via svnmerge from
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
........
-rw-r--r-- | Lib/test/test_py3kwarn.py | 11 | ||||
-rw-r--r-- | Misc/NEWS | 3 | ||||
-rw-r--r-- | Objects/methodobject.c | 13 |
3 files changed, 20 insertions, 7 deletions
diff --git a/Lib/test/test_py3kwarn.py b/Lib/test/test_py3kwarn.py index 0afa8e7..6d8863a 100644 --- a/Lib/test/test_py3kwarn.py +++ b/Lib/test/test_py3kwarn.py @@ -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" @@ -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. diff --git a/Objects/methodobject.c b/Objects/methodobject.c index 737a3f7..69d7791 100644 --- a/Objects/methodobject.c +++ b/Objects/methodobject.c @@ -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; |