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()]