Skip to content

Commit 37ad8f4

Browse files
committed
(feat): use _async_array for reading
1 parent 0393a74 commit 37ad8f4

File tree

1 file changed

+10
-1
lines changed

1 file changed

+10
-1
lines changed

src/anndata/_io/specs/methods.py

Lines changed: 10 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -492,6 +492,8 @@ def write_basic_dask_h5(
492492
@_REGISTRY.register_read(ZarrArray, IOSpec("array", "0.2.0"))
493493
@_REGISTRY.register_read(ZarrArray, IOSpec("string-array", "0.2.0"))
494494
async def read_array(elem: ArrayStorageType, *, _reader: Reader) -> npt.NDArray:
495+
if not is_zarr_v2() and isinstance(elem, ZarrArray):
496+
return await elem._async_array.getitem(())
495497
return elem[()]
496498

497499

@@ -603,7 +605,10 @@ def _to_hdf5_vlen_strings(value: np.ndarray) -> np.ndarray:
603605
async def read_recarray(
604606
d: ArrayStorageType, *, _reader: Reader
605607
) -> np.recarray | npt.NDArray:
606-
value = d[()]
608+
if not is_zarr_v2() and isinstance(d, ZarrArray):
609+
value = await d._async_array.getitem(())
610+
else:
611+
value = d[()]
607612
dtype = value.dtype
608613
value = _from_fixed_length_strings(value)
609614
if H5PY_V3:
@@ -1160,6 +1165,8 @@ def _string_array(
11601165
async def read_scalar(elem: ArrayStorageType, *, _reader: Reader) -> np.number:
11611166
# TODO: `item` ensures the return is in fact a scalar (needed after zarr v3 which now returns a 1 elem array)
11621167
# https://github.com/zarr-developers/zarr-python/issues/2713
1168+
if not is_zarr_v2() and isinstance(elem, ZarrArray):
1169+
return (await elem._async_array.getitem(())).item()
11631170
return elem[()].item()
11641171

11651172

@@ -1252,6 +1259,8 @@ async def read_hdf5_string(elem: H5Array, *, _reader: Reader) -> str:
12521259

12531260
@_REGISTRY.register_read(ZarrArray, IOSpec("string", "0.2.0"))
12541261
async def read_zarr_string(elem: ZarrArray, *, _reader: Reader) -> str:
1262+
if not is_zarr_v2() and isinstance(elem, ZarrArray):
1263+
return str(await elem._async_array.getitem(()))
12551264
return str(elem[()])
12561265

12571266

0 commit comments

Comments
 (0)