-
Notifications
You must be signed in to change notification settings - Fork 42
setting node name breaks tree linkage #309
Comments
Thank you for reporting this! The offending setter is here Line 597 in 0afaa6c
This should update the key it is stored under in it's parent. This should be a pretty simple fix if you (or perhaps @etienneschalk ?) are interested in going in? (If not then no worries) |
Hello @TomNicholas In the context of merging datatree into xarray, should new developments continue to be made on this repo, or in the xarray repo? Or is there a code freeze until datatree can be worked with from inside the xarray repo? Or simply, new developments happening here will be integrated into xarray with some git wizardry? Edit: the answer is in the README: https://github.com/xarray-contrib/datatree?tab=readme-ov-file#deprecation-notice |
I think we accept bug fixes here, but not new features. And whilst those bugfixes will be moved to xarray, you won't necessarily get full attribution for them (i.e. I'll probably do it the dumb copy-paste way instead of the git wizardry way). |
But we should fix the bug here! Because people will still be using this repository for a while yet (as this is what is uploaded to pypi/conda as |
I'm happy to tackle the fix, but will be traveling for a conference that runs through most of next week, so probably wouldn't get to it until after that. If someone else wants to fix it before then, by all means ;) |
What should be the expected behaviour when renaming a child node to None? I had a look at how xarray behaves when renaming a DataArray inside of a Dataset. It seems that the renaming is just ignored when trying to change the import xarray as xr https://docs.xarray.dev/en/stable/generated/xarray.DataArray.name.html xds = xr.Dataset({"a": xr.DataArray([1])})
print(xds)
print(xds["a"])
xds["a"].name = "toto" print(xds["a"])
xda = xds["a"]
xda.name = "toto"
print(xda)
print(xds)
|
@etienneschalk, I find that to be very counterintuitive behavior. My naive expectation would be that the variable should be renamed as desired and the dataset updated to reflect that, and if there was any issue (like renaming to None or to the name of another variable) an exception would be raised. Of course, this is an xarray issue. |
Fixed a bug (xarray-contrib#309) whereby setting the DataTree.name property broke the tree linkage because it did not update the nodes key in it's parent's children dict.
Closing in favour of the discussion upstream in pydata/xarray#9447 |
Simple fix seems to be wherever the
name
property is being set it needs to also ensure that the keys inself.parent.children
are updated as needed. Not sure if there is anywhere else that is storing these keys that also needs updating.The text was updated successfully, but these errors were encountered: