dbatcode28's picture
initial
bd67155
raw
history blame contribute delete
901 Bytes
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()]