Source code for sequince.steps.mutation.adaptive.policies.base

"""Policies for choosing mutation budgets from completed metrics."""

from __future__ import annotations

from typing import Protocol

from ....context import StepContext
from ...metrics import MutationMetricsOutput


[docs] class MutationStepPolicy(Protocol): """Choose mutation budgets using completed, iteration-level metrics. Policies are called only at mutation-block boundaries. In particular, they never receive intermediate mutation states or metrics. """
[docs] def initialise(self, *, initial_steps: int, context: StepContext) -> int: """Choose the budget for the first adaptive iteration.""" ...
[docs] def update( self, *, current_steps: int, metrics: MutationMetricsOutput, context: StepContext, ) -> int: """Choose the proposed budget for the next outer iteration.""" ...
__all__ = ["MutationStepPolicy"]