This provides a centralized method to set the dimensions on the data store. Parameters ---------- variables : dict-like Dictionary of key/value (variable name / xr.Variable) pairs unlimited_dims : list-like List of dimension n
(self, variables, unlimited_dims=None)
| 579 | writer.add(source, target) |
| 580 | |
| 581 | def set_dimensions(self, variables, unlimited_dims=None): |
| 582 | """ |
| 583 | This provides a centralized method to set the dimensions on the data |
| 584 | store. |
| 585 | |
| 586 | Parameters |
| 587 | ---------- |
| 588 | variables : dict-like |
| 589 | Dictionary of key/value (variable name / xr.Variable) pairs |
| 590 | unlimited_dims : list-like |
| 591 | List of dimension names that should be treated as unlimited |
| 592 | dimensions. |
| 593 | """ |
| 594 | if unlimited_dims is None: |
| 595 | unlimited_dims = set() |
| 596 | |
| 597 | parent_dims = self.get_parent_dimensions() |
| 598 | existing_dims = self.get_dimensions() |
| 599 | |
| 600 | dims = {} |
| 601 | for v in unlimited_dims: # put unlimited_dims first |
| 602 | dims[v] = None |
| 603 | for v in variables.values(): |
| 604 | dims |= v.sizes |
| 605 | |
| 606 | for dim, length in dims.items(): |
| 607 | if dim in existing_dims and length != existing_dims[dim]: |
| 608 | raise ValueError( |
| 609 | "Unable to update size for existing dimension" |
| 610 | f"{dim!r} ({length} != {existing_dims[dim]})" |
| 611 | ) |
| 612 | elif dim not in existing_dims and length != parent_dims.get(dim): |
| 613 | is_unlimited = dim in unlimited_dims |
| 614 | self.set_dimension(dim, length, is_unlimited) |
| 615 | |
| 616 | def sync(self): |
| 617 | """Write all buffered data to disk.""" |
no test coverage detected