Spaces:
Sleeping
Sleeping
Download src/pro_materialization_service/models.py from NuTonic/nutonic-pro-materialization: direct link, hf CLI and curl.
- Browser
- Download file 3.07 kB
-
https://huggingface.co/spaces/NuTonic/nutonic-pro-materialization/resolve/main/src/pro_materialization_service/models.py
- Command line
-
hf download hf://spaces/NuTonic/nutonic-pro-materialization/src/pro_materialization_service/models.py
-
curl -L -o models.py https://huggingface.co/spaces/NuTonic/nutonic-pro-materialization/resolve/main/src/pro_materialization_service/models.py
3.07 kB
| """Request/response models — internal materialize API (`plans/2026-04-12-...` §5.1, §7).""" | |
| from __future__ import annotations | |
| from typing import Literal | |
| from pydantic import BaseModel, Field | |
| class MaterializeRequest(BaseModel): | |
| latitude: float = Field(..., ge=-90.0, le=90.0) | |
| longitude: float = Field(..., ge=-180.0, le=180.0) | |
| bbox_half_km: float = Field(default=5.0, gt=0, le=500.0) | |
| datetime_interval: str | None = Field(default=None, max_length=128) | |
| max_cloud_cover: float = Field(default=30.0, ge=0.0, le=100.0) | |
| stac_url: str = Field(default="https://earth-search.aws.element84.com/v1", max_length=512) | |
| collection_id: str = Field(default="sentinel-2-l2a", max_length=128) | |
| sentinel_fetch_mode: Literal["MINIMAL_RGB", "TERRAMIND_SPECTRAL", "FULL_STAC"] = "TERRAMIND_SPECTRAL" | |
| analysis_profile: Literal[ | |
| "wildfire", | |
| "oceanscout_ship_detection", | |
| "land_use_change", | |
| "flood_pulse", | |
| "brief_only", | |
| ] = "brief_only" | |
| mapbox_zoom: int = Field(default=12, ge=0, le=18) | |
| mapbox_bearing: float = Field(default=0.0) | |
| mapbox_pitch: float = Field(default=0.0) | |
| mapbox_size: int = Field(default=640, ge=64, le=1280) | |
| retina: bool = False | |
| vlm_contract_id: str = Field(default="nutonic.pro.vlm.v1_512_s2_only", max_length=128) | |
| enable_tim: bool = False | |
| tim_branch: Literal["S2L2A_full", "RGB_mapbox"] = "S2L2A_full" | |
| scene_id_t0: str | None = Field(default=None, max_length=256) | |
| scene_id_t1: str | None = Field(default=None, max_length=256) | |
| scene_id_t2: str | None = Field(default=None, max_length=256) | |
| class VlmArtifact(BaseModel): | |
| role: str | |
| sha256: str | |
| mime: str | |
| width: int | |
| height: int | |
| inline_base64: str | None = None | |
| class TimPayload(BaseModel): | |
| branch: str | |
| npz_base64: str | None = None | |
| modalities_keys: list[str] = Field(default_factory=list) | |
| class MaterializeResult(BaseModel): | |
| materialization_id: str | |
| cache_key: str | |
| vlm_artifacts: list[VlmArtifact] | |
| tim_payload: TimPayload | None = None | |
| run_manifest: dict = Field(default_factory=dict) | |
| errors: list[str] = Field(default_factory=list) | |
| warnings: list[str] = Field(default_factory=list) | |
| # --- Legacy stub aliases (same pin fields; thin server may still call stub path) --- | |
| class MaterializeStubIn(BaseModel): | |
| """Minimal pin for stub materialization.""" | |
| latitude: float = Field(..., ge=-90.0, le=90.0) | |
| longitude: float = Field(..., ge=-180.0, le=180.0) | |
| tim_input_branch: str = Field(default="RGB_mapbox", max_length=64) | |
| class MaterializeStubOut(BaseModel): | |
| """Subset of [MaterializeResult] for backward-compatible ``/materialize/stub``.""" | |
| status: str = Field(default="ok") | |
| service: str = Field(default="pro_materialization_service") | |
| materialization_id: str | |
| latitude: float | |
| longitude: float | |
| tim_input_branch: str | |
| cache_key: str | |
| vlm_roles: list[str] = Field(default_factory=list) | |
| message: str = Field(default="Sentinel-2 VLM pack (TERRAMIND_SPECTRAL + s2_only contract).") | |