diff options
Diffstat (limited to 'cached')
| -rw-r--r-- | cached/weather_data.py | 21 |
1 files changed, 21 insertions, 0 deletions
diff --git a/cached/weather_data.py b/cached/weather_data.py index 8793bd3..87c3260 100644 --- a/cached/weather_data.py +++ b/cached/weather_data.py @@ -59,6 +59,13 @@ class WeatherData: @persistent.persistent_autoloaded_singleton() # type: ignore class CachedWeatherData(persistent.Persistent): def __init__(self, weather_data: Dict[datetime.date, WeatherData] = None): + """C'tor. Do not pass a dict except for testing purposes. + + The @persistent_autoloaded_singleton decorator handles + invoking our load and save methods at construction time for + you. + """ + if weather_data is not None: self.weather_data = weather_data return @@ -186,6 +193,15 @@ class CachedWeatherData(persistent.Persistent): @classmethod @overrides def load(cls) -> Any: + + """Depending on whether we have fresh data persisted either uses that + data to instantiate the class or makes an HTTP request to fetch the + necessary data. + + Note that because this is a subclass of Persistent this is taken + care of automatically. + """ + if persistent.was_file_written_within_n_seconds( config.config['weather_data_cachefile'], config.config['weather_data_stalest_acceptable'].total_seconds(), @@ -199,6 +215,11 @@ class CachedWeatherData(persistent.Persistent): @overrides def save(self) -> bool: + """ + Saves the current data to disk if required. Again, because this is + a subclass of Persistent this is taken care of for you. + """ + import pickle with open(config.config['weather_data_cachefile'], 'wb') as wf: |
