(
datasets: list[T_Dataset],
)
| 561 | |
| 562 | # determine dimensional coordinate names and a dict mapping name to DataArray |
| 563 | def _parse_datasets( |
| 564 | datasets: list[T_Dataset], |
| 565 | ) -> tuple[ |
| 566 | set[Hashable], |
| 567 | dict[Hashable, Variable], |
| 568 | dict[Hashable, int], |
| 569 | set[Hashable], |
| 570 | set[Hashable], |
| 571 | list[Hashable], |
| 572 | ]: |
| 573 | dims: set[Hashable] = set() |
| 574 | all_coord_names: set[Hashable] = set() |
| 575 | data_vars: set[Hashable] = set() # list of data_vars |
| 576 | dim_coords: dict[Hashable, Variable] = {} # maps dim name to variable |
| 577 | dims_sizes: dict[Hashable, int] = {} # shared dimension sizes to expand variables |
| 578 | variables_order: dict[Hashable, Variable] = {} # variables in order of appearance |
| 579 | |
| 580 | for ds in datasets: |
| 581 | dims_sizes.update(ds.sizes) |
| 582 | all_coord_names.update(ds.coords) |
| 583 | data_vars.update(ds.data_vars) |
| 584 | variables_order.update(ds.variables) |
| 585 | |
| 586 | # preserves ordering of dimensions |
| 587 | for dim in ds.dims: |
| 588 | if dim in dims: |
| 589 | continue |
| 590 | |
| 591 | if dim in ds.coords and dim not in dim_coords: |
| 592 | dim_coords[dim] = ds.coords[dim].variable |
| 593 | dims = dims | set(ds.dims) |
| 594 | |
| 595 | return ( |
| 596 | dims, |
| 597 | dim_coords, |
| 598 | dims_sizes, |
| 599 | all_coord_names, |
| 600 | data_vars, |
| 601 | list(variables_order), |
| 602 | ) |
| 603 | |
| 604 | |
| 605 | def _dataset_concat( |
no test coverage detected
searching dependent graphs…