From a14f49742bf03dd595e426c27832607457db0e41 Mon Sep 17 00:00:00 2001 From: shmyga Date: Fri, 18 Sep 2026 16:12:18 +0300 Subject: [PATCH] refactor(weather): move fix_dates_sequence to util --- gallery/painting/gismeteo/parser.py | 4 ++-- gallery/painting/rp5/parser.py | 3 ++- gallery/sketch/weather/parser.py | 17 ++--------------- gallery/sketch/weather/util.py | 16 ++++++++++++++-- 4 files changed, 20 insertions(+), 20 deletions(-) diff --git a/gallery/painting/gismeteo/parser.py b/gallery/painting/gismeteo/parser.py index 248b320..b5c6cf7 100644 --- a/gallery/painting/gismeteo/parser.py +++ b/gallery/painting/gismeteo/parser.py @@ -18,8 +18,8 @@ from gallery.sketch.weather.model import ( WeatherValue, WindDirection, ) -from gallery.sketch.weather.parser import fix_dates_sequence, parse_wind_direction -from gallery.sketch.weather.util import merge_weather_values +from gallery.sketch.weather.parser import parse_wind_direction +from gallery.sketch.weather.util import fix_dates_sequence, merge_weather_values logger = logging.getLogger("gismeteo") diff --git a/gallery/painting/rp5/parser.py b/gallery/painting/rp5/parser.py index 08d8c3c..0af753f 100644 --- a/gallery/painting/rp5/parser.py +++ b/gallery/painting/rp5/parser.py @@ -19,7 +19,8 @@ from gallery.sketch.weather.model import ( WeatherValue, WindDirection, ) -from gallery.sketch.weather.parser import fix_dates_sequence, parse_wind_direction +from gallery.sketch.weather.parser import parse_wind_direction +from gallery.sketch.weather.util import fix_dates_sequence class LocationNameParser(TagParser[str]): diff --git a/gallery/sketch/weather/parser.py b/gallery/sketch/weather/parser.py index 0fcce1b..6cf80b7 100644 --- a/gallery/sketch/weather/parser.py +++ b/gallery/sketch/weather/parser.py @@ -1,7 +1,6 @@ -from datetime import timedelta -from typing import Self, overload +from typing import Self -from gallery.sketch.weather.model import WeatherResponse, WeatherValue, WindDirection +from gallery.sketch.weather.model import WindDirection class ParseError(Exception): @@ -53,15 +52,3 @@ def parse_wind_direction(value: str | int | float) -> WindDirection | None: return _parse_wind_direction_str(value) else: return _parse_wind_direction_number(value) - - -@overload -def fix_dates_sequence(items: list[WeatherValue]): ... -@overload -def fix_dates_sequence(items: list[WeatherResponse]): ... -def fix_dates_sequence(items): - date = None - for item in items: - if date and (item.date - date).total_seconds() < 0: - item.date = date + timedelta(days=1) - date = item.date diff --git a/gallery/sketch/weather/util.py b/gallery/sketch/weather/util.py index 8388b3b..33ca093 100644 --- a/gallery/sketch/weather/util.py +++ b/gallery/sketch/weather/util.py @@ -1,8 +1,8 @@ import datetime import statistics -from typing import Counter, Literal +from typing import Counter, Literal, overload -from .model import Cloudness, Precipitation, WeatherValue +from .model import Cloudness, Precipitation, WeatherResponse, WeatherValue MergeMode = Literal["interval", "average"] @@ -64,3 +64,15 @@ def merge_weather_values( def convert_hPa_to_mmHg(value: int) -> int: return round(value / 1.333) + + +@overload +def fix_dates_sequence(items: list[WeatherValue]): ... +@overload +def fix_dates_sequence(items: list[WeatherResponse]): ... +def fix_dates_sequence(items): + date = None + for item in items: + if date and (item.date - date).total_seconds() < 0: + item.date = date + datetime.timedelta(days=1) + date = item.date