(
self,
variable: Variable,
name: Hashable | Default | None = _default,
)
| 520 | return type(self)(variable, coords, name=name, indexes=indexes, fastpath=True) |
| 521 | |
| 522 | def _replace_maybe_drop_dims( |
| 523 | self, |
| 524 | variable: Variable, |
| 525 | name: Hashable | Default | None = _default, |
| 526 | ) -> Self: |
| 527 | if self.sizes == variable.sizes: |
| 528 | coords = self._coords.copy() |
| 529 | indexes = self._indexes |
| 530 | elif set(self.dims) == set(variable.dims): |
| 531 | # Shape has changed (e.g. from reduce(..., keepdims=True) |
| 532 | new_sizes = dict(zip(self.dims, variable.shape, strict=True)) |
| 533 | coords = { |
| 534 | k: v |
| 535 | for k, v in self._coords.items() |
| 536 | if v.shape == tuple(new_sizes[d] for d in v.dims) |
| 537 | } |
| 538 | indexes = filter_indexes_from_coords(self._indexes, set(coords)) |
| 539 | else: |
| 540 | allowed_dims = set(variable.dims) |
| 541 | coords = {} |
| 542 | for k, v in self._coords.items(): |
| 543 | if k in self._indexes: |
| 544 | if self._indexes[k].should_add_coord_to_array(k, v, allowed_dims): |
| 545 | coords[k] = v |
| 546 | elif set(v.dims) <= allowed_dims: |
| 547 | coords[k] = v |
| 548 | indexes = filter_indexes_from_coords(self._indexes, set(coords)) |
| 549 | return self._replace(variable, coords, name, indexes=indexes) |
| 550 | |
| 551 | def _overwrite_indexes( |
| 552 | self, |
no test coverage detected