Пример #1
0
 def test_taf(self):
     """
     Tests end-to-end TAF translation
     """
     units = structs.Units(**static.core.NA_UNITS)
     line_data = {
         "altimeter": core.make_number("29.92", "2992"),
         "clouds": [core.make_cloud("BKN015CB")],
         "icing": ["611005"],
         "other": [],
         "turbulence": ["540553"],
         "visibility": core.make_number("3"),
         "wind_direction": core.make_number("360"),
         "wind_gust": core.make_number("20"),
         "wind_shear": "WS020/07040KT",
         "wind_speed": core.make_number("12"),
         "wx_codes": get_wx_codes(["+RA"])[1],
     }
     line_data.update({
         k: ""
         for k in (
             "raw",
             "end_time",
             "start_time",
             "transition_start",
             "probability",
             "type",
             "flight_rules",
             "sanitized",
         )
     })
     data = {"max_temp": "TX20/1518Z", "min_temp": "TN00/00", "remarks": ""}
     data.update({
         k: ""
         for k in ("raw", "station", "time", "start_time", "end_time")
     })
     data = structs.TafData(forecast=[structs.TafLineData(**line_data)],
                            **data)
     line_trans = structs.TafLineTrans(
         altimeter="29.92 inHg (1013 hPa)",
         clouds="Broken layer at 1500ft (Cumulonimbus) - Reported AGL",
         icing="Light icing from 10000ft to 15000ft",
         turbulence=
         "Occasional moderate turbulence in clouds from 5500ft to 8500ft",
         visibility="3sm (4.8km)",
         wind_shear="Wind shear 2000ft from 070 at 40kt",
         wind="N-360 at 12kt gusting to 20kt",
         wx_codes="Heavy Rain",
     )
     trans = structs.TafTrans(
         forecast=[line_trans],
         max_temp="Maximum temperature of 20°C (68°F) at 15-18:00Z",
         min_temp="Minimum temperature of 0°C (32°F) at 00:00Z",
         remarks={},
     )
     translated = translate.taf.translate_taf(data, units)
     self.assertIsInstance(translated, structs.TafTrans)
     for line in translated.forecast:
         self.assertIsInstance(line, structs.TafLineTrans)
     self.assertEqual(translated, trans)
Пример #2
0
 def test_taf(self):
     """
     Tests end-to-end TAF translation
     """
     units = structs.Units(**static.NA_UNITS)
     line_data = {
         'altimeter': core.make_number('2992'),
         'clouds': [core.make_cloud('BKN015CB')],
         'icing': ['611005'],
         'other': ['+RA'],
         'turbulance': ['540553'],
         'visibility': core.make_number('3'),
         'wind_direction': core.make_number('360'),
         'wind_gust': core.make_number('20'),
         'wind_shear': 'WS020/07040KT',
         'wind_speed': core.make_number('12')
     }
     line_data.update({
         k: ''
         for k in ('raw', 'end_time', 'start_time', 'probability', 'type',
                   'flight_rules', 'sanitized')
     })
     data = {'max_temp': 'TX20/1518Z', 'min_temp': 'TN00/00', 'remarks': ''}
     data.update({
         k: ''
         for k in ('raw', 'station', 'time', 'start_time', 'end_time')
     })
     data = structs.TafData(forecast=[structs.TafLineData(**line_data)],
                            **data)
     line_trans = structs.TafLineTrans(
         altimeter='29.92 inHg (1013 hPa)',
         clouds='Broken layer at 1500ft (Cumulonimbus) - Reported AGL',
         icing='Light icing from 10000ft to 15000ft',
         other='Heavy Rain',
         turbulance=
         'Occasional moderate turbulence in clouds from 5500ft to 8500ft',
         visibility='3sm (4.8km)',
         wind_shear='Wind shear 2000ft from 070 at 40kt',
         wind='N-360 at 12kt gusting to 20kt')
     trans = structs.TafTrans(
         forecast=[line_trans],
         max_temp='Maximum temperature of 20°C (68°F) at 15-18:00Z',
         min_temp='Minimum temperature of 0°C (32°F) at 00:00Z',
         remarks={})
     translated = translate.taf(data, units)
     self.assertIsInstance(translated, structs.TafTrans)
     for line in translated.forecast:
         self.assertIsInstance(line, structs.TafLineTrans)
     self.assertEqual(translated, trans)
Пример #3
0
 def test_taf(self):
     """
     Tests converting a TafData report into a single spoken string
     """
     units = structs.Units(**static.core.NA_UNITS)
     empty_line = {
         k: None
         for k in structs.TafLineData.__dataclass_fields__.keys()
     }
     forecast = [
         structs.TafLineData(**{
             **empty_line,
             **line
         }) for line in (
             {
                 "type": "FROM",
                 "start_time": core.make_timestamp("0410Z"),
                 "end_time": core.make_timestamp("0414Z"),
                 "visibility": core.make_number("3"),
                 "wind_direction": core.make_number("360"),
                 "wind_gust": core.make_number("20"),
                 "wind_speed": core.make_number("12"),
             },
             {
                 "type": "PROB",
                 "probability": core.make_number("45"),
                 "start_time": core.make_timestamp("0412Z"),
                 "end_time": core.make_timestamp("0414Z"),
                 "visibility": core.make_number("M1/4"),
             },
         )
     ]
     taf = structs.TafData(
         raw=None,
         remarks=None,
         station=None,
         time=None,
         forecast=forecast,
         start_time=core.make_timestamp("0410Z"),
         end_time=core.make_timestamp("0414Z"),
     )
     ret = speech.taf(taf, units)
     spoken = (
         f"Starting on {taf.start_time.dt.strftime('%B')} 4th - From 10 to 14 zulu, "
         "Winds three six zero at 12kt gusting to 20kt. Visibility three miles. "
         r"From 12 to 14 zulu, there's a 45% chance for Visibility "
         "less than one quarter of a mile")
     self.assertIsInstance(ret, str)
     self.assertEqual(ret, spoken)
Пример #4
0
 def test_taf(self):
     """
     Tests converting a TafData report into a single spoken string
     """
     units = structs.Units(**static.NA_UNITS)
     empty_line = {
         k: None
         for k in structs.TafLineData.__dataclass_fields__.keys()
     }
     forecast = [
         structs.TafLineData(**{
             **empty_line,
             **line
         }) for line in (
             {
                 'type': 'FROM',
                 'start_time': core.make_timestamp('0410Z'),
                 'end_time': core.make_timestamp('0414Z'),
                 'visibility': core.make_number('3'),
                 'wind_direction': core.make_number('360'),
                 'wind_gust': core.make_number('20'),
                 'wind_speed': core.make_number('12'),
             },
             {
                 'type': 'PROB',
                 'probability': core.make_number('45'),
                 'start_time': core.make_timestamp('0412Z'),
                 'end_time': core.make_timestamp('0414Z'),
                 'visibility': core.make_number('M1/4'),
             },
         )
     ]
     taf = structs.TafData(raw=None,
                           remarks=None,
                           station=None,
                           time=None,
                           forecast=forecast,
                           start_time=core.make_timestamp('0410Z'),
                           end_time=core.make_timestamp('0414Z'))
     ret = speech.taf(taf, units)
     spoken = (
         f"Starting on {taf.start_time.dt.strftime('%B')} 4th - From 10 to 14 zulu, "
         "Winds three six zero at 12kt gusting to 20kt. Visibility three miles. "
         r"From 12 to 14 zulu, there's a 45% chance for Visibility "
         "less than one quarter of a mile")
     self.assertIsInstance(ret, str)
     self.assertEqual(ret, spoken)