diff --git a/avwx/structs.py b/avwx/structs.py index 11c4a84..83355a3 100644 --- a/avwx/structs.py +++ b/avwx/structs.py @@ -484,6 +484,7 @@ class NbmPeriod: sleet: Optional[Number] = None rain: Optional[Number] = None solar_radiation: Optional[Number] = None + wave_height: Optional[Number] = None @dataclass @@ -495,7 +496,6 @@ class NbhsShared(NbmPeriod): transport_wind_direction: Optional[Number] = None transport_wind_speed: Optional[Number] = None haines: Optional[List[Number]] = None - wave_height: Optional[Number] = None @dataclass @@ -533,7 +533,6 @@ class NbePeriod(NbmPeriod): snow_amount_12: Optional[Number] = None snow_amount_24: Optional[Number] = None icing_amount_12: Optional[Number] = None - wave_height: Optional[Number] = None @dataclass diff --git a/tests/forecast/data/nbx/KJFK.json b/tests/forecast/data/nbx/KJFK.json index 24c2111..cc5233f 100644 --- a/tests/forecast/data/nbx/KJFK.json +++ b/tests/forecast/data/nbx/KJFK.json @@ -1,12 +1,12 @@ { - "created": "2023-10-17", + "created": "2023-10-30", "data": { "forecast": [ { "dewpoint": { - "repr": "44", - "spoken": "four four", - "value": 44 + "repr": "46", + "spoken": "four six", + "value": 46 }, "freezing_precip": { "repr": "0", @@ -19,34 +19,30 @@ "value": 0 }, "precip_amount_12": { - "repr": "0", - "spoken": "zero", - "value": 0 - }, - "precip_amount_24": { - "repr": "0", - "spoken": "zero", - "value": 0 + "repr": "1", + "spoken": "zero point zero one", + "value": 0.01 }, + "precip_amount_24": null, "precip_chance_12": { - "repr": "3", - "spoken": "three", - "value": 3 + "repr": "28", + "spoken": "two eight", + "value": 28 }, "precip_duration": { - "repr": "0", - "spoken": "zero", - "value": 0 + "repr": "1", + "spoken": "one", + "value": 1 }, "rain": { - "repr": "0", - "spoken": "zero", - "value": 0 + "repr": "50", + "spoken": "five zero", + "value": 50 }, "sky_cover": { - "repr": "32", - "spoken": "three two", - "value": 32 + "repr": "78", + "spoken": "seven eight", + "value": 78 }, "sleet": { "repr": "0", @@ -54,9 +50,9 @@ "value": 0 }, "snow": { - "repr": "0", - "spoken": "zero", - "value": 0 + "repr": "1", + "spoken": "one", + "value": 1 }, "snow_amount_12": { "repr": "0", @@ -70,35 +66,36 @@ "value": 1 }, "temperature": { - "repr": "50", - "spoken": "five zero", - "value": 50 + "repr": "51", + "spoken": "five one", + "value": 51 }, "time": { - "dt": "2023-10-17T12:00:00+00:00", - "repr": "12" + "dt": "2023-10-31T00:00:00+00:00", + "repr": "00" }, + "wave_height": null, "wind_direction": { - "repr": "32", - "spoken": "three two zero", - "value": 320 + "repr": "1", + "spoken": "one zero", + "value": 10 }, "wind_gust": { - "repr": "11", - "spoken": "one one", - "value": 11 + "repr": "23", + "spoken": "two three", + "value": 23 }, "wind_speed": { - "repr": "7", - "spoken": "seven", - "value": 7 + "repr": "15", + "spoken": "one five", + "value": 15 } }, { "dewpoint": { - "repr": "47", - "spoken": "four seven", - "value": 47 + "repr": "42", + "spoken": "four two", + "value": 42 }, "freezing_precip": { "repr": "0", @@ -111,30 +108,34 @@ "value": 0 }, "precip_amount_12": { - "repr": "0", - "spoken": "zero", - "value": 0 + "repr": "31", + "spoken": "zero point three one", + "value": 0.31 + }, + "precip_amount_24": { + "repr": "32", + "spoken": "zero point three two", + "value": 0.32 }, - "precip_amount_24": null, "precip_chance_12": { - "repr": "4", - "spoken": "four", - "value": 4 + "repr": "48", + "spoken": "four eight", + "value": 48 }, "precip_duration": { - "repr": "0", - "spoken": "zero", - "value": 0 + "repr": "5", + "spoken": "five", + "value": 5 }, "rain": { - "repr": "1", - "spoken": "one", - "value": 1 + "repr": "45", + "spoken": "four five", + "value": 45 }, "sky_cover": { - "repr": "43", - "spoken": "four three", - "value": 43 + "repr": "80", + "spoken": "eight zero", + "value": 80 }, "sleet": { "repr": "0", @@ -153,40 +154,41 @@ }, "snow_level": null, "solar_radiation": { - "repr": "34", - "spoken": "three four", - "value": 34 + "repr": "0", + "spoken": "zero", + "value": 0 }, "temperature": { - "repr": "56", - "spoken": "five six", - "value": 56 + "repr": "46", + "spoken": "four six", + "value": 46 }, "time": { - "dt": "2023-10-18T00:00:00+00:00", - "repr": "00" + "dt": "2023-10-31T12:00:00+00:00", + "repr": "12" }, + "wave_height": null, "wind_direction": { - "repr": "20", - "spoken": "two zero zero", - "value": 200 + "repr": "35", + "spoken": "three five zero", + "value": 350 }, "wind_gust": { - "repr": "12", - "spoken": "one two", - "value": 12 + "repr": "25", + "spoken": "two five", + "value": 25 }, "wind_speed": { - "repr": "8", - "spoken": "eight", - "value": 8 + "repr": "17", + "spoken": "one seven", + "value": 17 } }, { "dewpoint": { - "repr": "48", - "spoken": "four eight", - "value": 48 + "repr": "36", + "spoken": "three six", + "value": 36 }, "freezing_precip": { "repr": "0", @@ -199,34 +201,30 @@ "value": 0 }, "precip_amount_12": { - "repr": "0", - "spoken": "zero", - "value": 0 - }, - "precip_amount_24": { - "repr": "0", - "spoken": "zero", - "value": 0 + "repr": "24", + "spoken": "zero point two four", + "value": 0.24 }, + "precip_amount_24": null, "precip_chance_12": { - "repr": "8", - "spoken": "eight", - "value": 8 + "repr": "37", + "spoken": "three seven", + "value": 37 }, "precip_duration": { - "repr": "0", - "spoken": "zero", - "value": 0 - }, - "rain": { "repr": "4", "spoken": "four", "value": 4 }, + "rain": { + "repr": "44", + "spoken": "four four", + "value": 44 + }, "sky_cover": { - "repr": "62", - "spoken": "six two", - "value": 62 + "repr": "51", + "spoken": "five one", + "value": 51 }, "sleet": { "repr": "0", @@ -245,40 +243,41 @@ }, "snow_level": null, "solar_radiation": { - "repr": "1", - "spoken": "one", - "value": 1 + "repr": "23", + "spoken": "two three", + "value": 23 }, "temperature": { - "repr": "52", - "spoken": "five two", - "value": 52 + "repr": "46", + "spoken": "four six", + "value": 46 }, "time": { - "dt": "2023-10-18T12:00:00+00:00", - "repr": "12" + "dt": "2023-11-01T00:00:00+00:00", + "repr": "00" }, + "wave_height": null, "wind_direction": { - "repr": "26", - "spoken": "two six zero", - "value": 260 + "repr": "33", + "spoken": "three three zero", + "value": 330 }, "wind_gust": { - "repr": "11", - "spoken": "one one", - "value": 11 + "repr": "26", + "spoken": "two six", + "value": 26 }, "wind_speed": { - "repr": "8", - "spoken": "eight", - "value": 8 + "repr": "17", + "spoken": "one seven", + "value": 17 } }, { "dewpoint": { - "repr": "49", - "spoken": "four nine", - "value": 49 + "repr": "37", + "spoken": "three seven", + "value": 37 }, "freezing_precip": { "repr": "0", @@ -291,30 +290,34 @@ "value": 0 }, "precip_amount_12": { - "repr": "0", - "spoken": "zero", - "value": 0 + "repr": "24", + "spoken": "zero point two four", + "value": 0.24 + }, + "precip_amount_24": { + "repr": "48", + "spoken": "zero point four eight", + "value": 0.48 }, - "precip_amount_24": null, "precip_chance_12": { - "repr": "6", - "spoken": "six", - "value": 6 + "repr": "37", + "spoken": "three seven", + "value": 37 }, "precip_duration": { - "repr": "0", - "spoken": "zero", - "value": 0 + "repr": "4", + "spoken": "four", + "value": 4 }, "rain": { - "repr": "5", - "spoken": "five", - "value": 5 + "repr": "25", + "spoken": "two five", + "value": 25 }, "sky_cover": { - "repr": "44", - "spoken": "four four", - "value": 44 + "repr": "57", + "spoken": "five seven", + "value": 57 }, "sleet": { "repr": "0", @@ -322,9 +325,9 @@ "value": 0 }, "snow": { - "repr": "0", - "spoken": "zero", - "value": 0 + "repr": "2", + "spoken": "two", + "value": 2 }, "snow_amount_12": { "repr": "0", @@ -333,40 +336,41 @@ }, "snow_level": null, "solar_radiation": { - "repr": "32", - "spoken": "three two", - "value": 32 + "repr": "1", + "spoken": "one", + "value": 1 }, "temperature": { - "repr": "58", - "spoken": "five eight", - "value": 58 + "repr": "43", + "spoken": "four three", + "value": 43 }, "time": { - "dt": "2023-10-19T00:00:00+00:00", - "repr": "00" + "dt": "2023-11-01T12:00:00+00:00", + "repr": "12" }, + "wave_height": null, "wind_direction": { - "repr": "24", - "spoken": "two four zero", - "value": 240 + "repr": "30", + "spoken": "three zero zero", + "value": 300 }, "wind_gust": { - "repr": "15", - "spoken": "one five", - "value": 15 + "repr": "24", + "spoken": "two four", + "value": 24 }, "wind_speed": { - "repr": "10", - "spoken": "one zero", - "value": 10 + "repr": "16", + "spoken": "one six", + "value": 16 } }, { "dewpoint": { - "repr": "48", - "spoken": "four eight", - "value": 48 + "repr": "38", + "spoken": "three eight", + "value": 38 }, "freezing_precip": { "repr": "0", @@ -379,34 +383,30 @@ "value": 0 }, "precip_amount_12": { - "repr": "0", - "spoken": "zero", - "value": 0 - }, - "precip_amount_24": { - "repr": "0", - "spoken": "zero", - "value": 0 + "repr": "19", + "spoken": "zero point one nine", + "value": 0.19 }, + "precip_amount_24": null, "precip_chance_12": { - "repr": "11", - "spoken": "one one", - "value": 11 + "repr": "35", + "spoken": "three five", + "value": 35 }, "precip_duration": { - "repr": "0", - "spoken": "zero", - "value": 0 + "repr": "4", + "spoken": "four", + "value": 4 }, "rain": { - "repr": "7", - "spoken": "seven", - "value": 7 + "repr": "36", + "spoken": "three six", + "value": 36 }, "sky_cover": { - "repr": "46", - "spoken": "four six", - "value": 46 + "repr": "68", + "spoken": "six eight", + "value": 68 }, "sleet": { "repr": "0", @@ -425,95 +425,109 @@ }, "snow_level": null, "solar_radiation": { - "repr": "1", - "spoken": "one", - "value": 1 + "repr": "25", + "spoken": "two five", + "value": 25 }, "temperature": { - "repr": "54", - "spoken": "five four", - "value": 54 + "repr": "47", + "spoken": "four seven", + "value": 47 }, "time": { - "dt": "2023-10-19T12:00:00+00:00", - "repr": "12" + "dt": "2023-11-02T00:00:00+00:00", + "repr": "00" }, + "wave_height": null, "wind_direction": { - "repr": "32", - "spoken": "three two zero", - "value": 320 + "repr": "30", + "spoken": "three zero zero", + "value": 300 }, "wind_gust": { - "repr": "12", - "spoken": "one two", - "value": 12 + "repr": "27", + "spoken": "two seven", + "value": 27 }, "wind_speed": { - "repr": "8", - "spoken": "eight", - "value": 8 + "repr": "18", + "spoken": "one eight", + "value": 18 } }, { "dewpoint": { - "repr": "5", - "spoken": "five", - "value": 5 + "repr": "3", + "spoken": "three", + "value": 3 }, "freezing_precip": null, "icing_amount_12": null, - "precip_amount_12": null, - "precip_amount_24": null, - "precip_chance_12": { - "repr": "1", - "spoken": "one", - "value": 1 + "precip_amount_12": { + "repr": "2", + "spoken": "zero point zero two", + "value": 0.02 }, - "precip_duration": null, - "rain": null, - "sky_cover": { + "precip_amount_24": { "repr": "4", - "spoken": "four", - "value": 4 + "spoken": "zero point zero four", + "value": 0.04 }, - "sleet": null, - "snow": null, - "snow_amount_12": null, - "snow_level": null, - "solar_radiation": { + "precip_chance_12": { "repr": "3", "spoken": "three", "value": 3 }, - "temperature": { + "precip_duration": null, + "rain": { + "repr": "2", + "spoken": "two", + "value": 2 + }, + "sky_cover": { "repr": "5", "spoken": "five", "value": 5 }, + "sleet": null, + "snow": null, + "snow_amount_12": null, + "snow_level": null, + "solar_radiation": null, + "temperature": { + "repr": "4", + "spoken": "four", + "value": 4 + }, "time": { - "dt": "2023-10-20T00:00:00+00:00", - "repr": "00" + "dt": "2023-11-02T12:00:00+00:00", + "repr": "12" }, + "wave_height": null, "wind_direction": { "repr": "2", "spoken": "two zero", "value": 20 }, "wind_gust": { + "repr": "2", + "spoken": "two", + "value": 2 + }, + "wind_speed": { "repr": "1", "spoken": "one", "value": 1 - }, - "wind_speed": null + } } ], - "raw": "KJFK NBM V4.1 NBX GUIDANCE 10/17/2023 0500 UTC\nWED 25 |THU 26 |FRI 27 |SAT 28\nUTC 12 |00 12 |00 12 |00\nFHR 199|211 223|235 247|259\nTXN 47| 62 51| 64 52| 65\nXND 2| 3 3| 3 1| 1\nTMP 50| 56 52| 58 54| 59\nTSD 3| 4 4| 4 3| 1\nDPT 44| 47 48| 49 48| 52\nDSD 3| 4 4| 4 3| 0\nSKY 32| 43 62| 44 46| 45\nSSD 16| 26 16| 21 21| 21\nWDR 32| 20 26| 24 32| 21\nWSP 7| 8 8| 10 8| 9\nWSD 1| 2 1| 2 1| 2\nGST 11| 12 11| 15 12| 13\nGSD 1| 2 2| 2 2| 4\nP12 3| 4 8| 6 11| 10\nQ12 0| 0 0| 0 0| 0\nQ24 0| 0| 0|\nDUR 0| 0 0| 0 0| 0\nPZR 0| 0 0| 0 0| 0\nPSN 0| 0 0| 0 0| 0\nPPL 0| 0 0| 0 0| 0\nPRA 0| 1 4| 5 7| 7\nS12 0| 0 0| 0 0| 0\nI12 0| 0 0| 0 0| 0\nSOL 1| 34 1| 32 1| 31", + "raw": "KJFK NBM V4.1 NBX GUIDANCE 10/30/2023 1700 UTC\nWED 08| THU 09| FRI 10\nUTC 00 12 |00 12 |00 12\nFHR 199 211|223 235|247 259\nTXN 58 44| 54 41| 52 41\nXND 3 6| 3 3| 3 4\nTMP 51 46| 46 43| 47 43\nTSD 5 7| 6 5| 4 5\nDPT 46 42| 36 37| 38 37\nDSD 5 7| 6 5| 4 5\nSKY 78 80| 51 57| 68 51\nSSD 14 16| 31 27| 10 23\nWDR 1 35| 33 30| 30 29\nWSP 15 17| 17 16| 18 17\nWSD 5 6| 4 3| 4 4\nGST 23 25| 26 24| 27 25\nGSD 5 8| 4 1| 4 2\nP12 28 48| 37 37| 35 35\nQ12 1 31| 24 24| 19 21\nQ24 32| 48| 40\nDUR 1 5| 4 4| 4 4\nPZR 0 0| 0 0| 0 0\nPSN 1 0| 0 2| 0 0\nPPL 0 0| 0 0| 0 0\nPRA 50 45| 44 25| 36 25\nS12 0 0| 0 0| 0 0\nI12 0 0| 0 0| 0 0\nSOL 1 0| 23 1| 25 1", "remarks": null, - "sanitized": "KJFK NBM V4.1 NBX GUIDANCE 10/17/2023 0500 UTC\nWED 25 |THU 26 |FRI 27 |SAT 28\nUTC 12 |00 12 |00 12 |00\nFHR 199|211 223|235 247|259\nTXN 47| 62 51| 64 52| 65\nXND 2| 3 3| 3 1| 1\nTMP 50| 56 52| 58 54| 59\nTSD 3| 4 4| 4 3| 1\nDPT 44| 47 48| 49 48| 52\nDSD 3| 4 4| 4 3| 0\nSKY 32| 43 62| 44 46| 45\nSSD 16| 26 16| 21 21| 21\nWDR 32| 20 26| 24 32| 21\nWSP 7| 8 8| 10 8| 9\nWSD 1| 2 1| 2 1| 2\nGST 11| 12 11| 15 12| 13\nGSD 1| 2 2| 2 2| 4\nP12 3| 4 8| 6 11| 10\nQ12 0| 0 0| 0 0| 0\nQ24 0| 0| 0|\nDUR 0| 0 0| 0 0| 0\nPZR 0| 0 0| 0 0| 0\nPSN 0| 0 0| 0 0| 0\nPPL 0| 0 0| 0 0| 0\nPRA 0| 1 4| 5 7| 7\nS12 0| 0 0| 0 0| 0\nI12 0| 0 0| 0 0| 0\nSOL 1| 34 1| 32 1| 31", + "sanitized": "KJFK NBM V4.1 NBX GUIDANCE 10/30/2023 1700 UTC\nWED 08| THU 09| FRI 10\nUTC 00 12 |00 12 |00 12\nFHR 199 211|223 235|247 259\nTXN 58 44| 54 41| 52 41\nXND 3 6| 3 3| 3 4\nTMP 51 46| 46 43| 47 43\nTSD 5 7| 6 5| 4 5\nDPT 46 42| 36 37| 38 37\nDSD 5 7| 6 5| 4 5\nSKY 78 80| 51 57| 68 51\nSSD 14 16| 31 27| 10 23\nWDR 1 35| 33 30| 30 29\nWSP 15 17| 17 16| 18 17\nWSD 5 6| 4 3| 4 4\nGST 23 25| 26 24| 27 25\nGSD 5 8| 4 1| 4 2\nP12 28 48| 37 37| 35 35\nQ12 1 31| 24 24| 19 21\nQ24 32| 48| 40\nDUR 1 5| 4 4| 4 4\nPZR 0 0| 0 0| 0 0\nPSN 1 0| 0 2| 0 0\nPPL 0 0| 0 0| 0 0\nPRA 50 45| 44 25| 36 25\nS12 0 0| 0 0| 0 0\nI12 0 0| 0 0| 0 0\nSOL 1 0| 23 1| 25 1", "station": "KJFK", "time": { - "dt": "2023-10-17T05:00:00+00:00", - "repr": "10/17/2023 0500" + "dt": "2023-10-30T17:00:00+00:00", + "repr": "10/30/2023 1700" } }, "icao": "KJFK", diff --git a/tests/forecast/data/nbx/KMCO.json b/tests/forecast/data/nbx/KMCO.json index 9c62606..d91006e 100644 --- a/tests/forecast/data/nbx/KMCO.json +++ b/tests/forecast/data/nbx/KMCO.json @@ -1,12 +1,12 @@ { - "created": "2023-10-17", + "created": "2023-10-30", "data": { "forecast": [ { "dewpoint": { - "repr": "64", - "spoken": "six four", - "value": 64 + "repr": "66", + "spoken": "six six", + "value": 66 }, "freezing_precip": { "repr": "0", @@ -19,34 +19,30 @@ "value": 0 }, "precip_amount_12": { - "repr": "0", - "spoken": "zero", - "value": 0 - }, - "precip_amount_24": { - "repr": "0", - "spoken": "zero", - "value": 0 + "repr": "4", + "spoken": "zero point zero four", + "value": 0.04 }, + "precip_amount_24": null, "precip_chance_12": { + "repr": "25", + "spoken": "two five", + "value": 25 + }, + "precip_duration": { "repr": "3", "spoken": "three", "value": 3 }, - "precip_duration": { - "repr": "0", - "spoken": "zero", - "value": 0 - }, "rain": { - "repr": "5", - "spoken": "five", - "value": 5 + "repr": "23", + "spoken": "two three", + "value": 23 }, "sky_cover": { - "repr": "31", - "spoken": "three one", - "value": 31 + "repr": "39", + "spoken": "three nine", + "value": 39 }, "sleet": { "repr": "0", @@ -65,28 +61,29 @@ }, "snow_level": null, "solar_radiation": { - "repr": "0", - "spoken": "zero", - "value": 0 + "repr": "41", + "spoken": "four one", + "value": 41 }, "temperature": { - "repr": "70", - "spoken": "seven zero", - "value": 70 + "repr": "73", + "spoken": "seven three", + "value": 73 }, "time": { - "dt": "2023-10-17T12:00:00+00:00", - "repr": "12" + "dt": "2023-10-31T00:00:00+00:00", + "repr": "00" }, + "wave_height": null, "wind_direction": { - "repr": "6", - "spoken": "six zero", - "value": 60 + "repr": "30", + "spoken": "three zero zero", + "value": 300 }, "wind_gust": { - "repr": "14", - "spoken": "one four", - "value": 14 + "repr": "16", + "spoken": "one six", + "value": 16 }, "wind_speed": { "repr": "10", @@ -115,26 +112,30 @@ "spoken": "zero", "value": 0 }, - "precip_amount_24": null, + "precip_amount_24": { + "repr": "4", + "spoken": "zero point zero four", + "value": 0.04 + }, "precip_chance_12": { - "repr": "7", - "spoken": "seven", - "value": 7 + "repr": "13", + "spoken": "one three", + "value": 13 }, "precip_duration": { - "repr": "0", - "spoken": "zero", - "value": 0 - }, - "rain": { "repr": "1", "spoken": "one", "value": 1 }, + "rain": { + "repr": "6", + "spoken": "six", + "value": 6 + }, "sky_cover": { - "repr": "39", - "spoken": "three nine", - "value": 39 + "repr": "37", + "spoken": "three seven", + "value": 37 }, "sleet": { "repr": "0", @@ -153,40 +154,41 @@ }, "snow_level": null, "solar_radiation": { - "repr": "29", - "spoken": "two nine", - "value": 29 + "repr": "0", + "spoken": "zero", + "value": 0 }, "temperature": { - "repr": "74", - "spoken": "seven four", - "value": 74 + "repr": "67", + "spoken": "six seven", + "value": 67 }, "time": { - "dt": "2023-10-18T00:00:00+00:00", - "repr": "00" + "dt": "2023-10-31T12:00:00+00:00", + "repr": "12" }, + "wave_height": null, "wind_direction": { - "repr": "6", - "spoken": "six zero", - "value": 60 + "repr": "34", + "spoken": "three four zero", + "value": 340 }, "wind_gust": { - "repr": "19", - "spoken": "one nine", - "value": 19 + "repr": "12", + "spoken": "one two", + "value": 12 }, "wind_speed": { - "repr": "13", - "spoken": "one three", - "value": 13 + "repr": "8", + "spoken": "eight", + "value": 8 } }, { "dewpoint": { - "repr": "65", - "spoken": "six five", - "value": 65 + "repr": "61", + "spoken": "six one", + "value": 61 }, "freezing_precip": { "repr": "0", @@ -203,30 +205,26 @@ "spoken": "zero", "value": 0 }, - "precip_amount_24": { - "repr": "0", - "spoken": "zero", - "value": 0 - }, + "precip_amount_24": null, "precip_chance_12": { - "repr": "3", - "spoken": "three", - "value": 3 + "repr": "16", + "spoken": "one six", + "value": 16 }, "precip_duration": { - "repr": "0", - "spoken": "zero", - "value": 0 + "repr": "1", + "spoken": "one", + "value": 1 }, "rain": { - "repr": "2", - "spoken": "two", - "value": 2 + "repr": "8", + "spoken": "eight", + "value": 8 }, "sky_cover": { - "repr": "26", - "spoken": "two six", - "value": 26 + "repr": "19", + "spoken": "one nine", + "value": 19 }, "sleet": { "repr": "0", @@ -245,40 +243,41 @@ }, "snow_level": null, "solar_radiation": { - "repr": "1", - "spoken": "one", - "value": 1 + "repr": "42", + "spoken": "four two", + "value": 42 }, "temperature": { - "repr": "70", - "spoken": "seven zero", - "value": 70 + "repr": "71", + "spoken": "seven one", + "value": 71 }, "time": { - "dt": "2023-10-18T12:00:00+00:00", - "repr": "12" + "dt": "2023-11-01T00:00:00+00:00", + "repr": "00" }, + "wave_height": null, "wind_direction": { "repr": "5", "spoken": "five zero", "value": 50 }, "wind_gust": { - "repr": "14", - "spoken": "one four", - "value": 14 + "repr": "15", + "spoken": "one five", + "value": 15 }, "wind_speed": { - "repr": "9", - "spoken": "nine", - "value": 9 + "repr": "10", + "spoken": "one zero", + "value": 10 } }, { "dewpoint": { - "repr": "66", - "spoken": "six six", - "value": 66 + "repr": "59", + "spoken": "five nine", + "value": 59 }, "freezing_precip": { "repr": "0", @@ -295,26 +294,30 @@ "spoken": "zero", "value": 0 }, - "precip_amount_24": null, + "precip_amount_24": { + "repr": "0", + "spoken": "zero", + "value": 0 + }, "precip_chance_12": { "repr": "7", "spoken": "seven", "value": 7 }, "precip_duration": { - "repr": "0", - "spoken": "zero", - "value": 0 + "repr": "1", + "spoken": "one", + "value": 1 }, "rain": { - "repr": "8", - "spoken": "eight", - "value": 8 + "repr": "1", + "spoken": "one", + "value": 1 }, "sky_cover": { - "repr": "32", - "spoken": "three two", - "value": 32 + "repr": "18", + "spoken": "one eight", + "value": 18 }, "sleet": { "repr": "0", @@ -333,40 +336,41 @@ }, "snow_level": null, "solar_radiation": { - "repr": "42", - "spoken": "four two", - "value": 42 + "repr": "0", + "spoken": "zero", + "value": 0 }, "temperature": { - "repr": "74", - "spoken": "seven four", - "value": 74 + "repr": "64", + "spoken": "six four", + "value": 64 }, "time": { - "dt": "2023-10-19T00:00:00+00:00", - "repr": "00" + "dt": "2023-11-01T12:00:00+00:00", + "repr": "12" }, + "wave_height": null, "wind_direction": { - "repr": "6", - "spoken": "six zero", - "value": 60 + "repr": "36", + "spoken": "three six zero", + "value": 360 }, "wind_gust": { - "repr": "21", - "spoken": "two one", - "value": 21 + "repr": "8", + "spoken": "eight", + "value": 8 }, "wind_speed": { - "repr": "14", - "spoken": "one four", - "value": 14 + "repr": "6", + "spoken": "six", + "value": 6 } }, { "dewpoint": { - "repr": "67", - "spoken": "six seven", - "value": 67 + "repr": "59", + "spoken": "five nine", + "value": 59 }, "freezing_precip": { "repr": "0", @@ -383,15 +387,11 @@ "spoken": "zero", "value": 0 }, - "precip_amount_24": { - "repr": "0", - "spoken": "zero", - "value": 0 - }, + "precip_amount_24": null, "precip_chance_12": { - "repr": "3", - "spoken": "three", - "value": 3 + "repr": "12", + "spoken": "one two", + "value": 12 }, "precip_duration": { "repr": "1", @@ -399,14 +399,14 @@ "value": 1 }, "rain": { - "repr": "1", - "spoken": "one", - "value": 1 + "repr": "10", + "spoken": "one zero", + "value": 10 }, "sky_cover": { - "repr": "31", - "spoken": "three one", - "value": 31 + "repr": "19", + "spoken": "one nine", + "value": 19 }, "sleet": { "repr": "0", @@ -425,91 +425,97 @@ }, "snow_level": null, "solar_radiation": { - "repr": "0", - "spoken": "zero", - "value": 0 + "repr": "40", + "spoken": "four zero", + "value": 40 }, "temperature": { - "repr": "71", - "spoken": "seven one", - "value": 71 + "repr": "70", + "spoken": "seven zero", + "value": 70 }, "time": { - "dt": "2023-10-19T12:00:00+00:00", - "repr": "12" + "dt": "2023-11-02T00:00:00+00:00", + "repr": "00" }, + "wave_height": null, "wind_direction": { "repr": "5", "spoken": "five zero", "value": 50 }, "wind_gust": { - "repr": "13", - "spoken": "one three", - "value": 13 + "repr": "15", + "spoken": "one five", + "value": 15 }, "wind_speed": { - "repr": "9", - "spoken": "nine", - "value": 9 + "repr": "10", + "spoken": "one zero", + "value": 10 } }, { "dewpoint": { - "repr": "6", - "spoken": "six", - "value": 6 + "repr": "5", + "spoken": "five", + "value": 5 }, "freezing_precip": null, "icing_amount_12": null, "precip_amount_12": null, "precip_amount_24": null, - "precip_chance_12": null, + "precip_chance_12": { + "repr": "1", + "spoken": "one", + "value": 1 + }, "precip_duration": null, - "rain": null, + "rain": { + "repr": "1", + "spoken": "one", + "value": 1 + }, "sky_cover": { - "repr": "4", - "spoken": "four", - "value": 4 + "repr": "2", + "spoken": "two", + "value": 2 }, "sleet": null, "snow": null, "snow_amount_12": null, "snow_level": null, - "solar_radiation": { - "repr": "3", - "spoken": "three", - "value": 3 - }, + "solar_radiation": null, "temperature": { - "repr": "7", - "spoken": "seven", - "value": 7 + "repr": "6", + "spoken": "six", + "value": 6 }, "time": { - "dt": "2023-10-20T00:00:00+00:00", - "repr": "00" + "dt": "2023-11-02T12:00:00+00:00", + "repr": "12" + }, + "wave_height": null, + "wind_direction": { + "repr": "3", + "spoken": "three zero", + "value": 30 }, - "wind_direction": null, "wind_gust": { "repr": "1", "spoken": "one", "value": 1 }, - "wind_speed": { - "repr": "1", - "spoken": "one", - "value": 1 - } + "wind_speed": null } ], - "raw": "KMCO NBM V4.1 NBX GUIDANCE 10/17/2023 0500 UTC\nWED 25 |THU 26 |FRI 27 |SAT 28\nUTC 12 |00 12 |00 12 |00\nFHR 199|211 223|235 247|259\nTXN 69| 83 69| 84 70| 83\nXND 3| 2 2| 3 1| 1\nTMP 70| 74 70| 74 71| 74\nTSD 3| 2 2| 2 2| 2\nDPT 64| 63 65| 66 67| 65\nDSD 2| 2 2| 2 2| 2\nSKY 31| 39 26| 32 31| 40\nSSD 17| 24 16| 8 27| 17\nWDR 6| 6 5| 6 5| 6\nWSP 10| 13 9| 14 9| 11\nWSD 2| 1 1| 1 1| 2\nGST 14| 19 14| 21 13| 17\nGSD 3| 4 3| 3 1| 5\nP12 3| 7 3| 7 3| 8\nQ12 0| 0 0| 0 0| 0\nQ24 0| 0| 0|\nDUR 0| 0 0| 0 1| 0\nPZR 0| 0 0| 0 0| 0\nPSN 0| 0 0| 0 0| 0\nPPL 0| 0 0| 0 0| 0\nPRA 5| 1 2| 8 1| 1\nS12 0| 0 0| 0 0| 0\nI12 0| 0 0| 0 0| 0\nSOL 0| 29 1| 42 0| 34", + "raw": "KMCO NBM V4.1 NBX GUIDANCE 10/30/2023 1700 UTC\nWED 08| THU 09| FRI 10\nUTC 00 12 |00 12 |00 12\nFHR 199 211|223 235|247 259\nTXN 84 65| 82 62| 81 60\nXND 1 3| 3 3| 2 1\nTMP 73 67| 71 64| 70 62\nTSD 2 6| 3 4| 2 2\nDPT 66 63| 61 59| 59 57\nDSD 2 6| 3 4| 2 2\nSKY 39 37| 19 18| 19 20\nSSD 25 29| 15 9| 11 10\nWDR 30 34| 5 36| 5 36\nWSP 10 8| 10 6| 10 7\nWSD 2 2| 2 2| 2 1\nGST 16 12| 15 8| 15 10\nGSD 3 3| 0 0| 2 4\nP12 25 13| 16 7| 12 11\nQ12 4 0| 0 0| 0 0\nQ24 4| 0| 0\nDUR 3 1| 1 1| 1 1\nPZR 0 0| 0 0| 0 0\nPSN 0 0| 0 0| 0 0\nPPL 0 0| 0 0| 0 0\nPRA 23 6| 8 1| 10 12\nS12 0 0| 0 0| 0 0\nI12 0 0| 0 0| 0 0\nSOL 41 0| 42 0| 40 0", "remarks": null, - "sanitized": "KMCO NBM V4.1 NBX GUIDANCE 10/17/2023 0500 UTC\nWED 25 |THU 26 |FRI 27 |SAT 28\nUTC 12 |00 12 |00 12 |00\nFHR 199|211 223|235 247|259\nTXN 69| 83 69| 84 70| 83\nXND 3| 2 2| 3 1| 1\nTMP 70| 74 70| 74 71| 74\nTSD 3| 2 2| 2 2| 2\nDPT 64| 63 65| 66 67| 65\nDSD 2| 2 2| 2 2| 2\nSKY 31| 39 26| 32 31| 40\nSSD 17| 24 16| 8 27| 17\nWDR 6| 6 5| 6 5| 6\nWSP 10| 13 9| 14 9| 11\nWSD 2| 1 1| 1 1| 2\nGST 14| 19 14| 21 13| 17\nGSD 3| 4 3| 3 1| 5\nP12 3| 7 3| 7 3| 8\nQ12 0| 0 0| 0 0| 0\nQ24 0| 0| 0|\nDUR 0| 0 0| 0 1| 0\nPZR 0| 0 0| 0 0| 0\nPSN 0| 0 0| 0 0| 0\nPPL 0| 0 0| 0 0| 0\nPRA 5| 1 2| 8 1| 1\nS12 0| 0 0| 0 0| 0\nI12 0| 0 0| 0 0| 0\nSOL 0| 29 1| 42 0| 34", + "sanitized": "KMCO NBM V4.1 NBX GUIDANCE 10/30/2023 1700 UTC\nWED 08| THU 09| FRI 10\nUTC 00 12 |00 12 |00 12\nFHR 199 211|223 235|247 259\nTXN 84 65| 82 62| 81 60\nXND 1 3| 3 3| 2 1\nTMP 73 67| 71 64| 70 62\nTSD 2 6| 3 4| 2 2\nDPT 66 63| 61 59| 59 57\nDSD 2 6| 3 4| 2 2\nSKY 39 37| 19 18| 19 20\nSSD 25 29| 15 9| 11 10\nWDR 30 34| 5 36| 5 36\nWSP 10 8| 10 6| 10 7\nWSD 2 2| 2 2| 2 1\nGST 16 12| 15 8| 15 10\nGSD 3 3| 0 0| 2 4\nP12 25 13| 16 7| 12 11\nQ12 4 0| 0 0| 0 0\nQ24 4| 0| 0\nDUR 3 1| 1 1| 1 1\nPZR 0 0| 0 0| 0 0\nPSN 0 0| 0 0| 0 0\nPPL 0 0| 0 0| 0 0\nPRA 23 6| 8 1| 10 12\nS12 0 0| 0 0| 0 0\nI12 0 0| 0 0| 0 0\nSOL 41 0| 42 0| 40 0", "station": "KMCO", "time": { - "dt": "2023-10-17T05:00:00+00:00", - "repr": "10/17/2023 0500" + "dt": "2023-10-30T17:00:00+00:00", + "repr": "10/30/2023 1700" } }, "icao": "KMCO", diff --git a/tests/forecast/data/nbx/PHNL.json b/tests/forecast/data/nbx/PHNL.json index 6062e34..5acfbd0 100644 --- a/tests/forecast/data/nbx/PHNL.json +++ b/tests/forecast/data/nbx/PHNL.json @@ -1,5 +1,5 @@ { - "created": "2023-10-17", + "created": "2023-10-30", "data": { "forecast": [ { @@ -11,327 +11,308 @@ "freezing_precip": null, "icing_amount_12": null, "precip_amount_12": { - "repr": "5", - "spoken": "zero point zero five", - "value": 0.05 - }, - "precip_amount_24": { - "repr": "11", - "spoken": "zero point one one", - "value": 0.11 + "repr": "1", + "spoken": "zero point zero one", + "value": 0.01 }, + "precip_amount_24": null, "precip_chance_12": { - "repr": "32", - "spoken": "three two", - "value": 32 + "repr": "27", + "spoken": "two seven", + "value": 27 }, "precip_duration": null, "rain": null, "sky_cover": { - "repr": "71", - "spoken": "seven one", - "value": 71 + "repr": "45", + "spoken": "four five", + "value": 45 }, "sleet": null, "snow": null, "snow_amount_12": null, - "snow_level": { - "repr": "120", - "spoken": "one two thousand", - "value": 12000 - }, + "snow_level": null, "solar_radiation": { - "repr": "13", - "spoken": "one three", - "value": 13 + "repr": "24", + "spoken": "two four", + "value": 24 }, "temperature": { - "repr": "77", - "spoken": "seven seven", - "value": 77 + "repr": "84", + "spoken": "eight four", + "value": 84 }, "time": { - "dt": "2023-10-17T12:00:00+00:00", - "repr": "12" + "dt": "2023-10-31T00:00:00+00:00", + "repr": "00" }, + "wave_height": null, "wind_direction": { "repr": "6", "spoken": "six zero", "value": 60 }, "wind_gust": { - "repr": "9", - "spoken": "nine", - "value": 9 + "repr": "24", + "spoken": "two four", + "value": 24 }, "wind_speed": { - "repr": "4", - "spoken": "four", - "value": 4 + "repr": "16", + "spoken": "one six", + "value": 16 } }, { "dewpoint": { - "repr": "70", - "spoken": "seven zero", - "value": 70 + "repr": "68", + "spoken": "six eight", + "value": 68 }, "freezing_precip": null, "icing_amount_12": null, "precip_amount_12": { - "repr": "0", - "spoken": "zero", - "value": 0 + "repr": "2", + "spoken": "zero point zero two", + "value": 0.02 + }, + "precip_amount_24": { + "repr": "3", + "spoken": "zero point zero three", + "value": 0.03 }, - "precip_amount_24": null, "precip_chance_12": { - "repr": "17", - "spoken": "one seven", - "value": 17 + "repr": "35", + "spoken": "three five", + "value": 35 }, "precip_duration": null, "rain": null, "sky_cover": { - "repr": "36", - "spoken": "three six", - "value": 36 + "repr": "56", + "spoken": "five six", + "value": 56 }, "sleet": null, "snow": null, "snow_amount_12": null, - "snow_level": { - "repr": "120", - "spoken": "one two thousand", - "value": 12000 - }, + "snow_level": null, "solar_radiation": { - "repr": "36", - "spoken": "three six", - "value": 36 + "repr": "15", + "spoken": "one five", + "value": 15 }, "temperature": { - "repr": "87", - "spoken": "eight seven", - "value": 87 + "repr": "75", + "spoken": "seven five", + "value": 75 }, "time": { - "dt": "2023-10-18T00:00:00+00:00", - "repr": "00" + "dt": "2023-10-31T12:00:00+00:00", + "repr": "12" }, + "wave_height": null, "wind_direction": { - "repr": "8", - "spoken": "eight zero", - "value": 80 + "repr": "5", + "spoken": "five zero", + "value": 50 }, "wind_gust": { - "repr": "14", - "spoken": "one four", - "value": 14 + "repr": "18", + "spoken": "one eight", + "value": 18 }, "wind_speed": { - "repr": "11", - "spoken": "one one", - "value": 11 + "repr": "10", + "spoken": "one zero", + "value": 10 } }, { "dewpoint": { - "repr": "70", - "spoken": "seven zero", - "value": 70 + "repr": "69", + "spoken": "six nine", + "value": 69 }, "freezing_precip": null, "icing_amount_12": null, "precip_amount_12": { - "repr": "0", - "spoken": "zero", - "value": 0 - }, - "precip_amount_24": { - "repr": "0", - "spoken": "zero", - "value": 0 + "repr": "4", + "spoken": "zero point zero four", + "value": 0.04 }, + "precip_amount_24": null, "precip_chance_12": { - "repr": "16", - "spoken": "one six", - "value": 16 + "repr": "42", + "spoken": "four two", + "value": 42 }, "precip_duration": null, "rain": null, "sky_cover": { - "repr": "41", - "spoken": "four one", - "value": 41 + "repr": "55", + "spoken": "five five", + "value": 55 }, "sleet": null, "snow": null, "snow_amount_12": null, - "snow_level": { - "repr": "110", - "spoken": "one one thousand", - "value": 11000 - }, + "snow_level": null, "solar_radiation": { - "repr": "25", - "spoken": "two five", - "value": 25 + "repr": "27", + "spoken": "two seven", + "value": 27 }, "temperature": { - "repr": "77", - "spoken": "seven seven", - "value": 77 + "repr": "83", + "spoken": "eight three", + "value": 83 }, "time": { - "dt": "2023-10-18T12:00:00+00:00", - "repr": "12" + "dt": "2023-11-01T00:00:00+00:00", + "repr": "00" }, + "wave_height": null, "wind_direction": { - "repr": "6", - "spoken": "six zero", - "value": 60 + "repr": "5", + "spoken": "five zero", + "value": 50 }, "wind_gust": { - "repr": "10", - "spoken": "one zero", - "value": 10 + "repr": "23", + "spoken": "two three", + "value": 23 }, "wind_speed": { - "repr": "6", - "spoken": "six", - "value": 6 + "repr": "16", + "spoken": "one six", + "value": 16 } }, { "dewpoint": { - "repr": "69", - "spoken": "six nine", - "value": 69 + "repr": "67", + "spoken": "six seven", + "value": 67 }, "freezing_precip": null, "icing_amount_12": null, "precip_amount_12": { - "repr": "0", - "spoken": "zero", - "value": 0 + "repr": "3", + "spoken": "zero point zero three", + "value": 0.03 + }, + "precip_amount_24": { + "repr": "7", + "spoken": "zero point zero seven", + "value": 0.07 }, - "precip_amount_24": null, "precip_chance_12": { - "repr": "11", - "spoken": "one one", - "value": 11 + "repr": "36", + "spoken": "three six", + "value": 36 }, "precip_duration": null, "rain": null, "sky_cover": { - "repr": "19", - "spoken": "one nine", - "value": 19 + "repr": "74", + "spoken": "seven four", + "value": 74 }, "sleet": null, "snow": null, "snow_amount_12": null, - "snow_level": { - "repr": "110", - "spoken": "one one thousand", - "value": 11000 - }, + "snow_level": null, "solar_radiation": { - "repr": "37", - "spoken": "three seven", - "value": 37 + "repr": "18", + "spoken": "one eight", + "value": 18 }, "temperature": { - "repr": "87", - "spoken": "eight seven", - "value": 87 + "repr": "75", + "spoken": "seven five", + "value": 75 }, "time": { - "dt": "2023-10-19T00:00:00+00:00", - "repr": "00" + "dt": "2023-11-01T12:00:00+00:00", + "repr": "12" }, + "wave_height": null, "wind_direction": { - "repr": "7", - "spoken": "seven zero", - "value": 70 + "repr": "6", + "spoken": "six zero", + "value": 60 }, "wind_gust": { - "repr": "17", - "spoken": "one seven", - "value": 17 + "repr": "24", + "spoken": "two four", + "value": 24 }, "wind_speed": { - "repr": "12", - "spoken": "one two", - "value": 12 + "repr": "14", + "spoken": "one four", + "value": 14 } }, { "dewpoint": { - "repr": "69", - "spoken": "six nine", - "value": 69 + "repr": "68", + "spoken": "six eight", + "value": 68 }, "freezing_precip": null, "icing_amount_12": null, "precip_amount_12": { - "repr": "0", - "spoken": "zero", - "value": 0 - }, - "precip_amount_24": { - "repr": "0", - "spoken": "zero", - "value": 0 + "repr": "1", + "spoken": "zero point zero one", + "value": 0.01 }, + "precip_amount_24": null, "precip_chance_12": { - "repr": "15", - "spoken": "one five", - "value": 15 + "repr": "32", + "spoken": "three two", + "value": 32 }, "precip_duration": null, "rain": null, "sky_cover": { - "repr": "44", - "spoken": "four four", - "value": 44 + "repr": "53", + "spoken": "five three", + "value": 53 }, "sleet": null, "snow": null, "snow_amount_12": null, - "snow_level": { - "repr": "110", - "spoken": "one one thousand", - "value": 11000 - }, + "snow_level": null, "solar_radiation": { - "repr": "25", - "spoken": "two five", - "value": 25 + "repr": "26", + "spoken": "two six", + "value": 26 }, "temperature": { - "repr": "77", - "spoken": "seven seven", - "value": 77 + "repr": "83", + "spoken": "eight three", + "value": 83 }, "time": { - "dt": "2023-10-19T12:00:00+00:00", - "repr": "12" + "dt": "2023-11-02T00:00:00+00:00", + "repr": "00" }, + "wave_height": null, "wind_direction": { "repr": "6", "spoken": "six zero", "value": 60 }, "wind_gust": { - "repr": "12", - "spoken": "one two", - "value": 12 + "repr": "27", + "spoken": "two seven", + "value": 27 }, "wind_speed": { - "repr": "8", - "spoken": "eight", - "value": 8 + "repr": "16", + "spoken": "one six", + "value": 16 } }, { @@ -345,44 +326,41 @@ "precip_amount_12": null, "precip_amount_24": null, "precip_chance_12": { - "repr": "1", - "spoken": "one", - "value": 1 + "repr": "2", + "spoken": "two", + "value": 2 }, "precip_duration": null, "rain": null, "sky_cover": { - "repr": "2", - "spoken": "two", - "value": 2 + "repr": "7", + "spoken": "seven", + "value": 7 }, "sleet": null, "snow": null, "snow_amount_12": null, - "snow_level": { - "repr": "11", - "spoken": "one one hundred", - "value": 1100 - }, + "snow_level": null, "solar_radiation": { - "repr": "3", - "spoken": "three", - "value": 3 + "repr": "1", + "spoken": "one", + "value": 1 }, "temperature": { - "repr": "8", - "spoken": "eight", - "value": 8 + "repr": "7", + "spoken": "seven", + "value": 7 }, "time": { - "dt": "2023-10-20T00:00:00+00:00", - "repr": "00" + "dt": "2023-11-02T12:00:00+00:00", + "repr": "12" }, + "wave_height": null, "wind_direction": null, "wind_gust": { - "repr": "1", - "spoken": "one", - "value": 1 + "repr": "2", + "spoken": "two", + "value": 2 }, "wind_speed": { "repr": "1", @@ -391,13 +369,13 @@ } } ], - "raw": "PHNL NBM V4.1 NBX GUIDANCE 10/17/2023 0500 UTC\nWED 25 |THU 26 |FRI 27 |SAT 28\nUTC 12 |00 12 |00 12 |00\nFHR 199|211 223|235 247|259\nTXN 75| 89 74| 89 74| 88\nXND 1| 1 0| 1 0| 0\nTMP 77| 87 77| 87 77| 87\nTSD 1| 2 1| 1 0| 1\nDPT 70| 70 70| 69 69| 67\nDSD 1| 2 1| 1 0| 1\nSKY 71| 36 41| 19 44| 20\nSSD 25| 26 29| 17 8| 17\nWDR 6| 8 6| 7 6| 7\nWSP 4| 11 6| 12 8| 12\nWSD 2| 2 2| 1 1| 1\nGST 9| 14 10| 17 12| 18\nGSD 2| 2 4| 0 1| 0\nP12 32| 17 16| 11 15| 14\nQ12 5| 0 0| 0 0| 0\nQ24 11| 0| 0|\nSLV 120|120 110|110 110|110\nSOL 13| 36 25| 37 25| 36", + "raw": "PHNL NBM V4.1 NBX GUIDANCE 10/30/2023 1700 UTC\nWED 08| THU 09| FRI 10\nUTC 00 12 |00 12 |00 12\nFHR 199 211|223 235|247 259\nTXN 85 72| 85 73| 85 73\nXND 2 1| 1 1| 1 0\nTMP 84 75| 83 75| 83 75\nTSD 2 1| 1 1| 1 1\nDPT 70 68| 69 67| 68 67\nDSD 2 1| 1 1| 1 1\nSKY 45 56| 55 74| 53 71\nSSD 16 14| 11 27| 6 22\nWDR 6 5| 5 6| 6 6\nWSP 16 10| 16 14| 16 13\nWSD 2 3| 1 3| 3 2\nGST 24 18| 23 24| 27 23\nGSD 1 2| 2 1| 0 1\nP12 27 35| 42 36| 32 20\nQ12 1 2| 4 3| 1 0\nQ24 3| 7| 1\nSOL 24 15| 27 18| 26 13", "remarks": null, - "sanitized": "PHNL NBM V4.1 NBX GUIDANCE 10/17/2023 0500 UTC\nWED 25 |THU 26 |FRI 27 |SAT 28\nUTC 12 |00 12 |00 12 |00\nFHR 199|211 223|235 247|259\nTXN 75| 89 74| 89 74| 88\nXND 1| 1 0| 1 0| 0\nTMP 77| 87 77| 87 77| 87\nTSD 1| 2 1| 1 0| 1\nDPT 70| 70 70| 69 69| 67\nDSD 1| 2 1| 1 0| 1\nSKY 71| 36 41| 19 44| 20\nSSD 25| 26 29| 17 8| 17\nWDR 6| 8 6| 7 6| 7\nWSP 4| 11 6| 12 8| 12\nWSD 2| 2 2| 1 1| 1\nGST 9| 14 10| 17 12| 18\nGSD 2| 2 4| 0 1| 0\nP12 32| 17 16| 11 15| 14\nQ12 5| 0 0| 0 0| 0\nQ24 11| 0| 0|\nSLV 120|120 110|110 110|110\nSOL 13| 36 25| 37 25| 36", + "sanitized": "PHNL NBM V4.1 NBX GUIDANCE 10/30/2023 1700 UTC\nWED 08| THU 09| FRI 10\nUTC 00 12 |00 12 |00 12\nFHR 199 211|223 235|247 259\nTXN 85 72| 85 73| 85 73\nXND 2 1| 1 1| 1 0\nTMP 84 75| 83 75| 83 75\nTSD 2 1| 1 1| 1 1\nDPT 70 68| 69 67| 68 67\nDSD 2 1| 1 1| 1 1\nSKY 45 56| 55 74| 53 71\nSSD 16 14| 11 27| 6 22\nWDR 6 5| 5 6| 6 6\nWSP 16 10| 16 14| 16 13\nWSD 2 3| 1 3| 3 2\nGST 24 18| 23 24| 27 23\nGSD 1 2| 2 1| 0 1\nP12 27 35| 42 36| 32 20\nQ12 1 2| 4 3| 1 0\nQ24 3| 7| 1\nSOL 24 15| 27 18| 26 13", "station": "PHNL", "time": { - "dt": "2023-10-17T05:00:00+00:00", - "repr": "10/17/2023 0500" + "dt": "2023-10-30T17:00:00+00:00", + "repr": "10/30/2023 1700" } }, "icao": "PHNL", diff --git a/util/build_tests.py b/util/build_tests.py index 19b7c46..ce4d42b 100644 --- a/util/build_tests.py +++ b/util/build_tests.py @@ -7,11 +7,14 @@ # stdlib import json import random +import sys from dataclasses import asdict from datetime import date, datetime, timezone from pathlib import Path from typing import Optional +sys.path.insert(0, str(Path(__file__).parent.parent.absolute())) + # module import avwx from tests.util import round_coordinates