void-packages/srcpkgs/python3-tables/patches/numpy-2.0.patch

150 lines
5.7 KiB
Diff

diff -ur a/setup.py b/setup.py
--- a/setup.py 2024-07-31 09:34:03.585371800 -0400
+++ b/setup.py 2024-07-31 09:35:01.472775930 -0400
@@ -161,7 +161,7 @@
# https://pip.pypa.io/en/stable/reference/pip_install.html#installation-order
# at this point we can be sure pip has already installed numpy
numpy_incl = pkg_resources.resource_filename(
- "numpy", "core/include"
+ "numpy", "_core/include"
)
for ext in self.extensions:
@@ -505,7 +505,7 @@
# -----------------------------------------------------------------
- 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":
def_macros.append(("WIN32", 1))
diff -ur a/src/utils.c b/src/utils.c
--- a/src/utils.c 2024-07-31 09:34:03.588371821 -0400
+++ b/src/utils.c 2024-07-31 09:36:08.648172551 -0400
@@ -767,8 +767,8 @@
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;
}
@@ -792,8 +792,8 @@
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;
}
@@ -824,8 +824,8 @@
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;
}
@@ -856,8 +856,8 @@
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 -ur a/tables/atom.py b/tables/atom.py
--- a/tables/atom.py 2024-07-31 09:34:03.589371829 -0400
+++ b/tables/atom.py 2024-07-31 09:36:43.663352202 -0400
@@ -276,15 +276,15 @@
>>> 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 -ur a/tables/index.py b/tables/index.py
--- a/tables/index.py 2024-07-31 09:34:03.591371843 -0400
+++ b/tables/index.py 2024-07-31 09:38:32.692911595 -0400
@@ -581,7 +581,8 @@
# 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 @@
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 @@
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 -ur a/tables/utils.py b/tables/utils.py
--- a/tables/utils.py 2024-07-31 09:34:03.606371947 -0400
+++ b/tables/utils.py 2024-07-31 09:39:41.246261430 -0400
@@ -75,7 +75,7 @@
# 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=None):
"""Convert a generic object into a NumPy object compliant with atom."""
# First, convert the object into a NumPy array
@@ -109,7 +109,7 @@
# 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 None
nparr = convert_to_np_atom(object, atom, copy)
# Finally, check the byteorder and change it if needed
byteorder = byteorders[nparr.dtype.byteorder]