summaryrefslogtreecommitdiffstats
path: root/Modules
diff options
context:
space:
mode:
authorSerhiy Storchaka <storchaka@gmail.com>2018-12-31 12:15:16 (GMT)
committerGitHub <noreply@github.com>2018-12-31 12:15:16 (GMT)
commit052b2dfdc967a8c061ff9561534e905009b88b8c (patch)
tree1b9c6c026ff687e9332116d52d2d9ec55acf1abb /Modules
parent5c117dd227e1b4c4f0a62564d8592f1ba45c91eb (diff)
downloadcpython-052b2dfdc967a8c061ff9561534e905009b88b8c.zip
cpython-052b2dfdc967a8c061ff9561534e905009b88b8c.tar.gz
cpython-052b2dfdc967a8c061ff9561534e905009b88b8c.tar.bz2
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.
Diffstat (limited to 'Modules')
-rw-r--r--Modules/_collectionsmodule.c16
1 files changed, 8 insertions, 8 deletions
diff --git a/Modules/_collectionsmodule.c b/Modules/_collectionsmodule.c
index cc325e1..a2b683e 100644
--- a/Modules/_collectionsmodule.c
+++ b/Modules/_collectionsmodule.c
@@ -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 */