99
1010from  zarr .core .array  import  Array , AsyncArray 
1111from  zarr .core .common  import  JSON , AccessModeLiteral , ChunkCoords , MemoryOrder , ZarrFormat 
12+ from  zarr .core .config  import  config 
1213from  zarr .core .group  import  AsyncGroup 
1314from  zarr .core .metadata .v2  import  ArrayV2Metadata 
1415from  zarr .core .metadata .v3  import  ArrayV3Metadata 
@@ -126,8 +127,7 @@ def _handle_zarr_version_or_format(
126127
127128def  _default_zarr_version () ->  ZarrFormat :
128129    """return the default zarr_version""" 
129-     # TODO: set default value from config 
130-     return  3 
130+     return  cast (ZarrFormat , int (config .get ("default_zarr_version" , 3 )))
131131
132132
133133async  def  consolidate_metadata (* args : Any , ** kwargs : Any ) ->  AsyncGroup :
@@ -337,7 +337,10 @@ async def save_group(
337337    kwargs 
338338        NumPy arrays with data to save. 
339339    """ 
340-     zarr_format  =  _handle_zarr_version_or_format (zarr_version = zarr_version , zarr_format = zarr_format )
340+     zarr_format  =  (
341+         _handle_zarr_version_or_format (zarr_version = zarr_version , zarr_format = zarr_format )
342+         or  _default_zarr_version ()
343+     )
341344
342345    if  len (args ) ==  0  and  len (kwargs ) ==  0 :
343346        raise  ValueError ("at least one array must be provided" )
@@ -448,10 +451,7 @@ async def group(
448451        The new group. 
449452    """ 
450453
451-     zarr_format  =  (
452-         _handle_zarr_version_or_format (zarr_version = zarr_version , zarr_format = zarr_format )
453-         or  _default_zarr_version ()
454-     )
454+     zarr_format  =  _handle_zarr_version_or_format (zarr_version = zarr_version , zarr_format = zarr_format )
455455
456456    store_path  =  await  make_store_path (store )
457457    if  path  is  not   None :
@@ -474,7 +474,7 @@ async def group(
474474    except  (KeyError , FileNotFoundError ):
475475        return  await  AsyncGroup .create (
476476            store = store_path ,
477-             zarr_format = zarr_format ,
477+             zarr_format = zarr_format   or   _default_zarr_version () ,
478478            exists_ok = overwrite ,
479479            attributes = attributes ,
480480        )
@@ -483,7 +483,7 @@ async def group(
483483async  def  open_group (
484484    * ,  # Note: this is a change from v2 
485485    store : StoreLike  |  None  =  None ,
486-     mode : AccessModeLiteral  |  None  =  None ,   # not used 
486+     mode : AccessModeLiteral  |  None  =  None ,
487487    cache_attrs : bool  |  None  =  None ,  # not used, default changed 
488488    synchronizer : Any  =  None ,  # not used 
489489    path : str  |  None  =  None ,
@@ -538,10 +538,7 @@ async def open_group(
538538        The new group. 
539539    """ 
540540
541-     zarr_format  =  (
542-         _handle_zarr_version_or_format (zarr_version = zarr_version , zarr_format = zarr_format )
543-         or  _default_zarr_version ()
544-     )
541+     zarr_format  =  _handle_zarr_version_or_format (zarr_version = zarr_version , zarr_format = zarr_format )
545542
546543    if  cache_attrs  is  not   None :
547544        warnings .warn ("cache_attrs is not yet implemented" , RuntimeWarning , stacklevel = 2 )
@@ -565,7 +562,10 @@ async def open_group(
565562        return  await  AsyncGroup .open (store_path , zarr_format = zarr_format )
566563    except  (KeyError , FileNotFoundError ):
567564        return  await  AsyncGroup .create (
568-             store_path , zarr_format = zarr_format , exists_ok = True , attributes = attributes 
565+             store_path ,
566+             zarr_format = zarr_format  or  _default_zarr_version (),
567+             exists_ok = True ,
568+             attributes = attributes ,
569569        )
570570
571571
@@ -687,7 +687,7 @@ async def create(
687687
688688    if  zarr_format  ==  2  and  chunks  is  None :
689689        chunks  =  shape 
690-     if  zarr_format  ==  3  and  chunk_shape  is  None :
690+     elif  zarr_format  ==  3  and  chunk_shape  is  None :
691691        if  chunks  is  not   None :
692692            chunk_shape  =  chunks 
693693            chunks  =  None 
@@ -908,7 +908,7 @@ async def open_array(
908908        if  store_path .store .mode .create :
909909            return  await  create (
910910                store = store_path ,
911-                 zarr_format = zarr_format ,
911+                 zarr_format = zarr_format   or   _default_zarr_version () ,
912912                overwrite = store_path .store .mode .overwrite ,
913913                ** kwargs ,
914914            )
0 commit comments