@@ -989,7 +989,7 @@ def parse_dims(
989
989
if isinstance (dim , str ):
990
990
dim = (dim ,)
991
991
if check_exists :
992
- _check_dims (set (dim ), set (all_dims ))
992
+ check_dims (set (dim ), set (all_dims ))
993
993
return tuple (dim )
994
994
995
995
@@ -1051,7 +1051,7 @@ def parse_ordered_dims(
1051
1051
dims_set : set [Hashable | ellipsis ] = set (dim )
1052
1052
all_dims_set = set (all_dims )
1053
1053
if check_exists :
1054
- _check_dims (dims_set , all_dims_set )
1054
+ check_dims (dims_set , all_dims_set )
1055
1055
if len (all_dims_set ) != len (all_dims ):
1056
1056
raise ValueError ("Cannot use ellipsis with repeated dims" )
1057
1057
dims = tuple (dim )
@@ -1070,13 +1070,35 @@ def parse_ordered_dims(
1070
1070
)
1071
1071
1072
1072
1073
- def _check_dims (dim : set [Hashable | ellipsis ], all_dims : set [Hashable ]) -> None :
1074
- wrong_dims = dim - all_dims
1073
+ def check_dims (
1074
+ dims : Sequence [Hashable | ellipsis ],
1075
+ all_dims : Sequence [Hashable ],
1076
+ message_fmt : str | None = None ,
1077
+ obj : Any = None ,
1078
+ exc_type : Exception = ValueError ,
1079
+ ) -> None :
1080
+ """
1081
+ Check if any of the dimensions in 'dims' is missing from 'all_dims'.
1082
+
1083
+ Parameters
1084
+ ----------
1085
+ dims : Sequence of Hashable or "..."
1086
+ Dimension(s) to check. "..." is ignored.
1087
+ all_dims : Sequence of Hashable
1088
+ The expected dimensions to check against.
1089
+ message_fmt : str
1090
+ Error message of the exception raised if some of 'dims' can not be
1091
+ found in 'all_dims'. Will be formatted with two arguments: the missing
1092
+ dimensions and the expected dimensions. If not given, a default message
1093
+ is used.
1094
+ exc_type : Exception
1095
+ The texception type to raise.
1096
+ """
1097
+ if message_fmt is None :
1098
+ message_fmt = "Dimension(s) {!r} not found in data dimensions {}"
1099
+ wrong_dims = set (dims ) - set (all_dims )
1075
1100
if wrong_dims and wrong_dims != {...}:
1076
- wrong_dims_str = ", " .join (f"'{ d !s} '" for d in wrong_dims )
1077
- raise ValueError (
1078
- f"Dimension(s) { wrong_dims_str } do not exist. Expected one or more of { all_dims } "
1079
- )
1101
+ raise exc_type (message_fmt .format (tuple (wrong_dims ), tuple (all_dims )))
1080
1102
1081
1103
1082
1104
_Accessor = TypeVar ("_Accessor" )
0 commit comments