Source code for caspia.pan.reactive.weather

from caspia import reactive

_weather = None


[docs]def register_weather(weather_service): global _weather _weather = weather_service
[docs]def get_weather(): if _weather is None: raise RuntimeError('Weather service not set. Use register_sun().') return _weather
def _datapoint_getter(datapoint): def getter(datablock): if datapoint not in datablock: raise reactive.errors.ValueNotReady('%s not available' % (datapoint, )) return datablock[datapoint] return getter
[docs]def weather_current(datapoint): return reactive.lambda_(_datapoint_getter(datapoint), get_weather().current)
[docs]def weather_upcoming(datapoint): return reactive.lambda_(_datapoint_getter(datapoint), get_weather().upcoming)
[docs]def weather_today(datapoint): return reactive.lambda_(_datapoint_getter(datapoint), get_weather().today)
[docs]def weather_tomorrow(datapoint): return reactive.lambda_(_datapoint_getter(datapoint), get_weather().tomorrow)