# -*- coding: utf-8 -*- """ Datenmodelle fuer das Weather-Plugin. Definiert WeatherData, ForecastDay und WeatherResult. """ from dataclasses import dataclass, field from datetime import date, datetime @dataclass class WeatherData: """ Aktuelle Wetterdaten. Attributes: location: Stadtname temperature: Temperatur in Grad Celsius feels_like: Gefuehlte Temperatur humidity: Luftfeuchtigkeit in Prozent description: Wetterbeschreibung (z.B. "Leichter Regen") wind_speed: Windgeschwindigkeit in km/h wind_direction: Windrichtung in Grad (0-360) precipitation: Niederschlag in mm cloud_cover: Bewoelkung in Prozent pressure: Luftdruck in hPa provider_name: Name des verwendeten Providers timestamp: Zeitpunkt der Messung raw_data: Original-Daten vom Provider """ location: str temperature: float feels_like: float | None humidity: int description: str wind_speed: float wind_direction: int precipitation: float cloud_cover: int | None pressure: float | None provider_name: str timestamp: datetime raw_data: dict = field(default_factory=dict) @dataclass class ForecastDay: """ Vorhersage fuer einen einzelnen Tag. Attributes: date: Datum der Vorhersage temp_min: Minimaltemperatur in Grad Celsius temp_max: Maximaltemperatur in Grad Celsius description: Wetterbeschreibung precipitation: Niederschlagssumme in mm wind_speed_max: Maximale Windgeschwindigkeit in km/h raw_data: Original-Daten vom Provider """ date: date temp_min: float temp_max: float description: str precipitation: float wind_speed_max: float raw_data: dict = field(default_factory=dict) @dataclass class WeatherResult: """ Komplettes Wetterergebnis mit aktuellem Wetter und Vorhersage. Attributes: current: Aktuelle Wetterdaten forecast: Vorhersage fuer die naechsten Tage fetched_at: Zeitpunkt des Abrufs """ current: WeatherData forecast: list[ForecastDay] fetched_at: datetime