refactor(weather): move fix_dates_sequence to util
This commit is contained in:
@@ -18,8 +18,8 @@ from gallery.sketch.weather.model import (
|
|||||||
WeatherValue,
|
WeatherValue,
|
||||||
WindDirection,
|
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 merge_weather_values
|
from gallery.sketch.weather.util import fix_dates_sequence, merge_weather_values
|
||||||
|
|
||||||
logger = logging.getLogger("gismeteo")
|
logger = logging.getLogger("gismeteo")
|
||||||
|
|
||||||
|
|||||||
@@ -19,7 +19,8 @@ from gallery.sketch.weather.model import (
|
|||||||
WeatherValue,
|
WeatherValue,
|
||||||
WindDirection,
|
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]):
|
class LocationNameParser(TagParser[str]):
|
||||||
|
|||||||
@@ -1,7 +1,6 @@
|
|||||||
from datetime import timedelta
|
from typing import Self
|
||||||
from typing import Self, overload
|
|
||||||
|
|
||||||
from gallery.sketch.weather.model import WeatherResponse, WeatherValue, WindDirection
|
from gallery.sketch.weather.model import WindDirection
|
||||||
|
|
||||||
|
|
||||||
class ParseError(Exception):
|
class ParseError(Exception):
|
||||||
@@ -53,15 +52,3 @@ def parse_wind_direction(value: str | int | float) -> WindDirection | None:
|
|||||||
return _parse_wind_direction_str(value)
|
return _parse_wind_direction_str(value)
|
||||||
else:
|
else:
|
||||||
return _parse_wind_direction_number(value)
|
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
|
|
||||||
|
|||||||
@@ -1,8 +1,8 @@
|
|||||||
import datetime
|
import datetime
|
||||||
import statistics
|
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"]
|
MergeMode = Literal["interval", "average"]
|
||||||
|
|
||||||
@@ -64,3 +64,15 @@ def merge_weather_values(
|
|||||||
|
|
||||||
def convert_hPa_to_mmHg(value: int) -> int:
|
def convert_hPa_to_mmHg(value: int) -> int:
|
||||||
return round(value / 1.333)
|
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
|
||||||
|
|||||||
Reference in New Issue
Block a user