bpo-34637: Make the *start* argument for *sum()* visible as a keyword argument. (GH-9208)

This commit is contained in:
Raymond Hettinger 2018-09-12 10:54:06 -07:00 committed by GitHub
parent 0fb9fadd3b
commit 9dfa0fe587
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
5 changed files with 16 additions and 8 deletions

View file

@ -2272,8 +2272,8 @@ With an argument, equivalent to object.__dict__.");
sum as builtin_sum
iterable: object
start: object(c_default="NULL") = 0
/
start: object(c_default="NULL") = 0
Return the sum of a 'start' value (default: 0) plus an iterable of numbers
@ -2284,7 +2284,7 @@ reject non-numeric types.
static PyObject *
builtin_sum_impl(PyObject *module, PyObject *iterable, PyObject *start)
/*[clinic end generated code: output=df758cec7d1d302f input=3b5b7a9d7611c73a]*/
/*[clinic end generated code: output=df758cec7d1d302f input=162b50765250d222]*/
{
PyObject *result = start;
PyObject *temp, *item, *iter;

View file

@ -608,7 +608,7 @@ exit:
}
PyDoc_STRVAR(builtin_sum__doc__,
"sum($module, iterable, start=0, /)\n"
"sum($module, iterable, /, start=0)\n"
"--\n"
"\n"
"Return the sum of a \'start\' value (default: 0) plus an iterable of numbers\n"
@ -618,20 +618,21 @@ PyDoc_STRVAR(builtin_sum__doc__,
"reject non-numeric types.");
#define BUILTIN_SUM_METHODDEF \
{"sum", (PyCFunction)builtin_sum, METH_FASTCALL, builtin_sum__doc__},
{"sum", (PyCFunction)builtin_sum, METH_FASTCALL|METH_KEYWORDS, builtin_sum__doc__},
static PyObject *
builtin_sum_impl(PyObject *module, PyObject *iterable, PyObject *start);
static PyObject *
builtin_sum(PyObject *module, PyObject *const *args, Py_ssize_t nargs)
builtin_sum(PyObject *module, PyObject *const *args, Py_ssize_t nargs, PyObject *kwnames)
{
PyObject *return_value = NULL;
static const char * const _keywords[] = {"", "start", NULL};
static _PyArg_Parser _parser = {"O|O:sum", _keywords, 0};
PyObject *iterable;
PyObject *start = NULL;
if (!_PyArg_UnpackStack(args, nargs, "sum",
1, 2,
if (!_PyArg_ParseStackAndKeywords(args, nargs, kwnames, &_parser,
&iterable, &start)) {
goto exit;
}
@ -710,4 +711,4 @@ builtin_issubclass(PyObject *module, PyObject *const *args, Py_ssize_t nargs)
exit:
return return_value;
}
/*[clinic end generated code: output=9f17c7a87d740374 input=a9049054013a1b77]*/
/*[clinic end generated code: output=eb6d08a32e7c83b6 input=a9049054013a1b77]*/