Spaces:
Sleeping
Sleeping
| from __future__ import annotations | |
| from uuid import uuid4 | |
| from openenv.core.env_server.interfaces import Environment | |
| from openenv.core.env_server.types import State | |
| from ev_grid_oracle.road_env import RoadCore | |
| from ev_grid_oracle.road_models import RoadAction, RoadObservation | |
| class EVGridRoadEnvironment(Environment): | |
| """ | |
| Separate OpenEnv environment that forces real-road-graph actions. | |
| Mounted as a sub-app under /road/ so it doesn't break the existing env. | |
| """ | |
| SUPPORTS_CONCURRENT_SESSIONS: bool = False | |
| def __init__(self): | |
| self._state = State(episode_id=str(uuid4()), step_count=0) | |
| self._core = RoadCore(g=None, nodes=[]) # type: ignore[arg-type] | |
| def reset(self, seed=None, episode_id=None, **kwargs) -> RoadObservation: # type: ignore[override] | |
| self._state = State(episode_id=episode_id or str(uuid4()), step_count=0) | |
| return self._core.reset(seed=seed) | |
| def step(self, action: RoadAction) -> RoadObservation: # type: ignore[override] | |
| self._state.step_count += 1 | |
| return self._core.step(action) | |
| def state(self) -> State: | |
| return self._state | |