Source code for buildcompiler.domain.missing_input

"""Missing input/blocker contracts."""

from dataclasses import dataclass, field
from typing import Literal

from .build_stage import BuildStage

MissingKind = Literal[
    "engineered_region",
    "promoter",
    "rbs",
    "cds",
    "terminator",
    "backbone",
    "restriction_enzyme",
    "ligase",
    "reagent",
    "chassis",
]


[docs] @dataclass class MissingBuildInput: """Expected blocker produced when build inputs are unavailable.""" source_stage: BuildStage source_design_identity: str missing_identity: str missing_display_id: str | None missing_kind: MissingKind required_stage: BuildStage | Literal["fatal"] reason: str candidates_tried: list[str] = field(default_factory=list)