From 8c6ce299da06f8ce503ede537f5a00eecac75f58 Mon Sep 17 00:00:00 2001 From: soutrikdas Date: Thu, 22 Oct 2026 17:20:46 +0530 Subject: [PATCH 1/2] Start emitting deprecation warning for Dataset.to_array (GH11721) Dataset.to_array is deprecated in favor of Dataset.to_dataarray but no warnings were being emitted. Add a FutureWarning there. Add a test to check if warning is being emitted. --- doc/whats-new.rst | 5 +++++ xarray/core/dataset.py | 4 ++++ xarray/tests/test_dataset.py | 7 +++++++ 3 files changed, 16 insertions(+) diff --git a/doc/whats-new.rst b/doc/whats-new.rst index 3abeff78a77..fa603976979 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`). + 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( { From d6c2f6200102f50426c403ba87d940dcd74925f5 Mon Sep 17 00:00:00 2001 From: soutrikdas Date: Thu, 22 Oct 2026 17:29:11 +0530 Subject: [PATCH 2/2] Add PR Number to whats-new --- doc/whats-new.rst | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/doc/whats-new.rst b/doc/whats-new.rst index fa603976979..a4d12d11227 100644 --- a/doc/whats-new.rst +++ b/doc/whats-new.rst @@ -145,7 +145,7 @@ Deprecations 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`). + (:issue:`11721`, :pull:`11788`). By `Soutrik Das `_.