feat(weather): improve weather locations list

This commit is contained in:
2026-06-24 15:45:15 +03:00
parent df2f1d0d81
commit d82fc4ea46
11 changed files with 180 additions and 101 deletions

View File

@@ -1,5 +1,6 @@
import datetime
from enum import Enum
from enum import StrEnum, auto
from typing import Self
from pydantic import BaseModel
@@ -12,6 +13,7 @@ class Model(BaseModel):
class Location(Model):
id: str
name: str
provider: str
lat: float
lon: float
country: str
@@ -20,21 +22,21 @@ class Location(Model):
subdistrict: str
class Cloudness(str, Enum):
CLEAR = "clear"
PARTLY_CLOUDY = "party_cloudy"
CLOUDY = "cloudy"
MAINLY_CLOUDY = "mainly_cloudy"
class Cloudness(StrEnum):
CLEAR = auto()
PARTLY_CLOUDY = auto()
CLOUDY = auto()
MAINLY_CLOUDY = auto()
class Precipitation(str, Enum):
NO = "no"
SMALL_RAIN = "small_rain"
RAIN = "rain"
HEAVY_RAIN = "heavy_rain"
SHOWER = "shower"
SNOW = "snow"
HEAVY_SNOW = "heavy_snow"
class Precipitation(StrEnum):
NO = auto()
SMALL_RAIN = auto()
RAIN = auto()
HEAVY_RAIN = auto()
SHOWER = auto()
SNOW = auto()
HEAVY_SNOW = auto()
class Sky(Model):
@@ -44,16 +46,16 @@ class Sky(Model):
fog: bool
class WindDirection(str, Enum):
CALM = "calm"
N = "N"
NE = "NE"
E = "E"
SE = "SE"
S = "S"
SW = "SW"
W = "W"
NW = "NW"
class WindDirection(StrEnum):
CALM = auto()
N = auto()
NE = auto()
E = auto()
SE = auto()
S = auto()
SW = auto()
W = auto()
NW = auto()
class WindDirectionDeg(float):
@@ -89,7 +91,7 @@ class WindDirectionDeg(float):
raise ValueError(self)
@classmethod
def from_direction(cls, direction: WindDirection) -> "WindDirectionDeg":
def from_direction(cls, direction: WindDirection) -> Self:
return cls(
{
WindDirection.CALM: -1,