Chintamreddy Deepika commited on
Refactor graders to use clamping wrapper
Browse files- server/tasks/task_registry.py +27 -17
server/tasks/task_registry.py
CHANGED
|
@@ -3,16 +3,26 @@ from typing import Callable, Dict, Tuple, List
|
|
| 3 |
from server.tasks import task1_json, task2_yaml, task3_dockerfile
|
| 4 |
from server.tasks import task4_compose, task5_k8s, task6_github_actions, task7_nginx
|
| 5 |
|
| 6 |
-
#
|
| 7 |
-
|
| 8 |
-
|
| 9 |
-
|
| 10 |
-
|
| 11 |
-
|
| 12 |
-
|
| 13 |
-
|
| 14 |
-
|
| 15 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 16 |
|
| 17 |
|
| 18 |
class TaskInfo:
|
|
@@ -39,13 +49,13 @@ TASK_ORDER = [
|
|
| 39 |
]
|
| 40 |
|
| 41 |
TASK_REGISTRY: Dict[str, TaskInfo] = {
|
| 42 |
-
"task1_json": TaskInfo(task1_json, grade_task1),
|
| 43 |
-
"task2_yaml": TaskInfo(task2_yaml, grade_task2),
|
| 44 |
-
"task3_dockerfile": TaskInfo(task3_dockerfile, grade_task3),
|
| 45 |
-
"task4_compose": TaskInfo(task4_compose, grade_task4),
|
| 46 |
-
"task5_k8s": TaskInfo(task5_k8s, grade_task5),
|
| 47 |
-
"task6_github_actions": TaskInfo(task6_github_actions, grade_task6),
|
| 48 |
-
"task7_nginx": TaskInfo(task7_nginx, grade_task7),
|
| 49 |
}
|
| 50 |
|
| 51 |
|
|
|
|
| 3 |
from server.tasks import task1_json, task2_yaml, task3_dockerfile
|
| 4 |
from server.tasks import task4_compose, task5_k8s, task6_github_actions, task7_nginx
|
| 5 |
|
| 6 |
+
# INTERNAL USE: Import directly from raw grader files (return tuples)
|
| 7 |
+
# grader_api.py returns float-only (for validator/openenv.yaml)
|
| 8 |
+
from server.graders.json_grader import grade_task1
|
| 9 |
+
from server.graders.yaml_grader import grade_task2
|
| 10 |
+
from server.graders.dockerfile_grader import grade_task3
|
| 11 |
+
from server.graders.compose_grader import grade_task4
|
| 12 |
+
from server.graders.k8s_grader import grade_task5
|
| 13 |
+
from server.graders.github_actions_grader import grade_task6
|
| 14 |
+
from server.graders.nginx_grader import grade_task7
|
| 15 |
+
|
| 16 |
+
|
| 17 |
+
def _clamp_grader(fn):
|
| 18 |
+
"""Wrap raw grader to clamp reward to (0.01, 0.99)."""
|
| 19 |
+
def wrapper(submitted_config: str) -> Tuple[float, str, List[str]]:
|
| 20 |
+
reward, error_msg, bugs_fixed = fn(submitted_config)
|
| 21 |
+
reward = max(0.01, min(0.99, float(reward)))
|
| 22 |
+
return reward, error_msg, bugs_fixed
|
| 23 |
+
wrapper.__name__ = fn.__name__
|
| 24 |
+
wrapper.__qualname__ = fn.__qualname__
|
| 25 |
+
return wrapper
|
| 26 |
|
| 27 |
|
| 28 |
class TaskInfo:
|
|
|
|
| 49 |
]
|
| 50 |
|
| 51 |
TASK_REGISTRY: Dict[str, TaskInfo] = {
|
| 52 |
+
"task1_json": TaskInfo(task1_json, _clamp_grader(grade_task1)),
|
| 53 |
+
"task2_yaml": TaskInfo(task2_yaml, _clamp_grader(grade_task2)),
|
| 54 |
+
"task3_dockerfile": TaskInfo(task3_dockerfile, _clamp_grader(grade_task3)),
|
| 55 |
+
"task4_compose": TaskInfo(task4_compose, _clamp_grader(grade_task4)),
|
| 56 |
+
"task5_k8s": TaskInfo(task5_k8s, _clamp_grader(grade_task5)),
|
| 57 |
+
"task6_github_actions": TaskInfo(task6_github_actions, _clamp_grader(grade_task6)),
|
| 58 |
+
"task7_nginx": TaskInfo(task7_nginx, _clamp_grader(grade_task7)),
|
| 59 |
}
|
| 60 |
|
| 61 |
|