openenv-data-clean / client.py
Tarkeshwar
Restructure repo to match OpenEnv standard layout
7c6fd7d
"""DataClean Environment Client."""
from openenv.core.env_client import EnvClient
from openenv.core.client_types import StepResult
try:
from .models import DataCleanAction, DataCleanObservation, DataCleanState
except ImportError:
from models import DataCleanAction, DataCleanObservation, DataCleanState
class DataCleanEnv(EnvClient[DataCleanAction, DataCleanObservation, DataCleanState]):
"""Client for interacting with a DataClean environment server.
Example:
>>> with DataCleanEnv(base_url="http://localhost:8000").sync() as env:
... result = env.reset(task_id="customer_contacts")
... print(result.observation.data_preview)
... result = env.step(DataCleanAction(command='inspect("email")'))
... result = env.step(DataCleanAction(command='fix(3, "email", "test@example.com")'))
... result = env.step(DataCleanAction(command='submit()'))
... print(f"Score: {result.observation.current_score}")
"""
def _step_payload(self, action: DataCleanAction) -> dict:
return {"action": action.model_dump()}
def _parse_result(self, payload: dict) -> StepResult[DataCleanObservation]:
obs = DataCleanObservation(**payload.get("observation", payload))
return StepResult(
observation=obs,
reward=obs.reward,
done=obs.done,
)
def _parse_state(self, payload: dict) -> DataCleanState:
return DataCleanState(**payload)