From 559d74feb3bf5daf7a89996c4ad104a804c09cff Mon Sep 17 00:00:00 2001 From: sobolevn Date: Mon, 15 May 2023 13:10:22 +0300 Subject: [PATCH 1/3] gh-104469: Convert _testcapi/watchers.c to use AC --- Modules/_testcapi/clinic/watchers.c.h | 204 ++++++++++++++++++++++++++ Modules/_testcapi/watchers.c | 117 +++++++++------ 2 files changed, 279 insertions(+), 42 deletions(-) create mode 100644 Modules/_testcapi/clinic/watchers.c.h diff --git a/Modules/_testcapi/clinic/watchers.c.h b/Modules/_testcapi/clinic/watchers.c.h new file mode 100644 index 00000000000000..18cab07a4af673 --- /dev/null +++ b/Modules/_testcapi/clinic/watchers.c.h @@ -0,0 +1,204 @@ +/*[clinic input] +preserve +[clinic start generated code]*/ + +#if defined(Py_BUILD_CORE) && !defined(Py_BUILD_CORE_MODULE) +# include "pycore_gc.h" // PyGC_Head +# include "pycore_runtime.h" // _Py_ID() +#endif + + +PyDoc_STRVAR(_testcapi_watch_dict__doc__, +"watch_dict($module, watcher_id, dict, /)\n" +"--\n" +"\n" +"Watch dict."); + +#define _TESTCAPI_WATCH_DICT_METHODDEF \ + {"watch_dict", _PyCFunction_CAST(_testcapi_watch_dict), METH_FASTCALL, _testcapi_watch_dict__doc__}, + +static PyObject * +_testcapi_watch_dict_impl(PyObject *module, int watcher_id, PyObject *dict); + +static PyObject * +_testcapi_watch_dict(PyObject *module, PyObject *const *args, Py_ssize_t nargs) +{ + PyObject *return_value = NULL; + int watcher_id; + PyObject *dict; + + if (!_PyArg_CheckPositional("watch_dict", nargs, 2, 2)) { + goto exit; + } + watcher_id = _PyLong_AsInt(args[0]); + if (watcher_id == -1 && PyErr_Occurred()) { + goto exit; + } + dict = args[1]; + return_value = _testcapi_watch_dict_impl(module, watcher_id, dict); + +exit: + return return_value; +} + +PyDoc_STRVAR(_testcapi_unwatch_dict__doc__, +"unwatch_dict($module, watcher_id, dict, /)\n" +"--\n" +"\n" +"Unwatch dict."); + +#define _TESTCAPI_UNWATCH_DICT_METHODDEF \ + {"unwatch_dict", _PyCFunction_CAST(_testcapi_unwatch_dict), METH_FASTCALL, _testcapi_unwatch_dict__doc__}, + +static PyObject * +_testcapi_unwatch_dict_impl(PyObject *module, int watcher_id, PyObject *dict); + +static PyObject * +_testcapi_unwatch_dict(PyObject *module, PyObject *const *args, Py_ssize_t nargs) +{ + PyObject *return_value = NULL; + int watcher_id; + PyObject *dict; + + if (!_PyArg_CheckPositional("unwatch_dict", nargs, 2, 2)) { + goto exit; + } + watcher_id = _PyLong_AsInt(args[0]); + if (watcher_id == -1 && PyErr_Occurred()) { + goto exit; + } + dict = args[1]; + return_value = _testcapi_unwatch_dict_impl(module, watcher_id, dict); + +exit: + return return_value; +} + +PyDoc_STRVAR(_testcapi_watch_type__doc__, +"watch_type($module, watcher_id, type, /)\n" +"--\n" +"\n" +"Watch type."); + +#define _TESTCAPI_WATCH_TYPE_METHODDEF \ + {"watch_type", _PyCFunction_CAST(_testcapi_watch_type), METH_FASTCALL, _testcapi_watch_type__doc__}, + +static PyObject * +_testcapi_watch_type_impl(PyObject *module, int watcher_id, PyObject *type); + +static PyObject * +_testcapi_watch_type(PyObject *module, PyObject *const *args, Py_ssize_t nargs) +{ + PyObject *return_value = NULL; + int watcher_id; + PyObject *type; + + if (!_PyArg_CheckPositional("watch_type", nargs, 2, 2)) { + goto exit; + } + watcher_id = _PyLong_AsInt(args[0]); + if (watcher_id == -1 && PyErr_Occurred()) { + goto exit; + } + type = args[1]; + return_value = _testcapi_watch_type_impl(module, watcher_id, type); + +exit: + return return_value; +} + +PyDoc_STRVAR(_testcapi_unwatch_type__doc__, +"unwatch_type($module, watcher_id, type, /)\n" +"--\n" +"\n" +"Unwatch type."); + +#define _TESTCAPI_UNWATCH_TYPE_METHODDEF \ + {"unwatch_type", _PyCFunction_CAST(_testcapi_unwatch_type), METH_FASTCALL, _testcapi_unwatch_type__doc__}, + +static PyObject * +_testcapi_unwatch_type_impl(PyObject *module, int watcher_id, PyObject *type); + +static PyObject * +_testcapi_unwatch_type(PyObject *module, PyObject *const *args, Py_ssize_t nargs) +{ + PyObject *return_value = NULL; + int watcher_id; + PyObject *type; + + if (!_PyArg_CheckPositional("unwatch_type", nargs, 2, 2)) { + goto exit; + } + watcher_id = _PyLong_AsInt(args[0]); + if (watcher_id == -1 && PyErr_Occurred()) { + goto exit; + } + type = args[1]; + return_value = _testcapi_unwatch_type_impl(module, watcher_id, type); + +exit: + return return_value; +} + +PyDoc_STRVAR(_testcapi_set_func_defaults_via_capi__doc__, +"set_func_defaults_via_capi($module, func, defaults, /)\n" +"--\n" +"\n" +"Set default values to a given function."); + +#define _TESTCAPI_SET_FUNC_DEFAULTS_VIA_CAPI_METHODDEF \ + {"set_func_defaults_via_capi", _PyCFunction_CAST(_testcapi_set_func_defaults_via_capi), METH_FASTCALL, _testcapi_set_func_defaults_via_capi__doc__}, + +static PyObject * +_testcapi_set_func_defaults_via_capi_impl(PyObject *module, PyObject *func, + PyObject *defaults); + +static PyObject * +_testcapi_set_func_defaults_via_capi(PyObject *module, PyObject *const *args, Py_ssize_t nargs) +{ + PyObject *return_value = NULL; + PyObject *func; + PyObject *defaults; + + if (!_PyArg_CheckPositional("set_func_defaults_via_capi", nargs, 2, 2)) { + goto exit; + } + func = args[0]; + defaults = args[1]; + return_value = _testcapi_set_func_defaults_via_capi_impl(module, func, defaults); + +exit: + return return_value; +} + +PyDoc_STRVAR(_testcapi_set_func_kwdefaults_via_capi__doc__, +"set_func_kwdefaults_via_capi($module, func, kwdefaults, /)\n" +"--\n" +"\n" +"Set keyword deafult values to a given function."); + +#define _TESTCAPI_SET_FUNC_KWDEFAULTS_VIA_CAPI_METHODDEF \ + {"set_func_kwdefaults_via_capi", _PyCFunction_CAST(_testcapi_set_func_kwdefaults_via_capi), METH_FASTCALL, _testcapi_set_func_kwdefaults_via_capi__doc__}, + +static PyObject * +_testcapi_set_func_kwdefaults_via_capi_impl(PyObject *module, PyObject *func, + PyObject *kwdefaults); + +static PyObject * +_testcapi_set_func_kwdefaults_via_capi(PyObject *module, PyObject *const *args, Py_ssize_t nargs) +{ + PyObject *return_value = NULL; + PyObject *func; + PyObject *kwdefaults; + + if (!_PyArg_CheckPositional("set_func_kwdefaults_via_capi", nargs, 2, 2)) { + goto exit; + } + func = args[0]; + kwdefaults = args[1]; + return_value = _testcapi_set_func_kwdefaults_via_capi_impl(module, func, kwdefaults); + +exit: + return return_value; +} +/*[clinic end generated code: output=6fe009b91cf50293 input=a9049054013a1b77]*/ diff --git a/Modules/_testcapi/watchers.c b/Modules/_testcapi/watchers.c index 1284fdc2767b6c..9ce8a5ae57104a 100644 --- a/Modules/_testcapi/watchers.c +++ b/Modules/_testcapi/watchers.c @@ -1,9 +1,16 @@ #include "parts.h" +#include "clinic/watchers.c.h" + #define Py_BUILD_CORE #include "pycore_function.h" // FUNC_MAX_WATCHERS #include "pycore_code.h" // CODE_MAX_WATCHERS +/*[clinic input] +module _testcapi +[clinic start generated code]*/ +/*[clinic end generated code: output=da39a3ee5e6b4b0d input=6361033e795369fc]*/ + // Test dict watching static PyObject *g_dict_watch_events; static int g_dict_watchers_installed; @@ -119,28 +126,36 @@ clear_dict_watcher(PyObject *self, PyObject *watcher_id) Py_RETURN_NONE; } +/*[clinic input] +_testcapi.watch_dict + watcher_id: int + dict: object + / +Watch dict. +[clinic start generated code]*/ + static PyObject * -watch_dict(PyObject *self, PyObject *args) +_testcapi_watch_dict_impl(PyObject *module, int watcher_id, PyObject *dict) +/*[clinic end generated code: output=1426e0273cebe2d8 input=ffbe7762b6c79c52]*/ { - PyObject *dict; - int watcher_id; - if (!PyArg_ParseTuple(args, "iO", &watcher_id, &dict)) { - return NULL; - } if (PyDict_Watch(watcher_id, dict)) { return NULL; } Py_RETURN_NONE; } +/*[clinic input] +_testcapi.unwatch_dict + watcher_id: int + dict: object + / +Unwatch dict. +[clinic start generated code]*/ + static PyObject * -unwatch_dict(PyObject *self, PyObject *args) +_testcapi_unwatch_dict_impl(PyObject *module, int watcher_id, PyObject *dict) +/*[clinic end generated code: output=512b1a71ae33c351 input=5621f8bbc4ef8e6a]*/ { - PyObject *dict; - int watcher_id; - if (!PyArg_ParseTuple(args, "iO", &watcher_id, &dict)) { - return NULL; - } if (PyDict_Unwatch(watcher_id, dict)) { return NULL; } @@ -250,28 +265,36 @@ get_type_modified_events(PyObject *self, PyObject *Py_UNUSED(args)) return Py_NewRef(g_type_modified_events); } +/*[clinic input] +_testcapi.watch_type + watcher_id: int + type: object + / +Watch type. +[clinic start generated code]*/ + static PyObject * -watch_type(PyObject *self, PyObject *args) +_testcapi_watch_type_impl(PyObject *module, int watcher_id, PyObject *type) +/*[clinic end generated code: output=fdf4777126724fc4 input=70ac8124d5b8296d]*/ { - PyObject *type; - int watcher_id; - if (!PyArg_ParseTuple(args, "iO", &watcher_id, &type)) { - return NULL; - } if (PyType_Watch(watcher_id, type)) { return NULL; } Py_RETURN_NONE; } +/*[clinic input] +_testcapi.unwatch_type + watcher_id: int + type: object + / +Unwatch type. +[clinic start generated code]*/ + static PyObject * -unwatch_type(PyObject *self, PyObject *args) +_testcapi_unwatch_type_impl(PyObject *module, int watcher_id, PyObject *type) +/*[clinic end generated code: output=0389672d4ad5f68b input=33cdc13902253394]*/ { - PyObject *type; - int watcher_id; - if (!PyArg_ParseTuple(args, "iO", &watcher_id, &type)) { - return NULL; - } if (PyType_Unwatch(watcher_id, type)) { return NULL; } @@ -605,28 +628,38 @@ allocate_too_many_func_watchers(PyObject *self, PyObject *args) Py_RETURN_NONE; } +/*[clinic input] +_testcapi.set_func_defaults_via_capi + func: object + defaults: object + / +Set default values to a given function. +[clinic start generated code]*/ + static PyObject * -set_func_defaults(PyObject *self, PyObject *args) +_testcapi_set_func_defaults_via_capi_impl(PyObject *module, PyObject *func, + PyObject *defaults) +/*[clinic end generated code: output=caf0cb39db31ac24 input=9a7d91215cd0f05b]*/ { - PyObject *func = NULL; - PyObject *defaults = NULL; - if (!PyArg_ParseTuple(args, "OO", &func, &defaults)) { - return NULL; - } if (PyFunction_SetDefaults(func, defaults) < 0) { return NULL; } Py_RETURN_NONE; } +/*[clinic input] +_testcapi.set_func_kwdefaults_via_capi + func: object + kwdefaults: object + / +Set keyword deafult values to a given function. +[clinic start generated code]*/ + static PyObject * -set_func_kwdefaults(PyObject *self, PyObject *args) +_testcapi_set_func_kwdefaults_via_capi_impl(PyObject *module, PyObject *func, + PyObject *kwdefaults) +/*[clinic end generated code: output=5ea36d7f9db6a01d input=ee84c08d30ae135e]*/ { - PyObject *func = NULL; - PyObject *kwdefaults = NULL; - if (!PyArg_ParseTuple(args, "OO", &func, &kwdefaults)) { - return NULL; - } if (PyFunction_SetKwDefaults(func, kwdefaults) < 0) { return NULL; } @@ -637,16 +670,16 @@ static PyMethodDef test_methods[] = { // Dict watchers. {"add_dict_watcher", add_dict_watcher, METH_O, NULL}, {"clear_dict_watcher", clear_dict_watcher, METH_O, NULL}, - {"watch_dict", watch_dict, METH_VARARGS, NULL}, - {"unwatch_dict", unwatch_dict, METH_VARARGS, NULL}, + _TESTCAPI_WATCH_DICT_METHODDEF + _TESTCAPI_UNWATCH_DICT_METHODDEF {"get_dict_watcher_events", (PyCFunction) get_dict_watcher_events, METH_NOARGS, NULL}, // Type watchers. {"add_type_watcher", add_type_watcher, METH_O, NULL}, {"clear_type_watcher", clear_type_watcher, METH_O, NULL}, - {"watch_type", watch_type, METH_VARARGS, NULL}, - {"unwatch_type", unwatch_type, METH_VARARGS, NULL}, + _TESTCAPI_WATCH_TYPE_METHODDEF + _TESTCAPI_UNWATCH_TYPE_METHODDEF {"get_type_modified_events", (PyCFunction) get_type_modified_events, METH_NOARGS, NULL}, @@ -663,8 +696,8 @@ static PyMethodDef test_methods[] = { // Function watchers. {"add_func_watcher", add_func_watcher, METH_O, NULL}, {"clear_func_watcher", clear_func_watcher, METH_O, NULL}, - {"set_func_defaults_via_capi", set_func_defaults, METH_VARARGS, NULL}, - {"set_func_kwdefaults_via_capi", set_func_kwdefaults, METH_VARARGS, NULL}, + _TESTCAPI_SET_FUNC_DEFAULTS_VIA_CAPI_METHODDEF + _TESTCAPI_SET_FUNC_KWDEFAULTS_VIA_CAPI_METHODDEF {"allocate_too_many_func_watchers", allocate_too_many_func_watchers, METH_NOARGS, NULL}, {NULL}, From ec2f0b071ec7e41d0d9e741faa95128b370e0827 Mon Sep 17 00:00:00 2001 From: sobolevn Date: Mon, 15 May 2023 15:15:33 +0300 Subject: [PATCH 2/3] Address review --- Modules/_testcapi/clinic/watchers.c.h | 14 +++++--------- Modules/_testcapi/watchers.c | 22 ++++++---------------- 2 files changed, 11 insertions(+), 25 deletions(-) diff --git a/Modules/_testcapi/clinic/watchers.c.h b/Modules/_testcapi/clinic/watchers.c.h index 18cab07a4af673..4339875c56263f 100644 --- a/Modules/_testcapi/clinic/watchers.c.h +++ b/Modules/_testcapi/clinic/watchers.c.h @@ -11,8 +11,7 @@ preserve PyDoc_STRVAR(_testcapi_watch_dict__doc__, "watch_dict($module, watcher_id, dict, /)\n" "--\n" -"\n" -"Watch dict."); +"\n"); #define _TESTCAPI_WATCH_DICT_METHODDEF \ {"watch_dict", _PyCFunction_CAST(_testcapi_watch_dict), METH_FASTCALL, _testcapi_watch_dict__doc__}, @@ -44,8 +43,7 @@ _testcapi_watch_dict(PyObject *module, PyObject *const *args, Py_ssize_t nargs) PyDoc_STRVAR(_testcapi_unwatch_dict__doc__, "unwatch_dict($module, watcher_id, dict, /)\n" "--\n" -"\n" -"Unwatch dict."); +"\n"); #define _TESTCAPI_UNWATCH_DICT_METHODDEF \ {"unwatch_dict", _PyCFunction_CAST(_testcapi_unwatch_dict), METH_FASTCALL, _testcapi_unwatch_dict__doc__}, @@ -77,8 +75,7 @@ _testcapi_unwatch_dict(PyObject *module, PyObject *const *args, Py_ssize_t nargs PyDoc_STRVAR(_testcapi_watch_type__doc__, "watch_type($module, watcher_id, type, /)\n" "--\n" -"\n" -"Watch type."); +"\n"); #define _TESTCAPI_WATCH_TYPE_METHODDEF \ {"watch_type", _PyCFunction_CAST(_testcapi_watch_type), METH_FASTCALL, _testcapi_watch_type__doc__}, @@ -110,8 +107,7 @@ _testcapi_watch_type(PyObject *module, PyObject *const *args, Py_ssize_t nargs) PyDoc_STRVAR(_testcapi_unwatch_type__doc__, "unwatch_type($module, watcher_id, type, /)\n" "--\n" -"\n" -"Unwatch type."); +"\n"); #define _TESTCAPI_UNWATCH_TYPE_METHODDEF \ {"unwatch_type", _PyCFunction_CAST(_testcapi_unwatch_type), METH_FASTCALL, _testcapi_unwatch_type__doc__}, @@ -201,4 +197,4 @@ _testcapi_set_func_kwdefaults_via_capi(PyObject *module, PyObject *const *args, exit: return return_value; } -/*[clinic end generated code: output=6fe009b91cf50293 input=a9049054013a1b77]*/ +/*[clinic end generated code: output=8b0f3e8f8e0a49cf input=a9049054013a1b77]*/ diff --git a/Modules/_testcapi/watchers.c b/Modules/_testcapi/watchers.c index 9ce8a5ae57104a..de0887dd524129 100644 --- a/Modules/_testcapi/watchers.c +++ b/Modules/_testcapi/watchers.c @@ -131,12 +131,11 @@ _testcapi.watch_dict watcher_id: int dict: object / -Watch dict. [clinic start generated code]*/ static PyObject * _testcapi_watch_dict_impl(PyObject *module, int watcher_id, PyObject *dict) -/*[clinic end generated code: output=1426e0273cebe2d8 input=ffbe7762b6c79c52]*/ +/*[clinic end generated code: output=1426e0273cebe2d8 input=5d11ddf8ccb22a05]*/ { if (PyDict_Watch(watcher_id, dict)) { return NULL; @@ -145,16 +144,12 @@ _testcapi_watch_dict_impl(PyObject *module, int watcher_id, PyObject *dict) } /*[clinic input] -_testcapi.unwatch_dict - watcher_id: int - dict: object - / -Unwatch dict. +_testcapi.unwatch_dict = _testcapi.watch_dict [clinic start generated code]*/ static PyObject * _testcapi_unwatch_dict_impl(PyObject *module, int watcher_id, PyObject *dict) -/*[clinic end generated code: output=512b1a71ae33c351 input=5621f8bbc4ef8e6a]*/ +/*[clinic end generated code: output=512b1a71ae33c351 input=cae7dc1b6f7713b8]*/ { if (PyDict_Unwatch(watcher_id, dict)) { return NULL; @@ -270,12 +265,11 @@ _testcapi.watch_type watcher_id: int type: object / -Watch type. [clinic start generated code]*/ static PyObject * _testcapi_watch_type_impl(PyObject *module, int watcher_id, PyObject *type) -/*[clinic end generated code: output=fdf4777126724fc4 input=70ac8124d5b8296d]*/ +/*[clinic end generated code: output=fdf4777126724fc4 input=b0a72ed7db885ee8]*/ { if (PyType_Watch(watcher_id, type)) { return NULL; @@ -284,16 +278,12 @@ _testcapi_watch_type_impl(PyObject *module, int watcher_id, PyObject *type) } /*[clinic input] -_testcapi.unwatch_type - watcher_id: int - type: object - / -Unwatch type. +_testcapi.unwatch_type = _testcapi.watch_type [clinic start generated code]*/ static PyObject * _testcapi_unwatch_type_impl(PyObject *module, int watcher_id, PyObject *type) -/*[clinic end generated code: output=0389672d4ad5f68b input=33cdc13902253394]*/ +/*[clinic end generated code: output=0389672d4ad5f68b input=6701911fb45edc9e]*/ { if (PyType_Unwatch(watcher_id, type)) { return NULL; From 490e787fcbed07eb1658fe5542b089c87cbfb788 Mon Sep 17 00:00:00 2001 From: sobolevn Date: Mon, 15 May 2023 17:57:04 +0300 Subject: [PATCH 3/3] Fix CI --- Modules/_testcapi/clinic/watchers.c.h | 18 ++++++++---------- Modules/_testcapi/watchers.c | 19 +++++++------------ 2 files changed, 15 insertions(+), 22 deletions(-) diff --git a/Modules/_testcapi/clinic/watchers.c.h b/Modules/_testcapi/clinic/watchers.c.h index 4339875c56263f..975244bd59a36b 100644 --- a/Modules/_testcapi/clinic/watchers.c.h +++ b/Modules/_testcapi/clinic/watchers.c.h @@ -139,8 +139,7 @@ _testcapi_unwatch_type(PyObject *module, PyObject *const *args, Py_ssize_t nargs PyDoc_STRVAR(_testcapi_set_func_defaults_via_capi__doc__, "set_func_defaults_via_capi($module, func, defaults, /)\n" "--\n" -"\n" -"Set default values to a given function."); +"\n"); #define _TESTCAPI_SET_FUNC_DEFAULTS_VIA_CAPI_METHODDEF \ {"set_func_defaults_via_capi", _PyCFunction_CAST(_testcapi_set_func_defaults_via_capi), METH_FASTCALL, _testcapi_set_func_defaults_via_capi__doc__}, @@ -168,33 +167,32 @@ _testcapi_set_func_defaults_via_capi(PyObject *module, PyObject *const *args, Py } PyDoc_STRVAR(_testcapi_set_func_kwdefaults_via_capi__doc__, -"set_func_kwdefaults_via_capi($module, func, kwdefaults, /)\n" +"set_func_kwdefaults_via_capi($module, func, defaults, /)\n" "--\n" -"\n" -"Set keyword deafult values to a given function."); +"\n"); #define _TESTCAPI_SET_FUNC_KWDEFAULTS_VIA_CAPI_METHODDEF \ {"set_func_kwdefaults_via_capi", _PyCFunction_CAST(_testcapi_set_func_kwdefaults_via_capi), METH_FASTCALL, _testcapi_set_func_kwdefaults_via_capi__doc__}, static PyObject * _testcapi_set_func_kwdefaults_via_capi_impl(PyObject *module, PyObject *func, - PyObject *kwdefaults); + PyObject *defaults); static PyObject * _testcapi_set_func_kwdefaults_via_capi(PyObject *module, PyObject *const *args, Py_ssize_t nargs) { PyObject *return_value = NULL; PyObject *func; - PyObject *kwdefaults; + PyObject *defaults; if (!_PyArg_CheckPositional("set_func_kwdefaults_via_capi", nargs, 2, 2)) { goto exit; } func = args[0]; - kwdefaults = args[1]; - return_value = _testcapi_set_func_kwdefaults_via_capi_impl(module, func, kwdefaults); + defaults = args[1]; + return_value = _testcapi_set_func_kwdefaults_via_capi_impl(module, func, defaults); exit: return return_value; } -/*[clinic end generated code: output=8b0f3e8f8e0a49cf input=a9049054013a1b77]*/ +/*[clinic end generated code: output=12c375089125d165 input=a9049054013a1b77]*/ diff --git a/Modules/_testcapi/watchers.c b/Modules/_testcapi/watchers.c index de0887dd524129..d2c71fb401d36a 100644 --- a/Modules/_testcapi/watchers.c +++ b/Modules/_testcapi/watchers.c @@ -135,7 +135,7 @@ _testcapi.watch_dict static PyObject * _testcapi_watch_dict_impl(PyObject *module, int watcher_id, PyObject *dict) -/*[clinic end generated code: output=1426e0273cebe2d8 input=5d11ddf8ccb22a05]*/ +/*[clinic end generated code: output=1426e0273cebe2d8 input=269b006d60c358bd]*/ { if (PyDict_Watch(watcher_id, dict)) { return NULL; @@ -269,7 +269,7 @@ _testcapi.watch_type static PyObject * _testcapi_watch_type_impl(PyObject *module, int watcher_id, PyObject *type) -/*[clinic end generated code: output=fdf4777126724fc4 input=b0a72ed7db885ee8]*/ +/*[clinic end generated code: output=fdf4777126724fc4 input=5a808bf12be7e3ed]*/ { if (PyType_Watch(watcher_id, type)) { return NULL; @@ -623,13 +623,12 @@ _testcapi.set_func_defaults_via_capi func: object defaults: object / -Set default values to a given function. [clinic start generated code]*/ static PyObject * _testcapi_set_func_defaults_via_capi_impl(PyObject *module, PyObject *func, PyObject *defaults) -/*[clinic end generated code: output=caf0cb39db31ac24 input=9a7d91215cd0f05b]*/ +/*[clinic end generated code: output=caf0cb39db31ac24 input=e04a8508ca9d42fc]*/ { if (PyFunction_SetDefaults(func, defaults) < 0) { return NULL; @@ -638,19 +637,15 @@ _testcapi_set_func_defaults_via_capi_impl(PyObject *module, PyObject *func, } /*[clinic input] -_testcapi.set_func_kwdefaults_via_capi - func: object - kwdefaults: object - / -Set keyword deafult values to a given function. +_testcapi.set_func_kwdefaults_via_capi = _testcapi.set_func_defaults_via_capi [clinic start generated code]*/ static PyObject * _testcapi_set_func_kwdefaults_via_capi_impl(PyObject *module, PyObject *func, - PyObject *kwdefaults) -/*[clinic end generated code: output=5ea36d7f9db6a01d input=ee84c08d30ae135e]*/ + PyObject *defaults) +/*[clinic end generated code: output=9ed3b08177025070 input=f3cd1ca3c18de8ce]*/ { - if (PyFunction_SetKwDefaults(func, kwdefaults) < 0) { + if (PyFunction_SetKwDefaults(func, defaults) < 0) { return NULL; } Py_RETURN_NONE; pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy