Uh oh!
There was an error while loading.Please reload this page.
- Notifications
You must be signed in to change notification settings - Fork32.4k
gh-110964: Remove private _PyArg functions#110966
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
Uh oh!
There was an error while loading.Please reload this page.
Conversation
This change is big because it changes 122 files generated by Argument Clinic:
I prefer to write a single PR to move all private _PyArg functions at once,because each moved function touch many files generated by AC. |
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.
The AC changes look fine to me! (I'll leave the question of whether the changes are worth making to those more skilled in C.)
Move the following private functions and structures topycore_modsupport.h internal C API:* _PyArg_BadArgument()* _PyArg_CheckPositional()* _PyArg_NoKeywords()* _PyArg_NoPositional()* _PyArg_ParseStack()* _PyArg_ParseStackAndKeywords()* _PyArg_Parser structure* _PyArg_UnpackKeywords()* _PyArg_UnpackKeywordsWithVararg()* _PyArg_UnpackStack()* _Py_ANY_VARARGS()Changes:* Python/getargs.h now includes pycore_modsupport.h to export functions.* clinic.py now adds pycore_modsupport.h when one of these functions is used.* Add pycore_modsupport.h includes when a C extension uses one of these functions.* Define Py_BUILD_CORE_MODULE in C extensions which now include directly or indirectly (via code generated by Argument Clinic) pycore_modsupport.h: * _csv * _curses_panel * _dbm * _gdbm * _multiprocessing.posixshmem * _sqlite.row * _statistics * grp * resource * syslog* _testcapi: bad_get() no longer uses METH_FASTCALL calling convention but METH_VARARGS. Replace _PyArg_UnpackStack() with PyArg_ParseTuple().* _testcapi: add PYTESTCAPI_NEED_INTERNAL_API macro which is defined by _testcapi sub-modules which need the internal C API (pycore_modsupport.h): exceptions.c, float.c, vectorcall.c, watchers.c.* Remove Include/cpython/modsupport.h header file. Include/modsupport.h no longer includes the removed header file.* Fix mypy clinic.py
For clinic.py, I was lazy and used the In short, clinic.py should be reworked later, once this change lands. |
if clinic is not None: | ||
clinic.add_include('pycore_modsupport.h', '_PyArg_BadArgument()') |
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.
or perhaps this?
ifclinicisnotNone: | |
clinic.add_include('pycore_modsupport.h','_PyArg_BadArgument()') | |
assertclinicisnotNone | |
clinic.add_include('pycore_modsupport.h','_PyArg_BadArgument()') |
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.
As explained in my previous comment, I plan to write a follow-up for this code. We should not use the global variable, but pass an argument whichcannot be None.
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.
Yes, I agree that's the more principled action in the longer term, and I'm fine with using the easier solution for now. But this is the same number of lines, and I think makes it clearer that we never expectclinic
to beNone
here (if it isNone
, something has gone horribly wrong :-)
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.
PR to refactor this code, to avoidif clinic is not None
: PR#110982.
I wrote PR#110984 for that. |
I merged my PR.@AlexWaygood: thanks for reviewing clinic.py changes. |
Move the following private functions and structures topycore_modsupport.h internal C API:* _PyArg_BadArgument()* _PyArg_CheckPositional()* _PyArg_NoKeywords()* _PyArg_NoPositional()* _PyArg_ParseStack()* _PyArg_ParseStackAndKeywords()* _PyArg_Parser structure* _PyArg_UnpackKeywords()* _PyArg_UnpackKeywordsWithVararg()* _PyArg_UnpackStack()* _Py_ANY_VARARGS()Changes:* Python/getargs.h now includes pycore_modsupport.h to export functions.* clinic.py now adds pycore_modsupport.h when one of these functions is used.* Add pycore_modsupport.h includes when a C extension uses one of these functions.* Define Py_BUILD_CORE_MODULE in C extensions which now include directly or indirectly (via code generated by Argument Clinic) pycore_modsupport.h: * _csv * _curses_panel * _dbm * _gdbm * _multiprocessing.posixshmem * _sqlite.row * _statistics * grp * resource * syslog* _testcapi: bad_get() no longer uses METH_FASTCALL calling convention but METH_VARARGS. Replace _PyArg_UnpackStack() with PyArg_ParseTuple().* _testcapi: add PYTESTCAPI_NEED_INTERNAL_API macro which is defined by _testcapi sub-modules which need the internal C API (pycore_modsupport.h): exceptions.c, float.c, vectorcall.c, watchers.c.* Remove Include/cpython/modsupport.h header file. Include/modsupport.h no longer includes the removed header file.* Fix mypy clinic.py
Python 3.13 made this private:python/cpython#110966Fixespygame#4099
Move the following private functions and structures topycore_modsupport.h internal C API:* _PyArg_BadArgument()* _PyArg_CheckPositional()* _PyArg_NoKeywords()* _PyArg_NoPositional()* _PyArg_ParseStack()* _PyArg_ParseStackAndKeywords()* _PyArg_Parser structure* _PyArg_UnpackKeywords()* _PyArg_UnpackKeywordsWithVararg()* _PyArg_UnpackStack()* _Py_ANY_VARARGS()Changes:* Python/getargs.h now includes pycore_modsupport.h to export functions.* clinic.py now adds pycore_modsupport.h when one of these functions is used.* Add pycore_modsupport.h includes when a C extension uses one of these functions.* Define Py_BUILD_CORE_MODULE in C extensions which now include directly or indirectly (via code generated by Argument Clinic) pycore_modsupport.h: * _csv * _curses_panel * _dbm * _gdbm * _multiprocessing.posixshmem * _sqlite.row * _statistics * grp * resource * syslog* _testcapi: bad_get() no longer uses METH_FASTCALL calling convention but METH_VARARGS. Replace _PyArg_UnpackStack() with PyArg_ParseTuple().* _testcapi: add PYTESTCAPI_NEED_INTERNAL_API macro which is defined by _testcapi sub-modules which need the internal C API (pycore_modsupport.h): exceptions.c, float.c, vectorcall.c, watchers.c.* Remove Include/cpython/modsupport.h header file. Include/modsupport.h no longer includes the removed header file.* Fix mypy clinic.py
Uh oh!
There was an error while loading.Please reload this page.
Move the following private functions and structures to pycore_modsupport.h internal C API:
Changes:
Python/getargs.h now includes pycore_modsupport.h to export functions.
clinic.py now adds pycore_modsupport.h when one of these functions is used.
Add pycore_modsupport.h includes when a C extension uses one of these functions.
Define Py_BUILD_CORE_MODULE in C extensions which now include directly or indirectly (via code generated by Argument Clinic) pycore_modsupport.h:
_testcapi: bad_get() no longer uses METH_FASTCALL calling convention but METH_VARARGS. Replace _PyArg_UnpackStack() with PyArg_ParseTuple().
_testcapi: add PYTESTCAPI_NEED_INTERNAL_API macro which is defined by _testcapi sub-modules which need the internal C API (pycore_modsupport.h): exceptions.c, float.c, vectorcall.c, watchers.c.
Remove Include/cpython/modsupport.h header file. Include/modsupport.h no longer includes the removed header file.