diff options
author | Serhiy Storchaka <storchaka@gmail.com> | 2018-12-31 12:15:16 (GMT) |
---|---|---|
committer | GitHub <noreply@github.com> | 2018-12-31 12:15:16 (GMT) |
commit | 052b2dfdc967a8c061ff9561534e905009b88b8c (patch) | |
tree | 1b9c6c026ff687e9332116d52d2d9ec55acf1abb /Modules | |
parent | 5c117dd227e1b4c4f0a62564d8592f1ba45c91eb (diff) | |
download | cpython-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.c | 16 |
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 */ |