Spaces:
Sleeping
Sleeping
File size: 1,163 Bytes
e75c8ce | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 | """Typed WebSocket client for CacheInvalidationEnvironment."""
from __future__ import annotations
from typing import Any, Dict
from openenv.core.client_types import StepResult
from openenv.core.env_client import EnvClient
from env.models import CacheAction, CacheObservation, CacheState
class CacheInvalidationEnvClient(EnvClient[CacheAction, CacheObservation, CacheState]):
def _step_payload(self, action: CacheAction | Dict[str, Any]) -> Dict[str, Any]:
if isinstance(action, CacheAction):
return action.model_dump()
return CacheAction.model_validate(action).model_dump()
def _parse_result(self, payload: Dict[str, Any]) -> StepResult[CacheObservation]:
obs_inner = payload.get("observation", {})
return StepResult(
observation=CacheObservation.model_validate(
{**obs_inner, "reward": payload.get("reward"), "done": payload.get("done", False)}
),
reward=payload.get("reward"),
done=payload.get("done", False),
)
def _parse_state(self, payload: Dict[str, Any]) -> CacheState:
return CacheState.model_validate(payload)
|