Spaces:
Build error
Build error
| """Client for the Python code review environment.""" | |
| from __future__ import annotations | |
| from typing import Dict | |
| from compat import install_openenv_fastmcp_compat | |
| install_openenv_fastmcp_compat() | |
| from openenv.core import EnvClient | |
| from openenv.core.client_types import StepResult | |
| from models import ( | |
| HistoryEntry, | |
| PythonCodeReviewAction, | |
| PythonCodeReviewObservation, | |
| PythonCodeReviewState, | |
| RewardDetails, | |
| ) | |
| class PythonEnv( | |
| EnvClient[PythonCodeReviewAction, PythonCodeReviewObservation, PythonCodeReviewState] | |
| ): | |
| """OpenEnv HTTP client for the Python code review benchmark.""" | |
| def _step_payload(self, action: PythonCodeReviewAction) -> Dict: | |
| return action.model_dump(exclude_none=True) | |
| def _parse_result(self, payload: Dict) -> StepResult[PythonCodeReviewObservation]: | |
| obs = payload.get("observation", {}) | |
| observation = PythonCodeReviewObservation( | |
| task_id=obs["task_id"], | |
| title=obs["title"], | |
| difficulty=obs["difficulty"], | |
| task_kind=obs["task_kind"], | |
| task_description=obs["task_description"], | |
| current_code=obs.get("current_code", ""), | |
| errors=obs.get("errors", ""), | |
| test_results=obs.get("test_results", ""), | |
| history=[HistoryEntry(**entry) for entry in obs.get("history", [])], | |
| attempts_remaining=obs.get("attempts_remaining", 0), | |
| last_action_status=obs.get("last_action_status", ""), | |
| score=obs.get("score", 0.0), | |
| reward_details=RewardDetails(**obs.get("reward_details", {})), | |
| done=payload.get("done", obs.get("done", False)), | |
| reward=payload.get("reward", obs.get("reward")), | |
| metadata=obs.get("metadata", {}), | |
| ) | |
| return StepResult( | |
| observation=observation, | |
| reward=payload.get("reward", obs.get("reward")), | |
| done=payload.get("done", obs.get("done", False)), | |
| ) | |
| def _parse_state(self, payload: Dict) -> PythonCodeReviewState: | |
| return PythonCodeReviewState( | |
| episode_id=payload.get("episode_id"), | |
| step_count=payload.get("step_count", 0), | |
| task_id=payload.get("task_id"), | |
| difficulty=payload.get("difficulty"), | |
| task_kind=payload.get("task_kind"), | |
| attempts_remaining=payload.get("attempts_remaining", 0), | |
| current_code=payload.get("current_code", ""), | |
| errors=payload.get("errors", ""), | |
| test_results=payload.get("test_results", ""), | |
| history=[HistoryEntry(**entry) for entry in payload.get("history", [])], | |
| score=payload.get("score", 0.0), | |
| done=payload.get("done", False), | |
| ) | |
| CodeReviewEnv = PythonEnv | |
| MyEnv = PythonEnv | |