types
This commit is contained in:
@@ -6,6 +6,8 @@ from typing import Generic, TypeVar
|
||||
|
||||
from .set import DAGSet
|
||||
|
||||
type dictset = defaultdict[T, set[T]]
|
||||
|
||||
T = TypeVar("T")
|
||||
|
||||
|
||||
@@ -19,12 +21,15 @@ class DAG(Generic[T], MutableMapping[T, MutableSet[T]]):
|
||||
a guarded view that keeps reverse in sync.
|
||||
"""
|
||||
|
||||
_succ: dictset[T]
|
||||
_pred: dictset[T]
|
||||
|
||||
def __init__(self) -> None:
|
||||
self._succ: defaultdict[T, set[T]] = defaultdict(set)
|
||||
self._pred: defaultdict[T, set[T]] = defaultdict(set)
|
||||
self._succ: dictset[T] = defaultdict(set)
|
||||
self._pred: dictset[T] = defaultdict(set)
|
||||
|
||||
@property
|
||||
def reverse(self) -> defaultdict[T, set[T]]:
|
||||
def reverse(self) -> dictset[T]:
|
||||
return self._pred
|
||||
|
||||
# --- MutableMapping interface ---
|
||||
@@ -78,10 +83,6 @@ class DAG(Generic[T], MutableMapping[T, MutableSet[T]]):
|
||||
self._succ[u].add(v)
|
||||
self._pred[v].add(u)
|
||||
|
||||
# Touch keys so nodes appear if accessed later (optional but nice)
|
||||
_ = self._succ[v]
|
||||
_ = self._pred[u]
|
||||
|
||||
def remove_edge(self, u: T, v: T, *, missing_ok: bool = True) -> None:
|
||||
if v in self._succ.get(u, ()):
|
||||
self._succ[u].remove(v)
|
||||
|
||||
Reference in New Issue
Block a user