Source code for mode.utils.types.trees

"""Type classes for :mod:`mode.utils.trees`."""
import abc
from typing import Any, Generic, Iterator, List, TypeVar
from .graphs import DependencyGraphT

__all__ = ['NodeT']

_T = TypeVar('_T')


[docs]class NodeT(Generic[_T]): """Node in a tree data structure.""" root: 'NodeT' = None children: List[Any] = None parent: 'NodeT' = None data: Any = None @classmethod @abc.abstractmethod def _new_node(cls, data: _T, **kwargs: Any) -> 'NodeT': ...
[docs] @abc.abstractmethod def new(self, data: _T) -> 'NodeT': ...
[docs] @abc.abstractmethod def add(self, data: _T) -> None: ...
[docs] @abc.abstractmethod def discard(self, data: _T) -> None: ...
[docs] @abc.abstractmethod def reattach(self, parent: 'NodeT') -> 'NodeT': ...
[docs] @abc.abstractmethod def traverse(self) -> Iterator['NodeT']: ...
[docs] @abc.abstractmethod def walk(self) -> Iterator['NodeT']: ...
[docs] @abc.abstractmethod def as_graph(self) -> DependencyGraphT: ...
@property @abc.abstractmethod def parent(self) -> 'NodeT': ... @parent.setter def parent(self, node: 'NodeT') -> None: ... @property @abc.abstractmethod def root(self) -> 'NodeT': ... @root.setter def root(self, node: 'NodeT') -> None: ... @property @abc.abstractmethod def depth(self) -> int: ... @property @abc.abstractmethod def path(self) -> str: ...