Source code for elasticai.creator.graph.graph

from abc import abstractmethod
from collections.abc import Collection, Hashable, Iterator, Mapping
from typing import Protocol, Self


[docs] class ReadOnlyGraph[T: Hashable](Protocol): @property @abstractmethod def nodes(self) -> Collection[T]: ...
[docs] @abstractmethod def iter_edges(self) -> Iterator[tuple[T, T]]: ...
@property @abstractmethod def predecessors(self) -> Mapping[T, Collection[T]]: ... @property @abstractmethod def successors(self) -> Mapping[T, Collection[T]]: ...
[docs] class Graph[T: Hashable](ReadOnlyGraph[T], Protocol):
[docs] @abstractmethod def add_node(self, node: T) -> Self: ...
[docs] @abstractmethod def add_edge(self, src: T, dst: T) -> Self: ...
[docs] @abstractmethod def new(self) -> "Graph[T]": ...
[docs] @abstractmethod def copy(self) -> "Graph[T]": ...