Skip to content

Commit 693a6ef

Browse files
committed
update workflow and glue
1 parent b5f8b55 commit 693a6ef

2 files changed

Lines changed: 21 additions & 4 deletions

File tree

.github/workflows/reusable_buildtest.yml

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -169,15 +169,14 @@ jobs:
169169
170170
- name: Copy Package
171171
run: |
172-
mkdir -p dist
173-
docker cp testcontainer:/pymgclient/dist/*.whl dist/
172+
docker cp testcontainer:/pymgclient/dist .
174173
175174
- name: Save source distribution package
176175
if: ${{ inputs.upload_artifacts && matrix.platform == 'ubuntu-24.04' }}
177176
uses: actions/upload-artifact@v4
178177
with:
179178
name: pymgclient-linux-${{ matrix.python_version }}
180-
path: dist/
179+
path: dist/*.whl
181180

182181
- name: Cleanup
183182
if: always()

src/glue.c

Lines changed: 19 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -776,7 +776,25 @@ int is_datetime_timezone(PyObject *tzinfo) {
776776
SCOPED_CLEANUP PyObject *timezone_class = PyObject_GetAttrString(datetime_module, "timezone");
777777
IF_PTR_IS_NULL_RETURN(timezone_class, 0);
778778

779-
return PyObject_IsInstance(tzinfo, timezone_class);
779+
// Use Python-level isinstance() instead of PyObject_IsInstance for Python 3.14 compatibility
780+
SCOPED_CLEANUP PyObject *builtins = PyImport_ImportModule("builtins");
781+
IF_PTR_IS_NULL_RETURN(builtins, 0);
782+
783+
SCOPED_CLEANUP PyObject *isinstance_func = PyObject_GetAttrString(builtins, "isinstance");
784+
IF_PTR_IS_NULL_RETURN(isinstance_func, 0);
785+
786+
SCOPED_CLEANUP PyObject *result = PyObject_CallFunction(isinstance_func, "OO", tzinfo, timezone_class);
787+
if (!result) {
788+
PyErr_Clear(); // Clear any error and return 0
789+
return 0;
790+
}
791+
792+
int is_instance = PyObject_IsTrue(result);
793+
if (is_instance < 0) {
794+
PyErr_Clear(); // Clear any error and return 0
795+
return 0;
796+
}
797+
return is_instance;
780798
}
781799

782800
mg_duration *py_delta_to_mg_duration(PyObject *obj) {

0 commit comments

Comments
 (0)