From 6656a9903bde7b835b3e2424983e1eedbb6928f5f82a41788a87a169f24df3ae Mon Sep 17 00:00:00 2001 From: Steve Kowalik Date: Tue, 6 Jan 2026 03:05:44 +0000 Subject: [PATCH] - Update to 0.24: * Fix __annotations__ for python 3.14 * Start support of python 3.14 * Fix the bug with PyTuple_GET_SIZE (#13) * Drop appveyor * recordclass requires python >= 3.8 - Drop patch do-not-use-pytuple-get-size.patch, merged upstream. OBS-URL: https://build.opensuse.org/package/show/devel:languages:python/python-recordclass?expand=0&rev=15 --- .gitattributes | 23 ++++++++++ .gitignore | 1 + do-not-use-pytuple-get-size.patch | 53 ++++++++++++++++++++++ python-recordclass.changes | 73 +++++++++++++++++++++++++++++++ python-recordclass.spec | 65 +++++++++++++++++++++++++++ recordclass-0.22.1.tar.gz | 3 ++ recordclass-0.24.tar.gz | 3 ++ 7 files changed, 221 insertions(+) create mode 100644 .gitattributes create mode 100644 .gitignore create mode 100644 do-not-use-pytuple-get-size.patch create mode 100644 python-recordclass.changes create mode 100644 python-recordclass.spec create mode 100644 recordclass-0.22.1.tar.gz create mode 100644 recordclass-0.24.tar.gz diff --git a/.gitattributes b/.gitattributes new file mode 100644 index 0000000..9b03811 --- /dev/null +++ b/.gitattributes @@ -0,0 +1,23 @@ +## Default LFS +*.7z filter=lfs diff=lfs merge=lfs -text +*.bsp filter=lfs diff=lfs merge=lfs -text +*.bz2 filter=lfs diff=lfs merge=lfs -text +*.gem filter=lfs diff=lfs merge=lfs -text +*.gz filter=lfs diff=lfs merge=lfs -text +*.jar filter=lfs diff=lfs merge=lfs -text +*.lz filter=lfs diff=lfs merge=lfs -text +*.lzma filter=lfs diff=lfs merge=lfs -text +*.obscpio filter=lfs diff=lfs merge=lfs -text +*.oxt filter=lfs diff=lfs merge=lfs -text +*.pdf filter=lfs diff=lfs merge=lfs -text +*.png filter=lfs diff=lfs merge=lfs -text +*.rpm filter=lfs diff=lfs merge=lfs -text +*.tbz filter=lfs diff=lfs merge=lfs -text +*.tbz2 filter=lfs diff=lfs merge=lfs -text +*.tgz filter=lfs diff=lfs merge=lfs -text +*.ttf filter=lfs diff=lfs merge=lfs -text +*.txz filter=lfs diff=lfs merge=lfs -text +*.whl filter=lfs diff=lfs merge=lfs -text +*.xz filter=lfs diff=lfs merge=lfs -text +*.zip filter=lfs diff=lfs merge=lfs -text +*.zst filter=lfs diff=lfs merge=lfs -text diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..57affb6 --- /dev/null +++ b/.gitignore @@ -0,0 +1 @@ +.osc 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 new file mode 100644 index 0000000..625a816 --- /dev/null +++ b/python-recordclass.changes @@ -0,0 +1,73 @@ +------------------------------------------------------------------- +Tue Jan 6 03:05:29 UTC 2026 - Steve Kowalik + +- Update to 0.24: + * Fix __annotations__ for python 3.14 + * Start support of python 3.14 + * Fix the bug with PyTuple_GET_SIZE (#13) + * Drop appveyor + * recordclass requires python >= 3.8 +- Drop patch do-not-use-pytuple-get-size.patch, merged upstream. + +------------------------------------------------------------------- +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 + +- update to 0.22.1: + * Add `pyproject.toml`. +- update to 0.22.0.3: + * Rename examples est_*.py files since they are detected by + pytest as a tests. + * Fix segfault with litelist after 0.22.0.2. + +------------------------------------------------------------------- +Tue Jul 2 15:13:24 UTC 2024 - Dirk Müller + +- update to 0.22.0.2: + * Fix regression with `as_dataclass`. +- update to 0.22: + * `Recordclass 0.22` started support of `python 3.13`. + * Add a base class `datastruct` for subclasses that should + behave more like simple datastructures. + * Fix bug with `__match_args__` (#6). + +------------------------------------------------------------------- +Fri Dec 29 09:35:17 UTC 2023 - Dirk Müller + +- update to 0.21.1: + * Allow to specify __match_args__. + * Add @as_record adapter for def-style decalarations of + dataclasses that are considered as just a struct. + * The option fast_new will be removed in 0.22. It will be + always as fast_new=True by creation. + * Fix issues with `_PyUnicodeWriter` for python 3.13. + +------------------------------------------------------------------- +Wed Nov 9 18:53:20 UTC 2022 - Yogalakshmi Arunachalam + +- Update to 0.18.0.1 + * Exclude test_dataobject_match.py (for testing match statement) for python < 3.10. + +- Update to 0.18 + * Python 3.11 support. + * Adapt data object to take benefit from bytecode specialization in 3.11. + * Fix issue for argument with default value in __new__, which havn't __repr__ that can be interpreted as valid python expression for creation of the default value. + * Add support for typing.ClassVar. + * Add Py_TPFLAGS_SEQUENCE and Py_TPFLAGS_MAPPING. + * Add __match_args__ to support match protocol for dataobject-based subclasses. + +------------------------------------------------------------------- +Fri Oct 7 03:49:55 UTC 2022 - Yogalakshmi Arunachalam + +- 0.17.5 + Make to compile, to build and to test successfully for python 3.11. + +------------------------------------------------------------------- +Sun Jul 31 21:55:59 UTC 2022 - Atri Bhattacharya + +- Initial package. diff --git a/python-recordclass.spec b/python-recordclass.spec new file mode 100644 index 0000000..0c66ed8 --- /dev/null +++ b/python-recordclass.spec @@ -0,0 +1,65 @@ +# +# spec file for package python-recordclass +# +# Copyright (c) 2026 SUSE LLC and contributors +# +# All modifications and additions to the file contributed by third parties +# remain the property of their copyright owners, unless otherwise agreed +# upon. The license for this file, and modifications and additions to the +# file, is the same license as for the pristine package itself (unless the +# license for the pristine package is not an Open Source License, in which +# case the license is the MIT License). An "Open Source License" is a +# license that conforms to the Open Source Definition (Version 1.9) +# published by the Open Source Initiative. + +# Please submit bugfixes or comments via https://bugs.opensuse.org/ +# + + +Name: python-recordclass +Version: 0.24 +Release: 0 +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 +BuildRequires: %{python_module devel >= 3.9} +BuildRequires: %{python_module pip} +BuildRequires: %{python_module setuptools} +BuildRequires: %{python_module wheel} +BuildRequires: fdupes +BuildRequires: python-rpm-macros +# SECTION Test requirements +BuildRequires: %{python_module psutil} +BuildRequires: %{python_module pyperf} +# /SECTION +%python_subpackages + +%description +Mutable variant of namedtuple -- recordclass, which support assignments, and +other memory saving variants. + +%prep +%autosetup -p1 -n recordclass-%{version} + +%build +export CFLAGS="%{optflags}" +%pyproject_wheel + +%install +%pyproject_install +# do not ship development files +%python_expand rm -v %{buildroot}%{$python_sitearch}/recordclass/_*.[ch] +%python_expand %fdupes %{buildroot}%{$python_sitearch} + +%check +# Crashes when run using pytest +%python_expand PYTHONPATH=%{buildroot}%{$python_sitearch} python%{$python_version} test_all.py + +%files %{python_files} +%doc README.md +%license LICENSE.txt +%{python_sitearch}/recordclass/ +%{python_sitearch}/recordclass-%{version}.dist-info + +%changelog diff --git a/recordclass-0.22.1.tar.gz b/recordclass-0.22.1.tar.gz new file mode 100644 index 0000000..373ad31 --- /dev/null +++ b/recordclass-0.22.1.tar.gz @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:80a4c79270edb8fb55bcb96bec0159a292b485c997e2f33b38fdc9e8d6c0c315 +size 1333756 diff --git a/recordclass-0.24.tar.gz b/recordclass-0.24.tar.gz new file mode 100644 index 0000000..7b20426 --- /dev/null +++ b/recordclass-0.24.tar.gz @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:dc6e46aec90d5b185576fce40ffc875488b04692a9259265c965fac150630d06 +size 1340150