corvix.rules

Rule matching for filtering and action triggering.

Classes

RuleEvaluation

Result of evaluating all rules against one notification.

Functions

_is_str_object_map(→ TypeIs[dict[str, object]])

evaluate_rules(→ RuleEvaluation)

Evaluate global and per-repository rules.

matches_criteria(→ bool)

Check whether a notification satisfies configured criteria.

_matches_context_predicates(→ bool)

_resolve_context_path(→ tuple[bool, object | None])

_evaluate_context_predicate(→ bool)

_equals(→ bool)

_contains(→ bool)

_in_values(→ bool)

Module Contents

corvix.rules._is_str_object_map(value: object) TypeIs[dict[str, object]][source][source]
class corvix.rules.RuleEvaluation[source][source]

Result of evaluating all rules against one notification.

matched_rules: list[str] = [][source][source]
actions: list[corvix.config.RuleAction] = [][source][source]
excluded: bool = False[source][source]
corvix.rules.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[source][source]

Evaluate global and per-repository rules.

corvix.rules.matches_criteria(criteria: corvix.config.MatchCriteria, notification: corvix.domain.Notification, score: float, now: datetime.datetime, context: collections.abc.Mapping[str, object] | None = None) bool[source][source]

Check whether a notification satisfies configured criteria.

corvix.rules._matches_context_predicates(criteria: corvix.config.MatchCriteria, context: collections.abc.Mapping[str, object]) bool[source][source]
corvix.rules._resolve_context_path(context: collections.abc.Mapping[str, object], path: str) tuple[bool, object | None][source][source]
corvix.rules._evaluate_context_predicate(*, op: str, path_exists: bool, path_value: object | None, expected: object | None, case_insensitive: bool) bool[source][source]
corvix.rules._equals(left: object | None, right: object | None, case_insensitive: bool) bool[source][source]
corvix.rules._contains(path_value: object | None, expected: object | None, case_insensitive: bool) bool[source][source]
corvix.rules._in_values(path_value: object | None, expected: object | None, case_insensitive: bool) bool[source][source]