Jyo-K's picture
Upload folder using huggingface_hub
72ed7c3 verified
"""Remote client for the DarkGuard OpenEnv FastAPI service."""
from __future__ import annotations
from typing import Any
import httpx
import requests
class DarkGuardClient:
def __init__(self, base_url: str, timeout: float = 30.0) -> None:
self.base_url = base_url.rstrip("/")
self.timeout = timeout
def reset(self, **payload: Any) -> dict[str, Any]:
response = requests.post(f"{self.base_url}/reset", json=payload, timeout=self.timeout)
response.raise_for_status()
return response.json()
def step(self, action: dict[str, Any] | str) -> dict[str, Any]:
response = requests.post(f"{self.base_url}/step", json={"action": action}, timeout=self.timeout)
response.raise_for_status()
return response.json()
def state(self) -> dict[str, Any]:
response = requests.get(f"{self.base_url}/state", timeout=self.timeout)
response.raise_for_status()
return response.json()
class AsyncDarkGuardClient:
def __init__(self, base_url: str, timeout: float = 30.0) -> None:
self.base_url = base_url.rstrip("/")
self.timeout = timeout
self._client = httpx.AsyncClient(timeout=timeout)
async def reset(self, **payload: Any) -> dict[str, Any]:
response = await self._client.post(f"{self.base_url}/reset", json=payload)
response.raise_for_status()
return response.json()
async def step(self, action: dict[str, Any] | str) -> dict[str, Any]:
response = await self._client.post(f"{self.base_url}/step", json={"action": action})
response.raise_for_status()
return response.json()
async def state(self) -> dict[str, Any]:
response = await self._client.get(f"{self.base_url}/state")
response.raise_for_status()
return response.json()
async def aclose(self) -> None:
await self._client.aclose()