Freakdivi's picture
Upload folder using huggingface_hub
c71bf62 verified
"""Request models for Dispatch Arena's REST API."""
from __future__ import annotations
from typing import Any, Dict, Optional
from pydantic import BaseModel, Field
from dispatch_arena.models import Action, Config, Mode
class CreateSessionRequest(BaseModel):
mode: Mode = Mode.MINI
seed: Optional[int] = None
config: Dict[str, Any] = Field(default_factory=dict)
def resolved_config(self, default_max_ticks: int) -> Config:
payload = dict(self.config)
payload.setdefault("mode", self.mode)
payload.setdefault("max_ticks", default_max_ticks)
return Config.model_validate(payload)
class ResetRequest(BaseModel):
seed: Optional[int] = None
episode_id: Optional[str] = None
session_id: Optional[str] = None
mode: Optional[Mode] = None
config: Dict[str, Any] = Field(default_factory=dict)
def resolved_config(self, fallback: Config) -> Config:
payload = fallback.to_dict()
payload.update(self.config)
if self.mode is not None:
payload["mode"] = self.mode
return Config.model_validate(payload)
class StepRequest(BaseModel):
session_id: Optional[str] = None
action: Action | str | Dict[str, Any]