summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorBenjamin Peterson <benjamin@python.org>2009-07-02 17:06:17 (GMT)
committerBenjamin Peterson <benjamin@python.org>2009-07-02 17:06:17 (GMT)
commit1bf4765369d7a6d5f0a4ad616f8a887c8fc4af39 (patch)
tree84164ea8c9c2e369ca524aff80b9476efe1e0f11
parent0c6de43dd936327ab4c57338c5e20f6e8824e7ee (diff)
downloadcpython-1bf4765369d7a6d5f0a4ad616f8a887c8fc4af39.zip
cpython-1bf4765369d7a6d5f0a4ad616f8a887c8fc4af39.tar.gz
cpython-1bf4765369d7a6d5f0a4ad616f8a887c8fc4af39.tar.bz2
only order comparisons are removed in py3k #6119
-rw-r--r--Lib/test/test_py3kwarn.py11
-rw-r--r--Misc/NEWS3
-rw-r--r--Objects/methodobject.c13
3 files changed, 20 insertions, 7 deletions
diff --git a/Lib/test/test_py3kwarn.py b/Lib/test/test_py3kwarn.py
index f510d93..eb05303 100644
--- a/Lib/test/test_py3kwarn.py
+++ b/Lib/test/test_py3kwarn.py
@@ -21,6 +21,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:
@@ -113,7 +116,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:
@@ -124,6 +127,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_frame_attributes(self):
template = "%s has been removed in 3.x"
diff --git a/Misc/NEWS b/Misc/NEWS
index 03cf45c..b5c716a 100644
--- a/Misc/NEWS
+++ b/Misc/NEWS
@@ -12,6 +12,9 @@ What's New in Python 2.7 alpha 1
Core and Builtins
-----------------
+- Issue #6119: Fixed a incorrect Py3k warning about order comparisons of builtin
+ functions and methods.
+
- Issue #6347: Include inttypes.h as well as stdint.h in pyport.h.
This fixes a build failure on HP-UX: int32_t and uint32_t are
defined in inttypes.h instead of stdint.h on that platform.
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;