diff --git a/doc/whats-new.rst b/doc/whats-new.rst index 3abeff78a77..a4d12d11227 100644 --- a/doc/whats-new.rst +++ b/doc/whats-new.rst @@ -143,6 +143,11 @@ Deprecations :py:attr:`DataTree.lineage` warns once instead of twice (:issue:`11721`, :pull:`11724`). By `Daisy DAI `_. +- :py:meth:`Dataset.to_array` is deprecated in favor of :py:meth:`Dataset.to_dataarray` + but it did not emit any warning previously, now it emits a ``FutureWarning`` + (:issue:`11721`, :pull:`11788`). + By `Soutrik Das `_. + Bug Fixes diff --git a/xarray/core/dataset.py b/xarray/core/dataset.py index 7976a8b5f62..ccec59b403d 100644 --- a/xarray/core/dataset.py +++ b/xarray/core/dataset.py @@ -7316,6 +7316,10 @@ def to_array( self, dim: Hashable = "variable", name: Hashable | None = None ) -> DataArray: """Convert this dataset into a DataArray (deprecated, use to_dataarray).""" + emit_user_level_warning( + "Dataset.to_array is deprecated, use Dataset.to_dataarray instead.", + FutureWarning, + ) return self.to_dataarray(dim=dim, name=name) def _normalize_dim_order( diff --git a/xarray/tests/test_dataset.py b/xarray/tests/test_dataset.py index a0887c5b9cb..21a26e1e34e 100644 --- a/xarray/tests/test_dataset.py +++ b/xarray/tests/test_dataset.py @@ -3667,6 +3667,13 @@ def test_swap_dims(self) -> None: assert isinstance(actual.variables["x"], Variable) assert actual.xindexes["y"].equals(expected.xindexes["y"]) + def test_to_array_deprecated(self) -> None: + ds = Dataset({"a": 1, "b": ("x", [1, 2, 3])}, coords={"c": 42}) + expected = ds.to_dataarray("abc", name="foo") + with pytest.warns(FutureWarning, match=r"Dataset\.to_array is deprecated"): + actual = ds.to_array("abc", name="foo") + assert_identical(expected, actual) + def test_expand_dims_error(self) -> None: original = Dataset( {