44import pytest
55
66obstore = pytest .importorskip ("obstore" )
7+ from pathlib import Path
8+
79import pytest
810from hypothesis .stateful import (
911 run_state_machine_as_test ,
1618from zarr .testing .store import StoreTests
1719
1820
19- class TestObjectStore (StoreTests [ObjectStore , cpu .Buffer ]):
21+ class TestObjectStore (StoreTests [ObjectStore [ LocalStore ] , cpu .Buffer ]):
2022 store_cls = ObjectStore
2123 buffer_cls = cpu .Buffer
2224
2325 @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 ) )
2628 return {"store" : store , "read_only" : False }
2729
2830 @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 ] :
3032 return self .store_cls (** store_kwargs )
3133
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 :
3435 new_local_store = LocalStore (prefix = store .store .prefix )
3536 return self .buffer_cls .from_bytes (obstore .get (new_local_store , key ).bytes ())
3637
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 :
3939 new_local_store = LocalStore (prefix = store .store .prefix )
4040 obstore .put (new_local_store , key , value .to_bytes ())
4141
42- def test_store_repr (self , store : ObjectStore ) -> None :
42+ def test_store_repr (self , store : ObjectStore [ LocalStore ] ) -> None :
4343 from fnmatch import fnmatch
4444
4545 pattern = "ObjectStore(object_store://LocalStore(*))"
4646 assert fnmatch (f"{ store !r} " , pattern )
4747
48- def test_store_supports_writes (self , store : ObjectStore ) -> None :
48+ def test_store_supports_writes (self , store : ObjectStore [ LocalStore ] ) -> None :
4949 assert store .supports_writes
5050
51- async def test_store_supports_partial_writes (self , store : ObjectStore ) -> None :
51+ def test_store_supports_partial_writes (self , store : ObjectStore [ LocalStore ] ) -> None :
5252 assert not store .supports_partial_writes
53- with pytest .raises (NotImplementedError ):
54- await store .set_partial_values ([("foo" , 0 , b"\x01 \x02 \x03 \x04 " )])
5553
56- def test_store_supports_listing (self , store : ObjectStore ) -> None :
54+ def test_store_supports_listing (self , store : ObjectStore [ LocalStore ] ) -> None :
5755 assert store .supports_listing
5856
59- def test_store_equal (self , store : ObjectStore ) -> None :
57+ def test_store_equal (self , store : ObjectStore [ LocalStore ] ) -> None :
6058 """Test store equality"""
6159 # Test equality against a different instance type
6260 assert store != 0
@@ -73,14 +71,14 @@ def test_store_equal(self, store: ObjectStore) -> None:
7371 def test_store_init_raises (self ) -> None :
7472 """Test __init__ raises appropriate error for improper store type"""
7573 with pytest .raises (TypeError ):
76- ObjectStore ("path/to/store" )
74+ ObjectStore ("path/to/store" ) # type: ignore[type-var]
7775
7876
7977@pytest .mark .slow_hypothesis
80- def test_zarr_hierarchy ():
78+ def test_zarr_hierarchy () -> None :
8179 sync_store = ObjectStore (MemoryStore ())
8280
8381 def mk_test_instance_sync () -> ZarrHierarchyStateMachine :
8482 return ZarrHierarchyStateMachine (sync_store )
8583
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