Skip to content

Commit

Permalink
pythongh-112125: Fix None.__ne__(None) returning NotImplemented inste…
Browse files Browse the repository at this point in the history
…ad of False (python#112504)
  • Loading branch information
andrewluotechnologies authored Dec 7, 2023
1 parent b449415 commit 9c3458e
Show file tree
Hide file tree
Showing 5 changed files with 15 additions and 1 deletion.
2 changes: 2 additions & 0 deletions Include/internal/pycore_typeobject.h
Original file line number Diff line number Diff line change
Expand Up @@ -135,6 +135,8 @@ extern PyObject* _Py_type_getattro_impl(PyTypeObject *type, PyObject *name,
int *suppress_missing_attribute);
extern PyObject* _Py_type_getattro(PyTypeObject *type, PyObject *name);

extern PyObject* _Py_BaseObject_RichCompare(PyObject* self, PyObject* other, int op);

extern PyObject* _Py_slot_tp_getattro(PyObject *self, PyObject *name);
extern PyObject* _Py_slot_tp_getattr_hook(PyObject *self, PyObject *name);

Expand Down
5 changes: 5 additions & 0 deletions Lib/test/test_builtin.py
Original file line number Diff line number Diff line change
Expand Up @@ -627,6 +627,11 @@ def __dir__(self):
# 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))
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
Fix None.__ne__(None) returning NotImplemented instead of False
2 changes: 1 addition & 1 deletion Objects/object.c
Original file line number Diff line number Diff line change
Expand Up @@ -2026,7 +2026,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 */
Expand Down
6 changes: 6 additions & 0 deletions Objects/typeobject.c
Original file line number Diff line number Diff line change
Expand Up @@ -5625,6 +5625,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)
{
Expand Down

0 comments on commit 9c3458e

Please sign in to comment.