public inbox for gentoo-commits@lists.gentoo.org
 help / color / mirror / Atom feed
* [gentoo-commits] repo/gentoo:master commit in: dev-python/tables/files/, dev-python/tables/
@ 2024-06-07 18:16 Michał Górny
  0 siblings, 0 replies; 3+ messages in thread
From: Michał Górny @ 2024-06-07 18:16 UTC (permalink / raw
  To: gentoo-commits

commit:     0944b53089163ae55efe8b2ac5ac8d0f0bb0718f
Author:     Michał Górny <mgorny <AT> gentoo <DOT> org>
AuthorDate: Fri Jun  7 18:15:17 2024 +0000
Commit:     Michał Górny <mgorny <AT> gentoo <DOT> org>
CommitDate: Fri Jun  7 18:16:48 2024 +0000
URL:        https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=0944b530

dev-python/tables: Remove old

Signed-off-by: Michał Górny <mgorny <AT> gentoo.org>

 dev-python/tables/Manifest                         |  1 -
 dev-python/tables/files/tables-3.8.0-blosc2.patch  | 30 --------
 dev-python/tables/files/tables-3.8.0-cython3.patch | 40 ----------
 .../files/tables-3.8.0-optional-cpuinfo.patch      | 69 ------------------
 dev-python/tables/tables-3.8.0-r3.ebuild           | 85 ----------------------
 5 files changed, 225 deletions(-)

diff --git a/dev-python/tables/Manifest b/dev-python/tables/Manifest
index be610456495d..9498bdb0d829 100644
--- a/dev-python/tables/Manifest
+++ b/dev-python/tables/Manifest
@@ -1,2 +1 @@
-DIST tables-3.8.0.tar.gz 8014052 BLAKE2B 28d120ad609ebc9ae8cd97286bb3fb9c484bd8a179edcf0de1b96e4400b7a21b4db835d94fae3aaee84924bd46b84b84da12c538b39517362d805651e7aa3aef SHA512 1616c00787a2e88ff3dc2aebe3a1b2ad428b5a8ea48fc94058b49c509f1c040b540b3f62551b16b3246d2fed58e0b33443cbdaaf1dfcba5a6eead5f3e8028029
 DIST tables-3.9.2.tar.gz 4683437 BLAKE2B 7044aede85d9eca67260a309d19b5c80944b80b2107f665296ad7ae6a3c3f9a8717a41ae7298a5ae45e5b9de7ae0a6678a83d4bd914bd8709512333e783367bc SHA512 9b416222304b7798585a20d4d7d61934023f151d4262a58a4f0ee969aa365264270c12a734461a194d2c857a13a8e09fb7a1386042267113f601560c041cecd9

diff --git a/dev-python/tables/files/tables-3.8.0-blosc2.patch b/dev-python/tables/files/tables-3.8.0-blosc2.patch
deleted file mode 100644
index 59403cdec12d..000000000000
--- a/dev-python/tables/files/tables-3.8.0-blosc2.patch
+++ /dev/null
@@ -1,30 +0,0 @@
-From 99a7f336635aaeb666ea8dc791743177a030dc18 Mon Sep 17 00:00:00 2001
-From: =?UTF-8?q?Micha=C5=82=20G=C3=B3rny?= <mgorny@gentoo.org>
-Date: Wed, 28 Dec 2022 15:53:08 +0100
-Subject: [PATCH] Workaround blosc2 detection via blosc2 package
-
----
- setup.py | 4 ++--
- 1 file changed, 2 insertions(+), 2 deletions(-)
-
-diff --git a/setup.py b/setup.py
-index 966be028..2708deb9 100755
---- a/setup.py
-+++ b/setup.py
-@@ -262,11 +262,11 @@ if __name__ == "__main__":
- 
-     debug = "--debug" in sys.argv
- 
--    blosc2_inc, blosc2_lib = get_blosc2_directories()
-+    blosc2_inc, blosc2_lib = "", ""
- 
-     # Global variables
-     lib_dirs = [blosc2_lib]
--    inc_dirs = [Path("hdf5-blosc/src"), Path("hdf5-blosc2/src"), blosc2_inc]
-+    inc_dirs = [Path("hdf5-blosc/src"), Path("hdf5-blosc2/src")]
-     optional_libs = []
-     copy_libs = []
- 
--- 
-2.39.0
-

diff --git a/dev-python/tables/files/tables-3.8.0-cython3.patch b/dev-python/tables/files/tables-3.8.0-cython3.patch
deleted file mode 100644
index 9ad0b72d224a..000000000000
--- a/dev-python/tables/files/tables-3.8.0-cython3.patch
+++ /dev/null
@@ -1,40 +0,0 @@
-From a70e36f0b0d4fb15b0b50e7ca513c4e4452767cc Mon Sep 17 00:00:00 2001
-From: Matus Valo <matusvalo@gmail.com>
-Date: Wed, 15 Mar 2023 22:49:07 +0100
-Subject: [PATCH] Fix build errors when compiled using cython 3.0.0b1.
-
----
- pyproject.toml            | 2 +-
- tables/tableextension.pyx | 2 +-
- tables/utilsextension.pyx | 2 +-
- 3 files changed, 3 insertions(+), 3 deletions(-)
-
-diff --git a/tables/tableextension.pyx b/tables/tableextension.pyx
-index 8f3bb01b..4a50c6ab 100644
---- a/tables/tableextension.pyx
-+++ b/tables/tableextension.pyx
-@@ -37,7 +37,7 @@ from .utils import SizeType
- from .utilsextension cimport get_native_type, cstr_to_pystr
- 
- # numpy functions & objects
--from hdf5extension cimport Leaf
-+from .hdf5extension cimport Leaf
- from cpython cimport PyErr_Clear
- from libc.stdio cimport snprintf
- from libc.stdlib cimport malloc, free
-diff --git a/tables/utilsextension.pyx b/tables/utilsextension.pyx
-index 5b16dcd3..664e1ea5 100644
---- a/tables/utilsextension.pyx
-+++ b/tables/utilsextension.pyx
-@@ -344,7 +344,7 @@ except ImportError:
- #---------------------------------------------------------------------
- 
- # Error handling helpers
--cdef herr_t e_walk_cb(unsigned n, const H5E_error_t *err, void *data) with gil:
-+cdef herr_t e_walk_cb(unsigned n, const H5E_error_t *err, void *data) noexcept with gil:
-     cdef object bt = <object>data   # list
-     #cdef char major_msg[256]
-     #cdef char minor_msg[256]
--- 
-2.40.1
-

diff --git a/dev-python/tables/files/tables-3.8.0-optional-cpuinfo.patch b/dev-python/tables/files/tables-3.8.0-optional-cpuinfo.patch
deleted file mode 100644
index 2843914f4a87..000000000000
--- a/dev-python/tables/files/tables-3.8.0-optional-cpuinfo.patch
+++ /dev/null
@@ -1,69 +0,0 @@
-https://github.com/PyTables/PyTables/pull/1013
-
-From 9d2487eb53af940de3b5c79200c9f4c2b90f51f2 Mon Sep 17 00:00:00 2001
-From: Sam James <sam@gentoo.org>
-Date: Mon, 3 Apr 2023 02:07:47 +0100
-Subject: [PATCH] Handle py-cpuinfo not being installed
-
-Fallback gracefully if py-cpuinfo isn't installed. We already handle this in
-setup.py but we need to avoid calling it in leaf.py too.
-
-py-cpuinfo isn't available on all platforms and PyTables is needed to run
-the test suite for some software, so we need to be able to run PyTables
-in places where py-cpuinfo isn't yet ported.
-
-Signed-off-by: Sam James <sam@gentoo.org>
---- a/tables/leaf.py
-+++ b/tables/leaf.py
-@@ -4,7 +4,11 @@ import warnings
- import math
- 
- import numpy as np
--import cpuinfo
-+try:
-+    import cpuinfo
-+    missing_cpuinfo = False
-+except ImportError:
-+    missing_cpuinfo = True
- 
- from .flavor import (check_flavor, internal_flavor, toarray,
-                      alias_map as flavor_alias_map)
-@@ -336,20 +340,21 @@ class Leaf(Node):
-             # Use a decent default value for chunksize
-             chunksize *= 16
-             # Now, go explore the L3 size and try to find a smarter chunksize
--            cpu_info = cpuinfo.get_cpu_info()
--            if 'l3_cache_size' in cpu_info:
--                # In general, is a good idea to set the chunksize equal to L3
--                l3_cache_size = cpu_info['l3_cache_size']
--                # cpuinfo sometimes returns cache sizes as strings (like,
--                # "4096 KB"), so refuse the temptation to guess and use the
--                # value only when it is an actual int.
--                # Also, sometimes cpuinfo does not return a correct L3 size;
--                # so in general, enforcing L3 > L2 is a good sanity check.
--                l2_cache_size = cpu_info.get('l2_cache_size', "Not found")
--                if (type(l3_cache_size) is int and
--                    type(l2_cache_size) is int and
--                    l3_cache_size > l2_cache_size):
--                    chunksize = l3_cache_size
-+            if not missing_cpuinfo:
-+                cpu_info = cpuinfo.get_cpu_info()
-+                if 'l3_cache_size' in cpu_info:
-+                    # In general, is a good idea to set the chunksize equal to L3
-+                    l3_cache_size = cpu_info['l3_cache_size']
-+                    # cpuinfo sometimes returns cache sizes as strings (like,
-+                    # "4096 KB"), so refuse the temptation to guess and use the
-+                    # value only when it is an actual int.
-+                    # Also, sometimes cpuinfo does not return a correct L3 size;
-+                    # so in general, enforcing L3 > L2 is a good sanity check.
-+                    l2_cache_size = cpu_info.get('l2_cache_size', "Not found")
-+                    if (type(l3_cache_size) is int and
-+                        type(l2_cache_size) is int and
-+                        l3_cache_size > l2_cache_size):
-+                        chunksize = l3_cache_size
-             # In Blosc2, the chunksize cannot be larger than 2 GB - BLOSC2_MAX_BUFFERSIZE
-             if chunksize > 2**31 - 32:
-                 chunksize = 2**31 - 32
--- 
-2.40.0
-

diff --git a/dev-python/tables/tables-3.8.0-r3.ebuild b/dev-python/tables/tables-3.8.0-r3.ebuild
deleted file mode 100644
index 1dce8f7cec22..000000000000
--- a/dev-python/tables/tables-3.8.0-r3.ebuild
+++ /dev/null
@@ -1,85 +0,0 @@
-# Copyright 1999-2024 Gentoo Authors
-# Distributed under the terms of the GNU General Public License v2
-
-EAPI=8
-
-DISTUTILS_EXT=1
-PYPI_PN="tables"
-PYTHON_COMPAT=( python3_{10..11} )
-PYTHON_REQ_USE="threads(+)"
-
-inherit distutils-r1 prefix pypi
-
-DESCRIPTION="Hierarchical datasets for Python"
-HOMEPAGE="
-	https://www.pytables.org/
-	https://github.com/PyTables/PyTables/
-	https://pypi.org/project/tables/
-"
-
-LICENSE="BSD"
-SLOT="0"
-KEYWORDS="amd64 arm arm64 ~ia64 ppc64 ~riscv ~sparc x86 ~amd64-linux ~x86-linux"
-IUSE="+cpudetection examples test"
-RESTRICT="!test? ( test )"
-
-DEPEND="
-	app-arch/bzip2:0=
-	app-arch/lz4:0=
-	>=app-arch/zstd-1.0.0:=
-	>=dev-libs/c-blosc-1.11.1:0=
-	dev-libs/c-blosc2:=
-	dev-libs/lzo:2=
-	<dev-python/numpy-2[${PYTHON_USEDEP}]
-	>=dev-python/numpy-1.19[${PYTHON_USEDEP}]
-	>=sci-libs/hdf5-1.8.4:=
-"
-RDEPEND="
-	${DEPEND}
-	>=dev-python/numexpr-2.6.2[${PYTHON_USEDEP}]
-	dev-python/packaging[${PYTHON_USEDEP}]
-	cpudetection? ( dev-python/py-cpuinfo[${PYTHON_USEDEP}] )
-"
-BDEPEND="
-	>=dev-python/cython-0.21[${PYTHON_USEDEP}]
-	virtual/pkgconfig
-	cpudetection? ( dev-python/py-cpuinfo[${PYTHON_USEDEP}] )
-	test? (
-		${RDEPEND}
-	)
-"
-
-python_prepare_all() {
-	local PATCHES=(
-		"${FILESDIR}"/${P}-blosc2.patch
-		"${FILESDIR}"/${P}-optional-cpuinfo.patch
-		"${FILESDIR}"/${P}-cython3.patch
-	)
-
-	export PYTABLES_NO_EMBEDDED_LIBS=1
-	export USE_PKGCONFIG=TRUE
-
-	rm -r c-blosc/{blosc,internal-complibs} || die
-	rm tables/libblosc2.so || die
-	sed -i -e '/blosc2/d' requirements.txt || die
-	hprefixify -w '/prefixes =/' setup.py
-	distutils-r1_python_prepare_all
-}
-
-python_compile() {
-	distutils-r1_python_compile -j1
-}
-
-python_test() {
-	cd "${BUILD_DIR}"/lib* || die
-	"${EPYTHON}" tables/tests/test_all.py -v || die
-}
-
-python_install_all() {
-	distutils-r1_python_install_all
-
-	if use examples; then
-		dodoc -r contrib examples
-		docompress -x /usr/share/doc/${PF}/{contrib,examples}
-	fi
-}


^ permalink raw reply related	[flat|nested] 3+ messages in thread

* [gentoo-commits] repo/gentoo:master commit in: dev-python/tables/files/, dev-python/tables/
@ 2024-07-10 10:53 Michał Górny
  0 siblings, 0 replies; 3+ messages in thread
From: Michał Górny @ 2024-07-10 10:53 UTC (permalink / raw
  To: gentoo-commits

commit:     edf6876c43828c4321e0f9b70398f4cc8f51da55
Author:     Michał Górny <mgorny <AT> gentoo <DOT> org>
AuthorDate: Wed Jul 10 09:51:50 2024 +0000
Commit:     Michał Górny <mgorny <AT> gentoo <DOT> org>
CommitDate: Wed Jul 10 10:53:03 2024 +0000
URL:        https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=edf6876c

dev-python/tables: Add a patch for numpy-2 support

Signed-off-by: Michał Górny <mgorny <AT> gentoo.org>

 dev-python/tables/files/tables-3.9.2-numpy-2.patch | 264 +++++++++++++++++++++
 dev-python/tables/tables-3.9.2-r1.ebuild           |  80 +++++++
 2 files changed, 344 insertions(+)

diff --git a/dev-python/tables/files/tables-3.9.2-numpy-2.patch b/dev-python/tables/files/tables-3.9.2-numpy-2.patch
new file mode 100644
index 000000000000..a3d56d13f1a8
--- /dev/null
+++ b/dev-python/tables/files/tables-3.9.2-numpy-2.patch
@@ -0,0 +1,264 @@
+diff --git a/setup.py b/setup.py
+index 48dc6ca5..e8957c1f 100755
+--- a/setup.py
++++ b/setup.py
+@@ -736,7 +736,10 @@ if __name__ == "__main__":
+ 
+     # -----------------------------------------------------------------
+ 
+-    def_macros = [("NDEBUG", 1)]
++    def_macros = [
++        ("NDEBUG", 1),
++        ("NPY_TARGET_VERSION", "NPY_1_20_API_VERSION"),
++    ]
+ 
+     # Define macros for Windows platform
+     if os.name == "nt":
+diff --git a/src/utils.c b/src/utils.c
+index 15fce02d..b28dbc90 100644
+--- a/src/utils.c
++++ b/src/utils.c
+@@ -765,8 +765,8 @@ hid_t create_ieee_complex64(const char *byteorder) {
+     return float_id;
+   }
+ 
+-  H5Tinsert(complex_id, "r", HOFFSET(npy_complex64, real), float_id);
+-  H5Tinsert(complex_id, "i", HOFFSET(npy_complex64, imag), float_id);
++  H5Tinsert(complex_id, "r", 0, float_id);
++  H5Tinsert(complex_id, "i", 4, float_id);
+   H5Tclose(float_id);
+   return complex_id;
+ }
+@@ -790,8 +790,8 @@ hid_t create_ieee_complex128(const char *byteorder) {
+     return float_id;
+   }
+ 
+-  H5Tinsert(complex_id, "r", HOFFSET(npy_complex128, real), float_id);
+-  H5Tinsert(complex_id, "i", HOFFSET(npy_complex128, imag), float_id);
++  H5Tinsert(complex_id, "r", 0, float_id);
++  H5Tinsert(complex_id, "i", 8, float_id);
+   H5Tclose(float_id);
+   return complex_id;
+ }
+@@ -822,8 +822,8 @@ hid_t create_ieee_complex192(const char *byteorder) {
+     return err;
+   }
+ 
+-  H5Tinsert(complex_id, "r", HOFFSET(npy_complex192, real), float_id);
+-  H5Tinsert(complex_id, "i", HOFFSET(npy_complex192, imag), float_id);
++  H5Tinsert(complex_id, "r", 0, float_id);
++  H5Tinsert(complex_id, "i", 12, float_id);
+   H5Tclose(float_id);
+   return complex_id;
+ }
+@@ -854,8 +854,8 @@ hid_t create_ieee_complex256(const char *byteorder) {
+     return err;
+   }
+ 
+-  H5Tinsert(complex_id, "r", HOFFSET(npy_complex256, real), float_id);
+-  H5Tinsert(complex_id, "i", HOFFSET(npy_complex256, imag), float_id);
++  H5Tinsert(complex_id, "r", 0, float_id);
++  H5Tinsert(complex_id, "i", 16, float_id);
+   H5Tclose(float_id);
+   return complex_id;
+ }
+diff --git a/tables/atom.py b/tables/atom.py
+index 56ab6423..5d4fba2b 100644
+--- a/tables/atom.py
++++ b/tables/atom.py
+@@ -276,15 +276,15 @@ class Atom(metaclass=MetaAtom):
+             >>> atom1 = StringAtom(itemsize=10)  # same as ``atom2``
+             >>> atom2 = Atom.from_kind('string', 10)  # same as ``atom1``
+             >>> atom3 = IntAtom()
+-            >>> atom1 == 'foo'
++            >>> bool(atom1 == 'foo')
+             False
+-            >>> atom1 == atom2
++            >>> bool(atom1 == atom2)
+             True
+-            >>> atom2 != atom1
++            >>> bool(atom2 != atom1)
+             False
+-            >>> atom1 == atom3
++            >>> bool(atom1 == atom3)
+             False
+-            >>> atom3 != atom2
++            >>> bool(atom3 != atom2)
+             True
+ 
+     """
+diff --git a/tables/index.py b/tables/index.py
+index e8c8caf7..28ff37e2 100644
+--- a/tables/index.py
++++ b/tables/index.py
+@@ -581,7 +581,8 @@ class Index(NotLoggedMixin, Group, indexesextension.Index):
+                 # Add a second offset in this case
+                 # First normalize the number of rows
+                 offset2 = (nrow % self.nslicesblock) * slicesize // lbucket
+-                idx += offset2
++                assert offset2 < 2**(indsize*8)
++                idx += np.asarray(offset2).astype(idx.dtype)
+         # Add the last row at the beginning of arr & idx (if needed)
+         if (indsize == 8 and nelementsILR > 0):
+             # It is possible that the values in LR are already sorted.
+@@ -622,11 +623,11 @@ class Index(NotLoggedMixin, Group, indexesextension.Index):
+             show_stats("Entering final_idx32", tref)
+         # Do an upcast first in order to add the offset.
+         idx = idx.astype('uint64')
+-        idx += offset
++        idx += np.asarray(offset).astype(idx.dtype)
+         # The next partition is valid up to table sizes of
+         # 2**30 * 2**18 = 2**48 bytes, that is, 256 Tera-elements,
+         # which should be a safe figure, at least for a while.
+-        idx //= self.lbucket
++        idx //= np.asarray(self.lbucket).astype(idx.dtype)
+         # After the division, we can downsize the indexes to 'uint32'
+         idx = idx.astype('uint32')
+         if profile:
+@@ -2002,7 +2003,7 @@ class Index(NotLoggedMixin, Group, indexesextension.Index):
+                 else:
+                     self.indicesLR._read_index_slice(start, stop, idx)
+                 if indsize == 8:
+-                    idx //= lbucket
++                    idx //= np.asarray(lbucket).astype(idx.dtype)
+                 elif indsize == 2:
+                     # The chunkmap size cannot be never larger than 'int_'
+                     idx = idx.astype("int_")
+diff --git a/tables/tests/common.py b/tables/tests/common.py
+index 31378a88..1992f39a 100644
+--- a/tables/tests/common.py
++++ b/tables/tests/common.py
+@@ -205,7 +205,7 @@ def allequal(a, b, flavor="numpy"):
+     return result
+ 
+ 
+-def areArraysEqual(arr1, arr2):
++def areArraysEqual(arr1, arr2, *, check_type=True):
+     """Are both `arr1` and `arr2` equal arrays?
+ 
+     Arguments can be regular NumPy arrays, chararray arrays or
+@@ -217,8 +217,8 @@ def areArraysEqual(arr1, arr2):
+     t1 = type(arr1)
+     t2 = type(arr2)
+ 
+-    if not ((hasattr(arr1, 'dtype') and arr1.dtype == arr2.dtype) or
+-            issubclass(t1, t2) or issubclass(t2, t1)):
++    if check_type and not ((hasattr(arr1, 'dtype') and arr1.dtype == arr2.dtype) or
++                           issubclass(t1, t2) or issubclass(t2, t1)):
+         return False
+ 
+     return np.all(arr1 == arr2)
+diff --git a/tables/tests/test_expression.py b/tables/tests/test_expression.py
+index 018d4208..d9c0e990 100644
+--- a/tables/tests/test_expression.py
++++ b/tables/tests/test_expression.py
+@@ -265,9 +265,12 @@ class MixedContainersTestCase(common.TempFileMixin, common.PyTablesTestCase):
+         if common.verbose:
+             print("Computed expression:", repr(r1), r1.dtype)
+             print("Should look like:", repr(r2), r2.dtype)
+-        self.assertTrue(
+-            r1.shape == r2.shape and r1.dtype == r2.dtype and r1 == r2,
+-            "Evaluate is returning a wrong value.")
++        msg = f"Evaluate is returning a wrong value: {expr_str}\n{r1=}\n{r2=}"
++        self.assertEqual(r1.shape, r2.shape, msg=msg)
++        # In something like 2 * np.in16(3) + np.int16(2) the result is still a
++        # np.int16 in NumPy 2.0, so we shouldn't actually check this:
++        # self.assertEqual(r1.dtype, r2.dtype, msg=msg)
++        self.assertEqual(r1, r2, msg=msg)
+ 
+     def test01a_out(self):
+         """Checking expressions with mixed objects (`out` param)"""
+@@ -305,8 +308,9 @@ class MixedContainersTestCase(common.TempFileMixin, common.PyTablesTestCase):
+             if common.verbose:
+                 print("Computed expression:", repr(r1), r1.dtype)
+                 print("Should look like:", repr(r2), r2.dtype)
+-            self.assertTrue(common.areArraysEqual(r1, r2),
+-                            "Evaluate is returning a wrong value.")
++            msg = f"Evaluate is returning a wrong value: {expr_str}\n{r1=}\n{r2=}"
++            # On NumPy 2 type promotion is different so don't check type here
++            self.assertTrue(common.areArraysEqual(r1, r2, check_type=False), msg=msg)
+ 
+     def test02a_sss(self):
+         """Checking mixed objects and start, stop, step (I)"""
+diff --git a/tables/tests/test_indexvalues.py b/tables/tests/test_indexvalues.py
+index fac33af8..85ca38c3 100644
+--- a/tables/tests/test_indexvalues.py
++++ b/tables/tests/test_indexvalues.py
+@@ -2296,6 +2296,11 @@ class SelectValuesTestCase(common.TempFileMixin, common.PyTablesTestCase):
+         self.assertFalse(t1var3.index.dirty)
+         self.assertFalse(t1var4.index.dirty)
+ 
++        # TODO: IT IS DIRTY BECAUSE THIS FIXES THINGS FOR FINSV2aTestCase,
++        # which otherwise fails a test a few lines below!
++        for col in table1.colinstances.values():
++            col.reindex()
++
+         # Do some selections and check the results
+         # First selection: string
+         # Convert the limits to the appropriate type
+@@ -2318,11 +2323,15 @@ class SelectValuesTestCase(common.TempFileMixin, common.PyTablesTestCase):
+         # Second selection: bool
+         results1 = [p["var2"] for p in table1.where('t1var2 == True')]
+         results2 = [p["var2"] for p in table2 if p["var2"] is True]
+-        if common.verbose:
+-            print("Length results:", len(results1))
+-            print("Should be:", len(results2))
+-        self.assertEqual(len(results1), len(results2))
+-        self.assertEqual(results1, results2)
++        t2var1_vals = [p["var1"] for p in table2]
++        t2var2_vals = [p["var2"] for p in table2]
++        msg = (
++            f"Incorrect results for t1var2[n] == True where\n"
++            f"t2var1_vals={repr(t2var1_vals)}\nt2var2_vals={repr(t2var2_vals)}\n"
++            f"\n{results1=}\n{results2=}"
++        )
++        self.assertEqual(len(results1), len(results2), msg=msg)
++        self.assertEqual(results1, results2, msg=msg)
+ 
+         # Third selection: int
+         # Convert the limits to the appropriate type
+@@ -3228,7 +3237,9 @@ class LastRowReuseBuffers(common.PyTablesTestCase):
+ 
+ 
+ normal_tests = (
+-    "SV1aTestCase", "SV2aTestCase", "SV3aTestCase",
++    "SV1aTestCase",
++    "SV2aTestCase",
++    "SV3aTestCase",
+ )
+ 
+ heavy_tests = (
+diff --git a/tables/utils.py b/tables/utils.py
+index e11e5ba7..7d786e32 100644
+--- a/tables/utils.py
++++ b/tables/utils.py
+@@ -25,6 +25,11 @@ byteorders = {
+ SizeType = np.int64
+ 
+ 
++copy_if_needed = (
++    None if np.lib.NumpyVersion(np.__version__) >= "2.0.0" else False
++)
++
++
+ def correct_byteorder(ptype, byteorder):
+     """Fix the byteorder depending on the PyTables types."""
+ 
+@@ -78,7 +83,7 @@ def idx2long(index):
+ # with atom from a generic python type.  If copy is stated as True, it
+ # is assured that it will return a copy of the object and never the same
+ # object or a new one sharing the same memory.
+-def convert_to_np_atom(arr, atom, copy=False):
++def convert_to_np_atom(arr, atom, copy=copy_if_needed):
+     """Convert a generic object into a NumPy object compliant with atom."""
+ 
+     # First, convert the object into a NumPy array
+@@ -112,7 +117,7 @@ def convert_to_np_atom2(object, atom):
+ 
+     # Check whether the object needs to be copied to make the operation
+     # safe to in-place conversion.
+-    copy = atom.type in ['time64']
++    copy = True if atom.type in ['time64'] else copy_if_needed
+     nparr = convert_to_np_atom(object, atom, copy)
+     # Finally, check the byteorder and change it if needed
+     byteorder = byteorders[nparr.dtype.byteorder]

diff --git a/dev-python/tables/tables-3.9.2-r1.ebuild b/dev-python/tables/tables-3.9.2-r1.ebuild
new file mode 100644
index 000000000000..bdbc563361d3
--- /dev/null
+++ b/dev-python/tables/tables-3.9.2-r1.ebuild
@@ -0,0 +1,80 @@
+# Copyright 1999-2024 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+DISTUTILS_EXT=1
+DISTUTILS_USE_PEP517=setuptools
+PYTHON_COMPAT=( pypy3 python3_{10..12} )
+PYTHON_REQ_USE="threads(+)"
+
+inherit distutils-r1 prefix pypi
+
+DESCRIPTION="Hierarchical datasets for Python"
+HOMEPAGE="
+	https://www.pytables.org/
+	https://github.com/PyTables/PyTables/
+	https://pypi.org/project/tables/
+"
+
+LICENSE="BSD"
+SLOT="0"
+KEYWORDS="~amd64 ~arm ~arm64 ~ia64 ~loong ~ppc64 ~riscv ~sparc ~x86 ~amd64-linux ~x86-linux"
+IUSE="+cpudetection examples test"
+RESTRICT="!test? ( test )"
+
+DEPEND="
+	app-arch/bzip2:0=
+	app-arch/lz4:0=
+	>=app-arch/zstd-1.0.0:=
+	>=dev-libs/c-blosc-1.11.1:0=
+	>=dev-libs/c-blosc2-2.11.0:=
+	dev-libs/lzo:2=
+	>=dev-python/numpy-1.19.0:=[${PYTHON_USEDEP}]
+	>=sci-libs/hdf5-1.8.4:=
+"
+RDEPEND="
+	${DEPEND}
+	>=dev-python/numexpr-2.6.2[${PYTHON_USEDEP}]
+	dev-python/packaging[${PYTHON_USEDEP}]
+	cpudetection? ( dev-python/py-cpuinfo[${PYTHON_USEDEP}] )
+"
+BDEPEND="
+	>=dev-python/cython-0.21[${PYTHON_USEDEP}]
+	virtual/pkgconfig
+	cpudetection? ( dev-python/py-cpuinfo[${PYTHON_USEDEP}] )
+	test? (
+		${RDEPEND}
+	)
+"
+
+python_prepare_all() {
+	local PATCHES=(
+		# https://github.com/PyTables/PyTables/pull/1176
+		"${FILESDIR}/${P}-numpy-2.patch"
+	)
+
+	rm -r c-blosc/{blosc,internal-complibs} || die
+
+	distutils-r1_python_prepare_all
+
+	sed -i -e '/blosc2/d' pyproject.toml || die
+	hprefixify -w '/prefixes =/' setup.py
+
+	export PYTABLES_NO_EMBEDDED_LIBS=1
+	export USE_PKGCONFIG=TRUE
+}
+
+python_test() {
+	cd "${BUILD_DIR}/install$(python_get_sitedir)" || die
+	"${EPYTHON}" tables/tests/test_all.py -v || die
+}
+
+python_install_all() {
+	distutils-r1_python_install_all
+
+	if use examples; then
+		dodoc -r contrib examples
+		docompress -x /usr/share/doc/${PF}/{contrib,examples}
+	fi
+}


^ permalink raw reply related	[flat|nested] 3+ messages in thread

* [gentoo-commits] repo/gentoo:master commit in: dev-python/tables/files/, dev-python/tables/
@ 2024-07-10 10:53 Michał Górny
  0 siblings, 0 replies; 3+ messages in thread
From: Michał Górny @ 2024-07-10 10:53 UTC (permalink / raw
  To: gentoo-commits

commit:     527964469cc360ae78862df57d6bf1f57d17c9fd
Author:     Michał Górny <mgorny <AT> gentoo <DOT> org>
AuthorDate: Wed Jul 10 09:52:06 2024 +0000
Commit:     Michał Górny <mgorny <AT> gentoo <DOT> org>
CommitDate: Wed Jul 10 10:53:04 2024 +0000
URL:        https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=52796446

dev-python/tables: Enable py3.13

Signed-off-by: Michał Górny <mgorny <AT> gentoo.org>

 dev-python/tables/files/tables-3.9.2-py313.patch | 73 ++++++++++++++++++++++++
 dev-python/tables/tables-3.9.2-r1.ebuild         | 11 +++-
 2 files changed, 83 insertions(+), 1 deletion(-)

diff --git a/dev-python/tables/files/tables-3.9.2-py313.patch b/dev-python/tables/files/tables-3.9.2-py313.patch
new file mode 100644
index 000000000000..660c5615765f
--- /dev/null
+++ b/dev-python/tables/files/tables-3.9.2-py313.patch
@@ -0,0 +1,73 @@
+From 4a1b480e7e3758cf2cf06354ec5720020db16ce7 Mon Sep 17 00:00:00 2001
+From: Antonio Valentino <antonio.valentino@tiscali.it>
+Date: Sun, 19 May 2024 17:39:47 +0200
+Subject: [PATCH] Fix compatibility with Python v3.13 (Closes: #1166)
+
+The unittest.makeSuite function is not available in Python 3.13.
+---
+diff --git a/tables/tests/test_aux.py b/tables/tests/test_aux.py
+index 95f34ee16..cf4f022de 100644
+--- a/tables/tests/test_aux.py
++++ b/tables/tests/test_aux.py
+@@ -2,6 +2,7 @@
+ import numpy as np
+ 
+ import tables as tb
++from tables.tests.common import make_suite
+ 
+ 
+ class TestAuxiliaryFunctions(unittest.TestCase):
+diff --git a/tables/nodes/tests/test_filenode.py b/tables/nodes/tests/test_filenode.py
+index c2754218a..3572cc38f 100644
+--- a/tables/nodes/tests/test_filenode.py
++++ b/tables/nodes/tests/test_filenode.py
+@@ -9,7 +9,7 @@
+ from ... import open_file, file, NoSuchNodeError
+ from ...nodes import filenode
+ from ...tests.common import (
+-    unittest, TempFileMixin, parse_argv, print_versions,
++    unittest, TempFileMixin, parse_argv, print_versions, make_suite,
+     PyTablesTestCase as TestCase)
+ 
+ 
+diff --git a/tables/tests/common.py b/tables/tests/common.py
+index 31378a880..918b17247 100644
+--- a/tables/tests/common.py
++++ b/tables/tests/common.py
+@@ -366,3 +366,10 @@ def test00(self):
+         print(f"VmSize: {vmsize:>7} kB\tVmRSS: {vmrss:>7} kB")
+         print(f"VmData: {vmdata:>7} kB\tVmStk: {vmstk:>7} kB")
+         print(f"VmExe:  {vmexe:>7} kB\tVmLib: {vmlib:>7} kB")
++
++
++try:
++    from unittest import makeSuite as make_suite
++except ImportError:
++    def make_suite(test_case_class):
++        return unittest.TestLoader().loadTestsFromTestCase(test_case_class)
+From 424784895b0fb15ad06707ce60f9829cef4f11e2 Mon Sep 17 00:00:00 2001
+From: =?UTF-8?q?Miro=20Hron=C4=8Dok?= <miro@hroncok.cz>
+Date: Mon, 3 Jun 2024 17:21:38 +0200
+Subject: [PATCH] Make tables.tests.common.make_suite() accept the prefix
+ argument
+
+...as test_queries.py uses it.
+---
+ tables/tests/common.py | 7 +++++--
+ 1 file changed, 5 insertions(+), 2 deletions(-)
+
+diff --git a/tables/tests/common.py b/tables/tests/common.py
+index 918b17247..1d2e5feab 100644
+--- a/tables/tests/common.py
++++ b/tables/tests/common.py
+@@ -371,5 +371,8 @@ def test00(self):
+ try:
+     from unittest import makeSuite as make_suite
+ except ImportError:
+-    def make_suite(test_case_class):
+-        return unittest.TestLoader().loadTestsFromTestCase(test_case_class)
++    def make_suite(test_case_class, *, prefix=None):
++        loader = unittest.TestLoader()
++        if prefix:
++            loader.testMethodPrefix = prefix
++        return loader.loadTestsFromTestCase(test_case_class)

diff --git a/dev-python/tables/tables-3.9.2-r1.ebuild b/dev-python/tables/tables-3.9.2-r1.ebuild
index bdbc563361d3..0f77247031d8 100644
--- a/dev-python/tables/tables-3.9.2-r1.ebuild
+++ b/dev-python/tables/tables-3.9.2-r1.ebuild
@@ -5,7 +5,7 @@ EAPI=8
 
 DISTUTILS_EXT=1
 DISTUTILS_USE_PEP517=setuptools
-PYTHON_COMPAT=( pypy3 python3_{10..12} )
+PYTHON_COMPAT=( pypy3 python3_{10..13} )
 PYTHON_REQ_USE="threads(+)"
 
 inherit distutils-r1 prefix pypi
@@ -52,10 +52,19 @@ python_prepare_all() {
 	local PATCHES=(
 		# https://github.com/PyTables/PyTables/pull/1176
 		"${FILESDIR}/${P}-numpy-2.patch"
+		# https://github.com/PyTables/PyTables/commit/4a1b480e7e3758cf2cf06354ec5720020db16ce7
+		# https://github.com/PyTables/PyTables/commit/424784895b0fb15ad06707ce60f9829cef4f11e2
+		"${FILESDIR}/${P}-py313.patch"
 	)
 
 	rm -r c-blosc/{blosc,internal-complibs} || die
 
+	# part of https://github.com/PyTables/PyTables/commit/4a1b480e7e3758cf2cf06354ec5720020db16ce7
+	# (warning: do it *before* patching, so it doesn't modify
+	# the added function)
+	find -name '*.py' -exec \
+		sed -i -e 's:unittest[.]makeSuite:make_suite:' {} + || die
+
 	distutils-r1_python_prepare_all
 
 	sed -i -e '/blosc2/d' pyproject.toml || die


^ permalink raw reply related	[flat|nested] 3+ messages in thread

end of thread, other threads:[~2024-07-10 10:53 UTC | newest]

Thread overview: 3+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2024-07-10 10:53 [gentoo-commits] repo/gentoo:master commit in: dev-python/tables/files/, dev-python/tables/ Michał Górny
  -- strict thread matches above, loose matches on Subject: below --
2024-07-10 10:53 Michał Górny
2024-06-07 18:16 Michał Górny

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox