| """Shared state for grader results across endpoints.""" |
|
|
| from __future__ import annotations |
|
|
| import threading |
| from typing import Optional |
|
|
| |
| _lock = threading.Lock() |
| _last_results: dict[str, dict] = {} |
|
|
|
|
| def store_grader_result( |
| session_id: str, score: float, task_id: str, steps: int |
| ) -> None: |
| """Store a grader result for retrieval.""" |
| entry = { |
| "score": round(score, 4), |
| "task_id": task_id, |
| "steps": steps, |
| } |
| with _lock: |
| _last_results[session_id] = entry |
| _last_results["_latest"] = entry |
|
|
|
|
| def get_last_grader_result(session_id: Optional[str] = None) -> dict | None: |
| """Get grader result for a session, or the most recent one.""" |
| with _lock: |
| if session_id: |
| return _last_results.get(session_id) |
| return _last_results.get("_latest") |
|
|