forked from pool/python-ligo-segments
* Add python-3.13-compat.patch -- Compatibility for python 3.13, patch taken from upstream merge request * Use %pyproject_* macros to build. * Disable testing for now as test suite is broken (https://git.ligo.org/lscsoft/ligo-segments/-/issues/22). OBS-URL: https://build.opensuse.org/request/show/1227670 OBS-URL: https://build.opensuse.org/package/show/science/python-ligo-segments?expand=0&rev=10
90 lines
2.5 KiB
Diff
90 lines
2.5 KiB
Diff
From b58680a5b2fa444ade61928bde1db7d261a05b32 Mon Sep 17 00:00:00 2001
|
|
From: Leo Singer <leo.singer@ligo.org>
|
|
Date: Mon, 7 Oct 2024 07:53:58 -0400
|
|
Subject: [PATCH] Fix build for Python 3.13
|
|
|
|
Use PyList_Extend for Python >= 3.13, and provide replacement
|
|
using _PyList_Extend for Python < 3.13. In Python 3.13, the
|
|
function _PyList_Extend was removed and the public API method
|
|
PyList_Extend was added in its place.
|
|
|
|
Fixes #21.
|
|
---
|
|
src/segmentlist.c | 22 ++++++++++++----------
|
|
1 file changed, 12 insertions(+), 10 deletions(-)
|
|
|
|
Index: ligo-segments-1.4.0/src/segmentlist.c
|
|
===================================================================
|
|
--- ligo-segments-1.4.0.orig/src/segmentlist.c
|
|
+++ ligo-segments-1.4.0/src/segmentlist.c
|
|
@@ -240,34 +240,36 @@ static PyObject *make_segment(PyObject *
|
|
}
|
|
|
|
|
|
-static int pylist_extend(PyListObject *l, PyObject *v)
|
|
+#if PY_VERSION_HEX < 0x030D0000
|
|
+static int PyList_Extend(PyObject *l, PyObject *v)
|
|
{
|
|
if(!PyList_Check(l)) {
|
|
- PyErr_SetObject(PyExc_TypeError, (PyObject *) l);
|
|
+ PyErr_SetObject(PyExc_TypeError, l);
|
|
return -1;
|
|
}
|
|
- PyObject *result = _PyList_Extend(l, v);
|
|
+ PyObject *result = _PyList_Extend((PyListObject *) l, v);
|
|
if(!result)
|
|
return -1;
|
|
Py_DECREF(result);
|
|
return 0;
|
|
}
|
|
+#endif
|
|
|
|
|
|
static PyListObject *segments_SegmentList_New(PyTypeObject *type, PyObject *sequence)
|
|
{
|
|
- PyListObject *new;
|
|
+ PyObject *new;
|
|
if(!type->tp_alloc) {
|
|
PyErr_SetObject(PyExc_TypeError, (PyObject *) type);
|
|
return NULL;
|
|
}
|
|
- new = (PyListObject *) type->tp_alloc(type, 0);
|
|
+ new = (PyObject *) type->tp_alloc(type, 0);
|
|
if(new && sequence)
|
|
- if(pylist_extend(new, sequence)) {
|
|
+ if(PyList_Extend(new, sequence) >= 0) {
|
|
Py_DECREF(new);
|
|
new = NULL;
|
|
}
|
|
- return new;
|
|
+ return (PyListObject *) new;
|
|
}
|
|
|
|
|
|
@@ -817,7 +819,7 @@ static PyObject *__ior__(PyObject *self,
|
|
/* Faster algorithm when the two lists have very different sizes.
|
|
* OK to not test size functions for error return values */
|
|
if(PySequence_Size(other) > PyList_GET_SIZE(self) / 2) {
|
|
- if(pylist_extend((PyListObject *) self, other))
|
|
+ if(PyList_Extend(self, other) >= 0)
|
|
return NULL;
|
|
return PyObject_CallMethod(self, "coalesce", NULL);
|
|
}
|
|
@@ -988,14 +990,14 @@ static PyObject *__xor__(PyObject *self,
|
|
Py_XDECREF(other);
|
|
return NULL;
|
|
}
|
|
- if(pylist_extend((PyListObject *) new, other)) {
|
|
+ if(PyList_Extend(new, other) >= 0) {
|
|
Py_DECREF(new);
|
|
Py_DECREF(other);
|
|
return NULL;
|
|
}
|
|
Py_DECREF(other);
|
|
|
|
- if(PyList_Sort(new) < 0) {
|
|
+ if(PyList_Sort(new) >= 0) {
|
|
Py_DECREF(new);
|
|
return NULL;
|
|
}
|