(self)
| 287 | return collected_indexes, collected_index_vars |
| 288 | |
| 289 | def find_matching_indexes(self) -> None: |
| 290 | all_indexes: dict[MatchingIndexKey, list[Index]] |
| 291 | all_index_vars: dict[MatchingIndexKey, list[dict[Hashable, Variable]]] |
| 292 | all_indexes_dim_sizes: dict[MatchingIndexKey, dict[Hashable, set]] |
| 293 | objects_matching_indexes: list[dict[MatchingIndexKey, Index]] |
| 294 | objects_matching_index_vars: list[ |
| 295 | dict[MatchingIndexKey, dict[Hashable, Variable]] |
| 296 | ] |
| 297 | |
| 298 | all_indexes = defaultdict(list) |
| 299 | all_index_vars = defaultdict(list) |
| 300 | all_indexes_dim_sizes = defaultdict(lambda: defaultdict(set)) |
| 301 | objects_matching_indexes = [] |
| 302 | objects_matching_index_vars = [] |
| 303 | |
| 304 | for obj in self.objects: |
| 305 | obj_indexes, obj_index_vars = self._collect_indexes(obj.xindexes) |
| 306 | objects_matching_indexes.append(obj_indexes) |
| 307 | objects_matching_index_vars.append(obj_index_vars) |
| 308 | for key, idx in obj_indexes.items(): |
| 309 | all_indexes[key].append(idx) |
| 310 | for key, index_vars in obj_index_vars.items(): |
| 311 | all_index_vars[key].append(index_vars) |
| 312 | for dim, size in calculate_dimensions(index_vars).items(): |
| 313 | all_indexes_dim_sizes[key][dim].add(size) |
| 314 | |
| 315 | self.objects_matching_indexes = tuple(objects_matching_indexes) |
| 316 | self.objects_matching_index_vars = tuple(objects_matching_index_vars) |
| 317 | self.all_indexes = all_indexes |
| 318 | self.all_index_vars = all_index_vars |
| 319 | |
| 320 | if self.join == "override": |
| 321 | for dim_sizes in all_indexes_dim_sizes.values(): |
| 322 | for dim, sizes in dim_sizes.items(): |
| 323 | if len(sizes) > 1: |
| 324 | raise AlignmentError( |
| 325 | "cannot align objects with join='override' with matching indexes " |
| 326 | f"along dimension {dim!r} that don't have the same size" |
| 327 | ) |
| 328 | |
| 329 | def find_matching_unindexed_dims(self) -> None: |
| 330 | unindexed_dim_sizes = defaultdict(set) |
no test coverage detected