projects
/
python_utils.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Cleanup weather_data.py.
[python_utils.git]
/
cached
/
weather_data.py
diff --git
a/cached/weather_data.py
b/cached/weather_data.py
index 1b0bef429d4dfcc751e9bf52060c1371080f71d4..8793bd315940b8ef16fb63d059b14b178fabc153 100644
(file)
--- a/
cached/weather_data.py
+++ b/
cached/weather_data.py
@@
-1,13
+1,17
@@
#!/usr/bin/env python3
# -*- coding: utf-8 -*-
#!/usr/bin/env python3
# -*- coding: utf-8 -*-
+# © Copyright 2021-2022, Scott Gasch
+
+"""How's the weather?"""
+
import datetime
import json
import logging
import os
import urllib.request
from dataclasses import dataclass
import datetime
import json
import logging
import os
import urllib.request
from dataclasses import dataclass
-from typing import Any,
List
+from typing import Any,
Dict, List, Optional
from overrides import overrides
from overrides import overrides
@@
-16,6
+20,8
@@
import config
import datetime_utils
import list_utils
import persistent
import datetime_utils
import list_utils
import persistent
+import scott_secrets
+import type_utils
logger = logging.getLogger(__name__)
logger = logging.getLogger(__name__)
@@
-52,7
+58,7
@@
class WeatherData:
@persistent.persistent_autoloaded_singleton() # type: ignore
class CachedWeatherData(persistent.Persistent):
@persistent.persistent_autoloaded_singleton() # type: ignore
class CachedWeatherData(persistent.Persistent):
- def __init__(self, weather_data
=
None):
+ def __init__(self, weather_data
: Dict[datetime.date, WeatherData] =
None):
if weather_data is not None:
self.weather_data = weather_data
return
if weather_data is not None:
self.weather_data = weather_data
return
@@
-76,12
+82,12
@@
class CachedWeatherData(persistent.Persistent):
}
now = datetime.datetime.now()
dates = set()
}
now = datetime.datetime.now()
dates = set()
- highs = {}
- lows = {}
- conditions = {}
- precip = {}
+ highs
: Dict[datetime.date, Optional[float]]
= {}
+ lows
: Dict[datetime.date, Optional[float]]
= {}
+ conditions
: Dict[datetime.date, List[str]]
= {}
+ precip
: Dict[datetime.date, float]
= {}
param = "id=5786882" # Bellevue, WA
param = "id=5786882" # Bellevue, WA
- key =
"c0b160c49743622f62a9cd3cda0270b3"
+ key =
scott_secrets.OPEN_WEATHER_MAP_KEY
www = urllib.request.urlopen(
f'http://api.openweathermap.org/data/2.5/weather?zip=98005,us&APPID={key}&units=imperial'
)
www = urllib.request.urlopen(
f'http://api.openweathermap.org/data/2.5/weather?zip=98005,us&APPID={key}&units=imperial'
)
@@
-169,8
+175,8
@@
class CachedWeatherData(persistent.Persistent):
icon = '🌙'
self.weather_data[dt] = WeatherData(
date=dt,
icon = '🌙'
self.weather_data[dt] = WeatherData(
date=dt,
- high=
highs[dt]
,
- low=
lows[dt]
,
+ high=
type_utils.unwrap_optional(highs[dt])
,
+ low=
type_utils.unwrap_optional(lows[dt])
,
precipitation_inches=precip[dt] / 25.4,
conditions=conditions[dt],
most_common_condition=most_common_condition,
precipitation_inches=precip[dt] / 25.4,
conditions=conditions[dt],
most_common_condition=most_common_condition,