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