File size: 901 Bytes
bd67155 | 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 | from __future__ import annotations
import json
from pathlib import Path
from typing import Dict, List
from ..models import TaskSpec
DATA_DIR = Path(__file__).resolve().parent.parent / "data"
def _load_file(name: str) -> List[TaskSpec]:
path = DATA_DIR / name
with path.open("r", encoding="utf-8") as handle:
raw = json.load(handle)
return [TaskSpec.model_validate(item) for item in raw]
def get_all_tasks() -> List[TaskSpec]:
tasks: List[TaskSpec] = []
for filename in ("easy_cases.json", "medium_cases.json", "hard_cases.json"):
tasks.extend(_load_file(filename))
return tasks
def get_task(task_id: str) -> TaskSpec:
for task in get_all_tasks():
if task.task_id == task_id:
return task
raise KeyError(f"Unknown task_id: {task_id}")
def list_task_ids() -> List[str]:
return [task.task_id for task in get_all_tasks()]
|