gh-117764: Add docstrings and signatures for the types of None, Ellipsis and NotImplemented (GH-117813)

This commit is contained in:
Serhiy Storchaka 2024-04-12 15:45:23 +03:00 committed by GitHub
parent 39a6b29756
commit 2d3d9b4461
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
4 changed files with 21 additions and 6 deletions

View File

@ -1687,10 +1687,10 @@ class ClassPropertiesAndMethods(unittest.TestCase):
self.assertEqual(d.foo(1), (d, 1)) self.assertEqual(d.foo(1), (d, 1))
self.assertEqual(D.foo(d, 1), (d, 1)) self.assertEqual(D.foo(d, 1), (d, 1))
sm = staticmethod(None) sm = staticmethod(None)
self.assertEqual(sm.__dict__, {'__doc__': None}) self.assertEqual(sm.__dict__, {'__doc__': None.__doc__})
sm.x = 42 sm.x = 42
self.assertEqual(sm.x, 42) self.assertEqual(sm.x, 42)
self.assertEqual(sm.__dict__, {"x" : 42, '__doc__': None}) self.assertEqual(sm.__dict__, {"x" : 42, '__doc__': None.__doc__})
del sm.x del sm.x
self.assertNotHasAttr(sm, "x") self.assertNotHasAttr(sm, "x")

View File

@ -55,7 +55,7 @@ class TestRlcompleter(unittest.TestCase):
if x.startswith('s')]) if x.startswith('s')])
self.assertEqual(self.stdcompleter.attr_matches('tuple.foospamegg'), []) self.assertEqual(self.stdcompleter.attr_matches('tuple.foospamegg'), [])
expected = sorted({'None.%s%s' % (x, expected = sorted({'None.%s%s' % (x,
'()' if x == '__init_subclass__' '()' if x in ('__init_subclass__', '__class__')
else '' if x == '__doc__' else '' if x == '__doc__'
else '(') else '(')
for x in dir(None)}) for x in dir(None)})

View File

@ -2007,6 +2007,11 @@ static PyNumberMethods none_as_number = {
0, /* nb_index */ 0, /* nb_index */
}; };
PyDoc_STRVAR(none_doc,
"NoneType()\n"
"--\n\n"
"The type of the None singleton.");
PyTypeObject _PyNone_Type = { PyTypeObject _PyNone_Type = {
PyVarObject_HEAD_INIT(&PyType_Type, 0) PyVarObject_HEAD_INIT(&PyType_Type, 0)
"NoneType", "NoneType",
@ -2028,7 +2033,7 @@ PyTypeObject _PyNone_Type = {
0, /*tp_setattro */ 0, /*tp_setattro */
0, /*tp_as_buffer */ 0, /*tp_as_buffer */
Py_TPFLAGS_DEFAULT, /*tp_flags */ Py_TPFLAGS_DEFAULT, /*tp_flags */
0, /*tp_doc */ none_doc, /*tp_doc */
0, /*tp_traverse */ 0, /*tp_traverse */
0, /*tp_clear */ 0, /*tp_clear */
_Py_BaseObject_RichCompare, /*tp_richcompare */ _Py_BaseObject_RichCompare, /*tp_richcompare */
@ -2106,6 +2111,11 @@ static PyNumberMethods notimplemented_as_number = {
.nb_bool = notimplemented_bool, .nb_bool = notimplemented_bool,
}; };
PyDoc_STRVAR(notimplemented_doc,
"NotImplementedType()\n"
"--\n\n"
"The type of the NotImplemented singleton.");
PyTypeObject _PyNotImplemented_Type = { PyTypeObject _PyNotImplemented_Type = {
PyVarObject_HEAD_INIT(&PyType_Type, 0) PyVarObject_HEAD_INIT(&PyType_Type, 0)
"NotImplementedType", "NotImplementedType",
@ -2127,7 +2137,7 @@ PyTypeObject _PyNotImplemented_Type = {
0, /*tp_setattro */ 0, /*tp_setattro */
0, /*tp_as_buffer */ 0, /*tp_as_buffer */
Py_TPFLAGS_DEFAULT, /*tp_flags */ Py_TPFLAGS_DEFAULT, /*tp_flags */
0, /*tp_doc */ notimplemented_doc, /*tp_doc */
0, /*tp_traverse */ 0, /*tp_traverse */
0, /*tp_clear */ 0, /*tp_clear */
0, /*tp_richcompare */ 0, /*tp_richcompare */

View File

@ -57,6 +57,11 @@ static PyMethodDef ellipsis_methods[] = {
{NULL, NULL} {NULL, NULL}
}; };
PyDoc_STRVAR(ellipsis_doc,
"ellipsis()\n"
"--\n\n"
"The type of the Ellipsis singleton.");
PyTypeObject PyEllipsis_Type = { PyTypeObject PyEllipsis_Type = {
PyVarObject_HEAD_INIT(&PyType_Type, 0) PyVarObject_HEAD_INIT(&PyType_Type, 0)
"ellipsis", /* tp_name */ "ellipsis", /* tp_name */
@ -78,7 +83,7 @@ PyTypeObject PyEllipsis_Type = {
0, /* tp_setattro */ 0, /* tp_setattro */
0, /* tp_as_buffer */ 0, /* tp_as_buffer */
Py_TPFLAGS_DEFAULT, /* tp_flags */ Py_TPFLAGS_DEFAULT, /* tp_flags */
0, /* tp_doc */ ellipsis_doc, /* tp_doc */
0, /* tp_traverse */ 0, /* tp_traverse */
0, /* tp_clear */ 0, /* tp_clear */
0, /* tp_richcompare */ 0, /* tp_richcompare */