X-Git-Url: https://wannabe.guru.org/gitweb/?a=blobdiff_plain;ds=sidebyside;f=cached%2Fweather_data.py;h=8793bd315940b8ef16fb63d059b14b178fabc153;hb=01762dc93591fda9cd179ee6faa32145790800b4;hp=1b0bef429d4dfcc751e9bf52060c1371080f71d4;hpb=74141719df0f52b98b4745c7c27e70c6417a5691;p=python_utils.git diff --git a/cached/weather_data.py b/cached/weather_data.py index 1b0bef4..8793bd3 100644 --- a/cached/weather_data.py +++ b/cached/weather_data.py @@ -1,13 +1,17 @@ #!/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 -from typing import Any, List +from typing import Any, Dict, List, Optional from overrides import overrides @@ -16,6 +20,8 @@ import config import datetime_utils import list_utils import persistent +import scott_secrets +import type_utils logger = logging.getLogger(__name__) @@ -52,7 +58,7 @@ class WeatherData: @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 @@ -76,12 +82,12 @@ class CachedWeatherData(persistent.Persistent): } 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 - 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' ) @@ -169,8 +175,8 @@ class CachedWeatherData(persistent.Persistent): 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,