Source code for pyiem.models.taf
"""TAF Data Model."""
# pylint: disable=too-few-public-methods
from datetime import datetime
from typing import List, Optional
# third party
from pydantic import BaseModel, Field
[docs]
class WindShear(BaseModel):
"""A Wind Shear Value."""
level: int = Field(..., ge=0, le=100000)
drct: int = Field(..., ge=0, le=360)
sknt: int = Field(..., ge=0, le=199)
[docs]
class SkyCondition(BaseModel):
"""The Sky condition."""
amount: str
level: Optional[int] = Field(None, ge=0, le=100000)
[docs]
class TAFForecast(BaseModel):
"""A TAF forecast."""
valid: datetime
raw: str
ftype: int = Field(..., ge=0, le=5)
end_valid: Optional[datetime] = None
sknt: Optional[int] = Field(default=None, ge=0, le=199)
drct: Optional[int] = Field(default=None, ge=0, le=360)
gust: Optional[int] = Field(default=None, ge=0, le=199)
visibility: Optional[float] = Field(default=None, ge=0, le=6)
presentwx: List[str] = Field(default_factory=list)
sky: List[SkyCondition] = Field(default_factory=list)
shear: Optional[WindShear] = None
[docs]
class TAFReport(BaseModel):
"""A TAF Report consisting of forecasts."""
station: str = Field(..., min_length=4, max_length=4)
valid: datetime
product_id: str = Field(..., min_length=28, max_length=35)
observation: TAFForecast
forecasts: List[TAFForecast] = Field(default_factory=list)