Spaces:
Sleeping
Sleeping
File size: 1,120 Bytes
d3d0e0e | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 | from __future__ import annotations
from dataclasses import dataclass
from pathlib import Path
from typing import Any
@dataclass(frozen=True, slots=True)
class TaskRecord:
task_id: str
difficulty: str
question: str
@dataclass(frozen=True, slots=True)
class TaskAssets:
task_dir: Path
context_dir: Path
@dataclass(frozen=True, slots=True)
class PublicTask:
record: TaskRecord
assets: TaskAssets
@property
def task_id(self) -> str:
return self.record.task_id
@property
def difficulty(self) -> str:
return self.record.difficulty
@property
def question(self) -> str:
return self.record.question
@property
def task_dir(self) -> Path:
return self.assets.task_dir
@property
def context_dir(self) -> Path:
return self.assets.context_dir
@dataclass(frozen=True, slots=True)
class AnswerTable:
columns: list[str]
rows: list[list[Any]]
def to_dict(self) -> dict[str, Any]:
return {
"columns": list(self.columns),
"rows": [list(row) for row in self.rows],
}
|