mirror of
https://github.com/python/cpython.git
synced 2025-10-06 15:11:58 +00:00
bpo-32492: Tweak _collections._tuplegetter. (GH-11367)
* Replace the docstrings cache with sys.intern(). * Improve tests. * Unify names of tp_descr_get and tp_descr_set functions.
This commit is contained in:
parent
5c117dd227
commit
052b2dfdc9
4 changed files with 75 additions and 37 deletions
|
@ -2336,7 +2336,7 @@ done:
|
|||
Py_RETURN_NONE;
|
||||
}
|
||||
|
||||
/* Helper functions for namedtuples */
|
||||
/* Helper function for namedtuple() ************************************/
|
||||
|
||||
typedef struct {
|
||||
PyObject_HEAD
|
||||
|
@ -2369,9 +2369,11 @@ tuplegetter_new_impl(PyTypeObject *type, Py_ssize_t index, PyObject *doc)
|
|||
}
|
||||
|
||||
static PyObject *
|
||||
tuplegetterdescr_get(PyObject *self, PyObject *obj, PyObject *type)
|
||||
tuplegetter_descr_get(PyObject *self, PyObject *obj, PyObject *type)
|
||||
{
|
||||
Py_ssize_t index = ((_tuplegetterobject*)self)->index;
|
||||
PyObject *result;
|
||||
|
||||
if (obj == NULL) {
|
||||
Py_INCREF(self);
|
||||
return self;
|
||||
|
@ -2384,13 +2386,11 @@ tuplegetterdescr_get(PyObject *self, PyObject *obj, PyObject *type)
|
|||
PyErr_Format(PyExc_TypeError,
|
||||
"descriptor for index '%d' for tuple subclasses "
|
||||
"doesn't apply to '%s' object",
|
||||
((_tuplegetterobject*)self)->index,
|
||||
index,
|
||||
obj->ob_type->tp_name);
|
||||
return NULL;
|
||||
}
|
||||
|
||||
Py_ssize_t index = ((_tuplegetterobject*)self)->index;
|
||||
|
||||
if (!valid_index(index, PyTuple_GET_SIZE(obj))) {
|
||||
PyErr_SetString(PyExc_IndexError, "tuple index out of range");
|
||||
return NULL;
|
||||
|
@ -2402,7 +2402,7 @@ tuplegetterdescr_get(PyObject *self, PyObject *obj, PyObject *type)
|
|||
}
|
||||
|
||||
static int
|
||||
tuplegetter_set(PyObject *self, PyObject *obj, PyObject *value)
|
||||
tuplegetter_descr_set(PyObject *self, PyObject *obj, PyObject *value)
|
||||
{
|
||||
if (value == NULL) {
|
||||
PyErr_SetString(PyExc_AttributeError, "can't delete attribute");
|
||||
|
@ -2476,8 +2476,8 @@ static PyTypeObject tuplegetter_type = {
|
|||
0, /* tp_getset */
|
||||
0, /* tp_base */
|
||||
0, /* tp_dict */
|
||||
tuplegetterdescr_get, /* tp_descr_get */
|
||||
tuplegetter_set, /* tp_descr_set */
|
||||
tuplegetter_descr_get, /* tp_descr_get */
|
||||
tuplegetter_descr_set, /* tp_descr_set */
|
||||
0, /* tp_dictoffset */
|
||||
0, /* tp_init */
|
||||
0, /* tp_alloc */
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue