Skip to content

Commit 70a2a55

Browse files
authored
Datatree deduplicate setitem (#9602)
* test * bugfix
1 parent c057d13 commit 70a2a55

File tree

2 files changed

+16
-0
lines changed

2 files changed

+16
-0
lines changed

xarray/core/datatree.py

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -813,6 +813,9 @@ def _replace_node(
813813
if data is not _default:
814814
self._set_node_data(ds)
815815

816+
if self.parent is not None:
817+
_deduplicate_inherited_coordinates(self, self.parent)
818+
816819
self.children = children
817820

818821
def _copy_node(

xarray/tests/test_datatree.py

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1315,6 +1315,19 @@ def test_inherited_coords_with_index_are_deduplicated(self):
13151315
expected = xr.Dataset({"foo": ("x", [4, 5])})
13161316
assert_identical(child_dataset, expected)
13171317

1318+
def test_deduplicated_after_setitem(self):
1319+
# regression test for GH #9601
1320+
dt = DataTree.from_dict(
1321+
{
1322+
"/": xr.Dataset(coords={"x": [1, 2]}),
1323+
"/b": None,
1324+
}
1325+
)
1326+
dt["b/x"] = dt["x"]
1327+
child_dataset = dt.children["b"].to_dataset(inherited=False)
1328+
expected = xr.Dataset()
1329+
assert_identical(child_dataset, expected)
1330+
13181331
def test_inconsistent_dims(self):
13191332
expected_msg = _exact_match(
13201333
"""

0 commit comments

Comments
 (0)