4
4
import pytest
5
5
6
6
obstore = pytest .importorskip ("obstore" )
7
+ from pathlib import Path
8
+
7
9
import pytest
8
10
from hypothesis .stateful import (
9
11
run_state_machine_as_test ,
16
18
from zarr .testing .store import StoreTests
17
19
18
20
19
- class TestObjectStore (StoreTests [ObjectStore , cpu .Buffer ]):
21
+ class TestObjectStore (StoreTests [ObjectStore [ LocalStore ] , cpu .Buffer ]):
20
22
store_cls = ObjectStore
21
23
buffer_cls = cpu .Buffer
22
24
23
25
@pytest .fixture
24
- def store_kwargs (self , tmpdir ) -> dict [str , Any ]:
25
- store = LocalStore (prefix = tmpdir )
26
+ def store_kwargs (self , tmp_path : Path ) -> dict [str , Any ]:
27
+ store = LocalStore (prefix = str ( tmp_path ) )
26
28
return {"store" : store , "read_only" : False }
27
29
28
30
@pytest .fixture
29
- def store (self , store_kwargs : dict [str , str | bool ]) -> ObjectStore :
31
+ async def store (self , store_kwargs : dict [str , Any ]) -> ObjectStore [ LocalStore ] :
30
32
return self .store_cls (** store_kwargs )
31
33
32
- async def get (self , store : ObjectStore , key : str ) -> Buffer :
33
- assert isinstance (store .store , LocalStore )
34
+ async def get (self , store : ObjectStore [LocalStore ], key : str ) -> Buffer :
34
35
new_local_store = LocalStore (prefix = store .store .prefix )
35
36
return self .buffer_cls .from_bytes (obstore .get (new_local_store , key ).bytes ())
36
37
37
- async def set (self , store : ObjectStore , key : str , value : Buffer ) -> None :
38
- assert isinstance (store .store , LocalStore )
38
+ async def set (self , store : ObjectStore [LocalStore ], key : str , value : Buffer ) -> None :
39
39
new_local_store = LocalStore (prefix = store .store .prefix )
40
40
obstore .put (new_local_store , key , value .to_bytes ())
41
41
42
- def test_store_repr (self , store : ObjectStore ) -> None :
42
+ def test_store_repr (self , store : ObjectStore [ LocalStore ] ) -> None :
43
43
from fnmatch import fnmatch
44
44
45
45
pattern = "ObjectStore(object_store://LocalStore(*))"
46
46
assert fnmatch (f"{ store !r} " , pattern )
47
47
48
- def test_store_supports_writes (self , store : ObjectStore ) -> None :
48
+ def test_store_supports_writes (self , store : ObjectStore [ LocalStore ] ) -> None :
49
49
assert store .supports_writes
50
50
51
- async def test_store_supports_partial_writes (self , store : ObjectStore ) -> None :
51
+ def test_store_supports_partial_writes (self , store : ObjectStore [ LocalStore ] ) -> None :
52
52
assert not store .supports_partial_writes
53
- with pytest .raises (NotImplementedError ):
54
- await store .set_partial_values ([("foo" , 0 , b"\x01 \x02 \x03 \x04 " )])
55
53
56
- def test_store_supports_listing (self , store : ObjectStore ) -> None :
54
+ def test_store_supports_listing (self , store : ObjectStore [ LocalStore ] ) -> None :
57
55
assert store .supports_listing
58
56
59
- def test_store_equal (self , store : ObjectStore ) -> None :
57
+ def test_store_equal (self , store : ObjectStore [ LocalStore ] ) -> None :
60
58
"""Test store equality"""
61
59
# Test equality against a different instance type
62
60
assert store != 0
@@ -73,14 +71,14 @@ def test_store_equal(self, store: ObjectStore) -> None:
73
71
def test_store_init_raises (self ) -> None :
74
72
"""Test __init__ raises appropriate error for improper store type"""
75
73
with pytest .raises (TypeError ):
76
- ObjectStore ("path/to/store" )
74
+ ObjectStore ("path/to/store" ) # type: ignore[type-var]
77
75
78
76
79
77
@pytest .mark .slow_hypothesis
80
- def test_zarr_hierarchy ():
78
+ def test_zarr_hierarchy () -> None :
81
79
sync_store = ObjectStore (MemoryStore ())
82
80
83
81
def mk_test_instance_sync () -> ZarrHierarchyStateMachine :
84
82
return ZarrHierarchyStateMachine (sync_store )
85
83
86
- run_state_machine_as_test (mk_test_instance_sync )
84
+ run_state_machine_as_test (mk_test_instance_sync ) # type ignore[no-untyped-call]
0 commit comments