Skip to content

Commit 2ba9c34

Browse files
committed
sharded store test
1 parent dd37039 commit 2ba9c34

File tree

1 file changed

+42
-1
lines changed

1 file changed

+42
-1
lines changed

xarray/tests/test_backends.py

Lines changed: 42 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -110,11 +110,26 @@
110110

111111
have_zarr_v3 = False
112112
try:
113-
# as of Zarr v2.13 these imports require environment variable
113+
# as of Zarr v2.14 these imports require environment variable
114114
# ZARR_V3_EXPERIMENTAL_API=1
115115
from zarr import DirectoryStoreV3, KVStoreV3
116116

117117
have_zarr_v3 = True
118+
119+
from zarr._storage.v3_storage_transformers import v3_sharding_available
120+
121+
if v3_sharding_available:
122+
# as of Zarr v2.14 these imports require environment variable
123+
# ZARR_V3_SHARDING=1
124+
# TODO: change import to
125+
# from zarr import ShardingStorageTransformer
126+
# when ShardingStorageTransformer becomes available at the top-level zarr namespace
127+
from zarr._storage.v3_storage_transformers import ShardingStorageTransformer
128+
129+
have_sharding_v3 = True
130+
else:
131+
have_sharding_v3 = False
132+
118133
except ImportError:
119134
KVStoreV3 = None
120135

@@ -2660,6 +2675,32 @@ def create_zarr_target(self):
26602675
yield tmp
26612676

26622677

2678+
@pytest.mark.skipif(not have_zarr_v3, reason="requires zarr version 3")
2679+
class TestZarrStorageTransformersV3(TestZarrDirectoryStoreV3):
2680+
@pytest.mark.skipif(not have_sharding_v3, reason="requires sharding")
2681+
def test_sharding_storage_transformer(self):
2682+
original = create_test_data()
2683+
original["var2"].encoding.update(
2684+
{
2685+
"chunks": (2, 3),
2686+
"storage_transformers": [
2687+
ShardingStorageTransformer("indexed", chunks_per_shard=(2, 2))
2688+
],
2689+
}
2690+
)
2691+
2692+
original["var3"].encoding.update(
2693+
{
2694+
"chunks": (2, 2),
2695+
"storage_transformers": [
2696+
ShardingStorageTransformer("indexed", chunks_per_shard=(2, 2))
2697+
],
2698+
}
2699+
)
2700+
with self.roundtrip(original) as ds1:
2701+
assert_equal(ds1, original)
2702+
2703+
26632704
@requires_zarr
26642705
@requires_fsspec
26652706
def test_zarr_storage_options() -> None:

0 commit comments

Comments
 (0)