[Python-3000-checkins] r54588 - in python/branches/p3yk: Lib/test/test_compare.py Misc/NEWS Objects/typeobject.c (original) (raw)
guido.van.rossum python-3000-checkins at python.org
Wed Mar 28 00:37:39 CEST 2007
- Previous message: [Python-3000-checkins] r54587 - python/branches/p3yk/Python/graminit.c
- Next message: [Python-3000-checkins] r54592 - in python/branches/p3yk/Lib: test/test_xreload.py xreload.py
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]
Author: guido.van.rossum Date: Wed Mar 28 00:37:34 2007 New Revision: 54588
Modified: python/branches/p3yk/Lib/test/test_compare.py python/branches/p3yk/Misc/NEWS python/branches/p3yk/Objects/typeobject.c Log: By default, != returns the opposite of ==, unless the latter returns NotImplemented.
(Is this worth backporting to 2.6? It seems so useful...!)
Modified: python/branches/p3yk/Lib/test/test_compare.py
--- python/branches/p3yk/Lib/test/test_compare.py (original) +++ python/branches/p3yk/Lib/test/test_compare.py Wed Mar 28 00:37:34 2007 @@ -39,6 +39,12 @@ self.assertEqual(a == b, id(a) == id(b), 'a=%r, b=%r' % (a, b))
- def test_ne_defaults_to_not_eq(self):
a = Cmp(1)
b = Cmp(1)
self.assertTrue(a == b)
self.assertFalse(a != b)
- def test_main(): test_support.run_unittest(ComparisonTest)
Modified: python/branches/p3yk/Misc/NEWS
--- python/branches/p3yk/Misc/NEWS (original) +++ python/branches/p3yk/Misc/NEWS Wed Mar 28 00:37:34 2007 @@ -28,6 +28,9 @@ Core and Builtins
+- By default, != returns the opposite of ==, unless the latter returns
- NotImplemented.
- Patch #1680961: sys.exitfunc has been removed and replaced with a private C-level API.
Modified: python/branches/p3yk/Objects/typeobject.c
--- python/branches/p3yk/Objects/typeobject.c (original) +++ python/branches/p3yk/Objects/typeobject.c Wed Mar 28 00:37:34 2007 @@ -2314,7 +2314,22 @@ break;
case Py_NE:
res = (self != other) ? Py_True : Py_False;
/* By default, != returns the opposite of ==,
unless the latter returns NotImplemented. */
res = PyObject_RichCompare(self, other, Py_EQ);
if (res != NULL && res != Py_NotImplemented) {
int ok = PyObject_IsTrue(res);
Py_DECREF(res);
if (ok < 0)
res = NULL;
else {
if (ok)
res = Py_False;
else
res = Py_True;
Py_INCREF(res);
}
} break; default:
- Previous message: [Python-3000-checkins] r54587 - python/branches/p3yk/Python/graminit.c
- Next message: [Python-3000-checkins] r54592 - in python/branches/p3yk/Lib: test/test_xreload.py xreload.py
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]
More information about the Python-3000-checkins mailing list