Skip to content

Index

ipw.analysis

Analysis implementations bundled with Intelligence Per Watt.

Analyses register themselves with ipw.core.AnalysisRegistry.

AnalysisContext dataclass

Common inputs made available to analysis plugins.

Source code in intelligence-per-watt/src/ipw/analysis/base.py
@dataclass(slots=True, frozen=True)
class AnalysisContext:
    """Common inputs made available to analysis plugins."""

    results_dir: Path
    options: Mapping[str, Any] = field(default_factory=dict)

    def __post_init__(self) -> None:
        object.__setattr__(self, "options", _freeze_mapping(self.options))

AnalysisProvider

Bases: ABC

Base class for extendible analysis plugins.

Source code in intelligence-per-watt/src/ipw/analysis/base.py
class AnalysisProvider(ABC):
    """Base class for extendible analysis plugins."""

    #: Registry key for this analysis. Subclasses should override this constant.
    analysis_id: str

    @abstractmethod
    def run(self, context: AnalysisContext) -> AnalysisResult:
        """Execute the analysis and return a structured result."""

run(context) abstractmethod

Execute the analysis and return a structured result.

Source code in intelligence-per-watt/src/ipw/analysis/base.py
@abstractmethod
def run(self, context: AnalysisContext) -> AnalysisResult:
    """Execute the analysis and return a structured result."""

AnalysisResult dataclass

Standardized payload returned by analysis plugins.

Source code in intelligence-per-watt/src/ipw/analysis/base.py
@dataclass(slots=True, frozen=True)
class AnalysisResult:
    """Standardized payload returned by analysis plugins."""

    analysis: str
    summary: Mapping[str, Any]
    data: Mapping[str, Any] = field(default_factory=dict)
    warnings: tuple[str, ...] = field(default_factory=tuple)
    artifacts: Mapping[str, Path] = field(default_factory=dict)
    metadata: Mapping[str, Any] = field(default_factory=dict)

    def __post_init__(self) -> None:
        object.__setattr__(self, "summary", _freeze_mapping(self.summary))
        object.__setattr__(self, "data", _freeze_mapping(self.data))
        object.__setattr__(self, "artifacts", _freeze_mapping(self.artifacts))
        object.__setattr__(self, "metadata", _freeze_mapping(self.metadata))

ensure_registered()

Import built-in analysis providers to populate the registry.

Source code in intelligence-per-watt/src/ipw/analysis/__init__.py
def ensure_registered() -> None:
    """Import built-in analysis providers to populate the registry."""
    from . import accuracy  # noqa: F401  (registers on import)
    from . import regression  # noqa: F401  (registers on import)