From 09e0f1bbf2a33033691f1046b51cff0580d2d477 Mon Sep 17 00:00:00 2001 From: Lysandros Nikolaou Date: Fri, 28 Jun 2024 10:53:51 +0200 Subject: [PATCH 1/2] Add Py_mod_gil slot to C extension modules --- pandas/_libs/src/datetime/pd_datetime.c | 5 ++++- pandas/_libs/src/parser/pd_parser.c | 5 ++++- 2 files changed, 8 insertions(+), 2 deletions(-) diff --git a/pandas/_libs/src/datetime/pd_datetime.c b/pandas/_libs/src/datetime/pd_datetime.c index 4c1969f6d9f57..70dfe70dcf272 100644 --- a/pandas/_libs/src/datetime/pd_datetime.c +++ b/pandas/_libs/src/datetime/pd_datetime.c @@ -245,7 +245,10 @@ static int pandas_datetime_exec(PyObject *Py_UNUSED(module)) { } static PyModuleDef_Slot pandas_datetime_slots[] = { - {Py_mod_exec, pandas_datetime_exec}, {0, NULL}}; + {Py_mod_exec, pandas_datetime_exec}, + {Py_mod_gil, Py_MOD_GIL_NOT_USED}, + {0, NULL}, +}; static struct PyModuleDef pandas_datetimemodule = { PyModuleDef_HEAD_INIT, diff --git a/pandas/_libs/src/parser/pd_parser.c b/pandas/_libs/src/parser/pd_parser.c index 48f3cd14cbc30..0b76355a8645f 100644 --- a/pandas/_libs/src/parser/pd_parser.c +++ b/pandas/_libs/src/parser/pd_parser.c @@ -161,7 +161,10 @@ static int pandas_parser_exec(PyObject *Py_UNUSED(module)) { } static PyModuleDef_Slot pandas_parser_slots[] = { - {Py_mod_exec, pandas_parser_exec}, {0, NULL}}; + {Py_mod_exec, pandas_parser_exec}, + {Py_mod_gil, Py_MOD_GIL_NOT_USED}, + {0, NULL}, +}; static struct PyModuleDef pandas_parsermodule = { PyModuleDef_HEAD_INIT, From 5971c6811490ae48b315085981f3222b7e9b6495 Mon Sep 17 00:00:00 2001 From: Lysandros Nikolaou Date: Mon, 1 Jul 2024 10:25:05 +0200 Subject: [PATCH 2/2] Add version guard --- pandas/_libs/src/datetime/pd_datetime.c | 2 ++ pandas/_libs/src/parser/pd_parser.c | 2 ++ 2 files changed, 4 insertions(+) diff --git a/pandas/_libs/src/datetime/pd_datetime.c b/pandas/_libs/src/datetime/pd_datetime.c index 70dfe70dcf272..2c32fb0481486 100644 --- a/pandas/_libs/src/datetime/pd_datetime.c +++ b/pandas/_libs/src/datetime/pd_datetime.c @@ -246,7 +246,9 @@ static int pandas_datetime_exec(PyObject *Py_UNUSED(module)) { static PyModuleDef_Slot pandas_datetime_slots[] = { {Py_mod_exec, pandas_datetime_exec}, +#if PY_VERSION_HEX >= 0x030D0000 {Py_mod_gil, Py_MOD_GIL_NOT_USED}, +#endif {0, NULL}, }; diff --git a/pandas/_libs/src/parser/pd_parser.c b/pandas/_libs/src/parser/pd_parser.c index 0b76355a8645f..51cdf071a15cf 100644 --- a/pandas/_libs/src/parser/pd_parser.c +++ b/pandas/_libs/src/parser/pd_parser.c @@ -162,7 +162,9 @@ static int pandas_parser_exec(PyObject *Py_UNUSED(module)) { static PyModuleDef_Slot pandas_parser_slots[] = { {Py_mod_exec, pandas_parser_exec}, +#if PY_VERSION_HEX >= 0x030D0000 {Py_mod_gil, Py_MOD_GIL_NOT_USED}, +#endif {0, NULL}, };