Skip to content

Commit 7783dc2

Browse files
authored
chore/remove chunk coords (#3374)
* remove ChunkCoords type * add comment * changelog * missing import
1 parent 1a4aa5b commit 7783dc2

23 files changed

+258
-251
lines changed

changes/3374.misc.rst

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
Replaces usage of the ``zarr.core.common.ChunkCoords`` typealias with ``tuple[int, ...]``.

src/zarr/abc/codec.py

Lines changed: 9 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@
88

99
from zarr.abc.metadata import Metadata
1010
from zarr.core.buffer import Buffer, NDBuffer
11-
from zarr.core.common import ChunkCoords, NamedConfig, concurrent_map
11+
from zarr.core.common import NamedConfig, concurrent_map
1212
from zarr.core.config import config
1313

1414
if TYPE_CHECKING:
@@ -120,7 +120,7 @@ def evolve_from_array_spec(self, array_spec: ArraySpec) -> Self:
120120
def validate(
121121
self,
122122
*,
123-
shape: ChunkCoords,
123+
shape: tuple[int, ...],
124124
dtype: ZDType[TBaseDType, TBaseScalar],
125125
chunk_grid: ChunkGrid,
126126
) -> None:
@@ -129,7 +129,7 @@ def validate(
129129
130130
Parameters
131131
----------
132-
shape : ChunkCoords
132+
shape : tuple[int, ...]
133133
The array shape
134134
dtype : np.dtype[Any]
135135
The array data type
@@ -335,14 +335,18 @@ def supports_partial_encode(self) -> bool: ...
335335

336336
@abstractmethod
337337
def validate(
338-
self, *, shape: ChunkCoords, dtype: ZDType[TBaseDType, TBaseScalar], chunk_grid: ChunkGrid
338+
self,
339+
*,
340+
shape: tuple[int, ...],
341+
dtype: ZDType[TBaseDType, TBaseScalar],
342+
chunk_grid: ChunkGrid,
339343
) -> None:
340344
"""Validates that all codec configurations are compatible with the array metadata.
341345
Raises errors when a codec configuration is not compatible.
342346
343347
Parameters
344348
----------
345-
shape : ChunkCoords
349+
shape : tuple[int, ...]
346350
The array shape
347351
dtype : np.dtype[Any]
348352
The array data type

src/zarr/api/asynchronous.py

Lines changed: 8 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,6 @@
2424
from zarr.core.common import (
2525
JSON,
2626
AccessModeLiteral,
27-
ChunkCoords,
2827
DimensionNames,
2928
MemoryOrder,
3029
ZarrFormat,
@@ -106,7 +105,7 @@ def _infer_overwrite(mode: AccessModeLiteral) -> bool:
106105
return mode in _OVERWRITE_MODES
107106

108107

109-
def _get_shape_chunks(a: ArrayLike | Any) -> tuple[ChunkCoords | None, ChunkCoords | None]:
108+
def _get_shape_chunks(a: ArrayLike | Any) -> tuple[tuple[int, ...] | None, tuple[int, ...] | None]:
110109
"""Helper function to get the shape and chunks from an array-like object"""
111110
shape = None
112111
chunks = None
@@ -866,9 +865,9 @@ async def open_group(
866865

867866

868867
async def create(
869-
shape: ChunkCoords | int,
868+
shape: tuple[int, ...] | int,
870869
*, # Note: this is a change from v2
871-
chunks: ChunkCoords | int | bool | None = None,
870+
chunks: tuple[int, ...] | int | bool | None = None,
872871
dtype: ZDTypeLike | None = None,
873872
compressor: CompressorLike = "auto",
874873
fill_value: Any | None = DEFAULT_FILL_VALUE,
@@ -890,7 +889,7 @@ async def create(
890889
meta_array: Any | None = None, # TODO: need type
891890
attributes: dict[str, JSON] | None = None,
892891
# v3 only
893-
chunk_shape: ChunkCoords | int | None = None,
892+
chunk_shape: tuple[int, ...] | int | None = None,
894893
chunk_key_encoding: (
895894
ChunkKeyEncoding
896895
| tuple[Literal["default"], Literal[".", "/"]]
@@ -1075,7 +1074,7 @@ async def create(
10751074

10761075

10771076
async def empty(
1078-
shape: ChunkCoords, **kwargs: Any
1077+
shape: tuple[int, ...], **kwargs: Any
10791078
) -> AsyncArray[ArrayV2Metadata] | AsyncArray[ArrayV3Metadata]:
10801079
"""Create an empty array with the specified shape. The contents will be filled with the
10811080
array's fill value or zeros if no fill value is provided.
@@ -1127,7 +1126,7 @@ async def empty_like(
11271126

11281127
# TODO: add type annotations for fill_value and kwargs
11291128
async def full(
1130-
shape: ChunkCoords, fill_value: Any, **kwargs: Any
1129+
shape: tuple[int, ...], fill_value: Any, **kwargs: Any
11311130
) -> AsyncArray[ArrayV2Metadata] | AsyncArray[ArrayV3Metadata]:
11321131
"""Create an array, with `fill_value` being used as the default value for
11331132
uninitialized portions of the array.
@@ -1174,7 +1173,7 @@ async def full_like(
11741173

11751174

11761175
async def ones(
1177-
shape: ChunkCoords, **kwargs: Any
1176+
shape: tuple[int, ...], **kwargs: Any
11781177
) -> AsyncArray[ArrayV2Metadata] | AsyncArray[ArrayV3Metadata]:
11791178
"""Create an array, with one being used as the default value for
11801179
uninitialized portions of the array.
@@ -1297,7 +1296,7 @@ async def open_like(
12971296

12981297

12991298
async def zeros(
1300-
shape: ChunkCoords, **kwargs: Any
1299+
shape: tuple[int, ...], **kwargs: Any
13011300
) -> AsyncArray[ArrayV2Metadata] | AsyncArray[ArrayV3Metadata]:
13021301
"""Create an array, with zero being used as the default value for
13031302
uninitialized portions of the array.

src/zarr/api/synchronous.py

Lines changed: 16 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -33,7 +33,6 @@
3333
from zarr.core.common import (
3434
JSON,
3535
AccessModeLiteral,
36-
ChunkCoords,
3736
DimensionNames,
3837
MemoryOrder,
3938
ShapeLike,
@@ -598,9 +597,9 @@ def create_group(
598597

599598
# TODO: add type annotations for kwargs
600599
def create(
601-
shape: ChunkCoords | int,
600+
shape: tuple[int, ...] | int,
602601
*, # Note: this is a change from v2
603-
chunks: ChunkCoords | int | bool | None = None,
602+
chunks: tuple[int, ...] | int | bool | None = None,
604603
dtype: ZDTypeLike | None = None,
605604
compressor: CompressorLike = "auto",
606605
fill_value: Any | None = DEFAULT_FILL_VALUE, # TODO: need type
@@ -622,7 +621,7 @@ def create(
622621
meta_array: Any | None = None, # TODO: need type
623622
attributes: dict[str, JSON] | None = None,
624623
# v3 only
625-
chunk_shape: ChunkCoords | int | None = None,
624+
chunk_shape: tuple[int, ...] | int | None = None,
626625
chunk_key_encoding: (
627626
ChunkKeyEncoding
628627
| tuple[Literal["default"], Literal[".", "/"]]
@@ -755,7 +754,7 @@ def create_array(
755754
shape: ShapeLike | None = None,
756755
dtype: ZDTypeLike | None = None,
757756
data: np.ndarray[Any, np.dtype[Any]] | None = None,
758-
chunks: ChunkCoords | Literal["auto"] = "auto",
757+
chunks: tuple[int, ...] | Literal["auto"] = "auto",
759758
shards: ShardsLike | None = None,
760759
filters: FiltersLike = "auto",
761760
compressors: CompressorsLike = "auto",
@@ -782,17 +781,17 @@ def create_array(
782781
name : str or None, optional
783782
The name of the array within the store. If ``name`` is ``None``, the array will be located
784783
at the root of the store.
785-
shape : ChunkCoords, optional
784+
shape : ShapeLike, optional
786785
Shape of the array. Must be ``None`` if ``data`` is provided.
787786
dtype : ZDTypeLike, optional
788787
Data type of the array. Must be ``None`` if ``data`` is provided.
789788
data : np.ndarray, optional
790789
Array-like data to use for initializing the array. If this parameter is provided, the
791790
``shape`` and ``dtype`` parameters must be ``None``.
792-
chunks : ChunkCoords, optional
791+
chunks : tuple[int, ...], optional
793792
Chunk shape of the array.
794793
If not specified, default are guessed based on the shape and dtype.
795-
shards : ChunkCoords, optional
794+
shards : tuple[int, ...], optional
796795
Shard shape of the array. The default value of ``None`` results in no sharding at all.
797796
filters : Iterable[Codec], optional
798797
Iterable of filters to apply to each chunk of the array, in order, before serializing that
@@ -920,7 +919,7 @@ def from_array(
920919
data: Array | npt.ArrayLike,
921920
write_data: bool = True,
922921
name: str | None = None,
923-
chunks: Literal["auto", "keep"] | ChunkCoords = "keep",
922+
chunks: Literal["auto", "keep"] | tuple[int, ...] = "keep",
924923
shards: ShardsLike | None | Literal["keep"] = "keep",
925924
filters: FiltersLike | Literal["keep"] = "keep",
926925
compressors: CompressorsLike | Literal["keep"] = "keep",
@@ -950,22 +949,22 @@ def from_array(
950949
name : str or None, optional
951950
The name of the array within the store. If ``name`` is ``None``, the array will be located
952951
at the root of the store.
953-
chunks : ChunkCoords or "auto" or "keep", optional
952+
chunks : tuple[int, ...] or "auto" or "keep", optional
954953
Chunk shape of the array.
955954
Following values are supported:
956955
957956
- "auto": Automatically determine the chunk shape based on the array's shape and dtype.
958957
- "keep": Retain the chunk shape of the data array if it is a zarr Array.
959-
- ChunkCoords: A tuple of integers representing the chunk shape.
958+
- tuple[int, ...]: A tuple of integers representing the chunk shape.
960959
961960
If not specified, defaults to "keep" if data is a zarr Array, otherwise "auto".
962-
shards : ChunkCoords, optional
961+
shards : tuple[int, ...], optional
963962
Shard shape of the array.
964963
Following values are supported:
965964
966965
- "auto": Automatically determine the shard shape based on the array's shape and chunk shape.
967966
- "keep": Retain the shard shape of the data array if it is a zarr Array.
968-
- ChunkCoords: A tuple of integers representing the shard shape.
967+
- tuple[int, ...]: A tuple of integers representing the shard shape.
969968
- None: No sharding.
970969
971970
If not specified, defaults to "keep" if data is a zarr Array, otherwise None.
@@ -1128,7 +1127,7 @@ def from_array(
11281127

11291128

11301129
# TODO: add type annotations for kwargs
1131-
def empty(shape: ChunkCoords, **kwargs: Any) -> Array:
1130+
def empty(shape: tuple[int, ...], **kwargs: Any) -> Array:
11321131
"""Create an empty array with the specified shape. The contents will be filled with the
11331132
array's fill value or zeros if no fill value is provided.
11341133
@@ -1181,7 +1180,7 @@ def empty_like(a: ArrayLike, **kwargs: Any) -> Array:
11811180

11821181

11831182
# TODO: add type annotations for kwargs and fill_value
1184-
def full(shape: ChunkCoords, fill_value: Any, **kwargs: Any) -> Array:
1183+
def full(shape: tuple[int, ...], fill_value: Any, **kwargs: Any) -> Array:
11851184
"""Create an array with a default fill value.
11861185
11871186
Parameters
@@ -1222,7 +1221,7 @@ def full_like(a: ArrayLike, **kwargs: Any) -> Array:
12221221

12231222

12241223
# TODO: add type annotations for kwargs
1225-
def ones(shape: ChunkCoords, **kwargs: Any) -> Array:
1224+
def ones(shape: tuple[int, ...], **kwargs: Any) -> Array:
12261225
"""Create an array with a fill value of one.
12271226
12281227
Parameters
@@ -1324,7 +1323,7 @@ def open_like(a: ArrayLike, path: str, **kwargs: Any) -> Array:
13241323

13251324

13261325
# TODO: add type annotations for kwargs
1327-
def zeros(shape: ChunkCoords, **kwargs: Any) -> Array:
1326+
def zeros(shape: tuple[int, ...], **kwargs: Any) -> Array:
13281327
"""Create an array with a fill value of zero.
13291328
13301329
Parameters

0 commit comments

Comments
 (0)