Depending on the setting of missing_dims, drop any dimensions from indexers that are not present in dims. Parameters ---------- indexers : dict dims : sequence missing_dims : {"raise", "warn", "ignore"}
(
indexers: Mapping[Any, Any],
dims: Iterable[Hashable] | Mapping[Any, int],
missing_dims: ErrorOptionsWithWarn,
)
| 918 | |
| 919 | |
| 920 | def drop_dims_from_indexers( |
| 921 | indexers: Mapping[Any, Any], |
| 922 | dims: Iterable[Hashable] | Mapping[Any, int], |
| 923 | missing_dims: ErrorOptionsWithWarn, |
| 924 | ) -> Mapping[Hashable, Any]: |
| 925 | """Depending on the setting of missing_dims, drop any dimensions from indexers that |
| 926 | are not present in dims. |
| 927 | |
| 928 | Parameters |
| 929 | ---------- |
| 930 | indexers : dict |
| 931 | dims : sequence |
| 932 | missing_dims : {"raise", "warn", "ignore"} |
| 933 | """ |
| 934 | |
| 935 | if missing_dims == "raise": |
| 936 | invalid = indexers.keys() - set(dims) |
| 937 | if invalid: |
| 938 | raise ValueError( |
| 939 | f"Dimensions {invalid} do not exist. Expected one or more of {dims}" |
| 940 | ) |
| 941 | |
| 942 | return indexers |
| 943 | |
| 944 | elif missing_dims == "warn": |
| 945 | # don't modify input |
| 946 | indexers = dict(indexers) |
| 947 | |
| 948 | invalid = indexers.keys() - set(dims) |
| 949 | if invalid: |
| 950 | warnings.warn( |
| 951 | f"Dimensions {invalid} do not exist. Expected one or more of {dims}", |
| 952 | stacklevel=2, |
| 953 | ) |
| 954 | for key in invalid: |
| 955 | indexers.pop(key) |
| 956 | |
| 957 | return indexers |
| 958 | |
| 959 | elif missing_dims == "ignore": |
| 960 | return {key: val for key, val in indexers.items() if key in dims} |
| 961 | |
| 962 | else: |
| 963 | raise ValueError( |
| 964 | f"Unrecognised option {missing_dims} for missing_dims argument" |
| 965 | ) |
| 966 | |
| 967 | |
| 968 | @overload |
no test coverage detected
searching dependent graphs…