judgevet.domain.policy_validation

Status: draft.

judgevet.domain.policy_validation

Validate policy rules against immutable snapshots of question constraints.

Examples:

from judgevet.domain.questions import Noul
from judgevet.domain.policy_rules import NoulRule, Policy
from judgevet.domain.policy_validation import validate_policy

validated = validate_policy(Policy((NoulRule("q", 0.5),)), {"q": Noul()})
assert validated.rules[0].name == "q"
See Also

ValidatedPolicy dataclass

A validated policy with no retained mutable question objects.

Construct through this class or validate_policy. Both paths validate. To change constraints, construct again with the new questions.

Attributes:

Name Type Description
policy Policy

Original immutable policy.

rules tuple

Rules in evaluation order.

Examples:

validated = ValidatedPolicy(Policy((NoulRule("q", 0),)), {"q": Noul()})

rules property

Return rules in policy order.

Returns:

Type Description
tuple[Rule, ...]

The immutable rule tuple.

__init__(policy, questions)

Validate every referenced question and snapshot its constraints.

Parameters:

Name Type Description Default
policy Policy

Ordered typed policy.

required
questions Mapping[str, Question]

Typed questions keyed by name.

required

Raises:

Type Description
PolicyDefinitionError

If policy or referenced questions are invalid.

validate_policy(policy, questions)

Validate a policy against typed questions without retaining mutable inputs.

Parameters:

Name Type Description Default
policy Policy

Typed ordered rules.

required
questions Mapping[str, Question]

Question definitions keyed by name.

required

Returns:

Type Description
ValidatedPolicy

A validated immutable policy.

Raises:

Type Description
PolicyDefinitionError

If a definition or referenced question is invalid.