CloudFinOpsEnv / client.py
jacklachan's picture
Upload folder using huggingface_hub
daace4d verified
Raw
History Blame Contribute Delete
1.63 kB
"""
CloudFinOpsEnv — OpenEnv Client
Implements the required abstract methods for WebSocket-based communication
with the CloudFinOpsEnv server.
"""
from typing import Any, Dict
from openenv.core.env_client import EnvClient, StepResult
from models.action import Action
from models.observation import Observation
from models.state import EnvironmentState
class CloudFinOpsClient(EnvClient[Action, Observation, EnvironmentState]):
"""
Client for interacting with the CloudFinOpsEnv environment.
Use this class to communicate with the deployed HuggingFace Space.
"""
def __init__(self, base_url: str = "http://localhost:7860", **kwargs):
super().__init__(base_url, **kwargs)
def _parse_result(self, payload: Dict[str, Any]) -> StepResult[Observation]:
"""Convert a JSON response from the env server to StepResult[Observation]."""
obs_data = payload.get("observation", payload)
observation = Observation(**obs_data)
return StepResult(
observation=observation,
reward=payload.get("reward"),
done=payload.get("done", False),
)
def _parse_state(self, payload: Dict[str, Any]) -> EnvironmentState:
"""Convert a JSON response from the state endpoint to EnvironmentState."""
state_data = payload.get("state", payload)
return EnvironmentState(**state_data)
def _step_payload(self, action: Action) -> Dict[str, Any]:
"""Convert an Action object to the JSON data expected by the env server."""
return action.model_dump(exclude_none=True)