@@ -972,45 +972,40 @@ def test_default_fill_value(dtype: str, fill_value_expected: object, store: Stor
972
972
@staticmethod
973
973
@pytest .mark .parametrize ("dtype" , ["uint8" , "float32" , "str" ])
974
974
@pytest .mark .parametrize ("empty_value" , [None , ()])
975
- async def test_no_filters_compressors (store : MemoryStore , dtype : str , empty_value : Any ) -> None :
975
+ async def test_no_filters_compressors (
976
+ store : MemoryStore , dtype : str , empty_value : object , zarr_format : ZarrFormat
977
+ ) -> None :
976
978
"""
977
979
Test that the default ``filters`` and ``compressors`` are removed when ``create_array`` is invoked.
978
980
"""
979
981
980
- # v2
981
982
arr = await create_array (
982
983
store = store ,
983
984
dtype = dtype ,
984
985
shape = (10 ,),
985
- zarr_format = 2 ,
986
+ zarr_format = zarr_format ,
986
987
compressors = empty_value ,
987
988
filters = empty_value ,
988
989
)
989
990
# Test metadata explicitly
990
- assert arr .metadata .zarr_format == 2 # guard for mypy
991
- # The v2 metadata stores None and () separately
992
- assert arr .metadata .filters == empty_value
993
- # The v2 metadata does not allow tuple for compressor, therefore it is turned into None
994
- assert arr .metadata .compressor is None
995
-
996
- assert arr .filters == ()
997
- assert arr .compressors == ()
998
-
999
- # v3
1000
- arr = await create_array (
1001
- store = store ,
1002
- dtype = dtype ,
1003
- shape = (10 ,),
1004
- compressors = empty_value ,
1005
- filters = empty_value ,
1006
- )
1007
- assert arr .metadata .zarr_format == 3 # guard for mypy
1008
- if dtype == "str" :
1009
- assert arr .metadata .codecs == (VLenUTF8Codec (),)
1010
- assert arr .serializer == VLenUTF8Codec ()
991
+ if zarr_format == 2 :
992
+ assert arr .metadata .zarr_format == 2 # guard for mypy
993
+ # v2 spec requires that filters be either a collection with at least one filter, or None
994
+ assert arr .metadata .filters is None
995
+ # Compressor is a single element in v2 metadata; the absence of a compressor is encoded
996
+ # as None
997
+ assert arr .metadata .compressor is None
998
+
999
+ assert arr .filters == ()
1000
+ assert arr .compressors == ()
1011
1001
else :
1012
- assert arr .metadata .codecs == (BytesCodec (),)
1013
- assert arr .serializer == BytesCodec ()
1002
+ assert arr .metadata .zarr_format == 3 # guard for mypy
1003
+ if dtype == "str" :
1004
+ assert arr .metadata .codecs == (VLenUTF8Codec (),)
1005
+ assert arr .serializer == VLenUTF8Codec ()
1006
+ else :
1007
+ assert arr .metadata .codecs == (BytesCodec (),)
1008
+ assert arr .serializer == BytesCodec ()
1014
1009
1015
1010
@staticmethod
1016
1011
@pytest .mark .parametrize ("dtype" , ["uint8" , "float32" , "str" ])
0 commit comments