diff --git a/xarray/core/coordinates.py b/xarray/core/coordinates.py index e85aafc4479..653e6be0ca2 100644 --- a/xarray/core/coordinates.py +++ b/xarray/core/coordinates.py @@ -311,11 +311,8 @@ def __init__( variables[name] = var dims = set(d for var in variables.values() for d in var.dims) - sizes = { - d: -1 for d in dims - } # TODO the lengths here are never used, so assert_valid_explicit_coords should be refactored assert_valid_explicit_coords( - variables, dims=sizes, explicit_coords=list(variables) + variables, dims=dims, explicit_coords=list(variables) ) if indexes is None: diff --git a/xarray/core/merge.py b/xarray/core/merge.py index cbd06c8fdc5..b8afdecec6e 100644 --- a/xarray/core/merge.py +++ b/xarray/core/merge.py @@ -564,7 +564,7 @@ def merge_coords( def assert_valid_explicit_coords( variables: Mapping[Any, Any], - dims: Mapping[Any, int], + dims: Iterable[Any], explicit_coords: Iterable[Hashable], ) -> None: """Validate explicit coordinate names/dims. @@ -721,16 +721,16 @@ def merge_core( collected, prioritized, compat=compat, combine_attrs=combine_attrs ) - dims = calculate_dimensions(variables) + sizes = calculate_dimensions(variables) coord_names, noncoord_names = determine_coords(coerced) if compat == "minimal": # coordinates may be dropped in merged results coord_names.intersection_update(variables) if explicit_coords is not None: - assert_valid_explicit_coords(variables, dims, explicit_coords) + assert_valid_explicit_coords(variables, sizes.keys(), explicit_coords) coord_names.update(explicit_coords) - for dim, size in dims.items(): + for dim, size in sizes.items(): if dim in variables: coord_names.add(dim) ambiguous_coords = coord_names.intersection(noncoord_names) @@ -745,7 +745,7 @@ def merge_core( combine_attrs, ) - return _MergeResult(variables, coord_names, dims, out_indexes, attrs) + return _MergeResult(variables, coord_names, sizes, out_indexes, attrs) def merge(