File python-3.13-compat.patch of Package python-ligo-segments

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;
 	}
openSUSE Build Service is sponsored by