You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
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.
The text was updated successfully, but these errors were encountered:
What is your issue?
In #9011 code from datatree was merged into the main
xarray/core
subdirectory. This includes theTreeAttrAccessMixin
class, which is inherited byDataTree
. There is also a more generalAttrAccessMixin
class, which would be preferable to use instead.The reason that
AttrAccessMixin
is not just used forDataTree
is thatAttrAccessMixin.__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
(andTreeNode
andNamedNode
) do define__slots__
, but there are some attributes that are also declared dynamically (e.g.,DataTree.children
andDataTree.parent
, which are first defined inDataTree.__init__
). Because of these dynamic declarations,DataTree
has both__slots__
and__dict__
and therefore fails the check inAttrAccessMixin.__init_subcass__
.This issue aims to update
DataTree
(and potentiallyNamedNode
andTreeNode
, if needed), such thatDataTree
can pass the check inAttrAccessMixin.__init_subclass__
and the additionalTreeAttrAccessMixin
class can be removed.The text was updated successfully, but these errors were encountered: