pyiem.models.taf module#

TAF Data Model.

class pyiem.models.taf.WindShear(*, level, drct, sknt)[source]#

Bases: BaseModel

A Wind Shear Value.

Parameters:
level: Annotated[int, FieldInfo(annotation=NoneType, required=True, metadata=[Ge(ge=0), Le(le=100000)])]#
drct: Annotated[int, FieldInfo(annotation=NoneType, required=True, metadata=[Ge(ge=0), Le(le=360)])]#
sknt: Annotated[int, FieldInfo(annotation=NoneType, required=True, metadata=[Ge(ge=0), Le(le=199)])]#
model_config = {}#

Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].

class pyiem.models.taf.SkyCondition(*, amount, level=None)[source]#

Bases: BaseModel

The Sky condition.

Parameters:
amount: str#
level: Annotated[int | None, FieldInfo(annotation=NoneType, required=True, metadata=[Ge(ge=0), Le(le=100000)])]#
model_config = {}#

Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].

class pyiem.models.taf.TAFForecast(*, valid, raw, ftype, end_valid=None, sknt=None, drct=None, gust=None, visibility=None, presentwx=<factory>, sky=<factory>, shear=None)[source]#

Bases: BaseModel

A TAF forecast.

Parameters:
valid: datetime#
raw: str#
ftype: Annotated[int, FieldInfo(annotation=NoneType, required=True, metadata=[Ge(ge=0), Le(le=5)])]#
end_valid: datetime | None#
sknt: Annotated[int | None, FieldInfo(annotation=NoneType, required=True, metadata=[Ge(ge=0), Le(le=199)])]#
drct: Annotated[int | None, FieldInfo(annotation=NoneType, required=True, metadata=[Ge(ge=0), Le(le=360)])]#
gust: Annotated[int | None, FieldInfo(annotation=NoneType, required=True, metadata=[Ge(ge=0), Le(le=199)])]#
visibility: Annotated[float | None, FieldInfo(annotation=NoneType, required=True, metadata=[Ge(ge=0), Le(le=6)])]#
presentwx: List[str]#
sky: List[SkyCondition]#
shear: WindShear | None#
model_config = {}#

Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].

class pyiem.models.taf.TAFReport(*, station, valid, issue=None, expire=None, product_id, observation, is_amendment, forecasts=<factory>)[source]#

Bases: BaseModel

A TAF Report consisting of forecasts.

Parameters:
station: Annotated[str, FieldInfo(annotation=NoneType, required=True, metadata=[MinLen(min_length=4), MaxLen(max_length=4)])]#
valid: datetime#
issue: Annotated[AwareDatetime | None, FieldInfo(annotation=NoneType, required=True, description='Start')]#
expire: Annotated[AwareDatetime | None, FieldInfo(annotation=NoneType, required=True, description='End')]#
product_id: Annotated[str, FieldInfo(annotation=NoneType, required=True, metadata=[MinLen(min_length=28), MaxLen(max_length=35)])]#
observation: TAFForecast#
is_amendment: Annotated[bool, FieldInfo(annotation=NoneType, required=True, description='Is this amended?')]#
forecasts: list[TAFForecast]#
model_config = {}#

Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].