def test_clouds(self):
     """
     Tests translating each cloud into a single string
     """
     self.assertEqual(translate.clouds(None), '')
     self.assertEqual(translate.clouds([]), 'Sky clear')
     for clouds, translation in (
         (['BKN','FEW020'], 'Few clouds at 2000ft'),
         (['OVC030','SCT100'], 'Overcast layer at 3000ft, Scattered clouds at 10000ft'),
         (['BKN015CB'], 'Broken layer at 1500ft (Cumulonimbus)'),
     ):
         clouds = [core.make_cloud(cloud) for cloud in clouds]
         self.assertEqual(translate.clouds(clouds), translation + ' - Reported AGL')
Exemple #2
0
 def test_clouds(self):
     """
     Tests translating each cloud into a single string
     """
     self.assertEqual(translate.clouds(None), '')
     self.assertEqual(translate.clouds([]), 'Sky clear')
     for clouds, translation in (
         (['BKN', 'FEW020'], 'Few clouds at 2000ft'),
         (['OVC030', 'SCT100'],
          'Overcast layer at 3000ft, Scattered clouds at 10000ft'),
         (['BKN015CB'], 'Broken layer at 1500ft (Cumulonimbus)'),
     ):
         clouds = [core.make_cloud(cloud) for cloud in clouds]
         self.assertEqual(translate.clouds(clouds),
                          translation + ' - Reported AGL')
Exemple #3
0
def taf_line(line: TafLineData, units: Units) -> str:
    """
    Convert TafLineData into a string for text-to-speech
    """
    speech = []
    start = type_and_times(line.type, line.start_time, line.end_time,
                           line.probability)
    if line.wind_direction and line.wind_speed:
        speech.append(
            wind(
                line.wind_direction,
                line.wind_speed,
                line.wind_gust,
                unit=units.wind_speed,
            ))
    if line.wind_shear:
        speech.append(
            wind_shear(line.wind_shear, units.altimeter, units.wind_speed))
    if line.visibility:
        speech.append(visibility(line.visibility, units.visibility))
    if line.altimeter:
        speech.append(altimeter(line.altimeter, units.altimeter))
    if line.other:
        speech.append(other(line.other))
    speech.append(
        translate.clouds(line.clouds,
                         units.altitude).replace(" - Reported AGL", ""))
    if line.turbulance:
        speech.append(translate.turb_ice(line.turbulance, units.altitude))
    if line.icing:
        speech.append(translate.turb_ice(line.icing, units.altitude))
    return start + " " + (". ".join([l
                                     for l in speech if l])).replace(",", ".")
Exemple #4
0
def metar(data: MetarData, units: Units) -> str:
    """
    Convert MetarData into a string for text-to-speech
    """
    speech = []
    if data.wind_direction and data.wind_speed:
        speech.append(
            wind(
                data.wind_direction,
                data.wind_speed,
                data.wind_gust,
                data.wind_variable_direction,
                units.wind_speed,
            ))
    if data.visibility:
        speech.append(visibility(data.visibility, units.visibility))
    if data.temperature:
        speech.append(
            temperature("Temperature", data.temperature, units.temperature))
    if data.dewpoint:
        speech.append(
            temperature("Dew point", data.dewpoint, units.temperature))
    if data.altimeter:
        speech.append(altimeter(data.altimeter, units.altimeter))
    if data.other:
        speech.append(other(data.other))
    speech.append(
        translate.clouds(data.clouds,
                         units.altitude).replace(" - Reported AGL", ""))
    return (". ".join([l for l in speech if l])).replace(",", ".")
Exemple #5
0
def metar(wxdata: {str: object}) -> str:
    """
    Convert wxdata into a string for text-to-speech
    """
    _data = deepcopy(wxdata)
    units = deepcopy(wxdata['Units'])
    speech = []
    if _data['Wind-Direction'] and _data['Wind-Speed']:
        speech.append(
            wind(_data['Wind-Direction'], _data['Wind-Speed'],
                 _data['Wind-Gust'], _data['Wind-Variable-Dir'],
                 units['Wind-Speed']))
    if _data['Visibility']:
        speech.append(visibility(_data['Visibility'], units['Visibility']))
    if _data['Temperature']:
        speech.append(
            temperature('Temperature', _data['Temperature'],
                        units['Temperature']))
    if _data['Dewpoint']:
        speech.append(
            temperature('Dew point', _data['Dewpoint'], units['Temperature']))
    if _data['Altimeter']:
        speech.append(altimeter(_data['Altimeter'], units['Altimeter']))
    if _data['Other-List']:
        speech.append(other(_data['Other-List']))
    speech.append(
        translate.clouds(_data['Cloud-List'],
                         units['Altitude']).replace(' - Reported AGL', ''))
    return ('. '.join([l for l in speech if l])).replace(',', '.')
Exemple #6
0
 def test_clouds(self):
     """
     Tests translating each cloud into a single string
     """
     self.assertEqual(translate.clouds(None), "")
     self.assertEqual(translate.clouds([]), "Sky clear")
     for clouds, translation in (
         (["BKN", "FEW020"], "Few clouds at 2000ft"),
         (
             ["OVC030", "SCT100"],
             "Overcast layer at 3000ft, Scattered clouds at 10000ft",
         ),
         (["BKN015CB"], "Broken layer at 1500ft (Cumulonimbus)"),
     ):
         clouds = [_core.make_cloud(cloud) for cloud in clouds]
         self.assertEqual(translate.clouds(clouds),
                          translation + " - Reported AGL")
Exemple #7
0
def metar(data: MetarData, units: Units) -> str:
    """
    Convert MetarData into a string for text-to-speech
    """
    speech = []
    if data.wind_direction and data.wind_speed:
        speech.append(wind(data.wind_direction, data.wind_speed,
                           data.wind_gust, data.wind_variable_direction,
                           units.wind_speed))
    if data.visibility:
        speech.append(visibility(data.visibility, units.visibility))
    if data.temperature:
        speech.append(temperature('Temperature', data.temperature, units.temperature))
    if data.dewpoint:
        speech.append(temperature('Dew point', data.dewpoint, units.temperature))
    if data.altimeter:
        speech.append(altimeter(data.altimeter, units.altimeter))
    if data.other:
        speech.append(other(data.other))
    speech.append(translate.clouds(data.clouds,
                                   units.altitude).replace(' - Reported AGL', ''))
    return ('. '.join([l for l in speech if l])).replace(',', '.')
Exemple #8
0
def taf_line(line: TafLineData, units: Units) -> str:
    """
    Convert TafLineData into a string for text-to-speech
    """
    speech = []
    start = type_and_times(line.type, line.start_time, line.end_time, line.probability)
    if line.wind_direction and line.wind_speed:
        speech.append(wind(line.wind_direction, line.wind_speed,
                           line.wind_gust, unit=units.wind_speed))
    if line.wind_shear:
        speech.append(wind_shear(line.wind_shear, units.altimeter, units.wind_speed))
    if line.visibility:
        speech.append(visibility(line.visibility, units.visibility))
    if line.altimeter:
        speech.append(altimeter(line.altimeter, units.altimeter))
    if line.other:
        speech.append(other(line.other))
    speech.append(translate.clouds(line.clouds,
                                   units.altitude).replace(' - Reported AGL', ''))
    if line.turbulance:
        speech.append(translate.turb_ice(line.turbulance, units.altitude))
    if line.icing:
        speech.append(translate.turb_ice(line.icing, units.altitude))
    return start + ' ' + ('. '.join([l for l in speech if l])).replace(',', '.')