gh-91583: AC: Fix regression for functions with defining_class (GH-91739)

Argument Clinic now generates the same efficient code as before
adding the defining_class parameter.
This commit is contained in:
Serhiy Storchaka 2022-04-30 13:15:02 +03:00 committed by GitHub
parent 19dca04121
commit a055dac0b4
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
19 changed files with 820 additions and 449 deletions

View File

@ -0,0 +1,2 @@
Fix regression in the code generated by Argument Clinic for functions with
the ``defining_class`` parameter.

View File

@ -323,16 +323,44 @@ pysqlite_connection_create_function(pysqlite_Connection *self, PyTypeObject *cls
{ {
PyObject *return_value = NULL; PyObject *return_value = NULL;
static const char * const _keywords[] = {"name", "narg", "func", "deterministic", NULL}; static const char * const _keywords[] = {"name", "narg", "func", "deterministic", NULL};
static _PyArg_Parser _parser = {"siO|$p:create_function", _keywords, 0}; static _PyArg_Parser _parser = {NULL, _keywords, "create_function", 0};
PyObject *argsbuf[4];
Py_ssize_t noptargs = nargs + (kwnames ? PyTuple_GET_SIZE(kwnames) : 0) - 3;
const char *name; const char *name;
int narg; int narg;
PyObject *func; PyObject *func;
int deterministic = 0; int deterministic = 0;
if (!_PyArg_ParseStackAndKeywords(args, nargs, kwnames, &_parser, args = _PyArg_UnpackKeywords(args, nargs, NULL, kwnames, &_parser, 3, 3, 0, argsbuf);
&name, &narg, &func, &deterministic)) { if (!args) {
goto exit; goto exit;
} }
if (!PyUnicode_Check(args[0])) {
_PyArg_BadArgument("create_function", "argument 'name'", "str", args[0]);
goto exit;
}
Py_ssize_t name_length;
name = PyUnicode_AsUTF8AndSize(args[0], &name_length);
if (name == NULL) {
goto exit;
}
if (strlen(name) != (size_t)name_length) {
PyErr_SetString(PyExc_ValueError, "embedded null character");
goto exit;
}
narg = _PyLong_AsInt(args[1]);
if (narg == -1 && PyErr_Occurred()) {
goto exit;
}
func = args[2];
if (!noptargs) {
goto skip_optional_kwonly;
}
deterministic = PyObject_IsTrue(args[3]);
if (deterministic < 0) {
goto exit;
}
skip_optional_kwonly:
return_value = pysqlite_connection_create_function_impl(self, cls, name, narg, func, deterministic); return_value = pysqlite_connection_create_function_impl(self, cls, name, narg, func, deterministic);
exit: exit:
@ -369,15 +397,34 @@ create_window_function(pysqlite_Connection *self, PyTypeObject *cls, PyObject *c
{ {
PyObject *return_value = NULL; PyObject *return_value = NULL;
static const char * const _keywords[] = {"", "", "", NULL}; static const char * const _keywords[] = {"", "", "", NULL};
static _PyArg_Parser _parser = {"siO:create_window_function", _keywords, 0}; static _PyArg_Parser _parser = {NULL, _keywords, "create_window_function", 0};
PyObject *argsbuf[3];
const char *name; const char *name;
int num_params; int num_params;
PyObject *aggregate_class; PyObject *aggregate_class;
if (!_PyArg_ParseStackAndKeywords(args, nargs, kwnames, &_parser, args = _PyArg_UnpackKeywords(args, nargs, NULL, kwnames, &_parser, 3, 3, 0, argsbuf);
&name, &num_params, &aggregate_class)) { if (!args) {
goto exit; goto exit;
} }
if (!PyUnicode_Check(args[0])) {
_PyArg_BadArgument("create_window_function", "argument 1", "str", args[0]);
goto exit;
}
Py_ssize_t name_length;
name = PyUnicode_AsUTF8AndSize(args[0], &name_length);
if (name == NULL) {
goto exit;
}
if (strlen(name) != (size_t)name_length) {
PyErr_SetString(PyExc_ValueError, "embedded null character");
goto exit;
}
num_params = _PyLong_AsInt(args[1]);
if (num_params == -1 && PyErr_Occurred()) {
goto exit;
}
aggregate_class = args[2];
return_value = create_window_function_impl(self, cls, name, num_params, aggregate_class); return_value = create_window_function_impl(self, cls, name, num_params, aggregate_class);
exit: exit:
@ -406,15 +453,34 @@ pysqlite_connection_create_aggregate(pysqlite_Connection *self, PyTypeObject *cl
{ {
PyObject *return_value = NULL; PyObject *return_value = NULL;
static const char * const _keywords[] = {"name", "n_arg", "aggregate_class", NULL}; static const char * const _keywords[] = {"name", "n_arg", "aggregate_class", NULL};
static _PyArg_Parser _parser = {"siO:create_aggregate", _keywords, 0}; static _PyArg_Parser _parser = {NULL, _keywords, "create_aggregate", 0};
PyObject *argsbuf[3];
const char *name; const char *name;
int n_arg; int n_arg;
PyObject *aggregate_class; PyObject *aggregate_class;
if (!_PyArg_ParseStackAndKeywords(args, nargs, kwnames, &_parser, args = _PyArg_UnpackKeywords(args, nargs, NULL, kwnames, &_parser, 3, 3, 0, argsbuf);
&name, &n_arg, &aggregate_class)) { if (!args) {
goto exit; goto exit;
} }
if (!PyUnicode_Check(args[0])) {
_PyArg_BadArgument("create_aggregate", "argument 'name'", "str", args[0]);
goto exit;
}
Py_ssize_t name_length;
name = PyUnicode_AsUTF8AndSize(args[0], &name_length);
if (name == NULL) {
goto exit;
}
if (strlen(name) != (size_t)name_length) {
PyErr_SetString(PyExc_ValueError, "embedded null character");
goto exit;
}
n_arg = _PyLong_AsInt(args[1]);
if (n_arg == -1 && PyErr_Occurred()) {
goto exit;
}
aggregate_class = args[2];
return_value = pysqlite_connection_create_aggregate_impl(self, cls, name, n_arg, aggregate_class); return_value = pysqlite_connection_create_aggregate_impl(self, cls, name, n_arg, aggregate_class);
exit: exit:
@ -440,13 +506,15 @@ pysqlite_connection_set_authorizer(pysqlite_Connection *self, PyTypeObject *cls,
{ {
PyObject *return_value = NULL; PyObject *return_value = NULL;
static const char * const _keywords[] = {"authorizer_callback", NULL}; static const char * const _keywords[] = {"authorizer_callback", NULL};
static _PyArg_Parser _parser = {"O:set_authorizer", _keywords, 0}; static _PyArg_Parser _parser = {NULL, _keywords, "set_authorizer", 0};
PyObject *argsbuf[1];
PyObject *callable; PyObject *callable;
if (!_PyArg_ParseStackAndKeywords(args, nargs, kwnames, &_parser, args = _PyArg_UnpackKeywords(args, nargs, NULL, kwnames, &_parser, 1, 1, 0, argsbuf);
&callable)) { if (!args) {
goto exit; goto exit;
} }
callable = args[0];
return_value = pysqlite_connection_set_authorizer_impl(self, cls, callable); return_value = pysqlite_connection_set_authorizer_impl(self, cls, callable);
exit: exit:
@ -472,12 +540,18 @@ pysqlite_connection_set_progress_handler(pysqlite_Connection *self, PyTypeObject
{ {
PyObject *return_value = NULL; PyObject *return_value = NULL;
static const char * const _keywords[] = {"progress_handler", "n", NULL}; static const char * const _keywords[] = {"progress_handler", "n", NULL};
static _PyArg_Parser _parser = {"Oi:set_progress_handler", _keywords, 0}; static _PyArg_Parser _parser = {NULL, _keywords, "set_progress_handler", 0};
PyObject *argsbuf[2];
PyObject *callable; PyObject *callable;
int n; int n;
if (!_PyArg_ParseStackAndKeywords(args, nargs, kwnames, &_parser, args = _PyArg_UnpackKeywords(args, nargs, NULL, kwnames, &_parser, 2, 2, 0, argsbuf);
&callable, &n)) { if (!args) {
goto exit;
}
callable = args[0];
n = _PyLong_AsInt(args[1]);
if (n == -1 && PyErr_Occurred()) {
goto exit; goto exit;
} }
return_value = pysqlite_connection_set_progress_handler_impl(self, cls, callable, n); return_value = pysqlite_connection_set_progress_handler_impl(self, cls, callable, n);
@ -505,13 +579,15 @@ pysqlite_connection_set_trace_callback(pysqlite_Connection *self, PyTypeObject *
{ {
PyObject *return_value = NULL; PyObject *return_value = NULL;
static const char * const _keywords[] = {"trace_callback", NULL}; static const char * const _keywords[] = {"trace_callback", NULL};
static _PyArg_Parser _parser = {"O:set_trace_callback", _keywords, 0}; static _PyArg_Parser _parser = {NULL, _keywords, "set_trace_callback", 0};
PyObject *argsbuf[1];
PyObject *callable; PyObject *callable;
if (!_PyArg_ParseStackAndKeywords(args, nargs, kwnames, &_parser, args = _PyArg_UnpackKeywords(args, nargs, NULL, kwnames, &_parser, 1, 1, 0, argsbuf);
&callable)) { if (!args) {
goto exit; goto exit;
} }
callable = args[0];
return_value = pysqlite_connection_set_trace_callback_impl(self, cls, callable); return_value = pysqlite_connection_set_trace_callback_impl(self, cls, callable);
exit: exit:
@ -830,14 +906,29 @@ pysqlite_connection_create_collation(pysqlite_Connection *self, PyTypeObject *cl
{ {
PyObject *return_value = NULL; PyObject *return_value = NULL;
static const char * const _keywords[] = {"", "", NULL}; static const char * const _keywords[] = {"", "", NULL};
static _PyArg_Parser _parser = {"sO:create_collation", _keywords, 0}; static _PyArg_Parser _parser = {NULL, _keywords, "create_collation", 0};
PyObject *argsbuf[2];
const char *name; const char *name;
PyObject *callable; PyObject *callable;
if (!_PyArg_ParseStackAndKeywords(args, nargs, kwnames, &_parser, args = _PyArg_UnpackKeywords(args, nargs, NULL, kwnames, &_parser, 2, 2, 0, argsbuf);
&name, &callable)) { if (!args) {
goto exit; goto exit;
} }
if (!PyUnicode_Check(args[0])) {
_PyArg_BadArgument("create_collation", "argument 1", "str", args[0]);
goto exit;
}
Py_ssize_t name_length;
name = PyUnicode_AsUTF8AndSize(args[0], &name_length);
if (name == NULL) {
goto exit;
}
if (strlen(name) != (size_t)name_length) {
PyErr_SetString(PyExc_ValueError, "embedded null character");
goto exit;
}
callable = args[1];
return_value = pysqlite_connection_create_collation_impl(self, cls, name, callable); return_value = pysqlite_connection_create_collation_impl(self, cls, name, callable);
exit: exit:
@ -1145,4 +1236,4 @@ exit:
#ifndef DESERIALIZE_METHODDEF #ifndef DESERIALIZE_METHODDEF
#define DESERIALIZE_METHODDEF #define DESERIALIZE_METHODDEF
#endif /* !defined(DESERIALIZE_METHODDEF) */ #endif /* !defined(DESERIALIZE_METHODDEF) */
/*[clinic end generated code: output=be2f526e78fa65b1 input=a9049054013a1b77]*/ /*[clinic end generated code: output=6c9432a9fe0a4f5e input=a9049054013a1b77]*/

View File

@ -176,15 +176,51 @@ _sre_SRE_Pattern_match(PatternObject *self, PyTypeObject *cls, PyObject *const *
{ {
PyObject *return_value = NULL; PyObject *return_value = NULL;
static const char * const _keywords[] = {"string", "pos", "endpos", NULL}; static const char * const _keywords[] = {"string", "pos", "endpos", NULL};
static _PyArg_Parser _parser = {"O|nn:match", _keywords, 0}; static _PyArg_Parser _parser = {NULL, _keywords, "match", 0};
PyObject *argsbuf[3];
Py_ssize_t noptargs = nargs + (kwnames ? PyTuple_GET_SIZE(kwnames) : 0) - 1;
PyObject *string; PyObject *string;
Py_ssize_t pos = 0; Py_ssize_t pos = 0;
Py_ssize_t endpos = PY_SSIZE_T_MAX; Py_ssize_t endpos = PY_SSIZE_T_MAX;
if (!_PyArg_ParseStackAndKeywords(args, nargs, kwnames, &_parser, args = _PyArg_UnpackKeywords(args, nargs, NULL, kwnames, &_parser, 1, 3, 0, argsbuf);
&string, &pos, &endpos)) { if (!args) {
goto exit; goto exit;
} }
string = args[0];
if (!noptargs) {
goto skip_optional_pos;
}
if (args[1]) {
{
Py_ssize_t ival = -1;
PyObject *iobj = _PyNumber_Index(args[1]);
if (iobj != NULL) {
ival = PyLong_AsSsize_t(iobj);
Py_DECREF(iobj);
}
if (ival == -1 && PyErr_Occurred()) {
goto exit;
}
pos = ival;
}
if (!--noptargs) {
goto skip_optional_pos;
}
}
{
Py_ssize_t ival = -1;
PyObject *iobj = _PyNumber_Index(args[2]);
if (iobj != NULL) {
ival = PyLong_AsSsize_t(iobj);
Py_DECREF(iobj);
}
if (ival == -1 && PyErr_Occurred()) {
goto exit;
}
endpos = ival;
}
skip_optional_pos:
return_value = _sre_SRE_Pattern_match_impl(self, cls, string, pos, endpos); return_value = _sre_SRE_Pattern_match_impl(self, cls, string, pos, endpos);
exit: exit:
@ -210,15 +246,51 @@ _sre_SRE_Pattern_fullmatch(PatternObject *self, PyTypeObject *cls, PyObject *con
{ {
PyObject *return_value = NULL; PyObject *return_value = NULL;
static const char * const _keywords[] = {"string", "pos", "endpos", NULL}; static const char * const _keywords[] = {"string", "pos", "endpos", NULL};
static _PyArg_Parser _parser = {"O|nn:fullmatch", _keywords, 0}; static _PyArg_Parser _parser = {NULL, _keywords, "fullmatch", 0};
PyObject *argsbuf[3];
Py_ssize_t noptargs = nargs + (kwnames ? PyTuple_GET_SIZE(kwnames) : 0) - 1;
PyObject *string; PyObject *string;
Py_ssize_t pos = 0; Py_ssize_t pos = 0;
Py_ssize_t endpos = PY_SSIZE_T_MAX; Py_ssize_t endpos = PY_SSIZE_T_MAX;
if (!_PyArg_ParseStackAndKeywords(args, nargs, kwnames, &_parser, args = _PyArg_UnpackKeywords(args, nargs, NULL, kwnames, &_parser, 1, 3, 0, argsbuf);
&string, &pos, &endpos)) { if (!args) {
goto exit; goto exit;
} }
string = args[0];
if (!noptargs) {
goto skip_optional_pos;
}
if (args[1]) {
{
Py_ssize_t ival = -1;
PyObject *iobj = _PyNumber_Index(args[1]);
if (iobj != NULL) {
ival = PyLong_AsSsize_t(iobj);
Py_DECREF(iobj);
}
if (ival == -1 && PyErr_Occurred()) {
goto exit;
}
pos = ival;
}
if (!--noptargs) {
goto skip_optional_pos;
}
}
{
Py_ssize_t ival = -1;
PyObject *iobj = _PyNumber_Index(args[2]);
if (iobj != NULL) {
ival = PyLong_AsSsize_t(iobj);
Py_DECREF(iobj);
}
if (ival == -1 && PyErr_Occurred()) {
goto exit;
}
endpos = ival;
}
skip_optional_pos:
return_value = _sre_SRE_Pattern_fullmatch_impl(self, cls, string, pos, endpos); return_value = _sre_SRE_Pattern_fullmatch_impl(self, cls, string, pos, endpos);
exit: exit:
@ -246,15 +318,51 @@ _sre_SRE_Pattern_search(PatternObject *self, PyTypeObject *cls, PyObject *const
{ {
PyObject *return_value = NULL; PyObject *return_value = NULL;
static const char * const _keywords[] = {"string", "pos", "endpos", NULL}; static const char * const _keywords[] = {"string", "pos", "endpos", NULL};
static _PyArg_Parser _parser = {"O|nn:search", _keywords, 0}; static _PyArg_Parser _parser = {NULL, _keywords, "search", 0};
PyObject *argsbuf[3];
Py_ssize_t noptargs = nargs + (kwnames ? PyTuple_GET_SIZE(kwnames) : 0) - 1;
PyObject *string; PyObject *string;
Py_ssize_t pos = 0; Py_ssize_t pos = 0;
Py_ssize_t endpos = PY_SSIZE_T_MAX; Py_ssize_t endpos = PY_SSIZE_T_MAX;
if (!_PyArg_ParseStackAndKeywords(args, nargs, kwnames, &_parser, args = _PyArg_UnpackKeywords(args, nargs, NULL, kwnames, &_parser, 1, 3, 0, argsbuf);
&string, &pos, &endpos)) { if (!args) {
goto exit; goto exit;
} }
string = args[0];
if (!noptargs) {
goto skip_optional_pos;
}
if (args[1]) {
{
Py_ssize_t ival = -1;
PyObject *iobj = _PyNumber_Index(args[1]);
if (iobj != NULL) {
ival = PyLong_AsSsize_t(iobj);
Py_DECREF(iobj);
}
if (ival == -1 && PyErr_Occurred()) {
goto exit;
}
pos = ival;
}
if (!--noptargs) {
goto skip_optional_pos;
}
}
{
Py_ssize_t ival = -1;
PyObject *iobj = _PyNumber_Index(args[2]);
if (iobj != NULL) {
ival = PyLong_AsSsize_t(iobj);
Py_DECREF(iobj);
}
if (ival == -1 && PyErr_Occurred()) {
goto exit;
}
endpos = ival;
}
skip_optional_pos:
return_value = _sre_SRE_Pattern_search_impl(self, cls, string, pos, endpos); return_value = _sre_SRE_Pattern_search_impl(self, cls, string, pos, endpos);
exit: exit:
@ -351,15 +459,51 @@ _sre_SRE_Pattern_finditer(PatternObject *self, PyTypeObject *cls, PyObject *cons
{ {
PyObject *return_value = NULL; PyObject *return_value = NULL;
static const char * const _keywords[] = {"string", "pos", "endpos", NULL}; static const char * const _keywords[] = {"string", "pos", "endpos", NULL};
static _PyArg_Parser _parser = {"O|nn:finditer", _keywords, 0}; static _PyArg_Parser _parser = {NULL, _keywords, "finditer", 0};
PyObject *argsbuf[3];
Py_ssize_t noptargs = nargs + (kwnames ? PyTuple_GET_SIZE(kwnames) : 0) - 1;
PyObject *string; PyObject *string;
Py_ssize_t pos = 0; Py_ssize_t pos = 0;
Py_ssize_t endpos = PY_SSIZE_T_MAX; Py_ssize_t endpos = PY_SSIZE_T_MAX;
if (!_PyArg_ParseStackAndKeywords(args, nargs, kwnames, &_parser, args = _PyArg_UnpackKeywords(args, nargs, NULL, kwnames, &_parser, 1, 3, 0, argsbuf);
&string, &pos, &endpos)) { if (!args) {
goto exit; goto exit;
} }
string = args[0];
if (!noptargs) {
goto skip_optional_pos;
}
if (args[1]) {
{
Py_ssize_t ival = -1;
PyObject *iobj = _PyNumber_Index(args[1]);
if (iobj != NULL) {
ival = PyLong_AsSsize_t(iobj);
Py_DECREF(iobj);
}
if (ival == -1 && PyErr_Occurred()) {
goto exit;
}
pos = ival;
}
if (!--noptargs) {
goto skip_optional_pos;
}
}
{
Py_ssize_t ival = -1;
PyObject *iobj = _PyNumber_Index(args[2]);
if (iobj != NULL) {
ival = PyLong_AsSsize_t(iobj);
Py_DECREF(iobj);
}
if (ival == -1 && PyErr_Occurred()) {
goto exit;
}
endpos = ival;
}
skip_optional_pos:
return_value = _sre_SRE_Pattern_finditer_impl(self, cls, string, pos, endpos); return_value = _sre_SRE_Pattern_finditer_impl(self, cls, string, pos, endpos);
exit: exit:
@ -384,15 +528,51 @@ _sre_SRE_Pattern_scanner(PatternObject *self, PyTypeObject *cls, PyObject *const
{ {
PyObject *return_value = NULL; PyObject *return_value = NULL;
static const char * const _keywords[] = {"string", "pos", "endpos", NULL}; static const char * const _keywords[] = {"string", "pos", "endpos", NULL};
static _PyArg_Parser _parser = {"O|nn:scanner", _keywords, 0}; static _PyArg_Parser _parser = {NULL, _keywords, "scanner", 0};
PyObject *argsbuf[3];
Py_ssize_t noptargs = nargs + (kwnames ? PyTuple_GET_SIZE(kwnames) : 0) - 1;
PyObject *string; PyObject *string;
Py_ssize_t pos = 0; Py_ssize_t pos = 0;
Py_ssize_t endpos = PY_SSIZE_T_MAX; Py_ssize_t endpos = PY_SSIZE_T_MAX;
if (!_PyArg_ParseStackAndKeywords(args, nargs, kwnames, &_parser, args = _PyArg_UnpackKeywords(args, nargs, NULL, kwnames, &_parser, 1, 3, 0, argsbuf);
&string, &pos, &endpos)) { if (!args) {
goto exit; goto exit;
} }
string = args[0];
if (!noptargs) {
goto skip_optional_pos;
}
if (args[1]) {
{
Py_ssize_t ival = -1;
PyObject *iobj = _PyNumber_Index(args[1]);
if (iobj != NULL) {
ival = PyLong_AsSsize_t(iobj);
Py_DECREF(iobj);
}
if (ival == -1 && PyErr_Occurred()) {
goto exit;
}
pos = ival;
}
if (!--noptargs) {
goto skip_optional_pos;
}
}
{
Py_ssize_t ival = -1;
PyObject *iobj = _PyNumber_Index(args[2]);
if (iobj != NULL) {
ival = PyLong_AsSsize_t(iobj);
Py_DECREF(iobj);
}
if (ival == -1 && PyErr_Occurred()) {
goto exit;
}
endpos = ival;
}
skip_optional_pos:
return_value = _sre_SRE_Pattern_scanner_impl(self, cls, string, pos, endpos); return_value = _sre_SRE_Pattern_scanner_impl(self, cls, string, pos, endpos);
exit: exit:
@ -468,15 +648,35 @@ _sre_SRE_Pattern_sub(PatternObject *self, PyTypeObject *cls, PyObject *const *ar
{ {
PyObject *return_value = NULL; PyObject *return_value = NULL;
static const char * const _keywords[] = {"repl", "string", "count", NULL}; static const char * const _keywords[] = {"repl", "string", "count", NULL};
static _PyArg_Parser _parser = {"OO|n:sub", _keywords, 0}; static _PyArg_Parser _parser = {NULL, _keywords, "sub", 0};
PyObject *argsbuf[3];
Py_ssize_t noptargs = nargs + (kwnames ? PyTuple_GET_SIZE(kwnames) : 0) - 2;
PyObject *repl; PyObject *repl;
PyObject *string; PyObject *string;
Py_ssize_t count = 0; Py_ssize_t count = 0;
if (!_PyArg_ParseStackAndKeywords(args, nargs, kwnames, &_parser, args = _PyArg_UnpackKeywords(args, nargs, NULL, kwnames, &_parser, 2, 3, 0, argsbuf);
&repl, &string, &count)) { if (!args) {
goto exit; goto exit;
} }
repl = args[0];
string = args[1];
if (!noptargs) {
goto skip_optional_pos;
}
{
Py_ssize_t ival = -1;
PyObject *iobj = _PyNumber_Index(args[2]);
if (iobj != NULL) {
ival = PyLong_AsSsize_t(iobj);
Py_DECREF(iobj);
}
if (ival == -1 && PyErr_Occurred()) {
goto exit;
}
count = ival;
}
skip_optional_pos:
return_value = _sre_SRE_Pattern_sub_impl(self, cls, repl, string, count); return_value = _sre_SRE_Pattern_sub_impl(self, cls, repl, string, count);
exit: exit:
@ -502,15 +702,35 @@ _sre_SRE_Pattern_subn(PatternObject *self, PyTypeObject *cls, PyObject *const *a
{ {
PyObject *return_value = NULL; PyObject *return_value = NULL;
static const char * const _keywords[] = {"repl", "string", "count", NULL}; static const char * const _keywords[] = {"repl", "string", "count", NULL};
static _PyArg_Parser _parser = {"OO|n:subn", _keywords, 0}; static _PyArg_Parser _parser = {NULL, _keywords, "subn", 0};
PyObject *argsbuf[3];
Py_ssize_t noptargs = nargs + (kwnames ? PyTuple_GET_SIZE(kwnames) : 0) - 2;
PyObject *repl; PyObject *repl;
PyObject *string; PyObject *string;
Py_ssize_t count = 0; Py_ssize_t count = 0;
if (!_PyArg_ParseStackAndKeywords(args, nargs, kwnames, &_parser, args = _PyArg_UnpackKeywords(args, nargs, NULL, kwnames, &_parser, 2, 3, 0, argsbuf);
&repl, &string, &count)) { if (!args) {
goto exit; goto exit;
} }
repl = args[0];
string = args[1];
if (!noptargs) {
goto skip_optional_pos;
}
{
Py_ssize_t ival = -1;
PyObject *iobj = _PyNumber_Index(args[2]);
if (iobj != NULL) {
ival = PyLong_AsSsize_t(iobj);
Py_DECREF(iobj);
}
if (ival == -1 && PyErr_Occurred()) {
goto exit;
}
count = ival;
}
skip_optional_pos:
return_value = _sre_SRE_Pattern_subn_impl(self, cls, repl, string, count); return_value = _sre_SRE_Pattern_subn_impl(self, cls, repl, string, count);
exit: exit:
@ -882,18 +1102,11 @@ _sre_SRE_Scanner_match_impl(ScannerObject *self, PyTypeObject *cls);
static PyObject * static PyObject *
_sre_SRE_Scanner_match(ScannerObject *self, PyTypeObject *cls, PyObject *const *args, Py_ssize_t nargs, PyObject *kwnames) _sre_SRE_Scanner_match(ScannerObject *self, PyTypeObject *cls, PyObject *const *args, Py_ssize_t nargs, PyObject *kwnames)
{ {
PyObject *return_value = NULL; if (nargs) {
static const char * const _keywords[] = { NULL}; PyErr_SetString(PyExc_TypeError, "match() takes no arguments");
static _PyArg_Parser _parser = {":match", _keywords, 0}; return NULL;
if (!_PyArg_ParseStackAndKeywords(args, nargs, kwnames, &_parser
)) {
goto exit;
} }
return_value = _sre_SRE_Scanner_match_impl(self, cls); return _sre_SRE_Scanner_match_impl(self, cls);
exit:
return return_value;
} }
PyDoc_STRVAR(_sre_SRE_Scanner_search__doc__, PyDoc_STRVAR(_sre_SRE_Scanner_search__doc__,
@ -910,17 +1123,10 @@ _sre_SRE_Scanner_search_impl(ScannerObject *self, PyTypeObject *cls);
static PyObject * static PyObject *
_sre_SRE_Scanner_search(ScannerObject *self, PyTypeObject *cls, PyObject *const *args, Py_ssize_t nargs, PyObject *kwnames) _sre_SRE_Scanner_search(ScannerObject *self, PyTypeObject *cls, PyObject *const *args, Py_ssize_t nargs, PyObject *kwnames)
{ {
PyObject *return_value = NULL; if (nargs) {
static const char * const _keywords[] = { NULL}; PyErr_SetString(PyExc_TypeError, "search() takes no arguments");
static _PyArg_Parser _parser = {":search", _keywords, 0}; return NULL;
if (!_PyArg_ParseStackAndKeywords(args, nargs, kwnames, &_parser
)) {
goto exit;
} }
return_value = _sre_SRE_Scanner_search_impl(self, cls); return _sre_SRE_Scanner_search_impl(self, cls);
exit:
return return_value;
} }
/*[clinic end generated code: output=9d7510a57a157a38 input=a9049054013a1b77]*/ /*[clinic end generated code: output=8d8200b2177cd667 input=a9049054013a1b77]*/

View File

@ -493,13 +493,15 @@ _multibytecodec_MultibyteStreamWriter_write(MultibyteStreamWriterObject *self, P
{ {
PyObject *return_value = NULL; PyObject *return_value = NULL;
static const char * const _keywords[] = {"", NULL}; static const char * const _keywords[] = {"", NULL};
static _PyArg_Parser _parser = {"O:write", _keywords, 0}; static _PyArg_Parser _parser = {NULL, _keywords, "write", 0};
PyObject *argsbuf[1];
PyObject *strobj; PyObject *strobj;
if (!_PyArg_ParseStackAndKeywords(args, nargs, kwnames, &_parser, args = _PyArg_UnpackKeywords(args, nargs, NULL, kwnames, &_parser, 1, 1, 0, argsbuf);
&strobj)) { if (!args) {
goto exit; goto exit;
} }
strobj = args[0];
return_value = _multibytecodec_MultibyteStreamWriter_write_impl(self, cls, strobj); return_value = _multibytecodec_MultibyteStreamWriter_write_impl(self, cls, strobj);
exit: exit:
@ -524,13 +526,15 @@ _multibytecodec_MultibyteStreamWriter_writelines(MultibyteStreamWriterObject *se
{ {
PyObject *return_value = NULL; PyObject *return_value = NULL;
static const char * const _keywords[] = {"", NULL}; static const char * const _keywords[] = {"", NULL};
static _PyArg_Parser _parser = {"O:writelines", _keywords, 0}; static _PyArg_Parser _parser = {NULL, _keywords, "writelines", 0};
PyObject *argsbuf[1];
PyObject *lines; PyObject *lines;
if (!_PyArg_ParseStackAndKeywords(args, nargs, kwnames, &_parser, args = _PyArg_UnpackKeywords(args, nargs, NULL, kwnames, &_parser, 1, 1, 0, argsbuf);
&lines)) { if (!args) {
goto exit; goto exit;
} }
lines = args[0];
return_value = _multibytecodec_MultibyteStreamWriter_writelines_impl(self, cls, lines); return_value = _multibytecodec_MultibyteStreamWriter_writelines_impl(self, cls, lines);
exit: exit:
@ -552,18 +556,11 @@ _multibytecodec_MultibyteStreamWriter_reset_impl(MultibyteStreamWriterObject *se
static PyObject * static PyObject *
_multibytecodec_MultibyteStreamWriter_reset(MultibyteStreamWriterObject *self, PyTypeObject *cls, PyObject *const *args, Py_ssize_t nargs, PyObject *kwnames) _multibytecodec_MultibyteStreamWriter_reset(MultibyteStreamWriterObject *self, PyTypeObject *cls, PyObject *const *args, Py_ssize_t nargs, PyObject *kwnames)
{ {
PyObject *return_value = NULL; if (nargs) {
static const char * const _keywords[] = { NULL}; PyErr_SetString(PyExc_TypeError, "reset() takes no arguments");
static _PyArg_Parser _parser = {":reset", _keywords, 0}; return NULL;
if (!_PyArg_ParseStackAndKeywords(args, nargs, kwnames, &_parser
)) {
goto exit;
} }
return_value = _multibytecodec_MultibyteStreamWriter_reset_impl(self, cls); return _multibytecodec_MultibyteStreamWriter_reset_impl(self, cls);
exit:
return return_value;
} }
PyDoc_STRVAR(_multibytecodec___create_codec__doc__, PyDoc_STRVAR(_multibytecodec___create_codec__doc__,
@ -573,4 +570,4 @@ PyDoc_STRVAR(_multibytecodec___create_codec__doc__,
#define _MULTIBYTECODEC___CREATE_CODEC_METHODDEF \ #define _MULTIBYTECODEC___CREATE_CODEC_METHODDEF \
{"__create_codec", (PyCFunction)_multibytecodec___create_codec, METH_O, _multibytecodec___create_codec__doc__}, {"__create_codec", (PyCFunction)_multibytecodec___create_codec, METH_O, _multibytecodec___create_codec__doc__},
/*[clinic end generated code: output=8813c05077580bda input=a9049054013a1b77]*/ /*[clinic end generated code: output=0ee00c9f6883afe9 input=a9049054013a1b77]*/

View File

@ -17,18 +17,11 @@ _curses_panel_panel_bottom_impl(PyCursesPanelObject *self, PyTypeObject *cls);
static PyObject * static PyObject *
_curses_panel_panel_bottom(PyCursesPanelObject *self, PyTypeObject *cls, PyObject *const *args, Py_ssize_t nargs, PyObject *kwnames) _curses_panel_panel_bottom(PyCursesPanelObject *self, PyTypeObject *cls, PyObject *const *args, Py_ssize_t nargs, PyObject *kwnames)
{ {
PyObject *return_value = NULL; if (nargs) {
static const char * const _keywords[] = { NULL}; PyErr_SetString(PyExc_TypeError, "bottom() takes no arguments");
static _PyArg_Parser _parser = {":bottom", _keywords, 0}; return NULL;
if (!_PyArg_ParseStackAndKeywords(args, nargs, kwnames, &_parser
)) {
goto exit;
} }
return_value = _curses_panel_panel_bottom_impl(self, cls); return _curses_panel_panel_bottom_impl(self, cls);
exit:
return return_value;
} }
PyDoc_STRVAR(_curses_panel_panel_hide__doc__, PyDoc_STRVAR(_curses_panel_panel_hide__doc__,
@ -48,18 +41,11 @@ _curses_panel_panel_hide_impl(PyCursesPanelObject *self, PyTypeObject *cls);
static PyObject * static PyObject *
_curses_panel_panel_hide(PyCursesPanelObject *self, PyTypeObject *cls, PyObject *const *args, Py_ssize_t nargs, PyObject *kwnames) _curses_panel_panel_hide(PyCursesPanelObject *self, PyTypeObject *cls, PyObject *const *args, Py_ssize_t nargs, PyObject *kwnames)
{ {
PyObject *return_value = NULL; if (nargs) {
static const char * const _keywords[] = { NULL}; PyErr_SetString(PyExc_TypeError, "hide() takes no arguments");
static _PyArg_Parser _parser = {":hide", _keywords, 0}; return NULL;
if (!_PyArg_ParseStackAndKeywords(args, nargs, kwnames, &_parser
)) {
goto exit;
} }
return_value = _curses_panel_panel_hide_impl(self, cls); return _curses_panel_panel_hide_impl(self, cls);
exit:
return return_value;
} }
PyDoc_STRVAR(_curses_panel_panel_show__doc__, PyDoc_STRVAR(_curses_panel_panel_show__doc__,
@ -77,18 +63,11 @@ _curses_panel_panel_show_impl(PyCursesPanelObject *self, PyTypeObject *cls);
static PyObject * static PyObject *
_curses_panel_panel_show(PyCursesPanelObject *self, PyTypeObject *cls, PyObject *const *args, Py_ssize_t nargs, PyObject *kwnames) _curses_panel_panel_show(PyCursesPanelObject *self, PyTypeObject *cls, PyObject *const *args, Py_ssize_t nargs, PyObject *kwnames)
{ {
PyObject *return_value = NULL; if (nargs) {
static const char * const _keywords[] = { NULL}; PyErr_SetString(PyExc_TypeError, "show() takes no arguments");
static _PyArg_Parser _parser = {":show", _keywords, 0}; return NULL;
if (!_PyArg_ParseStackAndKeywords(args, nargs, kwnames, &_parser
)) {
goto exit;
} }
return_value = _curses_panel_panel_show_impl(self, cls); return _curses_panel_panel_show_impl(self, cls);
exit:
return return_value;
} }
PyDoc_STRVAR(_curses_panel_panel_top__doc__, PyDoc_STRVAR(_curses_panel_panel_top__doc__,
@ -106,18 +85,11 @@ _curses_panel_panel_top_impl(PyCursesPanelObject *self, PyTypeObject *cls);
static PyObject * static PyObject *
_curses_panel_panel_top(PyCursesPanelObject *self, PyTypeObject *cls, PyObject *const *args, Py_ssize_t nargs, PyObject *kwnames) _curses_panel_panel_top(PyCursesPanelObject *self, PyTypeObject *cls, PyObject *const *args, Py_ssize_t nargs, PyObject *kwnames)
{ {
PyObject *return_value = NULL; if (nargs) {
static const char * const _keywords[] = { NULL}; PyErr_SetString(PyExc_TypeError, "top() takes no arguments");
static _PyArg_Parser _parser = {":top", _keywords, 0}; return NULL;
if (!_PyArg_ParseStackAndKeywords(args, nargs, kwnames, &_parser
)) {
goto exit;
} }
return_value = _curses_panel_panel_top_impl(self, cls); return _curses_panel_panel_top_impl(self, cls);
exit:
return return_value;
} }
PyDoc_STRVAR(_curses_panel_panel_above__doc__, PyDoc_STRVAR(_curses_panel_panel_above__doc__,
@ -192,12 +164,21 @@ _curses_panel_panel_move(PyCursesPanelObject *self, PyTypeObject *cls, PyObject
{ {
PyObject *return_value = NULL; PyObject *return_value = NULL;
static const char * const _keywords[] = {"", "", NULL}; static const char * const _keywords[] = {"", "", NULL};
static _PyArg_Parser _parser = {"ii:move", _keywords, 0}; static _PyArg_Parser _parser = {NULL, _keywords, "move", 0};
PyObject *argsbuf[2];
int y; int y;
int x; int x;
if (!_PyArg_ParseStackAndKeywords(args, nargs, kwnames, &_parser, args = _PyArg_UnpackKeywords(args, nargs, NULL, kwnames, &_parser, 2, 2, 0, argsbuf);
&y, &x)) { if (!args) {
goto exit;
}
y = _PyLong_AsInt(args[0]);
if (y == -1 && PyErr_Occurred()) {
goto exit;
}
x = _PyLong_AsInt(args[1]);
if (x == -1 && PyErr_Occurred()) {
goto exit; goto exit;
} }
return_value = _curses_panel_panel_move_impl(self, cls, y, x); return_value = _curses_panel_panel_move_impl(self, cls, y, x);
@ -243,13 +224,19 @@ _curses_panel_panel_replace(PyCursesPanelObject *self, PyTypeObject *cls, PyObje
{ {
PyObject *return_value = NULL; PyObject *return_value = NULL;
static const char * const _keywords[] = {"", NULL}; static const char * const _keywords[] = {"", NULL};
static _PyArg_Parser _parser = {"O!:replace", _keywords, 0}; static _PyArg_Parser _parser = {NULL, _keywords, "replace", 0};
PyObject *argsbuf[1];
PyCursesWindowObject *win; PyCursesWindowObject *win;
if (!_PyArg_ParseStackAndKeywords(args, nargs, kwnames, &_parser, args = _PyArg_UnpackKeywords(args, nargs, NULL, kwnames, &_parser, 1, 1, 0, argsbuf);
&PyCursesWindow_Type, &win)) { if (!args) {
goto exit; goto exit;
} }
if (!PyObject_TypeCheck(args[0], &PyCursesWindow_Type)) {
_PyArg_BadArgument("replace", "argument 1", (&PyCursesWindow_Type)->tp_name, args[0]);
goto exit;
}
win = (PyCursesWindowObject *)args[0];
return_value = _curses_panel_panel_replace_impl(self, cls, win); return_value = _curses_panel_panel_replace_impl(self, cls, win);
exit: exit:
@ -274,13 +261,15 @@ _curses_panel_panel_set_userptr(PyCursesPanelObject *self, PyTypeObject *cls, Py
{ {
PyObject *return_value = NULL; PyObject *return_value = NULL;
static const char * const _keywords[] = {"", NULL}; static const char * const _keywords[] = {"", NULL};
static _PyArg_Parser _parser = {"O:set_userptr", _keywords, 0}; static _PyArg_Parser _parser = {NULL, _keywords, "set_userptr", 0};
PyObject *argsbuf[1];
PyObject *obj; PyObject *obj;
if (!_PyArg_ParseStackAndKeywords(args, nargs, kwnames, &_parser, args = _PyArg_UnpackKeywords(args, nargs, NULL, kwnames, &_parser, 1, 1, 0, argsbuf);
&obj)) { if (!args) {
goto exit; goto exit;
} }
obj = args[0];
return_value = _curses_panel_panel_set_userptr_impl(self, cls, obj); return_value = _curses_panel_panel_set_userptr_impl(self, cls, obj);
exit: exit:
@ -303,18 +292,11 @@ _curses_panel_panel_userptr_impl(PyCursesPanelObject *self,
static PyObject * static PyObject *
_curses_panel_panel_userptr(PyCursesPanelObject *self, PyTypeObject *cls, PyObject *const *args, Py_ssize_t nargs, PyObject *kwnames) _curses_panel_panel_userptr(PyCursesPanelObject *self, PyTypeObject *cls, PyObject *const *args, Py_ssize_t nargs, PyObject *kwnames)
{ {
PyObject *return_value = NULL; if (nargs) {
static const char * const _keywords[] = { NULL}; PyErr_SetString(PyExc_TypeError, "userptr() takes no arguments");
static _PyArg_Parser _parser = {":userptr", _keywords, 0}; return NULL;
if (!_PyArg_ParseStackAndKeywords(args, nargs, kwnames, &_parser
)) {
goto exit;
} }
return_value = _curses_panel_panel_userptr_impl(self, cls); return _curses_panel_panel_userptr_impl(self, cls);
exit:
return return_value;
} }
PyDoc_STRVAR(_curses_panel_bottom_panel__doc__, PyDoc_STRVAR(_curses_panel_bottom_panel__doc__,
@ -401,4 +383,4 @@ _curses_panel_update_panels(PyObject *module, PyObject *Py_UNUSED(ignored))
{ {
return _curses_panel_update_panels_impl(module); return _curses_panel_update_panels_impl(module);
} }
/*[clinic end generated code: output=3081ef24e5560cb0 input=a9049054013a1b77]*/ /*[clinic end generated code: output=c552457e8067bb0a input=a9049054013a1b77]*/

View File

@ -35,18 +35,11 @@ _dbm_dbm_keys_impl(dbmobject *self, PyTypeObject *cls);
static PyObject * static PyObject *
_dbm_dbm_keys(dbmobject *self, PyTypeObject *cls, PyObject *const *args, Py_ssize_t nargs, PyObject *kwnames) _dbm_dbm_keys(dbmobject *self, PyTypeObject *cls, PyObject *const *args, Py_ssize_t nargs, PyObject *kwnames)
{ {
PyObject *return_value = NULL; if (nargs) {
static const char * const _keywords[] = { NULL}; PyErr_SetString(PyExc_TypeError, "keys() takes no arguments");
static _PyArg_Parser _parser = {":keys", _keywords, 0}; return NULL;
if (!_PyArg_ParseStackAndKeywords(args, nargs, kwnames, &_parser
)) {
goto exit;
} }
return_value = _dbm_dbm_keys_impl(self, cls); return _dbm_dbm_keys_impl(self, cls);
exit:
return return_value;
} }
PyDoc_STRVAR(_dbm_dbm_get__doc__, PyDoc_STRVAR(_dbm_dbm_get__doc__,
@ -179,4 +172,4 @@ skip_optional:
exit: exit:
return return_value; return return_value;
} }
/*[clinic end generated code: output=32ef6c0f8f2d3db9 input=a9049054013a1b77]*/ /*[clinic end generated code: output=492be70729515fe3 input=a9049054013a1b77]*/

View File

@ -104,18 +104,11 @@ _gdbm_gdbm_keys_impl(gdbmobject *self, PyTypeObject *cls);
static PyObject * static PyObject *
_gdbm_gdbm_keys(gdbmobject *self, PyTypeObject *cls, PyObject *const *args, Py_ssize_t nargs, PyObject *kwnames) _gdbm_gdbm_keys(gdbmobject *self, PyTypeObject *cls, PyObject *const *args, Py_ssize_t nargs, PyObject *kwnames)
{ {
PyObject *return_value = NULL; if (nargs) {
static const char * const _keywords[] = { NULL}; PyErr_SetString(PyExc_TypeError, "keys() takes no arguments");
static _PyArg_Parser _parser = {":keys", _keywords, 0}; return NULL;
if (!_PyArg_ParseStackAndKeywords(args, nargs, kwnames, &_parser
)) {
goto exit;
} }
return_value = _gdbm_gdbm_keys_impl(self, cls); return _gdbm_gdbm_keys_impl(self, cls);
exit:
return return_value;
} }
PyDoc_STRVAR(_gdbm_gdbm_firstkey__doc__, PyDoc_STRVAR(_gdbm_gdbm_firstkey__doc__,
@ -137,18 +130,11 @@ _gdbm_gdbm_firstkey_impl(gdbmobject *self, PyTypeObject *cls);
static PyObject * static PyObject *
_gdbm_gdbm_firstkey(gdbmobject *self, PyTypeObject *cls, PyObject *const *args, Py_ssize_t nargs, PyObject *kwnames) _gdbm_gdbm_firstkey(gdbmobject *self, PyTypeObject *cls, PyObject *const *args, Py_ssize_t nargs, PyObject *kwnames)
{ {
PyObject *return_value = NULL; if (nargs) {
static const char * const _keywords[] = { NULL}; PyErr_SetString(PyExc_TypeError, "firstkey() takes no arguments");
static _PyArg_Parser _parser = {":firstkey", _keywords, 0}; return NULL;
if (!_PyArg_ParseStackAndKeywords(args, nargs, kwnames, &_parser
)) {
goto exit;
} }
return_value = _gdbm_gdbm_firstkey_impl(self, cls); return _gdbm_gdbm_firstkey_impl(self, cls);
exit:
return return_value;
} }
PyDoc_STRVAR(_gdbm_gdbm_nextkey__doc__, PyDoc_STRVAR(_gdbm_gdbm_nextkey__doc__,
@ -212,18 +198,11 @@ _gdbm_gdbm_reorganize_impl(gdbmobject *self, PyTypeObject *cls);
static PyObject * static PyObject *
_gdbm_gdbm_reorganize(gdbmobject *self, PyTypeObject *cls, PyObject *const *args, Py_ssize_t nargs, PyObject *kwnames) _gdbm_gdbm_reorganize(gdbmobject *self, PyTypeObject *cls, PyObject *const *args, Py_ssize_t nargs, PyObject *kwnames)
{ {
PyObject *return_value = NULL; if (nargs) {
static const char * const _keywords[] = { NULL}; PyErr_SetString(PyExc_TypeError, "reorganize() takes no arguments");
static _PyArg_Parser _parser = {":reorganize", _keywords, 0}; return NULL;
if (!_PyArg_ParseStackAndKeywords(args, nargs, kwnames, &_parser
)) {
goto exit;
} }
return_value = _gdbm_gdbm_reorganize_impl(self, cls); return _gdbm_gdbm_reorganize_impl(self, cls);
exit:
return return_value;
} }
PyDoc_STRVAR(_gdbm_gdbm_sync__doc__, PyDoc_STRVAR(_gdbm_gdbm_sync__doc__,
@ -244,18 +223,11 @@ _gdbm_gdbm_sync_impl(gdbmobject *self, PyTypeObject *cls);
static PyObject * static PyObject *
_gdbm_gdbm_sync(gdbmobject *self, PyTypeObject *cls, PyObject *const *args, Py_ssize_t nargs, PyObject *kwnames) _gdbm_gdbm_sync(gdbmobject *self, PyTypeObject *cls, PyObject *const *args, Py_ssize_t nargs, PyObject *kwnames)
{ {
PyObject *return_value = NULL; if (nargs) {
static const char * const _keywords[] = { NULL}; PyErr_SetString(PyExc_TypeError, "sync() takes no arguments");
static _PyArg_Parser _parser = {":sync", _keywords, 0}; return NULL;
if (!_PyArg_ParseStackAndKeywords(args, nargs, kwnames, &_parser
)) {
goto exit;
} }
return_value = _gdbm_gdbm_sync_impl(self, cls); return _gdbm_gdbm_sync_impl(self, cls);
exit:
return return_value;
} }
PyDoc_STRVAR(dbmopen__doc__, PyDoc_STRVAR(dbmopen__doc__,
@ -333,4 +305,4 @@ skip_optional:
exit: exit:
return return_value; return return_value;
} }
/*[clinic end generated code: output=63c507f93d84a3a4 input=a9049054013a1b77]*/ /*[clinic end generated code: output=fe7a0812eb560b23 input=a9049054013a1b77]*/

View File

@ -39,17 +39,10 @@ _lsprof_Profiler_getstats_impl(ProfilerObject *self, PyTypeObject *cls);
static PyObject * static PyObject *
_lsprof_Profiler_getstats(ProfilerObject *self, PyTypeObject *cls, PyObject *const *args, Py_ssize_t nargs, PyObject *kwnames) _lsprof_Profiler_getstats(ProfilerObject *self, PyTypeObject *cls, PyObject *const *args, Py_ssize_t nargs, PyObject *kwnames)
{ {
PyObject *return_value = NULL; if (nargs) {
static const char * const _keywords[] = { NULL}; PyErr_SetString(PyExc_TypeError, "getstats() takes no arguments");
static _PyArg_Parser _parser = {":getstats", _keywords, 0}; return NULL;
if (!_PyArg_ParseStackAndKeywords(args, nargs, kwnames, &_parser
)) {
goto exit;
} }
return_value = _lsprof_Profiler_getstats_impl(self, cls); return _lsprof_Profiler_getstats_impl(self, cls);
exit:
return return_value;
} }
/*[clinic end generated code: output=b4727cfebecdd22d input=a9049054013a1b77]*/ /*[clinic end generated code: output=57c7b6b0b8666429 input=a9049054013a1b77]*/

View File

@ -146,14 +146,30 @@ _queue_SimpleQueue_get(simplequeueobject *self, PyTypeObject *cls, PyObject *con
{ {
PyObject *return_value = NULL; PyObject *return_value = NULL;
static const char * const _keywords[] = {"block", "timeout", NULL}; static const char * const _keywords[] = {"block", "timeout", NULL};
static _PyArg_Parser _parser = {"|pO:get", _keywords, 0}; static _PyArg_Parser _parser = {NULL, _keywords, "get", 0};
PyObject *argsbuf[2];
Py_ssize_t noptargs = nargs + (kwnames ? PyTuple_GET_SIZE(kwnames) : 0) - 0;
int block = 1; int block = 1;
PyObject *timeout_obj = Py_None; PyObject *timeout_obj = Py_None;
if (!_PyArg_ParseStackAndKeywords(args, nargs, kwnames, &_parser, args = _PyArg_UnpackKeywords(args, nargs, NULL, kwnames, &_parser, 0, 2, 0, argsbuf);
&block, &timeout_obj)) { if (!args) {
goto exit; goto exit;
} }
if (!noptargs) {
goto skip_optional_pos;
}
if (args[0]) {
block = PyObject_IsTrue(args[0]);
if (block < 0) {
goto exit;
}
if (!--noptargs) {
goto skip_optional_pos;
}
}
timeout_obj = args[1];
skip_optional_pos:
return_value = _queue_SimpleQueue_get_impl(self, cls, block, timeout_obj); return_value = _queue_SimpleQueue_get_impl(self, cls, block, timeout_obj);
exit: exit:
@ -179,18 +195,11 @@ _queue_SimpleQueue_get_nowait_impl(simplequeueobject *self,
static PyObject * static PyObject *
_queue_SimpleQueue_get_nowait(simplequeueobject *self, PyTypeObject *cls, PyObject *const *args, Py_ssize_t nargs, PyObject *kwnames) _queue_SimpleQueue_get_nowait(simplequeueobject *self, PyTypeObject *cls, PyObject *const *args, Py_ssize_t nargs, PyObject *kwnames)
{ {
PyObject *return_value = NULL; if (nargs) {
static const char * const _keywords[] = { NULL}; PyErr_SetString(PyExc_TypeError, "get_nowait() takes no arguments");
static _PyArg_Parser _parser = {":get_nowait", _keywords, 0}; return NULL;
if (!_PyArg_ParseStackAndKeywords(args, nargs, kwnames, &_parser
)) {
goto exit;
} }
return_value = _queue_SimpleQueue_get_nowait_impl(self, cls); return _queue_SimpleQueue_get_nowait_impl(self, cls);
exit:
return return_value;
} }
PyDoc_STRVAR(_queue_SimpleQueue_empty__doc__, PyDoc_STRVAR(_queue_SimpleQueue_empty__doc__,
@ -248,4 +257,4 @@ _queue_SimpleQueue_qsize(simplequeueobject *self, PyObject *Py_UNUSED(ignored))
exit: exit:
return return_value; return return_value;
} }
/*[clinic end generated code: output=acfaf0191d8935db input=a9049054013a1b77]*/ /*[clinic end generated code: output=36301c405a858f39 input=a9049054013a1b77]*/

View File

@ -21,18 +21,11 @@ _testmultiphase_StateAccessType_get_defining_module_impl(StateAccessTypeObject *
static PyObject * static PyObject *
_testmultiphase_StateAccessType_get_defining_module(StateAccessTypeObject *self, PyTypeObject *cls, PyObject *const *args, Py_ssize_t nargs, PyObject *kwnames) _testmultiphase_StateAccessType_get_defining_module(StateAccessTypeObject *self, PyTypeObject *cls, PyObject *const *args, Py_ssize_t nargs, PyObject *kwnames)
{ {
PyObject *return_value = NULL; if (nargs) {
static const char * const _keywords[] = { NULL}; PyErr_SetString(PyExc_TypeError, "get_defining_module() takes no arguments");
static _PyArg_Parser _parser = {":get_defining_module", _keywords, 0}; return NULL;
if (!_PyArg_ParseStackAndKeywords(args, nargs, kwnames, &_parser
)) {
goto exit;
} }
return_value = _testmultiphase_StateAccessType_get_defining_module_impl(self, cls); return _testmultiphase_StateAccessType_get_defining_module_impl(self, cls);
exit:
return return_value;
} }
PyDoc_STRVAR(_testmultiphase_StateAccessType_getmodulebydef_bad_def__doc__, PyDoc_STRVAR(_testmultiphase_StateAccessType_getmodulebydef_bad_def__doc__,
@ -51,18 +44,11 @@ _testmultiphase_StateAccessType_getmodulebydef_bad_def_impl(StateAccessTypeObjec
static PyObject * static PyObject *
_testmultiphase_StateAccessType_getmodulebydef_bad_def(StateAccessTypeObject *self, PyTypeObject *cls, PyObject *const *args, Py_ssize_t nargs, PyObject *kwnames) _testmultiphase_StateAccessType_getmodulebydef_bad_def(StateAccessTypeObject *self, PyTypeObject *cls, PyObject *const *args, Py_ssize_t nargs, PyObject *kwnames)
{ {
PyObject *return_value = NULL; if (nargs) {
static const char * const _keywords[] = { NULL}; PyErr_SetString(PyExc_TypeError, "getmodulebydef_bad_def() takes no arguments");
static _PyArg_Parser _parser = {":getmodulebydef_bad_def", _keywords, 0}; return NULL;
if (!_PyArg_ParseStackAndKeywords(args, nargs, kwnames, &_parser
)) {
goto exit;
} }
return_value = _testmultiphase_StateAccessType_getmodulebydef_bad_def_impl(self, cls); return _testmultiphase_StateAccessType_getmodulebydef_bad_def_impl(self, cls);
exit:
return return_value;
} }
PyDoc_STRVAR(_testmultiphase_StateAccessType_increment_count_clinic__doc__, PyDoc_STRVAR(_testmultiphase_StateAccessType_increment_count_clinic__doc__,
@ -88,14 +74,37 @@ _testmultiphase_StateAccessType_increment_count_clinic(StateAccessTypeObject *se
{ {
PyObject *return_value = NULL; PyObject *return_value = NULL;
static const char * const _keywords[] = {"n", "twice", NULL}; static const char * const _keywords[] = {"n", "twice", NULL};
static _PyArg_Parser _parser = {"|i$p:increment_count_clinic", _keywords, 0}; static _PyArg_Parser _parser = {NULL, _keywords, "increment_count_clinic", 0};
PyObject *argsbuf[2];
Py_ssize_t noptargs = nargs + (kwnames ? PyTuple_GET_SIZE(kwnames) : 0) - 0;
int n = 1; int n = 1;
int twice = 0; int twice = 0;
if (!_PyArg_ParseStackAndKeywords(args, nargs, kwnames, &_parser, args = _PyArg_UnpackKeywords(args, nargs, NULL, kwnames, &_parser, 0, 1, 0, argsbuf);
&n, &twice)) { if (!args) {
goto exit; goto exit;
} }
if (!noptargs) {
goto skip_optional_pos;
}
if (args[0]) {
n = _PyLong_AsInt(args[0]);
if (n == -1 && PyErr_Occurred()) {
goto exit;
}
if (!--noptargs) {
goto skip_optional_pos;
}
}
skip_optional_pos:
if (!noptargs) {
goto skip_optional_kwonly;
}
twice = PyObject_IsTrue(args[1]);
if (twice < 0) {
goto exit;
}
skip_optional_kwonly:
return_value = _testmultiphase_StateAccessType_increment_count_clinic_impl(self, cls, n, twice); return_value = _testmultiphase_StateAccessType_increment_count_clinic_impl(self, cls, n, twice);
exit: exit:
@ -118,17 +127,10 @@ _testmultiphase_StateAccessType_get_count_impl(StateAccessTypeObject *self,
static PyObject * static PyObject *
_testmultiphase_StateAccessType_get_count(StateAccessTypeObject *self, PyTypeObject *cls, PyObject *const *args, Py_ssize_t nargs, PyObject *kwnames) _testmultiphase_StateAccessType_get_count(StateAccessTypeObject *self, PyTypeObject *cls, PyObject *const *args, Py_ssize_t nargs, PyObject *kwnames)
{ {
PyObject *return_value = NULL; if (nargs) {
static const char * const _keywords[] = { NULL}; PyErr_SetString(PyExc_TypeError, "get_count() takes no arguments");
static _PyArg_Parser _parser = {":get_count", _keywords, 0}; return NULL;
if (!_PyArg_ParseStackAndKeywords(args, nargs, kwnames, &_parser
)) {
goto exit;
} }
return_value = _testmultiphase_StateAccessType_get_count_impl(self, cls); return _testmultiphase_StateAccessType_get_count_impl(self, cls);
exit:
return return_value;
} }
/*[clinic end generated code: output=e8d074b4e6437438 input=a9049054013a1b77]*/ /*[clinic end generated code: output=b41a400ef84f50af input=a9049054013a1b77]*/

View File

@ -155,13 +155,15 @@ array_array_extend(arrayobject *self, PyTypeObject *cls, PyObject *const *args,
{ {
PyObject *return_value = NULL; PyObject *return_value = NULL;
static const char * const _keywords[] = {"", NULL}; static const char * const _keywords[] = {"", NULL};
static _PyArg_Parser _parser = {"O:extend", _keywords, 0}; static _PyArg_Parser _parser = {NULL, _keywords, "extend", 0};
PyObject *argsbuf[1];
PyObject *bb; PyObject *bb;
if (!_PyArg_ParseStackAndKeywords(args, nargs, kwnames, &_parser, args = _PyArg_UnpackKeywords(args, nargs, NULL, kwnames, &_parser, 1, 1, 0, argsbuf);
&bb)) { if (!args) {
goto exit; goto exit;
} }
bb = args[0];
return_value = array_array_extend_impl(self, cls, bb); return_value = array_array_extend_impl(self, cls, bb);
exit: exit:
@ -296,14 +298,28 @@ array_array_fromfile(arrayobject *self, PyTypeObject *cls, PyObject *const *args
{ {
PyObject *return_value = NULL; PyObject *return_value = NULL;
static const char * const _keywords[] = {"", "", NULL}; static const char * const _keywords[] = {"", "", NULL};
static _PyArg_Parser _parser = {"On:fromfile", _keywords, 0}; static _PyArg_Parser _parser = {NULL, _keywords, "fromfile", 0};
PyObject *argsbuf[2];
PyObject *f; PyObject *f;
Py_ssize_t n; Py_ssize_t n;
if (!_PyArg_ParseStackAndKeywords(args, nargs, kwnames, &_parser, args = _PyArg_UnpackKeywords(args, nargs, NULL, kwnames, &_parser, 2, 2, 0, argsbuf);
&f, &n)) { if (!args) {
goto exit; goto exit;
} }
f = args[0];
{
Py_ssize_t ival = -1;
PyObject *iobj = _PyNumber_Index(args[1]);
if (iobj != NULL) {
ival = PyLong_AsSsize_t(iobj);
Py_DECREF(iobj);
}
if (ival == -1 && PyErr_Occurred()) {
goto exit;
}
n = ival;
}
return_value = array_array_fromfile_impl(self, cls, f, n); return_value = array_array_fromfile_impl(self, cls, f, n);
exit: exit:
@ -327,13 +343,15 @@ array_array_tofile(arrayobject *self, PyTypeObject *cls, PyObject *const *args,
{ {
PyObject *return_value = NULL; PyObject *return_value = NULL;
static const char * const _keywords[] = {"", NULL}; static const char * const _keywords[] = {"", NULL};
static _PyArg_Parser _parser = {"O:tofile", _keywords, 0}; static _PyArg_Parser _parser = {NULL, _keywords, "tofile", 0};
PyObject *argsbuf[1];
PyObject *f; PyObject *f;
if (!_PyArg_ParseStackAndKeywords(args, nargs, kwnames, &_parser, args = _PyArg_UnpackKeywords(args, nargs, NULL, kwnames, &_parser, 1, 1, 0, argsbuf);
&f)) { if (!args) {
goto exit; goto exit;
} }
f = args[0];
return_value = array_array_tofile_impl(self, cls, f); return_value = array_array_tofile_impl(self, cls, f);
exit: exit:
@ -567,13 +585,15 @@ array_array___reduce_ex__(arrayobject *self, PyTypeObject *cls, PyObject *const
{ {
PyObject *return_value = NULL; PyObject *return_value = NULL;
static const char * const _keywords[] = {"", NULL}; static const char * const _keywords[] = {"", NULL};
static _PyArg_Parser _parser = {"O:__reduce_ex__", _keywords, 0}; static _PyArg_Parser _parser = {NULL, _keywords, "__reduce_ex__", 0};
PyObject *argsbuf[1];
PyObject *value; PyObject *value;
if (!_PyArg_ParseStackAndKeywords(args, nargs, kwnames, &_parser, args = _PyArg_UnpackKeywords(args, nargs, NULL, kwnames, &_parser, 1, 1, 0, argsbuf);
&value)) { if (!args) {
goto exit; goto exit;
} }
value = args[0];
return_value = array_array___reduce_ex___impl(self, cls, value); return_value = array_array___reduce_ex___impl(self, cls, value);
exit: exit:
@ -595,18 +615,11 @@ array_arrayiterator___reduce___impl(arrayiterobject *self, PyTypeObject *cls);
static PyObject * static PyObject *
array_arrayiterator___reduce__(arrayiterobject *self, PyTypeObject *cls, PyObject *const *args, Py_ssize_t nargs, PyObject *kwnames) array_arrayiterator___reduce__(arrayiterobject *self, PyTypeObject *cls, PyObject *const *args, Py_ssize_t nargs, PyObject *kwnames)
{ {
PyObject *return_value = NULL; if (nargs) {
static const char * const _keywords[] = { NULL}; PyErr_SetString(PyExc_TypeError, "__reduce__() takes no arguments");
static _PyArg_Parser _parser = {":__reduce__", _keywords, 0}; return NULL;
if (!_PyArg_ParseStackAndKeywords(args, nargs, kwnames, &_parser
)) {
goto exit;
} }
return_value = array_arrayiterator___reduce___impl(self, cls); return array_arrayiterator___reduce___impl(self, cls);
exit:
return return_value;
} }
PyDoc_STRVAR(array_arrayiterator___setstate____doc__, PyDoc_STRVAR(array_arrayiterator___setstate____doc__,
@ -617,4 +630,4 @@ PyDoc_STRVAR(array_arrayiterator___setstate____doc__,
#define ARRAY_ARRAYITERATOR___SETSTATE___METHODDEF \ #define ARRAY_ARRAYITERATOR___SETSTATE___METHODDEF \
{"__setstate__", (PyCFunction)array_arrayiterator___setstate__, METH_O, array_arrayiterator___setstate____doc__}, {"__setstate__", (PyCFunction)array_arrayiterator___setstate__, METH_O, array_arrayiterator___setstate____doc__},
/*[clinic end generated code: output=1db6decd8492bf91 input=a9049054013a1b77]*/ /*[clinic end generated code: output=7f48d1691fa27442 input=a9049054013a1b77]*/

View File

@ -17,18 +17,11 @@ MD5Type_copy_impl(MD5object *self, PyTypeObject *cls);
static PyObject * static PyObject *
MD5Type_copy(MD5object *self, PyTypeObject *cls, PyObject *const *args, Py_ssize_t nargs, PyObject *kwnames) MD5Type_copy(MD5object *self, PyTypeObject *cls, PyObject *const *args, Py_ssize_t nargs, PyObject *kwnames)
{ {
PyObject *return_value = NULL; if (nargs) {
static const char * const _keywords[] = { NULL}; PyErr_SetString(PyExc_TypeError, "copy() takes no arguments");
static _PyArg_Parser _parser = {":copy", _keywords, 0}; return NULL;
if (!_PyArg_ParseStackAndKeywords(args, nargs, kwnames, &_parser
)) {
goto exit;
} }
return_value = MD5Type_copy_impl(self, cls); return MD5Type_copy_impl(self, cls);
exit:
return return_value;
} }
PyDoc_STRVAR(MD5Type_digest__doc__, PyDoc_STRVAR(MD5Type_digest__doc__,
@ -126,4 +119,4 @@ skip_optional_kwonly:
exit: exit:
return return_value; return return_value;
} }
/*[clinic end generated code: output=53ff7f22dbaaea36 input=a9049054013a1b77]*/ /*[clinic end generated code: output=3061297a669c645c input=a9049054013a1b77]*/

View File

@ -8290,12 +8290,10 @@ static PyObject *
os_DirEntry_is_symlink(DirEntry *self, PyTypeObject *defining_class, PyObject *const *args, Py_ssize_t nargs, PyObject *kwnames) os_DirEntry_is_symlink(DirEntry *self, PyTypeObject *defining_class, PyObject *const *args, Py_ssize_t nargs, PyObject *kwnames)
{ {
PyObject *return_value = NULL; PyObject *return_value = NULL;
static const char * const _keywords[] = { NULL};
static _PyArg_Parser _parser = {":is_symlink", _keywords, 0};
int _return_value; int _return_value;
if (!_PyArg_ParseStackAndKeywords(args, nargs, kwnames, &_parser if (nargs) {
)) { PyErr_SetString(PyExc_TypeError, "is_symlink() takes no arguments");
goto exit; goto exit;
} }
_return_value = os_DirEntry_is_symlink_impl(self, defining_class); _return_value = os_DirEntry_is_symlink_impl(self, defining_class);
@ -8326,13 +8324,23 @@ os_DirEntry_stat(DirEntry *self, PyTypeObject *defining_class, PyObject *const *
{ {
PyObject *return_value = NULL; PyObject *return_value = NULL;
static const char * const _keywords[] = {"follow_symlinks", NULL}; static const char * const _keywords[] = {"follow_symlinks", NULL};
static _PyArg_Parser _parser = {"|$p:stat", _keywords, 0}; static _PyArg_Parser _parser = {NULL, _keywords, "stat", 0};
PyObject *argsbuf[1];
Py_ssize_t noptargs = nargs + (kwnames ? PyTuple_GET_SIZE(kwnames) : 0) - 0;
int follow_symlinks = 1; int follow_symlinks = 1;
if (!_PyArg_ParseStackAndKeywords(args, nargs, kwnames, &_parser, args = _PyArg_UnpackKeywords(args, nargs, NULL, kwnames, &_parser, 0, 0, 0, argsbuf);
&follow_symlinks)) { if (!args) {
goto exit; goto exit;
} }
if (!noptargs) {
goto skip_optional_kwonly;
}
follow_symlinks = PyObject_IsTrue(args[0]);
if (follow_symlinks < 0) {
goto exit;
}
skip_optional_kwonly:
return_value = os_DirEntry_stat_impl(self, defining_class, follow_symlinks); return_value = os_DirEntry_stat_impl(self, defining_class, follow_symlinks);
exit: exit:
@ -8357,14 +8365,24 @@ os_DirEntry_is_dir(DirEntry *self, PyTypeObject *defining_class, PyObject *const
{ {
PyObject *return_value = NULL; PyObject *return_value = NULL;
static const char * const _keywords[] = {"follow_symlinks", NULL}; static const char * const _keywords[] = {"follow_symlinks", NULL};
static _PyArg_Parser _parser = {"|$p:is_dir", _keywords, 0}; static _PyArg_Parser _parser = {NULL, _keywords, "is_dir", 0};
PyObject *argsbuf[1];
Py_ssize_t noptargs = nargs + (kwnames ? PyTuple_GET_SIZE(kwnames) : 0) - 0;
int follow_symlinks = 1; int follow_symlinks = 1;
int _return_value; int _return_value;
if (!_PyArg_ParseStackAndKeywords(args, nargs, kwnames, &_parser, args = _PyArg_UnpackKeywords(args, nargs, NULL, kwnames, &_parser, 0, 0, 0, argsbuf);
&follow_symlinks)) { if (!args) {
goto exit; goto exit;
} }
if (!noptargs) {
goto skip_optional_kwonly;
}
follow_symlinks = PyObject_IsTrue(args[0]);
if (follow_symlinks < 0) {
goto exit;
}
skip_optional_kwonly:
_return_value = os_DirEntry_is_dir_impl(self, defining_class, follow_symlinks); _return_value = os_DirEntry_is_dir_impl(self, defining_class, follow_symlinks);
if ((_return_value == -1) && PyErr_Occurred()) { if ((_return_value == -1) && PyErr_Occurred()) {
goto exit; goto exit;
@ -8393,14 +8411,24 @@ os_DirEntry_is_file(DirEntry *self, PyTypeObject *defining_class, PyObject *cons
{ {
PyObject *return_value = NULL; PyObject *return_value = NULL;
static const char * const _keywords[] = {"follow_symlinks", NULL}; static const char * const _keywords[] = {"follow_symlinks", NULL};
static _PyArg_Parser _parser = {"|$p:is_file", _keywords, 0}; static _PyArg_Parser _parser = {NULL, _keywords, "is_file", 0};
PyObject *argsbuf[1];
Py_ssize_t noptargs = nargs + (kwnames ? PyTuple_GET_SIZE(kwnames) : 0) - 0;
int follow_symlinks = 1; int follow_symlinks = 1;
int _return_value; int _return_value;
if (!_PyArg_ParseStackAndKeywords(args, nargs, kwnames, &_parser, args = _PyArg_UnpackKeywords(args, nargs, NULL, kwnames, &_parser, 0, 0, 0, argsbuf);
&follow_symlinks)) { if (!args) {
goto exit; goto exit;
} }
if (!noptargs) {
goto skip_optional_kwonly;
}
follow_symlinks = PyObject_IsTrue(args[0]);
if (follow_symlinks < 0) {
goto exit;
}
skip_optional_kwonly:
_return_value = os_DirEntry_is_file_impl(self, defining_class, follow_symlinks); _return_value = os_DirEntry_is_file_impl(self, defining_class, follow_symlinks);
if ((_return_value == -1) && PyErr_Occurred()) { if ((_return_value == -1) && PyErr_Occurred()) {
goto exit; goto exit;
@ -9303,4 +9331,4 @@ exit:
#ifndef OS_WAITSTATUS_TO_EXITCODE_METHODDEF #ifndef OS_WAITSTATUS_TO_EXITCODE_METHODDEF
#define OS_WAITSTATUS_TO_EXITCODE_METHODDEF #define OS_WAITSTATUS_TO_EXITCODE_METHODDEF
#endif /* !defined(OS_WAITSTATUS_TO_EXITCODE_METHODDEF) */ #endif /* !defined(OS_WAITSTATUS_TO_EXITCODE_METHODDEF) */
/*[clinic end generated code: output=d95ba7b0b9c52685 input=a9049054013a1b77]*/ /*[clinic end generated code: output=c8c5b148b96068b4 input=a9049054013a1b77]*/

View File

@ -22,14 +22,24 @@ pyexpat_xmlparser_Parse(xmlparseobject *self, PyTypeObject *cls, PyObject *const
{ {
PyObject *return_value = NULL; PyObject *return_value = NULL;
static const char * const _keywords[] = {"", "", NULL}; static const char * const _keywords[] = {"", "", NULL};
static _PyArg_Parser _parser = {"O|i:Parse", _keywords, 0}; static _PyArg_Parser _parser = {NULL, _keywords, "Parse", 0};
PyObject *argsbuf[2];
PyObject *data; PyObject *data;
int isfinal = 0; int isfinal = 0;
if (!_PyArg_ParseStackAndKeywords(args, nargs, kwnames, &_parser, args = _PyArg_UnpackKeywords(args, nargs, NULL, kwnames, &_parser, 1, 2, 0, argsbuf);
&data, &isfinal)) { if (!args) {
goto exit; goto exit;
} }
data = args[0];
if (nargs < 2) {
goto skip_optional_posonly;
}
isfinal = _PyLong_AsInt(args[1]);
if (isfinal == -1 && PyErr_Occurred()) {
goto exit;
}
skip_optional_posonly:
return_value = pyexpat_xmlparser_Parse_impl(self, cls, data, isfinal); return_value = pyexpat_xmlparser_Parse_impl(self, cls, data, isfinal);
exit: exit:
@ -54,13 +64,15 @@ pyexpat_xmlparser_ParseFile(xmlparseobject *self, PyTypeObject *cls, PyObject *c
{ {
PyObject *return_value = NULL; PyObject *return_value = NULL;
static const char * const _keywords[] = {"", NULL}; static const char * const _keywords[] = {"", NULL};
static _PyArg_Parser _parser = {"O:ParseFile", _keywords, 0}; static _PyArg_Parser _parser = {NULL, _keywords, "ParseFile", 0};
PyObject *argsbuf[1];
PyObject *file; PyObject *file;
if (!_PyArg_ParseStackAndKeywords(args, nargs, kwnames, &_parser, args = _PyArg_UnpackKeywords(args, nargs, NULL, kwnames, &_parser, 1, 1, 0, argsbuf);
&file)) { if (!args) {
goto exit; goto exit;
} }
file = args[0];
return_value = pyexpat_xmlparser_ParseFile_impl(self, cls, file); return_value = pyexpat_xmlparser_ParseFile_impl(self, cls, file);
exit: exit:
@ -164,14 +176,50 @@ pyexpat_xmlparser_ExternalEntityParserCreate(xmlparseobject *self, PyTypeObject
{ {
PyObject *return_value = NULL; PyObject *return_value = NULL;
static const char * const _keywords[] = {"", "", NULL}; static const char * const _keywords[] = {"", "", NULL};
static _PyArg_Parser _parser = {"z|s:ExternalEntityParserCreate", _keywords, 0}; static _PyArg_Parser _parser = {NULL, _keywords, "ExternalEntityParserCreate", 0};
PyObject *argsbuf[2];
const char *context; const char *context;
const char *encoding = NULL; const char *encoding = NULL;
if (!_PyArg_ParseStackAndKeywords(args, nargs, kwnames, &_parser, args = _PyArg_UnpackKeywords(args, nargs, NULL, kwnames, &_parser, 1, 2, 0, argsbuf);
&context, &encoding)) { if (!args) {
goto exit; goto exit;
} }
if (args[0] == Py_None) {
context = NULL;
}
else if (PyUnicode_Check(args[0])) {
Py_ssize_t context_length;
context = PyUnicode_AsUTF8AndSize(args[0], &context_length);
if (context == NULL) {
goto exit;
}
if (strlen(context) != (size_t)context_length) {
PyErr_SetString(PyExc_ValueError, "embedded null character");
goto exit;
}
}
else {
_PyArg_BadArgument("ExternalEntityParserCreate", "argument 1", "str or None", args[0]);
goto exit;
}
if (nargs < 2) {
goto skip_optional_posonly;
}
if (!PyUnicode_Check(args[1])) {
_PyArg_BadArgument("ExternalEntityParserCreate", "argument 2", "str", args[1]);
goto exit;
}
Py_ssize_t encoding_length;
encoding = PyUnicode_AsUTF8AndSize(args[1], &encoding_length);
if (encoding == NULL) {
goto exit;
}
if (strlen(encoding) != (size_t)encoding_length) {
PyErr_SetString(PyExc_ValueError, "embedded null character");
goto exit;
}
skip_optional_posonly:
return_value = pyexpat_xmlparser_ExternalEntityParserCreate_impl(self, cls, context, encoding); return_value = pyexpat_xmlparser_ExternalEntityParserCreate_impl(self, cls, context, encoding);
exit: exit:
@ -235,13 +283,22 @@ pyexpat_xmlparser_UseForeignDTD(xmlparseobject *self, PyTypeObject *cls, PyObjec
{ {
PyObject *return_value = NULL; PyObject *return_value = NULL;
static const char * const _keywords[] = {"", NULL}; static const char * const _keywords[] = {"", NULL};
static _PyArg_Parser _parser = {"|p:UseForeignDTD", _keywords, 0}; static _PyArg_Parser _parser = {NULL, _keywords, "UseForeignDTD", 0};
PyObject *argsbuf[1];
int flag = 1; int flag = 1;
if (!_PyArg_ParseStackAndKeywords(args, nargs, kwnames, &_parser, args = _PyArg_UnpackKeywords(args, nargs, NULL, kwnames, &_parser, 0, 1, 0, argsbuf);
&flag)) { if (!args) {
goto exit; goto exit;
} }
if (nargs < 1) {
goto skip_optional_posonly;
}
flag = PyObject_IsTrue(args[0]);
if (flag < 0) {
goto exit;
}
skip_optional_posonly:
return_value = pyexpat_xmlparser_UseForeignDTD_impl(self, cls, flag); return_value = pyexpat_xmlparser_UseForeignDTD_impl(self, cls, flag);
exit: exit:
@ -368,4 +425,4 @@ exit:
#ifndef PYEXPAT_XMLPARSER_USEFOREIGNDTD_METHODDEF #ifndef PYEXPAT_XMLPARSER_USEFOREIGNDTD_METHODDEF
#define PYEXPAT_XMLPARSER_USEFOREIGNDTD_METHODDEF #define PYEXPAT_XMLPARSER_USEFOREIGNDTD_METHODDEF
#endif /* !defined(PYEXPAT_XMLPARSER_USEFOREIGNDTD_METHODDEF) */ #endif /* !defined(PYEXPAT_XMLPARSER_USEFOREIGNDTD_METHODDEF) */
/*[clinic end generated code: output=612b9d6a17a679a7 input=a9049054013a1b77]*/ /*[clinic end generated code: output=5d60049d385d5d56 input=a9049054013a1b77]*/

View File

@ -17,18 +17,11 @@ SHA1Type_copy_impl(SHA1object *self, PyTypeObject *cls);
static PyObject * static PyObject *
SHA1Type_copy(SHA1object *self, PyTypeObject *cls, PyObject *const *args, Py_ssize_t nargs, PyObject *kwnames) SHA1Type_copy(SHA1object *self, PyTypeObject *cls, PyObject *const *args, Py_ssize_t nargs, PyObject *kwnames)
{ {
PyObject *return_value = NULL; if (nargs) {
static const char * const _keywords[] = { NULL}; PyErr_SetString(PyExc_TypeError, "copy() takes no arguments");
static _PyArg_Parser _parser = {":copy", _keywords, 0}; return NULL;
if (!_PyArg_ParseStackAndKeywords(args, nargs, kwnames, &_parser
)) {
goto exit;
} }
return_value = SHA1Type_copy_impl(self, cls); return SHA1Type_copy_impl(self, cls);
exit:
return return_value;
} }
PyDoc_STRVAR(SHA1Type_digest__doc__, PyDoc_STRVAR(SHA1Type_digest__doc__,
@ -126,4 +119,4 @@ skip_optional_kwonly:
exit: exit:
return return_value; return return_value;
} }
/*[clinic end generated code: output=abf1ab2545cea5a2 input=a9049054013a1b77]*/ /*[clinic end generated code: output=93ced3c8f8fa4f21 input=a9049054013a1b77]*/

View File

@ -17,18 +17,11 @@ SHA256Type_copy_impl(SHAobject *self, PyTypeObject *cls);
static PyObject * static PyObject *
SHA256Type_copy(SHAobject *self, PyTypeObject *cls, PyObject *const *args, Py_ssize_t nargs, PyObject *kwnames) SHA256Type_copy(SHAobject *self, PyTypeObject *cls, PyObject *const *args, Py_ssize_t nargs, PyObject *kwnames)
{ {
PyObject *return_value = NULL; if (nargs) {
static const char * const _keywords[] = { NULL}; PyErr_SetString(PyExc_TypeError, "copy() takes no arguments");
static _PyArg_Parser _parser = {":copy", _keywords, 0}; return NULL;
if (!_PyArg_ParseStackAndKeywords(args, nargs, kwnames, &_parser
)) {
goto exit;
} }
return_value = SHA256Type_copy_impl(self, cls); return SHA256Type_copy_impl(self, cls);
exit:
return return_value;
} }
PyDoc_STRVAR(SHA256Type_digest__doc__, PyDoc_STRVAR(SHA256Type_digest__doc__,
@ -177,4 +170,4 @@ skip_optional_kwonly:
exit: exit:
return return_value; return return_value;
} }
/*[clinic end generated code: output=b7283f75c9d08f30 input=a9049054013a1b77]*/ /*[clinic end generated code: output=4f9fe3ca546b0c58 input=a9049054013a1b77]*/

View File

@ -17,18 +17,11 @@ SHA512Type_copy_impl(SHAobject *self, PyTypeObject *cls);
static PyObject * static PyObject *
SHA512Type_copy(SHAobject *self, PyTypeObject *cls, PyObject *const *args, Py_ssize_t nargs, PyObject *kwnames) SHA512Type_copy(SHAobject *self, PyTypeObject *cls, PyObject *const *args, Py_ssize_t nargs, PyObject *kwnames)
{ {
PyObject *return_value = NULL; if (nargs) {
static const char * const _keywords[] = { NULL}; PyErr_SetString(PyExc_TypeError, "copy() takes no arguments");
static _PyArg_Parser _parser = {":copy", _keywords, 0}; return NULL;
if (!_PyArg_ParseStackAndKeywords(args, nargs, kwnames, &_parser
)) {
goto exit;
} }
return_value = SHA512Type_copy_impl(self, cls); return SHA512Type_copy_impl(self, cls);
exit:
return return_value;
} }
PyDoc_STRVAR(SHA512Type_digest__doc__, PyDoc_STRVAR(SHA512Type_digest__doc__,
@ -177,4 +170,4 @@ skip_optional_kwonly:
exit: exit:
return return_value; return return_value;
} }
/*[clinic end generated code: output=9ff9f11937fabf35 input=a9049054013a1b77]*/ /*[clinic end generated code: output=26d2fe27b9673ac2 input=a9049054013a1b77]*/

View File

@ -352,11 +352,19 @@ zlib_Compress_compress(compobject *self, PyTypeObject *cls, PyObject *const *arg
{ {
PyObject *return_value = NULL; PyObject *return_value = NULL;
static const char * const _keywords[] = {"", NULL}; static const char * const _keywords[] = {"", NULL};
static _PyArg_Parser _parser = {"y*:compress", _keywords, 0}; static _PyArg_Parser _parser = {NULL, _keywords, "compress", 0};
PyObject *argsbuf[1];
Py_buffer data = {NULL, NULL}; Py_buffer data = {NULL, NULL};
if (!_PyArg_ParseStackAndKeywords(args, nargs, kwnames, &_parser, args = _PyArg_UnpackKeywords(args, nargs, NULL, kwnames, &_parser, 1, 1, 0, argsbuf);
&data)) { if (!args) {
goto exit;
}
if (PyObject_GetBuffer(args[0], &data, PyBUF_SIMPLE) != 0) {
goto exit;
}
if (!PyBuffer_IsContiguous(&data, 'C')) {
_PyArg_BadArgument("compress", "argument 1", "contiguous buffer", args[0]);
goto exit; goto exit;
} }
return_value = zlib_Compress_compress_impl(self, cls, &data); return_value = zlib_Compress_compress_impl(self, cls, &data);
@ -399,14 +407,39 @@ zlib_Decompress_decompress(compobject *self, PyTypeObject *cls, PyObject *const
{ {
PyObject *return_value = NULL; PyObject *return_value = NULL;
static const char * const _keywords[] = {"", "max_length", NULL}; static const char * const _keywords[] = {"", "max_length", NULL};
static _PyArg_Parser _parser = {"y*|n:decompress", _keywords, 0}; static _PyArg_Parser _parser = {NULL, _keywords, "decompress", 0};
PyObject *argsbuf[2];
Py_ssize_t noptargs = nargs + (kwnames ? PyTuple_GET_SIZE(kwnames) : 0) - 1;
Py_buffer data = {NULL, NULL}; Py_buffer data = {NULL, NULL};
Py_ssize_t max_length = 0; Py_ssize_t max_length = 0;
if (!_PyArg_ParseStackAndKeywords(args, nargs, kwnames, &_parser, args = _PyArg_UnpackKeywords(args, nargs, NULL, kwnames, &_parser, 1, 2, 0, argsbuf);
&data, &max_length)) { if (!args) {
goto exit; goto exit;
} }
if (PyObject_GetBuffer(args[0], &data, PyBUF_SIMPLE) != 0) {
goto exit;
}
if (!PyBuffer_IsContiguous(&data, 'C')) {
_PyArg_BadArgument("decompress", "argument 1", "contiguous buffer", args[0]);
goto exit;
}
if (!noptargs) {
goto skip_optional_pos;
}
{
Py_ssize_t ival = -1;
PyObject *iobj = _PyNumber_Index(args[1]);
if (iobj != NULL) {
ival = PyLong_AsSsize_t(iobj);
Py_DECREF(iobj);
}
if (ival == -1 && PyErr_Occurred()) {
goto exit;
}
max_length = ival;
}
skip_optional_pos:
return_value = zlib_Decompress_decompress_impl(self, cls, &data, max_length); return_value = zlib_Decompress_decompress_impl(self, cls, &data, max_length);
exit: exit:
@ -441,13 +474,22 @@ zlib_Compress_flush(compobject *self, PyTypeObject *cls, PyObject *const *args,
{ {
PyObject *return_value = NULL; PyObject *return_value = NULL;
static const char * const _keywords[] = {"", NULL}; static const char * const _keywords[] = {"", NULL};
static _PyArg_Parser _parser = {"|i:flush", _keywords, 0}; static _PyArg_Parser _parser = {NULL, _keywords, "flush", 0};
PyObject *argsbuf[1];
int mode = Z_FINISH; int mode = Z_FINISH;
if (!_PyArg_ParseStackAndKeywords(args, nargs, kwnames, &_parser, args = _PyArg_UnpackKeywords(args, nargs, NULL, kwnames, &_parser, 0, 1, 0, argsbuf);
&mode)) { if (!args) {
goto exit; goto exit;
} }
if (nargs < 1) {
goto skip_optional_posonly;
}
mode = _PyLong_AsInt(args[0]);
if (mode == -1 && PyErr_Occurred()) {
goto exit;
}
skip_optional_posonly:
return_value = zlib_Compress_flush_impl(self, cls, mode); return_value = zlib_Compress_flush_impl(self, cls, mode);
exit: exit:
@ -471,18 +513,11 @@ zlib_Compress_copy_impl(compobject *self, PyTypeObject *cls);
static PyObject * static PyObject *
zlib_Compress_copy(compobject *self, PyTypeObject *cls, PyObject *const *args, Py_ssize_t nargs, PyObject *kwnames) zlib_Compress_copy(compobject *self, PyTypeObject *cls, PyObject *const *args, Py_ssize_t nargs, PyObject *kwnames)
{ {
PyObject *return_value = NULL; if (nargs) {
static const char * const _keywords[] = { NULL}; PyErr_SetString(PyExc_TypeError, "copy() takes no arguments");
static _PyArg_Parser _parser = {":copy", _keywords, 0}; return NULL;
if (!_PyArg_ParseStackAndKeywords(args, nargs, kwnames, &_parser
)) {
goto exit;
} }
return_value = zlib_Compress_copy_impl(self, cls); return zlib_Compress_copy_impl(self, cls);
exit:
return return_value;
} }
#endif /* defined(HAVE_ZLIB_COPY) */ #endif /* defined(HAVE_ZLIB_COPY) */
@ -503,18 +538,11 @@ zlib_Compress___copy___impl(compobject *self, PyTypeObject *cls);
static PyObject * static PyObject *
zlib_Compress___copy__(compobject *self, PyTypeObject *cls, PyObject *const *args, Py_ssize_t nargs, PyObject *kwnames) zlib_Compress___copy__(compobject *self, PyTypeObject *cls, PyObject *const *args, Py_ssize_t nargs, PyObject *kwnames)
{ {
PyObject *return_value = NULL; if (nargs) {
static const char * const _keywords[] = { NULL}; PyErr_SetString(PyExc_TypeError, "__copy__() takes no arguments");
static _PyArg_Parser _parser = {":__copy__", _keywords, 0}; return NULL;
if (!_PyArg_ParseStackAndKeywords(args, nargs, kwnames, &_parser
)) {
goto exit;
} }
return_value = zlib_Compress___copy___impl(self, cls); return zlib_Compress___copy___impl(self, cls);
exit:
return return_value;
} }
#endif /* defined(HAVE_ZLIB_COPY) */ #endif /* defined(HAVE_ZLIB_COPY) */
@ -538,13 +566,15 @@ zlib_Compress___deepcopy__(compobject *self, PyTypeObject *cls, PyObject *const
{ {
PyObject *return_value = NULL; PyObject *return_value = NULL;
static const char * const _keywords[] = {"", NULL}; static const char * const _keywords[] = {"", NULL};
static _PyArg_Parser _parser = {"O:__deepcopy__", _keywords, 0}; static _PyArg_Parser _parser = {NULL, _keywords, "__deepcopy__", 0};
PyObject *argsbuf[1];
PyObject *memo; PyObject *memo;
if (!_PyArg_ParseStackAndKeywords(args, nargs, kwnames, &_parser, args = _PyArg_UnpackKeywords(args, nargs, NULL, kwnames, &_parser, 1, 1, 0, argsbuf);
&memo)) { if (!args) {
goto exit; goto exit;
} }
memo = args[0];
return_value = zlib_Compress___deepcopy___impl(self, cls, memo); return_value = zlib_Compress___deepcopy___impl(self, cls, memo);
exit: exit:
@ -570,18 +600,11 @@ zlib_Decompress_copy_impl(compobject *self, PyTypeObject *cls);
static PyObject * static PyObject *
zlib_Decompress_copy(compobject *self, PyTypeObject *cls, PyObject *const *args, Py_ssize_t nargs, PyObject *kwnames) zlib_Decompress_copy(compobject *self, PyTypeObject *cls, PyObject *const *args, Py_ssize_t nargs, PyObject *kwnames)
{ {
PyObject *return_value = NULL; if (nargs) {
static const char * const _keywords[] = { NULL}; PyErr_SetString(PyExc_TypeError, "copy() takes no arguments");
static _PyArg_Parser _parser = {":copy", _keywords, 0}; return NULL;
if (!_PyArg_ParseStackAndKeywords(args, nargs, kwnames, &_parser
)) {
goto exit;
} }
return_value = zlib_Decompress_copy_impl(self, cls); return zlib_Decompress_copy_impl(self, cls);
exit:
return return_value;
} }
#endif /* defined(HAVE_ZLIB_COPY) */ #endif /* defined(HAVE_ZLIB_COPY) */
@ -602,18 +625,11 @@ zlib_Decompress___copy___impl(compobject *self, PyTypeObject *cls);
static PyObject * static PyObject *
zlib_Decompress___copy__(compobject *self, PyTypeObject *cls, PyObject *const *args, Py_ssize_t nargs, PyObject *kwnames) zlib_Decompress___copy__(compobject *self, PyTypeObject *cls, PyObject *const *args, Py_ssize_t nargs, PyObject *kwnames)
{ {
PyObject *return_value = NULL; if (nargs) {
static const char * const _keywords[] = { NULL}; PyErr_SetString(PyExc_TypeError, "__copy__() takes no arguments");
static _PyArg_Parser _parser = {":__copy__", _keywords, 0}; return NULL;
if (!_PyArg_ParseStackAndKeywords(args, nargs, kwnames, &_parser
)) {
goto exit;
} }
return_value = zlib_Decompress___copy___impl(self, cls); return zlib_Decompress___copy___impl(self, cls);
exit:
return return_value;
} }
#endif /* defined(HAVE_ZLIB_COPY) */ #endif /* defined(HAVE_ZLIB_COPY) */
@ -637,13 +653,15 @@ zlib_Decompress___deepcopy__(compobject *self, PyTypeObject *cls, PyObject *cons
{ {
PyObject *return_value = NULL; PyObject *return_value = NULL;
static const char * const _keywords[] = {"", NULL}; static const char * const _keywords[] = {"", NULL};
static _PyArg_Parser _parser = {"O:__deepcopy__", _keywords, 0}; static _PyArg_Parser _parser = {NULL, _keywords, "__deepcopy__", 0};
PyObject *argsbuf[1];
PyObject *memo; PyObject *memo;
if (!_PyArg_ParseStackAndKeywords(args, nargs, kwnames, &_parser, args = _PyArg_UnpackKeywords(args, nargs, NULL, kwnames, &_parser, 1, 1, 0, argsbuf);
&memo)) { if (!args) {
goto exit; goto exit;
} }
memo = args[0];
return_value = zlib_Decompress___deepcopy___impl(self, cls, memo); return_value = zlib_Decompress___deepcopy___impl(self, cls, memo);
exit: exit:
@ -673,13 +691,30 @@ zlib_Decompress_flush(compobject *self, PyTypeObject *cls, PyObject *const *args
{ {
PyObject *return_value = NULL; PyObject *return_value = NULL;
static const char * const _keywords[] = {"", NULL}; static const char * const _keywords[] = {"", NULL};
static _PyArg_Parser _parser = {"|n:flush", _keywords, 0}; static _PyArg_Parser _parser = {NULL, _keywords, "flush", 0};
PyObject *argsbuf[1];
Py_ssize_t length = DEF_BUF_SIZE; Py_ssize_t length = DEF_BUF_SIZE;
if (!_PyArg_ParseStackAndKeywords(args, nargs, kwnames, &_parser, args = _PyArg_UnpackKeywords(args, nargs, NULL, kwnames, &_parser, 0, 1, 0, argsbuf);
&length)) { if (!args) {
goto exit; goto exit;
} }
if (nargs < 1) {
goto skip_optional_posonly;
}
{
Py_ssize_t ival = -1;
PyObject *iobj = _PyNumber_Index(args[0]);
if (iobj != NULL) {
ival = PyLong_AsSsize_t(iobj);
Py_DECREF(iobj);
}
if (ival == -1 && PyErr_Occurred()) {
goto exit;
}
length = ival;
}
skip_optional_posonly:
return_value = zlib_Decompress_flush_impl(self, cls, length); return_value = zlib_Decompress_flush_impl(self, cls, length);
exit: exit:
@ -820,4 +855,4 @@ exit:
#ifndef ZLIB_DECOMPRESS___DEEPCOPY___METHODDEF #ifndef ZLIB_DECOMPRESS___DEEPCOPY___METHODDEF
#define ZLIB_DECOMPRESS___DEEPCOPY___METHODDEF #define ZLIB_DECOMPRESS___DEEPCOPY___METHODDEF
#endif /* !defined(ZLIB_DECOMPRESS___DEEPCOPY___METHODDEF) */ #endif /* !defined(ZLIB_DECOMPRESS___DEEPCOPY___METHODDEF) */
/*[clinic end generated code: output=f009d194565416d1 input=a9049054013a1b77]*/ /*[clinic end generated code: output=bb1e27d8b2198a86 input=a9049054013a1b77]*/

View File

@ -639,6 +639,10 @@ class CLanguage(Language):
assert parameters assert parameters
assert isinstance(parameters[0].converter, self_converter) assert isinstance(parameters[0].converter, self_converter)
del parameters[0] del parameters[0]
requires_defining_class = False
if parameters and isinstance(parameters[0].converter, defining_class_converter):
requires_defining_class = True
del parameters[0]
converters = [p.converter for p in parameters] converters = [p.converter for p in parameters]
has_option_groups = parameters and (parameters[0].group or parameters[-1].group) has_option_groups = parameters and (parameters[0].group or parameters[-1].group)
@ -667,10 +671,6 @@ class CLanguage(Language):
if not p.is_optional(): if not p.is_optional():
min_pos = i min_pos = i
requires_defining_class = any(
isinstance(p.converter, defining_class_converter)
for p in parameters)
meth_o = (len(parameters) == 1 and meth_o = (len(parameters) == 1 and
parameters[0].is_positional_only() and parameters[0].is_positional_only() and
not converters[0].is_optional() and not converters[0].is_optional() and
@ -773,24 +773,40 @@ class CLanguage(Language):
return linear_format(output(), parser_declarations=declarations) return linear_format(output(), parser_declarations=declarations)
if not parameters: if not parameters:
# no parameters, METH_NOARGS if not requires_defining_class:
# no parameters, METH_NOARGS
flags = "METH_NOARGS"
flags = "METH_NOARGS" parser_prototype = normalize_snippet("""
static PyObject *
{c_basename}({self_type}{self_name}, PyObject *Py_UNUSED(ignored))
""")
parser_code = []
parser_prototype = normalize_snippet(""" else:
static PyObject * assert not new_or_init
{c_basename}({self_type}{self_name}, PyObject *Py_UNUSED(ignored))
""") flags = "METH_METHOD|METH_FASTCALL|METH_KEYWORDS"
parser_definition = parser_prototype
parser_prototype = parser_prototype_def_class
return_error = ('return NULL;' if default_return_converter
else 'goto exit;')
parser_code = [normalize_snippet("""
if (nargs) {{
PyErr_SetString(PyExc_TypeError, "{name}() takes no arguments");
%s
}}
""" % return_error, indent=4)]
if default_return_converter: if default_return_converter:
parser_definition = parser_prototype + '\n' + normalize_snippet(""" parser_definition = '\n'.join([
{{ parser_prototype,
return {c_basename}_impl({impl_arguments}); '{{',
}} *parser_code,
""") ' return {c_basename}_impl({impl_arguments});',
'}}'])
else: else:
parser_definition = parser_body(parser_prototype) parser_definition = parser_body(parser_prototype, *parser_code)
elif meth_o: elif meth_o:
flags = "METH_O" flags = "METH_O"
@ -993,6 +1009,9 @@ class CLanguage(Language):
add_label = None add_label = None
for i, p in enumerate(parameters): for i, p in enumerate(parameters):
if isinstance(p.converter, defining_class_converter):
raise ValueError("defining_class should be the first "
"parameter (after self)")
displayname = p.get_displayname(i+1) displayname = p.get_displayname(i+1)
parsearg = p.converter.parse_arg(argname_fmt % i, displayname) parsearg = p.converter.parse_arg(argname_fmt % i, displayname)
if parsearg is None: if parsearg is None: