Uh oh!
There was an error while loading.Please reload this page.
- Notifications
You must be signed in to change notification settings - Fork34k
gh-144175: Add PyArg_ParseVector() function#144283
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to ourterms of service andprivacy statement. We’ll occasionally send you account related emails.
Already on GitHub?Sign in to your account
base:main
Are you sure you want to change the base?
Conversation
vstinner commentedJan 27, 2026
The change doesn't include tests because my plan is to write a following PR to rename |
Uh oh!
There was an error while loading.Please reload this page.
Uh oh!
There was an error while loading.Please reload this page.
Co-authored-by: Bénédikt Tran <10796600+picnixz@users.noreply.github.com>
vstinner commentedJan 28, 2026
Ok, I completed the PR to add also |
vstinner commentedJan 28, 2026
I propose the following API: intPyArg_ParseVector(PyObject*const*args,Py_ssize_tnargs,constchar*format, ...);intPyArg_ParseVectorAndKeywords(PyObject*const*args,Py_ssize_tnargs,PyObject*kwnames,constchar*format,char*const*kwlist, ...); |
| Py_ssize_t nargs, | ||
| PyObject *kwnames, | ||
| constchar *format, | ||
| PY_CXX_CONSTchar *const *kwlist, |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others.Learn more.
Any reason to have PY_CXX_CONST? why now alwaysconst char *const *kwlist? (are there occurrences where we don't have a const?)
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others.Learn more.
Ifkwlist is declared asconst char * const *kwlist, I get a compiler error on the following code:
intarg,arg2=0;char*kwlist[]= {"arg","arg2",NULL};if (!PyArg_ParseVectorAndKeywords(args,nargs,kwnames,"i|i",kwlist,&arg,&arg2)) {returnNULL; }
Error:
./Modules/_testcapimodule.c: In function 'fastcall_kwnames':./Modules/_testcapimodule.c:2603:68: error: passing argument 5 of 'PyArg_ParseVectorAndKeywords' from incompatible pointer type [-Wincompatible-pointer-types] 2603 | if (!PyArg_ParseVectorAndKeywords(args, nargs, kwnames, "i|i", kwlist, | ^~~~~~ | | | char **In file included from ./Include/modsupport.h:153, from ./Include/Python.h:132, from ./Modules/_testcapi/parts.h:25, from ./Modules/_testcapimodule.c:13:./Include/cpython/modsupport.h:15:25: note: expected 'const char * const*' but argument is of type 'char **' 15 | const char * const *kwlist, | ~~~~~~~~~~~~~~~~~~~~^~~~~~PY_CXX_CONST is also used forkwlist byPyArg_ParseTupleAndKeywords() for example.
PY_CXX_CONST is only defined asconst if building C++.
Uh oh!
There was an error while loading.Please reload this page.
📚 Documentation preview 📚:https://cpython-previews--144283.org.readthedocs.build/