Source code for buildcompiler.api.options
"""Build options contracts for full_build configuration."""
from dataclasses import dataclass, field
from enum import Enum
from pathlib import Path
from typing import Literal
[docs]
class ProtocolMode(str, Enum):
"""Protocol generation mode."""
NONE = "none"
MANUAL = "manual"
AUTOMATED = "automated"
[docs]
@dataclass
class CombinatorialOptions:
max_variants: int = 256
allow_large_expansion: bool = False
[docs]
@dataclass
class Lvl2SearchOptions:
max_exhaustive_region_count: int = 4
allow_large_order_search: bool = False
[docs]
@dataclass
class PlanningOptions:
combinatorial: CombinatorialOptions = field(default_factory=CombinatorialOptions)
lvl2_search: Lvl2SearchOptions = field(default_factory=Lvl2SearchOptions)
[docs]
@dataclass
class ExecutionOptions:
max_iterations: int = 5
continue_on_error: bool = False
[docs]
@dataclass
class SelectionOptions:
prefer_existing_collection_material: bool = True
prefer_higher_material_state: bool = True
[docs]
@dataclass
class ProtocolOptions:
mode: ProtocolMode = ProtocolMode.NONE
simulate: bool = False
results_dir: str | Path | None = None
[docs]
@dataclass
class ReportingOptions:
include_detailed_report: bool = False
include_rejected_routes: bool = True
max_rejected_routes: int = 3
[docs]
@dataclass
class ApprovalOptions:
approved_processes: set[str] = field(default_factory=set)
approved_approval_ids: set[str] = field(default_factory=set)
scope: Literal["run", "persistent"] = "run"
[docs]
@dataclass
class ReagentOptions:
allow_reagent_purchase: bool = False
default_restriction_enzyme: str = "BsaI"
default_ligase: str = "T4_DNA_ligase"
[docs]
@dataclass
class DomesticationOptions:
allow_sequence_domestication_edits: bool = False
[docs]
@dataclass
class BuildOptions:
planning: PlanningOptions = field(default_factory=PlanningOptions)
execution: ExecutionOptions = field(default_factory=ExecutionOptions)
selection: SelectionOptions = field(default_factory=SelectionOptions)
protocol: ProtocolOptions = field(default_factory=ProtocolOptions)
reporting: ReportingOptions = field(default_factory=ReportingOptions)
approvals: ApprovalOptions = field(default_factory=ApprovalOptions)
reagents: ReagentOptions = field(default_factory=ReagentOptions)
domestication: DomesticationOptions = field(default_factory=DomesticationOptions)
transformation: TransformationOptions = field(default_factory=TransformationOptions)