diff --git a/pint_xarray/conversion.py b/pint_xarray/conversion.py index 5a2ecb3f..ecda7af3 100644 --- a/pint_xarray/conversion.py +++ b/pint_xarray/conversion.py @@ -296,7 +296,7 @@ def convert_units_dataset(obj, units): try: converted_index = convert_units_index(idx, idx_vars, idx_units) indexes.update({k: converted_index for k in idx_vars}) - index_vars.update(converted_index.create_variables()) + index_vars.update(converted_index.create_variables(idx_vars)) except (ValueError, pint.errors.PintTypeError) as e: names = tuple(idx_vars) failed[names] = e diff --git a/pint_xarray/tests/test_accessors.py b/pint_xarray/tests/test_accessors.py index 23eb7412..772099cf 100644 --- a/pint_xarray/tests/test_accessors.py +++ b/pint_xarray/tests/test_accessors.py @@ -672,6 +672,39 @@ def test_to(obj, units, expected, error): KeyError, id="Dataset-incompatible units", ), + pytest.param( + xr.Dataset( + { + "x": ( + "x", + [10, 20, 30], + {"units": unit_registry.Unit("dm"), "long_name": "length"}, + ), + "y": ( + "y", + [60, 120], + {"units": unit_registry.Unit("s"), "long_name": "time"}, + ), + } + ), + {"x": Quantity([10, 30], "dm"), "y": Quantity([60], "s")}, + xr.Dataset( + { + "x": ( + "x", + [10, 30], + {"units": unit_registry.Unit("dm"), "long_name": "length"}, + ), + "y": ( + "y", + [60], + {"units": unit_registry.Unit("s"), "long_name": "time"}, + ), + } + ), + None, + id="Dataset-coords with attrs", + ), pytest.param( xr.DataArray( [[0, 1], [2, 3], [4, 5]],