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
- judgevet.domain.policy_rules: Typed policy definitions.
- judgevet.domain.policy_evaluation: Pure evaluation.
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
__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. |