fix(py): a 0-d integer array indexes like an int
ds[np.array(1)] went down the index-list path, where tolist() returns a scalar and extracting a list of indices raised a confusing TypeError. h5py treats it as an integer index; so do we now. The h5py comparison keys include 0-d arrays (signed and unsigned) on each axis; they failed before. Co-Authored-By: Claude Opus 5.5 (1M context) <[email protected]>
This commit is contained in:
@@ -234,7 +234,8 @@ def assert_same(ours, theirs, what=""):
|
||||
def keys_for(shape):
|
||||
if shape == ():
|
||||
return [(), Ellipsis]
|
||||
keys = [(), Ellipsis, 0, -1, slice(None), slice(None, None, 2), slice(1, None, 3), slice(0, 0), np.int64(0)]
|
||||
keys = [(), Ellipsis, 0, -1, slice(None), slice(None, None, 2), slice(1, None, 3), slice(0, 0), np.int64(0),
|
||||
np.array(0), np.array(-1, dtype="i1")]
|
||||
n0 = shape[0]
|
||||
if n0 == 0:
|
||||
return [(), Ellipsis, slice(None), slice(None, None, 2), slice(0, 0)]
|
||||
@@ -252,6 +253,8 @@ def keys_for(shape):
|
||||
(slice(None), [0, n1 - 1] if n1 > 1 else [0]),
|
||||
(slice(None, None, 2), 1),
|
||||
(slice(0, 2), slice(3, 1)),
|
||||
(np.array(1) if n0 > 1 else np.array(0), slice(None)),
|
||||
(slice(None), np.array(n1 - 1, dtype="u2")),
|
||||
]
|
||||
if len(shape) >= 3:
|
||||
keys += [(0, slice(None), -1), (slice(1, None, 2), 2, slice(None, None, 3)), (Ellipsis, 0, 0), (0, Ellipsis, 1)]
|
||||
|
||||
Reference in New Issue
Block a user