From 722f34557c291c9ed9713c0f4f37b06a59820171 Mon Sep 17 00:00:00 2001 From: Conrad S Date: Thu, 6 Apr 2017 11:16:58 -0400 Subject: [PATCH 1/2] Fix weather interpolate bug --- bpeng/tests/test_weather.py | 34 +++++++++++++++++++++------------- bpeng/weather/weather.py | 7 ++++--- 2 files changed, 25 insertions(+), 16 deletions(-) diff --git a/bpeng/tests/test_weather.py b/bpeng/tests/test_weather.py index 5b032f3..9b7b109 100644 --- a/bpeng/tests/test_weather.py +++ b/bpeng/tests/test_weather.py @@ -8,8 +8,8 @@ class TestWeather: def setup_class(self): self.scraper1 = WeatherUnderground( period='period', - startdate='2016/3/1', - enddate='2016/3/3', + startdate='2016/03/01', + enddate='2016/03/03', location='KNYC' ) @@ -19,15 +19,23 @@ class TestWeather: location='KNYC' ) - def test_parse(self): - self.scraper1.get_weather(detail=True) - output = self.scraper1.output_daily_data() - assert len(output) == 3 - - assert output['temperature'][0] == 45.63 - assert output['temperature'][1] == 41.95 - assert output['temperature'][2] == 31.00 + self.scraper3 = WeatherUnderground( + period='period', + startdate='2017/03/11', + enddate='2017/03/12', + ) - assert output['humidity'][0] == 51.384615384615387 - assert output['wind'][1] == 9.6279999999999983 - assert output['rain'][1] == 0.26999999999999996 + def test_parse(self): +# self.scraper1.get_weather(detail=True) +# output = self.scraper1.output_daily_data() +# assert len(output) == 3 +# +# assert output['temperature'][0] == 45.63 +# assert output['temperature'][1] == 41.95 +# assert output['temperature'][2] == 31.00 +# +# assert output['humidity'][0] == 51.384615384615387 +# assert output['wind'][1] == 9.6279999999999983 +# assert output['rain'][1] == 0.26999999999999996 + self.scraper3.get_weather(detail=True) + print(self.scraper3.output_daily_data()) diff --git a/bpeng/weather/weather.py b/bpeng/weather/weather.py index d6873db..4a20dfa 100644 --- a/bpeng/weather/weather.py +++ b/bpeng/weather/weather.py @@ -113,6 +113,7 @@ class WeatherUnderground: # Loop through all of the features, removing ones with invalid temperature for entry in html_features: try: + if float(entry[1]) < self.MIN_ALLOWED_TEMPERATURE: html_features.remove(entry) # pylint: disable=broad-except,unused-variable @@ -192,8 +193,8 @@ class WeatherUnderground: # A list to loop through so we can add new interpolated data # into the middle of the return_list looping_list = return_list - return_list = [] - for entry in looping_list[0:]: + return_list = [prev_entry] + for entry in looping_list[1:]: # If there is data missing between this hour and # the previous hour, find weighted average and set it to that value cur_hour = entry[0] @@ -202,7 +203,7 @@ class WeatherUnderground: if (cur_hour - prev_hour) != 1: cur_temp = entry[1] prev_temp = prev_entry[1] - for new_hour in range(cur_hour + 1, prev_hour): + for new_hour in range(prev_hour + 1, cur_hour): # Math to interpolate temperature interpolate_sum = ( cur_temp * (prev_hour - new_hour) + -- GitLab From e5e2a58861b0aeee4655c46c7d0aa25c9956b849 Mon Sep 17 00:00:00 2001 From: Conrad S Date: Thu, 6 Apr 2017 11:18:02 -0400 Subject: [PATCH 2/2] Return weather tests to normal --- bpeng/tests/test_weather.py | 24 +++++++++++------------- 1 file changed, 11 insertions(+), 13 deletions(-) diff --git a/bpeng/tests/test_weather.py b/bpeng/tests/test_weather.py index 9b7b109..63ed9ca 100644 --- a/bpeng/tests/test_weather.py +++ b/bpeng/tests/test_weather.py @@ -26,16 +26,14 @@ class TestWeather: ) def test_parse(self): -# self.scraper1.get_weather(detail=True) -# output = self.scraper1.output_daily_data() -# assert len(output) == 3 -# -# assert output['temperature'][0] == 45.63 -# assert output['temperature'][1] == 41.95 -# assert output['temperature'][2] == 31.00 -# -# assert output['humidity'][0] == 51.384615384615387 -# assert output['wind'][1] == 9.6279999999999983 -# assert output['rain'][1] == 0.26999999999999996 - self.scraper3.get_weather(detail=True) - print(self.scraper3.output_daily_data()) + self.scraper1.get_weather(detail=True) + output = self.scraper1.output_daily_data() + assert len(output) == 3 + + assert output['temperature'][0] == 45.63 + assert output['temperature'][1] == 41.95 + assert output['temperature'][2] == 31.00 + + assert output['humidity'][0] == 51.384615384615387 + assert output['wind'][1] == 9.6279999999999983 + assert output['rain'][1] == 0.26999999999999996 -- GitLab