Skip to content

Commit a7602f6

Browse files
committed
revert revert, because I reverted too much
1 parent ffb9a8e commit a7602f6

1 file changed

Lines changed: 27 additions & 36 deletions

File tree

xarray/tests/test_backends.py

Lines changed: 27 additions & 36 deletions
Original file line numberDiff line numberDiff line change
@@ -2275,13 +2275,10 @@ def create_zarr_target(self):
22752275
raise NotImplementedError
22762276

22772277
@contextlib.contextmanager
2278-
def create_store(self, cache_members: bool = True):
2278+
def create_store(self):
22792279
with self.create_zarr_target() as store_target:
22802280
yield backends.ZarrStore.open_group(
2281-
store_target,
2282-
mode="w",
2283-
cache_members=cache_members,
2284-
**self.version_kwargs,
2281+
store_target, mode="w", **self.version_kwargs
22852282
)
22862283

22872284
def save(self, dataset, store_target, **kwargs): # type: ignore[override]
@@ -2575,7 +2572,7 @@ def test_hidden_zarr_keys(self) -> None:
25752572
skip_if_zarr_format_3("This test is unnecessary; no hidden Zarr keys")
25762573

25772574
expected = create_test_data()
2578-
with self.create_store(cache_members=False) as store:
2575+
with self.create_store() as store:
25792576
expected.dump_to_store(store)
25802577
zarr_group = store.ds
25812578

@@ -2597,7 +2594,6 @@ def test_hidden_zarr_keys(self) -> None:
25972594

25982595
# put it back and try removing from a variable
25992596
del zarr_group["var2"].attrs[self.DIMENSION_KEY]
2600-
26012597
with pytest.raises(KeyError):
26022598
with xr.decode_cf(store):
26032599
pass
@@ -3262,43 +3258,40 @@ def test_chunked_cftime_datetime(self) -> None:
32623258
assert original[name].chunks == actual_var.chunks
32633259
assert original.chunks == actual.chunks
32643260

3265-
def test_cache_members(self) -> None:
3261+
@pytest.mark.parametrize("cache_array_keys", [True, False])
3262+
def test_get_array_keys(self, cache_array_keys: bool) -> None:
32663263
"""
3267-
Ensure that if `ZarrStore` is created with `cache_members` set to `True`,
3268-
a `ZarrStore` only inspects the underlying zarr group once,
3269-
and that the results of that inspection are cached.
3264+
Ensure that if `ZarrStore` is created with `cache_array_keys` set to `True`,
3265+
a `ZarrStore.get_array_keys` only invokes the `array_keys` function on the
3266+
`ZarrStore.zarr_group` instance once, and that the results of that call are cached.
32703267
3271-
Otherwise, `ZarrStore.members` should inspect the underlying zarr group each time it is
3272-
invoked
3268+
Otherwise, `ZarrStore.get_array_keys` instance should invoke the `array_keys`
3269+
each time it is called.
32733270
"""
32743271
with self.create_zarr_target() as store_target:
3275-
zstore_mut = backends.ZarrStore.open_group(
3276-
store_target, mode="w", cache_members=False
3272+
zstore = backends.ZarrStore.open_group(
3273+
store_target, mode="w", cache_array_keys=cache_array_keys
32773274
)
32783275

32793276
# ensure that the keys are sorted
32803277
array_keys = sorted(("foo", "bar"))
32813278

32823279
# create some arrays
32833280
for ak in array_keys:
3284-
zstore_mut.zarr_group.create(name=ak, shape=(1,), dtype="uint8")
3285-
3286-
zstore_stat = backends.ZarrStore.open_group(
3287-
store_target, mode="r", cache_members=True
3288-
)
3281+
zstore.zarr_group.create(name=ak, shape=(1,), dtype="uint8")
32893282

3290-
observed_keys_0 = sorted(zstore_stat.array_keys())
3283+
observed_keys_0 = sorted(zstore.get_array_keys())
32913284
assert observed_keys_0 == array_keys
32923285

32933286
# create a new array
32943287
new_key = "baz"
3295-
zstore_mut.zarr_group.create(name=new_key, shape=(1,), dtype="uint8")
3296-
3297-
observed_keys_1 = sorted(zstore_stat.array_keys())
3298-
assert observed_keys_1 == array_keys
3288+
zstore.zarr_group.create(name=new_key, shape=(1,), dtype="uint8")
3289+
observed_keys_1 = sorted(zstore.get_array_keys())
32993290

3300-
observed_keys_2 = sorted(zstore_mut.array_keys())
3301-
assert observed_keys_2 == sorted(array_keys + [new_key])
3291+
if cache_array_keys:
3292+
assert observed_keys_1 == array_keys
3293+
else:
3294+
assert observed_keys_1 == sorted(array_keys + [new_key])
33023295

33033296

33043297
@requires_zarr
@@ -3378,11 +3371,11 @@ def test_append(self) -> None:
33783371
}
33793372
else:
33803373
expected = {
3381-
"iter": 2,
3374+
"iter": 3,
33823375
"contains": 18,
33833376
"setitem": 10,
33843377
"getitem": 13,
3385-
"listdir": 1,
3378+
"listdir": 2,
33863379
"list_prefix": 2,
33873380
}
33883381

@@ -3480,11 +3473,11 @@ def test_region_write(self) -> None:
34803473
}
34813474
else:
34823475
expected = {
3483-
"iter": 1,
3476+
"iter": 2,
34843477
"contains": 4,
34853478
"setitem": 1,
3486-
"getitem": 5,
3487-
"listdir": 1,
3479+
"getitem": 4,
3480+
"listdir": 2,
34883481
"list_prefix": 0,
34893482
}
34903483

@@ -3563,11 +3556,9 @@ def create_zarr_target(self):
35633556
yield tmp
35643557

35653558
@contextlib.contextmanager
3566-
def create_store(self, cache_members: bool = True):
3559+
def create_store(self):
35673560
with self.create_zarr_target() as store_target:
3568-
group = backends.ZarrStore.open_group(
3569-
store_target, mode="a", cache_members=cache_members
3570-
)
3561+
group = backends.ZarrStore.open_group(store_target, mode="a")
35713562
yield group
35723563

35733564

0 commit comments

Comments
 (0)