Skip to content

rule_mixin

RuleMixin

Bases: SerializableMixin

Source code in griptape/mixins/rule_mixin.py
@define(slots=False)
class RuleMixin(SerializableMixin):
    DEFAULT_RULESET_NAME = "Default Ruleset"

    _rulesets: list[Ruleset] = field(
        factory=list,
        kw_only=True,
        alias="rulesets",
        metadata={"serializable": True, "serialization_key": "_rulesets", "deserialization_key": "rulesets"},
    )
    rules: list[BaseRule] = field(
        factory=list, kw_only=True, metadata={"serializable": True, "deserialization_key": "rules"}
    )
    _default_ruleset_name: str = field(default=Factory(lambda: RuleMixin.DEFAULT_RULESET_NAME), kw_only=True)
    _default_ruleset_id: str = field(default=Factory(lambda: uuid.uuid4().hex), kw_only=True)

    @property
    def rulesets(self) -> list[Ruleset]:
        rulesets = self._rulesets.copy()

        if self.rules:
            rulesets.append(Ruleset(id=self._default_ruleset_id, name=self._default_ruleset_name, rules=self.rules))

        return rulesets

DEFAULT_RULESET_NAME = 'Default Ruleset' class-attribute instance-attribute

_default_ruleset_id = field(default=Factory(lambda: uuid.uuid4().hex), kw_only=True) class-attribute instance-attribute

_default_ruleset_name = field(default=Factory(lambda: RuleMixin.DEFAULT_RULESET_NAME), kw_only=True) class-attribute instance-attribute

_rulesets = field(factory=list, kw_only=True, alias='rulesets', metadata={'serializable': True, 'serialization_key': '_rulesets', 'deserialization_key': 'rulesets'}) class-attribute instance-attribute

rules = field(factory=list, kw_only=True, metadata={'serializable': True, 'deserialization_key': 'rules'}) class-attribute instance-attribute

rulesets property