@@ -191,7 +191,15 @@ def parse_array_metadata(data: Any) -> ArrayMetadata:
191191 raise TypeError # pragma: no cover
192192
193193
194- def create_codec_pipeline (metadata : ArrayMetadata ) -> CodecPipeline :
194+ def create_codec_pipeline (metadata : ArrayMetadata , * , store : Store | None = None ) -> CodecPipeline :
195+ if store is not None :
196+ try :
197+ return get_pipeline_class ().from_array_metadata_and_store (
198+ array_metadata = metadata , store = store
199+ )
200+ except NotImplementedError :
201+ pass
202+
195203 if isinstance (metadata , ArrayV3Metadata ):
196204 return get_pipeline_class ().from_codecs (metadata .codecs )
197205 elif isinstance (metadata , ArrayV2Metadata ):
@@ -310,7 +318,11 @@ def __init__(
310318 object .__setattr__ (self , "metadata" , metadata_parsed )
311319 object .__setattr__ (self , "store_path" , store_path )
312320 object .__setattr__ (self , "_config" , config_parsed )
313- object .__setattr__ (self , "codec_pipeline" , create_codec_pipeline (metadata = metadata_parsed ))
321+ object .__setattr__ (
322+ self ,
323+ "codec_pipeline" ,
324+ create_codec_pipeline (metadata = metadata_parsed , store = store_path .store ),
325+ )
314326
315327 # this overload defines the function signature when zarr_format is 2
316328 @overload
0 commit comments