Skip to content

Commit e09609c

Browse files
authored
Don't raise rename warning if it is a no operation (#8266)
* Don't raise rename warning if it is a no operation * xr.Dataset -> Dataset * Remove pytest.warns * Add whatsnew
1 parent 25c7689 commit e09609c

File tree

4 files changed

+26
-2
lines changed

4 files changed

+26
-2
lines changed

doc/whats-new.rst

+3
Original file line numberDiff line numberDiff line change
@@ -41,6 +41,9 @@ Deprecations
4141

4242
Bug fixes
4343
~~~~~~~~~
44+
- :py:meth:`DataArray.rename` & :py:meth:`Dataset.rename` would emit a warning
45+
when the operation was a no-op. (:issue:`8266`)
46+
By `Simon Hansen <https://github.com/hoxbro>`_.
4447

4548

4649
Documentation

xarray/core/dataset.py

+3
Original file line numberDiff line numberDiff line change
@@ -4167,6 +4167,9 @@ def _rename(
41674167
create_dim_coord = False
41684168
new_k = name_dict[k]
41694169

4170+
if k == new_k:
4171+
continue # Same name, nothing to do
4172+
41704173
if k in self.dims and new_k in self._coord_names:
41714174
coord_dims = self._variables[name_dict[k]].dims
41724175
if coord_dims == (k,):

xarray/tests/test_dataarray.py

+10
Original file line numberDiff line numberDiff line change
@@ -1883,6 +1883,16 @@ def test_rename_dimension_coord_warnings(self) -> None:
18831883
):
18841884
da.rename(x="y")
18851885

1886+
# No operation should not raise a warning
1887+
da = xr.DataArray(
1888+
data=np.ones((2, 3)),
1889+
dims=["x", "y"],
1890+
coords={"x": range(2), "y": range(3), "a": ("x", [3, 4])},
1891+
)
1892+
with warnings.catch_warnings():
1893+
warnings.simplefilter("error")
1894+
da.rename(x="x")
1895+
18861896
def test_init_value(self) -> None:
18871897
expected = DataArray(
18881898
np.full((3, 4), 3), dims=["x", "y"], coords=[range(3), range(4)]

xarray/tests/test_dataset.py

+10-2
Original file line numberDiff line numberDiff line change
@@ -3032,8 +3032,7 @@ def test_rename_old_name(self) -> None:
30323032
def test_rename_same_name(self) -> None:
30333033
data = create_test_data()
30343034
newnames = {"var1": "var1", "dim2": "dim2"}
3035-
with pytest.warns(UserWarning, match="does not create an index anymore"):
3036-
renamed = data.rename(newnames)
3035+
renamed = data.rename(newnames)
30373036
assert_identical(renamed, data)
30383037

30393038
def test_rename_dims(self) -> None:
@@ -3103,6 +3102,15 @@ def test_rename_dimension_coord_warnings(self) -> None:
31033102
):
31043103
ds.rename(x="y")
31053104

3105+
# No operation should not raise a warning
3106+
ds = Dataset(
3107+
data_vars={"data": (("x", "y"), np.ones((2, 3)))},
3108+
coords={"x": range(2), "y": range(3), "a": ("x", [3, 4])},
3109+
)
3110+
with warnings.catch_warnings():
3111+
warnings.simplefilter("error")
3112+
ds.rename(x="x")
3113+
31063114
def test_rename_multiindex(self) -> None:
31073115
midx = pd.MultiIndex.from_tuples([([1, 2]), ([3, 4])], names=["a", "b"])
31083116
midx_coords = Coordinates.from_pandas_multiindex(midx, "x")

0 commit comments

Comments
 (0)