(
indexes: Indexes[Index],
args: Mapping[Any, Any],
func: str,
)
| 2181 | |
| 2182 | |
| 2183 | def _apply_indexes( |
| 2184 | indexes: Indexes[Index], |
| 2185 | args: Mapping[Any, Any], |
| 2186 | func: str, |
| 2187 | ) -> tuple[dict[Hashable, Index], dict[Hashable, Variable]]: |
| 2188 | new_indexes: dict[Hashable, Index] = dict(indexes.items()) |
| 2189 | new_index_variables: dict[Hashable, Variable] = {} |
| 2190 | |
| 2191 | for index, index_vars in indexes.group_by_index(): |
| 2192 | index_dims = {d for var in index_vars.values() for d in var.dims} |
| 2193 | index_args = {k: v for k, v in args.items() if k in index_dims} |
| 2194 | if index_args: |
| 2195 | new_index = getattr(index, func)(index_args) |
| 2196 | if new_index is not None: |
| 2197 | new_indexes.update(dict.fromkeys(index_vars, new_index)) |
| 2198 | new_index_vars = new_index.create_variables(index_vars) |
| 2199 | new_index_variables.update(new_index_vars) |
| 2200 | else: |
| 2201 | for k in index_vars: |
| 2202 | new_indexes.pop(k, None) |
| 2203 | |
| 2204 | return new_indexes, new_index_variables |
| 2205 | |
| 2206 | |
| 2207 | def isel_indexes( |
no test coverage detected
searching dependent graphs…