Skip to content

Commit 2a1e4e1

Browse files
authored
Check compatibility of coordinate variable dimensions before assignment. (#484)
Closes #428
1 parent a70fed0 commit 2a1e4e1

File tree

2 files changed

+20
-4
lines changed

2 files changed

+20
-4
lines changed

cf_xarray/accessor.py

Lines changed: 7 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -859,11 +859,14 @@ def check_results(names, key):
859859

860860
if scalar_key:
861861
if len(allnames) == 1:
862-
da: DataArray = ds.reset_coords()[allnames[0]] # type: ignore
863-
if allnames[0] in coords:
864-
coords.remove(allnames[0])
862+
(name,) = allnames
863+
da: DataArray = ds.reset_coords()[name] # type: ignore
864+
if name in coords:
865+
coords.remove(name)
865866
for k1 in coords:
866-
da.coords[k1] = ds.variables[k1]
867+
var = ds.variables[k1]
868+
if set(var.dims) <= set(da.dims):
869+
da.coords[k1] = ds.variables[k1]
867870
return da
868871
else:
869872
raise KeyError(

cf_xarray/tests/test_accessor.py

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2036,3 +2036,16 @@ def test_sgrid():
20362036
"Y": {"jface", "jnode"},
20372037
"Z": {"kface", "knode"},
20382038
}
2039+
2040+
2041+
def test_ancillary_variables_extra_dim():
2042+
ds = xr.Dataset(
2043+
{
2044+
"x": (
2045+
"x",
2046+
range(10),
2047+
{"axis": "X", "ancillary_variables": "position_flag"},
2048+
),
2049+
}
2050+
)
2051+
assert_identical(ds.cf["X"], ds["x"])

0 commit comments

Comments
 (0)