Source code for ralph.policy.models._group_policy_block

"""Authoring-time group policy block model."""

from __future__ import annotations

from typing import Literal

from pydantic import Field

from ralph.policy.models._frozen_policy_model import _FrozenPolicyModel


[docs] class GroupPolicyBlock(_FrozenPolicyModel): """Composite authoring block that owns lifecycle semantics.""" kind: Literal["group"] = "group" child_blocks: list[str] = Field( default_factory=list, description="Nested blocks in authored execution order.", ) completion_block: str = Field( ..., description="Individual block whose success marks lifecycle completion.", ) before_complete: list[str] = Field( default_factory=list, description="Child blocks treated as pre-completion hooks.", ) after_complete: list[str] = Field( default_factory=list, description="Child blocks treated as post-completion hooks.", ) increments_counter: str | None = Field( default=None, description="Budget counter incremented when this lifecycle completes.", ) loop_resets: list[str] = Field( default_factory=list, description="Loop counters reset when this lifecycle completes.", )