diff --git a/do-not-use-pytuple-get-size.patch b/do-not-use-pytuple-get-size.patch new file mode 100644 index 0000000..999e9da --- /dev/null +++ b/do-not-use-pytuple-get-size.patch @@ -0,0 +1,53 @@ +From 338044cbf771e5665a744d3b36b5d7edd126d16a Mon Sep 17 00:00:00 2001 +From: Zaur Shibzukhov +Date: Mon, 31 Mar 2025 10:00:01 +0300 +Subject: [PATCH] Fix #13 with litelist/litetuple get_subscript routine + +--- + examples/performance_cgc.ipynb | 32 ++++++++++++++++---------------- + lib/recordclass/_litelist.c | 4 ++-- + lib/recordclass/_litetuple.c | 4 ++-- + 3 files changed, 20 insertions(+), 20 deletions(-) + +Index: recordclass-0.22.1/lib/recordclass/_litelist.c +=================================================================== +--- recordclass-0.22.1.orig/lib/recordclass/_litelist.c ++++ recordclass-0.22.1/lib/recordclass/_litelist.c +@@ -484,13 +484,13 @@ litelist_subscript(PyLiteListObject* sel + if (PySlice_Check(item)) { + Py_ssize_t start, stop, step, slicelength; + +- if (PySlice_GetIndicesEx(item, (PyTuple_GET_SIZE(self)), &start, &stop, &step, &slicelength) < 0) ++ if (PySlice_GetIndicesEx(item, (Py_SIZE(self)), &start, &stop, &step, &slicelength) < 0) + return NULL; + return litelist_slice(self, start, stop); + } + else { + PyErr_Format(PyExc_TypeError, +- "subscript must be integer, slice or string, but not %.200s", ++ "subscript must be integer or slice, but not %.200s", + Py_TYPE(item)->tp_name); + return NULL; + } +Index: recordclass-0.22.1/lib/recordclass/_litetuple.c +=================================================================== +--- recordclass-0.22.1.orig/lib/recordclass/_litetuple.c ++++ recordclass-0.22.1/lib/recordclass/_litetuple.c +@@ -32,7 +32,7 @@ static PyTypeObject PyMLiteTuple_Type; + + #define PyLiteTuple_GET_ITEM(op, i) (((PyLiteTupleObject *)(op))->ob_item[i]) + #define PyLiteTuple_SET_ITEM(op, i, v) (((PyLiteTupleObject *)(op))->ob_item[i] = v) +-#define PyLiteTuple_GET_SIZE(seq) PyTuple_GET_SIZE(seq) ++#define PyLiteTuple_GET_SIZE(seq) Py_SIZE(seq) + + #define PyLiteTuple_CheckExact(op) (Py_TYPE(op) == &PyLiteTuple_Type || Py_TYPE(op) == &PyMLiteTuple_Type) + #define PyLiteTuple_Check(op) (PyLiteTuple_CheckExact(op) || PyObject_IsInstance(op, (PyObject*)&PyLiteTuple_Type) || PyObject_IsInstance(op, (PyObject*)&PyMLiteTuple_Type)) +@@ -417,7 +417,7 @@ litetuple_subscript(PyLiteTupleObject* s + if (PySlice_Check(item)) { + Py_ssize_t start, stop, step, slicelength; + +- if (PySlice_GetIndicesEx(item, (PyTuple_GET_SIZE(self)), &start, &stop, &step, &slicelength) < 0) ++ if (PySlice_GetIndicesEx(item, (Py_SIZE(self)), &start, &stop, &step, &slicelength) < 0) + return NULL; + return litetuple_slice(self, start, stop); + } diff --git a/python-recordclass.changes b/python-recordclass.changes index b495462..6bb9a3b 100644 --- a/python-recordclass.changes +++ b/python-recordclass.changes @@ -1,3 +1,9 @@ +------------------------------------------------------------------- +Fri Apr 4 00:56:20 UTC 2025 - Steve Kowalik + +- Add patch do-not-use-pytuple-get-size.patch: + * Use Py_SIZE rather than PyTuple_GET_SIZE to avoid assertion failures. + ------------------------------------------------------------------- Mon Aug 5 19:05:39 UTC 2024 - Dirk Müller diff --git a/python-recordclass.spec b/python-recordclass.spec index e0b1363..36ce8b4 100644 --- a/python-recordclass.spec +++ b/python-recordclass.spec @@ -1,7 +1,7 @@ # # spec file for package python-recordclass # -# Copyright (c) 2024 SUSE LLC +# Copyright (c) 2025 SUSE LLC # # All modifications and additions to the file contributed by third parties # remain the property of their copyright owners, unless otherwise agreed @@ -16,7 +16,6 @@ # -%{?!python_module:%define python_module() python-%{**} python3-%{**}} Name: python-recordclass Version: 0.22.1 Release: 0 @@ -24,6 +23,8 @@ Summary: Library implementing a mutable variant of namedtuple License: MIT URL: https://github.com/intellimath/recordclass Source: https://files.pythonhosted.org/packages/source/r/recordclass/recordclass-%{version}.tar.gz +# PATCH-FIX-UPSTREAM Based on gh#intellimath/recordclass#338044cbf771e5665a744d3b36b5d7edd126d16a +Patch0: do-not-use-pytuple-get-size.patch BuildRequires: %{python_module devel} BuildRequires: %{python_module pip} BuildRequires: %{python_module setuptools} @@ -41,7 +42,7 @@ Mutable variant of namedtuple -- recordclass, which support assignments, and other memory saving variants. %prep -%setup -q -n recordclass-%{version} +%autosetup -p1 -n recordclass-%{version} %build export CFLAGS="%{optflags}"