]> git.ipfire.org Git - thirdparty/Python/cpython.git/commit
gh-122943: Rework support of var-positional parameter in Argument Clinic (GH-122945)
authorSerhiy Storchaka <storchaka@gmail.com>
Thu, 7 Nov 2024 21:40:03 +0000 (23:40 +0200)
committerGitHub <noreply@github.com>
Thu, 7 Nov 2024 21:40:03 +0000 (23:40 +0200)
commit1f777396f52a4cf7417f56097f10add8042295f4
treed2b16073b0665beba75e900fff1dd2daf24b0717
parent09d6f5dc7824c74672add512619e978844ff8051
gh-122943: Rework support of var-positional parameter in Argument Clinic (GH-122945)

Move creation of a tuple for var-positional parameter out of
_PyArg_UnpackKeywordsWithVararg().
Merge _PyArg_UnpackKeywordsWithVararg() with _PyArg_UnpackKeywords().
Add a new parameter in _PyArg_UnpackKeywords().

The "parameters" and "converters" attributes of ParseArgsCodeGen no
longer contain the var-positional parameter. It is now available as the
"varpos" attribute. Optimize code generation for var-positional
parameter and reuse the same generating code for functions with and without
keyword parameters.

Add special converters for var-positional parameter. "tuple" represents it as
a Python tuple and "array" represents it as a continuous array of PyObject*.
"object" is a temporary alias of "tuple".
22 files changed:
Include/internal/pycore_modsupport.h
Include/internal/pycore_tuple.h
Lib/test/clinic.test.c
Lib/test/test_clinic.py
Modules/_testclinic.c
Modules/clinic/_testclinic.c.h
Modules/clinic/_testclinic_depr.c.h
Modules/clinic/gcmodule.c.h
Modules/clinic/mathmodule.c.h
Modules/gcmodule.c
Modules/mathmodule.c
Objects/clinic/setobject.c.h
Objects/clinic/typevarobject.c.h
Objects/setobject.c
Python/clinic/bltinmodule.c.h
Python/getargs.c
Tools/c-analyzer/c_parser/parser/__init__.py
Tools/clinic/libclinic/clanguage.py
Tools/clinic/libclinic/converter.py
Tools/clinic/libclinic/converters.py
Tools/clinic/libclinic/dsl_parser.py
Tools/clinic/libclinic/parse_args.py