https://github.com/python/cpython/commit/899270491614903b7de986135f884cae1b4dd912
commit: 899270491614903b7de986135f884cae1b4dd912
branch: main
author: Victor Stinner <[email protected]>
committer: vstinner <[email protected]>
date: 2026-10-12T19:56:53+02:00
summary:
gh-144175: Remove internal _PyArg_ParseStack() function (#159150)
Replace internal _PyArg_ParseStack() with public PyArg_ParseArray()
in Argument Clinic.
files:
M Include/internal/pycore_modsupport.h
M Lib/test/clinic.test.c
M Modules/_ctypes/clinic/_ctypes.c.h
M Modules/_multiprocessing/clinic/semaphore.c.h
M Modules/_testcapi/clinic/exceptions.c.h
M Modules/_testcapi/clinic/file.c.h
M Modules/_testcapi/clinic/float.c.h
M Modules/clinic/_cursesmodule.c.h
M Modules/clinic/_dbmmodule.c.h
M Modules/clinic/_gdbmmodule.c.h
M Modules/clinic/_testclinic.c.h
M Modules/clinic/_winapi.c.h
M Python/getargs.c
M Tools/clinic/libclinic/parse_args.py
diff --git a/Include/internal/pycore_modsupport.h
b/Include/internal/pycore_modsupport.h
index f817d86a5289839..a72a557059727a7 100644
--- a/Include/internal/pycore_modsupport.h
+++ b/Include/internal/pycore_modsupport.h
@@ -41,13 +41,6 @@ extern PyObject ** _Py_VaBuildStack(
extern PyObject* _PyModule_CreateInitialized(PyModuleDef*, int apiver);
-// Export for '_curses' shared extension
-PyAPI_FUNC(int) _PyArg_ParseStack(
- PyObject *const *args,
- Py_ssize_t nargs,
- const char *format,
- ...);
-
extern int _PyArg_UnpackStack(
PyObject *const *args,
Py_ssize_t nargs,
@@ -65,7 +58,9 @@ PyAPI_FUNC(void) _PyArg_BadArgument(
// --- _PyArg_Parser API ---------------------------------------------------
-// Export for '_dbm' shared extension
+// Similar to public PyArg_ParseArrayAndKeywords(), but faster thanks
+// to "struct _PyArg_Parser *parser" cache.
+// Export for '_dbm' shared extension.
PyAPI_FUNC(int) _PyArg_ParseStackAndKeywords(
PyObject *const *args,
Py_ssize_t nargs,
diff --git a/Lib/test/clinic.test.c b/Lib/test/clinic.test.c
index 187ed5adc48b39b..b96e5d024c9082b 100644
--- a/Lib/test/clinic.test.c
+++ b/Lib/test/clinic.test.c
@@ -2049,7 +2049,7 @@ test_str_converter(PyObject *module, PyObject *const
*args, Py_ssize_t nargs)
const char *h = "mn";
Py_ssize_t h_length;
- if (!_PyArg_ParseStack(args, nargs, "|sssyzy#s#z#:test_str_converter",
+ if (!PyArg_ParseArray(args, nargs, "|sssyzy#s#z#:test_str_converter",
&a, &b, &c, &d, &e, &f, &f_length, &g, &g_length, &h, &h_length)) {
goto exit;
}
@@ -2065,7 +2065,7 @@ test_str_converter_impl(PyObject *module, const char *a,
const char *b,
const char *f, Py_ssize_t f_length, const char *g,
Py_ssize_t g_length, const char *h,
Py_ssize_t h_length)
-/*[clinic end generated code: output=82cb06d5237ef062 input=8afe9da8185cd38c]*/
+/*[clinic end generated code: output=58dc0fad26cd4c5d input=8afe9da8185cd38c]*/
/*[clinic input]
@@ -2105,7 +2105,7 @@ test_str_converter_encoding(PyObject *module, PyObject
*const *args, Py_ssize_t
char *e = NULL;
Py_ssize_t e_length;
- if (!_PyArg_ParseStack(args, nargs,
"esesetes#et#:test_str_converter_encoding",
+ if (!PyArg_ParseArray(args, nargs,
"esesetes#et#:test_str_converter_encoding",
"idna", &a, "idna", &b, "idna", &c, "idna", &d, &d_length, "idna", &e,
&e_length)) {
goto exit;
}
@@ -2129,7 +2129,7 @@ static PyObject *
test_str_converter_encoding_impl(PyObject *module, char *a, char *b, char *c,
char *d, Py_ssize_t d_length, char *e,
Py_ssize_t e_length)
-/*[clinic end generated code: output=999c1deecfa15b0a input=eb4c38e1f898f402]*/
+/*[clinic end generated code: output=5bab02bfd6a20cf4 input=eb4c38e1f898f402]*/
/*[clinic input]
@@ -2170,7 +2170,7 @@ test_Py_UNICODE_converter(PyObject *module, PyObject
*const *args, Py_ssize_t na
const wchar_t *e = NULL;
Py_ssize_t e_length;
- if (!_PyArg_ParseStack(args, nargs, "O&O&O&u#Z#:test_Py_UNICODE_converter",
+ if (!PyArg_ParseArray(args, nargs, "O&O&O&u#Z#:test_Py_UNICODE_converter",
_PyUnicode_WideCharString_Converter, &a,
_PyUnicode_WideCharString_Converter, &b,
_PyUnicode_WideCharString_Opt_Converter, &c, &d, &d_length, &e, &e_length)) {
goto exit;
}
@@ -2192,7 +2192,7 @@ test_Py_UNICODE_converter_impl(PyObject *module, const
wchar_t *a,
const wchar_t *b, const wchar_t *c,
const wchar_t *d, Py_ssize_t d_length,
const wchar_t *e, Py_ssize_t e_length)
-/*[clinic end generated code: output=529af9cda2a20349 input=064a3b68ad7f04b0]*/
+/*[clinic end generated code: output=020370db41973be0 input=064a3b68ad7f04b0]*/
/*[clinic input]
@@ -2229,7 +2229,7 @@ test_Py_buffer_converter(PyObject *module, PyObject
*const *args, Py_ssize_t nar
Py_buffer d = {NULL, NULL};
Py_buffer e = {NULL, NULL};
- if (!_PyArg_ParseStack(args, nargs, "y*y*s*z*w*:test_Py_buffer_converter",
+ if (!PyArg_ParseArray(args, nargs, "y*y*s*z*w*:test_Py_buffer_converter",
&a, &b, &c, &d, &e)) {
goto exit;
}
@@ -2263,7 +2263,7 @@ test_Py_buffer_converter(PyObject *module, PyObject
*const *args, Py_ssize_t nar
static PyObject *
test_Py_buffer_converter_impl(PyObject *module, Py_buffer *a, Py_buffer *b,
Py_buffer *c, Py_buffer *d, Py_buffer *e)
-/*[clinic end generated code: output=a153b71b4f45f952 input=6a9da0f56f9525fd]*/
+/*[clinic end generated code: output=14bb6138c13c4085 input=6a9da0f56f9525fd]*/
/*[clinic input]
@@ -6038,7 +6038,7 @@ Test__pyarg_parsestackandkeywords(PyObject *self,
PyTypeObject *cls, PyObject *c
if (!_PyArg_NoKwnames("_pyarg_parsestackandkeywords", kwnames)) {
goto exit;
}
- if (!_PyArg_ParseStack(args, nargs, "s#:_pyarg_parsestackandkeywords",
+ if (!PyArg_ParseArray(args, nargs, "s#:_pyarg_parsestackandkeywords",
&key, &key_length)) {
goto exit;
}
@@ -6052,7 +6052,7 @@ static PyObject *
Test__pyarg_parsestackandkeywords_impl(TestObj *self, PyTypeObject *cls,
const char *key,
Py_ssize_t key_length)
-/*[clinic end generated code: output=21bbb9a8d0100d72 input=fc72ef4b4cfafabc]*/
+/*[clinic end generated code: output=4acb456c0ebbbd40 input=fc72ef4b4cfafabc]*/
/*[clinic input]
diff --git a/Modules/_ctypes/clinic/_ctypes.c.h
b/Modules/_ctypes/clinic/_ctypes.c.h
index 0bc06695b900e12..fa9e30586a51d9a 100644
--- a/Modules/_ctypes/clinic/_ctypes.c.h
+++ b/Modules/_ctypes/clinic/_ctypes.c.h
@@ -605,7 +605,7 @@ _ctypes_PyCData___setstate__(PyObject *myself, PyObject
*const *args, Py_ssize_t
const char *data;
Py_ssize_t data_length;
- if (!_PyArg_ParseStack(args, nargs, "O!s#:__setstate__",
+ if (!PyArg_ParseArray(args, nargs, "O!s#:__setstate__",
&PyDict_Type, &dict, &data, &data_length)) {
goto exit;
}
@@ -818,4 +818,4 @@ Simple_from_outparm(PyObject *self, PyTypeObject *cls,
PyObject *const *args, Py
#define _CTYPES_SIMPLE_VALUE_GETSETDEF {"value",
(getter)_ctypes_Simple_value_get, (setter)_ctypes_Simple_value_set, NULL},
-/*[clinic end generated code: output=e7e9bd957c3d7362 input=a9049054013a1b77]*/
+/*[clinic end generated code: output=fdf9a3519e34b6f4 input=a9049054013a1b77]*/
diff --git a/Modules/_multiprocessing/clinic/semaphore.c.h
b/Modules/_multiprocessing/clinic/semaphore.c.h
index 34dba39dab54143..962f0c88a3914fd 100644
--- a/Modules/_multiprocessing/clinic/semaphore.c.h
+++ b/Modules/_multiprocessing/clinic/semaphore.c.h
@@ -333,7 +333,7 @@ _multiprocessing_SemLock__rebuild(PyObject *type, PyObject
*const *args, Py_ssiz
int maxvalue;
const char *name;
- if (!_PyArg_ParseStack(args, nargs, ""F_SEM_HANDLE"iiz:_rebuild",
+ if (!PyArg_ParseArray(args, nargs, ""F_SEM_HANDLE"iiz:_rebuild",
&handle, &kind, &maxvalue, &name)) {
goto exit;
}
@@ -578,4 +578,4 @@ _multiprocessing_SemLock___exit__(PyObject *self, PyObject
*const *args, Py_ssiz
#ifndef _MULTIPROCESSING_SEMLOCK___EXIT___METHODDEF
#define _MULTIPROCESSING_SEMLOCK___EXIT___METHODDEF
#endif /* !defined(_MULTIPROCESSING_SEMLOCK___EXIT___METHODDEF) */
-/*[clinic end generated code: output=5c3a00b85537e647 input=a9049054013a1b77]*/
+/*[clinic end generated code: output=7a35732855b11781 input=a9049054013a1b77]*/
diff --git a/Modules/_testcapi/clinic/exceptions.c.h
b/Modules/_testcapi/clinic/exceptions.c.h
index 359f90a2b63bf80..21eee65cbde8a50 100644
--- a/Modules/_testcapi/clinic/exceptions.c.h
+++ b/Modules/_testcapi/clinic/exceptions.c.h
@@ -260,7 +260,7 @@ _testcapi_err_setstring(PyObject *module, PyObject *const
*args, Py_ssize_t narg
const char *value;
Py_ssize_t value_length;
- if (!_PyArg_ParseStack(args, nargs, "Oz#:err_setstring",
+ if (!PyArg_ParseArray(args, nargs, "Oz#:err_setstring",
&exc, &value, &value_length)) {
goto exit;
}
@@ -292,7 +292,7 @@ _testcapi_err_setfromerrnowithfilename(PyObject *module,
PyObject *const *args,
const char *value;
Py_ssize_t value_length;
- if (!_PyArg_ParseStack(args, nargs, "iOz#:err_setfromerrnowithfilename",
+ if (!PyArg_ParseArray(args, nargs, "iOz#:err_setfromerrnowithfilename",
&error, &exc, &value, &value_length)) {
goto exit;
}
@@ -370,7 +370,7 @@ _testcapi_fatal_error(PyObject *module, PyObject *const
*args, Py_ssize_t nargs)
const char *message;
int release_gil = 0;
- if (!_PyArg_ParseStack(args, nargs, "y|p:fatal_error",
+ if (!PyArg_ParseArray(args, nargs, "y|p:fatal_error",
&message, &release_gil)) {
goto exit;
}
@@ -481,4 +481,4 @@ _testcapi_unstable_exc_prep_reraise_star(PyObject *module,
PyObject *const *args
exit:
return return_value;
}
-/*[clinic end generated code: output=89fd3856718cf39c input=a9049054013a1b77]*/
+/*[clinic end generated code: output=93dfd0e1ca2253b6 input=a9049054013a1b77]*/
diff --git a/Modules/_testcapi/clinic/file.c.h
b/Modules/_testcapi/clinic/file.c.h
index 08df729cb977386..5e8b8562ac6e533 100644
--- a/Modules/_testcapi/clinic/file.c.h
+++ b/Modules/_testcapi/clinic/file.c.h
@@ -52,7 +52,7 @@ _testcapi_py_fopen(PyObject *module, PyObject *const *args,
Py_ssize_t nargs)
const char *mode;
Py_ssize_t mode_length;
- if (!_PyArg_ParseStack(args, nargs, "Oz#:py_fopen",
+ if (!PyArg_ParseArray(args, nargs, "Oz#:py_fopen",
&path, &mode, &mode_length)) {
goto exit;
}
@@ -95,4 +95,4 @@ _testcapi_py_universalnewlinefgets(PyObject *module, PyObject
*const *args, Py_s
exit:
return return_value;
}
-/*[clinic end generated code: output=a5ed111054e3a0bc input=a9049054013a1b77]*/
+/*[clinic end generated code: output=8079c9d50d559d71 input=a9049054013a1b77]*/
diff --git a/Modules/_testcapi/clinic/float.c.h
b/Modules/_testcapi/clinic/float.c.h
index d5a00c8072da1ef..b56b74a3536f931 100644
--- a/Modules/_testcapi/clinic/float.c.h
+++ b/Modules/_testcapi/clinic/float.c.h
@@ -72,7 +72,7 @@ _testcapi_float_unpack(PyObject *module, PyObject *const
*args, Py_ssize_t nargs
Py_ssize_t data_length;
int le;
- if (!_PyArg_ParseStack(args, nargs, "y#i:float_unpack",
+ if (!PyArg_ParseArray(args, nargs, "y#i:float_unpack",
&data, &data_length, &le)) {
goto exit;
}
@@ -81,4 +81,4 @@ _testcapi_float_unpack(PyObject *module, PyObject *const
*args, Py_ssize_t nargs
exit:
return return_value;
}
-/*[clinic end generated code: output=b43dfd3a77fe04ba input=a9049054013a1b77]*/
+/*[clinic end generated code: output=397689b93b97e397 input=a9049054013a1b77]*/
diff --git a/Modules/clinic/_cursesmodule.c.h b/Modules/clinic/_cursesmodule.c.h
index 1eb42e884a61ec1..553843ab96a7af7 100644
--- a/Modules/clinic/_cursesmodule.c.h
+++ b/Modules/clinic/_cursesmodule.c.h
@@ -5834,7 +5834,7 @@ _curses_tparm(PyObject *module, PyObject *const *args,
Py_ssize_t nargs)
int i8 = 0;
int i9 = 0;
- if (!_PyArg_ParseStack(args, nargs, "y|iiiiiiiii:tparm",
+ if (!PyArg_ParseArray(args, nargs, "y|iiiiiiiii:tparm",
&str, &i1, &i2, &i3, &i4, &i5, &i6, &i7, &i8, &i9)) {
goto exit;
}
@@ -6715,4 +6715,4 @@ _curses_has_extended_color_support(PyObject *module,
PyObject *Py_UNUSED(ignored
#ifndef _CURSES_ASSUME_DEFAULT_COLORS_METHODDEF
#define _CURSES_ASSUME_DEFAULT_COLORS_METHODDEF
#endif /* !defined(_CURSES_ASSUME_DEFAULT_COLORS_METHODDEF) */
-/*[clinic end generated code: output=957470523e2b0eb1 input=a9049054013a1b77]*/
+/*[clinic end generated code: output=422461e62cb86010 input=a9049054013a1b77]*/
diff --git a/Modules/clinic/_dbmmodule.c.h b/Modules/clinic/_dbmmodule.c.h
index 6a61185c032b7ca..14657b5b688221e 100644
--- a/Modules/clinic/_dbmmodule.c.h
+++ b/Modules/clinic/_dbmmodule.c.h
@@ -83,7 +83,7 @@ _dbm_dbm_get(PyObject *self, PyTypeObject *cls, PyObject
*const *args, Py_ssize_
if (!_PyArg_NoKwnames("get", kwnames)) {
goto exit;
}
- if (!_PyArg_ParseStack(args, nargs, "s#|O:get",
+ if (!PyArg_ParseArray(args, nargs, "s#|O:get",
&key, &key_length, &default_value)) {
goto exit;
}
@@ -122,7 +122,7 @@ _dbm_dbm_setdefault(PyObject *self, PyTypeObject *cls,
PyObject *const *args, Py
if (!_PyArg_NoKwnames("setdefault", kwnames)) {
goto exit;
}
- if (!_PyArg_ParseStack(args, nargs, "s#|O:setdefault",
+ if (!PyArg_ParseArray(args, nargs, "s#|O:setdefault",
&key, &key_length, &default_value)) {
goto exit;
}
@@ -249,4 +249,4 @@ dbmopen(PyObject *module, PyObject *const *args, Py_ssize_t
nargs)
exit:
return return_value;
}
-/*[clinic end generated code: output=1ad0e5f0f4c7e9dd input=a9049054013a1b77]*/
+/*[clinic end generated code: output=f9d904af4ea43d1d input=a9049054013a1b77]*/
diff --git a/Modules/clinic/_gdbmmodule.c.h b/Modules/clinic/_gdbmmodule.c.h
index 13cc70390f51e3e..a6991041ffae041 100644
--- a/Modules/clinic/_gdbmmodule.c.h
+++ b/Modules/clinic/_gdbmmodule.c.h
@@ -194,7 +194,7 @@ _gdbm_gdbm_nextkey(PyObject *self, PyTypeObject *cls,
PyObject *const *args, Py_
if (!_PyArg_NoKwnames("nextkey", kwnames)) {
goto exit;
}
- if (!_PyArg_ParseStack(args, nargs, "s#:nextkey",
+ if (!PyArg_ParseArray(args, nargs, "s#:nextkey",
&key, &key_length)) {
goto exit;
}
@@ -401,4 +401,4 @@ dbmopen(PyObject *module, PyObject *const *args, Py_ssize_t
nargs)
exit:
return return_value;
}
-/*[clinic end generated code: output=a3249cf7b6c4fae9 input=a9049054013a1b77]*/
+/*[clinic end generated code: output=ea86a820d233fcad input=a9049054013a1b77]*/
diff --git a/Modules/clinic/_testclinic.c.h b/Modules/clinic/_testclinic.c.h
index 3fbf9c836a9abd7..515d5174bd32e7d 100644
--- a/Modules/clinic/_testclinic.c.h
+++ b/Modules/clinic/_testclinic.c.h
@@ -1530,7 +1530,7 @@ str_converter(PyObject *module, PyObject *const *args,
Py_ssize_t nargs)
const char *c = "c";
Py_ssize_t c_length;
- if (!_PyArg_ParseStack(args, nargs, "|sys#:str_converter",
+ if (!PyArg_ParseArray(args, nargs, "|sys#:str_converter",
&a, &b, &c, &c_length)) {
goto exit;
}
@@ -1561,7 +1561,7 @@ str_converter_encoding(PyObject *module, PyObject *const
*args, Py_ssize_t nargs
char *c = NULL;
Py_ssize_t c_length;
- if (!_PyArg_ParseStack(args, nargs, "esetet#:str_converter_encoding",
+ if (!PyArg_ParseArray(args, nargs, "esetet#:str_converter_encoding",
"idna", &a, "idna", &b, "idna", &c, &c_length)) {
goto exit;
}
@@ -1595,7 +1595,7 @@ py_buffer_converter(PyObject *module, PyObject *const
*args, Py_ssize_t nargs)
Py_buffer a = {NULL, NULL};
Py_buffer b = {NULL, NULL};
- if (!_PyArg_ParseStack(args, nargs, "z*w*:py_buffer_converter",
+ if (!PyArg_ParseArray(args, nargs, "z*w*:py_buffer_converter",
&a, &b)) {
goto exit;
}
@@ -3895,7 +3895,7 @@ gh_99240_double_free(PyObject *module, PyObject *const
*args, Py_ssize_t nargs)
char *a = NULL;
char *b = NULL;
- if (!_PyArg_ParseStack(args, nargs, "eses:gh_99240_double_free",
+ if (!PyArg_ParseArray(args, nargs, "eses:gh_99240_double_free",
"idna", &a, "idna", &b)) {
goto exit;
}
@@ -5309,4 +5309,4 @@ vc_kwonly_vectorcall(PyObject *type, PyObject *const
*args,
kwnames ? PyTuple_GET_SIZE(kwnames) : 0,
NULL, kwnames);
}
-/*[clinic end generated code: output=e1f97f59fec61b6b input=a9049054013a1b77]*/
+/*[clinic end generated code: output=17b9ff8218a250fe input=a9049054013a1b77]*/
diff --git a/Modules/clinic/_winapi.c.h b/Modules/clinic/_winapi.c.h
index 144d03bdf30dcf0..88e4f1b0708ff41 100644
--- a/Modules/clinic/_winapi.c.h
+++ b/Modules/clinic/_winapi.c.h
@@ -271,7 +271,7 @@ _winapi_CreateFile(PyObject *module, PyObject *const *args,
Py_ssize_t nargs)
HANDLE template_file;
HANDLE _return_value;
- if (!_PyArg_ParseStack(args, nargs, "O&kk" F_POINTER
"kk"_Py_PARSE_UINTPTR":CreateFile",
+ if (!PyArg_ParseArray(args, nargs, "O&kk" F_POINTER
"kk"_Py_PARSE_UINTPTR":CreateFile",
_PyUnicode_WideCharString_Converter, &file_name, &desired_access,
&share_mode, &security_attributes, &creation_disposition,
&flags_and_attributes, &template_file)) {
goto exit;
}
@@ -318,7 +318,7 @@ _winapi_CreateFileMapping(PyObject *module, PyObject *const
*args, Py_ssize_t na
LPCWSTR name = NULL;
HANDLE _return_value;
- if (!_PyArg_ParseStack(args, nargs, ""_Py_PARSE_UINTPTR"" F_POINTER
"kkkO&:CreateFileMapping",
+ if (!PyArg_ParseArray(args, nargs, ""_Py_PARSE_UINTPTR"" F_POINTER
"kkkO&:CreateFileMapping",
&file_handle, &security_attributes, &protect, &max_size_high,
&max_size_low, _PyUnicode_WideCharString_Converter, &name)) {
goto exit;
}
@@ -487,7 +487,7 @@ _winapi_CreateNamedPipe(PyObject *module, PyObject *const
*args, Py_ssize_t narg
LPSECURITY_ATTRIBUTES security_attributes;
HANDLE _return_value;
- if (!_PyArg_ParseStack(args, nargs, "O&kkkkkk" F_POINTER
":CreateNamedPipe",
+ if (!PyArg_ParseArray(args, nargs, "O&kkkkkk" F_POINTER ":CreateNamedPipe",
_PyUnicode_WideCharString_Converter, &name, &open_mode, &pipe_mode,
&max_instances, &out_buffer_size, &in_buffer_size, &default_timeout,
&security_attributes)) {
goto exit;
}
@@ -2123,7 +2123,7 @@ _winapi_TerminateProcess(PyObject *module, PyObject
*const *args, Py_ssize_t nar
HANDLE handle;
UINT exit_code;
- if (!_PyArg_ParseStack(args, nargs,
""_Py_PARSE_UINTPTR"I:TerminateProcess",
+ if (!PyArg_ParseArray(args, nargs, ""_Py_PARSE_UINTPTR"I:TerminateProcess",
&handle, &exit_code)) {
goto exit;
}
@@ -3057,4 +3057,4 @@ _winapi_GetTickCount64(PyObject *module, PyObject
*Py_UNUSED(ignored))
#ifndef _WINAPI_GETSHORTPATHNAME_METHODDEF
#define _WINAPI_GETSHORTPATHNAME_METHODDEF
#endif /* !defined(_WINAPI_GETSHORTPATHNAME_METHODDEF) */
-/*[clinic end generated code: output=8173751196d44211 input=a9049054013a1b77]*/
+/*[clinic end generated code: output=15ab8b04851932e1 input=a9049054013a1b77]*/
diff --git a/Python/getargs.c b/Python/getargs.c
index 3f423266bff7f47..c3e85b2089bb2a9 100644
--- a/Python/getargs.c
+++ b/Python/getargs.c
@@ -124,18 +124,6 @@ _PyArg_ParseTuple_SizeT(PyObject *args, const char
*format, ...)
}
-int
-_PyArg_ParseStack(PyObject *const *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_ParseArray(PyObject *const *args, Py_ssize_t nargs, const char *format,
...)
{
diff --git a/Tools/clinic/libclinic/parse_args.py
b/Tools/clinic/libclinic/parse_args.py
index 2fd9df7fdc63052..a3ab39376320de7 100644
--- a/Tools/clinic/libclinic/parse_args.py
+++ b/Tools/clinic/libclinic/parse_args.py
@@ -999,19 +999,19 @@ def render_parse_all_arguments(self) -> str:
"""
self.use_converters()
if self.limited_capi:
- # _PyArg_ParseStack() is not part of the limited C API.
+ # PyArg_ParseArray() is not part of the limited C API.
self.fastcall = False
if self.fastcall:
self.codegen.add_include('pycore_modsupport.h',
- '_PyArg_ParseStack()')
- return '_PyArg_ParseStack(args, nargs, '
+ 'PyArg_ParseArray()')
+ return 'PyArg_ParseArray(args, nargs, '
self.flags = "METH_VARARGS"
self.parser_prototype = PARSER_PROTOTYPE_VARARGS
return 'PyArg_ParseTuple(args, '
def parse_pos_only(self) -> None:
# positional-only, but no option groups: we only need one call
- # to _PyArg_ParseStack or PyArg_ParseTuple
+ # to PyArg_ParseArray or PyArg_ParseTuple
nargs, argname_fmt = self.select_positional_convention()
parser_code = []
_______________________________________________
Python-checkins mailing list -- [email protected]
To unsubscribe send an email to [email protected]
https://mail.python.org/mailman3//lists/python-checkins.python.org
Member address: [email protected]