-
-
Notifications
You must be signed in to change notification settings - Fork 1.2k
Description
What is your issue?
In #9011 code from datatree was merged into the main xarray/core
subdirectory. This includes the TreeAttrAccessMixin
class, which is inherited by DataTree
. There is also a more general AttrAccessMixin
class, which would be preferable to use instead.
The reason that AttrAccessMixin
is not just used for DataTree
is that AttrAccessMixin.__init_subclass__
has a check to see if there is a __dict__
attribute on the class. If there is, an error is thrown, saying that __slots__
should be used instead. DataTree
(and TreeNode
and NamedNode
) do define __slots__
, but there are some attributes that are also declared dynamically (e.g., DataTree.children
and DataTree.parent
, which are first defined in DataTree.__init__
). Because of these dynamic declarations, DataTree
has both __slots__
and __dict__
and therefore fails the check in AttrAccessMixin.__init_subcass__
.
This issue aims to update DataTree
(and potentially NamedNode
and TreeNode
, if needed), such that DataTree
can pass the check in AttrAccessMixin.__init_subclass__
and the additional TreeAttrAccessMixin
class can be removed.
Metadata
Metadata
Assignees
Labels
Type
Projects
Status