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:
...