Commit 9171a8b4 authored by Serhiy Storchaka's avatar Serhiy Storchaka

Issue #27574: Decreased an overhead of parsing keyword arguments in functions

implemented with using Argument Clinic.
parent b6f78c27
......@@ -579,6 +579,13 @@ Optimizations
deserializing many small objects (Contributed by Victor Stinner in
:issue:`27056`).
- Passing :term:`keyword arguments <keyword argument>` to a function has an
overhead in comparison with passing :term:`positional arguments
<positional argument>`. Now in extension functions implemented with using
Argument Clinic this overhead is significantly decreased.
(Contributed by Serhiy Storchaka in :issue:`27574`).
Build and C API Changes
=======================
......
......@@ -44,6 +44,29 @@ PyAPI_FUNC(int) PyArg_VaParseTupleAndKeywords(PyObject *, PyObject *,
#endif
PyAPI_FUNC(PyObject *) Py_VaBuildValue(const char *, va_list);
#ifndef Py_LIMITED_API
typedef struct _PyArg_Parser {
const char *format;
const char * const *keywords;
const char *fname;
const char *custom_msg;
int pos; /* number of positional-only arguments */
int min; /* minimal number of arguments */
int max; /* maximal number of positional arguments */
PyObject *kwtuple; /* tuple of keyword parameter names */
struct _PyArg_Parser *next;
} _PyArg_Parser;
#ifdef PY_SSIZE_T_CLEAN
#define _PyArg_ParseTupleAndKeywordsFast _PyArg_ParseTupleAndKeywordsFast_SizeT
#define _PyArg_VaParseTupleAndKeywordsFast _PyArg_VaParseTupleAndKeywordsFast_SizeT
#endif
PyAPI_FUNC(int) _PyArg_ParseTupleAndKeywordsFast(PyObject *, PyObject *,
struct _PyArg_Parser *, ...);
PyAPI_FUNC(int) _PyArg_VaParseTupleAndKeywordsFast(PyObject *, PyObject *,
struct _PyArg_Parser *, va_list);
void _PyArg_Fini(void);
#endif
PyAPI_FUNC(int) PyModule_AddObject(PyObject *, const char *, PyObject *);
PyAPI_FUNC(int) PyModule_AddIntConstant(PyObject *, const char *, long);
PyAPI_FUNC(int) PyModule_AddStringConstant(PyObject *, const char *, const char *);
......
......@@ -10,6 +10,9 @@ What's New in Python 3.6.0 alpha 4
Core and Builtins
-----------------
- Issue #27574: Decreased an overhead of parsing keyword arguments in functions
implemented with using Argument Clinic.
- Issue #22557: Now importing already imported modules is up to 2.5 times faster.
- Issue #17596: Include <wincrypt.h> to help with Min GW building.
......
......@@ -138,7 +138,8 @@ static PyObject *
_io_open(PyObject *module, PyObject *args, PyObject *kwargs)
{
PyObject *return_value = NULL;
static char *_keywords[] = {"file", "mode", "buffering", "encoding", "errors", "newline", "closefd", "opener", NULL};
static const char * const _keywords[] = {"file", "mode", "buffering", "encoding", "errors", "newline", "closefd", "opener", NULL};
static _PyArg_Parser _parser = {"O|sizzziO:open", _keywords, 0};
PyObject *file;
const char *mode = "r";
int buffering = -1;
......@@ -148,7 +149,7 @@ _io_open(PyObject *module, PyObject *args, PyObject *kwargs)
int closefd = 1;
PyObject *opener = Py_None;
if (!PyArg_ParseTupleAndKeywords(args, kwargs, "O|sizzziO:open", _keywords,
if (!_PyArg_ParseTupleAndKeywordsFast(args, kwargs, &_parser,
&file, &mode, &buffering, &encoding, &errors, &newline, &closefd, &opener)) {
goto exit;
}
......@@ -157,4 +158,4 @@ _io_open(PyObject *module, PyObject *args, PyObject *kwargs)
exit:
return return_value;
}
/*[clinic end generated code: output=ae2facf262cf464e input=a9049054013a1b77]*/
/*[clinic end generated code: output=14769629391a3130 input=a9049054013a1b77]*/
......@@ -324,11 +324,12 @@ static int
_io_BufferedReader___init__(PyObject *self, PyObject *args, PyObject *kwargs)
{
int return_value = -1;
static char *_keywords[] = {"raw", "buffer_size", NULL};
static const char * const _keywords[] = {"raw", "buffer_size", NULL};
static _PyArg_Parser _parser = {"O|n:BufferedReader", _keywords, 0};
PyObject *raw;
Py_ssize_t buffer_size = DEFAULT_BUFFER_SIZE;
if (!PyArg_ParseTupleAndKeywords(args, kwargs, "O|n:BufferedReader", _keywords,
if (!_PyArg_ParseTupleAndKeywordsFast(args, kwargs, &_parser,
&raw, &buffer_size)) {
goto exit;
}
......@@ -356,11 +357,12 @@ static int
_io_BufferedWriter___init__(PyObject *self, PyObject *args, PyObject *kwargs)
{
int return_value = -1;
static char *_keywords[] = {"raw", "buffer_size", NULL};
static const char * const _keywords[] = {"raw", "buffer_size", NULL};
static _PyArg_Parser _parser = {"O|n:BufferedWriter", _keywords, 0};
PyObject *raw;
Py_ssize_t buffer_size = DEFAULT_BUFFER_SIZE;
if (!PyArg_ParseTupleAndKeywords(args, kwargs, "O|n:BufferedWriter", _keywords,
if (!_PyArg_ParseTupleAndKeywordsFast(args, kwargs, &_parser,
&raw, &buffer_size)) {
goto exit;
}
......@@ -459,11 +461,12 @@ static int
_io_BufferedRandom___init__(PyObject *self, PyObject *args, PyObject *kwargs)
{
int return_value = -1;
static char *_keywords[] = {"raw", "buffer_size", NULL};
static const char * const _keywords[] = {"raw", "buffer_size", NULL};
static _PyArg_Parser _parser = {"O|n:BufferedRandom", _keywords, 0};
PyObject *raw;
Py_ssize_t buffer_size = DEFAULT_BUFFER_SIZE;
if (!PyArg_ParseTupleAndKeywords(args, kwargs, "O|n:BufferedRandom", _keywords,
if (!_PyArg_ParseTupleAndKeywordsFast(args, kwargs, &_parser,
&raw, &buffer_size)) {
goto exit;
}
......@@ -472,4 +475,4 @@ _io_BufferedRandom___init__(PyObject *self, PyObject *args, PyObject *kwargs)
exit:
return return_value;
}
/*[clinic end generated code: output=4f6196c756b880c8 input=a9049054013a1b77]*/
/*[clinic end generated code: output=a956f394ecde4cf9 input=a9049054013a1b77]*/
......@@ -415,10 +415,11 @@ static int
_io_BytesIO___init__(PyObject *self, PyObject *args, PyObject *kwargs)
{
int return_value = -1;
static char *_keywords[] = {"initial_bytes", NULL};
static const char * const _keywords[] = {"initial_bytes", NULL};
static _PyArg_Parser _parser = {"|O:BytesIO", _keywords, 0};
PyObject *initvalue = NULL;
if (!PyArg_ParseTupleAndKeywords(args, kwargs, "|O:BytesIO", _keywords,
if (!_PyArg_ParseTupleAndKeywordsFast(args, kwargs, &_parser,
&initvalue)) {
goto exit;
}
......@@ -427,4 +428,4 @@ _io_BytesIO___init__(PyObject *self, PyObject *args, PyObject *kwargs)
exit:
return return_value;
}
/*[clinic end generated code: output=3fdb62f3e3b0544d input=a9049054013a1b77]*/
/*[clinic end generated code: output=6382e8eb578eea64 input=a9049054013a1b77]*/
......@@ -49,13 +49,14 @@ static int
_io_FileIO___init__(PyObject *self, PyObject *args, PyObject *kwargs)
{
int return_value = -1;
static char *_keywords[] = {"file", "mode", "closefd", "opener", NULL};
static const char * const _keywords[] = {"file", "mode", "closefd", "opener", NULL};
static _PyArg_Parser _parser = {"O|siO:FileIO", _keywords, 0};
PyObject *nameobj;
const char *mode = "r";
int closefd = 1;
PyObject *opener = Py_None;
if (!PyArg_ParseTupleAndKeywords(args, kwargs, "O|siO:FileIO", _keywords,
if (!_PyArg_ParseTupleAndKeywordsFast(args, kwargs, &_parser,
&nameobj, &mode, &closefd, &opener)) {
goto exit;
}
......@@ -372,4 +373,4 @@ _io_FileIO_isatty(fileio *self, PyObject *Py_UNUSED(ignored))
#ifndef _IO_FILEIO_TRUNCATE_METHODDEF
#define _IO_FILEIO_TRUNCATE_METHODDEF
#endif /* !defined(_IO_FILEIO_TRUNCATE_METHODDEF) */
/*[clinic end generated code: output=bf4b4bd6b976346d input=a9049054013a1b77]*/
/*[clinic end generated code: output=51924bc0ee11d58e input=a9049054013a1b77]*/
......@@ -221,11 +221,12 @@ static int
_io_StringIO___init__(PyObject *self, PyObject *args, PyObject *kwargs)
{
int return_value = -1;
static char *_keywords[] = {"initial_value", "newline", NULL};
static const char * const _keywords[] = {"initial_value", "newline", NULL};
static _PyArg_Parser _parser = {"|OO:StringIO", _keywords, 0};
PyObject *value = NULL;
PyObject *newline_obj = NULL;
if (!PyArg_ParseTupleAndKeywords(args, kwargs, "|OO:StringIO", _keywords,
if (!_PyArg_ParseTupleAndKeywordsFast(args, kwargs, &_parser,
&value, &newline_obj)) {
goto exit;
}
......@@ -288,4 +289,4 @@ _io_StringIO_seekable(stringio *self, PyObject *Py_UNUSED(ignored))
{
return _io_StringIO_seekable_impl(self);
}
/*[clinic end generated code: output=0513219581cbe952 input=a9049054013a1b77]*/
/*[clinic end generated code: output=5dd5c2a213e75405 input=a9049054013a1b77]*/
......@@ -24,12 +24,13 @@ static int
_io_IncrementalNewlineDecoder___init__(PyObject *self, PyObject *args, PyObject *kwargs)
{
int return_value = -1;
static char *_keywords[] = {"decoder", "translate", "errors", NULL};
static const char * const _keywords[] = {"decoder", "translate", "errors", NULL};
static _PyArg_Parser _parser = {"Oi|O:IncrementalNewlineDecoder", _keywords, 0};
PyObject *decoder;
int translate;
PyObject *errors = NULL;
if (!PyArg_ParseTupleAndKeywords(args, kwargs, "Oi|O:IncrementalNewlineDecoder", _keywords,
if (!_PyArg_ParseTupleAndKeywordsFast(args, kwargs, &_parser,
&decoder, &translate, &errors)) {
goto exit;
}
......@@ -55,11 +56,12 @@ static PyObject *
_io_IncrementalNewlineDecoder_decode(nldecoder_object *self, PyObject *args, PyObject *kwargs)
{
PyObject *return_value = NULL;
static char *_keywords[] = {"input", "final", NULL};
static const char * const _keywords[] = {"input", "final", NULL};
static _PyArg_Parser _parser = {"O|i:decode", _keywords, 0};
PyObject *input;
int final = 0;
if (!PyArg_ParseTupleAndKeywords(args, kwargs, "O|i:decode", _keywords,
if (!_PyArg_ParseTupleAndKeywordsFast(args, kwargs, &_parser,
&input, &final)) {
goto exit;
}
......@@ -155,7 +157,8 @@ static int
_io_TextIOWrapper___init__(PyObject *self, PyObject *args, PyObject *kwargs)
{
int return_value = -1;
static char *_keywords[] = {"buffer", "encoding", "errors", "newline", "line_buffering", "write_through", NULL};
static const char * const _keywords[] = {"buffer", "encoding", "errors", "newline", "line_buffering", "write_through", NULL};
static _PyArg_Parser _parser = {"O|zzzii:TextIOWrapper", _keywords, 0};
PyObject *buffer;
const char *encoding = NULL;
const char *errors = NULL;
......@@ -163,7 +166,7 @@ _io_TextIOWrapper___init__(PyObject *self, PyObject *args, PyObject *kwargs)
int line_buffering = 0;
int write_through = 0;
if (!PyArg_ParseTupleAndKeywords(args, kwargs, "O|zzzii:TextIOWrapper", _keywords,
if (!_PyArg_ParseTupleAndKeywordsFast(args, kwargs, &_parser,
&buffer, &encoding, &errors, &newline, &line_buffering, &write_through)) {
goto exit;
}
......@@ -461,4 +464,4 @@ _io_TextIOWrapper_close(textio *self, PyObject *Py_UNUSED(ignored))
{
return _io_TextIOWrapper_close_impl(self);
}
/*[clinic end generated code: output=31a39bbbe07ae4e7 input=a9049054013a1b77]*/
/*[clinic end generated code: output=7ec624a9bf6393f5 input=a9049054013a1b77]*/
......@@ -25,11 +25,12 @@ static PyObject *
_multibytecodec_MultibyteCodec_encode(MultibyteCodecObject *self, PyObject *args, PyObject *kwargs)
{
PyObject *return_value = NULL;
static char *_keywords[] = {"input", "errors", NULL};
static const char * const _keywords[] = {"input", "errors", NULL};
static _PyArg_Parser _parser = {"O|z:encode", _keywords, 0};
PyObject *input;
const char *errors = NULL;
if (!PyArg_ParseTupleAndKeywords(args, kwargs, "O|z:encode", _keywords,
if (!_PyArg_ParseTupleAndKeywordsFast(args, kwargs, &_parser,
&input, &errors)) {
goto exit;
}
......@@ -62,11 +63,12 @@ static PyObject *
_multibytecodec_MultibyteCodec_decode(MultibyteCodecObject *self, PyObject *args, PyObject *kwargs)
{
PyObject *return_value = NULL;
static char *_keywords[] = {"input", "errors", NULL};
static const char * const _keywords[] = {"input", "errors", NULL};
static _PyArg_Parser _parser = {"y*|z:decode", _keywords, 0};
Py_buffer input = {NULL, NULL};
const char *errors = NULL;
if (!PyArg_ParseTupleAndKeywords(args, kwargs, "y*|z:decode", _keywords,
if (!_PyArg_ParseTupleAndKeywordsFast(args, kwargs, &_parser,
&input, &errors)) {
goto exit;
}
......@@ -98,11 +100,12 @@ static PyObject *
_multibytecodec_MultibyteIncrementalEncoder_encode(MultibyteIncrementalEncoderObject *self, PyObject *args, PyObject *kwargs)
{
PyObject *return_value = NULL;
static char *_keywords[] = {"input", "final", NULL};
static const char * const _keywords[] = {"input", "final", NULL};
static _PyArg_Parser _parser = {"O|i:encode", _keywords, 0};
PyObject *input;
int final = 0;
if (!PyArg_ParseTupleAndKeywords(args, kwargs, "O|i:encode", _keywords,
if (!_PyArg_ParseTupleAndKeywordsFast(args, kwargs, &_parser,
&input, &final)) {
goto exit;
}
......@@ -146,11 +149,12 @@ static PyObject *
_multibytecodec_MultibyteIncrementalDecoder_decode(MultibyteIncrementalDecoderObject *self, PyObject *args, PyObject *kwargs)
{
PyObject *return_value = NULL;
static char *_keywords[] = {"input", "final", NULL};
static const char * const _keywords[] = {"input", "final", NULL};
static _PyArg_Parser _parser = {"y*|i:decode", _keywords, 0};
Py_buffer input = {NULL, NULL};
int final = 0;
if (!PyArg_ParseTupleAndKeywords(args, kwargs, "y*|i:decode", _keywords,
if (!_PyArg_ParseTupleAndKeywordsFast(args, kwargs, &_parser,
&input, &final)) {
goto exit;
}
......@@ -326,4 +330,4 @@ PyDoc_STRVAR(_multibytecodec___create_codec__doc__,
#define _MULTIBYTECODEC___CREATE_CODEC_METHODDEF \
{"__create_codec", (PyCFunction)_multibytecodec___create_codec, METH_O, _multibytecodec___create_codec__doc__},
/*[clinic end generated code: output=f837bc56b2fa2a4e input=a9049054013a1b77]*/
/*[clinic end generated code: output=8e86fa162c85230b input=a9049054013a1b77]*/
......@@ -125,11 +125,12 @@ static PyObject *
_bz2_BZ2Decompressor_decompress(BZ2Decompressor *self, PyObject *args, PyObject *kwargs)
{
PyObject *return_value = NULL;
static char *_keywords[] = {"data", "max_length", NULL};
static const char * const _keywords[] = {"data", "max_length", NULL};
static _PyArg_Parser _parser = {"y*|n:decompress", _keywords, 0};
Py_buffer data = {NULL, NULL};
Py_ssize_t max_length = -1;
if (!PyArg_ParseTupleAndKeywords(args, kwargs, "y*|n:decompress", _keywords,
if (!_PyArg_ParseTupleAndKeywordsFast(args, kwargs, &_parser,
&data, &max_length)) {
goto exit;
}
......@@ -173,4 +174,4 @@ _bz2_BZ2Decompressor___init__(PyObject *self, PyObject *args, PyObject *kwargs)
exit:
return return_value;
}
/*[clinic end generated code: output=71be22f38224fe84 input=a9049054013a1b77]*/
/*[clinic end generated code: output=40e5ef049f9e719b input=a9049054013a1b77]*/
......@@ -65,12 +65,13 @@ static PyObject *
_codecs_encode(PyObject *module, PyObject *args, PyObject *kwargs)
{
PyObject *return_value = NULL;
static char *_keywords[] = {"obj", "encoding", "errors", NULL};
static const char * const _keywords[] = {"obj", "encoding", "errors", NULL};
static _PyArg_Parser _parser = {"O|ss:encode", _keywords, 0};
PyObject *obj;
const char *encoding = NULL;
const char *errors = NULL;
if (!PyArg_ParseTupleAndKeywords(args, kwargs, "O|ss:encode", _keywords,
if (!_PyArg_ParseTupleAndKeywordsFast(args, kwargs, &_parser,
&obj, &encoding, &errors)) {
goto exit;
}
......@@ -103,12 +104,13 @@ static PyObject *
_codecs_decode(PyObject *module, PyObject *args, PyObject *kwargs)
{
PyObject *return_value = NULL;
static char *_keywords[] = {"obj", "encoding", "errors", NULL};
static const char * const _keywords[] = {"obj", "encoding", "errors", NULL};
static _PyArg_Parser _parser = {"O|ss:decode", _keywords, 0};
PyObject *obj;
const char *encoding = NULL;
const char *errors = NULL;
if (!PyArg_ParseTupleAndKeywords(args, kwargs, "O|ss:decode", _keywords,
if (!_PyArg_ParseTupleAndKeywordsFast(args, kwargs, &_parser,
&obj, &encoding, &errors)) {
goto exit;
}
......@@ -1455,4 +1457,4 @@ exit:
#ifndef _CODECS_CODE_PAGE_ENCODE_METHODDEF
#define _CODECS_CODE_PAGE_ENCODE_METHODDEF
#endif /* !defined(_CODECS_CODE_PAGE_ENCODE_METHODDEF) */
/*[clinic end generated code: output=6e89ff4423c12a9b input=a9049054013a1b77]*/
/*[clinic end generated code: output=0221e4eece62c905 input=a9049054013a1b77]*/
......@@ -23,10 +23,11 @@ static PyObject *
datetime_datetime_now(PyTypeObject *type, PyObject *args, PyObject *kwargs)
{
PyObject *return_value = NULL;
static char *_keywords[] = {"tz", NULL};
static const char * const _keywords[] = {"tz", NULL};
static _PyArg_Parser _parser = {"|O:now", _keywords, 0};
PyObject *tz = Py_None;
if (!PyArg_ParseTupleAndKeywords(args, kwargs, "|O:now", _keywords,
if (!_PyArg_ParseTupleAndKeywordsFast(args, kwargs, &_parser,
&tz)) {
goto exit;
}
......@@ -35,4 +36,4 @@ datetime_datetime_now(PyTypeObject *type, PyObject *args, PyObject *kwargs)
exit:
return return_value;
}
/*[clinic end generated code: output=a82e6bd057a5dab9 input=a9049054013a1b77]*/
/*[clinic end generated code: output=61f85af5637df8b5 input=a9049054013a1b77]*/
......@@ -146,11 +146,12 @@ static PyObject *
_elementtree_Element_find(ElementObject *self, PyObject *args, PyObject *kwargs)
{
PyObject *return_value = NULL;
static char *_keywords[] = {"path", "namespaces", NULL};
static const char * const _keywords[] = {"path", "namespaces", NULL};
static _PyArg_Parser _parser = {"O|O:find", _keywords, 0};
PyObject *path;
PyObject *namespaces = Py_None;
if (!PyArg_ParseTupleAndKeywords(args, kwargs, "O|O:find", _keywords,
if (!_PyArg_ParseTupleAndKeywordsFast(args, kwargs, &_parser,
&path, &namespaces)) {
goto exit;
}
......@@ -177,12 +178,13 @@ static PyObject *
_elementtree_Element_findtext(ElementObject *self, PyObject *args, PyObject *kwargs)
{
PyObject *return_value = NULL;
static char *_keywords[] = {"path", "default", "namespaces", NULL};
static const char * const _keywords[] = {"path", "default", "namespaces", NULL};
static _PyArg_Parser _parser = {"O|OO:findtext", _keywords, 0};
PyObject *path;
PyObject *default_value = Py_None;
PyObject *namespaces = Py_None;
if (!PyArg_ParseTupleAndKeywords(args, kwargs, "O|OO:findtext", _keywords,
if (!_PyArg_ParseTupleAndKeywordsFast(args, kwargs, &_parser,
&path, &default_value, &namespaces)) {
goto exit;
}
......@@ -208,11 +210,12 @@ static PyObject *
_elementtree_Element_findall(ElementObject *self, PyObject *args, PyObject *kwargs)
{
PyObject *return_value = NULL;
static char *_keywords[] = {"path", "namespaces", NULL};
static const char * const _keywords[] = {"path", "namespaces", NULL};
static _PyArg_Parser _parser = {"O|O:findall", _keywords, 0};
PyObject *path;
PyObject *namespaces = Py_None;
if (!PyArg_ParseTupleAndKeywords(args, kwargs, "O|O:findall", _keywords,
if (!_PyArg_ParseTupleAndKeywordsFast(args, kwargs, &_parser,
&path, &namespaces)) {
goto exit;
}
......@@ -238,11 +241,12 @@ static PyObject *
_elementtree_Element_iterfind(ElementObject *self, PyObject *args, PyObject *kwargs)
{
PyObject *return_value = NULL;
static char *_keywords[] = {"path", "namespaces", NULL};
static const char * const _keywords[] = {"path", "namespaces", NULL};
static _PyArg_Parser _parser = {"O|O:iterfind", _keywords, 0};
PyObject *path;
PyObject *namespaces = Py_None;
if (!PyArg_ParseTupleAndKeywords(args, kwargs, "O|O:iterfind", _keywords,
if (!_PyArg_ParseTupleAndKeywordsFast(args, kwargs, &_parser,
&path, &namespaces)) {
goto exit;
}
......@@ -268,11 +272,12 @@ static PyObject *
_elementtree_Element_get(ElementObject *self, PyObject *args, PyObject *kwargs)
{
PyObject *return_value = NULL;
static char *_keywords[] = {"key", "default", NULL};
static const char * const _keywords[] = {"key", "default", NULL};
static _PyArg_Parser _parser = {"O|O:get", _keywords, 0};
PyObject *key;
PyObject *default_value = Py_None;
if (!PyArg_ParseTupleAndKeywords(args, kwargs, "O|O:get", _keywords,
if (!_PyArg_ParseTupleAndKeywordsFast(args, kwargs, &_parser,
&key, &default_value)) {
goto exit;
}
......@@ -314,10 +319,11 @@ static PyObject *
_elementtree_Element_iter(ElementObject *self, PyObject *args, PyObject *kwargs)
{
PyObject *return_value = NULL;
static char *_keywords[] = {"tag", NULL};
static const char * const _keywords[] = {"tag", NULL};
static _PyArg_Parser _parser = {"|O:iter", _keywords, 0};
PyObject *tag = Py_None;
if (!PyArg_ParseTupleAndKeywords(args, kwargs, "|O:iter", _keywords,
if (!_PyArg_ParseTupleAndKeywordsFast(args, kwargs, &_parser,
&tag)) {
goto exit;
}
......@@ -501,10 +507,11 @@ static int
_elementtree_TreeBuilder___init__(PyObject *self, PyObject *args, PyObject *kwargs)
{
int return_value = -1;
static char *_keywords[] = {"element_factory", NULL};
static const char * const _keywords[] = {"element_factory", NULL};
static _PyArg_Parser _parser = {"|O:TreeBuilder", _keywords, 0};
PyObject *element_factory = NULL;
if (!PyArg_ParseTupleAndKeywords(args, kwargs, "|O:TreeBuilder", _keywords,
if (!_PyArg_ParseTupleAndKeywordsFast(args, kwargs, &_parser,
&element_factory)) {
goto exit;
}
......@@ -585,12 +592,13 @@ static int
_elementtree_XMLParser___init__(PyObject *self, PyObject *args, PyObject *kwargs)
{
int return_value = -1;
static char *_keywords[] = {"html", "target", "encoding", NULL};
static const char * const _keywords[] = {"html", "target", "encoding", NULL};
static _PyArg_Parser _parser = {"|OOz:XMLParser", _keywords, 0};
PyObject *html = NULL;
PyObject *target = NULL;
const char *encoding = NULL;
if (!PyArg_ParseTupleAndKeywords(args, kwargs, "|OOz:XMLParser", _keywords,
if (!_PyArg_ParseTupleAndKeywordsFast(args, kwargs, &_parser,
&html, &target, &encoding)) {
goto exit;
}
......@@ -694,4 +702,4 @@ _elementtree_XMLParser__setevents(XMLParserObject *self, PyObject *args)
exit:
return return_value;
}
/*[clinic end generated code: output=491eb5718c1ae64b input=a9049054013a1b77]*/
/*[clinic end generated code: output=4c5e94c28a009ce6 input=a9049054013a1b77]*/
......@@ -91,11 +91,12 @@ static PyObject *
_lzma_LZMADecompressor_decompress(Decompressor *self, PyObject *args, PyObject *kwargs)
{
PyObject *return_value = NULL;
static char *_keywords[] = {"data", "max_length", NULL};
static const char * const _keywords[] = {"data", "max_length", NULL};
static _PyArg_Parser _parser = {"y*|n:decompress", _keywords, 0};
Py_buffer data = {NULL, NULL};
Py_ssize_t max_length = -1;
if (!PyArg_ParseTupleAndKeywords(args, kwargs, "y*|n:decompress", _keywords,
if (!_PyArg_ParseTupleAndKeywordsFast(args, kwargs, &_parser,
&data, &max_length)) {
goto exit;
}
......@@ -141,12 +142,13 @@ static int
_lzma_LZMADecompressor___init__(PyObject *self, PyObject *args, PyObject *kwargs)
{
int return_value = -1;
static char *_keywords[] = {"format", "memlimit", "filters", NULL};
static const char * const _keywords[] = {"format", "memlimit", "filters", NULL};
static _PyArg_Parser _parser = {"|iOO:LZMADecompressor", _keywords, 0};
int format = FORMAT_AUTO;
PyObject *memlimit = Py_None;
PyObject *filters = Py_None;
if (!PyArg_ParseTupleAndKeywords(args, kwargs, "|iOO:LZMADecompressor", _keywords,
if (!_PyArg_ParseTupleAndKeywordsFast(args, kwargs, &_parser,
&format, &memlimit, &filters)) {
goto exit;
}
......@@ -254,4 +256,4 @@ exit:
return return_value;
}
/*[clinic end generated code: output=25bf57a0845d147a input=a9049054013a1b77]*/
/*[clinic end generated code: output=9434583fe111c771 input=a9049054013a1b77]*/
......@@ -93,12 +93,13 @@ static int
_pickle_Pickler___init__(PyObject *self, PyObject *args, PyObject *kwargs)
{
int return_value = -1;
static char *_keywords[] = {"file", "protocol", "fix_imports", NULL};
static const char * const _keywords[] = {"file", "protocol", "fix_imports", NULL};
static _PyArg_Parser _parser = {"O|Op:Pickler", _keywords, 0};
PyObject *file;
PyObject *protocol = NULL;
int fix_imports = 1;
if (!PyArg_ParseTupleAndKeywords(args, kwargs, "O|Op:Pickler", _keywords,
if (!_PyArg_ParseTupleAndKeywordsFast(args, kwargs, &_parser,
&file, &protocol, &fix_imports)) {
goto exit;
}
......@@ -285,13 +286,14 @@ static int
_pickle_Unpickler___init__(PyObject *self, PyObject *args, PyObject *kwargs)
{
int return_value = -1;
static char *_keywords[] = {"file", "fix_imports", "encoding", "errors", NULL};
static const char * const _keywords[] = {"file", "fix_imports", "encoding", "errors", NULL};
static _PyArg_Parser _parser = {"O|$pss:Unpickler", _keywords, 0};
PyObject *file;
int fix_imports = 1;
const char *encoding = "ASCII";
const char *errors = "strict";
if (!PyArg_ParseTupleAndKeywords(args, kwargs, "O|$pss:Unpickler", _keywords,
if (!_PyArg_ParseTupleAndKeywordsFast(args, kwargs, &_parser,
&file, &fix_imports, &encoding, &errors)) {
goto exit;
}
......@@ -392,13 +394,14 @@ static PyObject *
_pickle_dump(PyObject *module, PyObject *args, PyObject *kwargs)
{
PyObject *return_value = NULL;
static char *_keywords[] = {"obj", "file", "protocol", "fix_imports", NULL};
static const char * const _keywords[] = {"obj", "file", "protocol", "fix_imports", NULL};
static _PyArg_Parser _parser = {"OO|O$p:dump", _keywords, 0};
PyObject *obj;
PyObject *file;
PyObject *protocol = NULL;
int fix_imports = 1;
if (!PyArg_ParseTupleAndKeywords(args, kwargs, "OO|O$p:dump", _keywords,
if (!_PyArg_ParseTupleAndKeywordsFast(args, kwargs, &_parser,
&obj, &file, &protocol, &fix_imports)) {
goto exit;
}
......@@ -437,12 +440,13 @@ static PyObject *
_pickle_dumps(PyObject *module, PyObject *args, PyObject *kwargs)
{
PyObject *return_value = NULL;
static char *_keywords[] = {"obj", "protocol", "fix_imports", NULL};
static const char * const _keywords[] = {"obj", "protocol", "fix_imports", NULL};
static _PyArg_Parser _parser = {"O|O$p:dumps", _keywords, 0};
PyObject *obj;
PyObject *protocol = NULL;
int fix_imports = 1;
if (!PyArg_ParseTupleAndKeywords(args, kwargs, "O|O$p:dumps", _keywords,
if (!_PyArg_ParseTupleAndKeywordsFast(args, kwargs, &_parser,
&obj, &protocol, &fix_imports)) {
goto exit;
}
......@@ -492,13 +496,14 @@ static PyObject *
_pickle_load(PyObject *module, PyObject *args, PyObject *kwargs)
{
PyObject *return_value = NULL;
static char *_keywords[] = {"file", "fix_imports", "encoding", "errors", NULL};
static const char * const _keywords[] = {"file", "fix_imports", "encoding", "errors", NULL};
static _PyArg_Parser _parser = {"O|$pss:load", _keywords, 0};
PyObject *file;
int fix_imports = 1;
const char *encoding = "ASCII";
const char *errors = "strict";
if (!PyArg_ParseTupleAndKeywords(args, kwargs, "O|$pss:load", _keywords,
if (!_PyArg_ParseTupleAndKeywordsFast(args, kwargs, &_parser,
&file, &fix_imports, &encoding, &errors)) {
goto exit;
}
......@@ -539,13 +544,14 @@ static PyObject *
_pickle_loads(PyObject *module, PyObject *args, PyObject *kwargs)
{
PyObject *return_value = NULL;
static char *_keywords[] = {"data", "fix_imports", "encoding", "errors", NULL};
static const char * const _keywords[] = {"data", "fix_imports", "encoding", "errors", NULL};
static _PyArg_Parser _parser = {"O|$pss:loads", _keywords, 0};
PyObject *data;
int fix_imports = 1;
const char *encoding = "ASCII";
const char *errors = "strict";
if (!PyArg_ParseTupleAndKeywords(args, kwargs, "O|$pss:loads", _keywords,
if (!_PyArg_ParseTupleAndKeywordsFast(args, kwargs, &_parser,
&data, &fix_imports, &encoding, &errors)) {
goto exit;
}
......@@ -554,4 +560,4 @@ _pickle_loads(PyObject *module, PyObject *args, PyObject *kwargs)
exit:
return return_value;
}
/*[clinic end generated code: output=5c5f9149df292ce4 input=a9049054013a1b77]*/
/*[clinic end generated code: output=50f9127109673c98 input=a9049054013a1b77]*/
This diff is collapsed.
......@@ -458,12 +458,13 @@ static PyObject *
_ssl__SSLContext_load_cert_chain(PySSLContext *self, PyObject *args, PyObject *kwargs)
{
PyObject *return_value = NULL;
static char *_keywords[] = {"certfile", "keyfile", "password", NULL};
static const char * const _keywords[] = {"certfile", "keyfile", "password", NULL};
static _PyArg_Parser _parser = {"O|OO:load_cert_chain", _keywords, 0};
PyObject *certfile;
PyObject *keyfile = NULL;
PyObject *password = NULL;
if (!PyArg_ParseTupleAndKeywords(args, kwargs, "O|OO:load_cert_chain", _keywords,
if (!_PyArg_ParseTupleAndKeywordsFast(args, kwargs, &_parser,
&certfile, &keyfile, &password)) {
goto exit;
}
......@@ -491,12 +492,13 @@ static PyObject *
_ssl__SSLContext_load_verify_locations(PySSLContext *self, PyObject *args, PyObject *kwargs)
{
PyObject *return_value = NULL;
static char *_keywords[] = {"cafile", "capath", "cadata", NULL};
static const char * const _keywords[] = {"cafile", "capath", "cadata", NULL};
static _PyArg_Parser _parser = {"|OOO:load_verify_locations", _keywords, 0};
PyObject *cafile = NULL;
PyObject *capath = NULL;
PyObject *cadata = NULL;
if (!PyArg_ParseTupleAndKeywords(args, kwargs, "|OOO:load_verify_locations", _keywords,
if (!_PyArg_ParseTupleAndKeywordsFast(args, kwargs, &_parser,
&cafile, &capath, &cadata)) {
goto exit;
}
......@@ -530,12 +532,13 @@ static PyObject *
_ssl__SSLContext__wrap_socket(PySSLContext *self, PyObject *args, PyObject *kwargs)
{
PyObject *return_value = NULL;
static char *_keywords[] = {"sock", "server_side", "server_hostname", NULL};
static const char * const _keywords[] = {"sock", "server_side", "server_hostname", NULL};
static _PyArg_Parser _parser = {"O!i|O:_wrap_socket", _keywords, 0};
PyObject *sock;
int server_side;
PyObject *hostname_obj = Py_None;
if (!PyArg_ParseTupleAndKeywords(args, kwargs, "O!i|O:_wrap_socket", _keywords,
if (!_PyArg_ParseTupleAndKeywordsFast(args, kwargs, &_parser,
PySocketModule.Sock_Type, &sock, &server_side, &hostname_obj)) {
goto exit;
}
......@@ -563,13 +566,14 @@ static PyObject *
_ssl__SSLContext__wrap_bio(PySSLContext *self, PyObject *args, PyObject *kwargs)
{
PyObject *return_value = NULL;
static char *_keywords[] = {"incoming", "outgoing", "server_side", "server_hostname", NULL};
static const char * const _keywords[] = {"incoming", "outgoing", "server_side", "server_hostname", NULL};
static _PyArg_Parser _parser = {"O!O!i|O:_wrap_bio", _keywords, 0};
PySSLMemoryBIO *incoming;
PySSLMemoryBIO *outgoing;
int server_side;
PyObject *hostname_obj = Py_None;
if (!PyArg_ParseTupleAndKeywords(args, kwargs, "O!O!i|O:_wrap_bio", _keywords,
if (!_PyArg_ParseTupleAndKeywordsFast(args, kwargs, &_parser,
&PySSLMemoryBIO_Type, &incoming, &PySSLMemoryBIO_Type, &outgoing, &server_side, &hostname_obj)) {
goto exit;
}
......@@ -684,10 +688,11 @@ static PyObject *
_ssl__SSLContext_get_ca_certs(PySSLContext *self, PyObject *args, PyObject *kwargs)
{
PyObject *return_value = NULL;
static char *_keywords[] = {"binary_form", NULL};
static const char * const _keywords[] = {"binary_form", NULL};
static _PyArg_Parser _parser = {"|p:get_ca_certs", _keywords, 0};
int binary_form = 0;
if (!PyArg_ParseTupleAndKeywords(args, kwargs, "|p:get_ca_certs", _keywords,
if (!_PyArg_ParseTupleAndKeywordsFast(args, kwargs, &_parser,
&binary_form)) {
goto exit;
}
......@@ -994,11 +999,12 @@ static PyObject *
_ssl_txt2obj(PyObject *module, PyObject *args, PyObject *kwargs)
{
PyObject *return_value = NULL;
static char *_keywords[] = {"txt", "name", NULL};
static const char * const _keywords[] = {"txt", "name", NULL};
static _PyArg_Parser _parser = {"s|p:txt2obj", _keywords, 0};
const char *txt;
int name = 0;
if (!PyArg_ParseTupleAndKeywords(args, kwargs, "s|p:txt2obj", _keywords,
if (!_PyArg_ParseTupleAndKeywordsFast(args, kwargs, &_parser,
&txt, &name)) {
goto exit;
}
......@@ -1059,10 +1065,11 @@ static PyObject *
_ssl_enum_certificates(PyObject *module, PyObject *args, PyObject *kwargs)
{
PyObject *return_value = NULL;
static char *_keywords[] = {"store_name", NULL};
static const char * const _keywords[] = {"store_name", NULL};
static _PyArg_Parser _parser = {"s:enum_certificates", _keywords, 0};
const char *store_name;
if (!PyArg_ParseTupleAndKeywords(args, kwargs, "s:enum_certificates", _keywords,
if (!_PyArg_ParseTupleAndKeywordsFast(args, kwargs, &_parser,
&store_name)) {
goto exit;
}
......@@ -1097,10 +1104,11 @@ static PyObject *
_ssl_enum_crls(PyObject *module, PyObject *args, PyObject *kwargs)
{
PyObject *return_value = NULL;
static char *_keywords[] = {"store_name", NULL};
static const char * const _keywords[] = {"store_name", NULL};
static _PyArg_Parser _parser = {"s:enum_crls", _keywords, 0};
const char *store_name;
if (!PyArg_ParseTupleAndKeywords(args, kwargs, "s:enum_crls", _keywords,
if (!_PyArg_ParseTupleAndKeywordsFast(args, kwargs, &_parser,
&store_name)) {
goto exit;
}
......@@ -1135,4 +1143,4 @@ exit:
#ifndef _SSL_ENUM_CRLS_METHODDEF
#define _SSL_ENUM_CRLS_METHODDEF
#endif /* !defined(_SSL_ENUM_CRLS_METHODDEF) */
/*[clinic end generated code: output=02444732c19722b3 input=a9049054013a1b77]*/
/*[clinic end generated code: output=6057f95343369849 input=a9049054013a1b77]*/
......@@ -105,11 +105,12 @@ static PyObject *
_winapi_ConnectNamedPipe(PyObject *module, PyObject *args, PyObject *kwargs)
{
PyObject *return_value = NULL;
static char *_keywords[] = {"handle", "overlapped", NULL};
static const char * const _keywords[] = {"handle", "overlapped", NULL};
static _PyArg_Parser _parser = {"" F_HANDLE "|i:ConnectNamedPipe", _keywords, 0};
HANDLE handle;
int use_overlapped = 0;
if (!PyArg_ParseTupleAndKeywords(args, kwargs, "" F_HANDLE "|i:ConnectNamedPipe", _keywords,
if (!_PyArg_ParseTupleAndKeywordsFast(args, kwargs, &_parser,
&handle, &use_overlapped)) {
goto exit;
}
......@@ -679,12 +680,13 @@ static PyObject *
_winapi_ReadFile(PyObject *module, PyObject *args, PyObject *kwargs)
{
PyObject *return_value = NULL;
static char *_keywords[] = {"handle", "size", "overlapped", NULL};
static const char * const _keywords[] = {"handle", "size", "overlapped", NULL};
static _PyArg_Parser _parser = {"" F_HANDLE "i|i:ReadFile", _keywords, 0};
HANDLE handle;
int size;
int use_overlapped = 0;
if (!PyArg_ParseTupleAndKeywords(args, kwargs, "" F_HANDLE "i|i:ReadFile", _keywords,
if (!_PyArg_ParseTupleAndKeywordsFast(args, kwargs, &_parser,
&handle, &size, &use_overlapped)) {
goto exit;
}
......@@ -872,12 +874,13 @@ static PyObject *
_winapi_WriteFile(PyObject *module, PyObject *args, PyObject *kwargs)
{
PyObject *return_value = NULL;
static char *_keywords[] = {"handle", "buffer", "overlapped", NULL};
static const char * const _keywords[] = {"handle", "buffer", "overlapped", NULL};
static _PyArg_Parser _parser = {"" F_HANDLE "O|i:WriteFile", _keywords, 0};
HANDLE handle;
PyObject *buffer;
int use_overlapped = 0;
if (!PyArg_ParseTupleAndKeywords(args, kwargs, "" F_HANDLE "O|i:WriteFile", _keywords,
if (!_PyArg_ParseTupleAndKeywordsFast(args, kwargs, &_parser,
&handle, &buffer, &use_overlapped)) {
goto exit;
}
......@@ -886,4 +889,4 @@ _winapi_WriteFile(PyObject *module, PyObject *args, PyObject *kwargs)
exit:
return return_value;
}
/*[clinic end generated code: output=8032f3371c14749e input=a9049054013a1b77]*/
/*[clinic end generated code: output=4bfccfb32ab726e8 input=a9049054013a1b77]*/
......@@ -112,11 +112,12 @@ static PyObject *
binascii_b2a_base64(PyObject *module, PyObject *args, PyObject *kwargs)
{
PyObject *return_value = NULL;
static char *_keywords[] = {"data", "newline", NULL};
static const char * const _keywords[] = {"data", "newline", NULL};
static _PyArg_Parser _parser = {"y*|$i:b2a_base64", _keywords, 0};
Py_buffer data = {NULL, NULL};
int newline = 1;
if (!PyArg_ParseTupleAndKeywords(args, kwargs, "y*|$i:b2a_base64", _keywords,
if (!_PyArg_ParseTupleAndKeywordsFast(args, kwargs, &_parser,
&data, &newline)) {
goto exit;
}
......@@ -488,11 +489,12 @@ static PyObject *
binascii_a2b_qp(PyObject *module, PyObject *args, PyObject *kwargs)
{
PyObject *return_value = NULL;
static char *_keywords[] = {"data", "header", NULL};
static const char * const _keywords[] = {"data", "header", NULL};
static _PyArg_Parser _parser = {"O&|i:a2b_qp", _keywords, 0};
Py_buffer data = {NULL, NULL};
int header = 0;
if (!PyArg_ParseTupleAndKeywords(args, kwargs, "O&|i:a2b_qp", _keywords,
if (!_PyArg_ParseTupleAndKeywordsFast(args, kwargs, &_parser,
ascii_buffer_converter, &data, &header)) {
goto exit;
}
......@@ -527,13 +529,14 @@ static PyObject *
binascii_b2a_qp(PyObject *module, PyObject *args, PyObject *kwargs)
{
PyObject *return_value = NULL;
static char *_keywords[] = {"data", "quotetabs", "istext", "header", NULL};
static const char * const _keywords[] = {"data", "quotetabs", "istext", "header", NULL};
static _PyArg_Parser _parser = {"y*|iii:b2a_qp", _keywords, 0};
Py_buffer data = {NULL, NULL};
int quotetabs = 0;
int istext = 1;
int header = 0;
if (!PyArg_ParseTupleAndKeywords(args, kwargs, "y*|iii:b2a_qp", _keywords,
if (!_PyArg_ParseTupleAndKeywordsFast(args, kwargs, &_parser,
&data, &quotetabs, &istext, &header)) {
goto exit;
}
......@@ -547,4 +550,4 @@ exit:
return return_value;
}
/*[clinic end generated code: output=d91d1058dc0590e1 input=a9049054013a1b77]*/
/*[clinic end generated code: output=12611b05d8bf4a9c input=a9049054013a1b77]*/
......@@ -861,14 +861,15 @@ static PyObject *
cmath_isclose(PyObject *module, PyObject *args, PyObject *kwargs)
{
PyObject *return_value = NULL;
static char *_keywords[] = {"a", "b", "rel_tol", "abs_tol", NULL};
static const char * const _keywords[] = {"a", "b", "rel_tol", "abs_tol", NULL};
static _PyArg_Parser _parser = {"DD|$dd:isclose", _keywords, 0};
Py_complex a;
Py_complex b;
double rel_tol = 1e-09;
double abs_tol = 0.0;
int _return_value;
if (!PyArg_ParseTupleAndKeywords(args, kwargs, "DD|$dd:isclose", _keywords,
if (!_PyArg_ParseTupleAndKeywordsFast(args, kwargs, &_parser,
&a, &b, &rel_tol, &abs_tol)) {
goto exit;
}
......@@ -881,4 +882,4 @@ cmath_isclose(PyObject *module, PyObject *args, PyObject *kwargs)
exit:
return return_value;
}
/*[clinic end generated code: output=0f49dd11b50175bc input=a9049054013a1b77]*/
/*[clinic end generated code: output=aa2e77ca9fc26928 input=a9049054013a1b77]*/
......@@ -20,10 +20,11 @@ static PyObject *
grp_getgrgid(PyObject *module, PyObject *args, PyObject *kwargs)
{
PyObject *return_value = NULL;
static char *_keywords[] = {"id", NULL};
static const char * const _keywords[] = {"id", NULL};
static _PyArg_Parser _parser = {"O:getgrgid", _keywords, 0};
PyObject *id;
if (!PyArg_ParseTupleAndKeywords(args, kwargs, "O:getgrgid", _keywords,
if (!_PyArg_ParseTupleAndKeywordsFast(args, kwargs, &_parser,
&id)) {
goto exit;
}
......@@ -51,10 +52,11 @@ static PyObject *
grp_getgrnam(PyObject *module, PyObject *args, PyObject *kwargs)
{
PyObject *return_value = NULL;
static char *_keywords[] = {"name", NULL};
static const char * const _keywords[] = {"name", NULL};
static _PyArg_Parser _parser = {"U:getgrnam", _keywords, 0};
PyObject *name;
if (!PyArg_ParseTupleAndKeywords(args, kwargs, "U:getgrnam", _keywords,
if (!_PyArg_ParseTupleAndKeywordsFast(args, kwargs, &_parser,
&name)) {
goto exit;
}
......@@ -84,4 +86,4 @@ grp_getgrall(PyObject *module, PyObject *Py_UNUSED(ignored))
{
return grp_getgrall_impl(module);
}
/*[clinic end generated code: output=8b7502970a29e7f1 input=a9049054013a1b77]*/
/*[clinic end generated code: output=c06081097b7fffe7 input=a9049054013a1b77]*/
......@@ -81,10 +81,11 @@ static PyObject *
_md5_md5(PyObject *module, PyObject *args, PyObject *kwargs)
{
PyObject *return_value = NULL;
static char *_keywords[] = {"string", NULL};
static const char * const _keywords[] = {"string", NULL};
static _PyArg_Parser _parser = {"|O:md5", _keywords, 0};
PyObject *string = NULL;
if (!PyArg_ParseTupleAndKeywords(args, kwargs, "|O:md5", _keywords,
if (!_PyArg_ParseTupleAndKeywordsFast(args, kwargs, &_parser,
&string)) {
goto exit;
}
......@@ -93,4 +94,4 @@ _md5_md5(PyObject *module, PyObject *args, PyObject *kwargs)
exit:
return return_value;
}
/*[clinic end generated code: output=8f640a98761daffe input=a9049054013a1b77]*/
/*[clinic end generated code: output=f86fc2f3f21831e2 input=a9049054013a1b77]*/
This diff is collapsed.
......@@ -243,12 +243,13 @@ static PyObject *
pyexpat_ParserCreate(PyObject *module, PyObject *args, PyObject *kwargs)
{
PyObject *return_value = NULL;
static char *_keywords[] = {"encoding", "namespace_separator", "intern", NULL};
static const char * const _keywords[] = {"encoding", "namespace_separator", "intern", NULL};
static _PyArg_Parser _parser = {"|zzO:ParserCreate", _keywords, 0};
const char *encoding = NULL;
const char *namespace_separator = NULL;
PyObject *intern = NULL;
if (!PyArg_ParseTupleAndKeywords(args, kwargs, "|zzO:ParserCreate", _keywords,
if (!_PyArg_ParseTupleAndKeywordsFast(args, kwargs, &_parser,
&encoding, &namespace_separator, &intern)) {
goto exit;
}
......@@ -288,4 +289,4 @@ exit:
#ifndef PYEXPAT_XMLPARSER_USEFOREIGNDTD_METHODDEF
#define PYEXPAT_XMLPARSER_USEFOREIGNDTD_METHODDEF
#endif /* !defined(PYEXPAT_XMLPARSER_USEFOREIGNDTD_METHODDEF) */
/*[clinic end generated code: output=9de21f46734b1311 input=a9049054013a1b77]*/
/*[clinic end generated code: output=93cfe662f2bc48e5 input=a9049054013a1b77]*/
......@@ -81,10 +81,11 @@ static PyObject *
_sha1_sha1(PyObject *module, PyObject *args, PyObject *kwargs)
{
PyObject *return_value = NULL;
static char *_keywords[] = {"string", NULL};
static const char * const _keywords[] = {"string", NULL};
static _PyArg_Parser _parser = {"|O:sha1", _keywords, 0};
PyObject *string = NULL;
if (!PyArg_ParseTupleAndKeywords(args, kwargs, "|O:sha1", _keywords,
if (!_PyArg_ParseTupleAndKeywordsFast(args, kwargs, &_parser,
&string)) {
goto exit;
}
......@@ -93,4 +94,4 @@ _sha1_sha1(PyObject *module, PyObject *args, PyObject *kwargs)
exit:
return return_value;
}
/*[clinic end generated code: output=475c4cc749ab31b1 input=a9049054013a1b77]*/
/*[clinic end generated code: output=549a5d08c248337d input=a9049054013a1b77]*/
......@@ -81,10 +81,11 @@ static PyObject *
_sha256_sha256(PyObject *module, PyObject *args, PyObject *kwargs)
{
PyObject *return_value = NULL;
static char *_keywords[] = {"string", NULL};
static const char * const _keywords[] = {"string", NULL};
static _PyArg_Parser _parser = {"|O:sha256", _keywords, 0};
PyObject *string = NULL;
if (!PyArg_ParseTupleAndKeywords(args, kwargs, "|O:sha256", _keywords,
if (!_PyArg_ParseTupleAndKeywordsFast(args, kwargs, &_parser,
&string)) {
goto exit;
}
......@@ -110,10 +111,11 @@ static PyObject *
_sha256_sha224(PyObject *module, PyObject *args, PyObject *kwargs)
{
PyObject *return_value = NULL;
static char *_keywords[] = {"string", NULL};
static const char * const _keywords[] = {"string", NULL};
static _PyArg_Parser _parser = {"|O:sha224", _keywords, 0};
PyObject *string = NULL;
if (!PyArg_ParseTupleAndKeywords(args, kwargs, "|O:sha224", _keywords,
if (!_PyArg_ParseTupleAndKeywordsFast(args, kwargs, &_parser,
&string)) {
goto exit;
}
......@@ -122,4 +124,4 @@ _sha256_sha224(PyObject *module, PyObject *args, PyObject *kwargs)
exit:
return return_value;
}
/*[clinic end generated code: output=a41a21c08fcddd70 input=a9049054013a1b77]*/
/*[clinic end generated code: output=a1296ba6d0780051 input=a9049054013a1b77]*/
......@@ -99,10 +99,11 @@ static PyObject *
_sha512_sha512(PyObject *module, PyObject *args, PyObject *kwargs)
{
PyObject *return_value = NULL;
static char *_keywords[] = {"string", NULL};
static const char * const _keywords[] = {"string", NULL};
static _PyArg_Parser _parser = {"|O:sha512", _keywords, 0};
PyObject *string = NULL;
if (!PyArg_ParseTupleAndKeywords(args, kwargs, "|O:sha512", _keywords,
if (!_PyArg_ParseTupleAndKeywordsFast(args, kwargs, &_parser,
&string)) {
goto exit;
}
......@@ -132,10 +133,11 @@ static PyObject *
_sha512_sha384(PyObject *module, PyObject *args, PyObject *kwargs)
{
PyObject *return_value = NULL;
static char *_keywords[] = {"string", NULL};
static const char * const _keywords[] = {"string", NULL};
static _PyArg_Parser _parser = {"|O:sha384", _keywords, 0};
PyObject *string = NULL;
if (!PyArg_ParseTupleAndKeywords(args, kwargs, "|O:sha384", _keywords,
if (!_PyArg_ParseTupleAndKeywordsFast(args, kwargs, &_parser,
&string)) {
goto exit;
}
......@@ -170,4 +172,4 @@ exit:
#ifndef _SHA512_SHA384_METHODDEF
#define _SHA512_SHA384_METHODDEF
#endif /* !defined(_SHA512_SHA384_METHODDEF) */
/*[clinic end generated code: output=e314c0f773abd5d7 input=a9049054013a1b77]*/
/*[clinic end generated code: output=cf0da76cb603d1bf input=a9049054013a1b77]*/
......@@ -23,11 +23,12 @@ static PyObject *
zlib_compress(PyObject *module, PyObject *args, PyObject *kwargs)
{
PyObject *return_value = NULL;
static char *_keywords[] = {"", "level", NULL};
static const char * const _keywords[] = {"", "level", NULL};
static _PyArg_Parser _parser = {"y*|i:compress", _keywords, 0};
Py_buffer data = {NULL, NULL};
int level = Z_DEFAULT_COMPRESSION;
if (!PyArg_ParseTupleAndKeywords(args, kwargs, "y*|i:compress", _keywords,
if (!_PyArg_ParseTupleAndKeywordsFast(args, kwargs, &_parser,
&data, &level)) {
goto exit;
}
......@@ -126,7 +127,8 @@ static PyObject *
zlib_compressobj(PyObject *module, PyObject *args, PyObject *kwargs)
{
PyObject *return_value = NULL;
static char *_keywords[] = {"level", "method", "wbits", "memLevel", "strategy", "zdict", NULL};
static const char * const _keywords[] = {"level", "method", "wbits", "memLevel", "strategy", "zdict", NULL};
static _PyArg_Parser _parser = {"|iiiiiy*:compressobj", _keywords, 0};
int level = Z_DEFAULT_COMPRESSION;
int method = DEFLATED;
int wbits = MAX_WBITS;
......@@ -134,7 +136,7 @@ zlib_compressobj(PyObject *module, PyObject *args, PyObject *kwargs)
int strategy = Z_DEFAULT_STRATEGY;
Py_buffer zdict = {NULL, NULL};
if (!PyArg_ParseTupleAndKeywords(args, kwargs, "|iiiiiy*:compressobj", _keywords,
if (!_PyArg_ParseTupleAndKeywordsFast(args, kwargs, &_parser,
&level, &method, &wbits, &memLevel, &strategy, &zdict)) {
goto exit;
}
......@@ -171,11 +173,12 @@ static PyObject *
zlib_decompressobj(PyObject *module, PyObject *args, PyObject *kwargs)
{
PyObject *return_value = NULL;
static char *_keywords[] = {"wbits", "zdict", NULL};
static const char * const _keywords[] = {"wbits", "zdict", NULL};
static _PyArg_Parser _parser = {"|iO:decompressobj", _keywords, 0};
int wbits = MAX_WBITS;
PyObject *zdict = NULL;
if (!PyArg_ParseTupleAndKeywords(args, kwargs, "|iO:decompressobj", _keywords,
if (!_PyArg_ParseTupleAndKeywordsFast(args, kwargs, &_parser,
&wbits, &zdict)) {
goto exit;
}
......@@ -460,4 +463,4 @@ exit:
#ifndef ZLIB_COMPRESS_COPY_METHODDEF
#define ZLIB_COMPRESS_COPY_METHODDEF
#endif /* !defined(ZLIB_COMPRESS_COPY_METHODDEF) */
/*[clinic end generated code: output=9046866b1ac5de7e input=a9049054013a1b77]*/
/*[clinic end generated code: output=1fed251c15a9bffa input=a9049054013a1b77]*/
......@@ -200,11 +200,12 @@ static PyObject *
bytearray_split(PyByteArrayObject *self, PyObject *args, PyObject *kwargs)
{
PyObject *return_value = NULL;
static char *_keywords[] = {"sep", "maxsplit", NULL};
static const char * const _keywords[] = {"sep", "maxsplit", NULL};
static _PyArg_Parser _parser = {"|On:split", _keywords, 0};
PyObject *sep = Py_None;
Py_ssize_t maxsplit = -1;
if (!PyArg_ParseTupleAndKeywords(args, kwargs, "|On:split", _keywords,
if (!_PyArg_ParseTupleAndKeywordsFast(args, kwargs, &_parser,
&sep, &maxsplit)) {
goto exit;
}
......@@ -273,11 +274,12 @@ static PyObject *
bytearray_rsplit(PyByteArrayObject *self, PyObject *args, PyObject *kwargs)
{
PyObject *return_value = NULL;
static char *_keywords[] = {"sep", "maxsplit", NULL};
static const char * const _keywords[] = {"sep", "maxsplit", NULL};
static _PyArg_Parser _parser = {"|On:rsplit", _keywords, 0};
PyObject *sep = Py_None;
Py_ssize_t maxsplit = -1;
if (!PyArg_ParseTupleAndKeywords(args, kwargs, "|On:rsplit", _keywords,
if (!_PyArg_ParseTupleAndKeywordsFast(args, kwargs, &_parser,
&sep, &maxsplit)) {
goto exit;
}
......@@ -564,11 +566,12 @@ static PyObject *
bytearray_decode(PyByteArrayObject *self, PyObject *args, PyObject *kwargs)
{
PyObject *return_value = NULL;
static char *_keywords[] = {"encoding", "errors", NULL};
static const char * const _keywords[] = {"encoding", "errors", NULL};
static _PyArg_Parser _parser = {"|ss:decode", _keywords, 0};
const char *encoding = NULL;
const char *errors = NULL;
if (!PyArg_ParseTupleAndKeywords(args, kwargs, "|ss:decode", _keywords,
if (!_PyArg_ParseTupleAndKeywordsFast(args, kwargs, &_parser,
&encoding, &errors)) {
goto exit;
}
......@@ -610,10 +613,11 @@ static PyObject *
bytearray_splitlines(PyByteArrayObject *self, PyObject *args, PyObject *kwargs)
{
PyObject *return_value = NULL;
static char *_keywords[] = {"keepends", NULL};
static const char * const _keywords[] = {"keepends", NULL};
static _PyArg_Parser _parser = {"|i:splitlines", _keywords, 0};
int keepends = 0;
if (!PyArg_ParseTupleAndKeywords(args, kwargs, "|i:splitlines", _keywords,
if (!_PyArg_ParseTupleAndKeywordsFast(args, kwargs, &_parser,
&keepends)) {
goto exit;
}
......@@ -716,4 +720,4 @@ bytearray_sizeof(PyByteArrayObject *self, PyObject *Py_UNUSED(ignored))
{
return bytearray_sizeof_impl(self);
}
/*[clinic end generated code: output=a32f183ebef159cc input=a9049054013a1b77]*/
/*[clinic end generated code: output=0af30f8c0b1ecd76 input=a9049054013a1b77]*/
......@@ -26,11 +26,12 @@ static PyObject *
bytes_split(PyBytesObject *self, PyObject *args, PyObject *kwargs)
{
PyObject *return_value = NULL;
static char *_keywords[] = {"sep", "maxsplit", NULL};
static const char * const _keywords[] = {"sep", "maxsplit", NULL};
static _PyArg_Parser _parser = {"|On:split", _keywords, 0};
PyObject *sep = Py_None;
Py_ssize_t maxsplit = -1;
if (!PyArg_ParseTupleAndKeywords(args, kwargs, "|On:split", _keywords,
if (!_PyArg_ParseTupleAndKeywordsFast(args, kwargs, &_parser,
&sep, &maxsplit)) {
goto exit;
}
......@@ -144,11 +145,12 @@ static PyObject *
bytes_rsplit(PyBytesObject *self, PyObject *args, PyObject *kwargs)
{
PyObject *return_value = NULL;
static char *_keywords[] = {"sep", "maxsplit", NULL};
static const char * const _keywords[] = {"sep", "maxsplit", NULL};
static _PyArg_Parser _parser = {"|On:rsplit", _keywords, 0};
PyObject *sep = Py_None;
Py_ssize_t maxsplit = -1;
if (!PyArg_ParseTupleAndKeywords(args, kwargs, "|On:rsplit", _keywords,
if (!_PyArg_ParseTupleAndKeywordsFast(args, kwargs, &_parser,
&sep, &maxsplit)) {
goto exit;
}
......@@ -429,11 +431,12 @@ static PyObject *
bytes_decode(PyBytesObject *self, PyObject *args, PyObject *kwargs)
{
PyObject *return_value = NULL;
static char *_keywords[] = {"encoding", "errors", NULL};
static const char * const _keywords[] = {"encoding", "errors", NULL};
static _PyArg_Parser _parser = {"|ss:decode", _keywords, 0};
const char *encoding = NULL;
const char *errors = NULL;
if (!PyArg_ParseTupleAndKeywords(args, kwargs, "|ss:decode", _keywords,
if (!_PyArg_ParseTupleAndKeywordsFast(args, kwargs, &_parser,
&encoding, &errors)) {
goto exit;
}
......@@ -462,10 +465,11 @@ static PyObject *
bytes_splitlines(PyBytesObject *self, PyObject *args, PyObject *kwargs)
{
PyObject *return_value = NULL;
static char *_keywords[] = {"keepends", NULL};
static const char * const _keywords[] = {"keepends", NULL};
static _PyArg_Parser _parser = {"|i:splitlines", _keywords, 0};
int keepends = 0;
if (!PyArg_ParseTupleAndKeywords(args, kwargs, "|i:splitlines", _keywords,
if (!_PyArg_ParseTupleAndKeywordsFast(args, kwargs, &_parser,
&keepends)) {
goto exit;
}
......@@ -504,4 +508,4 @@ bytes_fromhex(PyTypeObject *type, PyObject *arg)
exit:
return return_value;
}
/*[clinic end generated code: output=6fe884a74e7d49cf input=a9049054013a1b77]*/
/*[clinic end generated code: output=637c2c14610d3c8d input=a9049054013a1b77]*/
......@@ -87,12 +87,13 @@ static PyObject *
winreg_HKEYType___exit__(PyHKEYObject *self, PyObject *args, PyObject *kwargs)
{
PyObject *return_value = NULL;
static char *_keywords[] = {"exc_type", "exc_value", "traceback", NULL};
static const char * const _keywords[] = {"exc_type", "exc_value", "traceback", NULL};
static _PyArg_Parser _parser = {"OOO:__exit__", _keywords, 0};
PyObject *exc_type;
PyObject *exc_value;
PyObject *traceback;
if (!PyArg_ParseTupleAndKeywords(args, kwargs, "OOO:__exit__", _keywords,
if (!_PyArg_ParseTupleAndKeywordsFast(args, kwargs, &_parser,
&exc_type, &exc_value, &traceback)) {
goto exit;
}
......@@ -244,14 +245,15 @@ static PyObject *
winreg_CreateKeyEx(PyObject *module, PyObject *args, PyObject *kwargs)
{
PyObject *return_value = NULL;
static char *_keywords[] = {"key", "sub_key", "reserved", "access", NULL};
static const char * const _keywords[] = {"key", "sub_key", "reserved", "access", NULL};
static _PyArg_Parser _parser = {"O&Z|ii:CreateKeyEx", _keywords, 0};
HKEY key;
Py_UNICODE *sub_key;
int reserved = 0;
REGSAM access = KEY_WRITE;
HKEY _return_value;
if (!PyArg_ParseTupleAndKeywords(args, kwargs, "O&Z|ii:CreateKeyEx", _keywords,
if (!_PyArg_ParseTupleAndKeywordsFast(args, kwargs, &_parser,
clinic_HKEY_converter, &key, &sub_key, &reserved, &access)) {
goto exit;
}
......@@ -342,13 +344,14 @@ static PyObject *
winreg_DeleteKeyEx(PyObject *module, PyObject *args, PyObject *kwargs)
{
PyObject *return_value = NULL;
static char *_keywords[] = {"key", "sub_key", "access", "reserved", NULL};
static const char * const _keywords[] = {"key", "sub_key", "access", "reserved", NULL};
static _PyArg_Parser _parser = {"O&u|ii:DeleteKeyEx", _keywords, 0};
HKEY key;
Py_UNICODE *sub_key;
REGSAM access = KEY_WOW64_64KEY;
int reserved = 0;
if (!PyArg_ParseTupleAndKeywords(args, kwargs, "O&u|ii:DeleteKeyEx", _keywords,
if (!_PyArg_ParseTupleAndKeywordsFast(args, kwargs, &_parser,
clinic_HKEY_converter, &key, &sub_key, &access, &reserved)) {
goto exit;
}
......@@ -627,14 +630,15 @@ static PyObject *
winreg_OpenKey(PyObject *module, PyObject *args, PyObject *kwargs)
{
PyObject *return_value = NULL;
static char *_keywords[] = {"key", "sub_key", "reserved", "access", NULL};
static const char * const _keywords[] = {"key", "sub_key", "reserved", "access", NULL};
static _PyArg_Parser _parser = {"O&Z|ii:OpenKey", _keywords, 0};
HKEY key;
Py_UNICODE *sub_key;
int reserved = 0;
REGSAM access = KEY_READ;
HKEY _return_value;
if (!PyArg_ParseTupleAndKeywords(args, kwargs, "O&Z|ii:OpenKey", _keywords,
if (!_PyArg_ParseTupleAndKeywordsFast(args, kwargs, &_parser,
clinic_HKEY_converter, &key, &sub_key, &reserved, &access)) {
goto exit;
}
......@@ -678,14 +682,15 @@ static PyObject *
winreg_OpenKeyEx(PyObject *module, PyObject *args, PyObject *kwargs)
{
PyObject *return_value = NULL;
static char *_keywords[] = {"key", "sub_key", "reserved", "access", NULL};
static const char * const _keywords[] = {"key", "sub_key", "reserved", "access", NULL};
static _PyArg_Parser _parser = {"O&Z|ii:OpenKeyEx", _keywords, 0};
HKEY key;
Py_UNICODE *sub_key;
int reserved = 0;
REGSAM access = KEY_READ;
HKEY _return_value;
if (!PyArg_ParseTupleAndKeywords(args, kwargs, "O&Z|ii:OpenKeyEx", _keywords,
if (!_PyArg_ParseTupleAndKeywordsFast(args, kwargs, &_parser,
clinic_HKEY_converter, &key, &sub_key, &reserved, &access)) {
goto exit;
}
......@@ -1086,4 +1091,4 @@ winreg_QueryReflectionKey(PyObject *module, PyObject *arg)
exit:
return return_value;
}
/*[clinic end generated code: output=c35ce71f825424d1 input=a9049054013a1b77]*/
/*[clinic end generated code: output=5b53d19cbe3f37cd input=a9049054013a1b77]*/
......@@ -159,7 +159,8 @@ static PyObject *
builtin_compile(PyObject *module, PyObject *args, PyObject *kwargs)
{
PyObject *return_value = NULL;
static char *_keywords[] = {"source", "filename", "mode", "flags", "dont_inherit", "optimize", NULL};
static const char * const _keywords[] = {"source", "filename", "mode", "flags", "dont_inherit", "optimize", NULL};
static _PyArg_Parser _parser = {"OO&s|iii:compile", _keywords, 0};
PyObject *source;
PyObject *filename;
const char *mode;
......@@ -167,7 +168,7 @@ builtin_compile(PyObject *module, PyObject *args, PyObject *kwargs)
int dont_inherit = 0;
int optimize = -1;
if (!PyArg_ParseTupleAndKeywords(args, kwargs, "OO&s|iii:compile", _keywords,
if (!_PyArg_ParseTupleAndKeywordsFast(args, kwargs, &_parser,
&source, PyUnicode_FSDecoder, &filename, &mode, &flags, &dont_inherit, &optimize)) {
goto exit;
}
......@@ -673,4 +674,4 @@ builtin_issubclass(PyObject *module, PyObject *args)
exit:
return return_value;
}
/*[clinic end generated code: output=6ab37e6c6d2e7b19 input=a9049054013a1b77]*/
/*[clinic end generated code: output=790cb3d26531dfda input=a9049054013a1b77]*/
This diff is collapsed.
......@@ -674,6 +674,7 @@ Py_FinalizeEx(void)
PySlice_Fini();
_PyGC_Fini();
_PyRandom_Fini();
_PyArg_Fini();
/* Cleanup Unicode implementation */
_PyUnicode_Fini();
......
......@@ -743,7 +743,10 @@ class CLanguage(Language):
return output()
def insert_keywords(s):
return linear_format(s, declarations="static char *_keywords[] = {{{keywords}, NULL}};\n{declarations}")
return linear_format(s, declarations=
'static const char * const _keywords[] = {{{keywords}, NULL}};\n'
'static _PyArg_Parser _parser = {{"{format_units}:{name}", _keywords, 0}};\n'
'{declarations}')
if not parameters:
# no parameters, METH_NOARGS
......@@ -849,17 +852,12 @@ class CLanguage(Language):
parser_prototype = parser_prototype_keyword
body = normalize_snippet("""
if (!PyArg_ParseTupleAndKeywords(args, kwargs, "{format_units}:{name}", _keywords,
if (!_PyArg_ParseTupleAndKeywordsFast(args, kwargs, &_parser,
{parse_arguments})) {{
goto exit;
}}
""", indent=4)
parser_definition = parser_body(parser_prototype, normalize_snippet("""
if (!PyArg_ParseTupleAndKeywords(args, kwargs, "{format_units}:{name}", _keywords,
{parse_arguments})) {{
goto exit;
}}
""", indent=4))
parser_definition = parser_body(parser_prototype, body)
parser_definition = insert_keywords(parser_definition)
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment