diff --git a/test/bom_IDN11060.xml b/test/bom_IDN11060.xml deleted file mode 100644 index 9c433da6..00000000 --- a/test/bom_IDN11060.xml +++ /dev/null @@ -1,8716 +0,0 @@ - - - - - Australian Government Bureau of Meteorology - New South Wales - NSWRO - http://www.bom.gov.au/other/copyright.shtml - http://www.bom.gov.au/other/disclaimer.shtml - - IDN11060 - 2019-04-30T10:56:27Z - 2019-04-30T20:56:27+10:00 - 2019-04-30T10:56:27Z - 2019-05-01T10:56:27Z - 2019-04-30T17:00:00+10:00 - 2019-05-07T23:59:59+10:00 - 2019-04-30T18:25:00Z - 2019-05-01T04:25:00+10:00 - O - WSP - FPR - F - UPD - - - - - - - 3 - Mostly clear. - 0% - - - 3 - 17 - 25 - Partly cloudy. - 10% - - - 3 - 17 - 26 - Partly cloudy. - 10% - - - 12 - 5 to 8 mm - 18 - 24 - Rain at times. Possible storm. - 80% - - - 3 - 13 - 23 - Mostly sunny. - 20% - - - 11 - 1 to 5 mm - 13 - 20 - Shower or two. - 50% - - - 11 - 0 to 2 mm - 15 - 20 - Shower or two. - 50% - - - 3 - 13 - 22 - Partly cloudy. - 20% - - - - - 3 - Mostly clear. - 5% - - - 3 - 17 - 23 - Partly cloudy. - 10% - - - 3 - 18 - 24 - Partly cloudy. - 10% - - - 12 - 5 to 8 mm - 19 - 22 - Rain at times. Possible storm. - 80% - - - 3 - 14 - 21 - Mostly sunny. - 20% - - - 11 - 1 to 5 mm - 14 - 19 - Shower or two. - 50% - - - 11 - 0 to 3 mm - 15 - 18 - Shower or two. - 50% - - - 3 - 13 - 20 - Partly cloudy. - 20% - - - - - 3 - Mostly clear. - 0% - - - 3 - 14 - 25 - Partly cloudy. - 10% - - - 3 - 15 - 27 - Partly cloudy. - 10% - - - 12 - 5 to 8 mm - 16 - 24 - Rain at times. Possible storm. - 80% - - - 3 - 11 - 23 - Mostly sunny. - 10% - - - 3 - 0 to 0.4 mm - 11 - 20 - Partly cloudy. - 30% - - - 3 - 0 to 0.4 mm - 12 - 20 - Partly cloudy. - 30% - - - 3 - 9 - 22 - Mostly sunny. - 10% - - - - - 3 - Mostly clear. - 0% - - - 10 - 14 - 25 - Morning fog/smoke. Partly cloudy. - 10% - - - 3 - 15 - 28 - Partly cloudy. - 20% - - - 12 - 4 to 6 mm - 17 - 24 - Rain at times. Possible storm. - 80% - - - 3 - 11 - 23 - Mostly sunny. - 5% - - - 3 - 11 - 21 - Partly cloudy. - 20% - - - 3 - 12 - 21 - Partly cloudy. - 20% - - - 3 - 10 - 23 - Mostly sunny. - 10% - - - - - 3 - Mostly clear. - 0% - - - 3 - 17 - 24 - Partly cloudy. - 10% - - - 3 - 18 - 25 - Partly cloudy. - 10% - - - 12 - 5 to 8 mm - 19 - 23 - Rain at times. Possible storm. - 80% - - - 3 - 14 - 22 - Mostly sunny. - 20% - - - 11 - 1 to 5 mm - 13 - 19 - Shower or two. - 50% - - - 11 - 0 to 3 mm - 15 - 19 - Shower or two. - 50% - - - 3 - 13 - 21 - Mostly sunny. - 20% - - - - - 3 - Mostly clear. - 0% - - - 3 - 17 - 25 - Partly cloudy. - 10% - - - 3 - 17 - 26 - Partly cloudy. - 10% - - - 12 - 5 to 8 mm - 18 - 24 - Rain at times. Possible storm. - 80% - - - 3 - 14 - 23 - Mostly sunny. - 20% - - - 11 - 1 to 5 mm - 14 - 20 - Shower or two. - 50% - - - 11 - 0 to 2 mm - 15 - 20 - Shower or two. - 50% - - - 3 - 13 - 22 - Partly cloudy. - 20% - - - - - 3 - Mostly clear. - 0% - - - 3 - 16 - 23 - Partly cloudy. - 10% - - - 3 - 16 - 25 - Partly cloudy. - 10% - - - 12 - 5 to 8 mm - 17 - 23 - Rain at times. Possible storm. - 80% - - - 3 - 12 - 21 - Mostly sunny. - 20% - - - 11 - 0 to 4 mm - 12 - 19 - Shower or two. - 50% - - - 11 - 0 to 2 mm - 13 - 19 - Shower or two. - 50% - - - 3 - 11 - 20 - Mostly sunny. - 20% - - - - - 3 - Mostly clear. - 0% - - - 10 - 13 - 25 - Morning fog/smoke. Partly cloudy. - 10% - - - 3 - 14 - 27 - Partly cloudy. - 10% - - - 12 - 4 to 8 mm - 16 - 24 - Rain at times. Possible storm. - 80% - - - 3 - 10 - 23 - Mostly sunny. - 10% - - - 3 - 10 - 21 - Partly cloudy. - 20% - - - 3 - 0 to 0.2 mm - 11 - 20 - Partly cloudy. - 30% - - - 3 - 9 - 23 - Mostly sunny. - 10% - - - - - 3 - Mostly clear. - 0% - - - 3 - 14 - 25 - Partly cloudy. - 10% - - - 3 - 15 - 27 - Partly cloudy. - 10% - - - 12 - 5 to 8 mm - 16 - 23 - Rain at times. Possible storm. - 80% - - - 3 - 10 - 22 - Mostly sunny. - 10% - - - 3 - 0 to 1 mm - 10 - 20 - Partly cloudy. - 30% - - - 17 - 0 to 1 mm - 11 - 20 - Possible shower. - 40% - - - 3 - 9 - 22 - Mostly sunny. - 20% - - - - - 3 - Mostly clear. - 0% - - - 3 - 14 - 25 - Partly cloudy. - 10% - - - 3 - 15 - 27 - Partly cloudy. - 10% - - - 12 - 5 to 8 mm - 17 - 23 - Rain at times. Possible storm. - 80% - - - 3 - 11 - 23 - Mostly sunny. - 10% - - - 3 - 0 to 0.4 mm - 11 - 20 - Partly cloudy. - 30% - - - 3 - 0 to 0.4 mm - 12 - 20 - Partly cloudy. - 30% - - - 3 - 10 - 22 - Mostly sunny. - 10% - - - - - 3 - Mostly clear. - 0% - - - 10 - 12 - 24 - Morning fog/smoke. Partly cloudy. - 10% - - - 3 - 13 - 27 - Partly cloudy. - 20% - - - 12 - 6 to 10 mm - 14 - 23 - Rain at times. Possible storm. - 80% - - - 3 - 9 - 22 - Mostly sunny. - 5% - - - 3 - 9 - 20 - Partly cloudy. - 20% - - - 3 - 10 - 20 - Partly cloudy. - 20% - - - 3 - 7 - 22 - Mostly sunny. - 10% - - - - - 3 - Mostly clear. - 0% - - - 10 - 13 - 24 - Morning fog/smoke. Partly cloudy. - 10% - - - 3 - 13 - 27 - Partly cloudy. - 20% - - - 12 - 6 to 10 mm - 15 - 23 - Rain at times. Possible storm. - 80% - - - 3 - 10 - 22 - Mostly sunny. - 10% - - - 3 - 0 to 1 mm - 9 - 20 - Partly cloudy. - 30% - - - 3 - 0 to 0.4 mm - 10 - 20 - Partly cloudy. - 30% - - - 3 - 8 - 22 - Mostly sunny. - 10% - - - - - 3 - Mostly clear. - 0% - - - 3 - 14 - 25 - Partly cloudy. - 10% - - - 3 - 15 - 26 - Partly cloudy. - 10% - - - 12 - 5 to 8 mm - 15 - 23 - Rain at times. Possible storm. - 80% - - - 3 - 11 - 23 - Mostly sunny. - 10% - - - 17 - 0 to 3 mm - 11 - 20 - Possible shower. - 40% - - - 17 - 0 to 2 mm - 12 - 19 - Possible shower. - 40% - - - 3 - 10 - 21 - Mostly sunny. - 20% - - - - - 3 - Mostly clear. - 5% - - - 3 - 18 - 23 - Partly cloudy. - 10% - - - 3 - 19 - 24 - Partly cloudy. - 10% - - - 12 - 5 to 8 mm - 19 - 23 - Rain at times. Possible storm. - 80% - - - 3 - 15 - 21 - Mostly sunny. - 20% - - - 11 - 1 to 6 mm - 15 - 19 - Shower or two. - 60% - - - 11 - 0 to 3 mm - 16 - 19 - Shower or two. - 50% - - - 3 - 0 to 0.2 mm - 14 - 20 - Partly cloudy. - 30% - - - - - 3 - Mostly clear. - 0% - - - 3 - 15 - 24 - Partly cloudy. - 10% - - - 3 - 16 - 26 - Partly cloudy. - 10% - - - 12 - 5 to 8 mm - 17 - 23 - Rain at times. Possible storm. - 80% - - - 3 - 12 - 22 - Mostly sunny. - 10% - - - 17 - 0 to 2 mm - 11 - 19 - Possible shower. - 40% - - - 17 - 0 to 1 mm - 13 - 19 - Possible shower. - 40% - - - 3 - 11 - 21 - Mostly sunny. - 20% - - - - - 3 - Mostly clear. - 0% - - - 3 - 15 - 25 - Partly cloudy. - 10% - - - 3 - 16 - 27 - Partly cloudy. - 10% - - - 12 - 5 to 8 mm - 17 - 24 - Rain at times. Possible storm. - 80% - - - 3 - 12 - 23 - Mostly sunny. - 10% - - - 17 - 0 to 2 mm - 12 - 20 - Possible shower. - 40% - - - 17 - 0 to 1 mm - 13 - 20 - Possible shower. - 40% - - - 3 - 11 - 22 - Mostly sunny. - 20% - - - - - - 3 - Partly cloudy. - 0% - - - 11 - 1 to 3 mm - 11 - 22 - Shower or two. - 50% - - - 16 - 25 to 40 mm - 13 - 23 - Rain. Possible storm. - 90% - - - 16 - 25 to 35 mm - 14 - 20 - Rain clearing. Possible storm. - 90% - - - 3 - 7 - 17 - Partly cloudy. - 5% - - - 3 - 6 - 19 - Mostly sunny. - 0% - - - 3 - 5 - 18 - Mostly sunny. - 0% - - - 3 - 6 - 18 - Mostly sunny. - 5% - - - - - 3 - Partly cloudy. - 0% - - - 11 - 0 to 3 mm - 10 - 22 - Shower or two. - 50% - - - 16 - 20 to 35 mm - 12 - 22 - Rain. Possible storm. - 90% - - - 16 - 25 to 40 mm - 13 - 19 - Rain clearing. Possible storm. - 90% - - - 3 - 6 - 16 - Partly cloudy. - 5% - - - 3 - 5 - 19 - Partly cloudy. - 5% - - - 3 - 4 - 17 - Mostly sunny. - 5% - - - 3 - 5 - 17 - Mostly sunny. - 5% - - - - - 3 - Partly cloudy. - 0% - - - 11 - 1 to 3 mm - 11 - 22 - Shower or two. - 50% - - - 16 - 25 to 45 mm - 13 - 22 - Rain. Possible storm. - 90% - - - 16 - 20 to 30 mm - 14 - 19 - Rain clearing. Possible storm. - 90% - - - 3 - 7 - 17 - Partly cloudy. - 5% - - - 3 - 5 - 19 - Mostly sunny. - 5% - - - 3 - 5 - 18 - Mostly sunny. - 0% - - - 3 - 5 - 18 - Mostly sunny. - 5% - - - - - 3 - Partly cloudy. - 0% - - - 11 - 0 to 3 mm - 9 - 22 - Shower or two. - 50% - - - 16 - 20 to 40 mm - 11 - 22 - Rain. Possible storm. - 90% - - - 16 - 25 to 35 mm - 12 - 19 - Rain clearing. Possible storm. - 90% - - - 3 - 5 - 16 - Partly cloudy. - 5% - - - 3 - 4 - 18 - Partly cloudy. - 5% - - - 3 - 4 - 17 - Mostly sunny. - 5% - - - 3 - 4 - 17 - Mostly sunny. - 5% - - - - - 3 - Partly cloudy. - 0% - - - 11 - 1 to 4 mm - 10 - 21 - Shower or two. - 50% - - - 16 - 25 to 45 mm - 11 - 21 - Rain. Possible storm. - 90% - - - 16 - 20 to 30 mm - 13 - 19 - Rain clearing. Possible storm. - 90% - - - 3 - 6 - 17 - Partly cloudy. - 5% - - - 3 - 5 - 18 - Partly cloudy. - 5% - - - 3 - 4 - 17 - Mostly sunny. - 0% - - - 3 - 3 - 17 - Mostly sunny. - 5% - - - - - 3 - Partly cloudy. - 0% - - - 11 - 2 to 5 mm - 7 - 11 - Shower or two. - 60% - - - 16 - 30 to 50 mm - 8 - 11 - Rain. Possible storm. - 95% - - - 16 - 20 to 30 mm - 10 - 10 - Rain clearing. Possible storm. - 90% - - - 3 - 3 - 6 - Partly cloudy. - 10% - - - 3 - 1 - 9 - Mostly sunny. - 5% - - - 3 - 0 - 9 - Mostly sunny. - 5% - - - 3 - 1 - 9 - Mostly sunny. - 5% - - - - - - 17 - Possible shower. - 30% - - - 17 - 0 to 3 mm - 19 - 24 - Possible shower. - 40% - - - 17 - 0 to 4 mm - 19 - 24 - Possible shower. - 40% - - - 11 - 0 to 3 mm - 18 - 24 - Shower or two. - 50% - - - 11 - 4 to 10 mm - 18 - 24 - Showers. - 90% - - - 11 - 2 to 6 mm - 16 - 22 - Showers. - 80% - - - 11 - 1 to 5 mm - 15 - 22 - Showers. - 80% - - - 11 - 0 to 2 mm - 15 - 22 - Shower or two. - 50% - - - - - 17 - Possible shower. - 40% - - - 17 - 0 to 1 mm - 14 - 24 - Possible shower. - 40% - - - 17 - 0 to 2 mm - 15 - 25 - Possible shower. - 40% - - - 17 - 0 to 2 mm - 14 - 25 - Possible shower. - 40% - - - 11 - 3 to 8 mm - 15 - 25 - Showers. - 90% - - - 11 - 0 to 2 mm - 12 - 23 - Shower or two. - 50% - - - 11 - 0 to 3 mm - 12 - 22 - Shower or two. - 50% - - - 3 - 0 to 0.4 mm - 11 - 23 - Mostly sunny. - 30% - - - - - 17 - Possible shower. - 40% - - - 17 - 0 to 4 mm - 18 - 25 - Possible shower. - 40% - - - 11 - 0 to 5 mm - 18 - 25 - Shower or two. - 50% - - - 17 - 0 to 2 mm - 17 - 25 - Possible shower. - 40% - - - 11 - 2 to 6 mm - 18 - 25 - Showers. - 90% - - - 11 - 0 to 2 mm - 15 - 23 - Shower or two. - 50% - - - 11 - 0 to 3 mm - 16 - 22 - Shower or two. - 60% - - - 17 - 0 to 1 mm - 15 - 23 - Possible shower. - 40% - - - - - 11 - Shower or two. - 50% - - - 11 - 0 to 1 mm - 16 - 25 - Shower or two. - 50% - - - 11 - 0 to 2 mm - 17 - 25 - Shower or two. - 50% - - - 17 - 0 to 2 mm - 16 - 27 - Possible shower. - 40% - - - 11 - 2 to 6 mm - 17 - 26 - Showers. - 80% - - - 3 - 12 - 24 - Partly cloudy. - 20% - - - 3 - 0 to 0.4 mm - 14 - 23 - Partly cloudy. - 30% - - - 3 - 11 - 25 - Mostly sunny. - 20% - - - - - 17 - Possible shower. - 40% - - - 17 - 0 to 2 mm - 18 - 25 - Possible shower. - 40% - - - 17 - 0 to 3 mm - 18 - 25 - Possible shower. - 40% - - - 17 - 0 to 2 mm - 17 - 26 - Possible shower. - 40% - - - 11 - 2 to 6 mm - 18 - 25 - Showers. - 90% - - - 11 - 1 to 3 mm - 16 - 23 - Shower or two. - 60% - - - 11 - 1 to 4 mm - 17 - 22 - Shower or two. - 60% - - - 17 - 0 to 1 mm - 15 - 23 - Possible shower. - 40% - - - - - 17 - Possible shower. - 40% - - - 17 - 0 to 2 mm - 17 - 25 - Possible shower. - 40% - - - 17 - 0 to 3 mm - 17 - 25 - Possible shower. - 40% - - - 17 - 0 to 2 mm - 16 - 25 - Possible shower. - 40% - - - 11 - 3 to 8 mm - 17 - 25 - Showers. - 90% - - - 11 - 1 to 5 mm - 15 - 23 - Shower or two. - 70% - - - 11 - 1 to 5 mm - 15 - 22 - Shower or two. - 70% - - - 11 - 0 to 1 mm - 13 - 23 - Shower or two. - 50% - - - - - 17 - Possible shower. - 40% - - - 11 - 0 to 4 mm - 16 - 25 - Shower or two. - 50% - - - 17 - 0 to 3 mm - 17 - 25 - Possible shower. - 40% - - - 17 - 0 to 2 mm - 16 - 26 - Possible shower. - 40% - - - 11 - 3 to 8 mm - 16 - 26 - Showers. - 90% - - - 17 - 0 to 2 mm - 14 - 24 - Possible shower. - 40% - - - 17 - 0 to 1 mm - 14 - 23 - Possible shower. - 40% - - - 3 - 0 to 0.2 mm - 13 - 24 - Mostly sunny. - 30% - - - - - 17 - Possible shower. - 40% - - - 11 - 0 to 5 mm - 19 - 25 - Shower or two. - 50% - - - 17 - 0 to 5 mm - 19 - 26 - Possible shower. - 40% - - - 11 - 0 to 3 mm - 19 - 26 - Shower or two. - 50% - - - 11 - 3 to 8 mm - 18 - 27 - Showers. - 90% - - - 11 - 0 to 3 mm - 17 - 25 - Shower or two. - 50% - - - 11 - 0 to 2 mm - 16 - 23 - Shower or two. - 50% - - - 17 - 0 to 1 mm - 15 - 24 - Possible shower. - 40% - - - - - - 3 - Mostly clear. - 0% - - - 3 - 13 - 27 - Partly cloudy. - 5% - - - 3 - 13 - 28 - Mostly sunny. - 10% - - - 12 - 3 to 5 mm - 15 - 27 - Rain at times. - 80% - - - 17 - 0 to 2 mm - 13 - 24 - Possible early shower. - 40% - - - 11 - 0 to 2 mm - 10 - 21 - Shower or two. - 50% - - - 11 - 0 to 2 mm - 12 - 21 - Shower or two. - 50% - - - 3 - 10 - 22 - Partly cloudy. - 20% - - - - - 17 - Possible shower. - 40% - - - 11 - 0 to 3 mm - 17 - 25 - Shower or two. - 50% - - - 11 - 0 to 5 mm - 17 - 25 - Shower or two. - 50% - - - 11 - 0 to 3 mm - 17 - 26 - Shower or two. - 50% - - - 11 - 1 to 5 mm - 17 - 24 - Showers. - 80% - - - 17 - 0 to 2 mm - 14 - 23 - Possible shower. - 40% - - - 11 - 1 to 5 mm - 15 - 22 - Shower or two. - 70% - - - 17 - 0 to 1 mm - 13 - 23 - Possible shower. - 40% - - - - - 4 - Partly cloudy. - 20% - - - 3 - 0 to 1 mm - 14 - 27 - Partly cloudy. - 30% - - - 3 - 0 to 1 mm - 15 - 27 - Partly cloudy. - 30% - - - 12 - 0 to 2 mm - 14 - 28 - Rain at times. - 50% - - - 11 - 1 to 5 mm - 15 - 25 - Morning shower or two. - 60% - - - 17 - 0 to 1 mm - 11 - 24 - Possible shower. - 40% - - - 11 - 0 to 2 mm - 13 - 22 - Shower or two. - 50% - - - 3 - 11 - 24 - Mostly sunny. - 20% - - - - - 3 - Partly cloudy. - 20% - - - 3 - 0 to 1 mm - 14 - 25 - Partly cloudy. - 30% - - - 3 - 0 to 1 mm - 14 - 26 - Partly cloudy. - 30% - - - 12 - 1 to 3 mm - 14 - 27 - Rain at times. - 60% - - - 11 - 1 to 4 mm - 14 - 24 - Morning shower or two. - 60% - - - 11 - 1 to 5 mm - 11 - 22 - Shower or two. - 50% - - - 11 - 1 to 6 mm - 12 - 21 - Shower or two. - 60% - - - 17 - 0 to 1 mm - 10 - 22 - Possible shower. - 40% - - - - - 3 - Partly cloudy. - 10% - - - 3 - 14 - 25 - Partly cloudy. - 20% - - - 3 - 14 - 26 - Partly cloudy. - 20% - - - 12 - 2 to 4 mm - 15 - 26 - Rain at times. - 70% - - - 11 - 0 to 3 mm - 14 - 23 - Shower or two. - 50% - - - 11 - 1 to 6 mm - 10 - 20 - Shower or two. - 60% - - - 11 - 1 to 5 mm - 12 - 20 - Shower or two. - 60% - - - 3 - 0 to 1 mm - 10 - 21 - Partly cloudy. - 30% - - - - - 3 - Partly cloudy. - 10% - - - 3 - 17 - 25 - Partly cloudy. - 20% - - - 3 - 17 - 25 - Partly cloudy. - 20% - - - 12 - 2 to 4 mm - 17 - 25 - Rain at times. - 70% - - - 11 - 0 to 4 mm - 15 - 22 - Shower or two. - 50% - - - 11 - 2 to 8 mm - 13 - 20 - Shower or two. - 70% - - - 11 - 1 to 5 mm - 14 - 21 - Shower or two. - 70% - - - 17 - 0 to 1 mm - 12 - 21 - Possible shower. - 40% - - - - - 3 - Partly cloudy. - 5% - - - 3 - 15 - 26 - Partly cloudy. - 10% - - - 3 - 15 - 27 - Mostly sunny. - 10% - - - 12 - 4 to 6 mm - 15 - 26 - Rain at times. - 80% - - - 11 - 0 to 3 mm - 13 - 23 - Early shower or two. - 50% - - - 11 - 2 to 8 mm - 11 - 20 - Shower or two. - 70% - - - 11 - 1 to 4 mm - 13 - 21 - Shower or two. - 70% - - - 17 - 0 to 1 mm - 10 - 22 - Possible shower. - 40% - - - - - 3 - Partly cloudy. - 0% - - - 3 - 9 - 16 - Partly cloudy. - 5% - - - 3 - 10 - 17 - Partly cloudy. - 10% - - - 16 - 5 to 8 mm - 11 - 15 - Rain. Possible storm. - 80% - - - 11 - 0 to 2 mm - 7 - 12 - Shower or two. - 50% - - - 11 - 0 to 3 mm - 4 - 9 - Shower or two. - 50% - - - 17 - 0 to 2 mm - 5 - 9 - Possible shower. - 40% - - - 3 - 4 - 11 - Partly cloudy. - 20% - - - - - 17 - Possible shower. - 40% - - - 10 - 0 to 1 mm - 11 - 20 - Early fog. Possible shower. - 40% - - - 17 - 0 to 1 mm - 13 - 20 - Possible shower. - 40% - - - 11 - 0 to 2 mm - 13 - 21 - Late shower or two. - 40% - - - 11 - 1 to 6 mm - 14 - 19 - Shower or two clearing. - 70% - - - 3 - 0 to 0.2 mm - 8 - 17 - Partly cloudy. - 30% - - - 3 - 0 to 0.4 mm - 10 - 16 - Partly cloudy. - 30% - - - 3 - 8 - 18 - Mostly sunny. - 20% - - - - - 3 - Partly cloudy. - 30% - - - 17 - 0 to 2 mm - 17 - 25 - Possible shower. - 40% - - - 17 - 0 to 3 mm - 17 - 26 - Possible shower. - 40% - - - 12 - 0 to 3 mm - 17 - 26 - Rain at times. - 50% - - - 11 - 1 to 4 mm - 17 - 25 - Showers easing. - 80% - - - 17 - 0 to 1 mm - 13 - 23 - Possible shower. - 40% - - - 11 - 0 to 3 mm - 15 - 22 - Shower or two. - 60% - - - 3 - 0 to 0.4 mm - 13 - 23 - Mostly sunny. - 30% - - - - - 3 - Partly cloudy. - 10% - - - 3 - 13 - 26 - Partly cloudy. - 20% - - - 3 - 13 - 26 - Partly cloudy. - 20% - - - 12 - 1 to 3 mm - 13 - 27 - Rain at times. - 60% - - - 11 - 0 to 5 mm - 13 - 24 - Morning shower or two. - 60% - - - 11 - 0 to 2 mm - 9 - 23 - Shower or two. - 50% - - - 11 - 0 to 3 mm - 11 - 21 - Shower or two. - 50% - - - 3 - 0 to 0.4 mm - 9 - 23 - Partly cloudy. - 30% - - - - - 3 - Partly cloudy. - 30% - - - 17 - 0 to 3 mm - 18 - 27 - Possible shower. - 40% - - - 17 - 0 to 4 mm - 18 - 27 - Possible shower. - 40% - - - 11 - 0 to 3 mm - 18 - 27 - Shower or two. - 50% - - - 11 - 1 to 4 mm - 18 - 25 - Shower or two. - 70% - - - 11 - 0 to 3 mm - 14 - 24 - Shower or two. - 50% - - - 11 - 1 to 4 mm - 15 - 23 - Shower or two. - 60% - - - 17 - 0 to 1 mm - 14 - 24 - Possible shower. - 40% - - - - - - 3 - Mostly clear. - 5% - - - 3 - 16 - 25 - Partly cloudy. - 5% - - - 3 - 16 - 27 - Partly cloudy. - 10% - - - 12 - 5 to 8 mm - 16 - 25 - Rain at times. Possible storm. - 80% - - - 3 - 0 to 1 mm - 13 - 23 - Mostly sunny. - 30% - - - 11 - 2 to 8 mm - 12 - 21 - Shower or two. - 60% - - - 11 - 1 to 4 mm - 14 - 20 - Shower or two. - 60% - - - 17 - 0 to 1 mm - 12 - 22 - Possible morning shower. - 40% - - - - - 3 - Mostly clear. - 0% - - - 3 - 14 - 26 - Partly cloudy. - 5% - - - 3 - 14 - 28 - Partly cloudy. - 10% - - - 12 - 5 to 8 mm - 15 - 25 - Rain at times. Possible storm. - 80% - - - 3 - 0 to 0.2 mm - 12 - 23 - Mostly sunny. - 30% - - - 11 - 0 to 3 mm - 10 - 21 - Shower or two. - 50% - - - 11 - 0 to 2 mm - 11 - 20 - Shower or two. - 50% - - - 3 - 10 - 22 - Partly cloudy. - 20% - - - - - 3 - Mostly clear. - 0% - - - 3 - 15 - 26 - Partly cloudy. - 10% - - - 3 - 16 - 28 - Partly cloudy. - 10% - - - 12 - 5 to 8 mm - 17 - 25 - Rain at times. Possible storm. - 80% - - - 3 - 14 - 23 - Mostly sunny. - 20% - - - 3 - 0 to 0.4 mm - 11 - 21 - Partly cloudy. - 30% - - - 3 - 0 to 0.4 mm - 12 - 21 - Partly cloudy. - 30% - - - 3 - 11 - 22 - Mostly sunny. - 10% - - - - - 3 - Mostly clear. - 0% - - - 3 - 15 - 25 - Partly cloudy. - 10% - - - 3 - 15 - 26 - Partly cloudy. - 10% - - - 12 - 5 to 8 mm - 16 - 24 - Rain at times. Possible storm. - 80% - - - 3 - 12 - 22 - Mostly sunny. - 20% - - - 11 - 1 to 6 mm - 12 - 20 - Shower or two. - 60% - - - 11 - 1 to 3 mm - 12 - 20 - Shower or two. - 50% - - - 3 - 0 to 0.4 mm - 11 - 22 - Mostly sunny. - 30% - - - - - 3 - Mostly clear. - 0% - - - 3 - 12 - 25 - Partly cloudy. - 5% - - - 3 - 13 - 27 - Partly cloudy. - 10% - - - 12 - 5 to 8 mm - 14 - 25 - Rain at times. Possible storm. - 80% - - - 3 - 11 - 23 - Mostly sunny. - 20% - - - 17 - 0 to 1 mm - 8 - 21 - Possible shower. - 40% - - - 17 - 0 to 1 mm - 9 - 20 - Possible shower. - 40% - - - 3 - 8 - 22 - Mostly sunny. - 10% - - - - - 3 - Mostly clear. - 0% - - - 3 - 15 - 25 - Partly cloudy. - 10% - - - 3 - 15 - 26 - Partly cloudy. - 10% - - - 12 - 5 to 8 mm - 16 - 24 - Rain at times. Possible storm. - 80% - - - 3 - 12 - 22 - Mostly sunny. - 20% - - - 11 - 1 to 5 mm - 12 - 20 - Shower or two. - 50% - - - 11 - 0 to 3 mm - 13 - 20 - Shower or two. - 50% - - - 3 - 0 to 0.2 mm - 11 - 22 - Mostly sunny. - 30% - - - - - 3 - Mostly clear. - 0% - - - 3 - 15 - 24 - Partly cloudy. - 10% - - - 3 - 15 - 25 - Partly cloudy. - 10% - - - 12 - 5 to 8 mm - 16 - 23 - Rain at times. Possible storm. - 80% - - - 3 - 12 - 21 - Mostly sunny. - 20% - - - 11 - 1 to 6 mm - 11 - 19 - Shower or two. - 50% - - - 11 - 0 to 3 mm - 12 - 19 - Shower or two. - 50% - - - 3 - 0 to 0.2 mm - 10 - 21 - Mostly sunny. - 30% - - - - - 3 - Partly cloudy. - 0% - - - 3 - 13 - 26 - Partly cloudy. - 10% - - - 3 - 13 - 28 - Partly cloudy. - 20% - - - 12 - 6 to 10 mm - 16 - 24 - Rain at times. Possible storm. - 90% - - - 3 - 0 to 0.4 mm - 11 - 22 - Mostly sunny. - 30% - - - 3 - 7 - 20 - Partly cloudy. - 20% - - - 3 - 9 - 19 - Partly cloudy. - 20% - - - 3 - 7 - 21 - Mostly sunny. - 5% - - - - - 3 - Mostly clear. - 10% - - - 3 - 18 - 25 - Partly cloudy. - 10% - - - 3 - 18 - 26 - Mostly sunny. - 20% - - - 12 - 5 to 8 mm - 19 - 25 - Rain at times. Possible storm. - 80% - - - 11 - 0 to 3 mm - 16 - 23 - Shower or two. - 50% - - - 11 - 3 to 10 mm - 15 - 21 - Showers. - 80% - - - 11 - 2 to 5 mm - 16 - 21 - Shower or two. - 70% - - - 11 - 0 to 2 mm - 14 - 22 - Shower or two. - 50% - - - - - 3 - Mostly clear. - 5% - - - 3 - 14 - 25 - Partly cloudy. - 5% - - - 3 - 14 - 27 - Partly cloudy. - 10% - - - 12 - 5 to 8 mm - 15 - 25 - Rain at times. Possible storm. - 80% - - - 3 - 0 to 0.4 mm - 11 - 23 - Mostly sunny. - 30% - - - 11 - 1 to 6 mm - 10 - 21 - Shower or two. - 60% - - - 11 - 1 to 4 mm - 11 - 20 - Shower or two. - 60% - - - 3 - 0 to 0.4 mm - 10 - 22 - Partly cloudy. - 30% - - - - - 3 - Mostly clear. - 5% - - - 3 - 15 - 26 - Partly cloudy. - 5% - - - 3 - 15 - 27 - Partly cloudy. - 10% - - - 12 - 5 to 8 mm - 15 - 25 - Rain at times. Possible storm. - 80% - - - 3 - 0 to 0.4 mm - 12 - 23 - Mostly sunny. - 30% - - - 11 - 1 to 5 mm - 11 - 21 - Shower or two. - 60% - - - 11 - 1 to 3 mm - 12 - 20 - Shower or two. - 60% - - - 3 - 0 to 1 mm - 10 - 22 - Partly cloudy. - 30% - - - - - 3 - Mostly clear. - 5% - - - 3 - 19 - 23 - Partly cloudy. - 10% - - - 3 - 20 - 23 - Partly cloudy. - 10% - - - 12 - 5 to 8 mm - 20 - 23 - Rain at times. Possible storm. - 80% - - - 3 - 0 to 0.4 mm - 17 - 21 - Mostly sunny. - 30% - - - 11 - 2 to 8 mm - 17 - 20 - Shower or two. - 70% - - - 11 - 1 to 4 mm - 18 - 19 - Shower or two. - 60% - - - 3 - 0 to 1 mm - 16 - 20 - Partly cloudy. - 30% - - - - - 3 - Mostly clear. - 5% - - - 3 - 15 - 25 - Partly cloudy. - 5% - - - 3 - 15 - 27 - Partly cloudy. - 10% - - - 12 - 5 to 8 mm - 15 - 25 - Rain at times. Possible storm. - 80% - - - 3 - 0 to 1 mm - 13 - 22 - Mostly sunny. - 30% - - - 11 - 1 to 5 mm - 11 - 20 - Shower or two. - 60% - - - 11 - 1 to 3 mm - 12 - 20 - Shower or two. - 60% - - - 3 - 0 to 1 mm - 11 - 21 - Partly cloudy. - 30% - - - - - 3 - Partly cloudy. - 0% - - - 3 - 14 - 25 - Partly cloudy. - 10% - - - 3 - 15 - 28 - Partly cloudy. - 20% - - - 12 - 6 to 10 mm - 17 - 24 - Rain at times. Possible storm. - 90% - - - 3 - 12 - 22 - Mostly sunny. - 20% - - - 3 - 8 - 21 - Partly cloudy. - 20% - - - 3 - 10 - 19 - Partly cloudy. - 20% - - - 3 - 9 - 21 - Mostly sunny. - 10% - - - - - - 3 - Partly cloudy. - 5% - - - 4 - 8 - 21 - Cloudy. - 10% - - - 3 - 8 - 23 - Partly cloudy. - 10% - - - 12 - 5 to 10 mm - 8 - 21 - Rain at times. - 70% - - - 11 - 1 to 6 mm - 9 - 17 - Shower or two. - 60% - - - 3 - 2 - 16 - Partly cloudy. - 10% - - - 3 - 5 - 17 - Partly cloudy. - 10% - - - 3 - 1 - 17 - Mostly sunny. - 5% - - - - - 3 - Partly cloudy. - 10% - - - 4 - 9 - 22 - Cloudy. - 20% - - - 3 - 9 - 23 - Partly cloudy. - 10% - - - 12 - 2 to 5 mm - 9 - 22 - Rain at times. - 60% - - - 11 - 1 to 5 mm - 11 - 18 - Shower or two. - 60% - - - 3 - 3 - 18 - Partly cloudy. - 10% - - - 3 - 5 - 17 - Partly cloudy. - 10% - - - 3 - 2 - 18 - Mostly sunny. - 5% - - - - - 3 - Partly cloudy. - 5% - - - 4 - 13 - 25 - Cloudy. - 20% - - - 3 - 12 - 26 - Partly cloudy. - 10% - - - 12 - 6 to 10 mm - 12 - 23 - Rain at times. - 70% - - - 11 - 3 to 8 mm - 13 - 21 - Shower or two. - 60% - - - 3 - 7 - 22 - Mostly sunny. - 0% - - - 3 - 8 - 22 - Mostly sunny. - 0% - - - 3 - 6 - 21 - Mostly sunny. - 0% - - - - - 4 - Cloudy. - 20% - - - 4 - 0 to 0.4 mm - 10 - 20 - Cloudy. - 30% - - - 3 - 10 - 21 - Partly cloudy. - 20% - - - 12 - 2 to 5 mm - 9 - 21 - Late rain at times. - 60% - - - 11 - 2 to 5 mm - 11 - 18 - Shower or two. - 70% - - - 3 - 3 - 18 - Mostly sunny. - 5% - - - 3 - 5 - 18 - Mostly sunny. - 5% - - - 3 - 3 - 18 - Mostly sunny. - 5% - - - - - 4 - Cloudy. - 30% - - - 4 - 0 to 1 mm - 11 - 20 - Cloudy. - 30% - - - 3 - 11 - 21 - Partly cloudy. - 20% - - - 17 - 0 to 2 mm - 10 - 22 - Possible late shower. - 40% - - - 11 - 2 to 5 mm - 12 - 20 - Shower or two. - 60% - - - 3 - 4 - 18 - Mostly sunny. - 10% - - - 3 - 6 - 19 - Mostly sunny. - 10% - - - 3 - 4 - 19 - Mostly sunny. - 5% - - - - - 3 - Partly cloudy. - 10% - - - 4 - 9 - 19 - Cloudy. - 20% - - - 3 - 9 - 20 - Partly cloudy. - 10% - - - 12 - 2 to 4 mm - 9 - 19 - Rain at times. - 60% - - - 11 - 1 to 5 mm - 11 - 16 - Shower or two. - 60% - - - 3 - 3 - 15 - Partly cloudy. - 5% - - - 3 - 6 - 15 - Partly cloudy. - 10% - - - 3 - 3 - 15 - Mostly sunny. - 5% - - - - - - 3 - Mostly clear. - 0% - - - 3 - 16 - 22 - Partly cloudy. - 10% - - - 3 - 17 - 24 - Partly cloudy. - 20% - - - 12 - 5 to 8 mm - 18 - 22 - Rain at times. Possible storm. - 80% - - - 3 - 14 - 20 - Mostly sunny. - 10% - - - 17 - 0 to 4 mm - 14 - 18 - Possible shower. - 40% - - - 17 - 0 to 2 mm - 13 - 17 - Possible shower. - 40% - - - 3 - 12 - 20 - Partly cloudy. - 20% - - - - - 3 - Mostly clear. - 0% - - - 3 - 15 - 23 - Partly cloudy. - 10% - - - 3 - 16 - 24 - Partly cloudy. - 20% - - - 12 - 4 to 8 mm - 17 - 23 - Rain at times. Possible storm. - 80% - - - 3 - 12 - 21 - Mostly sunny. - 10% - - - 11 - 1 to 5 mm - 12 - 18 - Shower or two. - 50% - - - 17 - 0 to 2 mm - 12 - 18 - Possible shower. - 40% - - - 3 - 11 - 20 - Partly cloudy. - 20% - - - - - 3 - Mostly clear. - 0% - - - 10 - 12 - 20 - Morning fog/smoke. Partly cloudy. - 10% - - - 3 - 0 to 1 mm - 13 - 22 - Partly cloudy. - 30% - - - 12 - 6 to 10 mm - 14 - 19 - Rain at times. Possible storm. - 80% - - - 3 - 8 - 16 - Mostly sunny. - 5% - - - 3 - 0 to 0.4 mm - 7 - 14 - Partly cloudy. - 30% - - - 3 - 0 to 0.2 mm - 7 - 14 - Partly cloudy. - 30% - - - 3 - 6 - 16 - Mostly sunny. - 10% - - - - - 3 - Mostly clear. - 0% - - - 3 - 14 - 25 - Partly cloudy. - 10% - - - 3 - 0 to 1 mm - 15 - 26 - Partly cloudy. - 30% - - - 12 - 5 to 8 mm - 16 - 23 - Rain at times. Possible storm. - 80% - - - 3 - 11 - 21 - Mostly sunny. - 10% - - - 17 - 0 to 3 mm - 11 - 19 - Possible shower. - 40% - - - 3 - 0 to 1 mm - 10 - 18 - Partly cloudy. - 30% - - - 3 - 10 - 21 - Partly cloudy. - 10% - - - - - 3 - Mostly clear. - 0% - - - 3 - 14 - 25 - Partly cloudy. - 10% - - - 3 - 0 to 0.2 mm - 15 - 26 - Partly cloudy. - 30% - - - 12 - 5 to 8 mm - 16 - 24 - Rain at times. Possible storm. - 80% - - - 3 - 11 - 22 - Mostly sunny. - 10% - - - 11 - 1 to 4 mm - 11 - 20 - Shower or two. - 60% - - - 17 - 0 to 2 mm - 11 - 20 - Possible shower. - 40% - - - 3 - 10 - 21 - Partly cloudy. - 20% - - - - - 3 - Mostly clear. - 0% - - - 3 - 13 - 24 - Partly cloudy. - 10% - - - 3 - 14 - 26 - Partly cloudy. - 20% - - - 12 - 4 to 6 mm - 15 - 24 - Rain at times. Possible storm. - 80% - - - 3 - 11 - 22 - Mostly sunny. - 10% - - - 11 - 0 to 3 mm - 11 - 19 - Shower or two. - 50% - - - 17 - 0 to 1 mm - 10 - 18 - Possible shower. - 40% - - - 3 - 9 - 21 - Partly cloudy. - 20% - - - - - 3 - Mostly clear. - 0% - - - 3 - 17 - 23 - Partly cloudy. - 10% - - - 3 - 18 - 24 - Partly cloudy. - 20% - - - 12 - 4 to 8 mm - 18 - 22 - Rain at times. Possible storm. - 80% - - - 3 - 14 - 21 - Mostly sunny. - 10% - - - 11 - 0 to 4 mm - 14 - 18 - Shower or two. - 50% - - - 17 - 0 to 2 mm - 14 - 18 - Possible shower. - 40% - - - 3 - 13 - 20 - Partly cloudy. - 20% - - - - - 3 - Mostly clear. - 0% - - - 3 - 17 - 23 - Partly cloudy. - 10% - - - 3 - 18 - 24 - Partly cloudy. - 20% - - - 12 - 4 to 8 mm - 19 - 23 - Rain at times. Possible storm. - 80% - - - 3 - 15 - 21 - Mostly sunny. - 10% - - - 11 - 1 to 5 mm - 14 - 18 - Shower or two. - 50% - - - 17 - 0 to 2 mm - 14 - 17 - Possible shower. - 40% - - - 3 - 13 - 20 - Partly cloudy. - 20% - - - - - - 3 - Mostly clear. - 0% - - - 3 - 12 - 25 - Partly cloudy. - 10% - - - 17 - 0 to 5 mm - 13 - 25 - Possible late shower. - 40% - - - 12 - 6 to 10 mm - 14 - 25 - Rain clearing. Possible storm. - 80% - - - 3 - 9 - 22 - Mostly sunny. - 10% - - - 17 - 0 to 1 mm - 9 - 19 - Possible shower. - 40% - - - 3 - 0 to 0.4 mm - 8 - 18 - Partly cloudy. - 30% - - - 3 - 7 - 21 - Mostly sunny. - 10% - - - - - 3 - Mostly clear. - 0% - - - 3 - 16 - 23 - Partly cloudy. - 10% - - - 3 - 0 to 4 mm - 16 - 23 - Partly cloudy. - 30% - - - 12 - 8 to 15 mm - 17 - 22 - Rain clearing. Possible storm. - 80% - - - 3 - 12 - 20 - Mostly sunny. - 10% - - - 17 - 0 to 2 mm - 13 - 18 - Possible shower. - 40% - - - 3 - 0 to 0.4 mm - 11 - 18 - Partly cloudy. - 30% - - - 3 - 11 - 19 - Mostly sunny. - 10% - - - - - 3 - Mostly clear. - 0% - - - 3 - 13 - 24 - Partly cloudy. - 5% - - - 3 - 0 to 1 mm - 13 - 26 - Partly cloudy. - 30% - - - 12 - 6 to 10 mm - 15 - 22 - Rain clearing. Possible storm. - 80% - - - 3 - 9 - 20 - Partly cloudy. - 10% - - - 3 - 0 to 1 mm - 11 - 18 - Partly cloudy. - 30% - - - 3 - 8 - 18 - Partly cloudy. - 10% - - - 3 - 7 - 19 - Mostly sunny. - 5% - - - - - 3 - Mostly clear. - 0% - - - 3 - 14 - 23 - Partly cloudy. - 5% - - - 3 - 0 to 1 mm - 14 - 25 - Partly cloudy. - 30% - - - 12 - 8 to 15 mm - 15 - 21 - Rain clearing. Possible storm. - 80% - - - 3 - 10 - 19 - Partly cloudy. - 20% - - - 17 - 0 to 2 mm - 11 - 18 - Possible shower. - 40% - - - 3 - 9 - 18 - Partly cloudy. - 20% - - - 3 - 8 - 19 - Mostly sunny. - 5% - - - - - 3 - Mostly clear. - 0% - - - 3 - 10 - 20 - Partly cloudy. - 10% - - - 17 - 0 to 4 mm - 11 - 21 - Possible shower. - 40% - - - 12 - 4 to 6 mm - 13 - 18 - Rain clearing. Possible storm. - 80% - - - 3 - 7 - 15 - Mostly sunny. - 5% - - - 17 - 0 to 1 mm - 6 - 12 - Possible shower. - 40% - - - 3 - 0 to 0.4 mm - 6 - 13 - Partly cloudy. - 30% - - - 3 - 5 - 15 - Mostly sunny. - 10% - - - - - 3 - Mostly clear. - 0% - - - 3 - 16 - 23 - Partly cloudy. - 10% - - - 3 - 0 to 1 mm - 17 - 24 - Partly cloudy. - 30% - - - 12 - 6 to 10 mm - 18 - 23 - Rain clearing. Possible storm. - 80% - - - 3 - 14 - 21 - Mostly sunny. - 10% - - - 11 - 1 to 4 mm - 13 - 18 - Shower or two. Wind easing. - 60% - - - 17 - 0 to 1 mm - 13 - 18 - Possible shower. - 40% - - - 3 - 12 - 19 - Partly cloudy. - 10% - - - - - 3 - Mostly clear. - 0% - - - 3 - 15 - 23 - Partly cloudy. - 5% - - - 3 - 0 to 1 mm - 15 - 24 - Partly cloudy. - 30% - - - 12 - 8 to 15 mm - 16 - 21 - Rain clearing. Possible storm. - 90% - - - 3 - 11 - 19 - Partly cloudy. - 20% - - - 17 - 0 to 2 mm - 12 - 17 - Possible shower. - 40% - - - 3 - 10 - 17 - Partly cloudy. - 20% - - - 3 - 8 - 19 - Mostly sunny. - 10% - - - - - 3 - Mostly clear. - 0% - - - 3 - 15 - 23 - Partly cloudy. - 5% - - - 3 - 0 to 2 mm - 15 - 24 - Partly cloudy. - 30% - - - 12 - 8 to 10 mm - 16 - 22 - Rain clearing. Possible storm. - 80% - - - 3 - 11 - 20 - Partly cloudy. - 20% - - - 17 - 0 to 2 mm - 12 - 18 - Possible shower. - 40% - - - 3 - 0 to 0.4 mm - 10 - 18 - Partly cloudy. - 30% - - - 3 - 9 - 19 - Mostly sunny. - 10% - - - - - - 3 - Partly cloudy. - 0% - - - 4 - 0 to 0.4 mm - 10 - 18 - Cloudy. - 30% - - - 11 - 3 to 6 mm - 11 - 20 - Shower or two. - 70% - - - 16 - 30 to 45 mm - 11 - 16 - Rain. Possible storm. - 90% - - - 3 - 4 - 13 - Partly cloudy. - 10% - - - 3 - 3 - 16 - Partly cloudy. - 5% - - - 3 - 3 - 16 - Mostly sunny. - 0% - - - 3 - 2 - 15 - Mostly sunny. - 0% - - - - - 3 - Partly cloudy. - 0% - - - 3 - 0 to 0.4 mm - 12 - 23 - Partly cloudy. - 30% - - - 11 - 0 to 2 mm - 14 - 25 - Shower or two. - 50% - - - 16 - 20 to 30 mm - 14 - 19 - Rain. Possible storm. - 90% - - - 3 - 7 - 18 - Mostly sunny. - 10% - - - 3 - 6 - 20 - Partly cloudy. - 0% - - - 3 - 7 - 19 - Mostly sunny. - 0% - - - 3 - 5 - 19 - Mostly sunny. - 0% - - - - - 3 - Partly cloudy. - 0% - - - 4 - 0 to 0.4 mm - 11 - 21 - Cloudy. - 30% - - - 11 - 1 to 4 mm - 12 - 23 - Shower or two. - 60% - - - 16 - 20 to 30 mm - 12 - 19 - Rain. Possible storm. - 90% - - - 3 - 5 - 16 - Mostly sunny. - 5% - - - 3 - 3 - 18 - Partly cloudy. - 5% - - - 3 - 4 - 18 - Mostly sunny. - 5% - - - 3 - 2 - 18 - Mostly sunny. - 0% - - - - - 3 - Partly cloudy. - 0% - - - 3 - 9 - 19 - Partly cloudy. - 20% - - - 17 - 0 to 1 mm - 11 - 21 - Possible late shower. - 40% - - - 16 - 8 to 10 mm - 12 - 17 - Rain. Possible storm. - 90% - - - 3 - 5 - 15 - Mostly sunny. - 5% - - - 3 - 4 - 15 - Partly cloudy. - 10% - - - 3 - 5 - 15 - Partly cloudy. - 20% - - - 3 - 2 - 16 - Mostly sunny. - 5% - - - - - 3 - Mostly clear. - 0% - - - 3 - 13 - 18 - Partly cloudy. - 20% - - - 3 - 0 to 0.4 mm - 14 - 20 - Partly cloudy. - 30% - - - 16 - 5 to 8 mm - 16 - 17 - Rain. Possible storm. - 90% - - - 3 - 9 - 15 - Mostly sunny. - 5% - - - 3 - 8 - 13 - Partly cloudy. - 20% - - - 3 - 9 - 13 - Partly cloudy. - 20% - - - 3 - 7 - 15 - Mostly sunny. - 10% - - - - - 3 - Mostly clear. - 0% - - - 3 - 14 - 23 - Partly cloudy. - 10% - - - 3 - 15 - 25 - Partly cloudy. - 20% - - - 16 - 4 to 6 mm - 17 - 22 - Rain. Possible storm. - 80% - - - 3 - 11 - 20 - Mostly sunny. - 5% - - - 3 - 10 - 19 - Partly cloudy. - 20% - - - 3 - 11 - 18 - Partly cloudy. - 20% - - - 3 - 9 - 20 - Mostly sunny. - 10% - - - - - 3 - Partly cloudy. - 0% - - - 4 - 0 to 0.4 mm - 14 - 25 - Cloudy. - 30% - - - 11 - 3 to 6 mm - 15 - 27 - Shower or two. - 60% - - - 16 - 20 to 35 mm - 15 - 21 - Rain. Possible storm. - 90% - - - 3 - 8 - 19 - Mostly sunny. - 5% - - - 3 - 7 - 23 - Mostly sunny. - 0% - - - 3 - 7 - 22 - Mostly sunny. - 0% - - - 3 - 6 - 21 - Mostly sunny. - 0% - - - - - 3 - Mostly clear. - 0% - - - 3 - 12 - 20 - Partly cloudy. - 20% - - - 17 - 0 to 1 mm - 13 - 22 - Possible late shower. - 40% - - - 16 - 8 to 15 mm - 14 - 18 - Rain. Possible storm. - 90% - - - 3 - 7 - 15 - Mostly sunny. - 5% - - - 3 - 6 - 15 - Partly cloudy. - 20% - - - 3 - 7 - 16 - Partly cloudy. - 20% - - - 3 - 5 - 17 - Mostly sunny. - 5% - - - - - 3 - Partly cloudy. - 0% - - - 4 - 9 - 18 - Cloudy. - 20% - - - 11 - 0 to 2 mm - 11 - 20 - Shower or two. - 50% - - - 16 - 15 to 25 mm - 11 - 16 - Rain. Possible storm. - 90% - - - 3 - 4 - 14 - Mostly sunny. - 5% - - - 3 - 3 - 15 - Partly cloudy. - 10% - - - 3 - 4 - 15 - Partly cloudy. - 10% - - - 3 - 2 - 15 - Mostly sunny. - 5% - - - - - - 3 - Mostly clear. - 0% - - - 4 - 11 - 22 - Cloudy. - 20% - - - 16 - 3 to 8 mm - 12 - 23 - Rain at times. Possible storm. - 70% - - - 16 - 10 to 20 mm - 14 - 19 - Rain clearing. Possible storm. - 90% - - - 3 - 7 - 15 - Partly cloudy. - 5% - - - 3 - 5 - 16 - Partly cloudy. - 10% - - - 3 - 5 - 15 - Partly cloudy. - 10% - - - 3 - 5 - 16 - Mostly sunny. - 5% - - - - - 3 - Mostly clear. - 0% - - - 3 - 10 - 22 - Partly cloudy. - 20% - - - 16 - 4 to 10 mm - 12 - 22 - Rain at times. Possible storm. - 60% - - - 16 - 8 to 10 mm - 13 - 19 - Rain clearing. Possible storm. - 80% - - - 3 - 7 - 17 - Partly cloudy. - 5% - - - 3 - 6 - 15 - Partly cloudy. - 20% - - - 3 - 5 - 15 - Partly cloudy. - 10% - - - 3 - 4 - 18 - Mostly sunny. - 5% - - - - - 3 - Mostly clear. - 0% - - - 11 - 0 to 2 mm - 11 - 24 - Shower or two. - 50% - - - 16 - 15 to 25 mm - 13 - 25 - Rain. Possible storm. - 95% - - - 16 - 25 to 35 mm - 14 - 21 - Rain clearing. Possible storm. - 90% - - - 3 - 6 - 17 - Partly cloudy. - 10% - - - 3 - 3 - 21 - Mostly sunny. - 5% - - - 3 - 5 - 19 - Mostly sunny. - 0% - - - 3 - 5 - 19 - Mostly sunny. - 5% - - - - - 3 - Mostly clear. - 0% - - - 4 - 0 to 0.4 mm - 10 - 21 - Cloudy. - 30% - - - 16 - 5 to 10 mm - 11 - 22 - Rain at times. Possible storm. - 70% - - - 16 - 20 to 35 mm - 12 - 18 - Rain clearing. Possible storm. - 90% - - - 3 - 4 - 13 - Partly cloudy. - 10% - - - 3 - 2 - 16 - Partly cloudy. - 10% - - - 3 - 3 - 15 - Partly cloudy. - 5% - - - 3 - 3 - 16 - Mostly sunny. - 5% - - - - - 3 - Mostly clear. - 0% - - - 11 - 0 to 3 mm - 9 - 22 - Shower or two. - 50% - - - 16 - 20 to 35 mm - 11 - 22 - Rain. Possible storm. - 90% - - - 16 - 25 to 35 mm - 12 - 19 - Rain clearing. Possible storm. - 90% - - - 3 - 5 - 16 - Partly cloudy. - 5% - - - 3 - 4 - 18 - Partly cloudy. - 5% - - - 3 - 3 - 17 - Mostly sunny. - 5% - - - 3 - 3 - 18 - Mostly sunny. - 5% - - - - - - 3 - Partly cloudy. - 0% - - - 4 - 15 - 26 - Cloudy. - 10% - - - 3 - 14 - 27 - Partly cloudy. - 10% - - - 16 - 15 to 25 mm - 16 - 24 - Rain developing. Possible storm. - 80% - - - 17 - 0 to 6 mm - 13 - 21 - Possible shower. - 40% - - - 3 - 7 - 21 - Partly cloudy. - 0% - - - 3 - 10 - 21 - Partly cloudy. - 0% - - - 3 - 7 - 21 - Mostly sunny. - 0% - - - - - 4 - Cloudy. - 0% - - - 4 - 17 - 26 - Cloudy. - 20% - - - 3 - 17 - 29 - Partly cloudy. - 10% - - - 16 - 10 to 20 mm - 18 - 26 - Rain developing. Possible storm. - 80% - - - 17 - 0 to 6 mm - 15 - 23 - Possible morning shower. - 40% - - - 3 - 10 - 23 - Mostly sunny. - 0% - - - 3 - 11 - 24 - Mostly sunny. - 0% - - - 3 - 9 - 24 - Mostly sunny. - 0% - - - - - 3 - Partly cloudy. - 0% - - - 4 - 17 - 25 - Cloudy. - 20% - - - 3 - 17 - 28 - Partly cloudy. - 10% - - - 16 - 15 to 25 mm - 17 - 24 - Rain developing. Possible storm. - 90% - - - 3 - 0 to 3 mm - 14 - 22 - Mostly sunny. - 30% - - - 3 - 9 - 22 - Mostly sunny. - 0% - - - 3 - 11 - 22 - Mostly sunny. - 0% - - - 3 - 9 - 22 - Mostly sunny. - 0% - - - - - 3 - Partly cloudy. - 0% - - - 4 - 18 - 25 - Cloudy. - 20% - - - 3 - 17 - 27 - Partly cloudy. - 10% - - - 16 - 15 to 25 mm - 18 - 23 - Rain developing. Possible storm. - 90% - - - 3 - 0 to 2 mm - 14 - 21 - Mostly sunny. - 30% - - - 3 - 10 - 21 - Partly cloudy. - 0% - - - 3 - 12 - 20 - Partly cloudy. - 0% - - - 3 - 11 - 21 - Mostly sunny. - 0% - - - - - 3 - Partly cloudy. - 0% - - - 4 - 13 - 25 - Cloudy. - 20% - - - 3 - 12 - 27 - Partly cloudy. - 10% - - - 16 - 10 to 15 mm - 13 - 23 - Rain developing. Possible storm. - 80% - - - 17 - 0 to 6 mm - 11 - 21 - Possible morning shower. - 40% - - - 3 - 6 - 21 - Mostly sunny. - 0% - - - 3 - 7 - 21 - Mostly sunny. - 0% - - - 3 - 6 - 21 - Mostly sunny. - 0% - - - - - 3 - Partly cloudy. - 0% - - - 3 - 17 - 28 - Partly cloudy. - 10% - - - 17 - 0 to 1 mm - 18 - 29 - Possible shower. - 40% - - - 16 - 10 to 20 mm - 18 - 24 - Rain developing. Possible storm. - 90% - - - 3 - 10 - 22 - Mostly sunny. - 10% - - - 3 - 9 - 22 - Mostly sunny. - 0% - - - 3 - 9 - 23 - Mostly sunny. - 0% - - - 3 - 9 - 23 - Mostly sunny. - 0% - - - - - 3 - Partly cloudy. - 0% - - - 4 - 15 - 27 - Cloudy. - 20% - - - 3 - 15 - 29 - Partly cloudy. - 5% - - - 16 - 8 to 15 mm - 15 - 27 - Rain developing. Possible storm. - 80% - - - 11 - 0 to 8 mm - 14 - 24 - Morning shower or two. - 50% - - - 3 - 8 - 24 - Mostly sunny. - 0% - - - 3 - 9 - 25 - Mostly sunny. - 0% - - - 3 - 8 - 24 - Mostly sunny. - 0% - - - - - 3 - Partly cloudy. - 0% - - - 4 - 18 - 25 - Cloudy. - 20% - - - 4 - 18 - 28 - Cloudy. - 20% - - - 16 - 15 to 20 mm - 18 - 23 - Rain developing. Possible storm. - 90% - - - 3 - 13 - 22 - Mostly sunny. - 20% - - - 3 - 10 - 22 - Mostly sunny. - 0% - - - 3 - 12 - 22 - Mostly sunny. - 0% - - - 3 - 10 - 23 - Mostly sunny. - 0% - - - - - 3 - Partly cloudy. - 0% - - - 4 - 14 - 25 - Cloudy. - 20% - - - 3 - 13 - 27 - Partly cloudy. - 10% - - - 16 - 15 to 25 mm - 15 - 24 - Rain developing. Possible storm. - 90% - - - 3 - 0 to 3 mm - 11 - 22 - Mostly sunny. - 30% - - - 3 - 6 - 20 - Partly cloudy. - 5% - - - 3 - 9 - 20 - Partly cloudy. - 5% - - - 3 - 6 - 21 - Mostly sunny. - 0% - - - - - - 3 - Partly cloudy. - 0% - - - 4 - 0 to 0.4 mm - 16 - 25 - Cloudy. - 30% - - - 11 - 2 to 5 mm - 17 - 27 - Shower or two. - 60% - - - 16 - 20 to 30 mm - 16 - 22 - Rain. Possible storm. - 90% - - - 3 - 9 - 19 - Mostly sunny. - 5% - - - 3 - 8 - 22 - Mostly sunny. - 0% - - - 3 - 9 - 22 - Mostly sunny. - 0% - - - 3 - 8 - 21 - Mostly sunny. - 0% - - - - - 3 - Partly cloudy. - 0% - - - 3 - 11 - 23 - Partly cloudy. - 20% - - - 4 - 0 to 1 mm - 12 - 25 - Cloudy. - 30% - - - 16 - 15 to 25 mm - 13 - 20 - Rain. Possible storm. - 90% - - - 3 - 6 - 19 - Mostly sunny. - 10% - - - 3 - 5 - 20 - Mostly sunny. - 0% - - - 3 - 6 - 20 - Mostly sunny. - 0% - - - 3 - 4 - 20 - Mostly sunny. - 0% - - - - - 3 - Partly cloudy. - 0% - - - 4 - 0 to 1 mm - 16 - 24 - Cloudy. - 30% - - - 16 - 6 to 10 mm - 17 - 25 - Rain. Possible storm. - 80% - - - 16 - 25 to 40 mm - 17 - 21 - Rain. Possible storm. - 90% - - - 3 - 9 - 18 - Partly cloudy. - 5% - - - 3 - 8 - 21 - Mostly sunny. - 0% - - - 3 - 9 - 21 - Mostly sunny. - 0% - - - 3 - 8 - 20 - Mostly sunny. - 0% - - - - - 3 - Partly cloudy. - 0% - - - 11 - 1 to 3 mm - 17 - 23 - Shower or two. - 50% - - - 16 - 15 to 20 mm - 17 - 25 - Rain. Possible storm. - 95% - - - 16 - 10 to 20 mm - 15 - 21 - Rain clearing. Possible storm. - 90% - - - 3 - 10 - 17 - Partly cloudy. - 5% - - - 3 - 7 - 20 - Mostly sunny. - 0% - - - 3 - 8 - 20 - Mostly sunny. - 0% - - - 3 - 8 - 20 - Mostly sunny. - 0% - - - - - 3 - Partly cloudy. - 0% - - - 3 - 17 - 26 - Partly cloudy. - 20% - - - 11 - 0 to 2 mm - 18 - 27 - Shower or two developing. - 50% - - - 16 - 20 to 30 mm - 18 - 22 - Rain. Possible storm. - 90% - - - 3 - 11 - 21 - Mostly sunny. - 10% - - - 3 - 10 - 22 - Mostly sunny. - 0% - - - 3 - 10 - 22 - Mostly sunny. - 0% - - - 3 - 9 - 22 - Mostly sunny. - 0% - - - - - 3 - Partly cloudy. - 0% - - - 11 - 0 to 2 mm - 17 - 25 - Shower or two. - 50% - - - 16 - 10 to 20 mm - 18 - 26 - Rain. Possible storm. - 90% - - - 16 - 15 to 20 mm - 16 - 22 - Rain clearing. Possible storm. - 90% - - - 3 - 9 - 19 - Partly cloudy. - 0% - - - 3 - 8 - 21 - Mostly sunny. - 0% - - - 3 - 9 - 22 - Mostly sunny. - 0% - - - 3 - 9 - 22 - Mostly sunny. - 0% - - - - - 3 - Partly cloudy. - 0% - - - 17 - 0 to 1 mm - 16 - 25 - Possible shower. - 40% - - - 16 - 10 to 15 mm - 17 - 25 - Rain. Possible storm. - 90% - - - 16 - 20 to 35 mm - 16 - 22 - Rain clearing. Possible storm. - 90% - - - 3 - 9 - 18 - Partly cloudy. - 5% - - - 3 - 8 - 21 - Mostly sunny. - 0% - - - 3 - 8 - 21 - Mostly sunny. - 0% - - - 3 - 8 - 21 - Mostly sunny. - 0% - - - - - 3 - Partly cloudy. - 0% - - - 17 - 0 to 1 mm - 15 - 24 - Possible shower. - 40% - - - 16 - 10 to 20 mm - 16 - 25 - Rain. Possible storm. - 90% - - - 16 - 30 to 45 mm - 16 - 21 - Rain. Possible storm. - 90% - - - 3 - 8 - 17 - Partly cloudy. - 5% - - - 3 - 7 - 21 - Partly cloudy. - 0% - - - 3 - 7 - 20 - Mostly sunny. - 0% - - - 3 - 7 - 19 - Mostly sunny. - 0% - - - - - 3 - Partly cloudy. - 0% - - - 11 - 3 to 6 mm - 17 - 24 - Shower or two. - 70% - - - 16 - 30 to 50 mm - 18 - 25 - Rain. Possible storm. - 95% - - - 16 - 8 to 10 mm - 16 - 21 - Rain clearing. Possible storm. - 80% - - - 3 - 11 - 18 - Partly cloudy. - 0% - - - 3 - 9 - 21 - Mostly sunny. - 0% - - - 3 - 10 - 21 - Mostly sunny. - 0% - - - 3 - 10 - 21 - Mostly sunny. - 0% - - - - - 3 - Partly cloudy. - 0% - - - 4 - 18 - 26 - Cloudy. - 20% - - - 16 - 5 to 8 mm - 19 - 26 - Rain. Possible storm. - 80% - - - 16 - 20 to 30 mm - 18 - 23 - Rain. Possible storm. - 90% - - - 3 - 11 - 20 - Mostly sunny. - 0% - - - 3 - 10 - 21 - Mostly sunny. - 0% - - - 3 - 10 - 21 - Mostly sunny. - 0% - - - 3 - 10 - 21 - Mostly sunny. - 0% - - - - - 3 - Partly cloudy. - 0% - - - 11 - 1 to 3 mm - 15 - 23 - Shower or two. - 50% - - - 16 - 20 to 35 mm - 17 - 25 - Rain. Possible storm. - 95% - - - 16 - 15 to 25 mm - 15 - 21 - Rain clearing. Possible storm. - 90% - - - 3 - 9 - 17 - Partly cloudy. - 5% - - - 3 - 7 - 20 - Mostly sunny. - 0% - - - 3 - 7 - 20 - Mostly sunny. - 0% - - - 3 - 8 - 20 - Mostly sunny. - 0% - - - - - 3 - Partly cloudy. - 0% - - - 4 - 0 to 0.4 mm - 17 - 25 - Cloudy. - 30% - - - 11 - 4 to 8 mm - 18 - 27 - Shower or two. - 70% - - - 16 - 20 to 35 mm - 17 - 22 - Rain. Possible storm. - 90% - - - 3 - 10 - 20 - Mostly sunny. - 0% - - - 3 - 9 - 22 - Mostly sunny. - 0% - - - 3 - 10 - 22 - Mostly sunny. - 0% - - - 3 - 9 - 21 - Mostly sunny. - 0% - - - - - - 3 - Partly cloudy. - 0% - - - 11 - 1 to 2 mm - 12 - 24 - Shower or two. - 60% - - - 16 - 25 to 40 mm - 14 - 25 - Rain. Possible storm. - 95% - - - 16 - 20 to 35 mm - 13 - 22 - Morning rain/storm clearing. - 90% - - - 3 - 7 - 18 - Partly cloudy. - 20% - - - 3 - 4 - 22 - Mostly sunny. - 0% - - - 3 - 5 - 21 - Mostly sunny. - 0% - - - 3 - 5 - 20 - Mostly sunny. - 5% - - - - - 3 - Mostly clear. - 0% - - - 11 - 0 to 2 mm - 13 - 23 - Shower or two. - 50% - - - 16 - 20 to 30 mm - 15 - 24 - Rain. Possible storm. - 95% - - - 16 - 25 to 40 mm - 14 - 19 - Morning rain/storm clearing. - 90% - - - 3 - 7 - 16 - Partly cloudy. - 5% - - - 3 - 5 - 19 - Mostly sunny. - 0% - - - 3 - 6 - 18 - Mostly sunny. - 0% - - - 3 - 5 - 18 - Mostly sunny. - 0% - - - - - 3 - Partly cloudy. - 0% - - - 11 - 2 to 4 mm - 11 - 20 - Shower or two. - 70% - - - 16 - 25 to 40 mm - 11 - 21 - Rain. Possible storm. - 95% - - - 16 - 20 to 30 mm - 11 - 18 - Morning rain/storm clearing. - 90% - - - 3 - 0 to 1 mm - 4 - 14 - Partly cloudy. - 30% - - - 3 - 2 - 19 - Partly cloudy. - 0% - - - 3 - 2 - 17 - Mostly sunny. - 0% - - - 3 - 2 - 16 - Mostly sunny. - 5% - - - - - 3 - Mostly clear. - 0% - - - 11 - 1 to 2 mm - 14 - 22 - Shower or two. - 50% - - - 16 - 15 to 25 mm - 15 - 24 - Rain. Possible storm. - 95% - - - 16 - 20 to 30 mm - 14 - 20 - Morning rain/storm clearing. - 90% - - - 3 - 8 - 16 - Partly cloudy. - 10% - - - 3 - 5 - 19 - Mostly sunny. - 0% - - - 3 - 7 - 19 - Mostly sunny. - 0% - - - 3 - 6 - 18 - Mostly sunny. - 0% - - - - - 3 - Partly cloudy. - 0% - - - 11 - 3 to 6 mm - 12 - 24 - Shower or two. - 70% - - - 16 - 40 to 70 mm - 13 - 25 - Rain. Possible storm. - 95% - - - 16 - 35 to 50 mm - 13 - 22 - Morning rain/storm clearing. - 90% - - - 3 - 6 - 19 - Partly cloudy. - 20% - - - 3 - 3 - 23 - Mostly sunny. - 0% - - - 3 - 4 - 21 - Mostly sunny. - 0% - - - 3 - 4 - 21 - Mostly sunny. - 5% - - - - - - 3 - Partly cloudy. - 0% - - - 11 - 1 to 3 mm - 15 - 22 - Shower or two. - 70% - - - 16 - 35 to 50 mm - 17 - 24 - Rain. Possible storm. - 95% - - - 12 - 10 to 15 mm - 15 - 21 - Rain clearing. - 90% - - - 3 - 10 - 17 - Partly cloudy. - 10% - - - 3 - 7 - 20 - Mostly sunny. - 0% - - - 3 - 7 - 19 - Mostly sunny. - 0% - - - 3 - 7 - 19 - Mostly sunny. - 5% - - - - - 3 - Partly cloudy. - 0% - - - 16 - 6 to 10 mm - 13 - 22 - Showers. Possible storm. - 90% - - - 16 - 35 to 50 mm - 15 - 22 - Rain. Possible storm. - 95% - - - 12 - 4 to 6 mm - 12 - 21 - Rain clearing. - 80% - - - 3 - 0 to 0.2 mm - 8 - 17 - Partly cloudy. - 30% - - - 3 - 6 - 21 - Mostly sunny. - 0% - - - 3 - 6 - 19 - Mostly sunny. - 0% - - - 3 - 7 - 19 - Mostly sunny. - 5% - - - - - 3 - Partly cloudy. - 5% - - - 16 - 10 to 20 mm - 15 - 23 - Rain. Possible storm. - 90% - - - 16 - 10 to 20 mm - 16 - 23 - Rain. Possible storm. - 95% - - - 1 - 11 - 20 - Sunny. - 20% - - - 3 - 10 - 18 - Partly cloudy. - 5% - - - 3 - 8 - 19 - Partly cloudy. - 0% - - - 3 - 7 - 20 - Mostly sunny. - 0% - - - 3 - 8 - 21 - Mostly sunny. - 0% - - - - - 3 - Partly cloudy. - 0% - - - 16 - 15 to 25 mm - 14 - 21 - Rain. Possible storm. - 90% - - - 16 - 10 to 20 mm - 15 - 22 - Rain. Possible storm. - 95% - - - 3 - 9 - 19 - Mostly sunny. - 20% - - - 3 - 10 - 17 - Partly cloudy. - 5% - - - 3 - 8 - 19 - Partly cloudy. - 0% - - - 3 - 7 - 19 - Mostly sunny. - 0% - - - 3 - 8 - 21 - Mostly sunny. - 5% - - - - - 3 - Partly cloudy. - 0% - - - 12 - 3 to 5 mm - 17 - 23 - Showers. Possible storm. - 80% - - - 16 - 20 to 35 mm - 18 - 24 - Rain. Possible storm. - 95% - - - 12 - 3 to 6 mm - 15 - 20 - Rain clearing. - 70% - - - 3 - 11 - 18 - Partly cloudy. - 5% - - - 3 - 8 - 19 - Mostly sunny. - 0% - - - 3 - 9 - 20 - Mostly sunny. - 0% - - - 3 - 9 - 20 - Mostly sunny. - 0% - - - - - 3 - Partly cloudy. - 0% - - - 16 - 5 to 10 mm - 14 - 21 - Showers. Possible storm. - 90% - - - 16 - 30 to 50 mm - 15 - 22 - Rain. Possible storm. - 95% - - - 12 - 1 to 3 mm - 11 - 21 - Morning rain at times. - 60% - - - 3 - 9 - 18 - Partly cloudy. - 20% - - - 3 - 7 - 21 - Mostly sunny. - 0% - - - 3 - 6 - 20 - Mostly sunny. - 0% - - - 3 - 6 - 20 - Mostly sunny. - 5% - - - - - 3 - Partly cloudy. - 0% - - - 16 - 8 to 15 mm - 14 - 21 - Showers. Possible storm. - 90% - - - 16 - 20 to 30 mm - 15 - 23 - Rain. Possible storm. - 95% - - - 3 - 0 to 1 mm - 10 - 21 - Mostly sunny. - 30% - - - 3 - 9 - 18 - Partly cloudy. - 5% - - - 3 - 8 - 21 - Mostly sunny. - 0% - - - 3 - 6 - 20 - Mostly sunny. - 0% - - - 3 - 7 - 21 - Mostly sunny. - 5% - - - - - 3 - Partly cloudy. - 0% - - - 11 - 1 to 2 mm - 16 - 22 - Shower or two. - 60% - - - 16 - 15 to 25 mm - 17 - 24 - Rain. Possible storm. - 95% - - - 12 - 15 to 20 mm - 15 - 20 - Rain clearing. - 90% - - - 3 - 10 - 16 - Partly cloudy. - 10% - - - 3 - 8 - 19 - Mostly sunny. - 0% - - - 3 - 9 - 19 - Mostly sunny. - 0% - - - 3 - 8 - 19 - Mostly sunny. - 5% - - - - - 3 - Partly cloudy. - 0% - - - 11 - 1 to 3 mm - 16 - 23 - Shower or two. - 70% - - - 16 - 20 to 35 mm - 16 - 25 - Rain. Possible storm. - 95% - - - 12 - 4 to 6 mm - 14 - 21 - Rain clearing. - 70% - - - 3 - 10 - 18 - Partly cloudy. - 5% - - - 3 - 7 - 20 - Mostly sunny. - 0% - - - 3 - 7 - 20 - Mostly sunny. - 0% - - - 3 - 7 - 21 - Mostly sunny. - 0% - - - - - - 3 - Partly cloudy. - 10% - - - 16 - 10 to 20 mm - 16 - 23 - Rain. Possible storm. - 90% - - - 16 - 20 to 35 mm - 17 - 23 - Rain. Possible storm. - 90% - - - 1 - 0 to 1 mm - 12 - 21 - Sunny. - 30% - - - 3 - 10 - 19 - Partly cloudy. - 0% - - - 3 - 9 - 19 - Partly cloudy. - 0% - - - 3 - 8 - 21 - Mostly sunny. - 0% - - - 3 - 9 - 22 - Mostly sunny. - 0% - - - - - 17 - Possible shower. - 40% - - - 11 - 2 to 3 mm - 15 - 23 - Shower or two. - 70% - - - 11 - 1 to 3 mm - 13 - 20 - Shower or two. - 50% - - - 1 - 8 - 20 - Sunny. - 0% - - - 3 - 9 - 18 - Partly cloudy. - 0% - - - 3 - 7 - 18 - Mostly sunny. - 0% - - - 3 - 7 - 20 - Mostly sunny. - 0% - - - 3 - 9 - 23 - Mostly sunny. - 0% - - - - - 3 - Partly cloudy. - 20% - - - 11 - 2 to 4 mm - 14 - 24 - Shower or two. - 70% - - - 1 - 0 to 1 mm - 11 - 23 - Sunny. - 30% - - - 3 - 7 - 21 - Mostly sunny. - 5% - - - 3 - 8 - 20 - Partly cloudy. - 0% - - - 3 - 6 - 21 - Mostly sunny. - 0% - - - 3 - 5 - 21 - Mostly sunny. - 0% - - - 3 - 7 - 24 - Mostly sunny. - 5% - - - - - 3 - Partly cloudy. - 10% - - - 16 - 10 to 20 mm - 13 - 23 - Rain. Possible storm. - 90% - - - 11 - 4 to 8 mm - 14 - 22 - Showers easing. - 80% - - - 3 - 7 - 20 - Mostly sunny. - 5% - - - 3 - 9 - 18 - Partly cloudy. - 0% - - - 3 - 6 - 19 - Partly cloudy. - 0% - - - 3 - 5 - 20 - Mostly sunny. - 0% - - - 3 - 6 - 22 - Mostly sunny. - 5% - - - - - 3 - Partly cloudy. - 30% - - - 16 - 8 to 15 mm - 14 - 24 - Showers. Possible storm. - 90% - - - 11 - 3 to 6 mm - 14 - 22 - Shower or two. - 70% - - - 3 - 8 - 20 - Mostly sunny. - 0% - - - 3 - 9 - 18 - Partly cloudy. - 0% - - - 3 - 6 - 19 - Partly cloudy. - 0% - - - 3 - 6 - 20 - Mostly sunny. - 0% - - - 3 - 7 - 23 - Mostly sunny. - 5% - - - - - 11 - Shower or two. - 60% - - - 16 - 4 to 8 mm - 15 - 26 - Showers. Possible storm. - 80% - - - 11 - 3 to 6 mm - 14 - 23 - Shower or two. - 70% - - - 1 - 9 - 22 - Sunny. - 0% - - - 3 - 9 - 21 - Partly cloudy. - 0% - - - 3 - 7 - 21 - Mostly sunny. - 0% - - - 3 - 7 - 22 - Mostly sunny. - 0% - - - 3 - 8 - 24 - Mostly sunny. - 0% - - - - - - 4 - Cloudy. - 0% - - - 4 - 0 to 0.4 mm - 17 - 26 - Cloudy. - 30% - - - 16 - 3 to 5 mm - 19 - 27 - Rain. Possible storm. - 90% - - - 12 - 8 to 10 mm - 18 - 23 - Rain. Possible storm. - 90% - - - 3 - 10 - 21 - Mostly sunny. - 0% - - - 3 - 9 - 21 - Mostly sunny. - 0% - - - 3 - 10 - 23 - Mostly sunny. - 0% - - - 3 - 10 - 23 - Mostly sunny. - 0% - - - - - 11 - Shower or two. - 60% - - - 16 - 10 to 15 mm - 17 - 25 - Rain. Possible storm. - 90% - - - 16 - 6 to 10 mm - 18 - 23 - Rain. Possible storm. - 80% - - - 3 - 0 to 1 mm - 13 - 21 - Mostly sunny. - 30% - - - 3 - 10 - 21 - Mostly sunny. - 0% - - - 3 - 10 - 20 - Mostly sunny. - 0% - - - 3 - 10 - 22 - Mostly sunny. - 0% - - - 3 - 11 - 23 - Mostly sunny. - 0% - - - - - 3 - Partly cloudy. - 0% - - - 11 - 1 to 4 mm - 17 - 24 - Shower or two. - 60% - - - 16 - 8 to 10 mm - 18 - 25 - Rain. Possible storm. - 90% - - - 12 - 8 to 15 mm - 17 - 21 - Morning rain. Possible storm. - 80% - - - 3 - 10 - 19 - Partly cloudy. - 0% - - - 3 - 9 - 20 - Mostly sunny. - 0% - - - 3 - 10 - 21 - Mostly sunny. - 0% - - - 3 - 11 - 22 - Mostly sunny. - 0% - - - - - 4 - Cloudy. - 0% - - - 4 - 17 - 28 - Cloudy. - 20% - - - 11 - 4 to 8 mm - 18 - 28 - Shower or two. - 70% - - - 12 - 15 to 20 mm - 17 - 24 - Rain. Possible storm. - 90% - - - 3 - 9 - 22 - Mostly sunny. - 5% - - - 3 - 9 - 22 - Mostly sunny. - 0% - - - 3 - 9 - 23 - Mostly sunny. - 0% - - - 3 - 9 - 24 - Mostly sunny. - 0% - - - - - 11 - Shower or two. - 50% - - - 16 - 15 to 25 mm - 16 - 25 - Rain. Possible storm. - 90% - - - 16 - 20 to 30 mm - 16 - 23 - Rain. Possible storm. - 90% - - - 1 - 0 to 1 mm - 11 - 21 - Sunny. - 30% - - - 3 - 8 - 20 - Partly cloudy. - 0% - - - 3 - 7 - 20 - Mostly sunny. - 0% - - - 3 - 7 - 21 - Mostly sunny. - 0% - - - 3 - 8 - 23 - Mostly sunny. - 0% - - - - - - 3 - Partly cloudy. - 0% - - - 11 - 2 to 5 mm - 6 - 11 - Shower or two. Windy. - 60% - - - 16 - 35 to 60 mm - 7 - 12 - Rain. Possible storm. - 95% - - - 16 - 25 to 45 mm - 7 - 9 - Rain easing. Possible storm. - 90% - - - 11 - 0 to 1 mm - 0 - 5 - Shower or two. - 50% - - - 3 - 0 - 7 - Partly cloudy. - 20% - - - 3 - -2 - 8 - Partly cloudy. - 10% - - - 3 - -3 - 9 - Mostly sunny. - 5% - - - - - 3 - Partly cloudy. - 0% - - - 11 - 2 to 4 mm - 10 - 12 - Shower or two. - 60% - - - 16 - 20 to 35 mm - 11 - 13 - Rain. Possible storm. - 95% - - - 16 - 25 to 45 mm - 11 - 12 - Morning rain/storm clearing. - 90% - - - 17 - 0 to 1 mm - 4 - 6 - Possible shower. - 40% - - - 3 - 3 - 10 - Partly cloudy. - 5% - - - 3 - 2 - 9 - Mostly sunny. - 0% - - - 3 - 2 - 9 - Mostly sunny. - 5% - - - - - 3 - Mostly clear. - 0% - - - 3 - 0 to 0.4 mm - 7 - 20 - Partly cloudy. - 30% - - - 16 - 2 to 4 mm - 8 - 22 - Rain at times. Possible storm. - 70% - - - 16 - 6 to 10 mm - 10 - 19 - Rain clearing. Possible storm. - 90% - - - 3 - 2 - 15 - Partly cloudy. - 10% - - - 3 - 3 - 14 - Partly cloudy. - 20% - - - 3 - 0 - 14 - Partly cloudy. - 5% - - - 3 - -1 - 17 - Mostly sunny. - 5% - - - - - 3 - Partly cloudy. - 0% - - - 11 - 2 to 5 mm - 10 - 12 - Shower or two. - 70% - - - 16 - 25 to 45 mm - 11 - 13 - Rain. Possible storm. - 95% - - - 16 - 30 to 45 mm - 11 - 11 - Morning rain/storm clearing. - 90% - - - 17 - 0 to 2 mm - 4 - 6 - Possible shower. - 40% - - - 3 - 3 - 11 - Partly cloudy. - 5% - - - 3 - 3 - 9 - Mostly sunny. - 0% - - - 3 - 2 - 9 - Mostly sunny. - 5% - - - - - 3 - Mostly clear. - 0% - - - 3 - 11 - 21 - Partly cloudy. - 10% - - - 11 - 0 to 2 mm - 12 - 23 - Late shower or two. - 50% - - - 16 - 6 to 10 mm - 11 - 19 - Rain clearing. Possible storm. - 90% - - - 3 - 0 to 0.4 mm - 6 - 14 - Partly cloudy. - 30% - - - 17 - 0 to 1 mm - 7 - 13 - Possible shower. - 40% - - - 3 - 4 - 13 - Partly cloudy. - 20% - - - 3 - 2 - 16 - Mostly sunny. - 5% - - - - - 3 - Partly cloudy. - 0% - - - 11 - 2 to 6 mm - 6 - 11 - Shower or two. Windy. - 60% - - - 16 - 45 to 70 mm - 7 - 12 - Rain. Possible storm. - 95% - - - 16 - 30 to 45 mm - 7 - 9 - Rain easing. Possible storm. - 95% - - - 15 - 0 to 1 mm - 0 - 5 - Snow shower or two. - 50% - - - 3 - 0 - 7 - Partly cloudy. - 20% - - - 3 - -2 - 8 - Partly cloudy. - 10% - - - 3 - -3 - 9 - Mostly sunny. - 5% - - - - - 9 - Very windy. Partly cloudy. - 0% - - - 9 - 3 to 8 mm - 6 - 9 - Shower or two. Very windy. - 60% - - - 16 - 45 to 80 mm - 7 - 10 - Rain. Possible storm. - 95% - - - 16 - 30 to 45 mm - 7 - 7 - Rain easing. Possible storm. - 95% - - - 15 - 0 to 2 mm - 1 - 3 - Snow shower or two. Windy. - 50% - - - 3 - 1 - 5 - Partly cloudy. - 20% - - - 3 - -1 - 6 - Partly cloudy. - 10% - - - 3 - -2 - 6 - Mostly sunny. - 5% - - - - - 3 - Partly cloudy. - 0% - - - 11 - 0 to 2 mm - 10 - 16 - Shower or two. - 50% - - - 16 - 8 to 15 mm - 10 - 17 - Rain. Possible storm. - 90% - - - 16 - 10 to 20 mm - 10 - 15 - Rain clearing. Possible storm. - 90% - - - 3 - 0 to 0.4 mm - 4 - 11 - Partly cloudy. - 30% - - - 3 - 0 to 0.2 mm - 4 - 11 - Partly cloudy. - 30% - - - 3 - 2 - 11 - Partly cloudy. - 10% - - - 3 - 1 - 13 - Mostly sunny. - 5% - - - - \ No newline at end of file diff --git a/test/bom_IDQ11295.xml b/test/bom_IDQ11295.xml deleted file mode 100644 index aad81a69..00000000 --- a/test/bom_IDQ11295.xml +++ /dev/null @@ -1,5992 +0,0 @@ - - - - - Australian Government Bureau of Meteorology - Queensland - QLDRO - http://www.bom.gov.au/other/copyright.shtml - http://www.bom.gov.au/other/disclaimer.shtml - - IDQ11295 - 2019-04-29T18:40:00Z - 2019-04-30T04:40:00+10:00 - 2019-04-29T18:40:08Z - 2019-04-30T18:40:00Z - 2019-04-30T05:00:00+10:00 - 2019-05-06T23:59:59+10:00 - 2019-04-30T06:10:00Z - 2019-04-30T16:10:00+10:00 - O - WSP - FPR - F - NEW - - - - - - - 17 - 26 - Possible shower. - 40% - - - 11 - 2 to 5 mm - 16 - 25 - Showers. - 80% - - - 11 - 0 to 2 mm - 16 - 27 - Shower or two clearing. - 60% - - - 11 - 0 to 2 mm - 15 - 26 - Shower or two. - 60% - - - 11 - 0 to 2 mm - 16 - 27 - Shower or two clearing. - 50% - - - 3 - 13 - 26 - Mostly sunny. - 5% - - - 3 - 12 - 25 - Mostly sunny. - 10% - - - - - 17 - 26 - Possible shower. - 40% - - - 11 - 2 to 5 mm - 15 - 25 - Showers. - 80% - - - 11 - 0 to 2 mm - 15 - 26 - Shower or two clearing. - 60% - - - 11 - 0 to 1 mm - 14 - 26 - Shower or two. - 50% - - - 11 - 0 to 2 mm - 15 - 27 - Shower or two clearing. - 50% - - - 1 - 11 - 26 - Sunny. - 5% - - - 3 - 11 - 25 - Mostly sunny. - 5% - - - - - 11 - 1 to 3 mm - 26 - Shower or two. - 50% - - - 11 - 2 to 5 mm - 20 - 26 - Showers. - 80% - - - 11 - 0 to 1 mm - 19 - 27 - Shower or two clearing. - 60% - - - 11 - 0 to 2 mm - 19 - 26 - Shower or two. - 60% - - - 11 - 0 to 2 mm - 19 - 27 - Shower or two. - 60% - - - 3 - 15 - 26 - Mostly sunny. - 10% - - - 3 - 15 - 25 - Partly cloudy. - 20% - - - - - 11 - 25 - Shower or two. - 60% - - - 11 - 2 to 5 mm - 19 - 25 - Showers. - 80% - - - 11 - 0 to 1 mm - 19 - 25 - Shower or two clearing. - 60% - - - 11 - 0 to 2 mm - 18 - 25 - Shower or two. - 60% - - - 11 - 0 to 2 mm - 17 - 26 - Shower or two. - 60% - - - 3 - 15 - 25 - Mostly sunny. - 10% - - - 3 - 15 - 24 - Partly cloudy. - 20% - - - - - 11 - 25 - Shower or two. - 70% - - - 11 - 2 to 6 mm - 19 - 25 - Showers. - 80% - - - 11 - 0 to 2 mm - 19 - 26 - Shower or two. - 60% - - - 11 - 0 to 2 mm - 18 - 25 - Shower or two. - 60% - - - 11 - 0 to 3 mm - 18 - 27 - Shower or two. - 60% - - - 3 - 0 to 0.2 mm - 16 - 24 - Mostly sunny. - 30% - - - 17 - 0 to 1 mm - 15 - 24 - Possible shower. - 40% - - - - - 11 - 25 - Shower or two. - 60% - - - 11 - 2 to 6 mm - 19 - 25 - Showers. - 80% - - - 11 - 0 to 2 mm - 18 - 26 - Shower or two clearing. - 70% - - - 11 - 0 to 2 mm - 18 - 25 - Shower or two. - 60% - - - 11 - 0 to 2 mm - 18 - 27 - Shower or two. - 60% - - - 3 - 15 - 25 - Mostly sunny. - 10% - - - 3 - 15 - 25 - Partly cloudy. - 20% - - - - - 11 - 25 - Shower or two. - 70% - - - 11 - 2 to 6 mm - 19 - 25 - Showers. - 90% - - - 11 - 0 to 2 mm - 19 - 26 - Shower or two. - 70% - - - 11 - 1 to 3 mm - 19 - 26 - Shower or two. - 60% - - - 11 - 1 to 3 mm - 19 - 27 - Shower or two. - 70% - - - 3 - 17 - 25 - Mostly sunny. - 20% - - - 3 - 0 to 0.4 mm - 16 - 24 - Partly cloudy. - 30% - - - - - 11 - 25 - Shower or two. - 60% - - - 11 - 2 to 6 mm - 18 - 25 - Showers. - 80% - - - 11 - 0 to 2 mm - 17 - 26 - Shower or two clearing. - 60% - - - 11 - 0 to 2 mm - 17 - 26 - Shower or two. - 60% - - - 11 - 0 to 2 mm - 17 - 27 - Shower or two. - 60% - - - 3 - 14 - 25 - Mostly sunny. - 10% - - - 3 - 13 - 25 - Partly cloudy. - 20% - - - - - 17 - 24 - Possible shower. - 40% - - - 11 - 2 to 5 mm - 16 - 24 - Showers. - 80% - - - 11 - 0 to 1 mm - 16 - 26 - Shower or two clearing. - 60% - - - 11 - 0 to 1 mm - 15 - 26 - Shower or two clearing. - 50% - - - 11 - 0 to 2 mm - 16 - 26 - Shower or two clearing. - 50% - - - 1 - 13 - 25 - Sunny. - 5% - - - 3 - 11 - 25 - Mostly sunny. - 10% - - - - - 11 - 25 - Shower or two. - 50% - - - 11 - 2 to 6 mm - 18 - 25 - Showers. - 80% - - - 11 - 0 to 2 mm - 17 - 26 - Shower or two clearing. - 70% - - - 11 - 0 to 2 mm - 17 - 25 - Shower or two clearing. - 60% - - - 11 - 0 to 2 mm - 17 - 26 - Shower or two. - 60% - - - 3 - 14 - 25 - Mostly sunny. - 10% - - - 3 - 14 - 24 - Partly cloudy. - 20% - - - - - 17 - 25 - Possible shower. - 40% - - - 11 - 1 to 5 mm - 16 - 25 - Shower or two. - 70% - - - 11 - 0 to 1 mm - 16 - 26 - Shower or two clearing. - 50% - - - 17 - 0 to 1 mm - 15 - 26 - Possible shower. - 40% - - - 17 - 0 to 2 mm - 16 - 27 - Possible shower. - 40% - - - 1 - 12 - 26 - Sunny. - 5% - - - 3 - 11 - 26 - Mostly sunny. - 5% - - - - - 11 - 25 - Shower or two. - 60% - - - 11 - 2 to 5 mm - 20 - 26 - Showers. - 80% - - - 11 - 0 to 2 mm - 20 - 26 - Shower or two. - 60% - - - 11 - 0 to 3 mm - 20 - 26 - Shower or two. - 60% - - - 11 - 0 to 3 mm - 19 - 27 - Shower or two. - 60% - - - 3 - 17 - 25 - Mostly sunny. - 20% - - - 3 - 0 to 0.2 mm - 17 - 25 - Partly cloudy. - 30% - - - - - 17 - 26 - Possible shower. - 40% - - - 11 - 2 to 5 mm - 17 - 26 - Showers. - 80% - - - 11 - 0 to 1 mm - 16 - 27 - Shower or two clearing. - 60% - - - 11 - 0 to 2 mm - 16 - 27 - Shower or two clearing. - 60% - - - 11 - 0 to 2 mm - 16 - 28 - Shower or two clearing. - 50% - - - 1 - 12 - 27 - Sunny. - 5% - - - 3 - 12 - 26 - Mostly sunny. - 10% - - - - - 11 - 25 - Shower or two. - 50% - - - 11 - 2 to 5 mm - 18 - 25 - Showers. - 80% - - - 11 - 0 to 2 mm - 17 - 26 - Shower or two clearing. - 70% - - - 11 - 0 to 2 mm - 17 - 25 - Shower or two. - 60% - - - 11 - 0 to 2 mm - 17 - 27 - Shower or two. - 60% - - - 3 - 13 - 25 - Mostly sunny. - 10% - - - 3 - 13 - 25 - Mostly sunny. - 10% - - - - - 17 - 25 - Possible shower. - 40% - - - 11 - 1 to 6 mm - 16 - 25 - Shower or two. - 70% - - - 11 - 0 to 1 mm - 16 - 26 - Shower or two clearing. - 50% - - - 17 - 0 to 1 mm - 15 - 26 - Possible shower. - 40% - - - 17 - 0 to 2 mm - 16 - 27 - Possible shower. - 40% - - - 1 - 12 - 26 - Sunny. - 5% - - - 3 - 11 - 25 - Mostly sunny. - 5% - - - - - 11 - 22 - Shower or two. - 60% - - - 11 - 3 to 8 mm - 16 - 21 - Showers. - 90% - - - 11 - 1 to 2 mm - 16 - 23 - Shower or two. - 70% - - - 11 - 1 to 3 mm - 15 - 22 - Shower or two. - 70% - - - 11 - 0 to 3 mm - 15 - 24 - Shower or two. - 60% - - - 3 - 13 - 21 - Mostly sunny. - 20% - - - 3 - 0 to 0.2 mm - 11 - 21 - Partly cloudy. - 30% - - - - - 11 - 25 - Shower or two. - 50% - - - 11 - 2 to 6 mm - 18 - 25 - Showers. - 80% - - - 11 - 0 to 1 mm - 17 - 26 - Shower or two clearing. - 60% - - - 11 - 0 to 2 mm - 17 - 26 - Shower or two. - 60% - - - 11 - 0 to 2 mm - 17 - 27 - Shower or two. - 60% - - - 3 - 14 - 25 - Mostly sunny. - 10% - - - 3 - 13 - 25 - Partly cloudy. - 20% - - - - - 11 - 25 - Shower or two. - 60% - - - 11 - 2 to 5 mm - 19 - 25 - Showers. - 80% - - - 11 - 0 to 1 mm - 19 - 26 - Shower or two clearing. - 60% - - - 11 - 0 to 2 mm - 18 - 25 - Shower or two. - 60% - - - 11 - 0 to 2 mm - 18 - 26 - Shower or two. - 60% - - - 3 - 15 - 25 - Mostly sunny. - 10% - - - 3 - 15 - 24 - Partly cloudy. - 20% - - - - - 11 - 4 to 8 mm - 25 - Shower or two. - 70% - - - 11 - 2 to 8 mm - 19 - 25 - Showers. - 80% - - - 11 - 0 to 2 mm - 19 - 26 - Shower or two. - 70% - - - 11 - 1 to 3 mm - 19 - 25 - Shower or two. - 60% - - - 11 - 0 to 3 mm - 18 - 27 - Shower or two. - 60% - - - 3 - 17 - 25 - Mostly sunny. - 20% - - - 17 - 0 to 1 mm - 16 - 24 - Possible shower. - 40% - - - - - 11 - 25 - Shower or two. - 50% - - - 11 - 2 to 5 mm - 18 - 25 - Showers. - 80% - - - 11 - 0 to 1 mm - 17 - 26 - Shower or two clearing. - 60% - - - 11 - 0 to 2 mm - 17 - 25 - Shower or two. - 60% - - - 11 - 0 to 2 mm - 17 - 27 - Shower or two. - 60% - - - 3 - 13 - 25 - Mostly sunny. - 10% - - - 3 - 13 - 24 - Partly cloudy. - 20% - - - - - 11 - 25 - Shower or two. - 70% - - - 11 - 3 to 8 mm - 19 - 24 - Showers. - 90% - - - 11 - 1 to 2 mm - 19 - 26 - Shower or two. - 70% - - - 11 - 1 to 3 mm - 18 - 25 - Shower or two. - 70% - - - 11 - 0 to 3 mm - 18 - 27 - Shower or two. - 60% - - - 3 - 16 - 25 - Mostly sunny. - 20% - - - 3 - 0 to 0.4 mm - 14 - 24 - Partly cloudy. - 30% - - - - - 11 - 25 - Shower or two. - 60% - - - 11 - 2 to 6 mm - 16 - 25 - Showers. - 80% - - - 11 - 0 to 2 mm - 16 - 26 - Shower or two. - 60% - - - 11 - 0 to 2 mm - 15 - 26 - Shower or two. - 60% - - - 11 - 0 to 2 mm - 15 - 27 - Shower or two. - 60% - - - 3 - 13 - 25 - Mostly sunny. - 10% - - - 3 - 12 - 25 - Partly cloudy. - 20% - - - - - 11 - 25 - Shower or two. - 60% - - - 11 - 2 to 6 mm - 19 - 25 - Showers. - 80% - - - 11 - 0 to 2 mm - 20 - 26 - Shower or two. - 60% - - - 11 - 1 to 2 mm - 19 - 25 - Shower or two. - 70% - - - 11 - 0 to 3 mm - 18 - 26 - Shower or two. - 60% - - - 3 - 0 to 0.2 mm - 16 - 25 - Mostly sunny. - 30% - - - 17 - 0 to 1 mm - 16 - 24 - Possible shower. - 40% - - - - - 11 - 25 - Shower or two. - 50% - - - 11 - 2 to 5 mm - 17 - 26 - Showers. - 80% - - - 11 - 0 to 1 mm - 17 - 27 - Shower or two clearing. - 60% - - - 11 - 0 to 2 mm - 17 - 26 - Shower or two. - 60% - - - 11 - 0 to 2 mm - 17 - 27 - Shower or two clearing. - 60% - - - 3 - 13 - 26 - Mostly sunny. - 10% - - - 3 - 13 - 25 - Mostly sunny. - 10% - - - - - 11 - 25 - Shower or two. - 60% - - - 11 - 2 to 6 mm - 20 - 25 - Showers. - 80% - - - 11 - 0 to 2 mm - 19 - 26 - Shower or two clearing. - 60% - - - 11 - 0 to 2 mm - 19 - 25 - Shower or two. - 60% - - - 11 - 0 to 2 mm - 18 - 27 - Shower or two. - 70% - - - 3 - 15 - 25 - Mostly sunny. - 20% - - - 3 - 16 - 24 - Partly cloudy. - 20% - - - - - 11 - 25 - Shower or two. - 70% - - - 11 - 2 to 6 mm - 17 - 26 - Showers. - 90% - - - 11 - 0 to 2 mm - 18 - 26 - Shower or two. - 60% - - - 11 - 1 to 3 mm - 17 - 26 - Shower or two. - 60% - - - 11 - 0 to 3 mm - 18 - 27 - Shower or two. - 60% - - - 3 - 15 - 25 - Mostly sunny. - 20% - - - 3 - 0 to 0.2 mm - 15 - 24 - Partly cloudy. - 30% - - - - - 11 - 4 to 8 mm - 25 - Shower or two. - 60% - - - 11 - 2 to 5 mm - 18 - 25 - Showers. - 80% - - - 11 - 0 to 2 mm - 19 - 26 - Shower or two. - 60% - - - 11 - 0 to 3 mm - 18 - 26 - Shower or two. - 60% - - - 11 - 0 to 3 mm - 18 - 27 - Shower or two. - 60% - - - 3 - 15 - 25 - Mostly sunny. - 20% - - - 3 - 0 to 0.2 mm - 15 - 25 - Partly cloudy. - 30% - - - - - 11 - 26 - Shower or two. - 60% - - - 11 - 2 to 6 mm - 18 - 26 - Showers. - 90% - - - 11 - 1 to 2 mm - 17 - 27 - Shower or two clearing. - 70% - - - 11 - 0 to 2 mm - 17 - 26 - Shower or two clearing. - 70% - - - 11 - 1 to 3 mm - 17 - 28 - Shower or two. - 70% - - - 3 - 14 - 25 - Mostly sunny. - 20% - - - 3 - 13 - 25 - Partly cloudy. - 20% - - - - - - 3 - 24 - Partly cloudy. - 10% - - - 4 - 0 to 0.4 mm - 15 - 25 - Cloudy. - 30% - - - 3 - 15 - 27 - Partly cloudy. - 5% - - - 3 - 15 - 27 - Partly cloudy. - 10% - - - 3 - 0 to 1 mm - 16 - 24 - Partly cloudy. - 30% - - - 1 - 10 - 23 - Sunny. - 0% - - - 3 - 8 - 24 - Mostly sunny. - 0% - - - - - 3 - 27 - Partly cloudy. - 0% - - - 4 - 17 - 27 - Cloudy. - 20% - - - 3 - 17 - 29 - Partly cloudy. - 5% - - - 16 - 0 to 1 mm - 17 - 27 - Possible late storm. - 30% - - - 17 - 0 to 2 mm - 17 - 24 - Possible early shower. - 40% - - - 1 - 10 - 23 - Sunny. - 0% - - - 3 - 10 - 23 - Mostly sunny. - 0% - - - - - 4 - 20 - Cloudy. - 30% - - - 11 - 0 to 3 mm - 15 - 20 - Shower or two. - 50% - - - 3 - 15 - 21 - Partly cloudy. - 20% - - - 3 - 15 - 22 - Partly cloudy. - 20% - - - 17 - 0 to 2 mm - 16 - 21 - Possible morning shower. - 40% - - - 1 - 9 - 20 - Sunny. - 5% - - - 3 - 9 - 20 - Mostly sunny. - 5% - - - - - 4 - 23 - Cloudy. - 20% - - - 17 - 0 to 1 mm - 15 - 23 - Possible shower. - 40% - - - 3 - 15 - 25 - Partly cloudy. - 20% - - - 3 - 15 - 25 - Partly cloudy. - 20% - - - 3 - 0 to 1 mm - 16 - 23 - Partly cloudy. - 30% - - - 1 - 8 - 23 - Sunny. - 5% - - - 3 - 9 - 22 - Mostly sunny. - 5% - - - - - 3 - 25 - Partly cloudy. - 5% - - - 3 - 0 to 0.4 mm - 15 - 26 - Partly cloudy. - 30% - - - 3 - 16 - 28 - Partly cloudy. - 5% - - - 3 - 16 - 27 - Partly cloudy. - 10% - - - 17 - 0 to 1 mm - 17 - 24 - Possible shower. - 40% - - - 1 - 11 - 23 - Sunny. - 0% - - - 1 - 9 - 23 - Sunny. - 0% - - - - - 3 - 25 - Partly cloudy. - 0% - - - 3 - 15 - 26 - Partly cloudy. - 20% - - - 3 - 16 - 28 - Partly cloudy. - 5% - - - 3 - 17 - 27 - Partly cloudy. - 10% - - - 17 - 0 to 2 mm - 17 - 24 - Possible shower. - 40% - - - 1 - 10 - 22 - Sunny. - 0% - - - 3 - 10 - 23 - Mostly sunny. - 5% - - - - - 4 - 23 - Cloudy. - 20% - - - 17 - 0 to 1 mm - 15 - 24 - Possible shower. - 40% - - - 3 - 15 - 25 - Partly cloudy. - 10% - - - 3 - 15 - 25 - Partly cloudy. - 10% - - - 17 - 0 to 1 mm - 15 - 24 - Possible shower. - 40% - - - 1 - 9 - 23 - Sunny. - 0% - - - 3 - 8 - 23 - Mostly sunny. - 5% - - - - - 4 - 20 - Cloudy. - 20% - - - 17 - 0 to 2 mm - 12 - 21 - Possible shower. - 40% - - - 3 - 13 - 23 - Partly cloudy. - 20% - - - 4 - 0 to 0.4 mm - 13 - 23 - Cloudy. - 30% - - - 17 - 0 to 2 mm - 13 - 19 - Possible shower. - 40% - - - 1 - 7 - 20 - Sunny. - 5% - - - 3 - 6 - 20 - Mostly sunny. - 5% - - - - - - 17 - 27 - Possible shower. - 40% - - - 11 - 1 to 3 mm - 19 - 27 - Shower or two. - 70% - - - 11 - 0 to 2 mm - 19 - 28 - Shower or two clearing. - 60% - - - 17 - 0 to 1 mm - 18 - 27 - Possible shower. - 40% - - - 17 - 0 to 1 mm - 18 - 28 - Possible shower. - 40% - - - 3 - 17 - 28 - Mostly sunny. - 10% - - - 3 - 15 - 27 - Partly cloudy. - 20% - - - - - 11 - 25 - Shower or two. - 50% - - - 11 - 2 to 6 mm - 17 - 25 - Showers. - 90% - - - 11 - 1 to 2 mm - 17 - 26 - Shower or two. - 70% - - - 11 - 0 to 2 mm - 16 - 25 - Shower or two. - 70% - - - 11 - 0 to 2 mm - 16 - 27 - Shower or two. - 50% - - - 3 - 14 - 25 - Mostly sunny. - 20% - - - 3 - 12 - 25 - Partly cloudy. - 20% - - - - - 11 - 26 - Shower or two. - 50% - - - 11 - 1 to 3 mm - 19 - 27 - Shower or two. - 70% - - - 11 - 0 to 1 mm - 19 - 27 - Shower or two clearing. - 50% - - - 11 - 0 to 1 mm - 19 - 26 - Shower or two. - 50% - - - 17 - 0 to 1 mm - 18 - 27 - Possible shower. - 40% - - - 3 - 17 - 26 - Mostly sunny. - 20% - - - 3 - 0 to 0.4 mm - 16 - 26 - Partly cloudy. - 30% - - - - - 4 - 22 - Cloudy. - 30% - - - 11 - 1 to 4 mm - 14 - 23 - Shower or two. - 70% - - - 3 - 0 to 0.2 mm - 14 - 25 - Partly cloudy. - 30% - - - 3 - 14 - 25 - Partly cloudy. - 20% - - - 11 - 0 to 1 mm - 14 - 25 - Shower or two. - 50% - - - 1 - 11 - 22 - Sunny. - 5% - - - 3 - 9 - 23 - Mostly sunny. - 5% - - - - - 11 - 26 - Shower or two. - 50% - - - 11 - 1 to 4 mm - 18 - 26 - Showers. - 80% - - - 11 - 0 to 1 mm - 18 - 27 - Shower or two clearing. - 60% - - - 11 - 0 to 2 mm - 17 - 26 - Shower or two. - 60% - - - 11 - 0 to 1 mm - 17 - 27 - Shower or two. - 50% - - - 3 - 16 - 27 - Mostly sunny. - 20% - - - 3 - 13 - 26 - Partly cloudy. - 20% - - - - - 3 - 26 - Partly cloudy. - 20% - - - 11 - 0 to 2 mm - 17 - 26 - Shower or two. - 60% - - - 3 - 17 - 27 - Partly cloudy. - 20% - - - 3 - 16 - 27 - Partly cloudy. - 20% - - - 3 - 0 to 0.4 mm - 17 - 27 - Partly cloudy. - 30% - - - 3 - 15 - 26 - Mostly sunny. - 5% - - - 3 - 12 - 26 - Partly cloudy. - 5% - - - - - 3 - 25 - Partly cloudy. - 10% - - - 11 - 0 to 2 mm - 16 - 25 - Shower or two. - 60% - - - 17 - 0 to 0.4 mm - 16 - 26 - Possible shower. - 40% - - - 3 - 0 to 0.2 mm - 15 - 25 - Partly cloudy. - 30% - - - 3 - 0 to 0.4 mm - 16 - 26 - Partly cloudy. - 30% - - - 1 - 14 - 25 - Sunny. - 5% - - - 3 - 10 - 25 - Mostly sunny. - 5% - - - - - - 17 - 27 - Possible shower. - 40% - - - 11 - 0 to 2 mm - 21 - 27 - Shower or two. - 50% - - - 11 - 0 to 2 mm - 21 - 27 - Morning shower or two. - 50% - - - 3 - 0 to 0.2 mm - 21 - 27 - Partly cloudy. - 30% - - - 3 - 0 to 0.4 mm - 20 - 28 - Partly cloudy. - 30% - - - 3 - 19 - 28 - Mostly sunny. - 5% - - - 3 - 17 - 27 - Partly cloudy. - 10% - - - - - 4 - 27 - Cloudy. - 30% - - - 3 - 0 to 1 mm - 20 - 28 - Partly cloudy. - 30% - - - 11 - 0 to 3 mm - 21 - 27 - Shower or two. - 60% - - - 3 - 20 - 28 - Partly cloudy. - 20% - - - 3 - 0 to 0.2 mm - 19 - 29 - Partly cloudy. - 30% - - - 3 - 19 - 28 - Mostly sunny. - 5% - - - 3 - 15 - 28 - Partly cloudy. - 10% - - - - - 3 - 26 - Partly cloudy. - 10% - - - 3 - 16 - 27 - Partly cloudy. - 20% - - - 3 - 17 - 28 - Partly cloudy. - 20% - - - 3 - 16 - 27 - Partly cloudy. - 10% - - - 3 - 17 - 27 - Partly cloudy. - 20% - - - 1 - 15 - 26 - Sunny. - 5% - - - 3 - 12 - 26 - Mostly sunny. - 5% - - - - - 11 - 26 - Shower or two. - 50% - - - 17 - 0 to 1 mm - 21 - 27 - Possible shower. - 40% - - - 11 - 1 to 4 mm - 21 - 26 - Shower or two. - 70% - - - 3 - 0 to 0.4 mm - 21 - 26 - Partly cloudy. - 30% - - - 17 - 0 to 1 mm - 21 - 26 - Possible shower. - 40% - - - 3 - 19 - 26 - Mostly sunny. - 20% - - - 3 - 18 - 25 - Partly cloudy. - 20% - - - - - - 3 - 25 - Partly cloudy. - 0% - - - 3 - 17 - 28 - Partly cloudy. - 10% - - - 3 - 19 - 27 - Partly cloudy. - 20% - - - 3 - 19 - 27 - Partly cloudy. - 10% - - - 3 - 19 - 26 - Partly cloudy. - 10% - - - 1 - 16 - 25 - Sunny. - 5% - - - 1 - 13 - 25 - Sunny. - 0% - - - - - 3 - 24 - Partly cloudy. - 5% - - - 3 - 17 - 27 - Partly cloudy. - 10% - - - 3 - 0 to 0.4 mm - 18 - 26 - Partly cloudy. - 30% - - - 3 - 17 - 26 - Partly cloudy. - 10% - - - 3 - 18 - 26 - Partly cloudy. - 20% - - - 1 - 16 - 25 - Sunny. - 5% - - - 1 - 13 - 25 - Sunny. - 5% - - - - - 3 - 24 - Partly cloudy. - 5% - - - 3 - 15 - 27 - Partly cloudy. - 10% - - - 3 - 16 - 27 - Partly cloudy. - 20% - - - 3 - 17 - 27 - Partly cloudy. - 10% - - - 3 - 17 - 27 - Partly cloudy. - 5% - - - 1 - 16 - 25 - Sunny. - 5% - - - 1 - 12 - 25 - Sunny. - 0% - - - - - 4 - 25 - Cloudy. - 10% - - - 3 - 17 - 28 - Partly cloudy. - 20% - - - 3 - 0 to 0.4 mm - 17 - 27 - Partly cloudy. - 30% - - - 3 - 18 - 27 - Partly cloudy. - 10% - - - 3 - 18 - 27 - Partly cloudy. - 10% - - - 3 - 17 - 26 - Mostly sunny. - 5% - - - 1 - 14 - 26 - Sunny. - 5% - - - - - 3 - 24 - Partly cloudy. - 10% - - - 3 - 17 - 28 - Partly cloudy. - 20% - - - 3 - 0 to 0.2 mm - 18 - 27 - Partly cloudy. - 30% - - - 3 - 19 - 28 - Partly cloudy. - 10% - - - 3 - 18 - 27 - Partly cloudy. - 5% - - - 3 - 17 - 27 - Mostly sunny. - 5% - - - 1 - 15 - 27 - Sunny. - 5% - - - - - 3 - 25 - Partly cloudy. - 0% - - - 3 - 15 - 27 - Partly cloudy. - 10% - - - 3 - 17 - 27 - Partly cloudy. - 20% - - - 3 - 16 - 26 - Partly cloudy. - 10% - - - 3 - 17 - 25 - Partly cloudy. - 20% - - - 1 - 13 - 25 - Sunny. - 5% - - - 1 - 10 - 24 - Sunny. - 0% - - - - - 3 - 24 - Partly cloudy. - 0% - - - 3 - 15 - 26 - Partly cloudy. - 10% - - - 3 - 0 to 0.4 mm - 17 - 25 - Partly cloudy. - 30% - - - 3 - 16 - 25 - Partly cloudy. - 10% - - - 3 - 17 - 25 - Partly cloudy. - 20% - - - 1 - 13 - 24 - Sunny. - 5% - - - 1 - 11 - 23 - Sunny. - 0% - - - - - 3 - 26 - Partly cloudy. - 0% - - - 3 - 16 - 28 - Partly cloudy. - 10% - - - 3 - 17 - 28 - Partly cloudy. - 10% - - - 3 - 16 - 27 - Partly cloudy. - 10% - - - 3 - 0 to 0.4 mm - 17 - 25 - Partly cloudy. - 30% - - - 1 - 12 - 24 - Sunny. - 5% - - - 1 - 10 - 24 - Sunny. - 5% - - - - - - 4 - 27 - Cloudy. - 20% - - - 11 - 0 to 3 mm - 21 - 28 - Shower or two. - 60% - - - 11 - 1 to 3 mm - 21 - 27 - Shower or two. - 60% - - - 11 - 0 to 1 mm - 21 - 28 - Shower or two. - 50% - - - 17 - 0 to 1 mm - 21 - 27 - Possible shower. - 40% - - - 3 - 20 - 27 - Mostly sunny. - 20% - - - 3 - 18 - 26 - Partly cloudy. - 20% - - - - - 4 - 29 - Cloudy. - 20% - - - 3 - 0 to 0.4 mm - 22 - 29 - Partly cloudy. - 30% - - - 17 - 0 to 1 mm - 22 - 30 - Possible shower. - 40% - - - 3 - 0 to 0.4 mm - 22 - 29 - Partly cloudy. - 30% - - - 3 - 21 - 29 - Partly cloudy. - 10% - - - 3 - 21 - 29 - Mostly sunny. - 10% - - - 3 - 20 - 29 - Mostly sunny. - 10% - - - - - 17 - 26 - Possible shower. - 40% - - - 11 - 0 to 3 mm - 20 - 27 - Shower or two. - 50% - - - 11 - 1 to 5 mm - 21 - 27 - Shower or two. - 70% - - - 17 - 0 to 1 mm - 21 - 27 - Possible early shower. - 40% - - - 3 - 0 to 0.4 mm - 20 - 27 - Partly cloudy. - 30% - - - 3 - 19 - 27 - Mostly sunny. - 10% - - - 3 - 17 - 27 - Mostly sunny. - 20% - - - - - 4 - 26 - Cloudy. - 20% - - - 11 - 0 to 2 mm - 22 - 27 - Shower or two. - 50% - - - 11 - 0 to 2 mm - 23 - 27 - Shower or two. - 60% - - - 11 - 0 to 2 mm - 22 - 27 - Shower or two. - 60% - - - 11 - 0 to 1 mm - 22 - 26 - Shower or two. - 50% - - - 17 - 0 to 1 mm - 22 - 26 - Possible shower. - 40% - - - 3 - 0 to 1 mm - 21 - 25 - Mostly sunny. - 30% - - - - - 4 - 27 - Cloudy. - 20% - - - 11 - 0 to 3 mm - 20 - 28 - Shower or two. - 50% - - - 11 - 1 to 3 mm - 21 - 29 - Shower or two. - 70% - - - 11 - 0 to 2 mm - 21 - 28 - Shower or two. - 60% - - - 17 - 0 to 0.4 mm - 20 - 28 - Possible shower. - 40% - - - 3 - 20 - 29 - Mostly sunny. - 20% - - - 3 - 19 - 28 - Mostly sunny. - 20% - - - - - - 17 - 29 - Possible shower. - 40% - - - 17 - 0 to 2 mm - 22 - 29 - Possible shower. - 40% - - - 17 - 0 to 1 mm - 21 - 29 - Possible shower. - 40% - - - 17 - 0 to 1 mm - 22 - 29 - Possible shower. - 40% - - - 3 - 20 - 29 - Partly cloudy. - 10% - - - 3 - 21 - 30 - Mostly sunny. - 20% - - - 3 - 21 - 29 - Mostly sunny. - 20% - - - - - 3 - 28 - Partly cloudy. - 30% - - - 3 - 0 to 0.4 mm - 20 - 29 - Partly cloudy. - 30% - - - 3 - 0 to 0.4 mm - 20 - 29 - Partly cloudy. - 30% - - - 3 - 0 to 1 mm - 21 - 29 - Partly cloudy. - 30% - - - 3 - 19 - 29 - Partly cloudy. - 10% - - - 3 - 19 - 30 - Mostly sunny. - 10% - - - 3 - 19 - 29 - Mostly sunny. - 10% - - - - - 11 - 27 - Showers. - 80% - - - 11 - 3 to 10 mm - 21 - 28 - Showers. - 90% - - - 11 - 2 to 6 mm - 21 - 29 - Showers. - 80% - - - 11 - 2 to 8 mm - 22 - 29 - Showers. - 80% - - - 17 - 0 to 1 mm - 21 - 29 - Possible shower. - 40% - - - 17 - 0 to 1 mm - 20 - 30 - Possible shower. - 40% - - - 11 - 0 to 2 mm - 20 - 29 - Shower or two. - 50% - - - - - - 11 - 28 - Shower or two. - 60% - - - 11 - 2 to 6 mm - 22 - 30 - Showers. - 80% - - - 11 - 1 to 4 mm - 23 - 30 - Showers increasing. - 80% - - - 11 - 1 to 4 mm - 22 - 29 - Shower or two. - 70% - - - 17 - 0 to 2 mm - 22 - 30 - Possible shower. - 40% - - - 17 - 0 to 2 mm - 22 - 29 - Possible shower. - 40% - - - 17 - 0 to 1 mm - 22 - 29 - Possible shower. - 40% - - - - - 11 - 24 - Shower or two. - 60% - - - 11 - 1 to 4 mm - 17 - 25 - Shower or two. - 70% - - - 11 - 1 to 3 mm - 18 - 25 - Shower or two. - 60% - - - 11 - 0 to 3 mm - 18 - 24 - Shower or two. - 60% - - - 17 - 0 to 1 mm - 17 - 25 - Possible shower. - 40% - - - 17 - 0 to 1 mm - 17 - 24 - Possible shower. - 40% - - - 17 - 0 to 1 mm - 17 - 25 - Possible shower. - 40% - - - - - 11 - 26 - Showers. - 90% - - - 11 - 4 to 10 mm - 22 - 27 - Showers. - 90% - - - 11 - 2 to 8 mm - 22 - 28 - Showers. - 90% - - - 11 - 3 to 8 mm - 22 - 28 - Showers. - 80% - - - 11 - 0 to 3 mm - 22 - 28 - Shower or two. - 60% - - - 11 - 0 to 3 mm - 22 - 28 - Shower or two. - 50% - - - 11 - 1 to 4 mm - 21 - 27 - Shower or two. - 60% - - - - - 17 - 29 - Possible shower. - 40% - - - 11 - 2 to 6 mm - 24 - 29 - Shower or two. - 70% - - - 11 - 0 to 1 mm - 24 - 29 - Shower or two. - 50% - - - 11 - 0 to 3 mm - 24 - 29 - Shower or two. - 60% - - - 11 - 0 to 2 mm - 24 - 29 - Shower or two. - 50% - - - 17 - 0 to 1 mm - 23 - 29 - Possible shower. - 40% - - - 11 - 0 to 2 mm - 23 - 29 - Shower or two. - 50% - - - - - 11 - 28 - Showers. - 90% - - - 11 - 5 to 15 mm - 21 - 28 - Showers. - 90% - - - 11 - 3 to 10 mm - 21 - 29 - Showers. - 90% - - - 11 - 4 to 10 mm - 21 - 28 - Showers. - 90% - - - 11 - 2 to 8 mm - 21 - 28 - Showers easing. - 80% - - - 11 - 2 to 8 mm - 21 - 28 - Shower or two. - 70% - - - 11 - 2 to 8 mm - 20 - 28 - Showers. - 80% - - - - - 3 - 27 - Partly cloudy. - 30% - - - 11 - 0 to 2 mm - 19 - 28 - Shower or two. - 60% - - - 11 - 0 to 1 mm - 20 - 28 - Shower or two. - 50% - - - 17 - 0 to 1 mm - 20 - 28 - Possible shower. - 40% - - - 3 - 0 to 0.4 mm - 19 - 28 - Partly cloudy. - 30% - - - 3 - 19 - 27 - Partly cloudy. - 20% - - - 3 - 0 to 0.2 mm - 18 - 28 - Partly cloudy. - 30% - - - - - 11 - 28 - Shower or two. - 70% - - - 11 - 3 to 10 mm - 23 - 28 - Showers. - 90% - - - 11 - 2 to 6 mm - 23 - 29 - Showers. - 80% - - - 11 - 2 to 6 mm - 22 - 28 - Shower or two. - 70% - - - 11 - 1 to 4 mm - 22 - 28 - Shower or two. - 60% - - - 11 - 0 to 3 mm - 22 - 28 - Shower or two. - 50% - - - 11 - 0 to 4 mm - 22 - 28 - Shower or two. - 50% - - - - - - 3 - 27 - Partly cloudy. - 10% - - - 3 - 0 to 0.2 mm - 18 - 29 - Partly cloudy. - 30% - - - 3 - 18 - 29 - Partly cloudy. - 10% - - - 3 - 18 - 29 - Partly cloudy. - 20% - - - 3 - 18 - 29 - Partly cloudy. - 5% - - - 3 - 17 - 30 - Mostly sunny. - 5% - - - 3 - 17 - 29 - Mostly sunny. - 5% - - - - - 3 - 30 - Partly cloudy. - 0% - - - 3 - 20 - 32 - Partly cloudy. - 0% - - - 3 - 21 - 33 - Partly cloudy. - 0% - - - 3 - 20 - 33 - Partly cloudy. - 0% - - - 3 - 20 - 31 - Partly cloudy. - 0% - - - 3 - 19 - 32 - Mostly sunny. - 0% - - - 1 - 19 - 32 - Sunny. - 0% - - - - - 3 - 28 - Partly cloudy. - 10% - - - 3 - 19 - 31 - Partly cloudy. - 0% - - - 3 - 19 - 32 - Partly cloudy. - 0% - - - 3 - 20 - 31 - Partly cloudy. - 0% - - - 3 - 20 - 29 - Partly cloudy. - 5% - - - 3 - 18 - 30 - Mostly sunny. - 0% - - - 1 - 16 - 30 - Sunny. - 0% - - - - - 3 - 29 - Partly cloudy. - 5% - - - 3 - 18 - 33 - Mostly sunny. - 0% - - - 3 - 19 - 33 - Mostly sunny. - 0% - - - 3 - 20 - 32 - Partly cloudy. - 0% - - - 3 - 20 - 30 - Partly cloudy. - 5% - - - 1 - 18 - 31 - Sunny. - 0% - - - 1 - 15 - 30 - Sunny. - 0% - - - - - - 3 - 32 - Partly cloudy. - 20% - - - 3 - 24 - 33 - Partly cloudy. - 20% - - - 3 - 25 - 33 - Partly cloudy. - 20% - - - 3 - 24 - 33 - Partly cloudy. - 10% - - - 3 - 24 - 33 - Partly cloudy. - 10% - - - 3 - 24 - 32 - Partly cloudy. - 10% - - - 3 - 23 - 33 - Mostly sunny. - 10% - - - - - 3 - 32 - Partly cloudy. - 20% - - - 3 - 24 - 33 - Partly cloudy. - 20% - - - 3 - 25 - 34 - Partly cloudy. - 10% - - - 3 - 24 - 33 - Partly cloudy. - 10% - - - 3 - 24 - 33 - Partly cloudy. - 10% - - - 3 - 23 - 33 - Partly cloudy. - 5% - - - 3 - 23 - 33 - Mostly sunny. - 10% - - - - - 11 - 28 - Shower or two. - 50% - - - 17 - 0 to 2 mm - 23 - 29 - Possible shower. - 40% - - - 3 - 23 - 29 - Partly cloudy. - 20% - - - 3 - 23 - 29 - Partly cloudy. - 20% - - - 3 - 0 to 0.2 mm - 23 - 29 - Partly cloudy. - 30% - - - 3 - 23 - 29 - Partly cloudy. - 20% - - - 3 - 22 - 29 - Mostly sunny. - 20% - - - - - 3 - 31 - Partly cloudy. - 5% - - - 3 - 21 - 32 - Partly cloudy. - 10% - - - 3 - 22 - 32 - Partly cloudy. - 5% - - - 3 - 20 - 32 - Partly cloudy. - 0% - - - 3 - 21 - 32 - Partly cloudy. - 5% - - - 3 - 20 - 32 - Partly cloudy. - 0% - - - 3 - 19 - 32 - Mostly sunny. - 10% - - - - - 11 - 29 - Shower or two. - 70% - - - 11 - 1 to 6 mm - 25 - 29 - Shower or two. - 70% - - - 11 - 1 to 8 mm - 24 - 29 - Shower or two. - 60% - - - 11 - 0 to 5 mm - 25 - 30 - Shower or two. - 60% - - - 11 - 0 to 3 mm - 25 - 29 - Shower or two. - 50% - - - 17 - 0 to 1 mm - 25 - 29 - Possible shower. - 40% - - - 17 - 0 to 2 mm - 24 - 29 - Possible shower. - 40% - - - - - 3 - 32 - Partly cloudy. - 0% - - - 3 - 20 - 32 - Partly cloudy. - 10% - - - 3 - 20 - 33 - Partly cloudy. - 5% - - - 3 - 20 - 32 - Partly cloudy. - 5% - - - 3 - 20 - 32 - Partly cloudy. - 0% - - - 3 - 19 - 32 - Partly cloudy. - 5% - - - 3 - 19 - 32 - Mostly sunny. - 5% - - - - - 17 - 32 - Possible shower. - 40% - - - 17 - 0 to 1 mm - 24 - 32 - Possible shower. - 40% - - - 11 - 0 to 4 mm - 25 - 31 - Shower or two. - 50% - - - 16 - 1 to 10 mm - 24 - 32 - Shower or two. Possible storm. - 60% - - - 11 - 0 to 4 mm - 24 - 31 - Shower or two. - 50% - - - 17 - 0 to 5 mm - 24 - 31 - Possible shower. - 40% - - - 3 - 0 to 0.2 mm - 24 - 31 - Mostly sunny. - 30% - - - - - - 3 - 32 - Partly cloudy. - 5% - - - 3 - 23 - 35 - Mostly sunny. - 0% - - - 3 - 25 - 34 - Partly cloudy. - 5% - - - 3 - 25 - 34 - Partly cloudy. - 5% - - - 3 - 25 - 34 - Partly cloudy. - 0% - - - 1 - 24 - 35 - Sunny. - 0% - - - 1 - 23 - 34 - Sunny. - 0% - - - - - 3 - 31 - Partly cloudy. - 20% - - - 3 - 20 - 33 - Mostly sunny. - 5% - - - 3 - 21 - 33 - Partly cloudy. - 10% - - - 3 - 23 - 33 - Partly cloudy. - 5% - - - 3 - 23 - 35 - Partly cloudy. - 0% - - - 1 - 22 - 35 - Sunny. - 0% - - - 1 - 21 - 34 - Sunny. - 0% - - - - - 3 - 31 - Partly cloudy. - 0% - - - 3 - 22 - 33 - Mostly sunny. - 5% - - - 3 - 23 - 33 - Partly cloudy. - 0% - - - 3 - 23 - 33 - Partly cloudy. - 0% - - - 3 - 23 - 33 - Partly cloudy. - 0% - - - 1 - 21 - 33 - Sunny. - 0% - - - 1 - 21 - 32 - Sunny. - 0% - - - - - 3 - 32 - Partly cloudy. - 30% - - - 3 - 20 - 35 - Mostly sunny. - 5% - - - 3 - 21 - 35 - Partly cloudy. - 10% - - - 3 - 23 - 34 - Partly cloudy. - 10% - - - 3 - 23 - 35 - Partly cloudy. - 0% - - - 1 - 21 - 35 - Sunny. - 0% - - - 1 - 20 - 35 - Sunny. - 0% - - - - - 3 - 34 - Mostly sunny. - 0% - - - 3 - 23 - 34 - Partly cloudy. - 10% - - - 3 - 23 - 35 - Mostly sunny. - 5% - - - 3 - 23 - 35 - Partly cloudy. - 5% - - - 3 - 23 - 33 - Partly cloudy. - 5% - - - 3 - 23 - 34 - Mostly sunny. - 0% - - - 1 - 23 - 34 - Sunny. - 5% - - - - - 3 - 31 - Partly cloudy. - 20% - - - 3 - 25 - 31 - Mostly sunny. - 5% - - - 3 - 0 to 1 mm - 25 - 31 - Partly cloudy. - 30% - - - 3 - 25 - 31 - Partly cloudy. - 10% - - - 3 - 25 - 31 - Partly cloudy. - 5% - - - 3 - 26 - 31 - Mostly sunny. - 5% - - - 1 - 25 - 31 - Sunny. - 5% - - - - - - 3 - 30 - Partly cloudy. - 5% - - - 3 - 18 - 32 - Mostly sunny. - 5% - - - 3 - 20 - 32 - Partly cloudy. - 20% - - - 3 - 21 - 30 - Partly cloudy. - 10% - - - 3 - 18 - 29 - Mostly sunny. - 0% - - - 1 - 15 - 29 - Sunny. - 0% - - - 1 - 13 - 28 - Sunny. - 0% - - - - - 3 - 33 - Mostly sunny. - 5% - - - 3 - 20 - 32 - Mostly sunny. - 10% - - - 3 - 20 - 33 - Partly cloudy. - 10% - - - 3 - 21 - 31 - Partly cloudy. - 10% - - - 3 - 19 - 31 - Mostly sunny. - 0% - - - 1 - 16 - 30 - Sunny. - 0% - - - 1 - 14 - 30 - Sunny. - 0% - - - - - 3 - 29 - Partly cloudy. - 5% - - - 3 - 17 - 33 - Mostly sunny. - 0% - - - 3 - 19 - 33 - Mostly sunny. - 0% - - - 3 - 21 - 31 - Partly cloudy. - 5% - - - 3 - 19 - 31 - Mostly sunny. - 0% - - - 1 - 16 - 31 - Sunny. - 0% - - - 1 - 13 - 29 - Sunny. - 0% - - - - - 3 - 32 - Mostly sunny. - 5% - - - 3 - 20 - 30 - Partly cloudy. - 10% - - - 3 - 20 - 31 - Partly cloudy. - 10% - - - 3 - 18 - 28 - Partly cloudy. - 10% - - - 3 - 16 - 28 - Mostly sunny. - 0% - - - 1 - 11 - 27 - Sunny. - 0% - - - 1 - 10 - 26 - Sunny. - 0% - - - - - 3 - 29 - Partly cloudy. - 10% - - - 3 - 19 - 33 - Mostly sunny. - 0% - - - 3 - 23 - 32 - Partly cloudy. - 5% - - - 3 - 23 - 31 - Partly cloudy. - 5% - - - 3 - 20 - 30 - Mostly sunny. - 0% - - - 1 - 17 - 29 - Sunny. - 0% - - - 1 - 15 - 29 - Sunny. - 0% - - - - - - 3 - 27 - Partly cloudy. - 0% - - - 3 - 17 - 30 - Mostly sunny. - 0% - - - 3 - 18 - 30 - Mostly sunny. - 0% - - - 3 - 19 - 29 - Partly cloudy. - 10% - - - 3 - 17 - 27 - Partly cloudy. - 10% - - - 1 - 12 - 26 - Sunny. - 0% - - - 1 - 10 - 25 - Sunny. - 0% - - - - - 3 - 25 - Partly cloudy. - 0% - - - 3 - 18 - 28 - Partly cloudy. - 5% - - - 3 - 19 - 29 - Partly cloudy. - 5% - - - 3 - 20 - 28 - Partly cloudy. - 10% - - - 3 - 19 - 26 - Partly cloudy. - 10% - - - 1 - 15 - 26 - Sunny. - 0% - - - 1 - 12 - 25 - Sunny. - 0% - - - - - 3 - 24 - Partly cloudy. - 0% - - - 3 - 17 - 27 - Partly cloudy. - 0% - - - 3 - 18 - 28 - Partly cloudy. - 0% - - - 3 - 19 - 27 - Partly cloudy. - 10% - - - 3 - 17 - 24 - Partly cloudy. - 20% - - - 1 - 12 - 23 - Sunny. - 0% - - - 1 - 10 - 23 - Sunny. - 0% - - - - - 3 - 26 - Partly cloudy. - 0% - - - 3 - 18 - 29 - Partly cloudy. - 0% - - - 3 - 19 - 30 - Partly cloudy. - 5% - - - 3 - 21 - 28 - Partly cloudy. - 20% - - - 3 - 17 - 25 - Partly cloudy. - 20% - - - 1 - 12 - 24 - Sunny. - 0% - - - 1 - 11 - 24 - Sunny. - 0% - - - - - 3 - 23 - Partly cloudy. - 0% - - - 3 - 15 - 27 - Partly cloudy. - 0% - - - 3 - 15 - 28 - Partly cloudy. - 5% - - - 3 - 16 - 27 - Partly cloudy. - 20% - - - 3 - 15 - 23 - Partly cloudy. - 20% - - - 1 - 9 - 22 - Sunny. - 0% - - - 1 - 8 - 22 - Sunny. - 0% - - - - - 3 - 27 - Partly cloudy. - 0% - - - 3 - 17 - 31 - Mostly sunny. - 0% - - - 3 - 18 - 32 - Mostly sunny. - 0% - - - 3 - 19 - 30 - Partly cloudy. - 5% - - - 3 - 17 - 28 - Mostly sunny. - 5% - - - 1 - 14 - 28 - Sunny. - 0% - - - 1 - 11 - 27 - Sunny. - 0% - - - - - - 3 - 25 - Partly cloudy. - 0% - - - 3 - 16 - 27 - Partly cloudy. - 10% - - - 3 - 17 - 29 - Partly cloudy. - 5% - - - 16 - 0 to 3 mm - 19 - 25 - Showers. Possible afternoon storm. - 50% - - - 3 - 15 - 21 - Partly cloudy. - 20% - - - 1 - 9 - 21 - Sunny. - 0% - - - 1 - 9 - 21 - Sunny. - 0% - - - - - 3 - 26 - Partly cloudy. - 0% - - - 3 - 15 - 27 - Partly cloudy. - 5% - - - 3 - 16 - 27 - Partly cloudy. - 10% - - - 3 - 0 to 0.4 mm - 16 - 27 - Partly cloudy. - 30% - - - 3 - 0 to 1 mm - 15 - 22 - Partly cloudy. - 30% - - - 1 - 8 - 23 - Sunny. - 0% - - - 1 - 8 - 23 - Sunny. - 5% - - - - - 3 - 26 - Partly cloudy. - 0% - - - 3 - 17 - 27 - Partly cloudy. - 0% - - - 3 - 18 - 28 - Partly cloudy. - 10% - - - 16 - 0 to 4 mm - 19 - 26 - Rain at times. Possible storm. - 50% - - - 3 - 0 to 0.4 mm - 14 - 21 - Cloud clearing. - 30% - - - 1 - 10 - 21 - Sunny. - 0% - - - 3 - 9 - 22 - Mostly sunny. - 5% - - - - - 3 - 24 - Partly cloudy. - 0% - - - 3 - 15 - 27 - Partly cloudy. - 5% - - - 3 - 16 - 28 - Partly cloudy. - 5% - - - 3 - 0 to 1 mm - 17 - 26 - Partly cloudy. - 30% - - - 3 - 0 to 1 mm - 15 - 21 - Partly cloudy. - 30% - - - 1 - 9 - 21 - Sunny. - 0% - - - 1 - 8 - 21 - Sunny. - 0% - - - - - 3 - 26 - Partly cloudy. - 0% - - - 3 - 17 - 28 - Partly cloudy. - 5% - - - 3 - 18 - 29 - Partly cloudy. - 10% - - - 16 - 1 to 8 mm - 19 - 25 - Rain at times. Possible storm. - 60% - - - 3 - 12 - 21 - Mostly sunny. - 20% - - - 1 - 9 - 21 - Sunny. - 0% - - - 1 - 9 - 22 - Sunny. - 0% - - - - - 3 - 25 - Partly cloudy. - 5% - - - 3 - 17 - 28 - Partly cloudy. - 10% - - - 16 - 0 to 4 mm - 19 - 29 - Rain at times. Possible storm. - 50% - - - 16 - 1 to 8 mm - 18 - 24 - Rain at times. Possible storm. - 60% - - - 1 - 10 - 20 - Sunny. - 10% - - - 1 - 10 - 21 - Sunny. - 0% - - - 1 - 9 - 22 - Sunny. - 0% - - - - - 3 - 27 - Partly cloudy. - 0% - - - 3 - 17 - 28 - Partly cloudy. - 0% - - - 3 - 18 - 29 - Partly cloudy. - 20% - - - 16 - 1 to 10 mm - 19 - 26 - Rain at times. Possible storm. - 60% - - - 3 - 12 - 22 - Mostly sunny. - 20% - - - 1 - 9 - 22 - Sunny. - 0% - - - 1 - 9 - 23 - Sunny. - 0% - - - - - 3 - 25 - Partly cloudy. - 0% - - - 3 - 13 - 27 - Partly cloudy. - 5% - - - 3 - 15 - 26 - Partly cloudy. - 20% - - - 3 - 15 - 27 - Partly cloudy. - 20% - - - 3 - 0 to 1 mm - 15 - 23 - Partly cloudy. - 30% - - - 1 - 8 - 22 - Sunny. - 0% - - - 1 - 8 - 22 - Sunny. - 0% - - - - - 3 - 26 - Partly cloudy. - 0% - - - 3 - 16 - 27 - Partly cloudy. - 5% - - - 3 - 17 - 28 - Partly cloudy. - 10% - - - 16 - 0 to 0.2 mm - 17 - 27 - Possible late storm. - 30% - - - 3 - 0 to 1 mm - 16 - 22 - Partly cloudy. - 30% - - - 1 - 9 - 23 - Sunny. - 0% - - - 3 - 9 - 22 - Mostly sunny. - 5% - - - - - - 8 - 31 - Possible late rain periods. - 40% - - - 8 - 0 to 1 mm - 17 - 30 - Possible early rain. - 40% - - - 3 - 16 - 25 - Partly cloudy. - 20% - - - 3 - 14 - 23 - Partly cloudy. - 5% - - - 1 - 10 - 23 - Sunny. - 0% - - - 1 - 10 - 23 - Sunny. - 0% - - - 1 - 10 - 24 - Sunny. - 0% - - - - - 3 - 31 - Mostly sunny. - 10% - - - 16 - 0 to 0.4 mm - 20 - 30 - Possible afternoon storm. - 30% - - - 3 - 0 to 0.4 mm - 19 - 26 - Partly cloudy. - 30% - - - 3 - 17 - 24 - Partly cloudy. - 10% - - - 1 - 13 - 24 - Sunny. - 5% - - - 1 - 12 - 23 - Sunny. - 0% - - - 1 - 11 - 23 - Sunny. - 0% - - - - - 3 - 31 - Partly cloudy. - 0% - - - 3 - 21 - 30 - Partly cloudy. - 10% - - - 3 - 21 - 31 - Partly cloudy. - 20% - - - 3 - 19 - 28 - Partly cloudy. - 10% - - - 3 - 17 - 26 - Mostly sunny. - 5% - - - 1 - 13 - 25 - Sunny. - 0% - - - 1 - 12 - 25 - Sunny. - 0% - - - - - 4 - 25 - Cloudy. - 0% - - - 16 - 18 - 29 - Possible afternoon storm. - 10% - - - 16 - 0 to 6 mm - 20 - 29 - Rain at times. Possible storm. - 50% - - - 11 - 0 to 4 mm - 19 - 24 - Shower or two. - 50% - - - 1 - 13 - 21 - Sunny. - 10% - - - 1 - 10 - 21 - Sunny. - 0% - - - 1 - 10 - 22 - Sunny. - 0% - - - - - 4 - 25 - Cloudy. - 5% - - - 16 - 0 to 1 mm - 20 - 29 - Possible shower or storm. - 40% - - - 16 - 2 to 10 mm - 20 - 27 - Shower or two. Possible storm. - 70% - - - 17 - 0 to 3 mm - 17 - 22 - Possible morning shower. - 40% - - - 1 - 11 - 21 - Sunny. - 0% - - - 1 - 12 - 21 - Sunny. - 0% - - - 1 - 11 - 22 - Sunny. - 0% - - - - - 4 - 26 - Cloudy. - 5% - - - 16 - 19 - 29 - Possible morning storm. - 20% - - - 16 - 0 to 4 mm - 21 - 27 - Possible shower or storm. - 40% - - - 3 - 0 to 0.4 mm - 18 - 24 - Partly cloudy. - 30% - - - 1 - 14 - 23 - Sunny. - 5% - - - 1 - 11 - 22 - Sunny. - 0% - - - 1 - 11 - 23 - Sunny. - 0% - - - - \ No newline at end of file diff --git a/test/test_weather.py b/test/test_weather.py deleted file mode 100644 index fdf98e11..00000000 --- a/test/test_weather.py +++ /dev/null @@ -1,109 +0,0 @@ -from test.conftest import MockUQCSBot, TEST_CHANNEL_ID -from unittest.mock import patch -import xml.etree.ElementTree as ET -import datetime - - -def mocked_xml_get(state): - """ - This method will be used to replace the requests response - Returns locally stored XML Queensland forecasts from 2019. - """ - source = {"NSW": "IDN11060", "ACT": "IDN11060", "NT": "IDD10207", "QLD": "IDQ11295", - "SA": "IDS10044", "TAS": "IDT16710", "VIC": "IDV10753", "WA": "IDW14199"} - try: - data = open("test/bom_{}.xml".format(source[state])) - root = ET.fromstring(data.read()) - except Exception: - return None - return root - - -def mocked_response_header(node: ET.Element, location: str): - """ - This method will be used to replace the header response - Returns the header for 30th Aprl, 2019. - """ - # write day name, "today" or "tomorrow" - forcast_date = datetime.datetime.strptime( - "".join(node.get('start-time-local') - .rsplit(":", 1)), "%Y-%m-%dT%H:%M:%S%z" - ).date() - today_date = datetime.date(2019, 4, 30) - date_delta = (forcast_date - today_date).days - if date_delta == 0: - date_name = "Today" - elif date_delta == 1: - date_name = "Tomorrow" - elif date_delta == -1: - # can happen during the witching hours - date_name = "Yesterday" - else: - date_name = forcast_date.strftime("%A") - return "*{}'s Weather Forcast For {}*".format(date_name, location) - - -@patch("uqcsbot.scripts.weather.get_xml", new=mocked_xml_get) -@patch("uqcsbot.scripts.weather.response_header", new=mocked_response_header) -def test_brisbane(uqcsbot: MockUQCSBot): - """ - Tests all varients !weather that give today's Brisbane weather - """ - uqcsbot.post_message(TEST_CHANNEL_ID, '!weather') - uqcsbot.post_message(TEST_CHANNEL_ID, '!weather Brisbane') - uqcsbot.post_message(TEST_CHANNEL_ID, '!weather QLD Brisbane') - uqcsbot.post_message(TEST_CHANNEL_ID, '!weather 0') - uqcsbot.post_message(TEST_CHANNEL_ID, '!weather Brisbane 0') - uqcsbot.post_message(TEST_CHANNEL_ID, '!weather QLD Brisbane 0') - - messages = uqcsbot.test_messages.get(TEST_CHANNEL_ID, []) - for i in range(len(messages)-1, -1, -1): - if messages[i]['text'].startswith("!weather"): - messages.pop(i) - - assert len(messages) == 6 - for m in messages[1:]: - assert m['text'] == messages[0]['text'] - - assert messages[0]['text'].split("\n")[0] == "*Today's Weather Forcast For Brisbane*" - - -@patch("uqcsbot.scripts.weather.get_xml", new=mocked_xml_get) -@patch("uqcsbot.scripts.weather.response_header", new=mocked_response_header) -def test_tomorrow(uqcsbot: MockUQCSBot): - """ - Test !weather for tomorrow's Esk weather - """ - uqcsbot.post_message(TEST_CHANNEL_ID, '!weather Esk 1') - messages = uqcsbot.test_messages.get(TEST_CHANNEL_ID, []) - assert messages[-1]['text'].split("\n")[0] == "*Tomorrow's Weather Forcast For Esk*" - - -@patch("uqcsbot.scripts.weather.get_xml", new=mocked_xml_get) -@patch("uqcsbot.scripts.weather.response_header", new=mocked_response_header) -def test_location(uqcsbot: MockUQCSBot): - """ - Test !weather for an multi word interstate location - """ - uqcsbot.post_message(TEST_CHANNEL_ID, '!weather NSW Coffs Harbour') - messages = uqcsbot.test_messages.get(TEST_CHANNEL_ID, []) - assert messages[-1]['text'].split("\n")[0] == "*Today's Weather Forcast For Coffs Harbour*" - - -@patch("uqcsbot.scripts.weather.get_xml", new=mocked_xml_get) -@patch("uqcsbot.scripts.weather.response_header", new=mocked_response_header) -def test_error(uqcsbot: MockUQCSBot): - """ - Test !weather for error messages - """ - uqcsbot.post_message(TEST_CHANNEL_ID, '!weather nowhere') - messages = uqcsbot.test_messages.get(TEST_CHANNEL_ID, []) - assert messages[-1]['text'] == "Location Not Found" - - uqcsbot.post_message(TEST_CHANNEL_ID, '!weather -1') - messages = uqcsbot.test_messages.get(TEST_CHANNEL_ID, []) - assert messages[-1]['text'] == "No Forecast Available For That Day" - - uqcsbot.post_message(TEST_CHANNEL_ID, '!weather TAS Hobart') - messages = uqcsbot.test_messages.get(TEST_CHANNEL_ID, []) - assert messages[-1]['text'] == "Could Not Retrieve BOM Data" diff --git a/unimplemented_commands/weather.js b/unimplemented_commands/weather.js new file mode 100644 index 00000000..c61050fa --- /dev/null +++ b/unimplemented_commands/weather.js @@ -0,0 +1,76 @@ +// Description: +// Gets the weather info or radar for st lucia by default or a specified location +// +// Commands: +// `!weather [LOCATION]` - Gets the weather for a location (default: brisbane) + +module.exports = function (robot) { + robot.respond(/!?weather ?(.+)?/i, function (res) { + var location = res.match[1] || "Brisbane"; + robot.getWeather(location, res) + }); + + robot.getWeather = function(location, res) { + var query = 'select * from weather.forecast where woeid in (select woeid from geo.places(1) where text="' + location + '") and u="c"'; + var url = "https://query.yahooapis.com/v1/public/yql?q=" + encodeURIComponent(query) + "&format=json&env=store%3A%2F%2Fdatatables.org%2Falltableswithkeys"; + + robot.http(url).get() + (function(err, resp, body) { + var json = JSON.parse(body); + var data = json.query.results.channel; + var today = data.item.forecast[0]; + if (err == null) { + var temp = Math.round(data.item.condition.temp * 100) / 100; + var humidity = data.atmosphere.humidity; + var min = Math.round(today.low * 100) / 100; + var max = Math.round(today.high * 100) / 100; + var weather = data.item.condition; + res.send("> " + robot.getWeatherEmoji(parseInt(weather.code)) + " *" + data.location.city + ", " + + data.location.country + "* is *" + temp + "°C* (min: *" + min+ "°C*, max: *" + max + + "°C*) with humidity at *" + humidity + "%* and condition *" + weather.text + "*"); + } else { + res.send(">Can't find " + location); + } + }); + } + + robot.getWeatherEmoji = function(code) { + var result = ""; + + if ([0, 2].indexOf(code) != -1) { + result += ":tornado:"; + } + if ([1, 3, 4, 37, 38, 39, 45, 47].indexOf(code) != -1) { + result += ":thunder_cloud_and_rain:"; + } + if ([5, 6, 7, 8, 10, 13, 14, 15, 16, 18, 25, 41, 42, 46].indexOf(code) != -1) { + result += ":snowflake:"; + } + if ([5, 10, 9, 11, 12, 35, 40].indexOf(code) != -1) { + result += ":droplet:"; + } + if ([17, 35].indexOf(code) != -1) { + result += ":snow_cloud:"; + } + if ([19, 20, 21, 22].indexOf(code) != -1) { + result += ":fog:"; + } + if ([23, 24].indexOf(code) != -1) { + result += ":dash:"; + } + if ([26, 27, 28].indexOf(code) != -1) { + result += ":cloud:"; + } + if ([29, 30, 44].indexOf(code) != -1) { + result += ":partly_sunny:"; + } + if ([31, 33].indexOf(code) != -1) { + result += ":full_moon_with_face:"; + } + if ([32, 34].indexOf(code) != -1) { + result += ":sunny:"; + } + + return result; + } +} diff --git a/uqcsbot/scripts/weather.py b/uqcsbot/scripts/weather.py deleted file mode 100644 index 39c3da0e..00000000 --- a/uqcsbot/scripts/weather.py +++ /dev/null @@ -1,215 +0,0 @@ -from uqcsbot import bot, Command -from urllib.request import urlopen -import xml.etree.ElementTree as ET -from datetime import datetime as DT -from typing import Union, Tuple - - -def get_xml(state: str) -> Union[None, ET.Element]: - """ - Get BOM data as an XML for a given state - """ - source = {"NSW": "IDN11060", "ACT": "IDN11060", "NT": "IDD10207", "QLD": "IDQ11295", - "SA": "IDS10044", "TAS": "IDT16710", "VIC": "IDV10753", "WA": "IDW14199"} - try: - data = urlopen(f"ftp://ftp.bom.gov.au/anon/gen/fwo/{source[state]}.xml") - root = ET.fromstring(data.read()) - except Exception: - return None - return root - - -def process_arguments(arguments: str) -> Tuple[str, str, int]: - """ - Process the arguments given to !weather, dividing them into state, location and future - Uses default of QLD, Brisbane and 0 if not given - """ - args = arguments.split(" ") if arguments else [] - if args and args[-1].lstrip('-+').isnumeric(): - future = int(args.pop()) - else: - future = 0 - - # get location - if args: - if args[0].upper() in ["NSW", "ACT", "NT", "QLD", "SA", "TAS", "VIC", "WA"]: - state = args.pop(0).upper() - else: - state = "QLD" - location = " ".join(args) - else: - state = "QLD" - location = "Brisbane" - - return state, location, future - - -def find_location(root: ET.Element, location: str, future: int) \ - -> Tuple[Union[None, ET.Element], Union[None, str]]: - """ - Rreturns the XML for a given the location and how far into the future - """ - node = root.find(f".//area[@description='{location}']") - if node is None: - return None, "Location Not Found" - if node.get("type") != "location": - return None, "Location Given Is Region" - node = node.find(f".//forecast-period[@index='{future}']") - if node is None: - return None, "No Forecast Available For That Day" - return node, None - - -def response_header(node: ET.Element, location: str) -> str: - """ - Returns the response header, in the form "{Location}'s Weather Forcast For {Day}" - """ - forcast_date = DT.strptime("".join(node.get('start-time-local') - .rsplit(":", 1)), "%Y-%m-%dT%H:%M:%S%z").date() - today_date = DT.now().date() - date_delta = (forcast_date - today_date).days - if date_delta == 0: - date_name = "Today" - elif date_delta == 1: - date_name = "Tomorrow" - elif date_delta == -1: - # can happen during the witching hours - date_name = "Yesterday" - else: - date_name = forcast_date.strftime("%A") - return f"*{date_name}'s Weather Forcast For {location}*" - - -def response_overall(node: ET.Element) -> str: - """ - Returns the overall forcast - """ - icon_code = node.find(".//element[@type='forecast_icon_code']") - if icon_code is not None: - icon = ["", "sunny", "clear", "partly-cloudy", "cloudy", "", "haze", "", "light-rain", - "wind", "fog", "showers", "rain", "dust", "frost", "snow", "storm", - "light-showers", "heavy-showers", "tropicalcyclone"][int(icon_code.text)] - icon = f":bom_{icon}:" if icon else "" - descrip = node.find(".//text[@type='precis']") - if descrip is not None: - return f"{icon} {descrip.text} {icon}" - return "" - - -def response_temperature(node: ET.Element) -> str: - """ - Returns the temperature forecast - """ - temp_min = node.find(".//element[@type='air_temperature_minimum']") - temp_max = node.find(".//element[@type='air_temperature_maximum']") - if temp_min is not None and temp_max is not None: - return f"Temperature: {temp_min.text}ºC - {temp_max.text}ºC" - elif temp_min is not None: - return f"Minimum Temperature: {temp_min.text}ºC" - elif temp_max is not None: - return f"Maximum Temperature: {temp_max.text}ºC" - return "" - - -def response_precipitation(node: ET.Element) -> str: - """ - Returns the precipitaion forecast - """ - rain_range = node.find(".//element[@type='precipitation_range']") - precip_prob = node.find(".//text[@type='probability_of_precipitation']") - if rain_range is not None and precip_prob is not None: - return f"{precip_prob.text} Chance of Precipitation; {rain_range.text}" - elif precip_prob is not None: - return f"{precip_prob.text} Chance of Precipitation" - return "" - - -def response_brisbane_detailed() -> Tuple[str, str, str]: - """ - Returns a detailed forecast for Brisbane - """ - try: - data = urlopen("ftp://ftp.bom.gov.au/anon/gen/fwo/IDQ10605.xml") - root = ET.fromstring(data.read()) - except Exception: - return "", "", "" - node = root.find(".//area[@description='Brisbane']") - if node is None: - return "", "", "" - node = node.find(".//forecast-period[@index='0']") - if node is None: - return "", "", "" - - forecast_node = node.find(".//text[@type='forecast']") - forecast = "" if forecast_node is None else forecast_node.text - - fire_danger_node = node.find(".//text[@type='fire_danger']") - if fire_danger_node is None or fire_danger_node.text == "Low-Moderate": - fire_danger = "" - else: - fire_danger = f"There Is A {fire_danger_node.text} Fire Danger Today" - - uv_alert_node = node.find(".//text[@type='uv_alert']") - uv_alert = "" if uv_alert_node is None else uv_alert_node.text - - return (forecast, fire_danger, uv_alert) - - -@bot.on_command('weather') -def handle_weather(command: Command) -> None: - """ - `!weather [[state] location] [day]` - Returns the weather forcaset for a location - `day` is how many days into the future the forecast is for (0 is today and default) - `location` defaults to Brisbane, and `state` defualts to QLD - """ - - (state, location, future) = process_arguments(command.arg) - - root = get_xml(state) - if root is None: - bot.post_message(command.channel_id, "Could Not Retrieve BOM Data") - return - - node, find_response = find_location(root, location, future) - if node is None: - bot.post_message(command.channel_id, find_response) - return - - # get responses - response = [] - response.append(response_header(node, location)) - response.append(response_overall(node)) - response.append(response_temperature(node)) - response.append(response_precipitation(node)) - # post - bot.post_message(command.channel_id, "\n".join([r for r in response if r])) - - -@bot.on_schedule('cron', hour=6, minute=0, timezone='Australia/Brisbane') -def daily_weather() -> None: - """ - Posts today's Brisbane weather at 6:00am every day - """ - - (state, location, future) = ("QLD", "Brisbane", 0) - - root = get_xml(state) - if root is None: - return - - node, find_response = find_location(root, location, future) - if node is None: - return - - # get responses - response = [] - brisbane_detailed, brisbane_fire, brisbane_uv = response_brisbane_detailed() - response.append(response_header(node, location)) - response.append(response_overall(node)) - response.append(brisbane_detailed) - response.append(response_temperature(node)) - response.append(brisbane_fire) - response.append(brisbane_uv) - # post - general = bot.channels.get("general") - bot.post_message(general.id, "\n".join([r for r in response if r]))