[3.12] gh-112125: Fix None.__ne__(None) returning NotImplemented instead of … (#112827)

gh-112125: Fix None.__ne__(None) returning NotImplemented instead of False (#112504)

(cherry picked from commit 9c3458e058)

Co-authored-by: andrewluotechnologies <44252973+andrewluotechnologies@users.noreply.github.com>
This commit is contained in:
Victor Stinner 2023-12-07 14:41:00 +01:00 committed by GitHub
parent e21a7a976a
commit f27271619e
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
5 changed files with 15 additions and 1 deletions

View file

@ -133,6 +133,8 @@ _Py_type_getattro_impl(PyTypeObject *type, PyObject *name, int *suppress_missing
PyObject *
_Py_type_getattro(PyTypeObject *type, PyObject *name);
extern PyObject* _Py_BaseObject_RichCompare(PyObject* self, PyObject* other, int op);
PyObject *_Py_slot_tp_getattro(PyObject *self, PyObject *name);
PyObject *_Py_slot_tp_getattr_hook(PyObject *self, PyObject *name);

View file

@ -602,6 +602,11 @@ class BuiltinTest(unittest.TestCase):
# test that object has a __dir__()
self.assertEqual(sorted([].__dir__()), dir([]))
def test___ne__(self):
self.assertFalse(None.__ne__(None))
self.assertTrue(None.__ne__(0))
self.assertTrue(None.__ne__("abc"))
def test_divmod(self):
self.assertEqual(divmod(12, 7), (1, 5))
self.assertEqual(divmod(-12, 7), (-2, 2))

View file

@ -0,0 +1 @@
Fix None.__ne__(None) returning NotImplemented instead of False

View file

@ -1878,7 +1878,7 @@ PyTypeObject _PyNone_Type = {
0, /*tp_doc */
0, /*tp_traverse */
0, /*tp_clear */
0, /*tp_richcompare */
_Py_BaseObject_RichCompare, /*tp_richcompare */
0, /*tp_weaklistoffset */
0, /*tp_iter */
0, /*tp_iternext */

View file

@ -5593,6 +5593,12 @@ object_richcompare(PyObject *self, PyObject *other, int op)
return res;
}
PyObject*
_Py_BaseObject_RichCompare(PyObject* self, PyObject* other, int op)
{
return object_richcompare(self, other, op);
}
static PyObject *
object_get_class(PyObject *self, void *closure)
{