mirror of
https://github.com/python/cpython.git
synced 2025-09-26 10:19:53 +00:00
gh-107526: Revert "gh-100357: Convert several functions in bltinsmodule to AC" (#107542)
This commit is contained in:
parent
05ef4ca94c
commit
db6dc6ce41
3 changed files with 101 additions and 303 deletions
|
@ -0,0 +1,2 @@
|
||||||
|
Revert converting ``vars``, ``dir``, ``next``, ``getattr``, and ``iter`` to
|
||||||
|
argument clinic.
|
|
@ -842,33 +842,31 @@ finally:
|
||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
|
||||||
/*[clinic input]
|
/* AC: cannot convert yet, as needs PEP 457 group support in inspect */
|
||||||
dir as builtin_dir
|
|
||||||
|
|
||||||
arg: object = NULL
|
|
||||||
/
|
|
||||||
|
|
||||||
Show attributes of an object.
|
|
||||||
|
|
||||||
If called without an argument, return the names in the current scope.
|
|
||||||
Else, return an alphabetized list of names comprising (some of) the attributes
|
|
||||||
of the given object, and of attributes reachable from it.
|
|
||||||
If the object supplies a method named __dir__, it will be used; otherwise
|
|
||||||
the default dir() logic is used and returns:
|
|
||||||
for a module object: the module's attributes.
|
|
||||||
for a class object: its attributes, and recursively the attributes
|
|
||||||
of its bases.
|
|
||||||
for any other object: its attributes, its class's attributes, and
|
|
||||||
recursively the attributes of its class's base classes.
|
|
||||||
[clinic start generated code]*/
|
|
||||||
|
|
||||||
static PyObject *
|
static PyObject *
|
||||||
builtin_dir_impl(PyObject *module, PyObject *arg)
|
builtin_dir(PyObject *self, PyObject *args)
|
||||||
/*[clinic end generated code: output=24f2c7a52c1e3b08 input=ed6d6ccb13d52251]*/
|
|
||||||
{
|
{
|
||||||
|
PyObject *arg = NULL;
|
||||||
|
|
||||||
|
if (!PyArg_UnpackTuple(args, "dir", 0, 1, &arg))
|
||||||
|
return NULL;
|
||||||
return PyObject_Dir(arg);
|
return PyObject_Dir(arg);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
PyDoc_STRVAR(dir_doc,
|
||||||
|
"dir([object]) -> list of strings\n"
|
||||||
|
"\n"
|
||||||
|
"If called without an argument, return the names in the current scope.\n"
|
||||||
|
"Else, return an alphabetized list of names comprising (some of) the attributes\n"
|
||||||
|
"of the given object, and of attributes reachable from it.\n"
|
||||||
|
"If the object supplies a method named __dir__, it will be used; otherwise\n"
|
||||||
|
"the default dir() logic is used and returns:\n"
|
||||||
|
" for a module object: the module's attributes.\n"
|
||||||
|
" for a class object: its attributes, and recursively the attributes\n"
|
||||||
|
" of its bases.\n"
|
||||||
|
" for any other object: its attributes, its class's attributes, and\n"
|
||||||
|
" recursively the attributes of its class's base classes.");
|
||||||
|
|
||||||
/*[clinic input]
|
/*[clinic input]
|
||||||
divmod as builtin_divmod
|
divmod as builtin_divmod
|
||||||
|
|
||||||
|
@ -1138,39 +1136,36 @@ builtin_exec_impl(PyObject *module, PyObject *source, PyObject *globals,
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/*[clinic input]
|
/* AC: cannot convert yet, as needs PEP 457 group support in inspect */
|
||||||
getattr as builtin_getattr
|
|
||||||
|
|
||||||
object: object
|
|
||||||
name: object
|
|
||||||
default: object = NULL
|
|
||||||
/
|
|
||||||
|
|
||||||
Get a named attribute from an object.
|
|
||||||
|
|
||||||
getattr(x, 'y') is equivalent to x.y
|
|
||||||
When a default argument is given, it is returned when the attribute doesn't
|
|
||||||
exist; without it, an exception is raised in that case.
|
|
||||||
[clinic start generated code]*/
|
|
||||||
|
|
||||||
static PyObject *
|
static PyObject *
|
||||||
builtin_getattr_impl(PyObject *module, PyObject *object, PyObject *name,
|
builtin_getattr(PyObject *self, PyObject *const *args, Py_ssize_t nargs)
|
||||||
PyObject *default_value)
|
|
||||||
/*[clinic end generated code: output=74ad0e225e3f701c input=d7562cd4c3556171]*/
|
|
||||||
{
|
{
|
||||||
PyObject *result;
|
PyObject *v, *name, *result;
|
||||||
|
|
||||||
if (default_value != NULL) {
|
if (!_PyArg_CheckPositional("getattr", nargs, 2, 3))
|
||||||
if (PyObject_GetOptionalAttr(object, name, &result) == 0) {
|
return NULL;
|
||||||
return Py_NewRef(default_value);
|
|
||||||
|
v = args[0];
|
||||||
|
name = args[1];
|
||||||
|
if (nargs > 2) {
|
||||||
|
if (PyObject_GetOptionalAttr(v, name, &result) == 0) {
|
||||||
|
PyObject *dflt = args[2];
|
||||||
|
return Py_NewRef(dflt);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
result = PyObject_GetAttr(object, name);
|
result = PyObject_GetAttr(v, name);
|
||||||
}
|
}
|
||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
PyDoc_STRVAR(getattr_doc,
|
||||||
|
"getattr(object, name[, default]) -> value\n\
|
||||||
|
\n\
|
||||||
|
Get a named attribute from an object; getattr(x, 'y') is equivalent to x.y.\n\
|
||||||
|
When a default argument is given, it is returned when the attribute doesn't\n\
|
||||||
|
exist; without it, an exception is raised in that case.");
|
||||||
|
|
||||||
|
|
||||||
/*[clinic input]
|
/*[clinic input]
|
||||||
globals as builtin_globals
|
globals as builtin_globals
|
||||||
|
@ -1482,43 +1477,34 @@ PyTypeObject PyMap_Type = {
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
/*[clinic input]
|
/* AC: cannot convert yet, as needs PEP 457 group support in inspect */
|
||||||
next as builtin_next
|
|
||||||
|
|
||||||
iterator: object
|
|
||||||
default: object = NULL
|
|
||||||
/
|
|
||||||
|
|
||||||
Return the next item from the iterator.
|
|
||||||
|
|
||||||
If default is given and the iterator is exhausted,
|
|
||||||
it is returned instead of raising StopIteration.
|
|
||||||
[clinic start generated code]*/
|
|
||||||
|
|
||||||
static PyObject *
|
static PyObject *
|
||||||
builtin_next_impl(PyObject *module, PyObject *iterator,
|
builtin_next(PyObject *self, PyObject *const *args, Py_ssize_t nargs)
|
||||||
PyObject *default_value)
|
|
||||||
/*[clinic end generated code: output=a38a94eeb447fef9 input=180f9984f182020f]*/
|
|
||||||
{
|
{
|
||||||
PyObject *res;
|
PyObject *it, *res;
|
||||||
|
|
||||||
if (!PyIter_Check(iterator)) {
|
if (!_PyArg_CheckPositional("next", nargs, 1, 2))
|
||||||
|
return NULL;
|
||||||
|
|
||||||
|
it = args[0];
|
||||||
|
if (!PyIter_Check(it)) {
|
||||||
PyErr_Format(PyExc_TypeError,
|
PyErr_Format(PyExc_TypeError,
|
||||||
"'%.200s' object is not an iterator",
|
"'%.200s' object is not an iterator",
|
||||||
Py_TYPE(iterator)->tp_name);
|
Py_TYPE(it)->tp_name);
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
res = (*Py_TYPE(iterator)->tp_iternext)(iterator);
|
res = (*Py_TYPE(it)->tp_iternext)(it);
|
||||||
if (res != NULL) {
|
if (res != NULL) {
|
||||||
return res;
|
return res;
|
||||||
} else if (default_value != NULL) {
|
} else if (nargs > 1) {
|
||||||
|
PyObject *def = args[1];
|
||||||
if (PyErr_Occurred()) {
|
if (PyErr_Occurred()) {
|
||||||
if(!PyErr_ExceptionMatches(PyExc_StopIteration))
|
if(!PyErr_ExceptionMatches(PyExc_StopIteration))
|
||||||
return NULL;
|
return NULL;
|
||||||
PyErr_Clear();
|
PyErr_Clear();
|
||||||
}
|
}
|
||||||
return Py_NewRef(default_value);
|
return Py_NewRef(def);
|
||||||
} else if (PyErr_Occurred()) {
|
} else if (PyErr_Occurred()) {
|
||||||
return NULL;
|
return NULL;
|
||||||
} else {
|
} else {
|
||||||
|
@ -1527,6 +1513,12 @@ builtin_next_impl(PyObject *module, PyObject *iterator,
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
PyDoc_STRVAR(next_doc,
|
||||||
|
"next(iterator[, default])\n\
|
||||||
|
\n\
|
||||||
|
Return the next item from the iterator. If default is given and the iterator\n\
|
||||||
|
is exhausted, it is returned instead of raising StopIteration.");
|
||||||
|
|
||||||
|
|
||||||
/*[clinic input]
|
/*[clinic input]
|
||||||
setattr as builtin_setattr
|
setattr as builtin_setattr
|
||||||
|
@ -1620,33 +1612,34 @@ builtin_hex(PyObject *module, PyObject *number)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/*[clinic input]
|
/* AC: cannot convert yet, as needs PEP 457 group support in inspect */
|
||||||
iter as builtin_iter
|
|
||||||
|
|
||||||
object: object
|
|
||||||
sentinel: object = NULL
|
|
||||||
/
|
|
||||||
|
|
||||||
Get an iterator from an object.
|
|
||||||
|
|
||||||
In the first form, the argument must supply its own iterator, or be a sequence.
|
|
||||||
In the second form, the callable is called until it returns the sentinel.
|
|
||||||
[clinic start generated code]*/
|
|
||||||
|
|
||||||
static PyObject *
|
static PyObject *
|
||||||
builtin_iter_impl(PyObject *module, PyObject *object, PyObject *sentinel)
|
builtin_iter(PyObject *self, PyObject *const *args, Py_ssize_t nargs)
|
||||||
/*[clinic end generated code: output=12cf64203c195a94 input=a5d64d9d81880ba6]*/
|
|
||||||
{
|
{
|
||||||
if (sentinel == NULL)
|
PyObject *v;
|
||||||
return PyObject_GetIter(object);
|
|
||||||
if (!PyCallable_Check(object)) {
|
if (!_PyArg_CheckPositional("iter", nargs, 1, 2))
|
||||||
|
return NULL;
|
||||||
|
v = args[0];
|
||||||
|
if (nargs == 1)
|
||||||
|
return PyObject_GetIter(v);
|
||||||
|
if (!PyCallable_Check(v)) {
|
||||||
PyErr_SetString(PyExc_TypeError,
|
PyErr_SetString(PyExc_TypeError,
|
||||||
"iter(object, sentinel): object must be callable");
|
"iter(v, w): v must be callable");
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
return PyCallIter_New(object, sentinel);
|
PyObject *sentinel = args[1];
|
||||||
|
return PyCallIter_New(v, sentinel);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
PyDoc_STRVAR(iter_doc,
|
||||||
|
"iter(iterable) -> iterator\n\
|
||||||
|
iter(callable, sentinel) -> iterator\n\
|
||||||
|
\n\
|
||||||
|
Get an iterator from an object. In the first form, the argument must\n\
|
||||||
|
supply its own iterator, or be a sequence.\n\
|
||||||
|
In the second form, the callable is called until it returns the sentinel.");
|
||||||
|
|
||||||
|
|
||||||
/*[clinic input]
|
/*[clinic input]
|
||||||
aiter as builtin_aiter
|
aiter as builtin_aiter
|
||||||
|
@ -2444,29 +2437,20 @@ builtin_sorted(PyObject *self, PyObject *const *args, Py_ssize_t nargs, PyObject
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/*[clinic input]
|
/* AC: cannot convert yet, as needs PEP 457 group support in inspect */
|
||||||
vars as builtin_vars
|
|
||||||
|
|
||||||
object: object = NULL
|
|
||||||
/
|
|
||||||
|
|
||||||
Show vars.
|
|
||||||
|
|
||||||
Without arguments, equivalent to locals().
|
|
||||||
With an argument, equivalent to object.__dict__.
|
|
||||||
[clinic start generated code]*/
|
|
||||||
|
|
||||||
static PyObject *
|
static PyObject *
|
||||||
builtin_vars_impl(PyObject *module, PyObject *object)
|
builtin_vars(PyObject *self, PyObject *args)
|
||||||
/*[clinic end generated code: output=840a7f64007a3e0a input=80cbdef9182c4ba3]*/
|
|
||||||
{
|
{
|
||||||
|
PyObject *v = NULL;
|
||||||
PyObject *d;
|
PyObject *d;
|
||||||
|
|
||||||
if (object == NULL) {
|
if (!PyArg_UnpackTuple(args, "vars", 0, 1, &v))
|
||||||
|
return NULL;
|
||||||
|
if (v == NULL) {
|
||||||
d = _PyEval_GetFrameLocals();
|
d = _PyEval_GetFrameLocals();
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
if (PyObject_GetOptionalAttr(object, &_Py_ID(__dict__), &d) == 0) {
|
if (PyObject_GetOptionalAttr(v, &_Py_ID(__dict__), &d) == 0) {
|
||||||
PyErr_SetString(PyExc_TypeError,
|
PyErr_SetString(PyExc_TypeError,
|
||||||
"vars() argument must have __dict__ attribute");
|
"vars() argument must have __dict__ attribute");
|
||||||
}
|
}
|
||||||
|
@ -2474,6 +2458,12 @@ builtin_vars_impl(PyObject *module, PyObject *object)
|
||||||
return d;
|
return d;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
PyDoc_STRVAR(vars_doc,
|
||||||
|
"vars([object]) -> dictionary\n\
|
||||||
|
\n\
|
||||||
|
Without arguments, equivalent to locals().\n\
|
||||||
|
With an argument, equivalent to object.__dict__.");
|
||||||
|
|
||||||
|
|
||||||
/*[clinic input]
|
/*[clinic input]
|
||||||
sum as builtin_sum
|
sum as builtin_sum
|
||||||
|
@ -3022,12 +3012,12 @@ static PyMethodDef builtin_methods[] = {
|
||||||
BUILTIN_CHR_METHODDEF
|
BUILTIN_CHR_METHODDEF
|
||||||
BUILTIN_COMPILE_METHODDEF
|
BUILTIN_COMPILE_METHODDEF
|
||||||
BUILTIN_DELATTR_METHODDEF
|
BUILTIN_DELATTR_METHODDEF
|
||||||
BUILTIN_DIR_METHODDEF
|
{"dir", builtin_dir, METH_VARARGS, dir_doc},
|
||||||
BUILTIN_DIVMOD_METHODDEF
|
BUILTIN_DIVMOD_METHODDEF
|
||||||
BUILTIN_EVAL_METHODDEF
|
BUILTIN_EVAL_METHODDEF
|
||||||
BUILTIN_EXEC_METHODDEF
|
BUILTIN_EXEC_METHODDEF
|
||||||
BUILTIN_FORMAT_METHODDEF
|
BUILTIN_FORMAT_METHODDEF
|
||||||
BUILTIN_GETATTR_METHODDEF
|
{"getattr", _PyCFunction_CAST(builtin_getattr), METH_FASTCALL, getattr_doc},
|
||||||
BUILTIN_GLOBALS_METHODDEF
|
BUILTIN_GLOBALS_METHODDEF
|
||||||
BUILTIN_HASATTR_METHODDEF
|
BUILTIN_HASATTR_METHODDEF
|
||||||
BUILTIN_HASH_METHODDEF
|
BUILTIN_HASH_METHODDEF
|
||||||
|
@ -3036,13 +3026,13 @@ static PyMethodDef builtin_methods[] = {
|
||||||
BUILTIN_INPUT_METHODDEF
|
BUILTIN_INPUT_METHODDEF
|
||||||
BUILTIN_ISINSTANCE_METHODDEF
|
BUILTIN_ISINSTANCE_METHODDEF
|
||||||
BUILTIN_ISSUBCLASS_METHODDEF
|
BUILTIN_ISSUBCLASS_METHODDEF
|
||||||
BUILTIN_ITER_METHODDEF
|
{"iter", _PyCFunction_CAST(builtin_iter), METH_FASTCALL, iter_doc},
|
||||||
BUILTIN_AITER_METHODDEF
|
BUILTIN_AITER_METHODDEF
|
||||||
BUILTIN_LEN_METHODDEF
|
BUILTIN_LEN_METHODDEF
|
||||||
BUILTIN_LOCALS_METHODDEF
|
BUILTIN_LOCALS_METHODDEF
|
||||||
{"max", _PyCFunction_CAST(builtin_max), METH_VARARGS | METH_KEYWORDS, max_doc},
|
{"max", _PyCFunction_CAST(builtin_max), METH_VARARGS | METH_KEYWORDS, max_doc},
|
||||||
{"min", _PyCFunction_CAST(builtin_min), METH_VARARGS | METH_KEYWORDS, min_doc},
|
{"min", _PyCFunction_CAST(builtin_min), METH_VARARGS | METH_KEYWORDS, min_doc},
|
||||||
BUILTIN_NEXT_METHODDEF
|
{"next", _PyCFunction_CAST(builtin_next), METH_FASTCALL, next_doc},
|
||||||
BUILTIN_ANEXT_METHODDEF
|
BUILTIN_ANEXT_METHODDEF
|
||||||
BUILTIN_OCT_METHODDEF
|
BUILTIN_OCT_METHODDEF
|
||||||
BUILTIN_ORD_METHODDEF
|
BUILTIN_ORD_METHODDEF
|
||||||
|
@ -3053,7 +3043,7 @@ static PyMethodDef builtin_methods[] = {
|
||||||
BUILTIN_SETATTR_METHODDEF
|
BUILTIN_SETATTR_METHODDEF
|
||||||
BUILTIN_SORTED_METHODDEF
|
BUILTIN_SORTED_METHODDEF
|
||||||
BUILTIN_SUM_METHODDEF
|
BUILTIN_SUM_METHODDEF
|
||||||
BUILTIN_VARS_METHODDEF
|
{"vars", builtin_vars, METH_VARARGS, vars_doc},
|
||||||
{NULL, NULL},
|
{NULL, NULL},
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
196
Python/clinic/bltinmodule.c.h
generated
196
Python/clinic/bltinmodule.c.h
generated
|
@ -383,49 +383,6 @@ exit:
|
||||||
return return_value;
|
return return_value;
|
||||||
}
|
}
|
||||||
|
|
||||||
PyDoc_STRVAR(builtin_dir__doc__,
|
|
||||||
"dir($module, arg=<unrepresentable>, /)\n"
|
|
||||||
"--\n"
|
|
||||||
"\n"
|
|
||||||
"Show attributes of an object.\n"
|
|
||||||
"\n"
|
|
||||||
"If called without an argument, return the names in the current scope.\n"
|
|
||||||
"Else, return an alphabetized list of names comprising (some of) the attributes\n"
|
|
||||||
"of the given object, and of attributes reachable from it.\n"
|
|
||||||
"If the object supplies a method named __dir__, it will be used; otherwise\n"
|
|
||||||
"the default dir() logic is used and returns:\n"
|
|
||||||
" for a module object: the module\'s attributes.\n"
|
|
||||||
" for a class object: its attributes, and recursively the attributes\n"
|
|
||||||
" of its bases.\n"
|
|
||||||
" for any other object: its attributes, its class\'s attributes, and\n"
|
|
||||||
" recursively the attributes of its class\'s base classes.");
|
|
||||||
|
|
||||||
#define BUILTIN_DIR_METHODDEF \
|
|
||||||
{"dir", _PyCFunction_CAST(builtin_dir), METH_FASTCALL, builtin_dir__doc__},
|
|
||||||
|
|
||||||
static PyObject *
|
|
||||||
builtin_dir_impl(PyObject *module, PyObject *arg);
|
|
||||||
|
|
||||||
static PyObject *
|
|
||||||
builtin_dir(PyObject *module, PyObject *const *args, Py_ssize_t nargs)
|
|
||||||
{
|
|
||||||
PyObject *return_value = NULL;
|
|
||||||
PyObject *arg = NULL;
|
|
||||||
|
|
||||||
if (!_PyArg_CheckPositional("dir", nargs, 0, 1)) {
|
|
||||||
goto exit;
|
|
||||||
}
|
|
||||||
if (nargs < 1) {
|
|
||||||
goto skip_optional;
|
|
||||||
}
|
|
||||||
arg = args[0];
|
|
||||||
skip_optional:
|
|
||||||
return_value = builtin_dir_impl(module, arg);
|
|
||||||
|
|
||||||
exit:
|
|
||||||
return return_value;
|
|
||||||
}
|
|
||||||
|
|
||||||
PyDoc_STRVAR(builtin_divmod__doc__,
|
PyDoc_STRVAR(builtin_divmod__doc__,
|
||||||
"divmod($module, x, y, /)\n"
|
"divmod($module, x, y, /)\n"
|
||||||
"--\n"
|
"--\n"
|
||||||
|
@ -586,47 +543,6 @@ exit:
|
||||||
return return_value;
|
return return_value;
|
||||||
}
|
}
|
||||||
|
|
||||||
PyDoc_STRVAR(builtin_getattr__doc__,
|
|
||||||
"getattr($module, object, name, default=<unrepresentable>, /)\n"
|
|
||||||
"--\n"
|
|
||||||
"\n"
|
|
||||||
"Get a named attribute from an object.\n"
|
|
||||||
"\n"
|
|
||||||
"getattr(x, \'y\') is equivalent to x.y\n"
|
|
||||||
"When a default argument is given, it is returned when the attribute doesn\'t\n"
|
|
||||||
"exist; without it, an exception is raised in that case.");
|
|
||||||
|
|
||||||
#define BUILTIN_GETATTR_METHODDEF \
|
|
||||||
{"getattr", _PyCFunction_CAST(builtin_getattr), METH_FASTCALL, builtin_getattr__doc__},
|
|
||||||
|
|
||||||
static PyObject *
|
|
||||||
builtin_getattr_impl(PyObject *module, PyObject *object, PyObject *name,
|
|
||||||
PyObject *default_value);
|
|
||||||
|
|
||||||
static PyObject *
|
|
||||||
builtin_getattr(PyObject *module, PyObject *const *args, Py_ssize_t nargs)
|
|
||||||
{
|
|
||||||
PyObject *return_value = NULL;
|
|
||||||
PyObject *object;
|
|
||||||
PyObject *name;
|
|
||||||
PyObject *default_value = NULL;
|
|
||||||
|
|
||||||
if (!_PyArg_CheckPositional("getattr", nargs, 2, 3)) {
|
|
||||||
goto exit;
|
|
||||||
}
|
|
||||||
object = args[0];
|
|
||||||
name = args[1];
|
|
||||||
if (nargs < 3) {
|
|
||||||
goto skip_optional;
|
|
||||||
}
|
|
||||||
default_value = args[2];
|
|
||||||
skip_optional:
|
|
||||||
return_value = builtin_getattr_impl(module, object, name, default_value);
|
|
||||||
|
|
||||||
exit:
|
|
||||||
return return_value;
|
|
||||||
}
|
|
||||||
|
|
||||||
PyDoc_STRVAR(builtin_globals__doc__,
|
PyDoc_STRVAR(builtin_globals__doc__,
|
||||||
"globals($module, /)\n"
|
"globals($module, /)\n"
|
||||||
"--\n"
|
"--\n"
|
||||||
|
@ -692,44 +608,6 @@ PyDoc_STRVAR(builtin_id__doc__,
|
||||||
#define BUILTIN_ID_METHODDEF \
|
#define BUILTIN_ID_METHODDEF \
|
||||||
{"id", (PyCFunction)builtin_id, METH_O, builtin_id__doc__},
|
{"id", (PyCFunction)builtin_id, METH_O, builtin_id__doc__},
|
||||||
|
|
||||||
PyDoc_STRVAR(builtin_next__doc__,
|
|
||||||
"next($module, iterator, default=<unrepresentable>, /)\n"
|
|
||||||
"--\n"
|
|
||||||
"\n"
|
|
||||||
"Return the next item from the iterator.\n"
|
|
||||||
"\n"
|
|
||||||
"If default is given and the iterator is exhausted,\n"
|
|
||||||
"it is returned instead of raising StopIteration.");
|
|
||||||
|
|
||||||
#define BUILTIN_NEXT_METHODDEF \
|
|
||||||
{"next", _PyCFunction_CAST(builtin_next), METH_FASTCALL, builtin_next__doc__},
|
|
||||||
|
|
||||||
static PyObject *
|
|
||||||
builtin_next_impl(PyObject *module, PyObject *iterator,
|
|
||||||
PyObject *default_value);
|
|
||||||
|
|
||||||
static PyObject *
|
|
||||||
builtin_next(PyObject *module, PyObject *const *args, Py_ssize_t nargs)
|
|
||||||
{
|
|
||||||
PyObject *return_value = NULL;
|
|
||||||
PyObject *iterator;
|
|
||||||
PyObject *default_value = NULL;
|
|
||||||
|
|
||||||
if (!_PyArg_CheckPositional("next", nargs, 1, 2)) {
|
|
||||||
goto exit;
|
|
||||||
}
|
|
||||||
iterator = args[0];
|
|
||||||
if (nargs < 2) {
|
|
||||||
goto skip_optional;
|
|
||||||
}
|
|
||||||
default_value = args[1];
|
|
||||||
skip_optional:
|
|
||||||
return_value = builtin_next_impl(module, iterator, default_value);
|
|
||||||
|
|
||||||
exit:
|
|
||||||
return return_value;
|
|
||||||
}
|
|
||||||
|
|
||||||
PyDoc_STRVAR(builtin_setattr__doc__,
|
PyDoc_STRVAR(builtin_setattr__doc__,
|
||||||
"setattr($module, obj, name, value, /)\n"
|
"setattr($module, obj, name, value, /)\n"
|
||||||
"--\n"
|
"--\n"
|
||||||
|
@ -821,43 +699,6 @@ PyDoc_STRVAR(builtin_hex__doc__,
|
||||||
#define BUILTIN_HEX_METHODDEF \
|
#define BUILTIN_HEX_METHODDEF \
|
||||||
{"hex", (PyCFunction)builtin_hex, METH_O, builtin_hex__doc__},
|
{"hex", (PyCFunction)builtin_hex, METH_O, builtin_hex__doc__},
|
||||||
|
|
||||||
PyDoc_STRVAR(builtin_iter__doc__,
|
|
||||||
"iter($module, object, sentinel=<unrepresentable>, /)\n"
|
|
||||||
"--\n"
|
|
||||||
"\n"
|
|
||||||
"Get an iterator from an object.\n"
|
|
||||||
"\n"
|
|
||||||
"In the first form, the argument must supply its own iterator, or be a sequence.\n"
|
|
||||||
"In the second form, the callable is called until it returns the sentinel.");
|
|
||||||
|
|
||||||
#define BUILTIN_ITER_METHODDEF \
|
|
||||||
{"iter", _PyCFunction_CAST(builtin_iter), METH_FASTCALL, builtin_iter__doc__},
|
|
||||||
|
|
||||||
static PyObject *
|
|
||||||
builtin_iter_impl(PyObject *module, PyObject *object, PyObject *sentinel);
|
|
||||||
|
|
||||||
static PyObject *
|
|
||||||
builtin_iter(PyObject *module, PyObject *const *args, Py_ssize_t nargs)
|
|
||||||
{
|
|
||||||
PyObject *return_value = NULL;
|
|
||||||
PyObject *object;
|
|
||||||
PyObject *sentinel = NULL;
|
|
||||||
|
|
||||||
if (!_PyArg_CheckPositional("iter", nargs, 1, 2)) {
|
|
||||||
goto exit;
|
|
||||||
}
|
|
||||||
object = args[0];
|
|
||||||
if (nargs < 2) {
|
|
||||||
goto skip_optional;
|
|
||||||
}
|
|
||||||
sentinel = args[1];
|
|
||||||
skip_optional:
|
|
||||||
return_value = builtin_iter_impl(module, object, sentinel);
|
|
||||||
|
|
||||||
exit:
|
|
||||||
return return_value;
|
|
||||||
}
|
|
||||||
|
|
||||||
PyDoc_STRVAR(builtin_aiter__doc__,
|
PyDoc_STRVAR(builtin_aiter__doc__,
|
||||||
"aiter($module, async_iterable, /)\n"
|
"aiter($module, async_iterable, /)\n"
|
||||||
"--\n"
|
"--\n"
|
||||||
|
@ -1236,41 +1077,6 @@ exit:
|
||||||
return return_value;
|
return return_value;
|
||||||
}
|
}
|
||||||
|
|
||||||
PyDoc_STRVAR(builtin_vars__doc__,
|
|
||||||
"vars($module, object=<unrepresentable>, /)\n"
|
|
||||||
"--\n"
|
|
||||||
"\n"
|
|
||||||
"Show vars.\n"
|
|
||||||
"\n"
|
|
||||||
"Without arguments, equivalent to locals().\n"
|
|
||||||
"With an argument, equivalent to object.__dict__.");
|
|
||||||
|
|
||||||
#define BUILTIN_VARS_METHODDEF \
|
|
||||||
{"vars", _PyCFunction_CAST(builtin_vars), METH_FASTCALL, builtin_vars__doc__},
|
|
||||||
|
|
||||||
static PyObject *
|
|
||||||
builtin_vars_impl(PyObject *module, PyObject *object);
|
|
||||||
|
|
||||||
static PyObject *
|
|
||||||
builtin_vars(PyObject *module, PyObject *const *args, Py_ssize_t nargs)
|
|
||||||
{
|
|
||||||
PyObject *return_value = NULL;
|
|
||||||
PyObject *object = NULL;
|
|
||||||
|
|
||||||
if (!_PyArg_CheckPositional("vars", nargs, 0, 1)) {
|
|
||||||
goto exit;
|
|
||||||
}
|
|
||||||
if (nargs < 1) {
|
|
||||||
goto skip_optional;
|
|
||||||
}
|
|
||||||
object = args[0];
|
|
||||||
skip_optional:
|
|
||||||
return_value = builtin_vars_impl(module, object);
|
|
||||||
|
|
||||||
exit:
|
|
||||||
return return_value;
|
|
||||||
}
|
|
||||||
|
|
||||||
PyDoc_STRVAR(builtin_sum__doc__,
|
PyDoc_STRVAR(builtin_sum__doc__,
|
||||||
"sum($module, iterable, /, start=0)\n"
|
"sum($module, iterable, /, start=0)\n"
|
||||||
"--\n"
|
"--\n"
|
||||||
|
@ -1406,4 +1212,4 @@ builtin_issubclass(PyObject *module, PyObject *const *args, Py_ssize_t nargs)
|
||||||
exit:
|
exit:
|
||||||
return return_value;
|
return return_value;
|
||||||
}
|
}
|
||||||
/*[clinic end generated code: output=ef2f16ece134d62d input=a9049054013a1b77]*/
|
/*[clinic end generated code: output=daeee81b018824f4 input=a9049054013a1b77]*/
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue