| 
33 | 33 |     ZARRAY_JSON,  | 
34 | 34 |     ZATTRS_JSON,  | 
35 | 35 |     ChunkCoords,  | 
 | 36 | +    MemoryOrder,  | 
36 | 37 |     ShapeLike,  | 
37 | 38 |     ZarrFormat,  | 
38 | 39 |     concurrent_map,  | 
@@ -203,29 +204,29 @@ class AsyncArray(Generic[T_ArrayMetadata]):  | 
203 | 204 |     metadata: T_ArrayMetadata  | 
204 | 205 |     store_path: StorePath  | 
205 | 206 |     codec_pipeline: CodecPipeline = field(init=False)  | 
206 |  | -    order: Literal["C", "F"]  | 
 | 207 | +    order: MemoryOrder  | 
207 | 208 | 
 
  | 
208 | 209 |     @overload  | 
209 | 210 |     def __init__(  | 
210 | 211 |         self: AsyncArray[ArrayV2Metadata],  | 
211 | 212 |         metadata: ArrayV2Metadata | ArrayV2MetadataDict,  | 
212 | 213 |         store_path: StorePath,  | 
213 |  | -        order: Literal["C", "F"] | None = None,  | 
 | 214 | +        order: MemoryOrder | None = None,  | 
214 | 215 |     ) -> None: ...  | 
215 | 216 | 
 
  | 
216 | 217 |     @overload  | 
217 | 218 |     def __init__(  | 
218 | 219 |         self: AsyncArray[ArrayV3Metadata],  | 
219 | 220 |         metadata: ArrayV3Metadata | ArrayV3MetadataDict,  | 
220 | 221 |         store_path: StorePath,  | 
221 |  | -        order: Literal["C", "F"] | None = None,  | 
 | 222 | +        order: MemoryOrder | None = None,  | 
222 | 223 |     ) -> None: ...  | 
223 | 224 | 
 
  | 
224 | 225 |     def __init__(  | 
225 | 226 |         self,  | 
226 | 227 |         metadata: ArrayMetadata | ArrayMetadataDict,  | 
227 | 228 |         store_path: StorePath,  | 
228 |  | -        order: Literal["C", "F"] | None = None,  | 
 | 229 | +        order: MemoryOrder | None = None,  | 
229 | 230 |     ) -> None:  | 
230 | 231 |         if isinstance(metadata, dict):  | 
231 | 232 |             zarr_format = metadata["zarr_format"]  | 
@@ -261,7 +262,7 @@ async def create(  | 
261 | 262 |         attributes: dict[str, JSON] | None = None,  | 
262 | 263 |         chunks: ShapeLike | None = None,  | 
263 | 264 |         dimension_separator: Literal[".", "/"] | None = None,  | 
264 |  | -        order: Literal["C", "F"] | None = None,  | 
 | 265 | +        order: MemoryOrder | None = None,  | 
265 | 266 |         filters: list[dict[str, JSON]] | None = None,  | 
266 | 267 |         compressor: dict[str, JSON] | None = None,  | 
267 | 268 |         # runtime  | 
@@ -350,7 +351,7 @@ async def create(  | 
350 | 351 |         # v2 only  | 
351 | 352 |         chunks: ShapeLike | None = None,  | 
352 | 353 |         dimension_separator: Literal[".", "/"] | None = None,  | 
353 |  | -        order: Literal["C", "F"] | None = None,  | 
 | 354 | +        order: MemoryOrder | None = None,  | 
354 | 355 |         filters: list[dict[str, JSON]] | None = None,  | 
355 | 356 |         compressor: dict[str, JSON] | None = None,  | 
356 | 357 |         # runtime  | 
@@ -382,7 +383,7 @@ async def create(  | 
382 | 383 |         # v2 only  | 
383 | 384 |         chunks: ShapeLike | None = None,  | 
384 | 385 |         dimension_separator: Literal[".", "/"] | None = None,  | 
385 |  | -        order: Literal["C", "F"] | None = None,  | 
 | 386 | +        order: MemoryOrder | None = None,  | 
386 | 387 |         filters: list[dict[str, JSON]] | None = None,  | 
387 | 388 |         compressor: dict[str, JSON] | None = None,  | 
388 | 389 |         # runtime  | 
@@ -422,7 +423,6 @@ async def create(  | 
422 | 423 |             V2 only. V3 arrays cannot have a dimension separator.  | 
423 | 424 |         order : Literal["C", "F"], optional  | 
424 | 425 |             The order of the array (default is None).  | 
425 |  | -            V2 only. V3 arrays should not have 'order' parameter.  | 
426 | 426 |         filters : list[dict[str, JSON]], optional  | 
427 | 427 |             The filters used to compress the data (default is None).  | 
428 | 428 |             V2 only. V3 arrays should not have 'filters' parameter.  | 
@@ -542,7 +542,7 @@ async def _create_v3(  | 
542 | 542 |         dtype: npt.DTypeLike,  | 
543 | 543 |         chunk_shape: ChunkCoords,  | 
544 | 544 |         fill_value: Any | None = None,  | 
545 |  | -        order: Literal["C", "F"] | None = None,  | 
 | 545 | +        order: MemoryOrder | None = None,  | 
546 | 546 |         chunk_key_encoding: (  | 
547 | 547 |             ChunkKeyEncoding  | 
548 | 548 |             | tuple[Literal["default"], Literal[".", "/"]]  | 
@@ -600,16 +600,17 @@ async def _create_v2(  | 
600 | 600 |         chunks: ChunkCoords,  | 
601 | 601 |         dimension_separator: Literal[".", "/"] | None = None,  | 
602 | 602 |         fill_value: None | float = None,  | 
603 |  | -        order: Literal["C", "F"] | None = None,  | 
 | 603 | +        order: MemoryOrder | None = None,  | 
604 | 604 |         filters: list[dict[str, JSON]] | None = None,  | 
605 | 605 |         compressor: dict[str, JSON] | None = None,  | 
606 | 606 |         attributes: dict[str, JSON] | None = None,  | 
607 | 607 |         exists_ok: bool = False,  | 
608 | 608 |     ) -> AsyncArray[ArrayV2Metadata]:  | 
609 | 609 |         if not exists_ok:  | 
610 | 610 |             await ensure_no_existing_node(store_path, zarr_format=2)  | 
 | 611 | + | 
611 | 612 |         if order is None:  | 
612 |  | -            order = config.get("array.order", "C")  | 
 | 613 | +            order = parse_indexing_order(config.get("array.order"))  | 
613 | 614 | 
 
  | 
614 | 615 |         if dimension_separator is None:  | 
615 | 616 |             dimension_separator = "."  | 
@@ -1177,7 +1178,7 @@ def create(  | 
1177 | 1178 |         # v2 only  | 
1178 | 1179 |         chunks: ChunkCoords | None = None,  | 
1179 | 1180 |         dimension_separator: Literal[".", "/"] | None = None,  | 
1180 |  | -        order: Literal["C", "F"] | None = None,  | 
 | 1181 | +        order: MemoryOrder | None = None,  | 
1181 | 1182 |         filters: list[dict[str, JSON]] | None = None,  | 
1182 | 1183 |         compressor: dict[str, JSON] | None = None,  | 
1183 | 1184 |         # runtime  | 
@@ -1368,7 +1369,7 @@ def store_path(self) -> StorePath:  | 
1368 | 1369 |         return self._async_array.store_path  | 
1369 | 1370 | 
 
  | 
1370 | 1371 |     @property  | 
1371 |  | -    def order(self) -> Literal["C", "F"]:  | 
 | 1372 | +    def order(self) -> MemoryOrder:  | 
1372 | 1373 |         return self._async_array.order  | 
1373 | 1374 | 
 
  | 
1374 | 1375 |     @property  | 
 | 
0 commit comments