Reformat code + add type hints

This commit is contained in:
Jules 2025-05-05 21:42:20 +02:00
parent af40cba92d
commit 9641b4219b
Signed by: jdejaegh
GPG key ID: 99D6D184CA66933A
3 changed files with 17 additions and 7 deletions

View file

@ -37,10 +37,13 @@ class Forecast(TypedDict, total=False):
class IrmKmiConditionEvol(Enum): class IrmKmiConditionEvol(Enum):
"""Possible state for evolution between weather conditions"""
ONE_WAY = 'one_way' ONE_WAY = 'one_way'
TWO_WAYS = 'two_ways' TWO_WAYS = 'two_ways'
STABLE = 'stable' STABLE = 'stable'
class IrmKmiRadarStyle(Enum): class IrmKmiRadarStyle(Enum):
"""Possible style for the rain radar""" """Possible style for the rain radar"""
@ -49,6 +52,7 @@ class IrmKmiRadarStyle(Enum):
OPTION_STYLE_YELLOW_RED = 'yellow_red_style' OPTION_STYLE_YELLOW_RED = 'yellow_red_style'
OPTION_STYLE_SATELLITE = 'satellite_style' OPTION_STYLE_SATELLITE = 'satellite_style'
class IrmKmiPollenNames(Enum): class IrmKmiPollenNames(Enum):
"""Pollens names from the API""" """Pollens names from the API"""
@ -72,6 +76,7 @@ class IrmKmiPollenLevels(Enum):
RED = 'red' RED = 'red'
PURPLE = 'purple' PURPLE = 'purple'
class IrmKmiForecast(Forecast, total=False): class IrmKmiForecast(Forecast, total=False):
"""Forecast class with additional attributes for IRM KMI""" """Forecast class with additional attributes for IRM KMI"""
@ -84,6 +89,7 @@ class IrmKmiForecast(Forecast, total=False):
class CurrentWeatherData(TypedDict, total=False): class CurrentWeatherData(TypedDict, total=False):
"""Class to hold the currently observable weather at a given location""" """Class to hold the currently observable weather at a given location"""
condition: str | None condition: str | None
temperature: float | None temperature: float | None
wind_speed: float | None wind_speed: float | None
@ -95,6 +101,7 @@ class CurrentWeatherData(TypedDict, total=False):
class WarningData(TypedDict, total=False): class WarningData(TypedDict, total=False):
"""Holds data about a specific warning""" """Holds data about a specific warning"""
slug: str slug: str
id: int id: int
level: int level: int
@ -106,6 +113,7 @@ class WarningData(TypedDict, total=False):
class IrmKmiRadarForecast(Forecast): class IrmKmiRadarForecast(Forecast):
"""Forecast class to handle rain forecast from the IRM KMI rain radar""" """Forecast class to handle rain forecast from the IRM KMI rain radar"""
rain_forecast_max: float rain_forecast_max: float
rain_forecast_min: float rain_forecast_min: float
might_rain: bool might_rain: bool
@ -114,6 +122,7 @@ class IrmKmiRadarForecast(Forecast):
class AnimationFrameData(TypedDict, total=False): class AnimationFrameData(TypedDict, total=False):
"""Holds one single frame of the radar camera, along with the timestamp of the frame""" """Holds one single frame of the radar camera, along with the timestamp of the frame"""
time: datetime | None time: datetime | None
image: bytes | str | None image: bytes | str | None
value: float | None value: float | None
@ -124,6 +133,7 @@ class AnimationFrameData(TypedDict, total=False):
class RadarAnimationData(TypedDict, total=False): class RadarAnimationData(TypedDict, total=False):
"""Holds frames and additional data for the animation to be rendered""" """Holds frames and additional data for the animation to be rendered"""
sequence: List[AnimationFrameData] | None sequence: List[AnimationFrameData] | None
most_recent_image_idx: int | None most_recent_image_idx: int | None
hint: str | None hint: str | None

View file

@ -39,11 +39,11 @@ class PollenParser:
elements: List[ET.Element] = self._extract_elements(root) elements: List[ET.Element] = self._extract_elements(root)
pollens = {e.attrib.get('x', None): self._get_elem_text(e).lower() pollens = {e.attrib.get('x', None): self._get_txt(e).lower()
for e in elements if 'tspan' in e.tag and str(self._get_elem_text(e)).lower() in IrmKmiPollenNames} for e in elements if 'tspan' in e.tag and str(self._get_txt(e)).lower() in IrmKmiPollenNames}
pollen_levels = {e.attrib.get('x', None): POLLEN_LEVEL_TO_COLOR[self._get_elem_text(e)] pollen_levels = {e.attrib.get('x', None): POLLEN_LEVEL_TO_COLOR[self._get_txt(e)]
for e in elements if 'tspan' in e.tag and self._get_elem_text(e) in POLLEN_LEVEL_TO_COLOR} for e in elements if 'tspan' in e.tag and self._get_txt(e) in POLLEN_LEVEL_TO_COLOR}
level_dots = {e.attrib.get('cx', None) for e in elements if 'circle' in e.tag} level_dots = {e.attrib.get('cx', None) for e in elements if 'circle' in e.tag}
@ -112,7 +112,7 @@ class PollenParser:
return elements return elements
@staticmethod @staticmethod
def _get_elem_text(e) -> str | None: def _get_txt(e) -> str | None:
if e.text is not None: if e.text is not None:
return e.text.strip() return e.text.strip()
return None return None

View file

@ -149,7 +149,7 @@ class RainGraph:
""" """
return self._animation_data.get('hint', '') return self._animation_data.get('hint', '')
async def _download_clouds(self, idx=None): async def _download_clouds(self, idx: int | None = None):
""" """
Download cloud images and save the result in the internal state. Download cloud images and save the result in the internal state.