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