From 98f9757da0137da2b4e8a541930f247368d58a23 Mon Sep 17 00:00:00 2001 From: Nineteendo Date: Mon, 29 Apr 2024 09:55:22 +0200 Subject: [PATCH 1/4] Use PyTuple_Pack --- Modules/_decimal/_decimal.c | 4 ++-- Modules/_testbuffer.c | 2 +- Modules/_testcapimodule.c | 2 +- Modules/_testclinic.c | 2 +- Modules/posixmodule.c | 2 +- 5 files changed, 6 insertions(+), 6 deletions(-) diff --git a/Modules/_decimal/_decimal.c b/Modules/_decimal/_decimal.c index c105367a270458..fe6711143b845b 100644 --- a/Modules/_decimal/_decimal.c +++ b/Modules/_decimal/_decimal.c @@ -4287,7 +4287,7 @@ nm_mpd_qdivmod(PyObject *v, PyObject *w) return NULL; } - ret = Py_BuildValue("(OO)", q, r); + ret = PyTuple_Pack(2, q, r); Py_DECREF(r); Py_DECREF(q); return ret; @@ -5312,7 +5312,7 @@ ctx_mpd_qdivmod(PyObject *context, PyObject *args) return NULL; } - ret = Py_BuildValue("(OO)", q, r); + ret = PyTuple_Pack(2, q, r); Py_DECREF(r); Py_DECREF(q); return ret; diff --git a/Modules/_testbuffer.c b/Modules/_testbuffer.c index cad21bdb4d85ed..9e77744efad728 100644 --- a/Modules/_testbuffer.c +++ b/Modules/_testbuffer.c @@ -1217,7 +1217,7 @@ init_ndbuf(PyObject *items, PyObject *shape, PyObject *strides, /* convert scalar to list */ if (ndim == 0) { - items = Py_BuildValue("(O)", items); + items = PyTuple_Pack(1, items); if (items == NULL) return NULL; } diff --git a/Modules/_testcapimodule.c b/Modules/_testcapimodule.c index 0bdd252efdabc7..42000be0d64230 100644 --- a/Modules/_testcapimodule.c +++ b/Modules/_testcapimodule.c @@ -2475,7 +2475,7 @@ get_basic_static_type(PyObject *self, PyObject *args) PyTypeObject *cls = &BasicStaticTypes[num_basic_static_types_used++]; if (base != NULL) { - cls->tp_bases = Py_BuildValue("(O)", base); + cls->tp_bases = PyTuple_Pack(1, base); if (cls->tp_bases == NULL) { return NULL; } diff --git a/Modules/_testclinic.c b/Modules/_testclinic.c index 454173b434fb6b..2e9d00ac2189eb 100644 --- a/Modules/_testclinic.c +++ b/Modules/_testclinic.c @@ -1243,7 +1243,7 @@ _testclinic_TestClass_get_defining_class_arg_impl(PyObject *self, PyObject *arg) /*[clinic end generated code: output=fe7e49d96cbb7718 input=d1b83d3b853af6d9]*/ { - return Py_BuildValue("(OO)", cls, arg); + return PyTuple_Pack(2, cls, arg); } static struct PyMethodDef test_class_methods[] = { diff --git a/Modules/posixmodule.c b/Modules/posixmodule.c index c9d67ccbb8c908..722159a39d098f 100644 --- a/Modules/posixmodule.c +++ b/Modules/posixmodule.c @@ -5500,7 +5500,7 @@ os__path_splitroot_ex_impl(PyObject *module, PyObject *path) if (tail == NULL) { goto exit; } - result = Py_BuildValue("(OOO)", drv, root, tail); + result = PyTuple_Pack(3, drv, root, tail); exit: PyMem_Free(buffer); Py_XDECREF(drv); From 59ac30f8268c016968fae4f1877d2ff16b584653 Mon Sep 17 00:00:00 2001 From: Nineteendo Date: Mon, 29 Apr 2024 10:01:01 +0200 Subject: [PATCH 2/4] Update missed called --- Python/errors.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Python/errors.c b/Python/errors.c index e5f176a5dd208e..433253b8f9aada 100644 --- a/Python/errors.c +++ b/Python/errors.c @@ -632,8 +632,8 @@ _PyErr_StackItemToExcInfoTuple(_PyErr_StackItem *err_info) PyObject *exc_type = get_exc_type(exc_value); PyObject *exc_traceback = get_exc_traceback(exc_value); - return Py_BuildValue( - "(OOO)", + return PyTuple_Pack( + 3, exc_type ? exc_type : Py_None, exc_value ? exc_value : Py_None, exc_traceback ? exc_traceback : Py_None); From dd8702289c79712772f3d891d45fbda032a34c8d Mon Sep 17 00:00:00 2001 From: nineteendo Date: Mon, 29 Apr 2024 16:53:17 +0200 Subject: [PATCH 3/4] Also for implicit tuples --- Modules/_testcapimodule.c | 2 +- Modules/itertoolsmodule.c | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/Modules/_testcapimodule.c b/Modules/_testcapimodule.c index 42000be0d64230..3448291e401e35 100644 --- a/Modules/_testcapimodule.c +++ b/Modules/_testcapimodule.c @@ -3474,7 +3474,7 @@ typedef struct { static PyObject * ipowType_ipow(PyObject *self, PyObject *other, PyObject *mod) { - return Py_BuildValue("OO", other, mod); + return PyTuple_Pack(2, other, mod); } static PyNumberMethods ipowType_as_number = { diff --git a/Modules/itertoolsmodule.c b/Modules/itertoolsmodule.c index 6ee447ef6a8cd6..cf311ea3758c25 100644 --- a/Modules/itertoolsmodule.c +++ b/Modules/itertoolsmodule.c @@ -2447,7 +2447,7 @@ product_reduce(productobject *lz, PyObject *Py_UNUSED(ignored)) if (lz->stopped) { return Py_BuildValue("O(())", Py_TYPE(lz)); } else if (lz->result == NULL) { - return Py_BuildValue("OO", Py_TYPE(lz), lz->pools); + return PyTuple_Pack(2, Py_TYPE(lz), lz->pools); } else { PyObject *indices; Py_ssize_t n, i; From e7cbd6ee0b6198184bb505e47e62bb2e66c23f0c Mon Sep 17 00:00:00 2001 From: nineteendo Date: Tue, 30 Apr 2024 06:39:19 +0200 Subject: [PATCH 4/4] Revert deprecated code --- Modules/itertoolsmodule.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Modules/itertoolsmodule.c b/Modules/itertoolsmodule.c index cf311ea3758c25..6ee447ef6a8cd6 100644 --- a/Modules/itertoolsmodule.c +++ b/Modules/itertoolsmodule.c @@ -2447,7 +2447,7 @@ product_reduce(productobject *lz, PyObject *Py_UNUSED(ignored)) if (lz->stopped) { return Py_BuildValue("O(())", Py_TYPE(lz)); } else if (lz->result == NULL) { - return PyTuple_Pack(2, Py_TYPE(lz), lz->pools); + return Py_BuildValue("OO", Py_TYPE(lz), lz->pools); } else { PyObject *indices; Py_ssize_t n, i;