-
Notifications
You must be signed in to change notification settings - Fork 38
Open
Description
glmtools/io/traversal:OneToManyTraversal.__init__
has this loop:
for (entity_var, parent_var) in self._descend():
if dataset.dims[dataset[entity_var].dims[0]] == 0:
# No data, so groupby will fail in xarray > 0.13
entity_grouper = None
else:
entity_grouper = dataset.groupby(entity_var)
self.entity_groups[entity_var] = entity_grouper
if parent_var is None:
parent_grouper = None
else:
if dataset.dims[dataset[parent_var].dims[0]] == 0:
# No data, so groupby will fail in xarray > 0.13
parent_grouper = None
else:
parent_grouper = dataset.groupby(parent_var)
self.parent_groups[parent_var] = parent_grouper
self.child_to_parent[entity_var] = parent_var
self.parent_to_child[parent_var] = entity_var
self.parent_groups_by_entity[entity_var] = parent_grouper
self.entity_groups_by_parent[parent_var] = entity_grouper
When dataset.dims[dataset[parent_var].dims[0]] == 0
, parent_grouper
is set to None
and then assigned to self.parent_groups[parent_var]
In the check_parent_child
method in the same file, these assignments are made:
trav = self
...
parent_grouper = trav.parent_groups[parent_var]
parent_ids = set(parent_grouper.groups.keys())
This can result in parent_grouper
being assigned None
. The next statement attempts to resolve parent_grouper.groups.keys()
. When parent_grouper
is None
, this results in an exception.
Metadata
Metadata
Assignees
Labels
No labels