Source code for mllm_shap.shap.pipeline.contracts

"""Contracts for composition-first SHAP pipeline stages and policies."""

from abc import abstractmethod
from typing import Protocol

from ..core.telemetry import TelemetryProbe
from .context import ExplainContext, ExplainState


[docs] class PipelineStage(Protocol): """Single pipeline stage that can mutate ExplainState."""
[docs] @abstractmethod def run( self, context: ExplainContext, state: ExplainState, probe: TelemetryProbe | None = None, ) -> None: """Execute stage logic and mutate state."""
[docs] class SamplingPolicy(PipelineStage, Protocol): """Policy producing masks and response samples."""
[docs] class SimilarityPolicy(PipelineStage, Protocol): """Policy computing similarities from responses."""
[docs] class EstimationPolicy(PipelineStage, Protocol): """Policy estimating SHAP values from masks/similarities."""
[docs] class NormalizationPolicy(PipelineStage, Protocol): """Policy normalizing raw SHAP values."""
[docs] class PersistencePolicy(PipelineStage, Protocol): """Policy persisting results (for example cache storage)."""