config-debug-env / server /graders /grader_api.py
Deepikachintamreddy
fix: remove function aliases from grader_api, classes only, NaN protection
d500ed3
Raw
History Blame Contribute Delete
2.05 kB
"""
grader_api.py - Grader CLASSES for validator.
Validator calls: Task1Grader().grade(env) and checks 0 < result < 1
"""
import math
from server.graders.json_grader import grade_task1 as _r1
from server.graders.yaml_grader import grade_task2 as _r2
from server.graders.dockerfile_grader import grade_task3 as _r3
from server.graders.compose_grader import grade_task4 as _r4
from server.graders.k8s_grader import grade_task5 as _r5
from server.graders.github_actions_grader import grade_task6 as _r6
from server.graders.nginx_grader import grade_task7 as _r7
def _safe_grade(raw_fn, env):
try:
if env is None:
return 0.50
config = getattr(env, 'current_broken_config', None) or ""
if not config:
obs = getattr(env, '_build_observation', lambda: None)()
if obs is not None:
config = getattr(obs, 'broken_config', "") or ""
if not config:
return 0.50
result = raw_fn(str(config))
if isinstance(result, (tuple, list)):
reward = float(result[0])
else:
reward = float(result)
if math.isnan(reward) or math.isinf(reward):
return 0.50
return max(0.01, min(0.99, reward))
except Exception:
return 0.50
class Task1Grader:
def grade(self, env, *args, **kwargs) -> float:
return _safe_grade(_r1, env)
class Task2Grader:
def grade(self, env, *args, **kwargs) -> float:
return _safe_grade(_r2, env)
class Task3Grader:
def grade(self, env, *args, **kwargs) -> float:
return _safe_grade(_r3, env)
class Task4Grader:
def grade(self, env, *args, **kwargs) -> float:
return _safe_grade(_r4, env)
class Task5Grader:
def grade(self, env, *args, **kwargs) -> float:
return _safe_grade(_r5, env)
class Task6Grader:
def grade(self, env, *args, **kwargs) -> float:
return _safe_grade(_r6, env)
class Task7Grader:
def grade(self, env, *args, **kwargs) -> float:
return _safe_grade(_r7, env)