def taf(wxdata: TafData, units: Units) -> TafTrans: """ Translate the results of taf.parse Keys: Forecast, Min-Temp, Max-Temp Forecast keys: Wind, Visibility, Clouds, Altimeter, Wind-Shear, Turbulance, Icing, Other """ translations = {'forecast': []} for line in wxdata.forecast: trans = shared(line, units) trans['wind'] = wind(line.wind_direction, line.wind_speed, line.wind_gust, unit=units.wind_speed) trans['wind_shear'] = wind_shear(line.wind_shear, units.altitude, units.wind_speed) trans['turbulance'] = turb_ice(line.turbulance, units.altitude) trans['icing'] = turb_ice(line.icing, units.altitude) # Remove false 'Sky Clear' if line type is 'BECMG' if line.type == 'BECMG' and trans['clouds'] == 'Sky clear': trans['clouds'] = None translations['forecast'].append(TafLineTrans(**trans)) translations['min_temp'] = min_max_temp(wxdata.min_temp, units.temperature) translations['max_temp'] = min_max_temp(wxdata.max_temp, units.temperature) translations['remarks'] = remarks.translate(wxdata.remarks) return TafTrans(**translations)
def translate_taf(wxdata: TafData, units: Units) -> TafTrans: """Returns translations for a TafData object""" data = {"forecast": []} for line in wxdata.forecast: _data = _trans.current_shared(line, units) _data["wind"] = _trans.wind(line.wind_direction, line.wind_speed, line.wind_gust, unit=units.wind_speed) _data["wind_shear"] = wind_shear(line.wind_shear, units.altitude, units.wind_speed) _data["turbulence"] = turb_ice(line.turbulence, units.altitude) _data["icing"] = turb_ice(line.icing, units.altitude) # Remove false 'Sky Clear' if line type is 'BECMG' if line.type == "BECMG" and _data["clouds"] == "Sky clear": _data["clouds"] = None data["forecast"].append(TafLineTrans(**_data)) data["min_temp"] = min_max_temp(wxdata.min_temp, units.temperature) data["max_temp"] = min_max_temp(wxdata.max_temp, units.temperature) data["remarks"] = remarks.translate(wxdata.remarks) return TafTrans(**data)