|
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