1919)
2020from warnings import warn
2121
22- import numcodecs
23- import numcodecs .abc
2422import numpy as np
2523from typing_extensions import deprecated
2624
2725import zarr
2826from zarr .abc .codec import ArrayArrayCodec , ArrayBytesCodec , BytesBytesCodec , Codec
27+ from zarr .abc .numcodec import Numcodec , _is_numcodec
2928from zarr .abc .store import Store , set_or_delete
30- from zarr .codecs ._v2 import Numcodec , V2Codec
29+ from zarr .codecs ._v2 import V2Codec
3130from zarr .codecs .bytes import BytesCodec
3231from zarr .codecs .vlen_utf8 import VLenBytesCodec , VLenUTF8Codec
3332from zarr .codecs .zstd import ZstdCodec
@@ -1033,7 +1032,7 @@ def size(self) -> int:
10331032 return np .prod (self .metadata .shape ).item ()
10341033
10351034 @property
1036- def filters (self ) -> tuple [numcodecs . abc . Codec , ...] | tuple [ArrayArrayCodec , ...]:
1035+ def filters (self ) -> tuple [Numcodec , ...] | tuple [ArrayArrayCodec , ...]:
10371036 """
10381037 Filters that are applied to each chunk of the array, in order, before serializing that
10391038 chunk to bytes.
@@ -1062,7 +1061,7 @@ def serializer(self) -> ArrayBytesCodec | None:
10621061
10631062 @property
10641063 @deprecated ("Use AsyncArray.compressors instead." )
1065- def compressor (self ) -> numcodecs . abc . Codec | None :
1064+ def compressor (self ) -> Numcodec | None :
10661065 """
10671066 Compressor that is applied to each chunk of the array.
10681067
@@ -1075,7 +1074,7 @@ def compressor(self) -> numcodecs.abc.Codec | None:
10751074 raise TypeError ("`compressor` is not available for Zarr format 3 arrays." )
10761075
10771076 @property
1078- def compressors (self ) -> tuple [numcodecs . abc . Codec , ...] | tuple [BytesBytesCodec , ...]:
1077+ def compressors (self ) -> tuple [Numcodec , ...] | tuple [BytesBytesCodec , ...]:
10791078 """
10801079 Compressors that are applied to each chunk of the array. Compressors are applied in order, and after any
10811080 filters are applied (if any are specified) and the data is serialized into bytes.
@@ -2227,7 +2226,7 @@ def fill_value(self) -> Any:
22272226 return self .metadata .fill_value
22282227
22292228 @property
2230- def filters (self ) -> tuple [numcodecs . abc . Codec , ...] | tuple [ArrayArrayCodec , ...]:
2229+ def filters (self ) -> tuple [Numcodec , ...] | tuple [ArrayArrayCodec , ...]:
22312230 """
22322231 Filters that are applied to each chunk of the array, in order, before serializing that
22332232 chunk to bytes.
@@ -2243,7 +2242,7 @@ def serializer(self) -> None | ArrayBytesCodec:
22432242
22442243 @property
22452244 @deprecated ("Use Array.compressors instead." )
2246- def compressor (self ) -> numcodecs . abc . Codec | None :
2245+ def compressor (self ) -> Numcodec | None :
22472246 """
22482247 Compressor that is applied to each chunk of the array.
22492248
@@ -2254,7 +2253,7 @@ def compressor(self) -> numcodecs.abc.Codec | None:
22542253 return self ._async_array .compressor
22552254
22562255 @property
2257- def compressors (self ) -> tuple [numcodecs . abc . Codec , ...] | tuple [BytesBytesCodec , ...]:
2256+ def compressors (self ) -> tuple [Numcodec , ...] | tuple [BytesBytesCodec , ...]:
22582257 """
22592258 Compressors that are applied to each chunk of the array. Compressors are applied in order, and after any
22602259 filters are applied (if any are specified) and the data is serialized into bytes.
@@ -3900,15 +3899,13 @@ def _build_parents(
39003899FiltersLike : TypeAlias = (
39013900 Iterable [dict [str , JSON ] | ArrayArrayCodec | Numcodec ]
39023901 | ArrayArrayCodec
3903- | Iterable [numcodecs . abc . Codec ]
3904- | numcodecs . abc . Codec
3902+ | Iterable [Numcodec ]
3903+ | Numcodec
39053904 | Literal ["auto" ]
39063905 | None
39073906)
39083907# Union of acceptable types for users to pass in for both v2 and v3 compressors
3909- CompressorLike : TypeAlias = (
3910- dict [str , JSON ] | BytesBytesCodec | numcodecs .abc .Codec | Literal ["auto" ] | None
3911- )
3908+ CompressorLike : TypeAlias = dict [str , JSON ] | BytesBytesCodec | Numcodec | Literal ["auto" ] | None
39123909
39133910CompressorsLike : TypeAlias = (
39143911 Iterable [dict [str , JSON ] | BytesBytesCodec | Numcodec ]
@@ -4775,7 +4772,7 @@ def default_serializer_v3(dtype: ZDType[Any, Any]) -> ArrayBytesCodec:
47754772 return serializer
47764773
47774774
4778- def default_filters_v2 (dtype : ZDType [Any , Any ]) -> tuple [numcodecs . abc . Codec ] | None :
4775+ def default_filters_v2 (dtype : ZDType [Any , Any ]) -> tuple [Numcodec ] | None :
47794776 """
47804777 Given a data type, return the default filters for that data type.
47814778
@@ -4797,28 +4794,28 @@ def default_filters_v2(dtype: ZDType[Any, Any]) -> tuple[numcodecs.abc.Codec] |
47974794 return None
47984795
47994796
4800- def default_compressor_v2 (dtype : ZDType [Any , Any ]) -> numcodecs . abc . Codec :
4797+ def default_compressor_v2 (dtype : ZDType [Any , Any ]) -> Numcodec :
48014798 """
48024799 Given a data type, return the default compressors for that data type.
48034800
48044801 This is just the numcodecs ``Zstd`` codec.
48054802 """
48064803 from numcodecs import Zstd
48074804
4808- return Zstd (level = 0 , checksum = False )
4805+ return Zstd (level = 0 , checksum = False ) # type: ignore[no-any-return]
48094806
48104807
48114808def _parse_chunk_encoding_v2 (
48124809 * ,
48134810 compressor : CompressorsLike ,
48144811 filters : FiltersLike ,
48154812 dtype : ZDType [TBaseDType , TBaseScalar ],
4816- ) -> tuple [tuple [numcodecs . abc . Codec , ...] | None , numcodecs . abc . Codec | None ]:
4813+ ) -> tuple [tuple [Numcodec , ...] | None , Numcodec | None ]:
48174814 """
48184815 Generate chunk encoding classes for Zarr format 2 arrays with optional defaults.
48194816 """
4820- _filters : tuple [numcodecs . abc . Codec , ...] | None
4821- _compressor : numcodecs . abc . Codec | None
4817+ _filters : tuple [Numcodec , ...] | None
4818+ _compressor : Numcodec | None
48224819
48234820 if compressor is None or compressor == ():
48244821 _compressor = None
@@ -4839,7 +4836,7 @@ def _parse_chunk_encoding_v2(
48394836 else :
48404837 if isinstance (filters , Iterable ):
48414838 for idx , f in enumerate (filters ):
4842- if not isinstance ( f , numcodecs . abc . Codec ):
4839+ if not _is_numcodec ( f ):
48434840 msg = (
48444841 "For Zarr format 2 arrays, all elements of `filters` must be numcodecs codecs. "
48454842 f"Element at index { idx } has type { type (f )} , which is not a numcodecs codec."
@@ -4852,12 +4849,12 @@ def _parse_chunk_encoding_v2(
48524849 if _compressor is None :
48534850 object_codec_id = None
48544851 else :
4855- object_codec_id = get_object_codec_id ((_compressor .get_config (),))
4852+ object_codec_id = get_object_codec_id ((_compressor .get_config (),)) # type: ignore[arg-type]
48564853 else :
48574854 object_codec_id = get_object_codec_id (
48584855 (
4859- * [f .get_config () for f in _filters ],
4860- _compressor .get_config () if _compressor is not None else None ,
4856+ * [f .get_config () for f in _filters ], # type: ignore[arg-type]
4857+ _compressor .get_config () if _compressor is not None else None , # type: ignore[arg-type]
48614858 )
48624859 )
48634860 if object_codec_id is None :
@@ -4944,7 +4941,7 @@ def _parse_deprecated_compressor(
49444941 # "no compression"
49454942 compressors = ()
49464943 else :
4947- compressors = (compressor ,) # type: ignore[assignment]
4944+ compressors = (compressor ,)
49484945 elif zarr_format == 2 and compressor == compressors == "auto" :
49494946 compressors = ({"id" : "blosc" },)
49504947 return compressors
0 commit comments