From 0bc92f69e62b4440748a633768b7f2a1edc1d417 Mon Sep 17 00:00:00 2001 From: Taegyun Kim Date: Thu, 5 Feb 2026 17:51:43 -0500 Subject: [PATCH 1/2] Replace datetimemodule PyTuple_Pack uses with PyTuple_FromArray --- Modules/_datetimemodule.c | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/Modules/_datetimemodule.c b/Modules/_datetimemodule.c index dbd14f1d707077..f49e434f7255c5 100644 --- a/Modules/_datetimemodule.c +++ b/Modules/_datetimemodule.c @@ -4521,7 +4521,7 @@ timezone_getinitargs(PyObject *op, PyObject *Py_UNUSED(dummy)) { PyDateTime_TimeZone *self = PyTimeZone_CAST(op); if (self->name == NULL) - return PyTuple_Pack(1, self->offset); + return PyTuple_FromArray((PyObject*[]){ self->offset }, 1); return _PyTuple_FromPair(self->offset, self->name); } @@ -5283,7 +5283,7 @@ time_getstate(PyDateTime_Time *self, int proto) /* Set the first bit of the first byte */ PyBytes_AS_STRING(basestate)[0] |= (1 << 7); if (! HASTZINFO(self) || self->tzinfo == Py_None) - result = PyTuple_Pack(1, basestate); + result = PyTuple_FromArray((PyObject*[]){ basestate }, 1); else result = _PyTuple_FromPair(basestate, self->tzinfo); Py_DECREF(basestate); @@ -7215,7 +7215,7 @@ datetime_getstate(PyDateTime_DateTime *self, int proto) /* Set the first bit of the third byte */ PyBytes_AS_STRING(basestate)[2] |= (1 << 7); if (! HASTZINFO(self) || self->tzinfo == Py_None) - result = PyTuple_Pack(1, basestate); + result = PyTuple_FromArray((PyObject*[]){ basestate }, 1); else result = _PyTuple_FromPair(basestate, self->tzinfo); Py_DECREF(basestate); From 752ba3782726d1204a3f53e71f6f70b831dfe522 Mon Sep 17 00:00:00 2001 From: Taegyun Kim Date: Thu, 5 Feb 2026 17:59:14 -0500 Subject: [PATCH 2/2] Add news entry for the change --- .../next/Library/2026-02-05-17-59-01.gh-issue-140009.bYXcvi.rst | 1 + 1 file changed, 1 insertion(+) create mode 100644 Misc/NEWS.d/next/Library/2026-02-05-17-59-01.gh-issue-140009.bYXcvi.rst diff --git a/Misc/NEWS.d/next/Library/2026-02-05-17-59-01.gh-issue-140009.bYXcvi.rst b/Misc/NEWS.d/next/Library/2026-02-05-17-59-01.gh-issue-140009.bYXcvi.rst new file mode 100644 index 00000000000000..445278caf0d083 --- /dev/null +++ b/Misc/NEWS.d/next/Library/2026-02-05-17-59-01.gh-issue-140009.bYXcvi.rst @@ -0,0 +1 @@ +Improve performance of datetime extension module. Patch by Taegyun Kim.