API reference¶
The modules are layered: the transform algebra at the bottom, chunk resolution and the wire format built on top of it.
The transform algebra
zarr_indexing.domain—IndexDomain, a rectangular region of integer coordinates with an explicit (possibly non-zero) originzarr_indexing.output_map—ConstantMap,DimensionMap, andArrayMap: three representations of a set of integer coordinates, one per storage dimensionzarr_indexing.transform—IndexTransform, which pairs a domain with output maps, plus the indexing ([...],.oindex,.vindex),intersect, andtranslateoperations, andselection_to_transformzarr_indexing.composition—compose, which chains two transforms into one
Chunk resolution
zarr_indexing.chunk_resolution—iter_chunk_transforms(transform + chunk grid → per-chunk transforms) andsub_transform_to_selections(the bridge back to the selection tuples the current codec pipeline expects)zarr_indexing.grid—DimensionGridLike, the Protocol describing the narrow chunk-grid surface chunk resolution consumes, so that nothing here importszarr
The ndsel wire format (see the guide)
zarr_indexing.messages—parse_ndsel/normalize_ndsel, the pure JSON→JSON message layer, andNdselErrorzarr_indexing.json— lowering between canonical ndsel bodies and in-memory transforms
Errors
zarr_indexing.errors— the canonical index-error types, whichzarr.errorsre-exports by identity
Every name listed in zarr_indexing.__all__ is re-exported at the top level,
so from zarr_indexing import IndexTransform and
from zarr_indexing.transform import IndexTransform are equivalent.