"""Built-in derivers for the mnema reference node.""" from __future__ import annotations from typing import Iterable, List from mnema.derive.derivers.base import ( CandidateClaim, DerivationContext, Deriver, DeriverInfo, ) from mnema.derive.derivers.places import PlacesDeriver from mnema.derive.derivers.preferences import PreferencesDeriver from mnema.derive.derivers.relationships import RelationshipsDeriver from mnema.derive.derivers.routines import RoutinesDeriver __all__ = [ "CandidateClaim", "DerivationContext", "Deriver", "DeriverInfo", "PlacesDeriver", "PreferencesDeriver", "RelationshipsDeriver", "RoutinesDeriver", "default_derivers", ] def default_derivers(self_aliases: Iterable[str] = ()) -> List[Deriver]: """The standard deriver set, in a deterministic order. Order matters only for the determinism of log output, not correctness: the engine runs derivers to a fixpoint, so claim-consuming derivers (preferences-from-routines, close-ties-from-contacts) converge regardless of position. """ return [ RoutinesDeriver(), PlacesDeriver(), RelationshipsDeriver(self_aliases=self_aliases), PreferencesDeriver(), ]