mirror of
https://github.com/jart/cosmopolitan.git
synced 2025-08-06 09:50:28 +00:00
separate into ParseStack and ParseStackAndKeywords
refer python/cpython@6518a93cb1 refer python/cpython@3e1fad6913 refer python/cpython@c0083fc47d
This commit is contained in:
parent
f1f2a3ec6d
commit
af384841c3
25 changed files with 299 additions and 232 deletions
7
third_party/python/Include/modsupport.h
vendored
7
third_party/python/Include/modsupport.h
vendored
|
@ -66,12 +66,15 @@ typedef struct _PyArg_Parser {
|
|||
} _PyArg_Parser;
|
||||
#ifdef PY_SSIZE_T_CLEAN
|
||||
#define _PyArg_ParseTupleAndKeywordsFast _PyArg_ParseTupleAndKeywordsFast_SizeT
|
||||
#define _PyArg_ParseStack _PyArg_ParseStack_SizeT
|
||||
#define _PyArg_ParseStack _PyArg_ParseStack_SizeT
|
||||
#define _PyArg_ParseStackAndKeywords _PyArg_ParseStackAndKeywords_SizeT
|
||||
#define _PyArg_VaParseTupleAndKeywordsFast _PyArg_VaParseTupleAndKeywordsFast_SizeT
|
||||
#endif
|
||||
int _PyArg_ParseTupleAndKeywordsFast(PyObject *, PyObject *,
|
||||
struct _PyArg_Parser *, ...);
|
||||
int _PyArg_ParseStack(PyObject **args, Py_ssize_t nargs, PyObject *kwnames,
|
||||
int _PyArg_ParseStack(PyObject **args, Py_ssize_t nargs,
|
||||
const char *format, ...);
|
||||
int _PyArg_ParseStackAndKeywords(PyObject **args, Py_ssize_t nargs, PyObject *kwnames,
|
||||
struct _PyArg_Parser *, ...);
|
||||
int _PyArg_VaParseTupleAndKeywordsFast(PyObject *, PyObject *,
|
||||
struct _PyArg_Parser *, va_list);
|
||||
|
|
|
@ -145,7 +145,7 @@ _io_open(PyObject *module, PyObject **args, Py_ssize_t nargs, PyObject *kwnames)
|
|||
int closefd = 1;
|
||||
PyObject *opener = Py_None;
|
||||
|
||||
if (!_PyArg_ParseStack(args, nargs, kwnames, &_parser,
|
||||
if (!_PyArg_ParseStackAndKeywords(args, nargs, kwnames, &_parser,
|
||||
&file, &mode, &buffering, &encoding, &errors, &newline, &closefd, &opener)) {
|
||||
goto exit;
|
||||
}
|
||||
|
|
|
@ -68,7 +68,7 @@ _io_IncrementalNewlineDecoder_decode(nldecoder_object *self, PyObject **args, Py
|
|||
PyObject *input;
|
||||
int final = 0;
|
||||
|
||||
if (!_PyArg_ParseStack(args, nargs, kwnames, &_parser,
|
||||
if (!_PyArg_ParseStackAndKeywords(args, nargs, kwnames, &_parser,
|
||||
&input, &final)) {
|
||||
goto exit;
|
||||
}
|
||||
|
|
|
@ -31,7 +31,7 @@ _multibytecodec_MultibyteCodec_encode(MultibyteCodecObject *self, PyObject **arg
|
|||
PyObject *input;
|
||||
const char *errors = NULL;
|
||||
|
||||
if (!_PyArg_ParseStack(args, nargs, kwnames, &_parser,
|
||||
if (!_PyArg_ParseStackAndKeywords(args, nargs, kwnames, &_parser,
|
||||
&input, &errors)) {
|
||||
goto exit;
|
||||
}
|
||||
|
@ -69,7 +69,7 @@ _multibytecodec_MultibyteCodec_decode(MultibyteCodecObject *self, PyObject **arg
|
|||
Py_buffer input = {NULL, NULL};
|
||||
const char *errors = NULL;
|
||||
|
||||
if (!_PyArg_ParseStack(args, nargs, kwnames, &_parser,
|
||||
if (!_PyArg_ParseStackAndKeywords(args, nargs, kwnames, &_parser,
|
||||
&input, &errors)) {
|
||||
goto exit;
|
||||
}
|
||||
|
@ -106,7 +106,7 @@ _multibytecodec_MultibyteIncrementalEncoder_encode(MultibyteIncrementalEncoderOb
|
|||
PyObject *input;
|
||||
int final = 0;
|
||||
|
||||
if (!_PyArg_ParseStack(args, nargs, kwnames, &_parser,
|
||||
if (!_PyArg_ParseStackAndKeywords(args, nargs, kwnames, &_parser,
|
||||
&input, &final)) {
|
||||
goto exit;
|
||||
}
|
||||
|
@ -155,7 +155,7 @@ _multibytecodec_MultibyteIncrementalDecoder_decode(MultibyteIncrementalDecoderOb
|
|||
Py_buffer input = {NULL, NULL};
|
||||
int final = 0;
|
||||
|
||||
if (!_PyArg_ParseStack(args, nargs, kwnames, &_parser,
|
||||
if (!_PyArg_ParseStackAndKeywords(args, nargs, kwnames, &_parser,
|
||||
&input, &final)) {
|
||||
goto exit;
|
||||
}
|
||||
|
|
|
@ -281,7 +281,7 @@ _asyncio_Task_current_task(PyTypeObject *type, PyObject **args, Py_ssize_t nargs
|
|||
static _PyArg_Parser _parser = {"|O:current_task", _keywords, 0};
|
||||
PyObject *loop = Py_None;
|
||||
|
||||
if (!_PyArg_ParseStack(args, nargs, kwnames, &_parser,
|
||||
if (!_PyArg_ParseStackAndKeywords(args, nargs, kwnames, &_parser,
|
||||
&loop)) {
|
||||
goto exit;
|
||||
}
|
||||
|
@ -313,7 +313,7 @@ _asyncio_Task_all_tasks(PyTypeObject *type, PyObject **args, Py_ssize_t nargs, P
|
|||
static _PyArg_Parser _parser = {"|O:all_tasks", _keywords, 0};
|
||||
PyObject *loop = Py_None;
|
||||
|
||||
if (!_PyArg_ParseStack(args, nargs, kwnames, &_parser,
|
||||
if (!_PyArg_ParseStackAndKeywords(args, nargs, kwnames, &_parser,
|
||||
&loop)) {
|
||||
goto exit;
|
||||
}
|
||||
|
@ -413,7 +413,7 @@ _asyncio_Task_get_stack(TaskObj *self, PyObject **args, Py_ssize_t nargs, PyObje
|
|||
static _PyArg_Parser _parser = {"|$O:get_stack", _keywords, 0};
|
||||
PyObject *limit = Py_None;
|
||||
|
||||
if (!_PyArg_ParseStack(args, nargs, kwnames, &_parser,
|
||||
if (!_PyArg_ParseStackAndKeywords(args, nargs, kwnames, &_parser,
|
||||
&limit)) {
|
||||
goto exit;
|
||||
}
|
||||
|
@ -451,7 +451,7 @@ _asyncio_Task_print_stack(TaskObj *self, PyObject **args, Py_ssize_t nargs, PyOb
|
|||
PyObject *limit = Py_None;
|
||||
PyObject *file = Py_None;
|
||||
|
||||
if (!_PyArg_ParseStack(args, nargs, kwnames, &_parser,
|
||||
if (!_PyArg_ParseStackAndKeywords(args, nargs, kwnames, &_parser,
|
||||
&limit, &file)) {
|
||||
goto exit;
|
||||
}
|
||||
|
@ -480,7 +480,7 @@ _asyncio_Task__step(TaskObj *self, PyObject **args, Py_ssize_t nargs, PyObject *
|
|||
static _PyArg_Parser _parser = {"|O:_step", _keywords, 0};
|
||||
PyObject *exc = Py_None;
|
||||
|
||||
if (!_PyArg_ParseStack(args, nargs, kwnames, &_parser,
|
||||
if (!_PyArg_ParseStackAndKeywords(args, nargs, kwnames, &_parser,
|
||||
&exc)) {
|
||||
goto exit;
|
||||
}
|
||||
|
@ -509,7 +509,7 @@ _asyncio_Task__wakeup(TaskObj *self, PyObject **args, Py_ssize_t nargs, PyObject
|
|||
static _PyArg_Parser _parser = {"O:_wakeup", _keywords, 0};
|
||||
PyObject *fut;
|
||||
|
||||
if (!_PyArg_ParseStack(args, nargs, kwnames, &_parser,
|
||||
if (!_PyArg_ParseStackAndKeywords(args, nargs, kwnames, &_parser,
|
||||
&fut)) {
|
||||
goto exit;
|
||||
}
|
||||
|
|
|
@ -131,7 +131,7 @@ _bz2_BZ2Decompressor_decompress(BZ2Decompressor *self, PyObject **args, Py_ssize
|
|||
Py_buffer data = {NULL, NULL};
|
||||
Py_ssize_t max_length = -1;
|
||||
|
||||
if (!_PyArg_ParseStack(args, nargs, kwnames, &_parser,
|
||||
if (!_PyArg_ParseStackAndKeywords(args, nargs, kwnames, &_parser,
|
||||
&data, &max_length)) {
|
||||
goto exit;
|
||||
}
|
||||
|
|
|
@ -72,7 +72,7 @@ _codecs_encode(PyObject *module, PyObject **args, Py_ssize_t nargs, PyObject *kw
|
|||
const char *encoding = NULL;
|
||||
const char *errors = NULL;
|
||||
|
||||
if (!_PyArg_ParseStack(args, nargs, kwnames, &_parser,
|
||||
if (!_PyArg_ParseStackAndKeywords(args, nargs, kwnames, &_parser,
|
||||
&obj, &encoding, &errors)) {
|
||||
goto exit;
|
||||
}
|
||||
|
@ -111,7 +111,7 @@ _codecs_decode(PyObject *module, PyObject **args, Py_ssize_t nargs, PyObject *kw
|
|||
const char *encoding = NULL;
|
||||
const char *errors = NULL;
|
||||
|
||||
if (!_PyArg_ParseStack(args, nargs, kwnames, &_parser,
|
||||
if (!_PyArg_ParseStackAndKeywords(args, nargs, kwnames, &_parser,
|
||||
&obj, &encoding, &errors)) {
|
||||
goto exit;
|
||||
}
|
||||
|
|
|
@ -28,7 +28,7 @@ datetime_datetime_now(PyTypeObject *type, PyObject **args, Py_ssize_t nargs, PyO
|
|||
static _PyArg_Parser _parser = {"|O:now", _keywords, 0};
|
||||
PyObject *tz = Py_None;
|
||||
|
||||
if (!_PyArg_ParseStack(args, nargs, kwnames, &_parser,
|
||||
if (!_PyArg_ParseStackAndKeywords(args, nargs, kwnames, &_parser,
|
||||
&tz)) {
|
||||
goto exit;
|
||||
}
|
||||
|
|
|
@ -152,7 +152,7 @@ _elementtree_Element_find(ElementObject *self, PyObject **args, Py_ssize_t nargs
|
|||
PyObject *path;
|
||||
PyObject *namespaces = Py_None;
|
||||
|
||||
if (!_PyArg_ParseStack(args, nargs, kwnames, &_parser,
|
||||
if (!_PyArg_ParseStackAndKeywords(args, nargs, kwnames, &_parser,
|
||||
&path, &namespaces)) {
|
||||
goto exit;
|
||||
}
|
||||
|
@ -185,7 +185,7 @@ _elementtree_Element_findtext(ElementObject *self, PyObject **args, Py_ssize_t n
|
|||
PyObject *default_value = Py_None;
|
||||
PyObject *namespaces = Py_None;
|
||||
|
||||
if (!_PyArg_ParseStack(args, nargs, kwnames, &_parser,
|
||||
if (!_PyArg_ParseStackAndKeywords(args, nargs, kwnames, &_parser,
|
||||
&path, &default_value, &namespaces)) {
|
||||
goto exit;
|
||||
}
|
||||
|
@ -216,7 +216,7 @@ _elementtree_Element_findall(ElementObject *self, PyObject **args, Py_ssize_t na
|
|||
PyObject *path;
|
||||
PyObject *namespaces = Py_None;
|
||||
|
||||
if (!_PyArg_ParseStack(args, nargs, kwnames, &_parser,
|
||||
if (!_PyArg_ParseStackAndKeywords(args, nargs, kwnames, &_parser,
|
||||
&path, &namespaces)) {
|
||||
goto exit;
|
||||
}
|
||||
|
@ -247,7 +247,7 @@ _elementtree_Element_iterfind(ElementObject *self, PyObject **args, Py_ssize_t n
|
|||
PyObject *path;
|
||||
PyObject *namespaces = Py_None;
|
||||
|
||||
if (!_PyArg_ParseStack(args, nargs, kwnames, &_parser,
|
||||
if (!_PyArg_ParseStackAndKeywords(args, nargs, kwnames, &_parser,
|
||||
&path, &namespaces)) {
|
||||
goto exit;
|
||||
}
|
||||
|
@ -278,7 +278,7 @@ _elementtree_Element_get(ElementObject *self, PyObject **args, Py_ssize_t nargs,
|
|||
PyObject *key;
|
||||
PyObject *default_value = Py_None;
|
||||
|
||||
if (!_PyArg_ParseStack(args, nargs, kwnames, &_parser,
|
||||
if (!_PyArg_ParseStackAndKeywords(args, nargs, kwnames, &_parser,
|
||||
&key, &default_value)) {
|
||||
goto exit;
|
||||
}
|
||||
|
@ -324,7 +324,7 @@ _elementtree_Element_iter(ElementObject *self, PyObject **args, Py_ssize_t nargs
|
|||
static _PyArg_Parser _parser = {"|O:iter", _keywords, 0};
|
||||
PyObject *tag = Py_None;
|
||||
|
||||
if (!_PyArg_ParseStack(args, nargs, kwnames, &_parser,
|
||||
if (!_PyArg_ParseStackAndKeywords(args, nargs, kwnames, &_parser,
|
||||
&tag)) {
|
||||
goto exit;
|
||||
}
|
||||
|
|
|
@ -97,7 +97,7 @@ _lzma_LZMADecompressor_decompress(Decompressor *self, PyObject **args, Py_ssize_
|
|||
Py_buffer data = {NULL, NULL};
|
||||
Py_ssize_t max_length = -1;
|
||||
|
||||
if (!_PyArg_ParseStack(args, nargs, kwnames, &_parser,
|
||||
if (!_PyArg_ParseStackAndKeywords(args, nargs, kwnames, &_parser,
|
||||
&data, &max_length)) {
|
||||
goto exit;
|
||||
}
|
||||
|
|
|
@ -402,7 +402,7 @@ _pickle_dump(PyObject *module, PyObject **args, Py_ssize_t nargs, PyObject *kwna
|
|||
PyObject *protocol = NULL;
|
||||
int fix_imports = 1;
|
||||
|
||||
if (!_PyArg_ParseStack(args, nargs, kwnames, &_parser,
|
||||
if (!_PyArg_ParseStackAndKeywords(args, nargs, kwnames, &_parser,
|
||||
&obj, &file, &protocol, &fix_imports)) {
|
||||
goto exit;
|
||||
}
|
||||
|
@ -447,7 +447,7 @@ _pickle_dumps(PyObject *module, PyObject **args, Py_ssize_t nargs, PyObject *kwn
|
|||
PyObject *protocol = NULL;
|
||||
int fix_imports = 1;
|
||||
|
||||
if (!_PyArg_ParseStack(args, nargs, kwnames, &_parser,
|
||||
if (!_PyArg_ParseStackAndKeywords(args, nargs, kwnames, &_parser,
|
||||
&obj, &protocol, &fix_imports)) {
|
||||
goto exit;
|
||||
}
|
||||
|
@ -504,7 +504,7 @@ _pickle_load(PyObject *module, PyObject **args, Py_ssize_t nargs, PyObject *kwna
|
|||
const char *encoding = "ASCII";
|
||||
const char *errors = "strict";
|
||||
|
||||
if (!_PyArg_ParseStack(args, nargs, kwnames, &_parser,
|
||||
if (!_PyArg_ParseStackAndKeywords(args, nargs, kwnames, &_parser,
|
||||
&file, &fix_imports, &encoding, &errors)) {
|
||||
goto exit;
|
||||
}
|
||||
|
@ -552,7 +552,7 @@ _pickle_loads(PyObject *module, PyObject **args, Py_ssize_t nargs, PyObject *kwn
|
|||
const char *encoding = "ASCII";
|
||||
const char *errors = "strict";
|
||||
|
||||
if (!_PyArg_ParseStack(args, nargs, kwnames, &_parser,
|
||||
if (!_PyArg_ParseStackAndKeywords(args, nargs, kwnames, &_parser,
|
||||
&data, &fix_imports, &encoding, &errors)) {
|
||||
goto exit;
|
||||
}
|
||||
|
|
30
third_party/python/Modules/clinic/_sre.inc
vendored
30
third_party/python/Modules/clinic/_sre.inc
vendored
|
@ -88,7 +88,7 @@ _sre_SRE_Pattern_match(PatternObject *self, PyObject **args, Py_ssize_t nargs, P
|
|||
Py_ssize_t endpos = PY_SSIZE_T_MAX;
|
||||
PyObject *pattern = NULL;
|
||||
|
||||
if (!_PyArg_ParseStack(args, nargs, kwnames, &_parser,
|
||||
if (!_PyArg_ParseStackAndKeywords(args, nargs, kwnames, &_parser,
|
||||
&string, &pos, &endpos, &pattern)) {
|
||||
goto exit;
|
||||
}
|
||||
|
@ -124,7 +124,7 @@ _sre_SRE_Pattern_fullmatch(PatternObject *self, PyObject **args, Py_ssize_t narg
|
|||
Py_ssize_t endpos = PY_SSIZE_T_MAX;
|
||||
PyObject *pattern = NULL;
|
||||
|
||||
if (!_PyArg_ParseStack(args, nargs, kwnames, &_parser,
|
||||
if (!_PyArg_ParseStackAndKeywords(args, nargs, kwnames, &_parser,
|
||||
&string, &pos, &endpos, &pattern)) {
|
||||
goto exit;
|
||||
}
|
||||
|
@ -162,7 +162,7 @@ _sre_SRE_Pattern_search(PatternObject *self, PyObject **args, Py_ssize_t nargs,
|
|||
Py_ssize_t endpos = PY_SSIZE_T_MAX;
|
||||
PyObject *pattern = NULL;
|
||||
|
||||
if (!_PyArg_ParseStack(args, nargs, kwnames, &_parser,
|
||||
if (!_PyArg_ParseStackAndKeywords(args, nargs, kwnames, &_parser,
|
||||
&string, &pos, &endpos, &pattern)) {
|
||||
goto exit;
|
||||
}
|
||||
|
@ -198,7 +198,7 @@ _sre_SRE_Pattern_findall(PatternObject *self, PyObject **args, Py_ssize_t nargs,
|
|||
Py_ssize_t endpos = PY_SSIZE_T_MAX;
|
||||
PyObject *source = NULL;
|
||||
|
||||
if (!_PyArg_ParseStack(args, nargs, kwnames, &_parser,
|
||||
if (!_PyArg_ParseStackAndKeywords(args, nargs, kwnames, &_parser,
|
||||
&string, &pos, &endpos, &source)) {
|
||||
goto exit;
|
||||
}
|
||||
|
@ -233,7 +233,7 @@ _sre_SRE_Pattern_finditer(PatternObject *self, PyObject **args, Py_ssize_t nargs
|
|||
Py_ssize_t pos = 0;
|
||||
Py_ssize_t endpos = PY_SSIZE_T_MAX;
|
||||
|
||||
if (!_PyArg_ParseStack(args, nargs, kwnames, &_parser,
|
||||
if (!_PyArg_ParseStackAndKeywords(args, nargs, kwnames, &_parser,
|
||||
&string, &pos, &endpos)) {
|
||||
goto exit;
|
||||
}
|
||||
|
@ -265,7 +265,7 @@ _sre_SRE_Pattern_scanner(PatternObject *self, PyObject **args, Py_ssize_t nargs,
|
|||
Py_ssize_t pos = 0;
|
||||
Py_ssize_t endpos = PY_SSIZE_T_MAX;
|
||||
|
||||
if (!_PyArg_ParseStack(args, nargs, kwnames, &_parser,
|
||||
if (!_PyArg_ParseStackAndKeywords(args, nargs, kwnames, &_parser,
|
||||
&string, &pos, &endpos)) {
|
||||
goto exit;
|
||||
}
|
||||
|
@ -298,7 +298,7 @@ _sre_SRE_Pattern_split(PatternObject *self, PyObject **args, Py_ssize_t nargs, P
|
|||
Py_ssize_t maxsplit = 0;
|
||||
PyObject *source = NULL;
|
||||
|
||||
if (!_PyArg_ParseStack(args, nargs, kwnames, &_parser,
|
||||
if (!_PyArg_ParseStackAndKeywords(args, nargs, kwnames, &_parser,
|
||||
&string, &maxsplit, &source)) {
|
||||
goto exit;
|
||||
}
|
||||
|
@ -331,7 +331,7 @@ _sre_SRE_Pattern_sub(PatternObject *self, PyObject **args, Py_ssize_t nargs, PyO
|
|||
PyObject *string;
|
||||
Py_ssize_t count = 0;
|
||||
|
||||
if (!_PyArg_ParseStack(args, nargs, kwnames, &_parser,
|
||||
if (!_PyArg_ParseStackAndKeywords(args, nargs, kwnames, &_parser,
|
||||
&repl, &string, &count)) {
|
||||
goto exit;
|
||||
}
|
||||
|
@ -364,7 +364,7 @@ _sre_SRE_Pattern_subn(PatternObject *self, PyObject **args, Py_ssize_t nargs, Py
|
|||
PyObject *string;
|
||||
Py_ssize_t count = 0;
|
||||
|
||||
if (!_PyArg_ParseStack(args, nargs, kwnames, &_parser,
|
||||
if (!_PyArg_ParseStackAndKeywords(args, nargs, kwnames, &_parser,
|
||||
&repl, &string, &count)) {
|
||||
goto exit;
|
||||
}
|
||||
|
@ -410,7 +410,7 @@ _sre_SRE_Pattern___deepcopy__(PatternObject *self, PyObject **args, Py_ssize_t n
|
|||
static _PyArg_Parser _parser = {"O:__deepcopy__", _keywords, 0};
|
||||
PyObject *memo;
|
||||
|
||||
if (!_PyArg_ParseStack(args, nargs, kwnames, &_parser,
|
||||
if (!_PyArg_ParseStackAndKeywords(args, nargs, kwnames, &_parser,
|
||||
&memo)) {
|
||||
goto exit;
|
||||
}
|
||||
|
@ -447,7 +447,7 @@ _sre_compile(PyObject *module, PyObject **args, Py_ssize_t nargs, PyObject *kwna
|
|||
PyObject *groupindex;
|
||||
PyObject *indexgroup;
|
||||
|
||||
if (!_PyArg_ParseStack(args, nargs, kwnames, &_parser,
|
||||
if (!_PyArg_ParseStackAndKeywords(args, nargs, kwnames, &_parser,
|
||||
&pattern, &flags, &PyList_Type, &code, &groups, &groupindex, &indexgroup)) {
|
||||
goto exit;
|
||||
}
|
||||
|
@ -477,7 +477,7 @@ _sre_SRE_Match_expand(MatchObject *self, PyObject **args, Py_ssize_t nargs, PyOb
|
|||
static _PyArg_Parser _parser = {"O:expand", _keywords, 0};
|
||||
PyObject *template;
|
||||
|
||||
if (!_PyArg_ParseStack(args, nargs, kwnames, &_parser,
|
||||
if (!_PyArg_ParseStackAndKeywords(args, nargs, kwnames, &_parser,
|
||||
&template)) {
|
||||
goto exit;
|
||||
}
|
||||
|
@ -510,7 +510,7 @@ _sre_SRE_Match_groups(MatchObject *self, PyObject **args, Py_ssize_t nargs, PyOb
|
|||
static _PyArg_Parser _parser = {"|O:groups", _keywords, 0};
|
||||
PyObject *default_value = Py_None;
|
||||
|
||||
if (!_PyArg_ParseStack(args, nargs, kwnames, &_parser,
|
||||
if (!_PyArg_ParseStackAndKeywords(args, nargs, kwnames, &_parser,
|
||||
&default_value)) {
|
||||
goto exit;
|
||||
}
|
||||
|
@ -543,7 +543,7 @@ _sre_SRE_Match_groupdict(MatchObject *self, PyObject **args, Py_ssize_t nargs, P
|
|||
static _PyArg_Parser _parser = {"|O:groupdict", _keywords, 0};
|
||||
PyObject *default_value = Py_None;
|
||||
|
||||
if (!_PyArg_ParseStack(args, nargs, kwnames, &_parser,
|
||||
if (!_PyArg_ParseStackAndKeywords(args, nargs, kwnames, &_parser,
|
||||
&default_value)) {
|
||||
goto exit;
|
||||
}
|
||||
|
@ -686,7 +686,7 @@ _sre_SRE_Match___deepcopy__(MatchObject *self, PyObject **args, Py_ssize_t nargs
|
|||
static _PyArg_Parser _parser = {"O:__deepcopy__", _keywords, 0};
|
||||
PyObject *memo;
|
||||
|
||||
if (!_PyArg_ParseStack(args, nargs, kwnames, &_parser,
|
||||
if (!_PyArg_ParseStackAndKeywords(args, nargs, kwnames, &_parser,
|
||||
&memo)) {
|
||||
goto exit;
|
||||
}
|
||||
|
|
16
third_party/python/Modules/clinic/_ssl.inc
vendored
16
third_party/python/Modules/clinic/_ssl.inc
vendored
|
@ -504,7 +504,7 @@ _ssl__SSLContext_load_cert_chain(PySSLContext *self, PyObject **args, Py_ssize_t
|
|||
PyObject *keyfile = NULL;
|
||||
PyObject *password = NULL;
|
||||
|
||||
if (!_PyArg_ParseStack(args, nargs, kwnames, &_parser,
|
||||
if (!_PyArg_ParseStackAndKeywords(args, nargs, kwnames, &_parser,
|
||||
&certfile, &keyfile, &password)) {
|
||||
goto exit;
|
||||
}
|
||||
|
@ -538,7 +538,7 @@ _ssl__SSLContext_load_verify_locations(PySSLContext *self, PyObject **args, Py_s
|
|||
PyObject *capath = NULL;
|
||||
PyObject *cadata = NULL;
|
||||
|
||||
if (!_PyArg_ParseStack(args, nargs, kwnames, &_parser,
|
||||
if (!_PyArg_ParseStackAndKeywords(args, nargs, kwnames, &_parser,
|
||||
&cafile, &capath, &cadata)) {
|
||||
goto exit;
|
||||
}
|
||||
|
@ -578,7 +578,7 @@ _ssl__SSLContext__wrap_socket(PySSLContext *self, PyObject **args, Py_ssize_t na
|
|||
int server_side;
|
||||
PyObject *hostname_obj = Py_None;
|
||||
|
||||
if (!_PyArg_ParseStack(args, nargs, kwnames, &_parser,
|
||||
if (!_PyArg_ParseStackAndKeywords(args, nargs, kwnames, &_parser,
|
||||
PySocketModule.Sock_Type, &sock, &server_side, &hostname_obj)) {
|
||||
goto exit;
|
||||
}
|
||||
|
@ -613,7 +613,7 @@ _ssl__SSLContext__wrap_bio(PySSLContext *self, PyObject **args, Py_ssize_t nargs
|
|||
int server_side;
|
||||
PyObject *hostname_obj = Py_None;
|
||||
|
||||
if (!_PyArg_ParseStack(args, nargs, kwnames, &_parser,
|
||||
if (!_PyArg_ParseStackAndKeywords(args, nargs, kwnames, &_parser,
|
||||
&PySSLMemoryBIO_Type, &incoming, &PySSLMemoryBIO_Type, &outgoing, &server_side, &hostname_obj)) {
|
||||
goto exit;
|
||||
}
|
||||
|
@ -732,7 +732,7 @@ _ssl__SSLContext_get_ca_certs(PySSLContext *self, PyObject **args, Py_ssize_t na
|
|||
static _PyArg_Parser _parser = {"|p:get_ca_certs", _keywords, 0};
|
||||
int binary_form = 0;
|
||||
|
||||
if (!_PyArg_ParseStack(args, nargs, kwnames, &_parser,
|
||||
if (!_PyArg_ParseStackAndKeywords(args, nargs, kwnames, &_parser,
|
||||
&binary_form)) {
|
||||
goto exit;
|
||||
}
|
||||
|
@ -1044,7 +1044,7 @@ _ssl_txt2obj(PyObject *module, PyObject **args, Py_ssize_t nargs, PyObject *kwna
|
|||
const char *txt;
|
||||
int name = 0;
|
||||
|
||||
if (!_PyArg_ParseStack(args, nargs, kwnames, &_parser,
|
||||
if (!_PyArg_ParseStackAndKeywords(args, nargs, kwnames, &_parser,
|
||||
&txt, &name)) {
|
||||
goto exit;
|
||||
}
|
||||
|
@ -1109,7 +1109,7 @@ _ssl_enum_certificates(PyObject *module, PyObject **args, Py_ssize_t nargs, PyOb
|
|||
static _PyArg_Parser _parser = {"s:enum_certificates", _keywords, 0};
|
||||
const char *store_name;
|
||||
|
||||
if (!_PyArg_ParseStack(args, nargs, kwnames, &_parser,
|
||||
if (!_PyArg_ParseStackAndKeywords(args, nargs, kwnames, &_parser,
|
||||
&store_name)) {
|
||||
goto exit;
|
||||
}
|
||||
|
@ -1148,7 +1148,7 @@ _ssl_enum_crls(PyObject *module, PyObject **args, Py_ssize_t nargs, PyObject *kw
|
|||
static _PyArg_Parser _parser = {"s:enum_crls", _keywords, 0};
|
||||
const char *store_name;
|
||||
|
||||
if (!_PyArg_ParseStack(args, nargs, kwnames, &_parser,
|
||||
if (!_PyArg_ParseStackAndKeywords(args, nargs, kwnames, &_parser,
|
||||
&store_name)) {
|
||||
goto exit;
|
||||
}
|
||||
|
|
|
@ -111,7 +111,7 @@ _winapi_ConnectNamedPipe(PyObject *module, PyObject **args, Py_ssize_t nargs, Py
|
|||
int64_t handle;
|
||||
int use_overlapped = 0;
|
||||
|
||||
if (!_PyArg_ParseStack(args, nargs, kwnames, &_parser,
|
||||
if (!_PyArg_ParseStackAndKeywords(args, nargs, kwnames, &_parser,
|
||||
&handle, &use_overlapped)) {
|
||||
goto exit;
|
||||
}
|
||||
|
@ -685,7 +685,7 @@ _winapi_ReadFile(PyObject *module, PyObject **args, Py_ssize_t nargs, PyObject *
|
|||
uint32_t size;
|
||||
int use_overlapped = 0;
|
||||
|
||||
if (!_PyArg_ParseStack(args, nargs, kwnames, &_parser,
|
||||
if (!_PyArg_ParseStackAndKeywords(args, nargs, kwnames, &_parser,
|
||||
&handle, &size, &use_overlapped)) {
|
||||
goto exit;
|
||||
}
|
||||
|
@ -879,7 +879,7 @@ _winapi_WriteFile(PyObject *module, PyObject **args, Py_ssize_t nargs, PyObject
|
|||
PyObject *buffer;
|
||||
int use_overlapped = 0;
|
||||
|
||||
if (!_PyArg_ParseStack(args, nargs, kwnames, &_parser,
|
||||
if (!_PyArg_ParseStackAndKeywords(args, nargs, kwnames, &_parser,
|
||||
&handle, &buffer, &use_overlapped)) {
|
||||
goto exit;
|
||||
}
|
||||
|
|
|
@ -118,7 +118,7 @@ binascii_b2a_base64(PyObject *module, PyObject **args, Py_ssize_t nargs, PyObjec
|
|||
Py_buffer data = {NULL, NULL};
|
||||
int newline = 1;
|
||||
|
||||
if (!_PyArg_ParseStack(args, nargs, kwnames, &_parser,
|
||||
if (!_PyArg_ParseStackAndKeywords(args, nargs, kwnames, &_parser,
|
||||
&data, &newline)) {
|
||||
goto exit;
|
||||
}
|
||||
|
@ -495,7 +495,7 @@ binascii_a2b_qp(PyObject *module, PyObject **args, Py_ssize_t nargs, PyObject *k
|
|||
Py_buffer data = {NULL, NULL};
|
||||
int header = 0;
|
||||
|
||||
if (!_PyArg_ParseStack(args, nargs, kwnames, &_parser,
|
||||
if (!_PyArg_ParseStackAndKeywords(args, nargs, kwnames, &_parser,
|
||||
ascii_buffer_converter, &data, &header)) {
|
||||
goto exit;
|
||||
}
|
||||
|
@ -537,7 +537,7 @@ binascii_b2a_qp(PyObject *module, PyObject **args, Py_ssize_t nargs, PyObject *k
|
|||
int istext = 1;
|
||||
int header = 0;
|
||||
|
||||
if (!_PyArg_ParseStack(args, nargs, kwnames, &_parser,
|
||||
if (!_PyArg_ParseStackAndKeywords(args, nargs, kwnames, &_parser,
|
||||
&data, "etabs, &istext, &header)) {
|
||||
goto exit;
|
||||
}
|
||||
|
|
|
@ -870,7 +870,7 @@ cmath_isclose(PyObject *module, PyObject **args, Py_ssize_t nargs, PyObject *kwn
|
|||
double abs_tol = 0.0;
|
||||
int _return_value;
|
||||
|
||||
if (!_PyArg_ParseStack(args, nargs, kwnames, &_parser,
|
||||
if (!_PyArg_ParseStackAndKeywords(args, nargs, kwnames, &_parser,
|
||||
&a, &b, &rel_tol, &abs_tol)) {
|
||||
goto exit;
|
||||
}
|
||||
|
|
|
@ -25,7 +25,7 @@ grp_getgrgid(PyObject *module, PyObject **args, Py_ssize_t nargs, PyObject *kwna
|
|||
static _PyArg_Parser _parser = {"O:getgrgid", _keywords, 0};
|
||||
PyObject *id;
|
||||
|
||||
if (!_PyArg_ParseStack(args, nargs, kwnames, &_parser,
|
||||
if (!_PyArg_ParseStackAndKeywords(args, nargs, kwnames, &_parser,
|
||||
&id)) {
|
||||
goto exit;
|
||||
}
|
||||
|
@ -57,7 +57,7 @@ grp_getgrnam(PyObject *module, PyObject **args, Py_ssize_t nargs, PyObject *kwna
|
|||
static _PyArg_Parser _parser = {"U:getgrnam", _keywords, 0};
|
||||
PyObject *name;
|
||||
|
||||
if (!_PyArg_ParseStack(args, nargs, kwnames, &_parser,
|
||||
if (!_PyArg_ParseStackAndKeywords(args, nargs, kwnames, &_parser,
|
||||
&name)) {
|
||||
goto exit;
|
||||
}
|
||||
|
|
126
third_party/python/Modules/clinic/posixmodule.inc
vendored
126
third_party/python/Modules/clinic/posixmodule.inc
vendored
|
@ -50,7 +50,7 @@ os_stat(PyObject *module, PyObject **args, Py_ssize_t nargs, PyObject *kwnames)
|
|||
int dir_fd = DEFAULT_DIR_FD;
|
||||
int follow_symlinks = 1;
|
||||
|
||||
if (!_PyArg_ParseStack(args, nargs, kwnames, &_parser,
|
||||
if (!_PyArg_ParseStackAndKeywords(args, nargs, kwnames, &_parser,
|
||||
path_converter, &path, FSTATAT_DIR_FD_CONVERTER, &dir_fd, &follow_symlinks)) {
|
||||
goto exit;
|
||||
}
|
||||
|
@ -87,7 +87,7 @@ os_lstat(PyObject *module, PyObject **args, Py_ssize_t nargs, PyObject *kwnames)
|
|||
path_t path = PATH_T_INITIALIZE("lstat", "path", 0, 0);
|
||||
int dir_fd = DEFAULT_DIR_FD;
|
||||
|
||||
if (!_PyArg_ParseStack(args, nargs, kwnames, &_parser,
|
||||
if (!_PyArg_ParseStackAndKeywords(args, nargs, kwnames, &_parser,
|
||||
path_converter, &path, FSTATAT_DIR_FD_CONVERTER, &dir_fd)) {
|
||||
goto exit;
|
||||
}
|
||||
|
@ -152,7 +152,7 @@ os_access(PyObject *module, PyObject **args, Py_ssize_t nargs, PyObject *kwnames
|
|||
int follow_symlinks = 1;
|
||||
int _return_value;
|
||||
|
||||
if (!_PyArg_ParseStack(args, nargs, kwnames, &_parser,
|
||||
if (!_PyArg_ParseStackAndKeywords(args, nargs, kwnames, &_parser,
|
||||
path_converter, &path, &mode, FACCESSAT_DIR_FD_CONVERTER, &dir_fd, &effective_ids, &follow_symlinks)) {
|
||||
goto exit;
|
||||
}
|
||||
|
@ -254,7 +254,7 @@ os_chdir(PyObject *module, PyObject **args, Py_ssize_t nargs, PyObject *kwnames)
|
|||
static _PyArg_Parser _parser = {"O&:chdir", _keywords, 0};
|
||||
path_t path = PATH_T_INITIALIZE("chdir", "path", 0, PATH_HAVE_FCHDIR);
|
||||
|
||||
if (!_PyArg_ParseStack(args, nargs, kwnames, &_parser,
|
||||
if (!_PyArg_ParseStackAndKeywords(args, nargs, kwnames, &_parser,
|
||||
path_converter, &path)) {
|
||||
goto exit;
|
||||
}
|
||||
|
@ -292,7 +292,7 @@ os_fchdir(PyObject *module, PyObject **args, Py_ssize_t nargs, PyObject *kwnames
|
|||
static _PyArg_Parser _parser = {"O&:fchdir", _keywords, 0};
|
||||
int fd;
|
||||
|
||||
if (!_PyArg_ParseStack(args, nargs, kwnames, &_parser,
|
||||
if (!_PyArg_ParseStackAndKeywords(args, nargs, kwnames, &_parser,
|
||||
fildes_converter, &fd)) {
|
||||
goto exit;
|
||||
}
|
||||
|
@ -348,7 +348,7 @@ os_chmod(PyObject *module, PyObject **args, Py_ssize_t nargs, PyObject *kwnames)
|
|||
int dir_fd = DEFAULT_DIR_FD;
|
||||
int follow_symlinks = 1;
|
||||
|
||||
if (!_PyArg_ParseStack(args, nargs, kwnames, &_parser,
|
||||
if (!_PyArg_ParseStackAndKeywords(args, nargs, kwnames, &_parser,
|
||||
path_converter, &path, &mode, FCHMODAT_DIR_FD_CONVERTER, &dir_fd, &follow_symlinks)) {
|
||||
goto exit;
|
||||
}
|
||||
|
@ -386,7 +386,7 @@ os_fchmod(PyObject *module, PyObject **args, Py_ssize_t nargs, PyObject *kwnames
|
|||
int fd;
|
||||
int mode;
|
||||
|
||||
if (!_PyArg_ParseStack(args, nargs, kwnames, &_parser,
|
||||
if (!_PyArg_ParseStackAndKeywords(args, nargs, kwnames, &_parser,
|
||||
&fd, &mode)) {
|
||||
goto exit;
|
||||
}
|
||||
|
@ -424,7 +424,7 @@ os_lchmod(PyObject *module, PyObject **args, Py_ssize_t nargs, PyObject *kwnames
|
|||
path_t path = PATH_T_INITIALIZE("lchmod", "path", 0, 0);
|
||||
int mode;
|
||||
|
||||
if (!_PyArg_ParseStack(args, nargs, kwnames, &_parser,
|
||||
if (!_PyArg_ParseStackAndKeywords(args, nargs, kwnames, &_parser,
|
||||
path_converter, &path, &mode)) {
|
||||
goto exit;
|
||||
}
|
||||
|
@ -470,7 +470,7 @@ os_chflags(PyObject *module, PyObject **args, Py_ssize_t nargs, PyObject *kwname
|
|||
unsigned long flags;
|
||||
int follow_symlinks = 1;
|
||||
|
||||
if (!_PyArg_ParseStack(args, nargs, kwnames, &_parser,
|
||||
if (!_PyArg_ParseStackAndKeywords(args, nargs, kwnames, &_parser,
|
||||
path_converter, &path, &flags, &follow_symlinks)) {
|
||||
goto exit;
|
||||
}
|
||||
|
@ -511,7 +511,7 @@ os_lchflags(PyObject *module, PyObject **args, Py_ssize_t nargs, PyObject *kwnam
|
|||
path_t path = PATH_T_INITIALIZE("lchflags", "path", 0, 0);
|
||||
unsigned long flags;
|
||||
|
||||
if (!_PyArg_ParseStack(args, nargs, kwnames, &_parser,
|
||||
if (!_PyArg_ParseStackAndKeywords(args, nargs, kwnames, &_parser,
|
||||
path_converter, &path, &flags)) {
|
||||
goto exit;
|
||||
}
|
||||
|
@ -548,7 +548,7 @@ os_chroot(PyObject *module, PyObject **args, Py_ssize_t nargs, PyObject *kwnames
|
|||
static _PyArg_Parser _parser = {"O&:chroot", _keywords, 0};
|
||||
path_t path = PATH_T_INITIALIZE("chroot", "path", 0, 0);
|
||||
|
||||
if (!_PyArg_ParseStack(args, nargs, kwnames, &_parser,
|
||||
if (!_PyArg_ParseStackAndKeywords(args, nargs, kwnames, &_parser,
|
||||
path_converter, &path)) {
|
||||
goto exit;
|
||||
}
|
||||
|
@ -585,7 +585,7 @@ os_fsync(PyObject *module, PyObject **args, Py_ssize_t nargs, PyObject *kwnames)
|
|||
static _PyArg_Parser _parser = {"O&:fsync", _keywords, 0};
|
||||
int fd;
|
||||
|
||||
if (!_PyArg_ParseStack(args, nargs, kwnames, &_parser,
|
||||
if (!_PyArg_ParseStackAndKeywords(args, nargs, kwnames, &_parser,
|
||||
fildes_converter, &fd)) {
|
||||
goto exit;
|
||||
}
|
||||
|
@ -641,7 +641,7 @@ os_fdatasync(PyObject *module, PyObject **args, Py_ssize_t nargs, PyObject *kwna
|
|||
static _PyArg_Parser _parser = {"O&:fdatasync", _keywords, 0};
|
||||
int fd;
|
||||
|
||||
if (!_PyArg_ParseStack(args, nargs, kwnames, &_parser,
|
||||
if (!_PyArg_ParseStackAndKeywords(args, nargs, kwnames, &_parser,
|
||||
fildes_converter, &fd)) {
|
||||
goto exit;
|
||||
}
|
||||
|
@ -704,7 +704,7 @@ os_chown(PyObject *module, PyObject **args, Py_ssize_t nargs, PyObject *kwnames)
|
|||
int dir_fd = DEFAULT_DIR_FD;
|
||||
int follow_symlinks = 1;
|
||||
|
||||
if (!_PyArg_ParseStack(args, nargs, kwnames, &_parser,
|
||||
if (!_PyArg_ParseStackAndKeywords(args, nargs, kwnames, &_parser,
|
||||
path_converter, &path, _Py_Uid_Converter, &uid, _Py_Gid_Converter, &gid, FCHOWNAT_DIR_FD_CONVERTER, &dir_fd, &follow_symlinks)) {
|
||||
goto exit;
|
||||
}
|
||||
|
@ -745,7 +745,7 @@ os_fchown(PyObject *module, PyObject **args, Py_ssize_t nargs, PyObject *kwnames
|
|||
uid_t uid;
|
||||
gid_t gid;
|
||||
|
||||
if (!_PyArg_ParseStack(args, nargs, kwnames, &_parser,
|
||||
if (!_PyArg_ParseStackAndKeywords(args, nargs, kwnames, &_parser,
|
||||
&fd, _Py_Uid_Converter, &uid, _Py_Gid_Converter, &gid)) {
|
||||
goto exit;
|
||||
}
|
||||
|
@ -784,7 +784,7 @@ os_lchown(PyObject *module, PyObject **args, Py_ssize_t nargs, PyObject *kwnames
|
|||
uid_t uid;
|
||||
gid_t gid;
|
||||
|
||||
if (!_PyArg_ParseStack(args, nargs, kwnames, &_parser,
|
||||
if (!_PyArg_ParseStackAndKeywords(args, nargs, kwnames, &_parser,
|
||||
path_converter, &path, _Py_Uid_Converter, &uid, _Py_Gid_Converter, &gid)) {
|
||||
goto exit;
|
||||
}
|
||||
|
@ -873,7 +873,7 @@ os_link(PyObject *module, PyObject **args, Py_ssize_t nargs, PyObject *kwnames)
|
|||
int dst_dir_fd = DEFAULT_DIR_FD;
|
||||
int follow_symlinks = 1;
|
||||
|
||||
if (!_PyArg_ParseStack(args, nargs, kwnames, &_parser,
|
||||
if (!_PyArg_ParseStackAndKeywords(args, nargs, kwnames, &_parser,
|
||||
path_converter, &src, path_converter, &dst, dir_fd_converter, &src_dir_fd, dir_fd_converter, &dst_dir_fd, &follow_symlinks)) {
|
||||
goto exit;
|
||||
}
|
||||
|
@ -921,7 +921,7 @@ os_listdir(PyObject *module, PyObject **args, Py_ssize_t nargs, PyObject *kwname
|
|||
static _PyArg_Parser _parser = {"|O&:listdir", _keywords, 0};
|
||||
path_t path = PATH_T_INITIALIZE("listdir", "path", 1, PATH_HAVE_FDOPENDIR);
|
||||
|
||||
if (!_PyArg_ParseStack(args, nargs, kwnames, &_parser,
|
||||
if (!_PyArg_ParseStackAndKeywords(args, nargs, kwnames, &_parser,
|
||||
path_converter, &path)) {
|
||||
goto exit;
|
||||
}
|
||||
|
@ -1042,7 +1042,7 @@ os__getvolumepathname(PyObject *module, PyObject **args, Py_ssize_t nargs, PyObj
|
|||
static const char * const _keywords[] = {"path", NULL};
|
||||
static _PyArg_Parser _parser = {"U:_getvolumepathname", _keywords, 0};
|
||||
PyObject *path;
|
||||
if (!_PyArg_ParseStack(args, nargs, kwnames, &_parser,
|
||||
if (!_PyArg_ParseStackAndKeywords(args, nargs, kwnames, &_parser,
|
||||
&path)) {
|
||||
goto exit;
|
||||
}
|
||||
|
@ -1080,7 +1080,7 @@ os_mkdir(PyObject *module, PyObject **args, Py_ssize_t nargs, PyObject *kwnames)
|
|||
int mode = 511;
|
||||
int dir_fd = DEFAULT_DIR_FD;
|
||||
|
||||
if (!_PyArg_ParseStack(args, nargs, kwnames, &_parser,
|
||||
if (!_PyArg_ParseStackAndKeywords(args, nargs, kwnames, &_parser,
|
||||
path_converter, &path, &mode, MKDIRAT_DIR_FD_CONVERTER, &dir_fd)) {
|
||||
goto exit;
|
||||
}
|
||||
|
@ -1147,7 +1147,7 @@ os_getpriority(PyObject *module, PyObject **args, Py_ssize_t nargs, PyObject *kw
|
|||
int which;
|
||||
int who;
|
||||
|
||||
if (!_PyArg_ParseStack(args, nargs, kwnames, &_parser,
|
||||
if (!_PyArg_ParseStackAndKeywords(args, nargs, kwnames, &_parser,
|
||||
&which, &who)) {
|
||||
goto exit;
|
||||
}
|
||||
|
@ -1183,7 +1183,7 @@ os_setpriority(PyObject *module, PyObject **args, Py_ssize_t nargs, PyObject *kw
|
|||
int who;
|
||||
int priority;
|
||||
|
||||
if (!_PyArg_ParseStack(args, nargs, kwnames, &_parser,
|
||||
if (!_PyArg_ParseStackAndKeywords(args, nargs, kwnames, &_parser,
|
||||
&which, &who, &priority)) {
|
||||
goto exit;
|
||||
}
|
||||
|
@ -1225,7 +1225,7 @@ os_rename(PyObject *module, PyObject **args, Py_ssize_t nargs, PyObject *kwnames
|
|||
int src_dir_fd = DEFAULT_DIR_FD;
|
||||
int dst_dir_fd = DEFAULT_DIR_FD;
|
||||
|
||||
if (!_PyArg_ParseStack(args, nargs, kwnames, &_parser,
|
||||
if (!_PyArg_ParseStackAndKeywords(args, nargs, kwnames, &_parser,
|
||||
path_converter, &src, path_converter, &dst, dir_fd_converter, &src_dir_fd, dir_fd_converter, &dst_dir_fd)) {
|
||||
goto exit;
|
||||
}
|
||||
|
@ -1270,7 +1270,7 @@ os_replace(PyObject *module, PyObject **args, Py_ssize_t nargs, PyObject *kwname
|
|||
int src_dir_fd = DEFAULT_DIR_FD;
|
||||
int dst_dir_fd = DEFAULT_DIR_FD;
|
||||
|
||||
if (!_PyArg_ParseStack(args, nargs, kwnames, &_parser,
|
||||
if (!_PyArg_ParseStackAndKeywords(args, nargs, kwnames, &_parser,
|
||||
path_converter, &src, path_converter, &dst, dir_fd_converter, &src_dir_fd, dir_fd_converter, &dst_dir_fd)) {
|
||||
goto exit;
|
||||
}
|
||||
|
@ -1311,7 +1311,7 @@ os_rmdir(PyObject *module, PyObject **args, Py_ssize_t nargs, PyObject *kwnames)
|
|||
path_t path = PATH_T_INITIALIZE("rmdir", "path", 0, 0);
|
||||
int dir_fd = DEFAULT_DIR_FD;
|
||||
|
||||
if (!_PyArg_ParseStack(args, nargs, kwnames, &_parser,
|
||||
if (!_PyArg_ParseStackAndKeywords(args, nargs, kwnames, &_parser,
|
||||
path_converter, &path, UNLINKAT_DIR_FD_CONVERTER, &dir_fd)) {
|
||||
goto exit;
|
||||
}
|
||||
|
@ -1347,7 +1347,7 @@ os_system(PyObject *module, PyObject **args, Py_ssize_t nargs, PyObject *kwnames
|
|||
Py_UNICODE *command;
|
||||
long _return_value;
|
||||
|
||||
if (!_PyArg_ParseStack(args, nargs, kwnames, &_parser,
|
||||
if (!_PyArg_ParseStackAndKeywords(args, nargs, kwnames, &_parser,
|
||||
&command)) {
|
||||
goto exit;
|
||||
}
|
||||
|
@ -1386,7 +1386,7 @@ os_system(PyObject *module, PyObject **args, Py_ssize_t nargs, PyObject *kwnames
|
|||
PyObject *command = NULL;
|
||||
long _return_value;
|
||||
|
||||
if (!_PyArg_ParseStack(args, nargs, kwnames, &_parser,
|
||||
if (!_PyArg_ParseStackAndKeywords(args, nargs, kwnames, &_parser,
|
||||
PyUnicode_FSConverter, &command)) {
|
||||
goto exit;
|
||||
}
|
||||
|
@ -1458,7 +1458,7 @@ os_unlink(PyObject *module, PyObject **args, Py_ssize_t nargs, PyObject *kwnames
|
|||
path_t path = PATH_T_INITIALIZE("unlink", "path", 0, 0);
|
||||
int dir_fd = DEFAULT_DIR_FD;
|
||||
|
||||
if (!_PyArg_ParseStack(args, nargs, kwnames, &_parser,
|
||||
if (!_PyArg_ParseStackAndKeywords(args, nargs, kwnames, &_parser,
|
||||
path_converter, &path, UNLINKAT_DIR_FD_CONVERTER, &dir_fd)) {
|
||||
goto exit;
|
||||
}
|
||||
|
@ -1497,7 +1497,7 @@ os_remove(PyObject *module, PyObject **args, Py_ssize_t nargs, PyObject *kwnames
|
|||
path_t path = PATH_T_INITIALIZE("remove", "path", 0, 0);
|
||||
int dir_fd = DEFAULT_DIR_FD;
|
||||
|
||||
if (!_PyArg_ParseStack(args, nargs, kwnames, &_parser,
|
||||
if (!_PyArg_ParseStackAndKeywords(args, nargs, kwnames, &_parser,
|
||||
path_converter, &path, UNLINKAT_DIR_FD_CONVERTER, &dir_fd)) {
|
||||
goto exit;
|
||||
}
|
||||
|
@ -1583,7 +1583,7 @@ os_utime(PyObject *module, PyObject **args, Py_ssize_t nargs, PyObject *kwnames)
|
|||
int dir_fd = DEFAULT_DIR_FD;
|
||||
int follow_symlinks = 1;
|
||||
|
||||
if (!_PyArg_ParseStack(args, nargs, kwnames, &_parser,
|
||||
if (!_PyArg_ParseStackAndKeywords(args, nargs, kwnames, &_parser,
|
||||
path_converter, &path, ×, &ns, FUTIMENSAT_DIR_FD_CONVERTER, &dir_fd, &follow_symlinks)) {
|
||||
goto exit;
|
||||
}
|
||||
|
@ -1616,7 +1616,7 @@ os__exit(PyObject *module, PyObject **args, Py_ssize_t nargs, PyObject *kwnames)
|
|||
static _PyArg_Parser _parser = {"i:_exit", _keywords, 0};
|
||||
int status;
|
||||
|
||||
if (!_PyArg_ParseStack(args, nargs, kwnames, &_parser,
|
||||
if (!_PyArg_ParseStackAndKeywords(args, nargs, kwnames, &_parser,
|
||||
&status)) {
|
||||
goto exit;
|
||||
}
|
||||
|
@ -1698,7 +1698,7 @@ os_execve(PyObject *module, PyObject **args, Py_ssize_t nargs, PyObject *kwnames
|
|||
PyObject *argv;
|
||||
PyObject *env;
|
||||
|
||||
if (!_PyArg_ParseStack(args, nargs, kwnames, &_parser,
|
||||
if (!_PyArg_ParseStackAndKeywords(args, nargs, kwnames, &_parser,
|
||||
path_converter, &path, &argv, &env)) {
|
||||
goto exit;
|
||||
}
|
||||
|
@ -1875,7 +1875,7 @@ os_sched_get_priority_max(PyObject *module, PyObject **args, Py_ssize_t nargs, P
|
|||
static _PyArg_Parser _parser = {"i:sched_get_priority_max", _keywords, 0};
|
||||
int policy;
|
||||
|
||||
if (!_PyArg_ParseStack(args, nargs, kwnames, &_parser,
|
||||
if (!_PyArg_ParseStackAndKeywords(args, nargs, kwnames, &_parser,
|
||||
&policy)) {
|
||||
goto exit;
|
||||
}
|
||||
|
@ -1909,7 +1909,7 @@ os_sched_get_priority_min(PyObject *module, PyObject **args, Py_ssize_t nargs, P
|
|||
static _PyArg_Parser _parser = {"i:sched_get_priority_min", _keywords, 0};
|
||||
int policy;
|
||||
|
||||
if (!_PyArg_ParseStack(args, nargs, kwnames, &_parser,
|
||||
if (!_PyArg_ParseStackAndKeywords(args, nargs, kwnames, &_parser,
|
||||
&policy)) {
|
||||
goto exit;
|
||||
}
|
||||
|
@ -2405,7 +2405,7 @@ os_getpgid(PyObject *module, PyObject **args, Py_ssize_t nargs, PyObject *kwname
|
|||
static _PyArg_Parser _parser = {"" _Py_PARSE_PID ":getpgid", _keywords, 0};
|
||||
pid_t pid;
|
||||
|
||||
if (!_PyArg_ParseStack(args, nargs, kwnames, &_parser,
|
||||
if (!_PyArg_ParseStackAndKeywords(args, nargs, kwnames, &_parser,
|
||||
&pid)) {
|
||||
goto exit;
|
||||
}
|
||||
|
@ -2855,7 +2855,7 @@ os_wait3(PyObject *module, PyObject **args, Py_ssize_t nargs, PyObject *kwnames)
|
|||
static _PyArg_Parser _parser = {"i:wait3", _keywords, 0};
|
||||
int options;
|
||||
|
||||
if (!_PyArg_ParseStack(args, nargs, kwnames, &_parser,
|
||||
if (!_PyArg_ParseStackAndKeywords(args, nargs, kwnames, &_parser,
|
||||
&options)) {
|
||||
goto exit;
|
||||
}
|
||||
|
@ -2893,7 +2893,7 @@ os_wait4(PyObject *module, PyObject **args, Py_ssize_t nargs, PyObject *kwnames)
|
|||
pid_t pid;
|
||||
int options;
|
||||
|
||||
if (!_PyArg_ParseStack(args, nargs, kwnames, &_parser,
|
||||
if (!_PyArg_ParseStackAndKeywords(args, nargs, kwnames, &_parser,
|
||||
&pid, &options)) {
|
||||
goto exit;
|
||||
}
|
||||
|
@ -3087,7 +3087,7 @@ os_symlink(PyObject *module, PyObject **args, Py_ssize_t nargs, PyObject *kwname
|
|||
int target_is_directory = 0;
|
||||
int dir_fd = DEFAULT_DIR_FD;
|
||||
|
||||
if (!_PyArg_ParseStack(args, nargs, kwnames, &_parser,
|
||||
if (!_PyArg_ParseStackAndKeywords(args, nargs, kwnames, &_parser,
|
||||
path_converter, &src, path_converter, &dst, &target_is_directory, SYMLINKAT_DIR_FD_CONVERTER, &dir_fd)) {
|
||||
goto exit;
|
||||
}
|
||||
|
@ -3309,7 +3309,7 @@ os_open(PyObject *module, PyObject **args, Py_ssize_t nargs, PyObject *kwnames)
|
|||
int dir_fd = DEFAULT_DIR_FD;
|
||||
int _return_value;
|
||||
|
||||
if (!_PyArg_ParseStack(args, nargs, kwnames, &_parser,
|
||||
if (!_PyArg_ParseStackAndKeywords(args, nargs, kwnames, &_parser,
|
||||
path_converter, &path, &flags, &mode, OPENAT_DIR_FD_CONVERTER, &dir_fd)) {
|
||||
goto exit;
|
||||
}
|
||||
|
@ -3346,7 +3346,7 @@ os_close(PyObject *module, PyObject **args, Py_ssize_t nargs, PyObject *kwnames)
|
|||
static _PyArg_Parser _parser = {"i:close", _keywords, 0};
|
||||
int fd;
|
||||
|
||||
if (!_PyArg_ParseStack(args, nargs, kwnames, &_parser,
|
||||
if (!_PyArg_ParseStackAndKeywords(args, nargs, kwnames, &_parser,
|
||||
&fd)) {
|
||||
goto exit;
|
||||
}
|
||||
|
@ -3439,7 +3439,7 @@ os_dup2(PyObject *module, PyObject **args, Py_ssize_t nargs, PyObject *kwnames)
|
|||
int fd2;
|
||||
int inheritable = 1;
|
||||
|
||||
if (!_PyArg_ParseStack(args, nargs, kwnames, &_parser,
|
||||
if (!_PyArg_ParseStackAndKeywords(args, nargs, kwnames, &_parser,
|
||||
&fd, &fd2, &inheritable)) {
|
||||
goto exit;
|
||||
}
|
||||
|
@ -3702,7 +3702,7 @@ os_fstat(PyObject *module, PyObject **args, Py_ssize_t nargs, PyObject *kwnames)
|
|||
static _PyArg_Parser _parser = {"i:fstat", _keywords, 0};
|
||||
int fd;
|
||||
|
||||
if (!_PyArg_ParseStack(args, nargs, kwnames, &_parser,
|
||||
if (!_PyArg_ParseStackAndKeywords(args, nargs, kwnames, &_parser,
|
||||
&fd)) {
|
||||
goto exit;
|
||||
}
|
||||
|
@ -3927,7 +3927,7 @@ os_mkfifo(PyObject *module, PyObject **args, Py_ssize_t nargs, PyObject *kwnames
|
|||
int mode = 438;
|
||||
int dir_fd = DEFAULT_DIR_FD;
|
||||
|
||||
if (!_PyArg_ParseStack(args, nargs, kwnames, &_parser,
|
||||
if (!_PyArg_ParseStackAndKeywords(args, nargs, kwnames, &_parser,
|
||||
path_converter, &path, &mode, MKFIFOAT_DIR_FD_CONVERTER, &dir_fd)) {
|
||||
goto exit;
|
||||
}
|
||||
|
@ -3980,7 +3980,7 @@ os_mknod(PyObject *module, PyObject **args, Py_ssize_t nargs, PyObject *kwnames)
|
|||
dev_t device = 0;
|
||||
int dir_fd = DEFAULT_DIR_FD;
|
||||
|
||||
if (!_PyArg_ParseStack(args, nargs, kwnames, &_parser,
|
||||
if (!_PyArg_ParseStackAndKeywords(args, nargs, kwnames, &_parser,
|
||||
path_converter, &path, &mode, _Py_Dev_Converter, &device, MKNODAT_DIR_FD_CONVERTER, &dir_fd)) {
|
||||
goto exit;
|
||||
}
|
||||
|
@ -4164,7 +4164,7 @@ os_truncate(PyObject *module, PyObject **args, Py_ssize_t nargs, PyObject *kwnam
|
|||
path_t path = PATH_T_INITIALIZE("truncate", "path", 0, PATH_HAVE_FTRUNCATE);
|
||||
Py_off_t length;
|
||||
|
||||
if (!_PyArg_ParseStack(args, nargs, kwnames, &_parser,
|
||||
if (!_PyArg_ParseStackAndKeywords(args, nargs, kwnames, &_parser,
|
||||
path_converter, &path, Py_off_t_converter, &length)) {
|
||||
goto exit;
|
||||
}
|
||||
|
@ -4455,7 +4455,7 @@ os_WIFCONTINUED(PyObject *module, PyObject **args, Py_ssize_t nargs, PyObject *k
|
|||
int status;
|
||||
int _return_value;
|
||||
|
||||
if (!_PyArg_ParseStack(args, nargs, kwnames, &_parser,
|
||||
if (!_PyArg_ParseStackAndKeywords(args, nargs, kwnames, &_parser,
|
||||
&status)) {
|
||||
goto exit;
|
||||
}
|
||||
|
@ -4494,7 +4494,7 @@ os_WIFSTOPPED(PyObject *module, PyObject **args, Py_ssize_t nargs, PyObject *kwn
|
|||
int status;
|
||||
int _return_value;
|
||||
|
||||
if (!_PyArg_ParseStack(args, nargs, kwnames, &_parser,
|
||||
if (!_PyArg_ParseStackAndKeywords(args, nargs, kwnames, &_parser,
|
||||
&status)) {
|
||||
goto exit;
|
||||
}
|
||||
|
@ -4533,7 +4533,7 @@ os_WIFSIGNALED(PyObject *module, PyObject **args, Py_ssize_t nargs, PyObject *kw
|
|||
int status;
|
||||
int _return_value;
|
||||
|
||||
if (!_PyArg_ParseStack(args, nargs, kwnames, &_parser,
|
||||
if (!_PyArg_ParseStackAndKeywords(args, nargs, kwnames, &_parser,
|
||||
&status)) {
|
||||
goto exit;
|
||||
}
|
||||
|
@ -4572,7 +4572,7 @@ os_WIFEXITED(PyObject *module, PyObject **args, Py_ssize_t nargs, PyObject *kwna
|
|||
int status;
|
||||
int _return_value;
|
||||
|
||||
if (!_PyArg_ParseStack(args, nargs, kwnames, &_parser,
|
||||
if (!_PyArg_ParseStackAndKeywords(args, nargs, kwnames, &_parser,
|
||||
&status)) {
|
||||
goto exit;
|
||||
}
|
||||
|
@ -4611,7 +4611,7 @@ os_WEXITSTATUS(PyObject *module, PyObject **args, Py_ssize_t nargs, PyObject *kw
|
|||
int status;
|
||||
int _return_value;
|
||||
|
||||
if (!_PyArg_ParseStack(args, nargs, kwnames, &_parser,
|
||||
if (!_PyArg_ParseStackAndKeywords(args, nargs, kwnames, &_parser,
|
||||
&status)) {
|
||||
goto exit;
|
||||
}
|
||||
|
@ -4650,7 +4650,7 @@ os_WTERMSIG(PyObject *module, PyObject **args, Py_ssize_t nargs, PyObject *kwnam
|
|||
int status;
|
||||
int _return_value;
|
||||
|
||||
if (!_PyArg_ParseStack(args, nargs, kwnames, &_parser,
|
||||
if (!_PyArg_ParseStackAndKeywords(args, nargs, kwnames, &_parser,
|
||||
&status)) {
|
||||
goto exit;
|
||||
}
|
||||
|
@ -4689,7 +4689,7 @@ os_WSTOPSIG(PyObject *module, PyObject **args, Py_ssize_t nargs, PyObject *kwnam
|
|||
int status;
|
||||
int _return_value;
|
||||
|
||||
if (!_PyArg_ParseStack(args, nargs, kwnames, &_parser,
|
||||
if (!_PyArg_ParseStackAndKeywords(args, nargs, kwnames, &_parser,
|
||||
&status)) {
|
||||
goto exit;
|
||||
}
|
||||
|
@ -4764,7 +4764,7 @@ os_statvfs(PyObject *module, PyObject **args, Py_ssize_t nargs, PyObject *kwname
|
|||
static _PyArg_Parser _parser = {"O&:statvfs", _keywords, 0};
|
||||
path_t path = PATH_T_INITIALIZE("statvfs", "path", 0, PATH_HAVE_FSTATVFS);
|
||||
|
||||
if (!_PyArg_ParseStack(args, nargs, kwnames, &_parser,
|
||||
if (!_PyArg_ParseStackAndKeywords(args, nargs, kwnames, &_parser,
|
||||
path_converter, &path)) {
|
||||
goto exit;
|
||||
}
|
||||
|
@ -4801,7 +4801,7 @@ os__getdiskusage(PyObject *module, PyObject **args, Py_ssize_t nargs, PyObject *
|
|||
static _PyArg_Parser _parser = {"u:_getdiskusage", _keywords, 0};
|
||||
Py_UNICODE *path;
|
||||
|
||||
if (!_PyArg_ParseStack(args, nargs, kwnames, &_parser,
|
||||
if (!_PyArg_ParseStackAndKeywords(args, nargs, kwnames, &_parser,
|
||||
&path)) {
|
||||
goto exit;
|
||||
}
|
||||
|
@ -4881,7 +4881,7 @@ os_pathconf(PyObject *module, PyObject **args, Py_ssize_t nargs, PyObject *kwnam
|
|||
int name;
|
||||
long _return_value;
|
||||
|
||||
if (!_PyArg_ParseStack(args, nargs, kwnames, &_parser,
|
||||
if (!_PyArg_ParseStackAndKeywords(args, nargs, kwnames, &_parser,
|
||||
path_converter, &path, conv_path_confname, &name)) {
|
||||
goto exit;
|
||||
}
|
||||
|
@ -5028,7 +5028,7 @@ os_startfile(PyObject *module, PyObject **args, Py_ssize_t nargs, PyObject *kwna
|
|||
path_t filepath = PATH_T_INITIALIZE("startfile", "filepath", 0, 0);
|
||||
Py_UNICODE *operation = NULL;
|
||||
|
||||
if (!_PyArg_ParseStack(args, nargs, kwnames, &_parser,
|
||||
if (!_PyArg_ParseStackAndKeywords(args, nargs, kwnames, &_parser,
|
||||
path_converter, &filepath, &operation)) {
|
||||
goto exit;
|
||||
}
|
||||
|
@ -5092,7 +5092,7 @@ os_device_encoding(PyObject *module, PyObject **args, Py_ssize_t nargs, PyObject
|
|||
static _PyArg_Parser _parser = {"i:device_encoding", _keywords, 0};
|
||||
int fd;
|
||||
|
||||
if (!_PyArg_ParseStack(args, nargs, kwnames, &_parser,
|
||||
if (!_PyArg_ParseStackAndKeywords(args, nargs, kwnames, &_parser,
|
||||
&fd)) {
|
||||
goto exit;
|
||||
}
|
||||
|
@ -5244,7 +5244,7 @@ os_getxattr(PyObject *module, PyObject **args, Py_ssize_t nargs, PyObject *kwnam
|
|||
path_t attribute = PATH_T_INITIALIZE("getxattr", "attribute", 0, 0);
|
||||
int follow_symlinks = 1;
|
||||
|
||||
if (!_PyArg_ParseStack(args, nargs, kwnames, &_parser,
|
||||
if (!_PyArg_ParseStackAndKeywords(args, nargs, kwnames, &_parser,
|
||||
path_converter, &path, path_converter, &attribute, &follow_symlinks)) {
|
||||
goto exit;
|
||||
}
|
||||
|
@ -5294,7 +5294,7 @@ os_setxattr(PyObject *module, PyObject **args, Py_ssize_t nargs, PyObject *kwnam
|
|||
int flags = 0;
|
||||
int follow_symlinks = 1;
|
||||
|
||||
if (!_PyArg_ParseStack(args, nargs, kwnames, &_parser,
|
||||
if (!_PyArg_ParseStackAndKeywords(args, nargs, kwnames, &_parser,
|
||||
path_converter, &path, path_converter, &attribute, &value, &flags, &follow_symlinks)) {
|
||||
goto exit;
|
||||
}
|
||||
|
@ -5345,7 +5345,7 @@ os_removexattr(PyObject *module, PyObject **args, Py_ssize_t nargs, PyObject *kw
|
|||
path_t attribute = PATH_T_INITIALIZE("removexattr", "attribute", 0, 0);
|
||||
int follow_symlinks = 1;
|
||||
|
||||
if (!_PyArg_ParseStack(args, nargs, kwnames, &_parser,
|
||||
if (!_PyArg_ParseStackAndKeywords(args, nargs, kwnames, &_parser,
|
||||
path_converter, &path, path_converter, &attribute, &follow_symlinks)) {
|
||||
goto exit;
|
||||
}
|
||||
|
@ -5391,7 +5391,7 @@ os_listxattr(PyObject *module, PyObject **args, Py_ssize_t nargs, PyObject *kwna
|
|||
path_t path = PATH_T_INITIALIZE("listxattr", "path", 1, 1);
|
||||
int follow_symlinks = 1;
|
||||
|
||||
if (!_PyArg_ParseStack(args, nargs, kwnames, &_parser,
|
||||
if (!_PyArg_ParseStackAndKeywords(args, nargs, kwnames, &_parser,
|
||||
path_converter, &path, &follow_symlinks)) {
|
||||
goto exit;
|
||||
}
|
||||
|
@ -5610,7 +5610,7 @@ os_fspath(PyObject *module, PyObject **args, Py_ssize_t nargs, PyObject *kwnames
|
|||
static _PyArg_Parser _parser = {"O:fspath", _keywords, 0};
|
||||
PyObject *path;
|
||||
|
||||
if (!_PyArg_ParseStack(args, nargs, kwnames, &_parser,
|
||||
if (!_PyArg_ParseStackAndKeywords(args, nargs, kwnames, &_parser,
|
||||
&path)) {
|
||||
goto exit;
|
||||
}
|
||||
|
@ -5643,7 +5643,7 @@ os_getrandom(PyObject *module, PyObject **args, Py_ssize_t nargs, PyObject *kwna
|
|||
Py_ssize_t size;
|
||||
int flags = 0;
|
||||
|
||||
if (!_PyArg_ParseStack(args, nargs, kwnames, &_parser,
|
||||
if (!_PyArg_ParseStackAndKeywords(args, nargs, kwnames, &_parser,
|
||||
&size, &flags)) {
|
||||
goto exit;
|
||||
}
|
||||
|
|
|
@ -250,7 +250,7 @@ pyexpat_ParserCreate(PyObject *module, PyObject **args, Py_ssize_t nargs, PyObje
|
|||
const char *namespace_separator = NULL;
|
||||
PyObject *intern = NULL;
|
||||
|
||||
if (!_PyArg_ParseStack(args, nargs, kwnames, &_parser,
|
||||
if (!_PyArg_ParseStackAndKeywords(args, nargs, kwnames, &_parser,
|
||||
&encoding, &namespace_separator, &intern)) {
|
||||
goto exit;
|
||||
}
|
||||
|
|
10
third_party/python/Modules/clinic/zlibmodule.inc
vendored
10
third_party/python/Modules/clinic/zlibmodule.inc
vendored
|
@ -26,7 +26,7 @@ zlib_compress(PyObject *module, PyObject **args, Py_ssize_t nargs, PyObject *kwn
|
|||
Py_buffer data = {NULL, NULL};
|
||||
int level = Z_DEFAULT_COMPRESSION;
|
||||
|
||||
if (!_PyArg_ParseStack(args, nargs, kwnames, &_parser,
|
||||
if (!_PyArg_ParseStackAndKeywords(args, nargs, kwnames, &_parser,
|
||||
&data, &level)) {
|
||||
goto exit;
|
||||
}
|
||||
|
@ -71,7 +71,7 @@ zlib_decompress(PyObject *module, PyObject **args, Py_ssize_t nargs, PyObject *k
|
|||
int wbits = MAX_WBITS;
|
||||
Py_ssize_t bufsize = DEF_BUF_SIZE;
|
||||
|
||||
if (!_PyArg_ParseStack(args, nargs, kwnames, &_parser,
|
||||
if (!_PyArg_ParseStackAndKeywords(args, nargs, kwnames, &_parser,
|
||||
&data, &wbits, ssize_t_converter, &bufsize)) {
|
||||
goto exit;
|
||||
}
|
||||
|
@ -137,7 +137,7 @@ zlib_compressobj(PyObject *module, PyObject **args, Py_ssize_t nargs, PyObject *
|
|||
int strategy = Z_DEFAULT_STRATEGY;
|
||||
Py_buffer zdict = {NULL, NULL};
|
||||
|
||||
if (!_PyArg_ParseStack(args, nargs, kwnames, &_parser,
|
||||
if (!_PyArg_ParseStackAndKeywords(args, nargs, kwnames, &_parser,
|
||||
&level, &method, &wbits, &memLevel, &strategy, &zdict)) {
|
||||
goto exit;
|
||||
}
|
||||
|
@ -179,7 +179,7 @@ zlib_decompressobj(PyObject *module, PyObject **args, Py_ssize_t nargs, PyObject
|
|||
int wbits = MAX_WBITS;
|
||||
PyObject *zdict = NULL;
|
||||
|
||||
if (!_PyArg_ParseStack(args, nargs, kwnames, &_parser,
|
||||
if (!_PyArg_ParseStackAndKeywords(args, nargs, kwnames, &_parser,
|
||||
&wbits, &zdict)) {
|
||||
goto exit;
|
||||
}
|
||||
|
@ -261,7 +261,7 @@ zlib_Decompress_decompress(compobject *self, PyObject **args, Py_ssize_t nargs,
|
|||
Py_buffer data = {NULL, NULL};
|
||||
Py_ssize_t max_length = 0;
|
||||
|
||||
if (!_PyArg_ParseStack(args, nargs, kwnames, &_parser,
|
||||
if (!_PyArg_ParseStackAndKeywords(args, nargs, kwnames, &_parser,
|
||||
&data, ssize_t_converter, &max_length)) {
|
||||
goto exit;
|
||||
}
|
||||
|
|
2
third_party/python/Objects/abstract.c
vendored
2
third_party/python/Objects/abstract.c
vendored
|
@ -2508,7 +2508,7 @@ _PyObject_FastCallKeywords(PyObject *callable, PyObject **stack, Py_ssize_t narg
|
|||
|
||||
/* kwnames must only contains str strings, no subclass, and all keys must
|
||||
be unique: these checks are implemented in Python/ceval.c and
|
||||
_PyArg_ParseStack(). */
|
||||
_PyArg_ParseStackAndKeywords(). */
|
||||
|
||||
if (PyFunction_Check(callable)) {
|
||||
return _PyFunction_FastCallKeywords(callable, stack, nargs, kwnames);
|
||||
|
|
|
@ -74,7 +74,7 @@ bytearray_translate(PyByteArrayObject *self, PyObject **args, Py_ssize_t nargs,
|
|||
PyObject *table;
|
||||
PyObject *deletechars = NULL;
|
||||
|
||||
if (!_PyArg_ParseStack(args, nargs, kwnames, &_parser,
|
||||
if (!_PyArg_ParseStackAndKeywords(args, nargs, kwnames, &_parser,
|
||||
&table, &deletechars)) {
|
||||
goto exit;
|
||||
}
|
||||
|
@ -204,7 +204,7 @@ bytearray_split(PyByteArrayObject *self, PyObject **args, Py_ssize_t nargs, PyOb
|
|||
PyObject *sep = Py_None;
|
||||
Py_ssize_t maxsplit = -1;
|
||||
|
||||
if (!_PyArg_ParseStack(args, nargs, kwnames, &_parser,
|
||||
if (!_PyArg_ParseStackAndKeywords(args, nargs, kwnames, &_parser,
|
||||
&sep, &maxsplit)) {
|
||||
goto exit;
|
||||
}
|
||||
|
@ -279,7 +279,7 @@ bytearray_rsplit(PyByteArrayObject *self, PyObject **args, Py_ssize_t nargs, PyO
|
|||
PyObject *sep = Py_None;
|
||||
Py_ssize_t maxsplit = -1;
|
||||
|
||||
if (!_PyArg_ParseStack(args, nargs, kwnames, &_parser,
|
||||
if (!_PyArg_ParseStackAndKeywords(args, nargs, kwnames, &_parser,
|
||||
&sep, &maxsplit)) {
|
||||
goto exit;
|
||||
}
|
||||
|
@ -571,7 +571,7 @@ bytearray_decode(PyByteArrayObject *self, PyObject **args, Py_ssize_t nargs, PyO
|
|||
const char *encoding = NULL;
|
||||
const char *errors = NULL;
|
||||
|
||||
if (!_PyArg_ParseStack(args, nargs, kwnames, &_parser,
|
||||
if (!_PyArg_ParseStackAndKeywords(args, nargs, kwnames, &_parser,
|
||||
&encoding, &errors)) {
|
||||
goto exit;
|
||||
}
|
||||
|
@ -617,7 +617,7 @@ bytearray_splitlines(PyByteArrayObject *self, PyObject **args, Py_ssize_t nargs,
|
|||
static _PyArg_Parser _parser = {"|i:splitlines", _keywords, 0};
|
||||
int keepends = 0;
|
||||
|
||||
if (!_PyArg_ParseStack(args, nargs, kwnames, &_parser,
|
||||
if (!_PyArg_ParseStackAndKeywords(args, nargs, kwnames, &_parser,
|
||||
&keepends)) {
|
||||
goto exit;
|
||||
}
|
||||
|
|
|
@ -39,7 +39,7 @@ bytes_split(PyBytesObject *self, PyObject **args, Py_ssize_t nargs, PyObject *kw
|
|||
PyObject *sep = Py_None;
|
||||
Py_ssize_t maxsplit = -1;
|
||||
|
||||
if (!_PyArg_ParseStack(args, nargs, kwnames, &_parser,
|
||||
if (!_PyArg_ParseStackAndKeywords(args, nargs, kwnames, &_parser,
|
||||
&sep, &maxsplit)) {
|
||||
goto exit;
|
||||
}
|
||||
|
@ -158,7 +158,7 @@ bytes_rsplit(PyBytesObject *self, PyObject **args, Py_ssize_t nargs, PyObject *k
|
|||
PyObject *sep = Py_None;
|
||||
Py_ssize_t maxsplit = -1;
|
||||
|
||||
if (!_PyArg_ParseStack(args, nargs, kwnames, &_parser,
|
||||
if (!_PyArg_ParseStackAndKeywords(args, nargs, kwnames, &_parser,
|
||||
&sep, &maxsplit)) {
|
||||
goto exit;
|
||||
}
|
||||
|
@ -304,7 +304,7 @@ bytes_translate(PyBytesObject *self, PyObject **args, Py_ssize_t nargs, PyObject
|
|||
PyObject *table;
|
||||
PyObject *deletechars = NULL;
|
||||
|
||||
if (!_PyArg_ParseStack(args, nargs, kwnames, &_parser,
|
||||
if (!_PyArg_ParseStackAndKeywords(args, nargs, kwnames, &_parser,
|
||||
&table, &deletechars)) {
|
||||
goto exit;
|
||||
}
|
||||
|
@ -435,7 +435,7 @@ bytes_decode(PyBytesObject *self, PyObject **args, Py_ssize_t nargs, PyObject *k
|
|||
const char *encoding = NULL;
|
||||
const char *errors = NULL;
|
||||
|
||||
if (!_PyArg_ParseStack(args, nargs, kwnames, &_parser,
|
||||
if (!_PyArg_ParseStackAndKeywords(args, nargs, kwnames, &_parser,
|
||||
&encoding, &errors)) {
|
||||
goto exit;
|
||||
}
|
||||
|
@ -468,7 +468,7 @@ bytes_splitlines(PyBytesObject *self, PyObject **args, Py_ssize_t nargs, PyObjec
|
|||
static _PyArg_Parser _parser = {"|i:splitlines", _keywords, 0};
|
||||
int keepends = 0;
|
||||
|
||||
if (!_PyArg_ParseStack(args, nargs, kwnames, &_parser,
|
||||
if (!_PyArg_ParseStackAndKeywords(args, nargs, kwnames, &_parser,
|
||||
&keepends)) {
|
||||
goto exit;
|
||||
}
|
||||
|
|
|
@ -171,7 +171,7 @@ builtin_compile(PyObject *module, PyObject **args, Py_ssize_t nargs, PyObject *k
|
|||
int dont_inherit = 0;
|
||||
int optimize = -1;
|
||||
|
||||
if (!_PyArg_ParseStack(args, nargs, kwnames, &_parser,
|
||||
if (!_PyArg_ParseStackAndKeywords(args, nargs, kwnames, &_parser,
|
||||
&source, PyUnicode_FSDecoder, &filename, &mode, &flags, &dont_inherit, &optimize)) {
|
||||
goto exit;
|
||||
}
|
||||
|
|
244
third_party/python/Python/getargs.c
vendored
244
third_party/python/Python/getargs.c
vendored
|
@ -43,6 +43,8 @@ typedef struct {
|
|||
#define STATIC_FREELIST_ENTRIES 8
|
||||
|
||||
static const char *skipitem(const char **, va_list *, int);
|
||||
static int vgetargs1_impl(PyObject *args, PyObject **stack, Py_ssize_t nargs,
|
||||
const char *format, va_list *p_va, int flags);
|
||||
static int vgetargs1(PyObject *, const char *, va_list *, int);
|
||||
static void seterror(Py_ssize_t, const char *, int *, const char *, const char *);
|
||||
static const char *convertitem(PyObject *, const char **, va_list *, int, int *,
|
||||
|
@ -116,6 +118,31 @@ _PyArg_ParseTuple_SizeT(PyObject *args, const char *format, ...)
|
|||
return retval;
|
||||
}
|
||||
|
||||
int
|
||||
_PyArg_ParseStack(PyObject **args, Py_ssize_t nargs, const char *format, ...)
|
||||
{
|
||||
int retval;
|
||||
va_list va;
|
||||
|
||||
va_start(va, format);
|
||||
retval = vgetargs1_impl(NULL, args, nargs, format, &va, 0);
|
||||
va_end(va);
|
||||
return retval;
|
||||
}
|
||||
|
||||
int
|
||||
_PyArg_ParseStack_SizeT(PyObject **args, Py_ssize_t nargs, const char *format, ...)
|
||||
{
|
||||
int retval;
|
||||
va_list va;
|
||||
|
||||
va_start(va, format);
|
||||
retval = vgetargs1_impl(NULL, args, nargs, format, &va, FLAG_SIZE_T);
|
||||
va_end(va);
|
||||
return retval;
|
||||
}
|
||||
|
||||
|
||||
int
|
||||
PyArg_VaParse(PyObject *args, const char *format, va_list va)
|
||||
{
|
||||
|
@ -188,7 +215,8 @@ cleanreturn(int retval, freelist_t *freelist)
|
|||
}
|
||||
|
||||
static int
|
||||
vgetargs1(PyObject *args, const char *format, va_list *p_va, int flags)
|
||||
vgetargs1_impl(PyObject *compat_args, PyObject **stack, Py_ssize_t nargs, const char *format,
|
||||
va_list *p_va, int flags)
|
||||
{
|
||||
char msgbuf[256];
|
||||
int levels[32];
|
||||
|
@ -199,16 +227,20 @@ vgetargs1(PyObject *args, const char *format, va_list *p_va, int flags)
|
|||
int level = 0;
|
||||
int endfmt = 0;
|
||||
const char *formatsave = format;
|
||||
Py_ssize_t i, len;
|
||||
Py_ssize_t i;
|
||||
const char *msg;
|
||||
int compat = flags & FLAG_COMPAT;
|
||||
freelistentry_t static_entries[STATIC_FREELIST_ENTRIES];
|
||||
freelist_t freelist;
|
||||
|
||||
assert(nargs == 0 || stack != NULL);
|
||||
|
||||
freelist.entries = static_entries;
|
||||
freelist.first_available = 0;
|
||||
freelist.entries_malloced = 0;
|
||||
assert(compat || (args != (PyObject*)NULL));
|
||||
|
||||
flags = flags & ~FLAG_COMPAT;
|
||||
|
||||
while (endfmt == 0) {
|
||||
int c = *format++;
|
||||
switch (c) {
|
||||
|
@ -243,18 +275,22 @@ vgetargs1(PyObject *args, const char *format, va_list *p_va, int flags)
|
|||
break;
|
||||
default:
|
||||
if (level == 0) {
|
||||
if (Py_ISALPHA(c))
|
||||
if (Py_ISALPHA(Py_CHARMASK(c)))
|
||||
if (c != 'e') /* skip encoded */
|
||||
max++;
|
||||
}
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
if (level != 0)
|
||||
Py_FatalError(/* '(' */ "missing ')' in getargs format");
|
||||
|
||||
if (min < 0)
|
||||
min = max;
|
||||
|
||||
format = formatsave;
|
||||
|
||||
if (max > STATIC_FREELIST_ENTRIES) {
|
||||
freelist.entries = PyMem_NEW(freelistentry_t, max);
|
||||
if (freelist.entries == NULL) {
|
||||
|
@ -263,9 +299,10 @@ vgetargs1(PyObject *args, const char *format, va_list *p_va, int flags)
|
|||
}
|
||||
freelist.entries_malloced = 1;
|
||||
}
|
||||
|
||||
if (compat) {
|
||||
if (max == 0) {
|
||||
if (args == NULL)
|
||||
if (compat_args == NULL)
|
||||
return 1;
|
||||
PyErr_Format(PyExc_TypeError,
|
||||
"%.200s%s takes no arguments",
|
||||
|
@ -274,14 +311,14 @@ vgetargs1(PyObject *args, const char *format, va_list *p_va, int flags)
|
|||
return cleanreturn(0, &freelist);
|
||||
}
|
||||
else if (min == 1 && max == 1) {
|
||||
if (args == NULL) {
|
||||
if (compat_args == NULL) {
|
||||
PyErr_Format(PyExc_TypeError,
|
||||
"%.200s%s takes at least one argument",
|
||||
fname==NULL ? "function" : fname,
|
||||
fname==NULL ? "" : "()");
|
||||
return cleanreturn(0, &freelist);
|
||||
}
|
||||
msg = convertitem(args, &format, p_va, flags, levels,
|
||||
msg = convertitem(compat_args, &format, p_va, flags, levels,
|
||||
msgbuf, sizeof(msgbuf), &freelist);
|
||||
if (msg == NULL)
|
||||
return cleanreturn(1, &freelist);
|
||||
|
@ -294,31 +331,27 @@ vgetargs1(PyObject *args, const char *format, va_list *p_va, int flags)
|
|||
return cleanreturn(0, &freelist);
|
||||
}
|
||||
}
|
||||
if (!PyTuple_Check(args)) {
|
||||
PyErr_SetString(PyExc_SystemError,
|
||||
"new style getargs format but argument is not a tuple");
|
||||
return cleanreturn(0, &freelist);
|
||||
}
|
||||
len = PyTuple_GET_SIZE(args);
|
||||
if (len < min || max < len) {
|
||||
|
||||
if (nargs < min || max < nargs) {
|
||||
if (message == NULL)
|
||||
PyErr_Format(PyExc_TypeError,
|
||||
"%.150s%s takes %s %d argument%s (%ld given)",
|
||||
fname==NULL ? "function" : fname,
|
||||
fname==NULL ? "" : "()",
|
||||
min==max ? "exactly"
|
||||
: len < min ? "at least" : "at most",
|
||||
len < min ? min : max,
|
||||
(len < min ? min : max) == 1 ? "" : "s",
|
||||
Py_SAFE_DOWNCAST(len, Py_ssize_t, long));
|
||||
: nargs < min ? "at least" : "at most",
|
||||
nargs < min ? min : max,
|
||||
(nargs < min ? min : max) == 1 ? "" : "s",
|
||||
Py_SAFE_DOWNCAST(nargs, Py_ssize_t, long));
|
||||
else
|
||||
PyErr_SetString(PyExc_TypeError, message);
|
||||
return cleanreturn(0, &freelist);
|
||||
}
|
||||
for (i = 0; i < len; i++) {
|
||||
|
||||
for (i = 0; i < nargs; i++) {
|
||||
if (*format == '|')
|
||||
format++;
|
||||
msg = convertitem(PyTuple_GET_ITEM(args, i), &format, p_va,
|
||||
msg = convertitem(stack[i], &format, p_va,
|
||||
flags, levels, msgbuf,
|
||||
sizeof(msgbuf), &freelist);
|
||||
if (msg) {
|
||||
|
@ -326,16 +359,47 @@ vgetargs1(PyObject *args, const char *format, va_list *p_va, int flags)
|
|||
return cleanreturn(0, &freelist);
|
||||
}
|
||||
}
|
||||
if (*format != '\0' && !Py_ISALPHA(*format) &&
|
||||
|
||||
if (*format != '\0' && !Py_ISALPHA(Py_CHARMASK(*format)) &&
|
||||
*format != '(' &&
|
||||
*format != '|' && *format != ':' && *format != ';') {
|
||||
PyErr_Format(PyExc_SystemError,
|
||||
"bad format string: %.200s", formatsave);
|
||||
return cleanreturn(0, &freelist);
|
||||
}
|
||||
|
||||
return cleanreturn(1, &freelist);
|
||||
}
|
||||
|
||||
static int
|
||||
vgetargs1(PyObject *args, const char *format, va_list *p_va, int flags)
|
||||
{
|
||||
PyObject **stack;
|
||||
Py_ssize_t nargs;
|
||||
|
||||
if (!(flags & FLAG_COMPAT)) {
|
||||
assert(args != NULL);
|
||||
|
||||
if (!PyTuple_Check(args)) {
|
||||
PyErr_SetString(PyExc_SystemError,
|
||||
"new style getargs format but argument is not a tuple");
|
||||
return 0;
|
||||
}
|
||||
|
||||
stack = &PyTuple_GET_ITEM(args, 0);
|
||||
nargs = PyTuple_GET_SIZE(args);
|
||||
}
|
||||
else {
|
||||
stack = NULL;
|
||||
nargs = 0;
|
||||
}
|
||||
|
||||
return vgetargs1_impl(args, stack, nargs, format, p_va, flags);
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
static void
|
||||
seterror(Py_ssize_t iarg, const char *msg, int *levels, const char *fname,
|
||||
const char *message)
|
||||
|
@ -1283,7 +1347,7 @@ getbuffer(PyObject *arg, Py_buffer *view, const char **errmsg)
|
|||
/* Return false (0) for error, else true. */
|
||||
int
|
||||
PyArg_ParseTupleAndKeywords(PyObject *args,
|
||||
PyObject *keywords,
|
||||
PyObject *kwargs,
|
||||
const char *format,
|
||||
char **kwlist, ...)
|
||||
{
|
||||
|
@ -1291,7 +1355,7 @@ PyArg_ParseTupleAndKeywords(PyObject *args,
|
|||
va_list va;
|
||||
|
||||
if ((args == NULL || !PyTuple_Check(args)) ||
|
||||
(keywords != NULL && !PyDict_Check(keywords)) ||
|
||||
(kwargs != NULL && !PyDict_Check(kwargs)) ||
|
||||
format == NULL ||
|
||||
kwlist == NULL)
|
||||
{
|
||||
|
@ -1300,21 +1364,21 @@ PyArg_ParseTupleAndKeywords(PyObject *args,
|
|||
}
|
||||
|
||||
va_start(va, kwlist);
|
||||
retval = vgetargskeywords(args, keywords, format, kwlist, &va, 0);
|
||||
retval = vgetargskeywords(args, kwargs, format, kwlist, &va, 0);
|
||||
va_end(va);
|
||||
return retval;
|
||||
}
|
||||
|
||||
int
|
||||
_PyArg_ParseTupleAndKeywords_SizeT(PyObject *args,
|
||||
PyObject *keywords,
|
||||
PyObject *kwargs,
|
||||
const char *format,
|
||||
char **kwlist, ...)
|
||||
{
|
||||
int retval;
|
||||
va_list va;
|
||||
if ((args == NULL || !PyTuple_Check(args)) ||
|
||||
(keywords != NULL && !PyDict_Check(keywords)) ||
|
||||
(kwargs != NULL && !PyDict_Check(kwargs)) ||
|
||||
format == NULL ||
|
||||
kwlist == NULL)
|
||||
{
|
||||
|
@ -1322,7 +1386,7 @@ _PyArg_ParseTupleAndKeywords_SizeT(PyObject *args,
|
|||
return 0;
|
||||
}
|
||||
va_start(va, kwlist);
|
||||
retval = vgetargskeywords(args, keywords, format,
|
||||
retval = vgetargskeywords(args, kwargs, format,
|
||||
kwlist, &va, FLAG_SIZE_T);
|
||||
va_end(va);
|
||||
return retval;
|
||||
|
@ -1330,14 +1394,14 @@ _PyArg_ParseTupleAndKeywords_SizeT(PyObject *args,
|
|||
|
||||
int
|
||||
PyArg_VaParseTupleAndKeywords(PyObject *args,
|
||||
PyObject *keywords,
|
||||
PyObject *kwargs,
|
||||
const char *format,
|
||||
char **kwlist, va_list va)
|
||||
{
|
||||
int retval;
|
||||
va_list lva;
|
||||
if ((args == NULL || !PyTuple_Check(args)) ||
|
||||
(keywords != NULL && !PyDict_Check(keywords)) ||
|
||||
(kwargs != NULL && !PyDict_Check(kwargs)) ||
|
||||
format == NULL ||
|
||||
kwlist == NULL)
|
||||
{
|
||||
|
@ -1345,21 +1409,21 @@ PyArg_VaParseTupleAndKeywords(PyObject *args,
|
|||
return 0;
|
||||
}
|
||||
va_copy(lva, va);
|
||||
retval = vgetargskeywords(args, keywords, format, kwlist, &lva, 0);
|
||||
retval = vgetargskeywords(args, kwargs, format, kwlist, &lva, 0);
|
||||
va_end(lva);
|
||||
return retval;
|
||||
}
|
||||
|
||||
int
|
||||
_PyArg_VaParseTupleAndKeywords_SizeT(PyObject *args,
|
||||
PyObject *keywords,
|
||||
PyObject *kwargs,
|
||||
const char *format,
|
||||
char **kwlist, va_list va)
|
||||
{
|
||||
int retval;
|
||||
va_list lva;
|
||||
if ((args == NULL || !PyTuple_Check(args)) ||
|
||||
(keywords != NULL && !PyDict_Check(keywords)) ||
|
||||
(kwargs != NULL && !PyDict_Check(kwargs)) ||
|
||||
format == NULL ||
|
||||
kwlist == NULL)
|
||||
{
|
||||
|
@ -1367,40 +1431,40 @@ _PyArg_VaParseTupleAndKeywords_SizeT(PyObject *args,
|
|||
return 0;
|
||||
}
|
||||
va_copy(lva, va);
|
||||
retval = vgetargskeywords(args, keywords, format,
|
||||
retval = vgetargskeywords(args, kwargs, format,
|
||||
kwlist, &lva, FLAG_SIZE_T);
|
||||
va_end(lva);
|
||||
return retval;
|
||||
}
|
||||
|
||||
int
|
||||
_PyArg_ParseTupleAndKeywordsFast(PyObject *args, PyObject *keywords,
|
||||
_PyArg_ParseTupleAndKeywordsFast(PyObject *args, PyObject *kwargs,
|
||||
struct _PyArg_Parser *parser, ...)
|
||||
{
|
||||
int retval;
|
||||
va_list va;
|
||||
|
||||
va_start(va, parser);
|
||||
retval = vgetargskeywordsfast(args, keywords, parser, &va, 0);
|
||||
retval = vgetargskeywordsfast(args, kwargs, parser, &va, 0);
|
||||
va_end(va);
|
||||
return retval;
|
||||
}
|
||||
|
||||
int
|
||||
_PyArg_ParseTupleAndKeywordsFast_SizeT(PyObject *args, PyObject *keywords,
|
||||
_PyArg_ParseTupleAndKeywordsFast_SizeT(PyObject *args, PyObject *kwargs,
|
||||
struct _PyArg_Parser *parser, ...)
|
||||
{
|
||||
int retval;
|
||||
va_list va;
|
||||
|
||||
va_start(va, parser);
|
||||
retval = vgetargskeywordsfast(args, keywords, parser, &va, FLAG_SIZE_T);
|
||||
retval = vgetargskeywordsfast(args, kwargs, parser, &va, FLAG_SIZE_T);
|
||||
va_end(va);
|
||||
return retval;
|
||||
}
|
||||
|
||||
int
|
||||
_PyArg_ParseStack(PyObject **args, Py_ssize_t nargs, PyObject *kwnames,
|
||||
_PyArg_ParseStackAndKeywords(PyObject **args, Py_ssize_t nargs, PyObject *kwnames,
|
||||
struct _PyArg_Parser *parser, ...)
|
||||
{
|
||||
int retval;
|
||||
|
@ -1413,7 +1477,7 @@ _PyArg_ParseStack(PyObject **args, Py_ssize_t nargs, PyObject *kwnames,
|
|||
}
|
||||
|
||||
int
|
||||
_PyArg_ParseStack_SizeT(PyObject **args, Py_ssize_t nargs, PyObject *kwnames,
|
||||
_PyArg_ParseStackAndKeywords_SizeT(PyObject **args, Py_ssize_t nargs, PyObject *kwnames,
|
||||
struct _PyArg_Parser *parser, ...)
|
||||
{
|
||||
int retval;
|
||||
|
@ -1426,27 +1490,27 @@ _PyArg_ParseStack_SizeT(PyObject **args, Py_ssize_t nargs, PyObject *kwnames,
|
|||
}
|
||||
|
||||
int
|
||||
_PyArg_VaParseTupleAndKeywordsFast(PyObject *args, PyObject *keywords,
|
||||
_PyArg_VaParseTupleAndKeywordsFast(PyObject *args, PyObject *kwargs,
|
||||
struct _PyArg_Parser *parser, va_list va)
|
||||
{
|
||||
int retval;
|
||||
va_list lva;
|
||||
|
||||
va_copy(lva, va);
|
||||
retval = vgetargskeywordsfast(args, keywords, parser, &lva, 0);
|
||||
retval = vgetargskeywordsfast(args, kwargs, parser, &lva, 0);
|
||||
va_end(lva);
|
||||
return retval;
|
||||
}
|
||||
|
||||
int
|
||||
_PyArg_VaParseTupleAndKeywordsFast_SizeT(PyObject *args, PyObject *keywords,
|
||||
_PyArg_VaParseTupleAndKeywordsFast_SizeT(PyObject *args, PyObject *kwargs,
|
||||
struct _PyArg_Parser *parser, va_list va)
|
||||
{
|
||||
int retval;
|
||||
va_list lva;
|
||||
|
||||
va_copy(lva, va);
|
||||
retval = vgetargskeywordsfast(args, keywords, parser, &lva, FLAG_SIZE_T);
|
||||
retval = vgetargskeywordsfast(args, kwargs, parser, &lva, FLAG_SIZE_T);
|
||||
va_end(lva);
|
||||
return retval;
|
||||
}
|
||||
|
@ -1469,7 +1533,7 @@ PyArg_ValidateKeywordArguments(PyObject *kwargs)
|
|||
#define IS_END_OF_FORMAT(c) (c == '\0' || c == ';' || c == ':')
|
||||
|
||||
static int
|
||||
vgetargskeywords(PyObject *args, PyObject *keywords, const char *format,
|
||||
vgetargskeywords(PyObject *args, PyObject *kwargs, const char *format,
|
||||
char **kwlist, va_list *p_va, int flags)
|
||||
{
|
||||
char msgbuf[512];
|
||||
|
@ -1479,7 +1543,7 @@ vgetargskeywords(PyObject *args, PyObject *keywords, const char *format,
|
|||
int max = INT_MAX;
|
||||
int i, pos, len;
|
||||
int skip = 0;
|
||||
Py_ssize_t nargs, nkeywords;
|
||||
Py_ssize_t nargs, nkwargs;
|
||||
PyObject *current_arg;
|
||||
freelistentry_t static_entries[STATIC_FREELIST_ENTRIES];
|
||||
freelist_t freelist;
|
||||
|
@ -1489,7 +1553,7 @@ vgetargskeywords(PyObject *args, PyObject *keywords, const char *format,
|
|||
freelist.entries_malloced = 0;
|
||||
|
||||
assert(args != NULL && PyTuple_Check(args));
|
||||
assert(keywords == NULL || PyDict_Check(keywords));
|
||||
assert(kwargs == NULL || PyDict_Check(kwargs));
|
||||
assert(format != NULL);
|
||||
assert(kwlist != NULL);
|
||||
assert(p_va != NULL);
|
||||
|
@ -1528,15 +1592,15 @@ vgetargskeywords(PyObject *args, PyObject *keywords, const char *format,
|
|||
}
|
||||
|
||||
nargs = PyTuple_GET_SIZE(args);
|
||||
nkeywords = (keywords == NULL) ? 0 : PyDict_Size(keywords);
|
||||
if (nargs + nkeywords > len) {
|
||||
nkwargs = (kwargs == NULL) ? 0 : PyDict_Size(kwargs);
|
||||
if (nargs + nkwargs > len) {
|
||||
PyErr_Format(PyExc_TypeError,
|
||||
"%s%s takes at most %d argument%s (%zd given)",
|
||||
(fname == NULL) ? "function" : fname,
|
||||
(fname == NULL) ? "" : "()",
|
||||
len,
|
||||
(len == 1) ? "" : "s",
|
||||
nargs + nkeywords);
|
||||
nargs + nkwargs);
|
||||
return cleanreturn(0, &freelist);
|
||||
}
|
||||
|
||||
|
@ -1597,14 +1661,14 @@ vgetargskeywords(PyObject *args, PyObject *keywords, const char *format,
|
|||
}
|
||||
if (!skip) {
|
||||
current_arg = NULL;
|
||||
if (nkeywords && i >= pos) {
|
||||
current_arg = PyDict_GetItemString(keywords, keyword);
|
||||
if (nkwargs && i >= pos) {
|
||||
current_arg = PyDict_GetItemString(kwargs, keyword);
|
||||
if (!current_arg && PyErr_Occurred()) {
|
||||
return cleanreturn(0, &freelist);
|
||||
}
|
||||
}
|
||||
if (current_arg) {
|
||||
--nkeywords;
|
||||
--nkwargs;
|
||||
if (i < nargs) {
|
||||
/* arg present in tuple and in dict */
|
||||
PyErr_Format(PyExc_TypeError,
|
||||
|
@ -1648,7 +1712,7 @@ vgetargskeywords(PyObject *args, PyObject *keywords, const char *format,
|
|||
* fulfilled and no keyword args left, with no further
|
||||
* validation. XXX Maybe skip this in debug build ?
|
||||
*/
|
||||
if (!nkeywords && !skip) {
|
||||
if (!nkwargs && !skip) {
|
||||
return cleanreturn(1, &freelist);
|
||||
}
|
||||
}
|
||||
|
@ -1680,14 +1744,14 @@ vgetargskeywords(PyObject *args, PyObject *keywords, const char *format,
|
|||
}
|
||||
|
||||
/* make sure there are no extraneous keyword arguments */
|
||||
if (nkeywords > 0) {
|
||||
if (nkwargs > 0) {
|
||||
PyObject *key, *value;
|
||||
Py_ssize_t pos = 0;
|
||||
while (PyDict_Next(keywords, &pos, &key, &value)) {
|
||||
while (PyDict_Next(kwargs, &pos, &key, &value)) {
|
||||
int match = 0;
|
||||
if (!PyUnicode_Check(key)) {
|
||||
PyErr_SetString(PyExc_TypeError,
|
||||
"keywords must be strings");
|
||||
"kwargs must be strings");
|
||||
return cleanreturn(0, &freelist);
|
||||
}
|
||||
for (i = 0; i < len; i++) {
|
||||
|
@ -1716,13 +1780,13 @@ static struct _PyArg_Parser *static_arg_parsers = NULL;
|
|||
static int
|
||||
parser_init(struct _PyArg_Parser *parser)
|
||||
{
|
||||
const char * const *keywords;
|
||||
const char * const *kwargs;
|
||||
const char *format, *msg;
|
||||
int i, len, min, max, nkw;
|
||||
PyObject *kwtuple;
|
||||
|
||||
assert(parser->format != NULL);
|
||||
assert(parser->keywords != NULL);
|
||||
assert(parser->kwargs != NULL);
|
||||
if (parser->kwtuple != NULL) {
|
||||
return 1;
|
||||
}
|
||||
|
@ -1739,14 +1803,14 @@ parser_init(struct _PyArg_Parser *parser)
|
|||
parser->custom_msg++;
|
||||
}
|
||||
|
||||
keywords = parser->keywords;
|
||||
/* scan keywords and count the number of positional-only parameters */
|
||||
for (i = 0; keywords[i] && !*keywords[i]; i++) {
|
||||
kwargs = parser->keywords;
|
||||
/* scan kwargs and count the number of positional-only parameters */
|
||||
for (i = 0; kwargs[i] && !*kwargs[i]; i++) {
|
||||
}
|
||||
parser->pos = i;
|
||||
/* scan keywords and get greatest possible nbr of args */
|
||||
for (; keywords[i]; i++) {
|
||||
if (!*keywords[i]) {
|
||||
/* scan kwargs and get greatest possible nbr of args */
|
||||
for (; kwargs[i]; i++) {
|
||||
if (!*kwargs[i]) {
|
||||
PyErr_SetString(PyExc_SystemError,
|
||||
"Empty keyword parameter name");
|
||||
return 0;
|
||||
|
@ -1814,9 +1878,9 @@ parser_init(struct _PyArg_Parser *parser)
|
|||
if (kwtuple == NULL) {
|
||||
return 0;
|
||||
}
|
||||
keywords = parser->keywords + parser->pos;
|
||||
kwargs = parser->keywords + parser->pos;
|
||||
for (i = 0; i < nkw; i++) {
|
||||
PyObject *str = PyUnicode_FromString(keywords[i]);
|
||||
PyObject *str = PyUnicode_FromString(kwargs[i]);
|
||||
if (str == NULL) {
|
||||
Py_DECREF(kwtuple);
|
||||
return 0;
|
||||
|
@ -1866,7 +1930,7 @@ find_keyword(PyObject *kwnames, PyObject **kwstack, PyObject *key)
|
|||
|
||||
static int
|
||||
vgetargskeywordsfast_impl(PyObject **args, Py_ssize_t nargs,
|
||||
PyObject *keywords, PyObject *kwnames,
|
||||
PyObject *kwargs, PyObject *kwnames,
|
||||
struct _PyArg_Parser *parser,
|
||||
va_list *p_va, int flags)
|
||||
{
|
||||
|
@ -1877,7 +1941,7 @@ vgetargskeywordsfast_impl(PyObject **args, Py_ssize_t nargs,
|
|||
const char *msg;
|
||||
PyObject *keyword;
|
||||
int i, pos, len;
|
||||
Py_ssize_t nkeywords;
|
||||
Py_ssize_t nkwargs;
|
||||
PyObject *current_arg;
|
||||
freelistentry_t static_entries[STATIC_FREELIST_ENTRIES];
|
||||
freelist_t freelist;
|
||||
|
@ -1887,9 +1951,9 @@ vgetargskeywordsfast_impl(PyObject **args, Py_ssize_t nargs,
|
|||
freelist.first_available = 0;
|
||||
freelist.entries_malloced = 0;
|
||||
|
||||
assert(keywords == NULL || PyDict_Check(keywords));
|
||||
assert((keywords != NULL || kwnames != NULL)
|
||||
|| (keywords == NULL && kwnames == NULL));
|
||||
assert(kwargs == NULL || PyDict_Check(kwargs));
|
||||
assert((kwargs != NULL || kwnames != NULL)
|
||||
|| (kwargs == NULL && kwnames == NULL));
|
||||
assert(p_va != NULL);
|
||||
|
||||
if (parser == NULL
|
||||
|
@ -1916,24 +1980,24 @@ vgetargskeywordsfast_impl(PyObject **args, Py_ssize_t nargs,
|
|||
freelist.entries_malloced = 1;
|
||||
}
|
||||
|
||||
if (keywords != NULL) {
|
||||
nkeywords = PyDict_Size(keywords);
|
||||
if (kwargs != NULL) {
|
||||
nkwargs = PyDict_Size(kwargs);
|
||||
}
|
||||
else if (kwnames != NULL) {
|
||||
nkeywords = PyTuple_GET_SIZE(kwnames);
|
||||
nkwargs = PyTuple_GET_SIZE(kwnames);
|
||||
kwstack = args + nargs;
|
||||
}
|
||||
else {
|
||||
nkeywords = 0;
|
||||
nkwargs = 0;
|
||||
}
|
||||
if (nargs + nkeywords > len) {
|
||||
if (nargs + nkwargs > len) {
|
||||
PyErr_Format(PyExc_TypeError,
|
||||
"%s%s takes at most %d argument%s (%zd given)",
|
||||
(parser->fname == NULL) ? "function" : parser->fname,
|
||||
(parser->fname == NULL) ? "" : "()",
|
||||
len,
|
||||
(len == 1) ? "" : "s",
|
||||
nargs + nkeywords);
|
||||
nargs + nkwargs);
|
||||
return cleanreturn(0, &freelist);
|
||||
}
|
||||
if (parser->max < nargs) {
|
||||
|
@ -1957,9 +2021,9 @@ vgetargskeywordsfast_impl(PyObject **args, Py_ssize_t nargs,
|
|||
assert(!IS_END_OF_FORMAT(*format));
|
||||
|
||||
current_arg = NULL;
|
||||
if (nkeywords && i >= pos) {
|
||||
if (keywords != NULL) {
|
||||
current_arg = PyDict_GetItem(keywords, keyword);
|
||||
if (nkwargs && i >= pos) {
|
||||
if (kwargs != NULL) {
|
||||
current_arg = PyDict_GetItem(kwargs, keyword);
|
||||
if (!current_arg && PyErr_Occurred()) {
|
||||
return cleanreturn(0, &freelist);
|
||||
}
|
||||
|
@ -1969,7 +2033,7 @@ vgetargskeywordsfast_impl(PyObject **args, Py_ssize_t nargs,
|
|||
}
|
||||
}
|
||||
if (current_arg) {
|
||||
--nkeywords;
|
||||
--nkwargs;
|
||||
if (i < nargs) {
|
||||
/* arg present in tuple and in dict */
|
||||
PyErr_Format(PyExc_TypeError,
|
||||
|
@ -2013,7 +2077,7 @@ vgetargskeywordsfast_impl(PyObject **args, Py_ssize_t nargs,
|
|||
* fulfilled and no keyword args left, with no further
|
||||
* validation. XXX Maybe skip this in debug build ?
|
||||
*/
|
||||
if (!nkeywords) {
|
||||
if (!nkwargs) {
|
||||
return cleanreturn(1, &freelist);
|
||||
}
|
||||
|
||||
|
@ -2026,15 +2090,15 @@ vgetargskeywordsfast_impl(PyObject **args, Py_ssize_t nargs,
|
|||
assert(IS_END_OF_FORMAT(*format) || (*format == '|') || (*format == '$'));
|
||||
|
||||
/* make sure there are no extraneous keyword arguments */
|
||||
if (nkeywords > 0) {
|
||||
if (keywords != NULL) {
|
||||
if (nkwargs > 0) {
|
||||
if (kwargs != NULL) {
|
||||
PyObject *key, *value;
|
||||
Py_ssize_t pos = 0;
|
||||
while (PyDict_Next(keywords, &pos, &key, &value)) {
|
||||
while (PyDict_Next(kwargs, &pos, &key, &value)) {
|
||||
int match;
|
||||
if (!PyUnicode_Check(key)) {
|
||||
PyErr_SetString(PyExc_TypeError,
|
||||
"keywords must be strings");
|
||||
"kwargs must be strings");
|
||||
return cleanreturn(0, &freelist);
|
||||
}
|
||||
match = PySequence_Contains(kwtuple, key);
|
||||
|
@ -2059,7 +2123,7 @@ vgetargskeywordsfast_impl(PyObject **args, Py_ssize_t nargs,
|
|||
|
||||
if (!PyUnicode_Check(key)) {
|
||||
PyErr_SetString(PyExc_TypeError,
|
||||
"keywords must be strings");
|
||||
"kwargs must be strings");
|
||||
return cleanreturn(0, &freelist);
|
||||
}
|
||||
|
||||
|
@ -2081,7 +2145,7 @@ vgetargskeywordsfast_impl(PyObject **args, Py_ssize_t nargs,
|
|||
}
|
||||
|
||||
static int
|
||||
vgetargskeywordsfast(PyObject *args, PyObject *keywords,
|
||||
vgetargskeywordsfast(PyObject *args, PyObject *kwargs,
|
||||
struct _PyArg_Parser *parser, va_list *p_va, int flags)
|
||||
{
|
||||
PyObject **stack;
|
||||
|
@ -2089,7 +2153,7 @@ vgetargskeywordsfast(PyObject *args, PyObject *keywords,
|
|||
|
||||
if(args == NULL
|
||||
|| !PyTuple_Check(args)
|
||||
|| (keywords != NULL && !PyDict_Check(keywords)))
|
||||
|| (kwargs != NULL && !PyDict_Check(kwargs)))
|
||||
{
|
||||
PyErr_BadInternalCall();
|
||||
return 0;
|
||||
|
@ -2097,7 +2161,7 @@ vgetargskeywordsfast(PyObject *args, PyObject *keywords,
|
|||
|
||||
stack = &PyTuple_GET_ITEM(args, 0);
|
||||
nargs = PyTuple_GET_SIZE(args);
|
||||
return vgetargskeywordsfast_impl(stack, nargs, keywords, NULL,
|
||||
return vgetargskeywordsfast_impl(stack, nargs, kwargs, NULL,
|
||||
parser, p_va, flags);
|
||||
}
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue