| 30 | |
| 31 | @dataclass(slots=True) |
| 32 | class ExperimentReport: |
| 33 | benchmark_file: str |
| 34 | output_file: str | None |
| 35 | repeat: int |
| 36 | benchmarks: list[str] = field(default_factory=list) |
| 37 | models: list[str] = field(default_factory=list) |
| 38 | results: list[TaskResult] = field(default_factory=list) |
| 39 | |
| 40 | def summary(self) -> dict[str, Any]: |
| 41 | return summarize_task_results(self.results) |
| 42 | |
| 43 | def to_dict(self) -> dict[str, Any]: |
| 44 | return build_experiment_report( |
| 45 | benchmark_file=self.benchmark_file, |
| 46 | output_file=self.output_file, |
| 47 | repeat=self.repeat, |
| 48 | benchmarks=self.benchmarks, |
| 49 | models=self.models, |
| 50 | results=self.results, |
| 51 | ) |
| 52 | |
| 53 | |
| 54 | @dataclass(slots=True) |