Deepikachintamreddy
fix: remove function aliases from grader_api, classes only, NaN protection
d500ed3 | """ | |
| 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) |