85 lines
2.1 KiB
Python
85 lines
2.1 KiB
Python
from dataclasses import dataclass, field
|
|
from typing import Literal
|
|
|
|
|
|
@dataclass(frozen=True)
|
|
class ArtifactsConfig:
|
|
include: list[str] = field(default_factory=list)
|
|
exclude: list[str] = field(default_factory=list)
|
|
max_files_per_iteration: int = 0
|
|
|
|
|
|
@dataclass(frozen=True)
|
|
class MutationConfig:
|
|
mode: str = ""
|
|
allowed_file_types: list[str] = field(default_factory=list)
|
|
max_changed_lines: int = 0
|
|
|
|
|
|
@dataclass(frozen=True)
|
|
class RunnerConfig:
|
|
command: str = ""
|
|
cwd: str = "."
|
|
timeout_seconds: int = 0
|
|
|
|
|
|
@dataclass(frozen=True)
|
|
class ScorerParseConfig:
|
|
format: str = ""
|
|
score_field: str = ""
|
|
metrics_field: str = ""
|
|
|
|
|
|
@dataclass(frozen=True)
|
|
class ScorerConfig:
|
|
type: str = ""
|
|
command: str = ""
|
|
parse: ScorerParseConfig = field(default_factory=ScorerParseConfig)
|
|
|
|
|
|
@dataclass(frozen=True)
|
|
class ObjectiveConfig:
|
|
primary_metric: str = ""
|
|
direction: Literal["maximize", "minimize"] = "maximize"
|
|
|
|
|
|
@dataclass(frozen=True)
|
|
class ConstraintConfig:
|
|
metric: str = ""
|
|
op: str = ""
|
|
value: int | float = 0
|
|
|
|
|
|
@dataclass(frozen=True)
|
|
class PolicyConfig:
|
|
keep_if: str = ""
|
|
tie_breakers: list[str] = field(default_factory=list)
|
|
on_failure: str = ""
|
|
|
|
|
|
@dataclass(frozen=True)
|
|
class BudgetConfig:
|
|
max_iterations: int = 0
|
|
max_failures: int = 0
|
|
|
|
|
|
@dataclass(frozen=True)
|
|
class LoggingConfig:
|
|
results_file: str = ""
|
|
candidate_dir: str = ""
|
|
|
|
|
|
@dataclass(frozen=True)
|
|
class TaskConfig:
|
|
id: str = ""
|
|
description: str = ""
|
|
artifacts: ArtifactsConfig = field(default_factory=ArtifactsConfig)
|
|
mutation: MutationConfig = field(default_factory=MutationConfig)
|
|
runner: RunnerConfig = field(default_factory=RunnerConfig)
|
|
scorer: ScorerConfig = field(default_factory=ScorerConfig)
|
|
objective: ObjectiveConfig = field(default_factory=ObjectiveConfig)
|
|
constraints: list[ConstraintConfig] = field(default_factory=list)
|
|
policy: PolicyConfig = field(default_factory=PolicyConfig)
|
|
budget: BudgetConfig = field(default_factory=BudgetConfig)
|
|
logging: LoggingConfig = field(default_factory=LoggingConfig)
|