corvix.rules ============ .. py:module:: corvix.rules .. autoapi-nested-parse:: Rule matching for filtering and action triggering. Classes ------- .. autoapisummary:: corvix.rules.RuleEvaluation Functions --------- .. autoapisummary:: corvix.rules._is_str_object_map corvix.rules.evaluate_rules corvix.rules.matches_criteria corvix.rules._matches_context_predicates corvix.rules._resolve_context_path corvix.rules._evaluate_context_predicate corvix.rules._equals corvix.rules._contains corvix.rules._in_values Module Contents --------------- .. py:function:: _is_str_object_map(value: object) -> TypeIs[dict[str, object]] .. py:class:: RuleEvaluation Result of evaluating all rules against one notification. .. py:attribute:: matched_rules :type: list[str] :value: [] .. py:attribute:: actions :type: list[corvix.config.RuleAction] :value: [] .. py:attribute:: excluded :type: bool :value: False .. py:function:: evaluate_rules(notification: corvix.domain.Notification, score: float, rules: corvix.config.RuleSet, now: datetime.datetime | None = None, context: collections.abc.Mapping[str, object] | None = None) -> RuleEvaluation Evaluate global and per-repository rules. .. py:function:: matches_criteria(criteria: corvix.config.MatchCriteria, notification: corvix.domain.Notification, score: float, now: datetime.datetime, context: collections.abc.Mapping[str, object] | None = None) -> bool Check whether a notification satisfies configured criteria. .. py:function:: _matches_context_predicates(criteria: corvix.config.MatchCriteria, context: collections.abc.Mapping[str, object]) -> bool .. py:function:: _resolve_context_path(context: collections.abc.Mapping[str, object], path: str) -> tuple[bool, object | None] .. py:function:: _evaluate_context_predicate(*, op: str, path_exists: bool, path_value: object | None, expected: object | None, case_insensitive: bool) -> bool .. py:function:: _equals(left: object | None, right: object | None, case_insensitive: bool) -> bool .. py:function:: _contains(path_value: object | None, expected: object | None, case_insensitive: bool) -> bool .. py:function:: _in_values(path_value: object | None, expected: object | None, case_insensitive: bool) -> bool