Skip to content

datatree: drop_vars issue? #9336

Open
Open
@keewis

Description

@keewis

What is your 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

Originally posted by @agrouaze in xarray-contrib/datatree#316 (comment)

Metadata

Metadata

Assignees

No one assigned

    Labels

    topic-DataTreeRelated to the implementation of a DataTree class

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions