コード例 #1
0
 def test_parse_tmp_dewpoint(self):
     parser = MetarParserDefault()
     tokens = '06/04 A2990'.split()
     res = parser.parse_temp_dewpoint(tokens)
     assert_equals(parser.parsed_metar["temp"], '06')
     assert_equals(parser.parsed_metar["dewpoint"], '04')
     assert_equals(res, ['A2990'])
コード例 #2
0
 def test_parse_temp_dewpoint_missing(self):
   parser = MetarParserDefault()
   tokens = 'A2990 RMK'.split()
   res = parser.parse_temp_dewpoint(tokens)
   assert_equals(parser.parsed_metar["temp"], '')
   assert_equals(parser.parsed_metar["dewpoint"], '')
   assert_equals(res, ['A2990', 'RMK'])
コード例 #3
0
 def test_parse_temp_dewpoint_missing(self):
     parser = MetarParserDefault()
     tokens = 'A2990 RMK'.split()
     res = parser.parse_temp_dewpoint(tokens)
     assert_equals(parser.parsed_metar["temp"], '')
     assert_equals(parser.parsed_metar["dewpoint"], '')
     assert_equals(res, ['A2990', 'RMK'])
コード例 #4
0
 def test_parse_rmk_peak_wind(self):
     parser = MetarParserDefault()
     tokens = 'PK WND 20032/25 WSHFT 1715'.split()
     res = parser.parse_rmk_peak_wind(tokens, tokens.index('PK'))
     assert_equals(parser.parsed_metar["peak_wind"], 'PK WND 20032/25')
     assert_equals(
         res, ['PK', 'WND', '20032/25'])  # Should return processed tokens
コード例 #5
0
 def test_parse_tmp_dewpoint(self):
   parser = MetarParserDefault()
   tokens = '06/04 A2990'.split()
   res = parser.parse_temp_dewpoint(tokens)
   assert_equals(parser.parsed_metar["temp"], '06')
   assert_equals(parser.parsed_metar["dewpoint"], '04')
   assert_equals(res, ['A2990'])
コード例 #6
0
 def test_parse_remarks_invalid_token_similar_to_pressure_rise_fall_rapid_isnt_parsed(
         self):
     parser = MetarParserDefault()
     tokens = 'RMK WSHFT 1715 PRESasdf'.split()
     res = parser.parse_remarks(tokens)
     assert_equals(parser.parsed_metar["pressure_rise_fall_rapid"], '')
     assert_equals(parser.parsed_metar["remarks"], 'PRESasdf')
コード例 #7
0
 def test_parse_sky_condition(self):
     parser = MetarParserDefault()
     tokens = 'BKN015 OVC025 06/04'.split()
     res = parser.parse_sky_condition(tokens)
     assert_equals(parser.parsed_metar["sky_condition"],
                   ['BKN015', 'OVC025'])
     assert_equals(res, ['06/04'])
コード例 #8
0
 def test_parse_rvr_missing(self):
   ### If the RVR is missing, the MetarParser's 'rvr' field should
   ### remain unset and nothing stripped from the METAR
   parser = MetarParserDefault()
   tokens = 'VRB005 -RA BR'.split()
   res = parser.parse_rvr(tokens)
   assert_equals(parser.parsed_metar["rvr"], '')
   assert_equals(res, ['VRB005', '-RA', 'BR'])
コード例 #9
0
 def test_parse_visibility_missing(self):
   ### If the visibility field is missing, the MetarParser's 'vis' field
   ### should remain unset and nothing stripped from the METAR
   parser = MetarParserDefault()
   tokens = '21016G24KT R11/P6000FT'.split()
   res = parser.parse_visibility(tokens)
   assert_equals(parser.parsed_metar["vis"], '')
   assert_equals(res, ['21016G24KT', 'R11/P6000FT'])
コード例 #10
0
 def test_parse_winds_variable(self):
     parser = MetarParserDefault()
     tokens = '18015KT 150V210 10SM'.split()
     # Make sure both the wind info and direction variation get picked up
     res = parser.parse_wind_dir_speed(tokens)
     res = parser.parse_wind_dir_variation(res)
     assert_equals(parser.parsed_metar["wind_dir_speed"], '18015KT')
     assert_equals(parser.parsed_metar["wind_dir_variation"], '150V210')
コード例 #11
0
 def test_parse_winds_variable(self):
   parser = MetarParserDefault()
   tokens = '18015KT 150V210 10SM'.split()
   # Make sure both the wind info and direction variation get picked up
   res = parser.parse_wind_dir_speed(tokens)
   res = parser.parse_wind_dir_variation(res)
   assert_equals(parser.parsed_metar["wind_dir_speed"], '18015KT')
   assert_equals(parser.parsed_metar["wind_dir_variation"], '150V210')
コード例 #12
0
 def test_parse_metar_without_sky_cond_token(self):
   metar = 'METAR KCVO 010755Z 17007KT 10SM 05/03 A3041 RMK AO1'
   parser = MetarParserDefault()
   res = parser.parse_tokens(metar.split())
   assert_equals(parser.parsed_metar["vis"], '10SM')
   assert_equals(parser.parsed_metar["sky_condition"], [])
   assert_equals(parser.parsed_metar["temp"], '05')
   assert_equals(parser.parsed_metar["dewpoint"], '03')
コード例 #13
0
 def test_parse_rvr_missing(self):
     ### If the RVR is missing, the MetarParser's 'rvr' field should
     ### remain unset and nothing stripped from the METAR
     parser = MetarParserDefault()
     tokens = 'VRB005 -RA BR'.split()
     res = parser.parse_rvr(tokens)
     assert_equals(parser.parsed_metar["rvr"], '')
     assert_equals(res, ['VRB005', '-RA', 'BR'])
コード例 #14
0
 def test_parse_automated_obs_flag_without_flag(self):
     ### If the AUTO flag is missing from the METAR, the obs_datetime
     ### field should be false and nothing stripped from the METAR
     parser = MetarParserDefault()
     tokens = '290653Z 00000KT'.split()
     res = parser.parse_automated_obs_flag(tokens)
     assert_equals(parser.parsed_metar["mod_auto"], False)
     assert_equals(res, ['290653Z', '00000KT'])
コード例 #15
0
 def test_parse_automated_obs_flag_without_flag(self):
   ### If the AUTO flag is missing from the METAR, the obs_datetime
   ### field should be false and nothing stripped from the METAR
   parser = MetarParserDefault()
   tokens = '290653Z 00000KT'.split()
   res = parser.parse_automated_obs_flag(tokens)
   assert_equals(parser.parsed_metar["mod_auto"], False)
   assert_equals(res, ['290653Z', '00000KT'])
コード例 #16
0
 def test_parse_metar_without_sky_cond_token(self):
     metar = 'METAR KCVO 010755Z 17007KT 10SM 05/03 A3041 RMK AO1'
     parser = MetarParserDefault()
     res = parser.parse_tokens(metar.split())
     assert_equals(parser.parsed_metar["vis"], '10SM')
     assert_equals(parser.parsed_metar["sky_condition"], [])
     assert_equals(parser.parsed_metar["temp"], '05')
     assert_equals(parser.parsed_metar["dewpoint"], '03')
コード例 #17
0
 def test_parse_visibility_missing(self):
     ### If the visibility field is missing, the MetarParser's 'vis' field
     ### should remain unset and nothing stripped from the METAR
     parser = MetarParserDefault()
     tokens = '21016G24KT R11/P6000FT'.split()
     res = parser.parse_visibility(tokens)
     assert_equals(parser.parsed_metar["vis"], '')
     assert_equals(res, ['21016G24KT', 'R11/P6000FT'])
コード例 #18
0
 def test_parse_rvr_missing_with_similar_wx_phenomena(self):
     ### The RVR field begins with 'R', but the following WX phenomena
     ### section can also start with 'R' in the case of moderate rain: 'RA'.
     ### This test ensures we don't mis-identify 'RA' as the RVR field.
     parser = MetarParserDefault()
     tokens = '18015KT RA'.split()
     res = parser.parse_wind_dir_speed(tokens)
     res = parser.parse_rvr(res)
     assert_equals(parser.parsed_metar["rvr"], '')
     assert_equals(res, ['RA'])
コード例 #19
0
 def test_parse_rvr_missing_with_similar_wx_phenomena(self):
   ### The RVR field begins with 'R', but the following WX phenomena
   ### section can also start with 'R' in the case of moderate rain: 'RA'.
   ### This test ensures we don't mis-identify 'RA' as the RVR field.
   parser = MetarParserDefault()
   tokens = '18015KT RA'.split()
   res = parser.parse_wind_dir_speed(tokens)
   res = parser.parse_rvr(res)
   assert_equals(parser.parsed_metar["rvr"], '')
   assert_equals(res, ['RA'])
コード例 #20
0
 def test_parse_winds_variable_missing(self):
   ### If the variable winds section is missing we shouldn't set the
   ### MetarParser's wind_dir_variation field, or strip anything
   parser = MetarParserDefault()
   tokens = '18015KT 10SM'.split()
   # Include the wind_dir_speed parseor for a sanity check
   res = parser.parse_wind_dir_speed(tokens)
   res = parser.parse_wind_dir_variation(res)
   assert_equals(parser.parsed_metar["wind_dir_speed"], '18015KT')
   assert_equals(parser.parsed_metar["wind_dir_variation"], '')
   assert_equals(res, ['10SM'])
コード例 #21
0
 def test_parse_winds_variable_missing(self):
     ### If the variable winds section is missing we shouldn't set the
     ### MetarParser's wind_dir_variation field, or strip anything
     parser = MetarParserDefault()
     tokens = '18015KT 10SM'.split()
     # Include the wind_dir_speed parseor for a sanity check
     res = parser.parse_wind_dir_speed(tokens)
     res = parser.parse_wind_dir_variation(res)
     assert_equals(parser.parsed_metar["wind_dir_speed"], '18015KT')
     assert_equals(parser.parsed_metar["wind_dir_variation"], '')
     assert_equals(res, ['10SM'])
コード例 #22
0
 def test_parse_metar_khio(self):
   metar = 'METAR KHIO 290653Z AUTO 00000KT 10SM FEW032 OVC041 06/05 ' \
           'A3017 RMK AO2 RAB35E44 SLP219 P0000 T00560050'
   parser = MetarParserDefault()
   res = parser.parse_tokens(metar.split())
   assert_equals(parser.parsed_metar["is_special_report"], False)
   assert_equals(parser.parsed_metar["icao_id"], 'KHIO')
   assert_equals(parser.parsed_metar["obs_datetime"], '290653Z')
   assert_equals(parser.parsed_metar["mod_auto"], True)
   assert_equals(parser.parsed_metar["wind_dir_speed"], '00000KT')
   assert_equals(parser.parsed_metar["vis"], '10SM')
   assert_equals(parser.parsed_metar["wx_phenomena"], [])
   assert_equals(parser.parsed_metar["sky_condition"], ['FEW032', 'OVC041'])
   assert_equals(parser.parsed_metar["temp"], '06')
   assert_equals(parser.parsed_metar["dewpoint"], '05')
   assert_equals(parser.parsed_metar["altimeter"], '3017')
   assert_equals(parser.parsed_metar["stn_type"], 'AO2')
   assert_equals(parser.parsed_metar["sea_level_pressure"], 'SLP219')
   assert_equals(parser.parsed_metar["hourly_temp_dewpoint"], 'T00560050')
   assert_equals(parser.parsed_metar["remarks"], 'RAB35E44 P0000')
   assert_equals(parser.parsed_metar["misc"], '')
コード例 #23
0
 def test_parse_metar_khio(self):
     metar = 'METAR KHIO 290653Z AUTO 00000KT 10SM FEW032 OVC041 06/05 ' \
             'A3017 RMK AO2 RAB35E44 SLP219 P0000 T00560050'
     parser = MetarParserDefault()
     res = parser.parse_tokens(metar.split())
     assert_equals(parser.parsed_metar["is_special_report"], False)
     assert_equals(parser.parsed_metar["icao_id"], 'KHIO')
     assert_equals(parser.parsed_metar["obs_datetime"], '290653Z')
     assert_equals(parser.parsed_metar["mod_auto"], True)
     assert_equals(parser.parsed_metar["wind_dir_speed"], '00000KT')
     assert_equals(parser.parsed_metar["vis"], '10SM')
     assert_equals(parser.parsed_metar["wx_phenomena"], [])
     assert_equals(parser.parsed_metar["sky_condition"],
                   ['FEW032', 'OVC041'])
     assert_equals(parser.parsed_metar["temp"], '06')
     assert_equals(parser.parsed_metar["dewpoint"], '05')
     assert_equals(parser.parsed_metar["altimeter"], '3017')
     assert_equals(parser.parsed_metar["stn_type"], 'AO2')
     assert_equals(parser.parsed_metar["sea_level_pressure"], 'SLP219')
     assert_equals(parser.parsed_metar["hourly_temp_dewpoint"], 'T00560050')
     assert_equals(parser.parsed_metar["remarks"], 'RAB35E44 P0000')
     assert_equals(parser.parsed_metar["misc"], '')
コード例 #24
0
 def test_parse_remarks_invalid_token_similar_to_pressure_rise_fall_rapid_isnt_parsed(self):
   parser = MetarParserDefault()
   tokens = 'RMK WSHFT 1715 PRESasdf'.split()
   res = parser.parse_remarks(tokens)
   assert_equals(parser.parsed_metar["pressure_rise_fall_rapid"], '')
   assert_equals(parser.parsed_metar["remarks"], 'PRESasdf')
コード例 #25
0
 def test_parse_remarks_with_peak_wind(self):
   parser = MetarParserDefault()
   tokens = 'RMK PK WND 20032/25 WSHFT 1715'.split()
   res = parser.parse_remarks(tokens)
   assert_equals(parser.parsed_metar["peak_wind"], 'PK WND 20032/25')
コード例 #26
0
 def test_parse_remarks_with_maint_reqd(self):
     parser = MetarParserDefault()
     tokens = 'RMK WSHFT 1715 PRESFR SLP125 $'.split()
     res = parser.parse_remarks(tokens)
     assert_equals(parser.parsed_metar["maint_reqd"], True)
コード例 #27
0
 def test_parse_remarks_with_maint_reqd(self):
   parser = MetarParserDefault()
   tokens = 'RMK WSHFT 1715 PRESFR SLP125 $'.split()
   res = parser.parse_remarks(tokens)
   assert_equals(parser.parsed_metar["maint_reqd"], True)
コード例 #28
0
 def test_parse_remarks_with_wind_shift_with_frontal_passage(self):
     parser = MetarParserDefault()
     tokens = 'RMK PK WND 20032/25 WSHFT 1715 FROPA'.split()
     res = parser.parse_remarks(tokens)
     assert_equals(parser.parsed_metar["wind_shift"], 'WSHFT 1715 FROPA')
コード例 #29
0
 def test_parse_datetime(self):
   parser = MetarParserDefault()
   tokens = '290653Z AUTO'.split()
   res = parser.parse_datetime(tokens)
   assert_equals(parser.parsed_metar["obs_datetime"], '290653Z')
   assert_equals(res[0], 'AUTO')
コード例 #30
0
 def test_parse_metar_header_without_metar_header(self):
   parser = MetarParserDefault()
   tokens = 'KHIO 290653Z'.split()
   res = parser.parse_metar_header(tokens)
   assert_equals(res, ['KHIO', '290653Z'])
コード例 #31
0
 def test_parse_remarks_with_peak_wind(self):
     parser = MetarParserDefault()
     tokens = 'RMK PK WND 20032/25 WSHFT 1715'.split()
     res = parser.parse_remarks(tokens)
     assert_equals(parser.parsed_metar["peak_wind"], 'PK WND 20032/25')
コード例 #32
0
 def test_parse_winds_light_variable(self):
   parser = MetarParserDefault()
   tokens = 'VRB005KT'.split()
   res = parser.parse_wind_dir_speed(tokens)
   assert_equals(parser.parsed_metar["wind_dir_speed"], 'VRB005KT')
コード例 #33
0
 def test_parse_winds_basic(self):
   parser = MetarParserDefault()
   tokens = '18004KT 10SM'.split()
   res = parser.parse_wind_dir_speed(tokens)
   assert_equals(parser.parsed_metar["wind_dir_speed"], '18004KT')
コード例 #34
0
 def test_parse_winds_calm(self):
   parser = MetarParserDefault()
   tokens = '00000KT 10SM'.split()
   res = parser.parse_wind_dir_speed(tokens)
   assert_equals(parser.parsed_metar["wind_dir_speed"], '00000KT')
   assert_equals(res, ['10SM'])
コード例 #35
0
 def test_parse_remarks_with_sea_level_pressure(self):
   parser = MetarParserDefault()
   tokens = 'RMK WSHFT 1715 PRESFR SLP125'.split()
   res = parser.parse_remarks(tokens)
   assert_equals(parser.parsed_metar["sea_level_pressure"], 'SLP125')
コード例 #36
0
 def test_parse_automated_obs_flag_with_flag(self):
   parser = MetarParserDefault()
   tokens = 'AUTO 00000KT'.split()
   res = parser.parse_automated_obs_flag(tokens)
   assert_equals(parser.parsed_metar["mod_auto"], True)
   assert_equals(res[0], '00000KT')
コード例 #37
0
 def test_parse_rmk_peak_wind(self):
   parser = MetarParserDefault()
   tokens = 'PK WND 20032/25 WSHFT 1715'.split()
   res = parser.parse_rmk_peak_wind(tokens, tokens.index('PK'))
   assert_equals(parser.parsed_metar["peak_wind"], 'PK WND 20032/25')
   assert_equals(res, ['PK', 'WND', '20032/25']) # Should return processed tokens
コード例 #38
0
 def test_parse_rmk_sea_level_pressure(self):
   parser = MetarParserDefault()
   res = parser.parse_rmk_sea_level_pressure('SLP125')
   assert_equals(parser.parsed_metar["sea_level_pressure"], 'SLP125')
   assert_equals(res, 'SLP125')
コード例 #39
0
 def test_parse_remarks_hourly_temp_dewpoint(self):
   parser = MetarParserDefault()
   tokens = 'RMK AO2 SLP062 T02000106 $'.split()
   res = parser.parse_remarks(tokens)
   assert_equals(parser.parsed_metar["hourly_temp_dewpoint"], "T02000106")
コード例 #40
0
 def test_parse_metar_header_with_metar_header(self):
   parser = MetarParserDefault()
   tokens = 'METAR KHIO'.split()
   res = parser.parse_metar_header(tokens)
   assert_equals(res[0], 'KHIO')
コード例 #41
0
 def test_parse_rmk_wind_shift_with_frontal_passage(self):
     parser = MetarParserDefault()
     tokens = 'WSHFT 1715 FROPA'.split()
     res = parser.parse_rmk_wind_shift(tokens, tokens.index('WSHFT'))
     assert_equals(parser.parsed_metar["wind_shift"], 'WSHFT 1715 FROPA')
     assert_equals(res, ['WSHFT', '1715', 'FROPA'])
コード例 #42
0
 def test_parse_remarks_with_sea_level_pressure(self):
     parser = MetarParserDefault()
     tokens = 'RMK WSHFT 1715 PRESFR SLP125'.split()
     res = parser.parse_remarks(tokens)
     assert_equals(parser.parsed_metar["sea_level_pressure"], 'SLP125')
コード例 #43
0
 def test_parse_rmk_pressure_fall_rapid(self):
     parser = MetarParserDefault()
     res = parser.parse_rmk_pressure_rise_fall_rapid('PRESFR')
     assert_equals(parser.parsed_metar["pressure_rise_fall_rapid"],
                   'PRESFR')
     assert_equals(res, 'PRESFR')
コード例 #44
0
 def test_parse_icao_id(self):
   parser = MetarParserDefault()
   tokens = 'KHIO 290653Z'.split()
   res = parser.parse_icao_id(tokens)
   assert_equals(parser.parsed_metar["icao_id"], 'KHIO')
   assert_equals(res[0], '290653Z')
コード例 #45
0
 def test_parse_remarks_with_pressure_fall_rapid(self):
     parser = MetarParserDefault()
     tokens = 'RMK WSHFT 1715 PRESFR'.split()
     res = parser.parse_remarks(tokens)
     assert_equals(parser.parsed_metar["pressure_rise_fall_rapid"],
                   'PRESFR')
コード例 #46
0
 def test_parse_metar_header_with_metar_header(self):
     parser = MetarParserDefault()
     tokens = 'METAR KHIO'.split()
     res = parser.parse_metar_header(tokens)
     assert_equals(res[0], 'KHIO')
コード例 #47
0
 def test_parse_rmk_sea_level_pressure(self):
     parser = MetarParserDefault()
     res = parser.parse_rmk_sea_level_pressure('SLP125')
     assert_equals(parser.parsed_metar["sea_level_pressure"], 'SLP125')
     assert_equals(res, 'SLP125')
コード例 #48
0
 def test_parse_icao_id(self):
     parser = MetarParserDefault()
     tokens = 'KHIO 290653Z'.split()
     res = parser.parse_icao_id(tokens)
     assert_equals(parser.parsed_metar["icao_id"], 'KHIO')
     assert_equals(res[0], '290653Z')
コード例 #49
0
 def test_parse_rmk_maint_reqd(self):
     parser = MetarParserDefault()
     res = parser.parse_rmk_maint_reqd('$')
     assert_equals(parser.parsed_metar["maint_reqd"], True)
     assert_equals(res, '$')
コード例 #50
0
 def test_parse_automated_obs_flag_with_flag(self):
     parser = MetarParserDefault()
     tokens = 'AUTO 00000KT'.split()
     res = parser.parse_automated_obs_flag(tokens)
     assert_equals(parser.parsed_metar["mod_auto"], True)
     assert_equals(res[0], '00000KT')
コード例 #51
0
 def test_parse_remarks_hourly_temp_dewpoint(self):
     parser = MetarParserDefault()
     tokens = 'RMK AO2 SLP062 T02000106 $'.split()
     res = parser.parse_remarks(tokens)
     assert_equals(parser.parsed_metar["hourly_temp_dewpoint"], "T02000106")
コード例 #52
0
 def test_parse_rmk_maint_reqd(self):
   parser = MetarParserDefault()
   res = parser.parse_rmk_maint_reqd('$')
   assert_equals(parser.parsed_metar["maint_reqd"], True)
   assert_equals(res, '$')
コード例 #53
0
 def test_parse_metar_header_without_metar_header(self):
     parser = MetarParserDefault()
     tokens = 'KHIO 290653Z'.split()
     res = parser.parse_metar_header(tokens)
     assert_equals(res, ['KHIO', '290653Z'])
コード例 #54
0
 def test_parse_winds_calm(self):
     parser = MetarParserDefault()
     tokens = '00000KT 10SM'.split()
     res = parser.parse_wind_dir_speed(tokens)
     assert_equals(parser.parsed_metar["wind_dir_speed"], '00000KT')
     assert_equals(res, ['10SM'])
コード例 #55
0
 def test_parse_datetime(self):
     parser = MetarParserDefault()
     tokens = '290653Z AUTO'.split()
     res = parser.parse_datetime(tokens)
     assert_equals(parser.parsed_metar["obs_datetime"], '290653Z')
     assert_equals(res[0], 'AUTO')
コード例 #56
0
 def test_parse_rmk_pressure_fall_rapid(self):
   parser = MetarParserDefault()
   res = parser.parse_rmk_pressure_rise_fall_rapid('PRESFR')
   assert_equals(parser.parsed_metar["pressure_rise_fall_rapid"], 'PRESFR')
   assert_equals(res, 'PRESFR')
コード例 #57
0
 def test_parse_rmk_wind_shift_with_frontal_passage(self):
   parser = MetarParserDefault()
   tokens = 'WSHFT 1715 FROPA'.split()
   res = parser.parse_rmk_wind_shift(tokens, tokens.index('WSHFT'))
   assert_equals(parser.parsed_metar["wind_shift"], 'WSHFT 1715 FROPA')
   assert_equals(res, ['WSHFT', '1715', 'FROPA'])
コード例 #58
0
 def test_parse_remarks_with_pressure_fall_rapid(self):
   parser = MetarParserDefault()
   tokens = 'RMK WSHFT 1715 PRESFR'.split()
   res = parser.parse_remarks(tokens)
   assert_equals(parser.parsed_metar["pressure_rise_fall_rapid"], 'PRESFR')
コード例 #59
0
 def test_parse_winds_light_variable(self):
     parser = MetarParserDefault()
     tokens = 'VRB005KT'.split()
     res = parser.parse_wind_dir_speed(tokens)
     assert_equals(parser.parsed_metar["wind_dir_speed"], 'VRB005KT')
コード例 #60
0
 def test_parse_remarks_with_wind_shift_with_frontal_passage(self):
   parser = MetarParserDefault()
   tokens = 'RMK PK WND 20032/25 WSHFT 1715 FROPA'.split()
   res = parser.parse_remarks(tokens)
   assert_equals(parser.parsed_metar["wind_shift"], 'WSHFT 1715 FROPA')