Skip to content

Commit ac6c6a3

Browse files
Ensure that store_dict used for empty dicts (#2162)
* Ensure that store_dict used for empty dicts The `store_dict or {}` is Falsey for empty dicts, so the user provided dict wasn't being used. * fixup --------- Co-authored-by: David Stansby <[email protected]>
1 parent fb9c526 commit ac6c6a3

File tree

2 files changed

+14
-3
lines changed

2 files changed

+14
-3
lines changed

src/zarr/store/memory.py

+3-1
Original file line numberDiff line numberDiff line change
@@ -30,7 +30,9 @@ def __init__(
3030
mode: AccessModeLiteral = "r",
3131
):
3232
super().__init__(mode=mode)
33-
self._store_dict = store_dict or {}
33+
if store_dict is None:
34+
store_dict = {}
35+
self._store_dict = store_dict
3436

3537
async def empty(self) -> bool:
3638
return not self._store_dict

tests/v3/test_store/test_memory.py

+11-2
Original file line numberDiff line numberDiff line change
@@ -18,11 +18,14 @@ def set(self, store: MemoryStore, key: str, value: Buffer) -> None:
1818
def get(self, store: MemoryStore, key: str) -> Buffer:
1919
return store._store_dict[key]
2020

21-
@pytest.fixture(scope="function", params=[None, {}])
21+
@pytest.fixture(scope="function", params=[None, True])
2222
def store_kwargs(
2323
self, request: pytest.FixtureRequest
2424
) -> dict[str, str | None | dict[str, Buffer]]:
25-
return {"store_dict": request.param, "mode": "r+"}
25+
kwargs = {"store_dict": None, "mode": "r+"}
26+
if request.param is True:
27+
kwargs["store_dict"] = {}
28+
return kwargs
2629

2730
@pytest.fixture(scope="function")
2831
def store(self, store_kwargs: str | None | dict[str, Buffer]) -> MemoryStore:
@@ -77,3 +80,9 @@ def test_store_supports_partial_writes(self, store: GpuMemoryStore) -> None:
7780

7881
def test_list_prefix(self, store: GpuMemoryStore) -> None:
7982
assert True
83+
84+
85+
def test_uses_dict():
86+
store_dict = {}
87+
store = MemoryStore(store_dict)
88+
assert store._store_dict is store_dict

0 commit comments

Comments
 (0)