Source code for aixweather.imports.utils_import

"""
includes a class that reads metadata from weather station
"""

from unidecode import unidecode


[docs]class MetaData: """ A class for storing metadata information about a weather station. Attributes: station_name (str): The name of the weather station. station_id (str): The ID (DWD or DWD MOSMIX ID) of the weather station. altitude (float): The altitude of the weather station in meters. latitude (float): The latitude of the weather station in degree. longitude (float): The longitude of the weather station in degree. input_source (str): The source of input data for the station. """ def __init__(self, **kwargs: str): self._station_name: str = "UnknownStationName" self.station_id: str = "UnknownStationID" self._altitude: float = None self._latitude: float = None self._longitude: float = None self.input_source: str = "UnknownInputSource" self.__dict__.update(kwargs) @property def station_name(self): return self._station_name @station_name.setter def station_name(self, value): """avoid special chars""" self._station_name = unidecode(value) @property def altitude(self) -> float: return self._altitude @altitude.setter def altitude(self, value: float) -> None: self._altitude = round(self._ensure_float(value), 5) @property def latitude(self) -> float: return self._latitude @latitude.setter def latitude(self, value: float) -> None: self._latitude = round(self._ensure_float(value), 5) @property def longitude(self) -> float: return self._longitude @longitude.setter def longitude(self, value: float) -> None: self._longitude = round(self._ensure_float(value), 5) def _ensure_float(self, value): if value is not None: try: return float(value) except: raise ValueError(f"Value must be of type float, not {type(value)}")