@@ -117,6 +117,10 @@ def resize(self, new_extent: int) -> FixedDimension:
117117 """
118118 return FixedDimension (size = self .size , extent = new_extent )
119119
120+ @property
121+ def _size_repr (self ) -> str :
122+ return str (self .size )
123+
120124
121125@dataclass (frozen = True )
122126class VaryingDimension :
@@ -231,6 +235,10 @@ def resize(self, new_extent: int) -> VaryingDimension:
231235 else :
232236 return VaryingDimension (self .edges , extent = new_extent )
233237
238+ @property
239+ def _size_repr (self ) -> str :
240+ return repr (tuple (self .edges ))
241+
234242
235243@runtime_checkable
236244class DimensionGrid (Protocol ):
@@ -251,6 +259,8 @@ def indices_to_chunks(self, indices: npt.NDArray[np.intp]) -> npt.NDArray[np.int
251259 def unique_edge_lengths (self ) -> Iterable [int ]: ...
252260 def with_extent (self , new_extent : int ) -> DimensionGrid : ...
253261 def resize (self , new_extent : int ) -> DimensionGrid : ...
262+ @property
263+ def _size_repr (self ) -> str : ...
254264
255265
256266@dataclass (frozen = True )
@@ -323,14 +333,9 @@ def __init__(self, *, dimensions: tuple[DimensionGrid, ...]) -> None:
323333 )
324334
325335 def __repr__ (self ) -> str :
326- sizes : list [str ] = []
327- for d in self ._dimensions :
328- if isinstance (d , FixedDimension ):
329- sizes .append (str (d .size ))
330- elif isinstance (d , VaryingDimension ):
331- sizes .append (repr (tuple (d .edges )))
336+ sizes = ", " .join (d ._size_repr for d in self ._dimensions )
332337 shape = tuple (d .extent for d in self ._dimensions )
333- return f"ChunkGrid(chunk_sizes=({ ', ' . join ( sizes ) } ), array_shape={ shape } )"
338+ return f"ChunkGrid(chunk_sizes=({ sizes } ), array_shape={ shape } )"
334339
335340 @classmethod
336341 def from_metadata (cls , metadata : ArrayMetadata ) -> ChunkGrid :
0 commit comments