Source code for action0.open_meteo.flood.models
# generated by action0-client-openapi v0.1.2 from flood.yml — do not edit
from __future__ import annotations
import enum
from dataclasses import dataclass
from typing import Any
[docs]
class GetV1FloodDailyItem(enum.Enum):
"""The ``GetV1FloodDailyItem`` values."""
RIVER_DISCHARGE = "river_discharge"
RIVER_DISCHARGE_MEAN = "river_discharge_mean"
RIVER_DISCHARGE_MEDIAN = "river_discharge_median"
RIVER_DISCHARGE_MAX = "river_discharge_max"
RIVER_DISCHARGE_MIN = "river_discharge_min"
RIVER_DISCHARGE_P25 = "river_discharge_p25"
RIVER_DISCHARGE_P75 = "river_discharge_p75"
[docs]
class GetV1FloodCellSelection(enum.Enum):
"""The ``GetV1FloodCellSelection`` values."""
LAND = "land"
SEA = "sea"
NEAREST = "nearest"
[docs]
class GetV1FloodModelsItem(enum.Enum):
"""The ``GetV1FloodModelsItem`` values."""
SEAMLESS_V4 = "seamless_v4"
FORECAST_V4 = "forecast_v4"
CONSOLIDATED_V4 = "consolidated_v4"
SEAMLESS_V3 = "seamless_v3"
FORECAST_V3 = "forecast_v3"
CONSOLIDATED_V3 = "consolidated_v3"
[docs]
@dataclass
class GetV1FloodResponseDaily:
"""The ``GetV1FloodResponseDaily`` model."""
time: list[str] | None = None
river_discharge: list[float] | None = None
river_discharge_mean: list[float] | None = None
river_discharge_median: list[float] | None = None
river_discharge_max: list[float] | None = None
river_discharge_min: list[float] | None = None
river_discharge_p25: list[float] | None = None
river_discharge_p75: list[float] | None = None
[docs]
def get_v1_flood_response_daily_from_json(data: Any) -> GetV1FloodResponseDaily:
"""
Build a :py:class:`GetV1FloodResponseDaily` from one decoded JSON object.
:param data: the decoded JSON object
:return: the GetV1FloodResponseDaily
"""
return GetV1FloodResponseDaily(
time=data.get("time"),
river_discharge=data.get("river_discharge"),
river_discharge_mean=data.get("river_discharge_mean"),
river_discharge_median=data.get("river_discharge_median"),
river_discharge_max=data.get("river_discharge_max"),
river_discharge_min=data.get("river_discharge_min"),
river_discharge_p25=data.get("river_discharge_p25"),
river_discharge_p75=data.get("river_discharge_p75"),
)
[docs]
@dataclass
class GetV1FloodResponseDailyUnits:
"""The ``GetV1FloodResponseDailyUnits`` model."""
time: str | None = None
river_discharge: str | None = None
river_discharge_mean: str | None = None
river_discharge_median: str | None = None
river_discharge_max: str | None = None
river_discharge_min: str | None = None
river_discharge_p25: str | None = None
river_discharge_p75: str | None = None
[docs]
def get_v1_flood_response_daily_units_from_json(data: Any) -> GetV1FloodResponseDailyUnits:
"""
Build a :py:class:`GetV1FloodResponseDailyUnits` from one decoded JSON object.
:param data: the decoded JSON object
:return: the GetV1FloodResponseDailyUnits
"""
return GetV1FloodResponseDailyUnits(
time=data.get("time"),
river_discharge=data.get("river_discharge"),
river_discharge_mean=data.get("river_discharge_mean"),
river_discharge_median=data.get("river_discharge_median"),
river_discharge_max=data.get("river_discharge_max"),
river_discharge_min=data.get("river_discharge_min"),
river_discharge_p25=data.get("river_discharge_p25"),
river_discharge_p75=data.get("river_discharge_p75"),
)
[docs]
@dataclass
class GetV1FloodResponse:
"""The ``GetV1FloodResponse`` model."""
latitude: float | None = None
longitude: float | None = None
elevation: float | None = None
generationtime_ms: float | None = None
utc_offset_seconds: int | None = None
timezone: str | None = None
timezone_abbreviation: str | None = None
daily: GetV1FloodResponseDaily | None = None
daily_units: GetV1FloodResponseDailyUnits | None = None
[docs]
def get_v1_flood_response_from_json(data: Any) -> GetV1FloodResponse:
"""
Build a :py:class:`GetV1FloodResponse` from one decoded JSON object.
:param data: the decoded JSON object
:return: the GetV1FloodResponse
"""
return GetV1FloodResponse(
latitude=data.get("latitude"),
longitude=data.get("longitude"),
elevation=data.get("elevation"),
generationtime_ms=data.get("generationtime_ms"),
utc_offset_seconds=data.get("utc_offset_seconds"),
timezone=data.get("timezone"),
timezone_abbreviation=data.get("timezone_abbreviation"),
daily=(
get_v1_flood_response_daily_from_json(data["daily"])
if data.get("daily") is not None
else None
),
daily_units=(
get_v1_flood_response_daily_units_from_json(data["daily_units"])
if data.get("daily_units") is not None
else None
),
)
[docs]
@dataclass
class GetV1FloodError:
"""The ``GetV1FloodError`` model."""
error: bool | None = None
reason: str | None = None
[docs]
def get_v1_flood_error_from_json(data: Any) -> GetV1FloodError:
"""
Build a :py:class:`GetV1FloodError` from one decoded JSON object.
:param data: the decoded JSON object
:return: the GetV1FloodError
"""
return GetV1FloodError(
error=data.get("error"),
reason=data.get("reason"),
)