Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 2 additions & 0 deletions docs/whats-new.rst
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,8 @@ What's new
By `Justus Magin <https://github.com/keewis>`_.
- Don't rely on ``xarray``'s default behavior regarding ``attrs`` in :py:func:`pint_xarray.expects` (:issue:`360`, :pull:`367`)
By `Justus Magin <https://github.com/keewis>`_.
- Fix quantifying a existing index and adjust the index conversion tests (:pull:`368`)
By `Justus Magin <https://github.com/keewis>`_.

0.6.0 (31 Aug 2025)
-------------------
Expand Down
11 changes: 7 additions & 4 deletions pint_xarray/conversion.py
Original file line number Diff line number Diff line change
Expand Up @@ -137,10 +137,13 @@ def attach_units_index(index, index_vars, units):
# skip non-quantity indexed variables
return index

if isinstance(index, PintIndex) and index.units != units:
raise ValueError(
f"cannot attach units to quantified index: {index.units} != {units}"
)
if isinstance(index, PintIndex):
if index.units != units:
raise ValueError(
f"cannot attach units to quantified index: {index.units} != {units}"
)
else:
return index

return PintIndex(index=index, units=units)

Expand Down
7 changes: 4 additions & 3 deletions pint_xarray/tests/test_conversion.py
Original file line number Diff line number Diff line change
Expand Up @@ -418,11 +418,12 @@ def test_convert_units(self, type, variant, units, error, suberrors):
expected_a = convert_quantity(q_a, units.get("a", original_units.get("a")))
expected_b = convert_quantity(q_b, units.get("b", original_units.get("b")))
expected_u = convert_quantity(q_u, units.get("u", original_units.get("u")))
expected_x = convert_quantity(q_x, units.get("x"))
expected_x = convert_quantity(q_x, units.get("x", original_units.get("x")))
expected_index = PandasIndex(pd.Index(strip_quantity(expected_x)), "x")
if units.get("x") is not None:
expected_index_units = units.get("x", original_units.get("x"))
if expected_index_units is not None:
expected_index = PintIndex(
index=expected_index, units={"x": units.get("x")}
index=expected_index, units={"x": expected_index_units}
)

expected = Dataset(
Expand Down