datatree
datatree copied to clipboard
`drop_vars` issue?
I don't know if it is an issue (datatree==0.0.14) but, at least, it is an error that could appear quite easily:
import datatree
import xarray as xr
ds = xr.DataArray([[1,2,3]],dims=['a','b'])
dt =datatree.DataTree()
dt['A'] = ds
dt['B'] = ds
for grp in dt.groups:
vars2drop = [vv for vv in dt[grp] if 'example' in vv]
dt[grp] = dt[grp].drop_vars(vars2drop)
the case that would be problematic is:
dt['/'] = dt['/'].drop_vars([])
the error raised is:
File ~/micromamba/envs/micromamba1/lib/python3.10/site-packages/datatree/datatree.py:852, in DataTree.__setitem__(self, key, value)
848 elif isinstance(key, str):
849 # TODO should possibly deal with hashables in general?
850 # path-like: a name of a node/variable, or path to a node/variable
851 path = NodePath(key)
--> 852 return self._set_item(path, value, new_nodes_along_path=True)
853 else:
854 raise ValueError("Invalid format for key")
File ~/micromamba/envs/micromamba1/lib/python3.10/site-packages/datatree/treenode.py:494, in TreeNode._set_item(self, path, item, new_nodes_along_path, allow_overwrite)
491 path = NodePath(path)
493 if not path.name:
--> 494 raise ValueError("Can't set an item under a path which has no name")
496 if path.root:
497 # absolute path
498 current_node = self.root
ValueError: Can't set an item under a path which has no name