coordax.coords.canonicalize

coordax.coords.canonicalize(*coordinates: Coordinate) tuple[Coordinate, ...][source]

Canonicalize coordinates into a minimum equivalent collection.

Parameters:

*coordinates – The coordinates to canonicalize.

Returns:

A tuple of canonicalized coordinates, where CartesianProduct objects are flattened, Scalar objects are removed and SelectedAxis objects are merged back into the original coordinate if all axes are selected in order.

Examples

>>> import coordax as cx
>>> x = cx.SizedAxis('x', 2)
>>> y = cx.SizedAxis('y', 3)
>>> cx.coords.canonicalize(x, y)
(coordax.SizedAxis('x', size=2), coordax.SizedAxis('y', size=3))
>>> xy = cx.coords.compose(x, y)
>>> cx.coords.canonicalize(xy)
(coordax.SizedAxis('x', size=2), coordax.SizedAxis('y', size=3))