Source code for python_awair.air_data

"""Wrapper class for awair airdata responses."""

from datetime import datetime
from typing import Any, Dict

from python_awair import const
from python_awair.indices import Indices
from python_awair.sensors import Sensors


[docs]class AirData: """Wrapper class for awair airdata responses.""" timestamp: datetime score: float sensors: Sensors indices: Indices def __init__(self, attributes: Dict[str, Any]) -> None: """Initialize from API data.""" self.timestamp = datetime.strptime(attributes["timestamp"], const.DATE_FORMAT) self.score = attributes["score"] self.sensors = Sensors( { sensor["comp"]: sensor["value"] for sensor in attributes.get("sensors", []) } ) self.indices = Indices( {index["comp"]: index["value"] for index in attributes.get("indices", [])} ) def __repr__(self) -> str: """Return a friendly representation.""" return ( f"<AirData@{self.timestamp}: " + f"score={round(self.score, 2)} sensors={self.sensors}>" )