[docs]classPressureUnit(Enum):"""Pressure unit for barometric sensor values."""HECTOPASCAL=1#: Hecto-pascal hPaINCH_MERCURY=2#: Inches of mercury in Hg
[docs]classRainUnit(Enum):"""Rain quantity unit."""MILLIMETER=1#: Millimeter mmINCH=2#: Inch
[docs]classWindSpeedUnit(Enum):"""Wind speed unit."""METER_PER_SECOND=1#: Meter per seconds m/sMILES_PER_HOUR=2#: Miles per hour mi/h
[docs]@dataclassclassUnits:"""Units for conditions (defaults: imperial system)."""temperature:TemperatureUnit=TemperatureUnit.FAHRENHEIT#: Temperature unitpressure:PressureUnit=PressureUnit.INCH_MERCURY#: Pressure unitrain:RainUnit=RainUnit.INCH#: Rain unitwind_speed:WindSpeedUnit=WindSpeedUnit.MILES_PER_HOUR#: Wind speed unit
[docs]defconvert_temperature(fahrenheit:float|None,unit:TemperatureUnit)->float|None:"""Convert imperial temperature (Fahrenheit) to selected unit."""iffahrenheitisNone:returnNoneifunit==TemperatureUnit.CELSIUS:return(fahrenheit-32)*5/9returnfahrenheit
[docs]defconvert_pressure(inhg:float|None,unit:PressureUnit)->float|None:"""Convert imperial pressure (inches of mercury) to selected unit."""ifinhgisNone:returnNoneifunit==PressureUnit.HECTOPASCAL:returninhg*33.86389returninhg
[docs]defconvert_rain(inch:float|None,unit:RainUnit)->float|None:"""Convert imperial rain amount (inch) to selected unit."""ifinchisNone:returnNoneifunit==RainUnit.MILLIMETER:returninch*25.4returninch
[docs]defconvert_wind_speed(mph:float|None,unit:WindSpeedUnit)->float|None:"""Convert imperial wind speed (miles per hour) to selected unit."""ifmphisNone:returnNoneifunit==WindSpeedUnit.METER_PER_SECOND:returnmph*0.44704returnmph