@@ -972,45 +972,40 @@ def test_default_fill_value(dtype: str, fill_value_expected: object, store: Stor
972972 @staticmethod
973973 @pytest .mark .parametrize ("dtype" , ["uint8" , "float32" , "str" ])
974974 @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 :
976978 """
977979 Test that the default ``filters`` and ``compressors`` are removed when ``create_array`` is invoked.
978980 """
979981
980- # v2
981982 arr = await create_array (
982983 store = store ,
983984 dtype = dtype ,
984985 shape = (10 ,),
985- zarr_format = 2 ,
986+ zarr_format = zarr_format ,
986987 compressors = empty_value ,
987988 filters = empty_value ,
988989 )
989990 # 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 == ()
10111001 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 ()
10141009
10151010 @staticmethod
10161011 @pytest .mark .parametrize ("dtype" , ["uint8" , "float32" , "str" ])
0 commit comments