@@ -140,7 +140,8 @@ def parse_array_metadata(data: Any) -> ArrayMetadata:
140140 if isinstance (data , ArrayMetadata ):
141141 return data
142142 elif isinstance (data , dict ):
143- if data ["zarr_format" ] == 3 :
143+ zarr_format = data .get ("zarr_format" )
144+ if zarr_format == 3 :
144145 meta_out = ArrayV3Metadata .from_dict (data )
145146 if len (meta_out .storage_transformers ) > 0 :
146147 msg = (
@@ -149,9 +150,11 @@ def parse_array_metadata(data: Any) -> ArrayMetadata:
149150 )
150151 raise ValueError (msg )
151152 return meta_out
152- elif data [ " zarr_format" ] == 2 :
153+ elif zarr_format == 2 :
153154 return ArrayV2Metadata .from_dict (data )
154- raise TypeError
155+ else :
156+ raise ValueError (f"Invalid zarr_format: { zarr_format } . Expected 2 or 3" )
157+ raise TypeError # pragma: no cover
155158
156159
157160def create_codec_pipeline (metadata : ArrayMetadata ) -> CodecPipeline :
@@ -160,8 +163,7 @@ def create_codec_pipeline(metadata: ArrayMetadata) -> CodecPipeline:
160163 elif isinstance (metadata , ArrayV2Metadata ):
161164 v2_codec = V2Codec (filters = metadata .filters , compressor = metadata .compressor )
162165 return get_pipeline_class ().from_codecs ([v2_codec ])
163- else :
164- raise TypeError
166+ raise TypeError # pragma: no cover
165167
166168
167169async def get_array_metadata (
@@ -268,17 +270,6 @@ def __init__(
268270 store_path : StorePath ,
269271 config : ArrayConfigLike | None = None ,
270272 ) -> None :
271- if isinstance (metadata , dict ):
272- zarr_format = metadata ["zarr_format" ]
273- # TODO: remove this when we extensively type the dict representation of metadata
274- _metadata = cast (dict [str , JSON ], metadata )
275- if zarr_format == 2 :
276- metadata = ArrayV2Metadata .from_dict (_metadata )
277- elif zarr_format == 3 :
278- metadata = ArrayV3Metadata .from_dict (_metadata )
279- else :
280- raise ValueError (f"Invalid zarr_format: { zarr_format } . Expected 2 or 3" )
281-
282273 metadata_parsed = parse_array_metadata (metadata )
283274 config_parsed = parse_array_config (config )
284275
0 commit comments