diff --git a/xarray/core/datatree.py b/xarray/core/datatree.py index 98934f29b92..c5087dc1634 100644 --- a/xarray/core/datatree.py +++ b/xarray/core/datatree.py @@ -140,7 +140,9 @@ def _to_new_dataset(data: Dataset | Coordinates | None) -> Dataset: elif data is None: ds = Dataset() else: - raise TypeError(f"data object is not an xarray.Dataset, dict, or None: {data}") + raise TypeError( + f"data object is not an xarray.Dataset, xarray.Coordinates, or None: {data}" + ) return ds diff --git a/xarray/tests/test_datatree.py b/xarray/tests/test_datatree.py index 19133bfd88d..5a3fb55eb48 100644 --- a/xarray/tests/test_datatree.py +++ b/xarray/tests/test_datatree.py @@ -69,6 +69,11 @@ def test_data_arg(self) -> None: with pytest.raises(TypeError): DataTree(dataset=xr.DataArray(42, name="foo")) # type: ignore[arg-type] + # A dict is not an accepted data object; the error message must not + # advertise ``dict`` as a valid type (regression test for #11514). + with pytest.raises(TypeError, match=r"xarray\.Coordinates"): + DataTree(dataset=dict()) # type: ignore[arg-type] + def test_child_data_not_copied(self) -> None: # regression test for https://github.com/pydata/xarray/issues/9683 class NoDeepCopy: