Skip to content

Commit 50235c0

Browse files
tomwhited-v-b
andauthored
Handle Path in make_store_path (#1992)
* Handle Path in `make_store_path` * Add test for `make_store_path` --------- Co-authored-by: Davis Bennett <[email protected]>
1 parent b1bb15a commit 50235c0

File tree

2 files changed

+38
-0
lines changed

2 files changed

+38
-0
lines changed

src/zarr/store/core.py

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -79,6 +79,8 @@ def make_store_path(store_like: StoreLike | None, *, mode: OpenMode | None = Non
7979
if mode is None:
8080
mode = "w" # exception to the default mode = 'r'
8181
return StorePath(MemoryStore(mode=mode))
82+
elif isinstance(store_like, Path):
83+
return StorePath(LocalStore(store_like, mode=mode or "r"))
8284
elif isinstance(store_like, str):
8385
return StorePath(LocalStore(Path(store_like), mode=mode or "r"))
8486
raise TypeError

tests/v3/test_store/test_core.py

Lines changed: 36 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,36 @@
1+
from pathlib import Path
2+
3+
import pytest
4+
5+
from zarr.store.core import make_store_path
6+
from zarr.store.local import LocalStore
7+
from zarr.store.memory import MemoryStore
8+
9+
10+
def test_make_store_path(tmpdir) -> None:
11+
# None
12+
store_path = make_store_path(None)
13+
assert isinstance(store_path.store, MemoryStore)
14+
15+
# str
16+
store_path = make_store_path(str(tmpdir))
17+
assert isinstance(store_path.store, LocalStore)
18+
assert Path(store_path.store.root) == Path(tmpdir)
19+
20+
# Path
21+
store_path = make_store_path(Path(tmpdir))
22+
assert isinstance(store_path.store, LocalStore)
23+
assert Path(store_path.store.root) == Path(tmpdir)
24+
25+
# Store
26+
store_path = make_store_path(store_path.store)
27+
assert isinstance(store_path.store, LocalStore)
28+
assert Path(store_path.store.root) == Path(tmpdir)
29+
30+
# StorePath
31+
store_path = make_store_path(store_path)
32+
assert isinstance(store_path.store, LocalStore)
33+
assert Path(store_path.store.root) == Path(tmpdir)
34+
35+
with pytest.raises(TypeError):
36+
make_store_path(1)

0 commit comments

Comments
 (0)