bpo-37165: Convert _count_elements to the argument clinic (GH-13848)

This commit is contained in:
Raymond Hettinger 2019-06-05 16:05:25 -07:00 committed by GitHub
parent c4c15ed7a2
commit e985804207
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
3 changed files with 49 additions and 12 deletions

View File

@ -0,0 +1 @@
Converted _collections._count_elements to use the Argument Clinic.

View File

@ -8,9 +8,10 @@
#endif #endif
/*[clinic input] /*[clinic input]
module _collections
class _tuplegetter "_tuplegetterobject *" "&tuplegetter_type" class _tuplegetter "_tuplegetterobject *" "&tuplegetter_type"
[clinic start generated code]*/ [clinic start generated code]*/
/*[clinic end generated code: output=da39a3ee5e6b4b0d input=ee5ed5baabe35068]*/ /*[clinic end generated code: output=da39a3ee5e6b4b0d input=a8ece4ccad7e30ac]*/
static PyTypeObject tuplegetter_type; static PyTypeObject tuplegetter_type;
#include "clinic/_collectionsmodule.c.h" #include "clinic/_collectionsmodule.c.h"
@ -2228,17 +2229,24 @@ static PyTypeObject defdict_type = {
/* helper function for Counter *********************************************/ /* helper function for Counter *********************************************/
PyDoc_STRVAR(_count_elements_doc, /*[clinic input]
"_count_elements(mapping, iterable) -> None\n\ _collections._count_elements
\n\
Count elements in the iterable, updating the mapping"); mapping: object
iterable: object
/
Count elements in the iterable, updating the mapping
[clinic start generated code]*/
static PyObject * static PyObject *
_count_elements(PyObject *self, PyObject *args) _collections__count_elements_impl(PyObject *module, PyObject *mapping,
PyObject *iterable)
/*[clinic end generated code: output=7e0c1789636b3d8f input=e79fad04534a0b45]*/
{ {
_Py_IDENTIFIER(get); _Py_IDENTIFIER(get);
_Py_IDENTIFIER(__setitem__); _Py_IDENTIFIER(__setitem__);
PyObject *it, *iterable, *mapping, *oldval; PyObject *it, *oldval;
PyObject *newval = NULL; PyObject *newval = NULL;
PyObject *key = NULL; PyObject *key = NULL;
PyObject *bound_get = NULL; PyObject *bound_get = NULL;
@ -2247,9 +2255,6 @@ _count_elements(PyObject *self, PyObject *args)
PyObject *mapping_setitem; PyObject *mapping_setitem;
PyObject *dict_setitem; PyObject *dict_setitem;
if (!PyArg_UnpackTuple(args, "_count_elements", 2, 2, &mapping, &iterable))
return NULL;
it = PyObject_GetIter(iterable); it = PyObject_GetIter(iterable);
if (it == NULL) if (it == NULL)
return NULL; return NULL;
@ -2510,7 +2515,7 @@ PyDoc_STRVAR(module_doc,
"); ");
static struct PyMethodDef module_functions[] = { static struct PyMethodDef module_functions[] = {
{"_count_elements", _count_elements, METH_VARARGS, _count_elements_doc}, _COLLECTIONS__COUNT_ELEMENTS_METHODDEF
{NULL, NULL} /* sentinel */ {NULL, NULL} /* sentinel */
}; };

View File

@ -2,6 +2,37 @@
preserve preserve
[clinic start generated code]*/ [clinic start generated code]*/
PyDoc_STRVAR(_collections__count_elements__doc__,
"_count_elements($module, mapping, iterable, /)\n"
"--\n"
"\n"
"Count elements in the iterable, updating the mapping");
#define _COLLECTIONS__COUNT_ELEMENTS_METHODDEF \
{"_count_elements", (PyCFunction)(void(*)(void))_collections__count_elements, METH_FASTCALL, _collections__count_elements__doc__},
static PyObject *
_collections__count_elements_impl(PyObject *module, PyObject *mapping,
PyObject *iterable);
static PyObject *
_collections__count_elements(PyObject *module, PyObject *const *args, Py_ssize_t nargs)
{
PyObject *return_value = NULL;
PyObject *mapping;
PyObject *iterable;
if (!_PyArg_CheckPositional("_count_elements", nargs, 2, 2)) {
goto exit;
}
mapping = args[0];
iterable = args[1];
return_value = _collections__count_elements_impl(module, mapping, iterable);
exit:
return return_value;
}
static PyObject * static PyObject *
tuplegetter_new_impl(PyTypeObject *type, Py_ssize_t index, PyObject *doc); tuplegetter_new_impl(PyTypeObject *type, Py_ssize_t index, PyObject *doc);
@ -42,4 +73,4 @@ tuplegetter_new(PyTypeObject *type, PyObject *args, PyObject *kwargs)
exit: exit:
return return_value; return return_value;
} }
/*[clinic end generated code: output=51bd572577ca7111 input=a9049054013a1b77]*/ /*[clinic end generated code: output=9d2bfcc9df5faf35 input=a9049054013a1b77]*/