Source code for buildcompiler.domain.build_result

"""Stage/full-build result contracts."""

from dataclasses import dataclass, field
from typing import Any

from .approvals import RequiredApproval
from .build_stage import BuildStage
from .missing_input import MissingBuildInput
from .plasmid import IndexedPlasmid, IndexedStrain
from .status import BuildStatus, StageStatus
from .warnings import BuildWarning


[docs] @dataclass class StageResult: """Output contract from a single stage invocation.""" id: str stage: BuildStage status: StageStatus request_ids: list[str] = field(default_factory=list) products: list[IndexedPlasmid | IndexedStrain] = field(default_factory=list) missing_inputs: list[MissingBuildInput] = field(default_factory=list) required_approvals: list[RequiredApproval] = field(default_factory=list) warnings: list[BuildWarning] = field(default_factory=list) sbol_document: Any | None = None json_intermediate: dict[str, Any] | list[Any] | None = None protocol_artifacts: dict[str, Any] = field(default_factory=dict) logs: list[str] = field(default_factory=list)
[docs] @dataclass class FullBuildResult: """Aggregate full-build output contract. Neighboring contracts (plan/graph/summary/report) are intentionally typed conservatively until their milestone implementations are added. """ status: BuildStatus plan: Any build_document: Any stage_results: list[StageResult] = field(default_factory=list) graph: Any = None final_products: list[IndexedPlasmid | IndexedStrain] = field(default_factory=list) missing_inputs: list[MissingBuildInput] = field(default_factory=list) required_approvals: list[RequiredApproval] = field(default_factory=list) warnings: list[BuildWarning] = field(default_factory=list) summary: Any = None report: Any | None = None