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)
|