colormaps is a module attribute, not a submodule — remove the explicit import.
Also relax matplotlib pin back to >=3.5 (minimum for colormaps attribute).
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
- Create cloud_run/saliency: FastAPI service running DeepGaze I/IIE/III
on Cloud Run (4 vCPU, 16GB RAM); pre-downloads model weights in Docker
build to eliminate cold-start delays; returns saliency map + gaze
sequence + hotspots + design scores
- Create cloud_run/processing: lightweight FastAPI service for heatmap
generation and gaze sequence visualization (2 vCPU, 4GB RAM)
- Add cloud_run/deploy.sh for gcloud deployment to project optical-414516
in region europe-west2
- Refactor analysis pipeline to route via Cloud Run when
CLOUD_RUN_SALIENCY_URL is set, with local fallback for dev mode
- Add cloud_run_client.py with sync httpx wrappers for background tasks
- Split pyproject.toml: base = API-only deps, [ml] = torch/deepgaze for
local dev; production Dockerfile is now lightweight (~no PyTorch)
- Preserve Dockerfile.full + docker-compose.dev.yml for local ML dev
- Auth via X-Internal-Secret header (CLOUD_RUN_SECRET env var)
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>