Spaces:
Paused
Paused
| """Fake adapter — tests/CI only (MODEL_KIND=fake). No GPU deps; lets the HTTP | |
| surface (auth, contract validation, meta plumbing, error mapping) be exercised | |
| with plain fastapi TestClient. Returns a deterministic ramp chunk.""" | |
| from __future__ import annotations | |
| import numpy as np | |
| from fastapi import HTTPException | |
| from adapters.base import resolve_source | |
| class FakeAdapter: | |
| HORIZON = 5 | |
| DOF = 6 | |
| def __init__(self, model_path: str): | |
| self._source = resolve_source(model_path, "fake://none") | |
| def load(self) -> None: | |
| pass | |
| def meta(self) -> dict: | |
| return {"kind": "fake", "chunk_hz": 15.0, "horizon": self.HORIZON, | |
| "dof": self.DOF, "cameras": ["wrist", "third_person"], | |
| "max_images": 2, "source": self._source, | |
| "supports_point": False, "supports_rtc": False} | |
| def act(self, *, images, state, instruction, num_steps, extras): | |
| if len(state) != self.DOF: | |
| raise HTTPException(status_code=422, detail=f"state must be {self.DOF}-dim") | |
| base = np.asarray(state, dtype=np.float32) | |
| chunk = np.stack([base + 0.1 * (i + 1) for i in range(self.HORIZON)]) | |
| rtc_note = ({"skipped": "unsupported for policy kind fake"} | |
| if extras.get("rtc") is not None else None) | |
| return chunk.astype(np.float32), {"rtc": rtc_note} | |