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)