Source code for materia_epd.pipeline.context
from __future__ import annotations
from dataclasses import dataclass, field
from typing import Any
[docs]
@dataclass
class EpdPipelineContext:
process: Any | None = None
matches: dict[str, Any] | None = None
all_epds: list[Any] = field(default_factory=list)
matched_epds: list[Any] = field(default_factory=list)
filtered_epds: list[Any] = field(default_factory=list)
rejected_epds: list[tuple[str, str]] = field(default_factory=list)
missing_epds: list[tuple[str, str]] = field(default_factory=list)
unmatched_epds: list[tuple[str, str]] = field(default_factory=list)
market_epds: dict[str, list[Any]] = field(default_factory=dict)
market_impacts: dict[str, Any] = field(default_factory=dict)
avg_properties: dict[str, Any] | None = None
avg_gwps: dict[str, Any] | None = None
report: Any | None = None
assembled_components: list[dict[str, Any]] = field(default_factory=list)
component_reports: dict[str, Any] = field(default_factory=dict)
component_impacts: dict[str, dict[str, dict[str, float]]] = field(
default_factory=dict
)
results_registry: dict[str, dict[str, Any]] = field(default_factory=dict)
used_mass_fallback: bool = False
recipe_type: str | None = None
active_material_kwargs: dict[str, Any] | None = None
active_dec_unit: str | None = None
diagnostics: list[dict[str, Any]] = field(default_factory=list)
stopped: bool = False
success: bool = True
[docs]
def add_diagnostic(self, kind: str, message: str, **extra: Any) -> None:
self.diagnostics.append(
{
"kind": kind,
"message": message,
**extra,
}
)
[docs]
def stop(self, success: bool = False) -> None:
self.stopped = True
self.success = success