fix(weather): fix parsed dates sequence

This commit is contained in:
2026-09-17 16:28:57 +03:00
parent d214849e2e
commit a12a81e26d
3 changed files with 20 additions and 4 deletions
+3 -1
View File
@@ -16,7 +16,7 @@ from gallery.sketch.weather.model import (
WeatherValue,
WindDirection,
)
from gallery.sketch.weather.parser import parse_wind_direction
from gallery.sketch.weather.parser import fix_dates_sequence, parse_wind_direction
from gallery.sketch.weather.util import merge_weather_values
logger = logging.getLogger("gismeteo")
@@ -214,6 +214,8 @@ class GismeteoParser(Parser[Context, WeatherResponse]):
values = [
merge_weather_values(values[i].date, values[i : i + n], "average") for i in range(0, len(values), n)
]
if data.period == "days":
fix_dates_sequence(values)
return WeatherResponse(
location=location,
date=data.date,
+2 -1
View File
@@ -19,7 +19,7 @@ from gallery.sketch.weather.model import (
WeatherValue,
WindDirection,
)
from gallery.sketch.weather.parser import parse_wind_direction
from gallery.sketch.weather.parser import fix_dates_sequence, parse_wind_direction
class LocationNameParser(TagParser[str]):
@@ -183,6 +183,7 @@ class RP5ForecastParser(Parser[str, list[WeatherResponse]]):
values=item_values,
)
)
fix_dates_sequence(responses)
return responses
+15 -2
View File
@@ -1,6 +1,7 @@
from typing import Self
from datetime import timedelta
from typing import Self, overload
from gallery.sketch.weather.model import WindDirection
from gallery.sketch.weather.model import WeatherResponse, WeatherValue, WindDirection
class ParseError(Exception):
@@ -52,3 +53,15 @@ 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