dataclean-env / client.py
Dhruv Goyal
DataClean OpenEnv v2.0 - Data Drift + Parallel Baseline
782a588
Raw
History Blame Contribute Delete
1.72 kB
"""
DataClean OpenEnv Client
Simple HTTP client — no openenv-core dependency needed.
"""
import json, requests
from typing import Any, Dict, Optional
class DataCleanEnvClient:
def __init__(self, base_url: str = "http://localhost:7860", session_id: str = "default"):
self.base_url = base_url.rstrip("/")
self.session_id = session_id
def reset(self, task_id: str = "task1", seed: int = 42) -> Dict[str, Any]:
r = requests.post(f"{self.base_url}/reset",
json={"task_id": task_id, "seed": seed, "session_id": self.session_id})
r.raise_for_status()
return r.json()
def step(self, action: Dict[str, Any]) -> Dict[str, Any]:
r = requests.post(f"{self.base_url}/step?session_id={self.session_id}", json=action)
r.raise_for_status()
return r.json()
def state(self) -> Dict[str, Any]:
return requests.get(f"{self.base_url}/state?session_id={self.session_id}").json()
def tasks(self) -> Dict[str, Any]:
return requests.get(f"{self.base_url}/tasks").json()
def grader(self) -> Dict[str, Any]:
return requests.get(f"{self.base_url}/grader?session_id={self.session_id}").json()
def baseline(self) -> Dict[str, Any]:
return requests.get(f"{self.base_url}/baseline", timeout=300).json()
def health(self) -> Dict[str, Any]:
return requests.get(f"{self.base_url}/health").json()
if __name__ == "__main__":
env = DataCleanEnvClient()
print("Health:", env.health())
obs = env.reset("task1", seed=42)
print("Tables:", list(obs["column_dtypes"].keys()))
print("Nulls:", obs["null_counts"])
print("Schema errors:", obs["schema_errors"])