Ejemplo n.º 1
0
def translate_metar(wxdata: MetarData, units: Units) -> MetarTrans:
    """Returns translations for a MetarData object"""
    data = _trans.current_shared(wxdata, units)
    data["wind"] = _trans.wind(
        wxdata.wind_direction,
        wxdata.wind_speed,
        wxdata.wind_gust,
        wxdata.wind_variable_direction,
        units.wind_speed,
    )
    data["temperature"] = _trans.temperature(wxdata.temperature,
                                             units.temperature)
    data["dewpoint"] = _trans.temperature(wxdata.dewpoint, units.temperature)
    data["remarks"] = remarks.translate(wxdata.remarks)
    return MetarTrans(**data)
Ejemplo n.º 2
0
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)
Ejemplo n.º 3
0
 def test_translate(self):
     """
     Tests extracting translations from the remarks string
     """
     for rmk, out in (
         (
             "RMK AO1 ACFT MSHP SLP137 T02720183 BINOVC",
             {
                 "ACFT MSHP": "Aircraft mishap",
                 "AO1": "Automated with no precipitation sensor",
                 "BINOVC": "Breaks in Overcast",
                 "SLP137": "Sea level pressure: 1013.7 hPa",
                 "T02720183": "Temperature 27.2°C and dewpoint 18.3°C",
             },
         ),
         (
             "RMK AO2 51014 21045 60720 70016",
             {
                 "21045": "6-hour minimum temperature -4.5°C",
                 "51014":
                 "3-hour pressure difference: +/- 1.4 mb - Increasing, then steady",
                 "60720":
                 "Precipitation in the last 3 hours: 7 in. - 6 hours: 20 in.",
                 "70016": "Precipitation in the last 24 hours: 16 in.",
                 "AO2": "Automated with precipitation sensor",
             },
         ),
         (
             "RMK 91234 TSB20 P0123 NOSPECI $",
             {
                 "$": "ASOS requires maintenance",
                 "91234": "Duration of sunlight: 1234 minutes",
                 "NOSPECI": "No SPECI reports taken",
                 "P0123": "Hourly precipitation: 1.23 in.",
                 "TSB20": "Thunderstorm began at :20",
             },
         ),
     ):
         self.assertEqual(remarks.translate(rmk), out)