From f3b9fa2f4144a62fe53efe613f33fbff7eb88d56 Mon Sep 17 00:00:00 2001 From: Erik Eriksson Date: Thu, 9 Feb 2017 18:00:18 +0100 Subject: [PATCH 001/196] Don't thow exception if connection to server is lost (#5775) --- homeassistant/components/sensor/tellduslive.py | 4 +++- homeassistant/components/tellduslive.py | 2 +- requirements_all.txt | 2 +- 3 files changed, 5 insertions(+), 3 deletions(-) diff --git a/homeassistant/components/sensor/tellduslive.py b/homeassistant/components/sensor/tellduslive.py index b7f3cf60892..9bebbe6e3dc 100644 --- a/homeassistant/components/sensor/tellduslive.py +++ b/homeassistant/components/sensor/tellduslive.py @@ -85,7 +85,9 @@ class TelldusLiveSensor(TelldusLiveEntity): @property def state(self): """Return the state of the sensor.""" - if self._type == SENSOR_TYPE_TEMP: + if not self.available: + return None + elif self._type == SENSOR_TYPE_TEMP: return self._value_as_temperature elif self._type == SENSOR_TYPE_HUMIDITY: return self._value_as_humidity diff --git a/homeassistant/components/tellduslive.py b/homeassistant/components/tellduslive.py index 259d4e1becb..84ab96841d9 100644 --- a/homeassistant/components/tellduslive.py +++ b/homeassistant/components/tellduslive.py @@ -17,7 +17,7 @@ import voluptuous as vol DOMAIN = 'tellduslive' -REQUIREMENTS = ['tellduslive==0.3.0'] +REQUIREMENTS = ['tellduslive==0.3.2'] _LOGGER = logging.getLogger(__name__) diff --git a/requirements_all.txt b/requirements_all.txt index 12aaaab9666..21c5538c76b 100755 --- a/requirements_all.txt +++ b/requirements_all.txt @@ -645,7 +645,7 @@ steamodd==4.21 tellcore-py==1.1.2 # homeassistant.components.tellduslive -tellduslive==0.3.0 +tellduslive==0.3.2 # homeassistant.components.sensor.temper temperusb==1.5.1 From c54517de909974b355f64840ed06d528b629c4d4 Mon Sep 17 00:00:00 2001 From: Paulus Schoutsen Date: Thu, 9 Feb 2017 10:21:57 -0800 Subject: [PATCH 002/196] Convert config.components to a set (#5824) --- homeassistant/bootstrap.py | 2 +- homeassistant/components/configurator.py | 17 ++++++++-------- homeassistant/components/homematic.py | 1 - homeassistant/components/notify/ios.py | 2 +- homeassistant/core.py | 2 +- homeassistant/helpers/entity_component.py | 2 +- homeassistant/remote.py | 10 +++++++++- tests/common.py | 2 +- .../alarm_control_panel/test_mqtt.py | 20 +++++++++---------- tests/components/automation/test_event.py | 2 +- tests/components/automation/test_init.py | 2 +- tests/components/automation/test_mqtt.py | 2 +- .../automation/test_numeric_state.py | 2 +- tests/components/automation/test_state.py | 2 +- tests/components/automation/test_sun.py | 4 ++-- tests/components/automation/test_template.py | 2 +- tests/components/automation/test_time.py | 2 +- tests/components/automation/test_zone.py | 2 +- tests/components/binary_sensor/test_mqtt.py | 6 +++--- tests/components/camera/test_uvc.py | 2 +- tests/components/cover/test_mqtt.py | 14 ++++++------- tests/components/cover/test_rfxtrx.py | 2 +- .../components/device_tracker/test_asuswrt.py | 2 +- tests/components/device_tracker/test_ddwrt.py | 2 +- tests/components/device_tracker/test_mqtt.py | 4 ++-- .../device_tracker/test_upc_connect.py | 2 +- tests/components/light/test_mqtt.py | 16 +++++++-------- tests/components/light/test_mqtt_json.py | 14 ++++++------- tests/components/light/test_mqtt_template.py | 14 ++++++------- tests/components/light/test_rfxtrx.py | 2 +- tests/components/lock/test_mqtt.py | 6 +++--- tests/components/mqtt/test_init.py | 10 +++++----- tests/components/mqtt/test_server.py | 4 ++-- tests/components/sensor/test_mqtt.py | 4 ++-- tests/components/sensor/test_pilight.py | 2 +- tests/components/sensor/test_rfxtrx.py | 2 +- tests/components/switch/test_mqtt.py | 6 +++--- tests/components/switch/test_rfxtrx.py | 2 +- tests/components/test_api.py | 8 ++++++-- tests/components/test_logbook.py | 2 +- tests/components/test_script.py | 2 +- tests/components/test_websocket_api.py | 4 ++++ tests/test_bootstrap.py | 10 +++++----- tests/test_core.py | 2 +- 44 files changed, 118 insertions(+), 104 deletions(-) diff --git a/homeassistant/bootstrap.py b/homeassistant/bootstrap.py index 87fd9f7d9e5..72780707f66 100644 --- a/homeassistant/bootstrap.py +++ b/homeassistant/bootstrap.py @@ -166,7 +166,7 @@ def _async_setup_component(hass: core.HomeAssistant, loader.set_component(domain, None) return False - hass.config.components.append(component.DOMAIN) + hass.config.components.add(component.DOMAIN) hass.bus.async_fire( EVENT_COMPONENT_LOADED, {ATTR_COMPONENT: component.DOMAIN} diff --git a/homeassistant/components/configurator.py b/homeassistant/components/configurator.py index 5e99e02d371..d912f9914b5 100644 --- a/homeassistant/components/configurator.py +++ b/homeassistant/components/configurator.py @@ -6,15 +6,16 @@ This will return a request id that has to be used for future calls. A callback has to be provided to `request_config` which will be called when the user has submitted configuration information. """ +import asyncio import logging from homeassistant.const import EVENT_TIME_CHANGED, ATTR_FRIENDLY_NAME, \ ATTR_ENTITY_PICTURE from homeassistant.helpers.entity import generate_entity_id -_INSTANCES = {} _LOGGER = logging.getLogger(__name__) _REQUESTS = {} +_KEY_INSTANCE = 'configurator' ATTR_CONFIGURE_ID = 'configure_id' ATTR_DESCRIPTION = 'description' @@ -72,22 +73,20 @@ def request_done(request_id): pass -def setup(hass, config): +@asyncio.coroutine +def async_setup(hass, config): """Setup the configurator component.""" return True def _get_instance(hass): """Get an instance per hass object.""" - try: - return _INSTANCES[hass] - except KeyError: - _INSTANCES[hass] = Configurator(hass) + instance = hass.data.get(_KEY_INSTANCE) - if DOMAIN not in hass.config.components: - hass.config.components.append(DOMAIN) + if instance is None: + instance = hass.data[_KEY_INSTANCE] = Configurator(hass) - return _INSTANCES[hass] + return instance class Configurator(object): diff --git a/homeassistant/components/homematic.py b/homeassistant/components/homematic.py index ce1df98d727..365c843f854 100644 --- a/homeassistant/components/homematic.py +++ b/homeassistant/components/homematic.py @@ -276,7 +276,6 @@ def setup(hass, config): # Stops server when Homeassistant is shutting down hass.bus.listen_once( EVENT_HOMEASSISTANT_STOP, hass.data[DATA_HOMEMATIC].stop) - hass.config.components.append(DOMAIN) # init homematic hubs entity_hubs = [] diff --git a/homeassistant/components/notify/ios.py b/homeassistant/components/notify/ios.py index 0db05b261b3..e788beda0c4 100644 --- a/homeassistant/components/notify/ios.py +++ b/homeassistant/components/notify/ios.py @@ -43,7 +43,7 @@ def get_service(hass, config, discovery_info=None): """Get the iOS notification service.""" if "notify.ios" not in hass.config.components: # Need this to enable requirements checking in the app. - hass.config.components.append("notify.ios") + hass.config.components.add("notify.ios") if not ios.devices_with_push(): _LOGGER.error(("The notify.ios platform was loaded but no " diff --git a/homeassistant/core.py b/homeassistant/core.py index 5bede3da7a6..85b65ebc477 100644 --- a/homeassistant/core.py +++ b/homeassistant/core.py @@ -1047,7 +1047,7 @@ class Config(object): self.skip_pip = False # type: bool # List of loaded components - self.components = [] + self.components = set() # Remote.API object pointing at local API self.api = None diff --git a/homeassistant/helpers/entity_component.py b/homeassistant/helpers/entity_component.py index 4b773d50bb9..e453d609858 100644 --- a/homeassistant/helpers/entity_component.py +++ b/homeassistant/helpers/entity_component.py @@ -151,7 +151,7 @@ class EntityComponent(object): entity_platform.add_entities, discovery_info ) - self.hass.config.components.append( + self.hass.config.components.add( '{}.{}'.format(self.domain, platform_type)) except Exception: # pylint: disable=broad-except self.logger.exception( diff --git a/homeassistant/remote.py b/homeassistant/remote.py index c124d509f9c..15421ebfc11 100644 --- a/homeassistant/remote.py +++ b/homeassistant/remote.py @@ -312,6 +312,8 @@ class JSONEncoder(json.JSONEncoder): """ if isinstance(obj, datetime): return obj.isoformat() + elif isinstance(obj, set): + return list(obj) elif hasattr(obj, 'as_dict'): return obj.as_dict() @@ -548,7 +550,13 @@ def get_config(api): try: req = api(METHOD_GET, URL_API_CONFIG) - return req.json() if req.status_code == 200 else {} + if req.status_code != 200: + return {} + + result = req.json() + if 'components' in result: + result['components'] = set(result['components']) + return result except (HomeAssistantError, ValueError): # ValueError if req.json() can't parse the JSON diff --git a/tests/common.py b/tests/common.py index e384a4f1b37..70afae75155 100644 --- a/tests/common.py +++ b/tests/common.py @@ -213,7 +213,7 @@ def mock_state_change_event(hass, new_state, old_state=None): def mock_http_component(hass): """Mock the HTTP component.""" hass.http = MagicMock() - hass.config.components.append('http') + hass.config.components.add('http') hass.http.views = {} def mock_register_view(view): diff --git a/tests/components/alarm_control_panel/test_mqtt.py b/tests/components/alarm_control_panel/test_mqtt.py index 871bc6afd76..c253c4a49fb 100644 --- a/tests/components/alarm_control_panel/test_mqtt.py +++ b/tests/components/alarm_control_panel/test_mqtt.py @@ -30,7 +30,7 @@ class TestAlarmControlPanelMQTT(unittest.TestCase): def test_fail_setup_without_state_topic(self): """Test for failing with no state topic.""" - self.hass.config.components = ['mqtt'] + self.hass.config.components = set(['mqtt']) with assert_setup_component(0) as config: assert setup_component(self.hass, alarm_control_panel.DOMAIN, { alarm_control_panel.DOMAIN: { @@ -42,7 +42,7 @@ class TestAlarmControlPanelMQTT(unittest.TestCase): def test_fail_setup_without_command_topic(self): """Test failing with no command topic.""" - self.hass.config.components = ['mqtt'] + self.hass.config.components = set(['mqtt']) with assert_setup_component(0): assert setup_component(self.hass, alarm_control_panel.DOMAIN, { alarm_control_panel.DOMAIN: { @@ -53,7 +53,7 @@ class TestAlarmControlPanelMQTT(unittest.TestCase): def test_update_state_via_state_topic(self): """Test updating with via state topic.""" - self.hass.config.components = ['mqtt'] + self.hass.config.components = set(['mqtt']) assert setup_component(self.hass, alarm_control_panel.DOMAIN, { alarm_control_panel.DOMAIN: { 'platform': 'mqtt', @@ -77,7 +77,7 @@ class TestAlarmControlPanelMQTT(unittest.TestCase): def test_ignore_update_state_if_unknown_via_state_topic(self): """Test ignoring updates via state topic.""" - self.hass.config.components = ['mqtt'] + self.hass.config.components = set(['mqtt']) assert setup_component(self.hass, alarm_control_panel.DOMAIN, { alarm_control_panel.DOMAIN: { 'platform': 'mqtt', @@ -98,7 +98,7 @@ class TestAlarmControlPanelMQTT(unittest.TestCase): def test_arm_home_publishes_mqtt(self): """Test publishing of MQTT messages while armed.""" - self.hass.config.components = ['mqtt'] + self.hass.config.components = set(['mqtt']) assert setup_component(self.hass, alarm_control_panel.DOMAIN, { alarm_control_panel.DOMAIN: { 'platform': 'mqtt', @@ -115,7 +115,7 @@ class TestAlarmControlPanelMQTT(unittest.TestCase): def test_arm_home_not_publishes_mqtt_with_invalid_code(self): """Test not publishing of MQTT messages with invalid code.""" - self.hass.config.components = ['mqtt'] + self.hass.config.components = set(['mqtt']) assert setup_component(self.hass, alarm_control_panel.DOMAIN, { alarm_control_panel.DOMAIN: { 'platform': 'mqtt', @@ -133,7 +133,7 @@ class TestAlarmControlPanelMQTT(unittest.TestCase): def test_arm_away_publishes_mqtt(self): """Test publishing of MQTT messages while armed.""" - self.hass.config.components = ['mqtt'] + self.hass.config.components = set(['mqtt']) assert setup_component(self.hass, alarm_control_panel.DOMAIN, { alarm_control_panel.DOMAIN: { 'platform': 'mqtt', @@ -150,7 +150,7 @@ class TestAlarmControlPanelMQTT(unittest.TestCase): def test_arm_away_not_publishes_mqtt_with_invalid_code(self): """Test not publishing of MQTT messages with invalid code.""" - self.hass.config.components = ['mqtt'] + self.hass.config.components = set(['mqtt']) assert setup_component(self.hass, alarm_control_panel.DOMAIN, { alarm_control_panel.DOMAIN: { 'platform': 'mqtt', @@ -168,7 +168,7 @@ class TestAlarmControlPanelMQTT(unittest.TestCase): def test_disarm_publishes_mqtt(self): """Test publishing of MQTT messages while disarmed.""" - self.hass.config.components = ['mqtt'] + self.hass.config.components = set(['mqtt']) assert setup_component(self.hass, alarm_control_panel.DOMAIN, { alarm_control_panel.DOMAIN: { 'platform': 'mqtt', @@ -185,7 +185,7 @@ class TestAlarmControlPanelMQTT(unittest.TestCase): def test_disarm_not_publishes_mqtt_with_invalid_code(self): """Test not publishing of MQTT messages with invalid code.""" - self.hass.config.components = ['mqtt'] + self.hass.config.components = set(['mqtt']) assert setup_component(self.hass, alarm_control_panel.DOMAIN, { alarm_control_panel.DOMAIN: { 'platform': 'mqtt', diff --git a/tests/components/automation/test_event.py b/tests/components/automation/test_event.py index a81e4200f48..18e112fc498 100644 --- a/tests/components/automation/test_event.py +++ b/tests/components/automation/test_event.py @@ -15,7 +15,7 @@ class TestAutomationEvent(unittest.TestCase): def setUp(self): """Setup things to be run when tests are started.""" self.hass = get_test_home_assistant() - self.hass.config.components.append('group') + self.hass.config.components.add('group') self.calls = [] @callback diff --git a/tests/components/automation/test_init.py b/tests/components/automation/test_init.py index 39df4af719d..ca8eef4fc0d 100644 --- a/tests/components/automation/test_init.py +++ b/tests/components/automation/test_init.py @@ -21,7 +21,7 @@ class TestAutomation(unittest.TestCase): def setUp(self): """Setup things to be run when tests are started.""" self.hass = get_test_home_assistant() - self.hass.config.components.append('group') + self.hass.config.components.add('group') self.calls = [] @callback diff --git a/tests/components/automation/test_mqtt.py b/tests/components/automation/test_mqtt.py index 7ee2aadeaf6..a2746728fe3 100644 --- a/tests/components/automation/test_mqtt.py +++ b/tests/components/automation/test_mqtt.py @@ -15,7 +15,7 @@ class TestAutomationMQTT(unittest.TestCase): def setUp(self): """Setup things to be run when tests are started.""" self.hass = get_test_home_assistant() - self.hass.config.components.append('group') + self.hass.config.components.add('group') mock_mqtt_component(self.hass) self.calls = [] diff --git a/tests/components/automation/test_numeric_state.py b/tests/components/automation/test_numeric_state.py index c7db55726eb..85842ccf5eb 100644 --- a/tests/components/automation/test_numeric_state.py +++ b/tests/components/automation/test_numeric_state.py @@ -15,7 +15,7 @@ class TestAutomationNumericState(unittest.TestCase): def setUp(self): """Setup things to be run when tests are started.""" self.hass = get_test_home_assistant() - self.hass.config.components.append('group') + self.hass.config.components.add('group') self.calls = [] @callback diff --git a/tests/components/automation/test_state.py b/tests/components/automation/test_state.py index 3f54c876c5f..00048f1f577 100644 --- a/tests/components/automation/test_state.py +++ b/tests/components/automation/test_state.py @@ -20,7 +20,7 @@ class TestAutomationState(unittest.TestCase): def setUp(self): """Setup things to be run when tests are started.""" self.hass = get_test_home_assistant() - self.hass.config.components.append('group') + self.hass.config.components.add('group') self.hass.states.set('test.entity', 'hello') self.calls = [] diff --git a/tests/components/automation/test_sun.py b/tests/components/automation/test_sun.py index 582533d8476..bad592a740a 100644 --- a/tests/components/automation/test_sun.py +++ b/tests/components/automation/test_sun.py @@ -20,8 +20,8 @@ class TestAutomationSun(unittest.TestCase): def setUp(self): """Setup things to be run when tests are started.""" self.hass = get_test_home_assistant() - self.hass.config.components.append('group') - self.hass.config.components.append('sun') + self.hass.config.components.add('group') + self.hass.config.components.add('sun') self.calls = [] diff --git a/tests/components/automation/test_template.py b/tests/components/automation/test_template.py index 7de2954a270..1971fb26d31 100644 --- a/tests/components/automation/test_template.py +++ b/tests/components/automation/test_template.py @@ -15,7 +15,7 @@ class TestAutomationTemplate(unittest.TestCase): def setUp(self): """Setup things to be run when tests are started.""" self.hass = get_test_home_assistant() - self.hass.config.components.append('group') + self.hass.config.components.add('group') self.hass.states.set('test.entity', 'hello') self.calls = [] diff --git a/tests/components/automation/test_time.py b/tests/components/automation/test_time.py index 10e7910adcb..8f323dd4b37 100644 --- a/tests/components/automation/test_time.py +++ b/tests/components/automation/test_time.py @@ -19,7 +19,7 @@ class TestAutomationTime(unittest.TestCase): def setUp(self): """Setup things to be run when tests are started.""" self.hass = get_test_home_assistant() - self.hass.config.components.append('group') + self.hass.config.components.add('group') self.calls = [] @callback diff --git a/tests/components/automation/test_zone.py b/tests/components/automation/test_zone.py index 72a79faa828..f2b304070b4 100644 --- a/tests/components/automation/test_zone.py +++ b/tests/components/automation/test_zone.py @@ -15,7 +15,7 @@ class TestAutomationZone(unittest.TestCase): def setUp(self): """Setup things to be run when tests are started.""" self.hass = get_test_home_assistant() - self.hass.config.components.append('group') + self.hass.config.components.add('group') assert setup_component(self.hass, zone.DOMAIN, { 'zone': { 'name': 'test', diff --git a/tests/components/binary_sensor/test_mqtt.py b/tests/components/binary_sensor/test_mqtt.py index 3bff4420a66..5e4a2640a34 100644 --- a/tests/components/binary_sensor/test_mqtt.py +++ b/tests/components/binary_sensor/test_mqtt.py @@ -23,7 +23,7 @@ class TestSensorMQTT(unittest.TestCase): def test_setting_sensor_value_via_mqtt_message(self): """Test the setting of the value via MQTT.""" - self.hass.config.components = ['mqtt'] + self.hass.config.components = set(['mqtt']) assert setup_component(self.hass, binary_sensor.DOMAIN, { binary_sensor.DOMAIN: { 'platform': 'mqtt', @@ -49,7 +49,7 @@ class TestSensorMQTT(unittest.TestCase): def test_valid_sensor_class(self): """Test the setting of a valid sensor class.""" - self.hass.config.components = ['mqtt'] + self.hass.config.components = set(['mqtt']) assert setup_component(self.hass, binary_sensor.DOMAIN, { binary_sensor.DOMAIN: { 'platform': 'mqtt', @@ -64,7 +64,7 @@ class TestSensorMQTT(unittest.TestCase): def test_invalid_sensor_class(self): """Test the setting of an invalid sensor class.""" - self.hass.config.components = ['mqtt'] + self.hass.config.components = set(['mqtt']) assert setup_component(self.hass, binary_sensor.DOMAIN, { binary_sensor.DOMAIN: { 'platform': 'mqtt', diff --git a/tests/components/camera/test_uvc.py b/tests/components/camera/test_uvc.py index f5cb0992ec0..c5b8b6a9f78 100644 --- a/tests/components/camera/test_uvc.py +++ b/tests/components/camera/test_uvc.py @@ -19,7 +19,7 @@ class TestUVCSetup(unittest.TestCase): """Setup things to be run when tests are started.""" self.hass = get_test_home_assistant() self.hass.http = mock.MagicMock() - self.hass.config.components = ['http'] + self.hass.config.components = set(['http']) def tearDown(self): """Stop everything that was started.""" diff --git a/tests/components/cover/test_mqtt.py b/tests/components/cover/test_mqtt.py index 3986fc2466e..05fa29263a9 100644 --- a/tests/components/cover/test_mqtt.py +++ b/tests/components/cover/test_mqtt.py @@ -23,7 +23,7 @@ class TestCoverMQTT(unittest.TestCase): def test_state_via_state_topic(self): """Test the controlling state via topic.""" - self.hass.config.components = ['mqtt'] + self.hass.config.components = set(['mqtt']) self.assertTrue(setup_component(self.hass, cover.DOMAIN, { cover.DOMAIN: { 'platform': 'mqtt', @@ -72,7 +72,7 @@ class TestCoverMQTT(unittest.TestCase): def test_state_via_template(self): """Test the controlling state via topic.""" - self.hass.config.components = ['mqtt'] + self.hass.config.components = set(['mqtt']) self.assertTrue(setup_component(self.hass, cover.DOMAIN, { cover.DOMAIN: { 'platform': 'mqtt', @@ -101,7 +101,7 @@ class TestCoverMQTT(unittest.TestCase): def test_optimistic_state_change(self): """Test changing state optimistically.""" - self.hass.config.components = ['mqtt'] + self.hass.config.components = set(['mqtt']) self.assertTrue(setup_component(self.hass, cover.DOMAIN, { cover.DOMAIN: { 'platform': 'mqtt', @@ -132,7 +132,7 @@ class TestCoverMQTT(unittest.TestCase): def test_send_open_cover_command(self): """Test the sending of open_cover.""" - self.hass.config.components = ['mqtt'] + self.hass.config.components = set(['mqtt']) self.assertTrue(setup_component(self.hass, cover.DOMAIN, { cover.DOMAIN: { 'platform': 'mqtt', @@ -156,7 +156,7 @@ class TestCoverMQTT(unittest.TestCase): def test_send_close_cover_command(self): """Test the sending of close_cover.""" - self.hass.config.components = ['mqtt'] + self.hass.config.components = set(['mqtt']) self.assertTrue(setup_component(self.hass, cover.DOMAIN, { cover.DOMAIN: { 'platform': 'mqtt', @@ -180,7 +180,7 @@ class TestCoverMQTT(unittest.TestCase): def test_send_stop__cover_command(self): """Test the sending of stop_cover.""" - self.hass.config.components = ['mqtt'] + self.hass.config.components = set(['mqtt']) self.assertTrue(setup_component(self.hass, cover.DOMAIN, { cover.DOMAIN: { 'platform': 'mqtt', @@ -204,7 +204,7 @@ class TestCoverMQTT(unittest.TestCase): def test_current_cover_position(self): """Test the current cover position.""" - self.hass.config.components = ['mqtt'] + self.hass.config.components = set(['mqtt']) self.assertTrue(setup_component(self.hass, cover.DOMAIN, { cover.DOMAIN: { 'platform': 'mqtt', diff --git a/tests/components/cover/test_rfxtrx.py b/tests/components/cover/test_rfxtrx.py index 5f6ecd01e4e..18e2051afd6 100644 --- a/tests/components/cover/test_rfxtrx.py +++ b/tests/components/cover/test_rfxtrx.py @@ -16,7 +16,7 @@ class TestCoverRfxtrx(unittest.TestCase): def setUp(self): """Setup things to be run when tests are started.""" self.hass = get_test_home_assistant() - self.hass.config.components = ['rfxtrx'] + self.hass.config.components = set(['rfxtrx']) def tearDown(self): """Stop everything that was started.""" diff --git a/tests/components/device_tracker/test_asuswrt.py b/tests/components/device_tracker/test_asuswrt.py index 9dfa010edb3..e2a97fd4c76 100644 --- a/tests/components/device_tracker/test_asuswrt.py +++ b/tests/components/device_tracker/test_asuswrt.py @@ -43,7 +43,7 @@ class TestComponentsDeviceTrackerASUSWRT(unittest.TestCase): def setup_method(self, _): """Setup things to be run when tests are started.""" self.hass = get_test_home_assistant() - self.hass.config.components = ['zone'] + self.hass.config.components = set(['zone']) def teardown_method(self, _): """Stop everything that was started.""" diff --git a/tests/components/device_tracker/test_ddwrt.py b/tests/components/device_tracker/test_ddwrt.py index f7a1c011d10..340bac254b1 100644 --- a/tests/components/device_tracker/test_ddwrt.py +++ b/tests/components/device_tracker/test_ddwrt.py @@ -39,7 +39,7 @@ class TestDdwrt(unittest.TestCase): def setup_method(self, _): """Setup things to be run when tests are started.""" self.hass = get_test_home_assistant() - self.hass.config.components = ['zone'] + self.hass.config.components = set(['zone']) def teardown_method(self, _): """Stop everything that was started.""" diff --git a/tests/components/device_tracker/test_mqtt.py b/tests/components/device_tracker/test_mqtt.py index 9405c944552..3ce3a358b87 100644 --- a/tests/components/device_tracker/test_mqtt.py +++ b/tests/components/device_tracker/test_mqtt.py @@ -43,7 +43,7 @@ class TestComponentsDeviceTrackerMQTT(unittest.TestCase): dev_id = 'paulus' topic = '/location/paulus' - self.hass.config.components = ['mqtt', 'zone'] + self.hass.config.components = set(['mqtt', 'zone']) assert setup_component(self.hass, device_tracker.DOMAIN, { device_tracker.DOMAIN: { CONF_PLATFORM: 'mqtt', @@ -59,7 +59,7 @@ class TestComponentsDeviceTrackerMQTT(unittest.TestCase): topic = '/location/paulus' location = 'work' - self.hass.config.components = ['mqtt', 'zone'] + self.hass.config.components = set(['mqtt', 'zone']) assert setup_component(self.hass, device_tracker.DOMAIN, { device_tracker.DOMAIN: { CONF_PLATFORM: 'mqtt', diff --git a/tests/components/device_tracker/test_upc_connect.py b/tests/components/device_tracker/test_upc_connect.py index 1bcbc841d3a..010c597cc31 100644 --- a/tests/components/device_tracker/test_upc_connect.py +++ b/tests/components/device_tracker/test_upc_connect.py @@ -30,7 +30,7 @@ class TestUPCConnect(object): def setup_method(self): """Setup things to be run when tests are started.""" self.hass = get_test_home_assistant() - self.hass.config.components = ['zone'] + self.hass.config.components = set(['zone']) self.host = "127.0.0.1" diff --git a/tests/components/light/test_mqtt.py b/tests/components/light/test_mqtt.py index 667f2342603..fb6f98f37b4 100644 --- a/tests/components/light/test_mqtt.py +++ b/tests/components/light/test_mqtt.py @@ -99,7 +99,7 @@ class TestLightMQTT(unittest.TestCase): def test_fail_setup_if_no_command_topic(self): """Test if command fails with command topic.""" - self.hass.config.components = ['mqtt'] + self.hass.config.components = set(['mqtt']) with assert_setup_component(0): assert setup_component(self.hass, light.DOMAIN, { light.DOMAIN: { @@ -112,7 +112,7 @@ class TestLightMQTT(unittest.TestCase): def test_no_color_or_brightness_or_color_temp_if_no_topics(self): \ # pylint: disable=invalid-name """Test if there is no color and brightness if no topic.""" - self.hass.config.components = ['mqtt'] + self.hass.config.components = set(['mqtt']) with assert_setup_component(1): assert setup_component(self.hass, light.DOMAIN, { light.DOMAIN: { @@ -157,7 +157,7 @@ class TestLightMQTT(unittest.TestCase): 'payload_off': 0 }} - self.hass.config.components = ['mqtt'] + self.hass.config.components = set(['mqtt']) with assert_setup_component(1): assert setup_component(self.hass, light.DOMAIN, config) @@ -213,7 +213,7 @@ class TestLightMQTT(unittest.TestCase): def test_controlling_scale(self): """Test the controlling scale.""" - self.hass.config.components = ['mqtt'] + self.hass.config.components = set(['mqtt']) with assert_setup_component(1): assert setup_component(self.hass, light.DOMAIN, { light.DOMAIN: { @@ -276,7 +276,7 @@ class TestLightMQTT(unittest.TestCase): 'rgb_value_template': '{{ value_json.hello | join(",") }}', }} - self.hass.config.components = ['mqtt'] + self.hass.config.components = set(['mqtt']) with assert_setup_component(1): assert setup_component(self.hass, light.DOMAIN, config) @@ -316,7 +316,7 @@ class TestLightMQTT(unittest.TestCase): 'payload_off': 'off' }} - self.hass.config.components = ['mqtt'] + self.hass.config.components = set(['mqtt']) with assert_setup_component(1): assert setup_component(self.hass, light.DOMAIN, config) @@ -373,7 +373,7 @@ class TestLightMQTT(unittest.TestCase): 'state_topic': 'test_light_rgb/status', }} - self.hass.config.components = ['mqtt'] + self.hass.config.components = set(['mqtt']) with assert_setup_component(1): assert setup_component(self.hass, light.DOMAIN, config) @@ -398,7 +398,7 @@ class TestLightMQTT(unittest.TestCase): 'state_topic': 'test_light_rgb/status' }} - self.hass.config.components = ['mqtt'] + self.hass.config.components = set(['mqtt']) with assert_setup_component(1): assert setup_component(self.hass, light.DOMAIN, config) diff --git a/tests/components/light/test_mqtt_json.py b/tests/components/light/test_mqtt_json.py index fc9ade7d6ac..cbfa0470fed 100755 --- a/tests/components/light/test_mqtt_json.py +++ b/tests/components/light/test_mqtt_json.py @@ -53,7 +53,7 @@ class TestLightMQTTJSON(unittest.TestCase): def test_fail_setup_if_no_command_topic(self): \ # pylint: disable=invalid-name """Test if setup fails with no command topic.""" - self.hass.config.components = ['mqtt'] + self.hass.config.components = set(['mqtt']) with assert_setup_component(0): assert setup_component(self.hass, light.DOMAIN, { light.DOMAIN: { @@ -66,7 +66,7 @@ class TestLightMQTTJSON(unittest.TestCase): def test_no_color_or_brightness_if_no_config(self): \ # pylint: disable=invalid-name """Test if there is no color and brightness if they aren't defined.""" - self.hass.config.components = ['mqtt'] + self.hass.config.components = set(['mqtt']) assert setup_component(self.hass, light.DOMAIN, { light.DOMAIN: { 'platform': 'mqtt_json', @@ -92,7 +92,7 @@ class TestLightMQTTJSON(unittest.TestCase): def test_controlling_state_via_topic(self): \ # pylint: disable=invalid-name """Test the controlling of the state via topic.""" - self.hass.config.components = ['mqtt'] + self.hass.config.components = set(['mqtt']) assert setup_component(self.hass, light.DOMAIN, { light.DOMAIN: { 'platform': 'mqtt_json', @@ -152,7 +152,7 @@ class TestLightMQTTJSON(unittest.TestCase): def test_sending_mqtt_commands_and_optimistic(self): \ # pylint: disable=invalid-name """Test the sending of command in optimistic mode.""" - self.hass.config.components = ['mqtt'] + self.hass.config.components = set(['mqtt']) assert setup_component(self.hass, light.DOMAIN, { light.DOMAIN: { 'platform': 'mqtt_json', @@ -208,7 +208,7 @@ class TestLightMQTTJSON(unittest.TestCase): def test_flash_short_and_long(self): \ # pylint: disable=invalid-name """Test for flash length being sent when included.""" - self.hass.config.components = ['mqtt'] + self.hass.config.components = set(['mqtt']) assert setup_component(self.hass, light.DOMAIN, { light.DOMAIN: { 'platform': 'mqtt_json', @@ -250,7 +250,7 @@ class TestLightMQTTJSON(unittest.TestCase): def test_transition(self): """Test for transition time being sent when included.""" - self.hass.config.components = ['mqtt'] + self.hass.config.components = set(['mqtt']) assert setup_component(self.hass, light.DOMAIN, { light.DOMAIN: { 'platform': 'mqtt_json', @@ -292,7 +292,7 @@ class TestLightMQTTJSON(unittest.TestCase): def test_invalid_color_and_brightness_values(self): \ # pylint: disable=invalid-name """Test that invalid color/brightness values are ignored.""" - self.hass.config.components = ['mqtt'] + self.hass.config.components = set(['mqtt']) assert setup_component(self.hass, light.DOMAIN, { light.DOMAIN: { 'platform': 'mqtt_json', diff --git a/tests/components/light/test_mqtt_template.py b/tests/components/light/test_mqtt_template.py index 954f3087646..b2a37c97001 100755 --- a/tests/components/light/test_mqtt_template.py +++ b/tests/components/light/test_mqtt_template.py @@ -45,7 +45,7 @@ class TestLightMQTTTemplate(unittest.TestCase): def test_setup_fails(self): \ # pylint: disable=invalid-name """Test that setup fails with missing required configuration items.""" - self.hass.config.components = ['mqtt'] + self.hass.config.components = set(['mqtt']) with assert_setup_component(0): assert setup_component(self.hass, light.DOMAIN, { light.DOMAIN: { @@ -58,7 +58,7 @@ class TestLightMQTTTemplate(unittest.TestCase): def test_state_change_via_topic(self): \ # pylint: disable=invalid-name """Test state change via topic.""" - self.hass.config.components = ['mqtt'] + self.hass.config.components = set(['mqtt']) with assert_setup_component(1): assert setup_component(self.hass, light.DOMAIN, { light.DOMAIN: { @@ -93,7 +93,7 @@ class TestLightMQTTTemplate(unittest.TestCase): def test_state_brightness_color_effect_change_via_topic(self): \ # pylint: disable=invalid-name """Test state, brightness, color and effect change via topic.""" - self.hass.config.components = ['mqtt'] + self.hass.config.components = set(['mqtt']) with assert_setup_component(1): assert setup_component(self.hass, light.DOMAIN, { light.DOMAIN: { @@ -170,7 +170,7 @@ class TestLightMQTTTemplate(unittest.TestCase): def test_optimistic(self): \ # pylint: disable=invalid-name """Test optimistic mode.""" - self.hass.config.components = ['mqtt'] + self.hass.config.components = set(['mqtt']) with assert_setup_component(1): assert setup_component(self.hass, light.DOMAIN, { light.DOMAIN: { @@ -232,7 +232,7 @@ class TestLightMQTTTemplate(unittest.TestCase): def test_flash(self): \ # pylint: disable=invalid-name """Test flash.""" - self.hass.config.components = ['mqtt'] + self.hass.config.components = set(['mqtt']) with assert_setup_component(1): assert setup_component(self.hass, light.DOMAIN, { light.DOMAIN: { @@ -276,7 +276,7 @@ class TestLightMQTTTemplate(unittest.TestCase): def test_transition(self): """Test for transition time being sent when included.""" - self.hass.config.components = ['mqtt'] + self.hass.config.components = set(['mqtt']) with assert_setup_component(1): assert setup_component(self.hass, light.DOMAIN, { light.DOMAIN: { @@ -320,7 +320,7 @@ class TestLightMQTTTemplate(unittest.TestCase): def test_invalid_values(self): \ # pylint: disable=invalid-name """Test that invalid values are ignored.""" - self.hass.config.components = ['mqtt'] + self.hass.config.components = set(['mqtt']) with assert_setup_component(1): assert setup_component(self.hass, light.DOMAIN, { light.DOMAIN: { diff --git a/tests/components/light/test_rfxtrx.py b/tests/components/light/test_rfxtrx.py index 6a9311b7892..ca50a9cc925 100644 --- a/tests/components/light/test_rfxtrx.py +++ b/tests/components/light/test_rfxtrx.py @@ -16,7 +16,7 @@ class TestLightRfxtrx(unittest.TestCase): def setUp(self): """Setup things to be run when tests are started.""" self.hass = get_test_home_assistant() - self.hass.config.components = ['rfxtrx'] + self.hass.config.components = set(['rfxtrx']) def tearDown(self): """Stop everything that was started.""" diff --git a/tests/components/lock/test_mqtt.py b/tests/components/lock/test_mqtt.py index 0c85360fc00..f22729a1e5b 100644 --- a/tests/components/lock/test_mqtt.py +++ b/tests/components/lock/test_mqtt.py @@ -23,7 +23,7 @@ class TestLockMQTT(unittest.TestCase): def test_controlling_state_via_topic(self): """Test the controlling state via topic.""" - self.hass.config.components = ['mqtt'] + self.hass.config.components = set(['mqtt']) assert setup_component(self.hass, lock.DOMAIN, { lock.DOMAIN: { 'platform': 'mqtt', @@ -53,7 +53,7 @@ class TestLockMQTT(unittest.TestCase): def test_sending_mqtt_commands_and_optimistic(self): """Test the sending MQTT commands in optimistic mode.""" - self.hass.config.components = ['mqtt'] + self.hass.config.components = set(['mqtt']) assert setup_component(self.hass, lock.DOMAIN, { lock.DOMAIN: { 'platform': 'mqtt', @@ -87,7 +87,7 @@ class TestLockMQTT(unittest.TestCase): def test_controlling_state_via_topic_and_json_message(self): """Test the controlling state via topic and JSON message.""" - self.hass.config.components = ['mqtt'] + self.hass.config.components = set(['mqtt']) assert setup_component(self.hass, lock.DOMAIN, { lock.DOMAIN: { 'platform': 'mqtt', diff --git a/tests/components/mqtt/test_init.py b/tests/components/mqtt/test_init.py index 54566a09f59..204f1fe15b4 100644 --- a/tests/components/mqtt/test_init.py +++ b/tests/components/mqtt/test_init.py @@ -57,11 +57,11 @@ class TestMQTT(unittest.TestCase): with mock.patch('homeassistant.components.mqtt.MQTT', side_effect=socket.error()): - self.hass.config.components = [] + self.hass.config.components = set() assert not setup_component(self.hass, mqtt.DOMAIN, test_broker_cfg) # Ensure if we dont raise it sets up correctly - self.hass.config.components = [] + self.hass.config.components = set() assert setup_component(self.hass, mqtt.DOMAIN, test_broker_cfg) @mock.patch('paho.mqtt.client.Client') @@ -71,13 +71,13 @@ class TestMQTT(unittest.TestCase): with mock.patch('homeassistant.components.mqtt.server.start', return_value=(True, client_config)) as _start: - self.hass.config.components = [] + self.hass.config.components = set() assert setup_component(self.hass, mqtt.DOMAIN, {mqtt.DOMAIN: {}}) assert _start.call_count == 1 # Test with `embedded: None` - self.hass.config.components = [] + self.hass.config.components = set() assert setup_component(self.hass, mqtt.DOMAIN, {mqtt.DOMAIN: {'embedded': None}}) assert _start.call_count == 2 # Another call @@ -234,7 +234,7 @@ class TestMQTTCallbacks(unittest.TestCase): # mock_mqtt_component(self.hass) with mock.patch('paho.mqtt.client.Client'): - self.hass.config.components = [] + self.hass.config.components = set() assert setup_component(self.hass, mqtt.DOMAIN, { mqtt.DOMAIN: { mqtt.CONF_BROKER: 'mock-broker', diff --git a/tests/components/mqtt/test_server.py b/tests/components/mqtt/test_server.py index 03caf8cc4c0..ceb648c6ef5 100644 --- a/tests/components/mqtt/test_server.py +++ b/tests/components/mqtt/test_server.py @@ -13,7 +13,7 @@ class TestMQTT: def setup_method(self, method): """Setup things to be run when tests are started.""" self.hass = get_test_home_assistant() - self.hass.config.components.append('http') + self.hass.config.components.add('http') def teardown_method(self, method): """Stop everything that was started.""" @@ -38,7 +38,7 @@ class TestMQTT: mock_mqtt.reset_mock() - self.hass.config.components = ['http'] + self.hass.config.components = set(['http']) self.hass.config.api = MagicMock(api_password=None) assert setup_component(self.hass, mqtt.DOMAIN, {}) assert mock_mqtt.called diff --git a/tests/components/sensor/test_mqtt.py b/tests/components/sensor/test_mqtt.py index cac02d6bcd2..771aa999210 100644 --- a/tests/components/sensor/test_mqtt.py +++ b/tests/components/sensor/test_mqtt.py @@ -22,7 +22,7 @@ class TestSensorMQTT(unittest.TestCase): def test_setting_sensor_value_via_mqtt_message(self): """Test the setting of the value via MQTT.""" - self.hass.config.components = ['mqtt'] + self.hass.config.components = set(['mqtt']) assert setup_component(self.hass, sensor.DOMAIN, { sensor.DOMAIN: { 'platform': 'mqtt', @@ -42,7 +42,7 @@ class TestSensorMQTT(unittest.TestCase): def test_setting_sensor_value_via_mqtt_json_message(self): """Test the setting of the value via MQTT with JSON playload.""" - self.hass.config.components = ['mqtt'] + self.hass.config.components = set(['mqtt']) assert setup_component(self.hass, sensor.DOMAIN, { sensor.DOMAIN: { 'platform': 'mqtt', diff --git a/tests/components/sensor/test_pilight.py b/tests/components/sensor/test_pilight.py index 943369f209c..2bade2af1a3 100644 --- a/tests/components/sensor/test_pilight.py +++ b/tests/components/sensor/test_pilight.py @@ -23,7 +23,7 @@ def setup_function(): global HASS HASS = get_test_home_assistant() - HASS.config.components = ['pilight'] + HASS.config.components = set(['pilight']) # pylint: disable=invalid-name diff --git a/tests/components/sensor/test_rfxtrx.py b/tests/components/sensor/test_rfxtrx.py index e70f8b5641d..092a9b60f85 100644 --- a/tests/components/sensor/test_rfxtrx.py +++ b/tests/components/sensor/test_rfxtrx.py @@ -17,7 +17,7 @@ class TestSensorRfxtrx(unittest.TestCase): def setUp(self): """Setup things to be run when tests are started.""" self.hass = get_test_home_assistant() - self.hass.config.components = ['rfxtrx'] + self.hass.config.components = set(['rfxtrx']) def tearDown(self): """Stop everything that was started.""" diff --git a/tests/components/switch/test_mqtt.py b/tests/components/switch/test_mqtt.py index f39f4d11ec5..f6f9ffa0f86 100644 --- a/tests/components/switch/test_mqtt.py +++ b/tests/components/switch/test_mqtt.py @@ -22,7 +22,7 @@ class TestSensorMQTT(unittest.TestCase): def test_controlling_state_via_topic(self): """Test the controlling state via topic.""" - self.hass.config.components = ['mqtt'] + self.hass.config.components = set(['mqtt']) assert setup_component(self.hass, switch.DOMAIN, { switch.DOMAIN: { 'platform': 'mqtt', @@ -52,7 +52,7 @@ class TestSensorMQTT(unittest.TestCase): def test_sending_mqtt_commands_and_optimistic(self): """Test the sending MQTT commands in optimistic mode.""" - self.hass.config.components = ['mqtt'] + self.hass.config.components = set(['mqtt']) assert setup_component(self.hass, switch.DOMAIN, { switch.DOMAIN: { 'platform': 'mqtt', @@ -86,7 +86,7 @@ class TestSensorMQTT(unittest.TestCase): def test_controlling_state_via_topic_and_json_message(self): """Test the controlling state via topic and JSON message.""" - self.hass.config.components = ['mqtt'] + self.hass.config.components = set(['mqtt']) assert setup_component(self.hass, switch.DOMAIN, { switch.DOMAIN: { 'platform': 'mqtt', diff --git a/tests/components/switch/test_rfxtrx.py b/tests/components/switch/test_rfxtrx.py index ddee7cccaf7..26af42be4a9 100644 --- a/tests/components/switch/test_rfxtrx.py +++ b/tests/components/switch/test_rfxtrx.py @@ -16,7 +16,7 @@ class TestSwitchRfxtrx(unittest.TestCase): def setUp(self): """Setup things to be run when tests are started.""" self.hass = get_test_home_assistant() - self.hass.config.components = ['rfxtrx'] + self.hass.config.components = set(['rfxtrx']) def tearDown(self): """Stop everything that was started.""" diff --git a/tests/components/test_api.py b/tests/components/test_api.py index 28ffa7405e7..38222ff8f00 100644 --- a/tests/components/test_api.py +++ b/tests/components/test_api.py @@ -235,13 +235,17 @@ class TestAPI(unittest.TestCase): """Test the return of the configuration.""" req = requests.get(_url(const.URL_API_CONFIG), headers=HA_HEADERS) - self.assertEqual(hass.config.as_dict(), req.json()) + result = req.json() + if 'components' in result: + result['components'] = set(result['components']) + + self.assertEqual(hass.config.as_dict(), result) def test_api_get_components(self): """Test the return of the components.""" req = requests.get(_url(const.URL_API_COMPONENTS), headers=HA_HEADERS) - self.assertEqual(hass.config.components, req.json()) + self.assertEqual(hass.config.components, set(req.json())) def test_api_get_error_log(self): """Test the return of the error log.""" diff --git a/tests/components/test_logbook.py b/tests/components/test_logbook.py index 047ca480f6f..1e755a5155b 100644 --- a/tests/components/test_logbook.py +++ b/tests/components/test_logbook.py @@ -25,7 +25,7 @@ class TestComponentLogbook(unittest.TestCase): """Setup things to be run when tests are started.""" self.hass = get_test_home_assistant() mock_http_component(self.hass) - self.hass.config.components += ['frontend', 'recorder', 'api'] + self.hass.config.components &= set(['frontend', 'recorder', 'api']) with patch('homeassistant.components.logbook.' 'register_built_in_panel'): assert setup_component(self.hass, logbook.DOMAIN, diff --git a/tests/components/test_script.py b/tests/components/test_script.py index 438ae75e9c6..4e8d94ade21 100644 --- a/tests/components/test_script.py +++ b/tests/components/test_script.py @@ -19,7 +19,7 @@ class TestScriptComponent(unittest.TestCase): def setUp(self): """Setup things to be run when tests are started.""" self.hass = get_test_home_assistant() - self.hass.config.components.append('group') + self.hass.config.components.add('group') # pylint: disable=invalid-name def tearDown(self): diff --git a/tests/components/test_websocket_api.py b/tests/components/test_websocket_api.py index a6748e7fc16..3cdc77414ee 100644 --- a/tests/components/test_websocket_api.py +++ b/tests/components/test_websocket_api.py @@ -265,6 +265,10 @@ def test_get_config(hass, websocket_client): assert msg['id'] == 5 assert msg['type'] == wapi.TYPE_RESULT assert msg['success'] + + if 'components' in msg['result']: + msg['result']['components'] = set(msg['result']['components']) + assert msg['result'] == hass.config.as_dict() diff --git a/tests/test_bootstrap.py b/tests/test_bootstrap.py index 0a1e3633916..b2c644a68b9 100644 --- a/tests/test_bootstrap.py +++ b/tests/test_bootstrap.py @@ -61,7 +61,7 @@ class TestBootstrap: @mock.patch('homeassistant.helpers.signal.async_register_signal_handling') def test_from_config_file(self, mock_upgrade, mock_detect, mock_signal): """Test with configuration file.""" - components = ['browser', 'conversation', 'script'] + components = set(['browser', 'conversation', 'script']) files = { 'config.yaml': ''.join( '{}:\n'.format(comp) @@ -76,8 +76,8 @@ class TestBootstrap: patch_yaml_files(files, True): self.hass = bootstrap.from_config_file('config.yaml') - components.append('group') - assert sorted(components) == sorted(self.hass.config.components) + components.add('group') + assert components == self.hass.config.components def test_handle_setup_circular_dependency(self): """Test the setup of circular dependencies.""" @@ -91,7 +91,7 @@ class TestBootstrap: loader.set_component('comp_a', MockModule('comp_a', setup=setup_a)) bootstrap.setup_component(self.hass, 'comp_a') - assert ['comp_a'] == self.hass.config.components + assert set(['comp_a']) == self.hass.config.components def test_validate_component_config(self): """Test validating component configuration.""" @@ -251,7 +251,7 @@ class TestBootstrap: thread = threading.Thread(target=setup_component) thread.start() - self.hass.config.components.append('comp') + self.hass.config.components.add('comp') thread.join() diff --git a/tests/test_core.py b/tests/test_core.py index 14276584ae2..98909ff8616 100644 --- a/tests/test_core.py +++ b/tests/test_core.py @@ -728,7 +728,7 @@ class TestConfig(unittest.TestCase): CONF_UNIT_SYSTEM: METRIC_SYSTEM.as_dict(), 'location_name': None, 'time_zone': 'UTC', - 'components': [], + 'components': set(), 'config_dir': '/tmp/ha-config', 'version': __version__, } From ecbbb06b2f9d251cba883d7deadf15a4edc322ee Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Pierre=20St=C3=A5hl?= Date: Thu, 9 Feb 2017 22:25:06 +0100 Subject: [PATCH 003/196] Handle connection errors when connecting to Apple TVs (#5829) * Handle connection errors when connecting to Apple TVs Also bump pyatv to 0.1.2 which fixes a request leak. * Fix pylint error * Fix import order --- homeassistant/components/media_player/apple_tv.py | 5 ++++- requirements_all.txt | 2 +- 2 files changed, 5 insertions(+), 2 deletions(-) diff --git a/homeassistant/components/media_player/apple_tv.py b/homeassistant/components/media_player/apple_tv.py index 19700e2f8d7..a4632c5a12d 100644 --- a/homeassistant/components/media_player/apple_tv.py +++ b/homeassistant/components/media_player/apple_tv.py @@ -8,6 +8,7 @@ import asyncio import logging import hashlib +import aiohttp import voluptuous as vol from homeassistant.components.media_player import ( @@ -21,7 +22,7 @@ import homeassistant.helpers.config_validation as cv import homeassistant.util.dt as dt_util -REQUIREMENTS = ['pyatv==0.1.1'] +REQUIREMENTS = ['pyatv==0.1.2'] _LOGGER = logging.getLogger(__name__) @@ -128,6 +129,8 @@ class AppleTvDevice(MediaPlayerDevice): self._playing = playing except exceptions.AuthenticationError as ex: _LOGGER.warning('%s (bad login id?)', str(ex)) + except aiohttp.errors.ClientOSError as ex: + _LOGGER.error('failed to connect to Apple TV (%s)', str(ex)) except asyncio.TimeoutError: _LOGGER.warning('timed out while connecting to Apple TV') diff --git a/requirements_all.txt b/requirements_all.txt index 21c5538c76b..e67826fa1f6 100755 --- a/requirements_all.txt +++ b/requirements_all.txt @@ -418,7 +418,7 @@ pyasn1-modules==0.0.8 pyasn1==0.2.2 # homeassistant.components.media_player.apple_tv -pyatv==0.1.1 +pyatv==0.1.2 # homeassistant.components.device_tracker.bbox # homeassistant.components.sensor.bbox From ebfff6a907ba5d43a8bfa342d12b300980d861cf Mon Sep 17 00:00:00 2001 From: Stefano Scipioni Date: Thu, 9 Feb 2017 23:05:28 +0100 Subject: [PATCH 004/196] Telegram webhooks (#5793) * new component telegram_webhooks * keyboard support in telegram notify * telegram_webhooks has no tests * requirement like notify/telegram * ops, requirements_all.txt needed for travis * ops, requirements_all.txt is generated by script/gen_requirements_all.py * check telegram trusted networks in web handler * raise an event now * use of hass.config.api.base_url * more readable * small cleanups * Small style change for HA guideline * fix lint * revert return to origin --- .coveragerc | 1 + homeassistant/components/notify/telegram.py | 21 ++- homeassistant/components/telegram_webhooks.py | 130 ++++++++++++++++++ requirements_all.txt | 1 + 4 files changed, 149 insertions(+), 4 deletions(-) create mode 100644 homeassistant/components/telegram_webhooks.py diff --git a/.coveragerc b/.coveragerc index 9de3b6f8cf6..14f9a8b29f6 100644 --- a/.coveragerc +++ b/.coveragerc @@ -386,6 +386,7 @@ omit = homeassistant/components/switch/tplink.py homeassistant/components/switch/transmission.py homeassistant/components/switch/wake_on_lan.py + homeassistant/components/telegram_webhooks.py homeassistant/components/thingspeak.py homeassistant/components/tts/amazon_polly.py homeassistant/components/tts/picotts.py diff --git a/homeassistant/components/notify/telegram.py b/homeassistant/components/notify/telegram.py index fd901016fc5..0020c67eefb 100644 --- a/homeassistant/components/notify/telegram.py +++ b/homeassistant/components/notify/telegram.py @@ -22,6 +22,7 @@ _LOGGER = logging.getLogger(__name__) REQUIREMENTS = ['python-telegram-bot==5.3.0'] ATTR_PHOTO = 'photo' +ATTR_KEYBOARD = 'keyboard' ATTR_DOCUMENT = 'document' ATTR_CAPTION = 'caption' ATTR_URL = 'url' @@ -107,6 +108,10 @@ class TelegramNotificationService(BaseNotificationService): return self.send_location(data.get(ATTR_LOCATION)) elif data is not None and ATTR_DOCUMENT in data: return self.send_document(data.get(ATTR_DOCUMENT)) + elif data is not None and ATTR_KEYBOARD in data: + keys = data.get(ATTR_KEYBOARD) + keys = keys if isinstance(keys, list) else [keys] + return self.send_keyboard(message, keys) if title: text = '{} {}'.format(title, message) @@ -122,7 +127,18 @@ class TelegramNotificationService(BaseNotificationService): parse_mode=parse_mode) except telegram.error.TelegramError: _LOGGER.exception("Error sending message") - return + + def send_keyboard(self, message, keys): + """Display keyboard.""" + import telegram + + keyboard = telegram.ReplyKeyboardMarkup([ + [key.strip() for key in row.split(",")] for row in keys]) + try: + self.bot.sendMessage(chat_id=self._chat_id, text=message, + reply_markup=keyboard) + except telegram.error.TelegramError: + _LOGGER.exception("Error sending message") def send_photo(self, data): """Send a photo.""" @@ -141,7 +157,6 @@ class TelegramNotificationService(BaseNotificationService): photo=photo, caption=caption) except telegram.error.TelegramError: _LOGGER.exception("Error sending photo") - return def send_document(self, data): """Send a document.""" @@ -160,7 +175,6 @@ class TelegramNotificationService(BaseNotificationService): document=document, caption=caption) except telegram.error.TelegramError: _LOGGER.exception("Error sending document") - return def send_location(self, gps): """Send a location.""" @@ -174,4 +188,3 @@ class TelegramNotificationService(BaseNotificationService): latitude=latitude, longitude=longitude) except telegram.error.TelegramError: _LOGGER.exception("Error sending location") - return diff --git a/homeassistant/components/telegram_webhooks.py b/homeassistant/components/telegram_webhooks.py new file mode 100644 index 00000000000..541b81a9567 --- /dev/null +++ b/homeassistant/components/telegram_webhooks.py @@ -0,0 +1,130 @@ +""" +Allows utilizing telegram webhooks. + +See https://core.telegram.org/bots/webhooks for details + about webhooks. + +""" +import asyncio +import logging +from ipaddress import ip_network + +import voluptuous as vol + +from homeassistant.const import ( + HTTP_BAD_REQUEST, HTTP_UNAUTHORIZED) +import homeassistant.helpers.config_validation as cv +from homeassistant.components.http import HomeAssistantView +from homeassistant.const import CONF_API_KEY +from homeassistant.components.http.util import get_real_ip + +DOMAIN = 'telegram_webhooks' +DEPENDENCIES = ['http'] +REQUIREMENTS = ['python-telegram-bot==5.3.0'] + +_LOGGER = logging.getLogger(__name__) + +EVENT_TELEGRAM_COMMAND = 'telegram.command' + +TELEGRAM_HANDLER_URL = '/api/telegram_webhooks' + +CONF_USER_ID = 'user_id' +CONF_TRUSTED_NETWORKS = 'trusted_networks' +DEFAULT_TRUSTED_NETWORKS = [ + ip_network('149.154.167.197/32'), + ip_network('149.154.167.198/31'), + ip_network('149.154.167.200/29'), + ip_network('149.154.167.208/28'), + ip_network('149.154.167.224/29'), + ip_network('149.154.167.232/31') +] + +ATTR_COMMAND = 'command' +ATTR_USER_ID = 'user_id' +ATTR_ARGS = 'args' + +CONFIG_SCHEMA = vol.Schema({ + DOMAIN: vol.Schema({ + vol.Optional(CONF_API_KEY): cv.string, + vol.Optional(CONF_TRUSTED_NETWORKS, default=DEFAULT_TRUSTED_NETWORKS): + vol.All(cv.ensure_list, [ip_network]), + vol.Required(CONF_USER_ID): {cv.string: cv.positive_int}, + }), +}, extra=vol.ALLOW_EXTRA) + + +def setup(hass, config): + """Setup the telegram_webhooks component. + + register webhook if API_KEY is specified + register /api/telegram_webhooks as web service for telegram bot + """ + import telegram + + conf = config[DOMAIN] + + if CONF_API_KEY in conf: + bot = telegram.Bot(conf[CONF_API_KEY]) + current_status = bot.getWebhookInfo() + _LOGGER.debug("telegram webhook status: %s", current_status) + handler_url = "{0}{1}".format(hass.config.api.base_url, + TELEGRAM_HANDLER_URL) + if current_status and current_status['url'] != handler_url: + if bot.setWebhook(handler_url): + _LOGGER.info("set new telegram webhook %s", handler_url) + else: + _LOGGER.error("set telegram webhook failed %s", handler_url) + + hass.http.register_view(BotPushReceiver(conf[CONF_USER_ID], + conf[CONF_TRUSTED_NETWORKS])) + return True + + +class BotPushReceiver(HomeAssistantView): + """Handle pushes from telegram.""" + + requires_auth = False + url = TELEGRAM_HANDLER_URL + name = "telegram_webhooks" + + def __init__(self, user_id_array, trusted_networks): + """Initialize users allowed to send messages to bot.""" + self.trusted_networks = trusted_networks + self.users = {user_id: dev_id for dev_id, user_id in + user_id_array.items()} + _LOGGER.debug("users allowed: %s", self.users) + + @asyncio.coroutine + def post(self, request): + """Accept the POST from telegram.""" + real_ip = get_real_ip(request) + if not any(real_ip in net for net in self.trusted_networks): + _LOGGER.warning("Access denied from %s", real_ip) + return self.json_message('Access denied', HTTP_UNAUTHORIZED) + + try: + data = yield from request.json() + data = data['message'] + + if data['text'][0] != '/': + _LOGGER.warning('no command') + return self.json({}) + except (ValueError, IndexError): + return self.json_message('Invalid JSON', HTTP_BAD_REQUEST) + + try: + if data['from']['id'] not in self.users: + raise ValueError() + except (ValueError, IndexError): + _LOGGER.warning("User not allowed") + return self.json_message('Invalid user', HTTP_BAD_REQUEST) + + _LOGGER.debug("Received telegram data: %s", data) + + pieces = data['text'].split(' ') + request.app['hass'].bus.async_fire(EVENT_TELEGRAM_COMMAND, { + ATTR_COMMAND: pieces[0], + ATTR_ARGS: " ".join(pieces[1:]), + ATTR_USER_ID: data['from']['id'], + }) + return self.json({}) diff --git a/requirements_all.txt b/requirements_all.txt index e67826fa1f6..7a8c30b0635 100755 --- a/requirements_all.txt +++ b/requirements_all.txt @@ -546,6 +546,7 @@ python-pushover==0.2 # homeassistant.components.sensor.synologydsm python-synology==0.1.0 +# homeassistant.components.telegram_webhooks # homeassistant.components.notify.telegram python-telegram-bot==5.3.0 From 841321f1543769b40a06970c43f99e015b5c88f8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Pierre=20St=C3=A5hl?= Date: Thu, 9 Feb 2017 23:07:46 +0100 Subject: [PATCH 005/196] Reuse default aiohttp session (#5836) --- homeassistant/components/media_player/apple_tv.py | 6 ++++-- requirements_all.txt | 2 +- 2 files changed, 5 insertions(+), 3 deletions(-) diff --git a/homeassistant/components/media_player/apple_tv.py b/homeassistant/components/media_player/apple_tv.py index a4632c5a12d..2f47b1ba0a8 100644 --- a/homeassistant/components/media_player/apple_tv.py +++ b/homeassistant/components/media_player/apple_tv.py @@ -18,11 +18,12 @@ from homeassistant.components.media_player import ( from homeassistant.const import ( STATE_IDLE, STATE_PAUSED, STATE_PLAYING, STATE_STANDBY, CONF_HOST, CONF_NAME, EVENT_HOMEASSISTANT_STOP) +from homeassistant.helpers.aiohttp_client import async_get_clientsession import homeassistant.helpers.config_validation as cv import homeassistant.util.dt as dt_util -REQUIREMENTS = ['pyatv==0.1.2'] +REQUIREMENTS = ['pyatv==0.1.3'] _LOGGER = logging.getLogger(__name__) @@ -62,7 +63,8 @@ def async_setup_platform(hass, config, async_add_entities, hass.data[DATA_APPLE_TV].append(host) details = pyatv.AppleTVDevice(name, host, login_id) - atv = pyatv.connect_to_apple_tv(details, hass.loop) + session = async_get_clientsession(hass) + atv = pyatv.connect_to_apple_tv(details, hass.loop, session=session) entity = AppleTvDevice(atv, name) @asyncio.coroutine diff --git a/requirements_all.txt b/requirements_all.txt index 7a8c30b0635..6596aa76b3c 100755 --- a/requirements_all.txt +++ b/requirements_all.txt @@ -418,7 +418,7 @@ pyasn1-modules==0.0.8 pyasn1==0.2.2 # homeassistant.components.media_player.apple_tv -pyatv==0.1.2 +pyatv==0.1.3 # homeassistant.components.device_tracker.bbox # homeassistant.components.sensor.bbox From 2e8e5a35b534b5cd508c6471642893e2ab600a2b Mon Sep 17 00:00:00 2001 From: Pascal Vizeli Date: Fri, 10 Feb 2017 02:31:20 +0100 Subject: [PATCH 006/196] Update aiohttp 1.3.1 (#5838) --- requirements_all.txt | 2 +- setup.py | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/requirements_all.txt b/requirements_all.txt index 6596aa76b3c..75aaaf92138 100755 --- a/requirements_all.txt +++ b/requirements_all.txt @@ -6,7 +6,7 @@ pip>=7.0.0 jinja2>=2.8 voluptuous==0.9.3 typing>=3,<4 -aiohttp==1.3 +aiohttp==1.3.1 async_timeout==1.1.0 # homeassistant.components.nuimo_controller diff --git a/setup.py b/setup.py index b9d5d3460fb..b6b679315e1 100755 --- a/setup.py +++ b/setup.py @@ -22,7 +22,7 @@ REQUIRES = [ 'jinja2>=2.8', 'voluptuous==0.9.3', 'typing>=3,<4', - 'aiohttp==1.3', + 'aiohttp==1.3.1', 'async_timeout==1.1.0', ] From 4c5e6399e9163c564992e20fec837cacb506533f Mon Sep 17 00:00:00 2001 From: Philipp Schmitt Date: Fri, 10 Feb 2017 02:57:19 +0100 Subject: [PATCH 007/196] Refactoring and JSON decode error handling (#5826) * Refactoring and JSON decode error handling * Catch ValueError instead of simplejson.scanner.JSONDecodeError --- homeassistant/components/zoneminder.py | 43 ++++++++++++-------------- 1 file changed, 20 insertions(+), 23 deletions(-) diff --git a/homeassistant/components/zoneminder.py b/homeassistant/components/zoneminder.py index 4920a5a6ce2..0fbe807fb2a 100644 --- a/homeassistant/components/zoneminder.py +++ b/homeassistant/components/zoneminder.py @@ -5,7 +5,6 @@ For more details about this component, please refer to the documentation at https://home-assistant.io/components/zoneminder/ """ import logging -import json from urllib.parse import urljoin import requests @@ -79,46 +78,44 @@ def login(): ZM['url'] + 'api/host/getVersion.json', cookies=ZM['cookies'], timeout=DEFAULT_TIMEOUT) - if req.status_code != requests.codes.ok: + if not req.ok: _LOGGER.error("Connection error logging into ZoneMinder") return False return True -# pylint: disable=no-member -def get_state(api_url): - """Get a state from the ZoneMinder API service.""" +def _zm_request(method, api_url, data=None): + """Perform a Zoneminder request.""" # Since the API uses sessions that expire, sometimes we need to re-auth # if the call fails. for _ in range(LOGIN_RETRIES): - req = requests.get(urljoin(ZM['url'], api_url), cookies=ZM['cookies'], - timeout=DEFAULT_TIMEOUT) + req = requests.request( + method, urljoin(ZM['url'], api_url), data=data, + cookies=ZM['cookies'], timeout=DEFAULT_TIMEOUT) - if req.status_code != requests.codes.ok: + if not req.ok: login() else: break + else: _LOGGER.exception("Unable to get API response from ZoneMinder") - return json.loads(req.text) + try: + return req.json() + except ValueError: + _LOGGER.exception('JSON decode exception caught while attempting to ' + 'decode "%s"', req.text) + + +# pylint: disable=no-member +def get_state(api_url): + """Get a state from the ZoneMinder API service.""" + return _zm_request('get', api_url) # pylint: disable=no-member def change_state(api_url, post_data): """Update a state using the Zoneminder API.""" - for _ in range(LOGIN_RETRIES): - req = requests.post( - urljoin(ZM['url'], api_url), data=post_data, cookies=ZM['cookies'], - timeout=DEFAULT_TIMEOUT) - - if req.status_code != requests.codes.ok: - login() - else: - break - - else: - _LOGGER.exception("Unable to get API response from ZoneMinder") - - return json.loads(req.text) + return _zm_request('post', api_url, data=post_data) From be08bf0ef70fbdf98e47a13cf3eef62a2cd462cd Mon Sep 17 00:00:00 2001 From: Adam Mills Date: Thu, 9 Feb 2017 21:17:17 -0500 Subject: [PATCH 008/196] [recorder] Add tests for full schema migration (#5831) * [recorder] Add tests for full schema migration * Remove leftover code * Fix duplicate creation of sqlalchemy Index object * It's that kind of day... * Improve models_original docstring --- homeassistant/components/recorder/__init__.py | 7 +- tests/components/recorder/models_original.py | 163 ++++++++++++++++++ tests/components/recorder/test_init.py | 58 ++++++- 3 files changed, 216 insertions(+), 12 deletions(-) create mode 100644 tests/components/recorder/models_original.py diff --git a/homeassistant/components/recorder/__init__.py b/homeassistant/components/recorder/__init__.py index 14b9fe11574..8d3213a4805 100644 --- a/homeassistant/components/recorder/__init__.py +++ b/homeassistant/components/recorder/__init__.py @@ -345,15 +345,16 @@ class Recorder(threading.Thread): def _apply_update(self, new_version): """Perform operations to bring schema up to date.""" - from sqlalchemy import Index, Table + from sqlalchemy import Table import homeassistant.components.recorder.models as models if new_version == 1: def create_index(table_name, column_name): """Create an index for the specified table and column.""" table = Table(table_name, models.Base.metadata) - index_name = "_".join(("ix", table_name, column_name)) - index = Index(index_name, getattr(table.c, column_name)) + name = "_".join(("ix", table_name, column_name)) + # Look up the index object that was created from the models + index = next(idx for idx in table.indexes if idx.name == name) _LOGGER.debug("Creating index for table %s column %s", table_name, column_name) index.create(self.engine) diff --git a/tests/components/recorder/models_original.py b/tests/components/recorder/models_original.py new file mode 100644 index 00000000000..31ec5ee7ed7 --- /dev/null +++ b/tests/components/recorder/models_original.py @@ -0,0 +1,163 @@ +"""Models for SQLAlchemy. + +This file contains the original models definitions before schema tracking was +implemented. It is used to test the schema migration logic. +""" + +import json +from datetime import datetime +import logging + +from sqlalchemy import (Boolean, Column, DateTime, ForeignKey, Index, Integer, + String, Text, distinct) +from sqlalchemy.ext.declarative import declarative_base + +import homeassistant.util.dt as dt_util +from homeassistant.core import Event, EventOrigin, State, split_entity_id +from homeassistant.remote import JSONEncoder + +# SQLAlchemy Schema +# pylint: disable=invalid-name +Base = declarative_base() + +_LOGGER = logging.getLogger(__name__) + + +class Events(Base): # type: ignore + """Event history data.""" + + __tablename__ = 'events' + event_id = Column(Integer, primary_key=True) + event_type = Column(String(32), index=True) + event_data = Column(Text) + origin = Column(String(32)) + time_fired = Column(DateTime(timezone=True)) + created = Column(DateTime(timezone=True), default=datetime.utcnow) + + @staticmethod + def from_event(event): + """Create an event database object from a native event.""" + return Events(event_type=event.event_type, + event_data=json.dumps(event.data, cls=JSONEncoder), + origin=str(event.origin), + time_fired=event.time_fired) + + def to_native(self): + """Convert to a natve HA Event.""" + try: + return Event( + self.event_type, + json.loads(self.event_data), + EventOrigin(self.origin), + _process_timestamp(self.time_fired) + ) + except ValueError: + # When json.loads fails + _LOGGER.exception("Error converting to event: %s", self) + return None + + +class States(Base): # type: ignore + """State change history.""" + + __tablename__ = 'states' + state_id = Column(Integer, primary_key=True) + domain = Column(String(64)) + entity_id = Column(String(255)) + state = Column(String(255)) + attributes = Column(Text) + event_id = Column(Integer, ForeignKey('events.event_id')) + last_changed = Column(DateTime(timezone=True), default=datetime.utcnow) + last_updated = Column(DateTime(timezone=True), default=datetime.utcnow) + created = Column(DateTime(timezone=True), default=datetime.utcnow) + + __table_args__ = (Index('states__state_changes', + 'last_changed', 'last_updated', 'entity_id'), + Index('states__significant_changes', + 'domain', 'last_updated', 'entity_id'), ) + + @staticmethod + def from_event(event): + """Create object from a state_changed event.""" + entity_id = event.data['entity_id'] + state = event.data.get('new_state') + + dbstate = States(entity_id=entity_id) + + # State got deleted + if state is None: + dbstate.state = '' + dbstate.domain = split_entity_id(entity_id)[0] + dbstate.attributes = '{}' + dbstate.last_changed = event.time_fired + dbstate.last_updated = event.time_fired + else: + dbstate.domain = state.domain + dbstate.state = state.state + dbstate.attributes = json.dumps(dict(state.attributes), + cls=JSONEncoder) + dbstate.last_changed = state.last_changed + dbstate.last_updated = state.last_updated + + return dbstate + + def to_native(self): + """Convert to an HA state object.""" + try: + return State( + self.entity_id, self.state, + json.loads(self.attributes), + _process_timestamp(self.last_changed), + _process_timestamp(self.last_updated) + ) + except ValueError: + # When json.loads fails + _LOGGER.exception("Error converting row to state: %s", self) + return None + + +class RecorderRuns(Base): # type: ignore + """Representation of recorder run.""" + + __tablename__ = 'recorder_runs' + run_id = Column(Integer, primary_key=True) + start = Column(DateTime(timezone=True), default=datetime.utcnow) + end = Column(DateTime(timezone=True)) + closed_incorrect = Column(Boolean, default=False) + created = Column(DateTime(timezone=True), default=datetime.utcnow) + + def entity_ids(self, point_in_time=None): + """Return the entity ids that existed in this run. + + Specify point_in_time if you want to know which existed at that point + in time inside the run. + """ + from sqlalchemy.orm.session import Session + + session = Session.object_session(self) + + assert session is not None, 'RecorderRuns need to be persisted' + + query = session.query(distinct(States.entity_id)).filter( + States.last_updated >= self.start) + + if point_in_time is not None: + query = query.filter(States.last_updated < point_in_time) + elif self.end is not None: + query = query.filter(States.last_updated < self.end) + + return [row[0] for row in query] + + def to_native(self): + """Return self, native format is this model.""" + return self + + +def _process_timestamp(ts): + """Process a timestamp into datetime object.""" + if ts is None: + return None + elif ts.tzinfo is None: + return dt_util.UTC.localize(ts) + else: + return dt_util.as_utc(ts) diff --git a/tests/components/recorder/test_init.py b/tests/components/recorder/test_init.py index ce395044d11..0bfa3a20997 100644 --- a/tests/components/recorder/test_init.py +++ b/tests/components/recorder/test_init.py @@ -6,15 +6,18 @@ import unittest from unittest.mock import patch, call, MagicMock import pytest +from sqlalchemy import create_engine + from homeassistant.core import callback from homeassistant.const import MATCH_ALL from homeassistant.components import recorder from homeassistant.bootstrap import setup_component from tests.common import get_test_home_assistant +from tests.components.recorder import models_original -class TestRecorder(unittest.TestCase): - """Test the recorder module.""" +class BaseTestRecorder(unittest.TestCase): + """Base class for common recorder tests.""" def setUp(self): # pylint: disable=invalid-name """Setup things to be run when tests are started.""" @@ -87,6 +90,10 @@ class TestRecorder(unittest.TestCase): time_fired=timestamp, )) + +class TestRecorder(BaseTestRecorder): + """Test the recorder module.""" + def test_saving_state(self): """Test saving and restoring a state.""" entity_id = 'test.recorder' @@ -205,15 +212,48 @@ class TestRecorder(unittest.TestCase): with self.assertRaises(ValueError): recorder._INSTANCE._apply_update(-1) + +def create_engine_test(*args, **kwargs): + """Test version of create_engine that initializes with old schema. + + This simulates an existing db with the old schema. + """ + engine = create_engine(*args, **kwargs) + models_original.Base.metadata.create_all(engine) + return engine + + +class TestMigrateRecorder(BaseTestRecorder): + """Test recorder class that starts with an original schema db.""" + + @patch('sqlalchemy.create_engine', new=create_engine_test) + @patch('homeassistant.components.recorder.Recorder._migrate_schema') + def setUp(self, migrate): # pylint: disable=invalid-name + """Setup things to be run when tests are started. + + create_engine is patched to create a db that starts with the old + schema. + + _migrate_schema is mocked to ensure it isn't run, so we can test it + below. + """ + super().setUp() + def test_schema_update_calls(self): # pylint: disable=no-self-use """Test that schema migrations occurr in correct order.""" - test_version = recorder.models.SchemaChanges(schema_version=0) - with recorder.session_scope() as session: - session.add(test_version) - with patch.object(recorder._INSTANCE, '_apply_update') as update: - recorder._INSTANCE._migrate_schema() - update.assert_has_calls([call(version+1) for version in range( - 0, recorder.models.SCHEMA_VERSION)]) + with patch.object(recorder._INSTANCE, '_apply_update') as update: + recorder._INSTANCE._migrate_schema() + update.assert_has_calls([call(version+1) for version in range( + 0, recorder.models.SCHEMA_VERSION)]) + + def test_schema_migrate(self): # pylint: disable=no-self-use + """Test the full schema migration logic. + + We're just testing that the logic can execute successfully here without + throwing exceptions. Maintaining a set of assertions based on schema + inspection could quickly become quite cumbersome. + """ + recorder._INSTANCE._migrate_schema() @pytest.fixture From 5ecef6aaac47413e72512a079c934a7162984f38 Mon Sep 17 00:00:00 2001 From: Boris K Date: Fri, 10 Feb 2017 03:47:12 +0100 Subject: [PATCH 009/196] Add history_stats sensor (#5610) * Add new sensor/history_stats component * Add real unit tests * Code style changes requested for pull request * Remove time aliases & allow datetime values * Reformat unit tests * Remove all async behavior in history_stats * Change duration format --- .../components/sensor/history_stats.py | 278 ++++++++++++++++++ tests/components/sensor/test_history_stats.py | 215 ++++++++++++++ 2 files changed, 493 insertions(+) create mode 100644 homeassistant/components/sensor/history_stats.py create mode 100644 tests/components/sensor/test_history_stats.py diff --git a/homeassistant/components/sensor/history_stats.py b/homeassistant/components/sensor/history_stats.py new file mode 100644 index 00000000000..8d03f4754e0 --- /dev/null +++ b/homeassistant/components/sensor/history_stats.py @@ -0,0 +1,278 @@ +""" +Component to make instant statistics about your history. + +For more details about this platform, please refer to the documentation at +https://home-assistant.io/components/sensor.history_stats/ +""" + +import datetime +import logging +import math + +import voluptuous as vol + +import homeassistant.components.history as history +import homeassistant.helpers.config_validation as cv +import homeassistant.util.dt as dt_util +from homeassistant.components.sensor import PLATFORM_SCHEMA +from homeassistant.const import ( + CONF_NAME, CONF_ENTITY_ID, CONF_STATE, EVENT_HOMEASSISTANT_START) +from homeassistant.exceptions import TemplateError +from homeassistant.helpers.entity import Entity +from homeassistant.helpers.event import track_state_change + +_LOGGER = logging.getLogger(__name__) + +DOMAIN = 'history_stats' +DEPENDENCIES = ['history'] + +CONF_START = 'start' +CONF_END = 'end' +CONF_DURATION = 'duration' +CONF_PERIOD_KEYS = [CONF_START, CONF_END, CONF_DURATION] + +DEFAULT_NAME = 'unnamed statistics' +UNIT = 'h' +UNIT_RATIO = '%' +ICON = 'mdi:chart-line' + +ATTR_START = 'from' +ATTR_END = 'to' +ATTR_VALUE = 'value' +ATTR_RATIO = 'ratio' + + +def exactly_two_period_keys(conf): + """Ensure exactly 2 of CONF_PERIOD_KEYS are provided.""" + provided = 0 + + for param in CONF_PERIOD_KEYS: + if param in conf and conf[param] is not None: + provided += 1 + + if provided != 2: + raise vol.Invalid('You must provide exactly 2 of the following:' + ' start, end, duration') + return conf + + +PLATFORM_SCHEMA = vol.All(PLATFORM_SCHEMA.extend({ + vol.Required(CONF_ENTITY_ID): cv.entity_id, + vol.Required(CONF_STATE): cv.slug, + vol.Optional(CONF_START, default=None): cv.template, + vol.Optional(CONF_END, default=None): cv.template, + vol.Optional(CONF_DURATION, default=None): cv.time_period, + vol.Optional(CONF_NAME, default=DEFAULT_NAME): cv.string, +}), exactly_two_period_keys) + + +# noinspection PyUnusedLocal +def setup_platform(hass, config, add_devices, discovery_info=None): + """Set up the History Stats sensor.""" + entity_id = config.get(CONF_ENTITY_ID) + entity_state = config.get(CONF_STATE) + start = config.get(CONF_START) + end = config.get(CONF_END) + duration = config.get(CONF_DURATION) + name = config.get(CONF_NAME) + + for template in [start, end]: + if template is not None: + template.hass = hass + + add_devices([HistoryStatsSensor( + hass, entity_id, entity_state, start, end, duration, name)]) + + return True + + +class HistoryStatsSensor(Entity): + """Representation of a HistoryStats sensor.""" + + def __init__( + self, hass, entity_id, entity_state, start, end, duration, name): + """Initialize the HistoryStats sensor.""" + self._hass = hass + + self._entity_id = entity_id + self._entity_state = entity_state + self._duration = duration + self._start = start + self._end = end + self._name = name + self._unit_of_measurement = UNIT + + self._period = (datetime.datetime.now(), datetime.datetime.now()) + self.value = 0 + + def force_refresh(*args): + """Force the component to refresh.""" + self.schedule_update_ha_state(True) + + # Update value when home assistant starts + hass.bus.listen_once(EVENT_HOMEASSISTANT_START, force_refresh) + + # Update value when tracked entity changes its state + track_state_change(hass, entity_id, force_refresh) + + @property + def name(self): + """Return the name of the sensor.""" + return self._name + + @property + def state(self): + """Return the state of the sensor.""" + return round(self.value, 2) + + @property + def unit_of_measurement(self): + """Return the unit the value is expressed in.""" + return self._unit_of_measurement + + @property + def should_poll(self): + """Polling required.""" + return True + + @property + def device_state_attributes(self): + """Return the state attributes of the sensor.""" + start, end = self._period + hsh = HistoryStatsHelper + return { + ATTR_VALUE: hsh.pretty_duration(self.value), + ATTR_RATIO: hsh.pretty_ratio(self.value, self._period), + ATTR_START: start.strftime('%Y-%m-%d %H:%M:%S'), + ATTR_END: end.strftime('%Y-%m-%d %H:%M:%S'), + } + + @property + def icon(self): + """Return the icon to use in the frontend, if any.""" + return ICON + + def update(self): + """Get the latest data and updates the states.""" + # Parse templates + self.update_period() + start, end = self._period + + # Convert to UTC + start = dt_util.as_utc(start) + end = dt_util.as_utc(end) + + # Get history between start and end + history_list = history.state_changes_during_period( + start, end, str(self._entity_id)) + + if self._entity_id not in history_list.keys(): + return + + # Get the first state + last_state = history.get_state(start, self._entity_id) + last_state = (last_state is not None and + last_state == self._entity_state) + last_time = dt_util.as_timestamp(start) + elapsed = 0 + + # Make calculations + for item in history_list.get(self._entity_id): + current_state = item.state == self._entity_state + current_time = item.last_changed.timestamp() + + if last_state: + elapsed += current_time - last_time + + last_state = current_state + last_time = current_time + + # Save value in hours + self.value = elapsed / 3600 + + def update_period(self): + """Parse the templates and store a datetime tuple in _period.""" + start = None + end = None + + # Parse start + if self._start is not None: + try: + start_rendered = self._start.render() + except TemplateError as ex: + HistoryStatsHelper.handle_template_exception(ex, 'start') + return + start = dt_util.parse_datetime(start_rendered) + if start is None: + try: + start = dt_util.as_local(dt_util.utc_from_timestamp( + math.floor(float(start_rendered)))) + except ValueError: + _LOGGER.error('PARSING ERROR: start must be a datetime' + ' or a timestamp.') + return + + # Parse end + if self._end is not None: + try: + end_rendered = self._end.render() + except TemplateError as ex: + HistoryStatsHelper.handle_template_exception(ex, 'end') + return + end = dt_util.parse_datetime(end_rendered) + if end is None: + try: + end = dt_util.as_local(dt_util.utc_from_timestamp( + math.floor(float(end_rendered)))) + except ValueError: + _LOGGER.error('PARSING ERROR: end must be a datetime' + ' or a timestamp.') + return + + # Calculate start or end using the duration + if start is None: + start = end - self._duration + if end is None: + end = start + self._duration + + self._period = start, end + + +class HistoryStatsHelper: + """Static methods to make the HistoryStatsSensor code lighter.""" + + @staticmethod + def pretty_duration(hours): + """Format a duration in days, hours, minutes, seconds.""" + seconds = int(3600 * hours) + days, seconds = divmod(seconds, 86400) + hours, seconds = divmod(seconds, 3600) + minutes, seconds = divmod(seconds, 60) + if days > 0: + return '%dd %dh %dm %ds' % (days, hours, minutes, seconds) + elif hours > 0: + return '%dh %dm %ds' % (hours, minutes, seconds) + elif minutes > 0: + return '%dm %ds' % (minutes, seconds) + else: + return '%ds' % (seconds,) + + @staticmethod + def pretty_ratio(value, period): + """Format the ratio of value / period duration.""" + if len(period) != 2 or period[0] == period[1]: + return '0,0' + UNIT_RATIO + + ratio = 100 * 3600 * value / (period[1] - period[0]).total_seconds() + return str(round(ratio, 1)) + UNIT_RATIO + + @staticmethod + def handle_template_exception(ex, field): + """Log an error nicely if the template cannot be interpreted.""" + if ex.args and ex.args[0].startswith( + "UndefinedError: 'None' has no attribute"): + # Common during HA startup - so just a warning + _LOGGER.warning(ex) + return + _LOGGER.error('Error parsing template for [' + field + ']') + _LOGGER.error(ex) diff --git a/tests/components/sensor/test_history_stats.py b/tests/components/sensor/test_history_stats.py new file mode 100644 index 00000000000..d7d8b516525 --- /dev/null +++ b/tests/components/sensor/test_history_stats.py @@ -0,0 +1,215 @@ +"""The test for the History Statistics sensor platform.""" +# pylint: disable=protected-access +import unittest +from datetime import timedelta +from unittest.mock import patch + +import homeassistant.components.recorder as recorder +import homeassistant.core as ha +import homeassistant.util.dt as dt_util +from homeassistant.bootstrap import setup_component +from homeassistant.components.sensor.history_stats import HistoryStatsSensor +from homeassistant.helpers.template import Template +from tests.common import get_test_home_assistant + + +class TestHistoryStatsSensor(unittest.TestCase): + """Test the History Statistics sensor.""" + + def setUp(self): + """Set up things to be run when tests are started.""" + self.hass = get_test_home_assistant() + + def tearDown(self): + """Stop everything that was started.""" + self.hass.stop() + + def test_setup(self): + """Test the history statistics sensor setup.""" + self.init_recorder() + config = { + 'history': { + }, + 'sensor': { + 'platform': 'history_stats', + 'entity_id': 'binary_sensor.test_id', + 'state': 'on', + 'start': '{{ now().replace(hour=0)' + '.replace(minute=0).replace(second=0) }}', + 'duration': '02:00', + 'name': 'Test', + } + } + + self.assertTrue(setup_component(self.hass, 'sensor', config)) + + state = self.hass.states.get('sensor.test').as_dict() + self.assertEqual(state['state'], '0') + + def test_period_parsing(self): + """Test the conversion from templates to period.""" + today = Template('{{ now().replace(hour=0).replace(minute=0)' + '.replace(second=0) }}', self.hass) + duration = timedelta(hours=2, minutes=1) + + sensor1 = HistoryStatsSensor( + self.hass, 'test', 'on', today, None, duration, 'test') + sensor2 = HistoryStatsSensor( + self.hass, 'test', 'on', None, today, duration, 'test') + + sensor1.update_period() + sensor2.update_period() + + self.assertEqual( + sensor1.device_state_attributes['from'][-8:], '00:00:00') + self.assertEqual( + sensor1.device_state_attributes['to'][-8:], '02:01:00') + self.assertEqual( + sensor2.device_state_attributes['from'][-8:], '21:59:00') + self.assertEqual( + sensor2.device_state_attributes['to'][-8:], '00:00:00') + + def test_measure(self): + """Test the history statistics sensor measure.""" + later = dt_util.utcnow() - timedelta(seconds=15) + earlier = later - timedelta(minutes=30) + + fake_states = { + 'binary_sensor.test_id': [ + ha.State('binary_sensor.test_id', 'on', last_changed=earlier), + ha.State('binary_sensor.test_id', 'off', last_changed=later), + ] + } + + start = Template('{{ as_timestamp(now()) - 3600 }}', self.hass) + end = Template('{{ now() }}', self.hass) + + sensor1 = HistoryStatsSensor( + self.hass, 'binary_sensor.test_id', 'on', start, end, None, 'Test') + + sensor2 = HistoryStatsSensor( + self.hass, 'unknown.id', 'on', start, end, None, 'Test') + + with patch('homeassistant.components.history.' + 'state_changes_during_period', return_value=fake_states): + with patch('homeassistant.components.history.get_state', + return_value=None): + sensor1.update() + sensor2.update() + + self.assertEqual(sensor1.value, 0.5) + self.assertEqual(sensor2.value, 0) + self.assertEqual(sensor1.device_state_attributes['ratio'], '50.0%') + + def test_wrong_date(self): + """Test when start or end value is not a timestamp or a date.""" + good = Template('{{ now() }}', self.hass) + bad = Template('{{ TEST }}', self.hass) + + sensor1 = HistoryStatsSensor( + self.hass, 'test', 'on', good, bad, None, 'Test') + sensor2 = HistoryStatsSensor( + self.hass, 'test', 'on', bad, good, None, 'Test') + + before_update1 = sensor1._period + before_update2 = sensor2._period + + sensor1.update_period() + sensor2.update_period() + + self.assertEqual(before_update1, sensor1._period) + self.assertEqual(before_update2, sensor2._period) + + def test_wrong_duration(self): + """Test when duration value is not a timedelta.""" + self.init_recorder() + config = { + 'history': { + }, + 'sensor': { + 'platform': 'history_stats', + 'entity_id': 'binary_sensor.test_id', + 'name': 'Test', + 'state': 'on', + 'start': '{{ now() }}', + 'duration': 'TEST', + } + } + + setup_component(self.hass, 'sensor', config) + self.assertEqual(self.hass.states.get('sensor.test'), None) + self.assertRaises(TypeError, + setup_component(self.hass, 'sensor', config)) + + def test_bad_template(self): + """Test Exception when the template cannot be parsed.""" + bad = Template('{{ x - 12 }}', self.hass) # x is undefined + duration = '01:00' + + sensor1 = HistoryStatsSensor( + self.hass, 'test', 'on', bad, None, duration, 'Test') + sensor2 = HistoryStatsSensor( + self.hass, 'test', 'on', None, bad, duration, 'Test') + + before_update1 = sensor1._period + before_update2 = sensor2._period + + sensor1.update_period() + sensor2.update_period() + + self.assertEqual(before_update1, sensor1._period) + self.assertEqual(before_update2, sensor2._period) + + def test_not_enough_arguments(self): + """Test config when not enough arguments provided.""" + self.init_recorder() + config = { + 'history': { + }, + 'sensor': { + 'platform': 'history_stats', + 'entity_id': 'binary_sensor.test_id', + 'name': 'Test', + 'state': 'on', + 'start': '{{ now() }}', + } + } + + setup_component(self.hass, 'sensor', config) + self.assertEqual(self.hass.states.get('sensor.test'), None) + self.assertRaises(TypeError, + setup_component(self.hass, 'sensor', config)) + + def test_too_many_arguments(self): + """Test config when too many arguments provided.""" + self.init_recorder() + config = { + 'history': { + }, + 'sensor': { + 'platform': 'history_stats', + 'entity_id': 'binary_sensor.test_id', + 'name': 'Test', + 'state': 'on', + 'start': '{{ as_timestamp(now()) - 3600 }}', + 'end': '{{ now() }}', + 'duration': '01:00', + } + } + + setup_component(self.hass, 'sensor', config) + self.assertEqual(self.hass.states.get('sensor.test'), None) + self.assertRaises(TypeError, + setup_component(self.hass, 'sensor', config)) + + def init_recorder(self): + """Initialize the recorder.""" + db_uri = 'sqlite://' + with patch('homeassistant.core.Config.path', return_value=db_uri): + setup_component(self.hass, recorder.DOMAIN, { + "recorder": { + "db_url": db_uri}}) + self.hass.start() + recorder._INSTANCE.block_till_db_ready() + self.hass.block_till_done() + recorder._INSTANCE.block_till_done() From 0d76d72b9f0e7b93a2a9292a1888fc74a612f4e5 Mon Sep 17 00:00:00 2001 From: Mark Oude Veldhuis Date: Fri, 10 Feb 2017 03:50:14 +0100 Subject: [PATCH 010/196] Add support for multiple devices to Tado device tracker (#5810) * Add support for multiple devices to Tado device tracker * Hound did not agree with my usage of spaces * Two blank lines were expected * Keep CONF_HOME_ID in the Tado file * Make home_id optional * Work with different API URLs depending on home_id being present * Remove CONF_HOME_ID from HA's const.py file * Missed removing CONF_HOME_ID from the import --- .../components/device_tracker/tado.py | 77 +++++++++++++------ 1 file changed, 53 insertions(+), 24 deletions(-) diff --git a/homeassistant/components/device_tracker/tado.py b/homeassistant/components/device_tracker/tado.py index 9127ef4fad2..ca6e5d5ef7c 100644 --- a/homeassistant/components/device_tracker/tado.py +++ b/homeassistant/components/device_tracker/tado.py @@ -13,28 +13,31 @@ import aiohttp import async_timeout import voluptuous as vol +import homeassistant.helpers.config_validation as cv from homeassistant.const import CONF_USERNAME, CONF_PASSWORD -import homeassistant.helpers.config_validation as cv from homeassistant.util import Throttle from homeassistant.components.device_tracker import ( DOMAIN, PLATFORM_SCHEMA, DeviceScanner) from homeassistant.helpers.aiohttp_client import async_create_clientsession +# Configuration constant specific for tado +CONF_HOME_ID = 'home_id' + _LOGGER = logging.getLogger(__name__) MIN_TIME_BETWEEN_SCANS = timedelta(seconds=30) PLATFORM_SCHEMA = PLATFORM_SCHEMA.extend({ + vol.Required(CONF_USERNAME): cv.string, vol.Required(CONF_PASSWORD): cv.string, - vol.Required(CONF_USERNAME): cv.string + vol.Optional(CONF_HOME_ID): cv.string }) def get_scanner(hass, config): """Return a Tado scanner.""" scanner = TadoDeviceScanner(hass, config[DOMAIN]) - return scanner if scanner.success_init else None @@ -50,8 +53,19 @@ class TadoDeviceScanner(DeviceScanner): self.username = config[CONF_USERNAME] self.password = config[CONF_PASSWORD] - self.tadoapiurl = 'https://my.tado.com/api/v2/me' \ - '?username={}&password={}' + + # The Tado device tracker can work with or without a home_id + self.home_id = config[CONF_HOME_ID] if CONF_HOME_ID in config else None + + # If there's a home_id, we need a different API URL + if self.home_id is None: + self.tadoapiurl = 'https://my.tado.com/api/v2/me' + else: + self.tadoapiurl = 'https://my.tado.com/api/v2' \ + '/homes/{home_id}/mobileDevices' + + # The API URL always needs a username and password + self.tadoapiurl += '?username={username}&password={password}' self.websession = async_create_clientsession( hass, cookie_jar=aiohttp.CookieJar(unsafe=True, loop=hass.loop)) @@ -62,7 +76,11 @@ class TadoDeviceScanner(DeviceScanner): @asyncio.coroutine def async_scan_devices(self): """Scan for devices and return a list containing found device ids.""" - yield from self._update_info() + info = self._update_info() + + # Don't yield if we got None + if info is not None: + yield from info return [device.mac for device in self.last_results] @@ -87,43 +105,54 @@ class TadoDeviceScanner(DeviceScanner): _LOGGER.debug("Requesting Tado") last_results = [] - response = None - tadojson = None + tado_json = None + try: - # get first token with async_timeout.timeout(10, loop=self.hass.loop): - url = self.tadoapiurl.format(self.username, self.password) - response = yield from self.websession.get( - url - ) + # Format the URL here, so we can log the template URL if + # anything goes wrong without exposing username and password. + url = self.tadoapiurl.format(home_id=self.home_id, + username=self.username, + password=self.password) + + # Go get 'em! + response = yield from self.websession.get(url) # error on Tado webservice if response.status != 200: _LOGGER.warning( "Error %d on %s.", response.status, self.tadoapiurl) - self.token = None return - tadojson = yield from response.json() + tado_json = yield from response.json() except (asyncio.TimeoutError, aiohttp.errors.ClientError): - _LOGGER.error("Can not load Tado data") + _LOGGER.error("Cannot load Tado data") return False finally: if response is not None: yield from response.release() - # Find devices that have geofencing enabled, and are currently at home - for mobiledevice in tadojson['mobileDevices']: - if 'location' in mobiledevice: - if mobiledevice['location']['atHome']: - deviceid = mobiledevice['id'] - devicename = mobiledevice['name'] - last_results.append(Device(deviceid, devicename)) + # Without a home_id, we fetched an URL where the mobile devices can be + # found under the mobileDevices key. + if 'mobileDevices' in tado_json: + tado_json = tado_json['mobileDevices'] + + # Find devices that have geofencing enabled, and are currently at home. + for mobile_device in tado_json: + if 'location' in mobile_device: + if mobile_device['location']['atHome']: + device_id = mobile_device['id'] + device_name = mobile_device['name'] + last_results.append(Device(device_id, device_name)) self.last_results = last_results - _LOGGER.info("Tado presence query successful") + _LOGGER.info( + "Tado presence query successful, %d device(s) at home", + len(self.last_results) + ) + return True From 5bd54f69ccfdc387ce1aafe1a8fb1204a020b50e Mon Sep 17 00:00:00 2001 From: Andrey Date: Fri, 10 Feb 2017 12:30:44 +0200 Subject: [PATCH 011/196] Fix zwave helper getter not to fail on some None results. (#5845) --- homeassistant/components/zwave/__init__.py | 1 + 1 file changed, 1 insertion(+) diff --git a/homeassistant/components/zwave/__init__.py b/homeassistant/components/zwave/__init__.py index 8fcfd3897a7..867a0f96062 100755 --- a/homeassistant/components/zwave/__init__.py +++ b/homeassistant/components/zwave/__init__.py @@ -646,6 +646,7 @@ class ZWaveDeviceEntity(Entity): method, class_id, index, label, data, member, kwargs) values = self._value.node.get_values(**kwargs).values() _LOGGER.debug('values=%s', values) + results = None if not values: return None for value in values: From a150a69cca9f8d843e30e4fbcb5d245def578014 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Christian=20Br=C3=A6dstrup?= Date: Fri, 10 Feb 2017 12:00:28 +0100 Subject: [PATCH 012/196] D-Link switch version bump of external library (#5843) --- homeassistant/components/switch/dlink.py | 2 +- requirements_all.txt | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/homeassistant/components/switch/dlink.py b/homeassistant/components/switch/dlink.py index 3e1f7db3ddb..11aff81a0d5 100644 --- a/homeassistant/components/switch/dlink.py +++ b/homeassistant/components/switch/dlink.py @@ -15,7 +15,7 @@ import homeassistant.helpers.config_validation as cv from homeassistant.const import TEMP_CELSIUS, STATE_UNKNOWN REQUIREMENTS = ['https://github.com/LinuxChristian/pyW215/archive/' - 'v0.3.7.zip#pyW215==0.3.7'] + 'v0.4.zip#pyW215==0.4'] _LOGGER = logging.getLogger(__name__) diff --git a/requirements_all.txt b/requirements_all.txt index 75aaaf92138..44aa2651f5d 100755 --- a/requirements_all.txt +++ b/requirements_all.txt @@ -198,7 +198,7 @@ hikvision==0.4 # http://github.com/adafruit/Adafruit_Python_DHT/archive/310c59b0293354d07d94375f1365f7b9b9110c7d.zip#Adafruit_DHT==1.3.0 # homeassistant.components.switch.dlink -https://github.com/LinuxChristian/pyW215/archive/v0.3.7.zip#pyW215==0.3.7 +https://github.com/LinuxChristian/pyW215/archive/v0.4.zip#pyW215==0.4 # homeassistant.components.media_player.webostv # homeassistant.components.notify.webostv From 1da6181491104d3bdeaf19af5c92a829dfea2988 Mon Sep 17 00:00:00 2001 From: Teemu R Date: Fri, 10 Feb 2017 14:45:31 +0100 Subject: [PATCH 013/196] bump python-yeelight version (#5850) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Add an optional extended description… --- homeassistant/components/light/yeelight.py | 2 +- requirements_all.txt | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/homeassistant/components/light/yeelight.py b/homeassistant/components/light/yeelight.py index 616bae94a91..5eae4c66bb6 100644 --- a/homeassistant/components/light/yeelight.py +++ b/homeassistant/components/light/yeelight.py @@ -22,7 +22,7 @@ from homeassistant.components.light import ( Light, PLATFORM_SCHEMA) import homeassistant.helpers.config_validation as cv -REQUIREMENTS = ['yeelight==0.2.1'] +REQUIREMENTS = ['yeelight==0.2.2'] _LOGGER = logging.getLogger(__name__) diff --git a/requirements_all.txt b/requirements_all.txt index 44aa2651f5d..c0735dc7f9a 100755 --- a/requirements_all.txt +++ b/requirements_all.txt @@ -712,7 +712,7 @@ yahoo-finance==1.4.0 yahooweather==0.8 # homeassistant.components.light.yeelight -yeelight==0.2.1 +yeelight==0.2.2 # homeassistant.components.light.zengge zengge==0.2 From 8785e5826e31f2d5d8ee70e2b10a5301c5ada5dd Mon Sep 17 00:00:00 2001 From: Pascal Vizeli Date: Fri, 10 Feb 2017 16:39:02 +0100 Subject: [PATCH 014/196] telegram small cleanup/style (#5852) --- homeassistant/components/telegram_webhooks.py | 13 +++++-------- 1 file changed, 5 insertions(+), 8 deletions(-) diff --git a/homeassistant/components/telegram_webhooks.py b/homeassistant/components/telegram_webhooks.py index 541b81a9567..30f7935d40b 100644 --- a/homeassistant/components/telegram_webhooks.py +++ b/homeassistant/components/telegram_webhooks.py @@ -106,19 +106,16 @@ class BotPushReceiver(HomeAssistantView): data = yield from request.json() data = data['message'] + if data['from']['id'] not in self.users: + _LOGGER.warning("User not allowed") + return self.json_message('Invalid user', HTTP_BAD_REQUEST) + if data['text'][0] != '/': _LOGGER.warning('no command') return self.json({}) - except (ValueError, IndexError): + except (KeyError, IndexError): return self.json_message('Invalid JSON', HTTP_BAD_REQUEST) - try: - if data['from']['id'] not in self.users: - raise ValueError() - except (ValueError, IndexError): - _LOGGER.warning("User not allowed") - return self.json_message('Invalid user', HTTP_BAD_REQUEST) - _LOGGER.debug("Received telegram data: %s", data) pieces = data['text'].split(' ') From 4e8d20328a137f30325e8ed668c56498cd20ac91 Mon Sep 17 00:00:00 2001 From: Pascal Vizeli Date: Fri, 10 Feb 2017 17:51:08 +0100 Subject: [PATCH 015/196] Fix check_config script. (#5853) --- homeassistant/scripts/check_config.py | 1 + tests/test_bootstrap.py | 4 ++-- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/homeassistant/scripts/check_config.py b/homeassistant/scripts/check_config.py index b1ecaaa57ba..154754c667a 100644 --- a/homeassistant/scripts/check_config.py +++ b/homeassistant/scripts/check_config.py @@ -33,6 +33,7 @@ MOCKS = { } SILENCE = ( 'homeassistant.bootstrap.clear_secret_cache', + 'homeassistant.bootstrap.async_register_signal_handling', 'homeassistant.core._LOGGER.info', 'homeassistant.loader._LOGGER.info', 'homeassistant.bootstrap._LOGGER.info', diff --git a/tests/test_bootstrap.py b/tests/test_bootstrap.py index b2c644a68b9..10f23346ca3 100644 --- a/tests/test_bootstrap.py +++ b/tests/test_bootstrap.py @@ -58,7 +58,7 @@ class TestBootstrap: autospec=True) @mock.patch('homeassistant.util.location.detect_location_info', autospec=True, return_value=None) - @mock.patch('homeassistant.helpers.signal.async_register_signal_handling') + @mock.patch('homeassistant.bootstrap.async_register_signal_handling') def test_from_config_file(self, mock_upgrade, mock_detect, mock_signal): """Test with configuration file.""" components = set(['browser', 'conversation', 'script']) @@ -290,7 +290,7 @@ class TestBootstrap: assert 'comp' not in self.hass.config.components @mock.patch('homeassistant.bootstrap.enable_logging') - @mock.patch('homeassistant.helpers.signal.async_register_signal_handling') + @mock.patch('homeassistant.bootstrap.async_register_signal_handling') def test_home_assistant_core_config_validation(self, log_mock, sig_mock): """Test if we pass in wrong information for HA conf.""" # Extensive HA conf validation testing is done in test_config.py From 0b5191a24700549d1003a2a1e455022c04c2f747 Mon Sep 17 00:00:00 2001 From: Andrey Date: Fri, 10 Feb 2017 18:54:48 +0200 Subject: [PATCH 016/196] Add support for zwave wakeup setting. (#5849) * Add support for zwave wakeup setting. * rename wakeup --- homeassistant/components/zwave/__init__.py | 41 +++++++++++++++++++- homeassistant/components/zwave/const.py | 1 + homeassistant/components/zwave/services.yaml | 8 ++++ homeassistant/const.py | 1 + 4 files changed, 49 insertions(+), 2 deletions(-) diff --git a/homeassistant/components/zwave/__init__.py b/homeassistant/components/zwave/__init__.py index 867a0f96062..2abc79754ae 100755 --- a/homeassistant/components/zwave/__init__.py +++ b/homeassistant/components/zwave/__init__.py @@ -13,8 +13,9 @@ import voluptuous as vol from homeassistant.helpers import discovery, customize from homeassistant.const import ( - ATTR_BATTERY_LEVEL, ATTR_LOCATION, ATTR_ENTITY_ID, CONF_CUSTOMIZE, - EVENT_HOMEASSISTANT_START, EVENT_HOMEASSISTANT_STOP, CONF_ENTITY_ID) + ATTR_BATTERY_LEVEL, ATTR_LOCATION, ATTR_ENTITY_ID, ATTR_WAKEUP, + CONF_CUSTOMIZE, EVENT_HOMEASSISTANT_START, EVENT_HOMEASSISTANT_STOP, + CONF_ENTITY_ID) from homeassistant.helpers.entity import Entity from homeassistant.helpers.event import track_time_change from homeassistant.util import convert, slugify @@ -152,6 +153,12 @@ CHANGE_ASSOCIATION_SCHEMA = vol.Schema({ vol.Optional(const.ATTR_INSTANCE, default=0x00): vol.Coerce(int) }) +SET_WAKEUP_SCHEMA = vol.Schema({ + vol.Required(const.ATTR_NODE_ID): vol.Coerce(int), + vol.Required(const.ATTR_CONFIG_VALUE): + vol.All(vol.Coerce(int), cv.positive_int), +}) + _ZWAVE_CUSTOMIZE_SCHEMA_ENTRY = vol.Schema({ vol.Required(CONF_ENTITY_ID): cv.match_all, vol.Optional(CONF_POLLING_INTENSITY): cv.positive_int, @@ -242,6 +249,14 @@ def get_config_value(node, value_index): return get_config_value(node, value_index) +def _get_wakeup(node): + """Return wakeup interval of the node or None if node is not wakable.""" + if node.can_wake_up(): + for value_id in node.get_values(class_id=const.COMMAND_CLASS_WAKE_UP): + return node.values[value_id].data + return None + + # pylint: disable=R0914 def setup(hass, config): """Setup Z-Wave. @@ -503,6 +518,19 @@ def setup(hass, config): _LOGGER.info("Config parameter %s on Node %s : %s", param, node_id, get_config_value(node, param)) + def set_wakeup(service): + """Set wake-up interval of a node.""" + node_id = service.data.get(const.ATTR_NODE_ID) + node = NETWORK.nodes[node_id] + value = service.data.get(const.ATTR_CONFIG_VALUE) + if node.can_wake_up(): + for value_id in node.get_values( + class_id=const.COMMAND_CLASS_WAKE_UP): + node.values[value_id].data = value + _LOGGER.info("Node %s wake-up set to %d", node_id, value) + else: + _LOGGER.info("Node %s is not wakeable", node_id) + def change_association(service): """Change an association in the zwave network.""" association_type = service.data.get(const.ATTR_ASSOCIATION) @@ -598,6 +626,11 @@ def setup(hass, config): descriptions[ const.SERVICE_CHANGE_ASSOCIATION], schema=CHANGE_ASSOCIATION_SCHEMA) + hass.services.register(DOMAIN, const.SERVICE_SET_WAKEUP, + set_wakeup, + descriptions[ + const.SERVICE_SET_WAKEUP], + schema=SET_WAKEUP_SCHEMA) # Setup autoheal if autoheal: @@ -727,4 +760,8 @@ class ZWaveDeviceEntity(Entity): if location: attrs[ATTR_LOCATION] = location + wakeup = _get_wakeup(self._value.node) + if wakeup: + attrs[ATTR_WAKEUP] = wakeup + return attrs diff --git a/homeassistant/components/zwave/const.py b/homeassistant/components/zwave/const.py index 2350b4bee75..8e28d924cfa 100644 --- a/homeassistant/components/zwave/const.py +++ b/homeassistant/components/zwave/const.py @@ -25,6 +25,7 @@ SERVICE_SOFT_RESET = "soft_reset" SERVICE_TEST_NETWORK = "test_network" SERVICE_SET_CONFIG_PARAMETER = "set_config_parameter" SERVICE_PRINT_CONFIG_PARAMETER = "print_config_parameter" +SERVICE_SET_WAKEUP = "set_wakeup" SERVICE_STOP_NETWORK = "stop_network" SERVICE_START_NETWORK = "start_network" SERVICE_RENAME_NODE = "rename_node" diff --git a/homeassistant/components/zwave/services.yaml b/homeassistant/components/zwave/services.yaml index 2a44096ce0e..c1105eaec18 100644 --- a/homeassistant/components/zwave/services.yaml +++ b/homeassistant/components/zwave/services.yaml @@ -47,6 +47,14 @@ print_config_parameter: parameter: description: Parameter number to print (integer). +set_wakeup: + description: Sets wake-up interval of a node. + fields: + node_id: + description: Node id of the device to set the wake-up interval for. (integer) + value: + description: Value of the interval to set. (integer) + start_network: description: Start the Z-Wave network. This might take a while, depending on how big your Z-Wave network is. diff --git a/homeassistant/const.py b/homeassistant/const.py index eda303a552e..5df9bfe15f1 100644 --- a/homeassistant/const.py +++ b/homeassistant/const.py @@ -253,6 +253,7 @@ ATTR_DISCOVERED = 'discovered' ATTR_LOCATION = 'location' ATTR_BATTERY_LEVEL = 'battery_level' +ATTR_WAKEUP = 'wake_up_interval' # For devices which support a code attribute ATTR_CODE = 'code' From c7c3b30e0af18b33b38b0c23e5ea2985e42c17a6 Mon Sep 17 00:00:00 2001 From: Erik Eriksson Date: Fri, 10 Feb 2017 17:59:58 +0100 Subject: [PATCH 017/196] Do not call state if device isn't available (#5835) --- homeassistant/helpers/entity.py | 32 +++++++++++++++----------------- 1 file changed, 15 insertions(+), 17 deletions(-) diff --git a/homeassistant/helpers/entity.py b/homeassistant/helpers/entity.py index 854d1bc169d..a80f2f5edae 100644 --- a/homeassistant/helpers/entity.py +++ b/homeassistant/helpers/entity.py @@ -210,26 +210,24 @@ class Entity(object): start = timer() - state = self.state - - if state is None: - state = STATE_UNKNOWN - else: - state = str(state) - - attr = self.state_attributes or {} - - device_attr = self.device_state_attributes - - if device_attr is not None: - attr.update(device_attr) - - self._attr_setter('unit_of_measurement', str, ATTR_UNIT_OF_MEASUREMENT, - attr) - if not self.available: state = STATE_UNAVAILABLE attr = {} + else: + state = self.state + + if state is None: + state = STATE_UNKNOWN + else: + state = str(state) + + attr = self.state_attributes or {} + device_attr = self.device_state_attributes + if device_attr is not None: + attr.update(device_attr) + + self._attr_setter('unit_of_measurement', str, ATTR_UNIT_OF_MEASUREMENT, + attr) self._attr_setter('name', str, ATTR_FRIENDLY_NAME, attr) self._attr_setter('icon', str, ATTR_ICON, attr) From 6ffab533779c5c60c8f67de0416a64ea9c1a5b5d Mon Sep 17 00:00:00 2001 From: Paulus Schoutsen Date: Fri, 10 Feb 2017 09:00:17 -0800 Subject: [PATCH 018/196] Core: cleanup timer (#5825) * Minor core cleanup * Cleanup timer * Lint * timeout with correct loop * Improve timer thanks to pvizeli * Update core.py * More tests --- homeassistant/core.py | 160 +++++++++++++++------------------------- homeassistant/remote.py | 2 +- tests/test_core.py | 97 +++++++++++++++++------- 3 files changed, 130 insertions(+), 129 deletions(-) diff --git a/homeassistant/core.py b/homeassistant/core.py index 85b65ebc477..d7b33a75f6a 100644 --- a/homeassistant/core.py +++ b/homeassistant/core.py @@ -13,6 +13,7 @@ import os import re import sys import threading +from time import monotonic from types import MappingProxyType from typing import Optional, Any, Callable, List # NOQA @@ -43,9 +44,6 @@ except ImportError: DOMAIN = 'homeassistant' -# How often time_changed event should fire -TIMER_INTERVAL = 1 # seconds - # How long we wait for the result of a service call SERVICE_CALL_LIMIT = 10 # seconds @@ -83,6 +81,22 @@ def is_callback(func: Callable[..., Any]) -> bool: return '_hass_callback' in func.__dict__ +@callback +def async_loop_exception_handler(loop, context): + """Handle all exception inside the core loop.""" + kwargs = {} + exception = context.get('exception') + if exception: + # Do not report on shutting down exceptions. + if isinstance(exception, ShuttingDown): + return + + kwargs['exc_info'] = (type(exception), exception, + exception.__traceback__) + + _LOGGER.error("Error doing job: %s", context['message'], **kwargs) + + class CoreState(enum.Enum): """Represent the current state of Home Assistant.""" @@ -108,7 +122,7 @@ class HomeAssistant(object): self.executor = ThreadPoolExecutor(max_workers=EXECUTOR_POOL_SIZE) self.loop.set_default_executor(self.executor) - self.loop.set_exception_handler(self._async_exception_handler) + self.loop.set_exception_handler(async_loop_exception_handler) self._pending_tasks = [] self.bus = EventBus(self) self.services = ServiceRegistry(self) @@ -286,22 +300,6 @@ class HomeAssistant(object): self.exit_code = exit_code self.loop.stop() - # pylint: disable=no-self-use - @callback - def _async_exception_handler(self, loop, context): - """Handle all exception inside the core loop.""" - kwargs = {} - exception = context.get('exception') - if exception: - # Do not report on shutting down exceptions. - if isinstance(exception, ShuttingDown): - return - - kwargs['exc_info'] = (type(exception), exception, - exception.__traceback__) - - _LOGGER.error("Error doing job: %s", context['message'], **kwargs) - class EventOrigin(enum.Enum): """Represent the origin of an event.""" @@ -494,7 +492,6 @@ class EventBus(object): # This will make sure the second time it does nothing. setattr(onetime_listener, 'run', True) self._async_remove_listener(event_type, onetime_listener) - self._hass.async_run_job(listener, event) return self.async_listen(event_type, onetime_listener) @@ -542,7 +539,6 @@ class State(object): self.state = str(state) self.attributes = MappingProxyType(attributes or {}) self.last_updated = last_updated or dt_util.utcnow() - self.last_changed = last_changed or self.last_updated @property @@ -673,7 +669,6 @@ class StateMachine(object): Async friendly. """ state_obj = self.get(entity_id) - return state_obj and state_obj.state == state def is_state_attr(self, entity_id, name, value): @@ -682,7 +677,6 @@ class StateMachine(object): Async friendly. """ state_obj = self.get(entity_id) - return state_obj and state_obj.attributes.get(name, None) == value def remove(self, entity_id): @@ -702,20 +696,16 @@ class StateMachine(object): This method must be run in the event loop. """ entity_id = entity_id.lower() - old_state = self._states.pop(entity_id, None) if old_state is None: return False - event_data = { + self._bus.async_fire(EVENT_STATE_CHANGED, { 'entity_id': entity_id, 'old_state': old_state, 'new_state': None, - } - - self._bus.async_fire(EVENT_STATE_CHANGED, event_data) - + }) return True def set(self, entity_id, new_state, attributes=None, force_update=False): @@ -746,9 +736,7 @@ class StateMachine(object): entity_id = entity_id.lower() new_state = str(new_state) attributes = attributes or {} - old_state = self._states.get(entity_id) - is_existing = old_state is not None same_state = (is_existing and old_state.state == new_state and not force_update) @@ -757,19 +745,14 @@ class StateMachine(object): if same_state and same_attr: return - # If state did not exist or is different, set it last_changed = old_state.last_changed if same_state else None - state = State(entity_id, new_state, attributes, last_changed) self._states[entity_id] = state - - event_data = { + self._bus.async_fire(EVENT_STATE_CHANGED, { 'entity_id': entity_id, 'old_state': old_state, 'new_state': state, - } - - self._bus.async_fire(EVENT_STATE_CHANGED, event_data) + }) class Service(object): @@ -823,9 +806,17 @@ class ServiceRegistry(object): """Initialize a service registry.""" self._services = {} self._hass = hass - self._cur_id = 0 self._async_unsub_call_event = None + def _gen_unique_id(): + cur_id = 1 + while True: + yield '{}-{}'.format(id(self), cur_id) + cur_id += 1 + + gen = _gen_unique_id() + self._generate_unique_id = lambda: next(gen) + @property def services(self): """Dict with per domain a list of available services.""" @@ -1025,11 +1016,6 @@ class ServiceRegistry(object): self._hass.async_add_job(execute_service) - def _generate_unique_id(self): - """Generate a unique service call id.""" - self._cur_id += 1 - return '{}-{}'.format(id(self), self._cur_id) - class Config(object): """Configuration settings for Home Assistant.""" @@ -1092,66 +1078,38 @@ class Config(object): } -def _async_create_timer(hass, interval=TIMER_INTERVAL): +def _async_create_timer(hass): """Create a timer that will start on HOMEASSISTANT_START.""" - stop_event = asyncio.Event(loop=hass.loop) + handle = None + + @callback + def fire_time_event(nxt): + """Fire next time event.""" + nonlocal handle + + hass.bus.async_fire(EVENT_TIME_CHANGED, + {ATTR_NOW: dt_util.utcnow()}) + nxt += 1 + slp_seconds = nxt - monotonic() + + if slp_seconds < 0: + _LOGGER.error('Timer got out of sync. Resetting') + nxt = monotonic() + 1 + slp_seconds = 1 + + handle = hass.loop.call_later(slp_seconds, fire_time_event, nxt) + + @callback + def start_timer(event): + """Create an async timer.""" + _LOGGER.info("Timer:starting") + hass.bus.async_listen_once(EVENT_HOMEASSISTANT_STOP, stop_timer) + fire_time_event(monotonic()) - # Setting the Event inside the loop by marking it as a coroutine @callback def stop_timer(event): """Stop the timer.""" - stop_event.set() - - hass.bus.async_listen_once(EVENT_HOMEASSISTANT_STOP, stop_timer) - - @asyncio.coroutine - def timer(interval, stop_event): - """Create an async timer.""" - _LOGGER.info("Timer:starting") - - last_fired_on_second = -1 - - calc_now = dt_util.utcnow - - while not stop_event.is_set(): - now = calc_now() - - # First check checks if we are not on a second matching the - # timer interval. Second check checks if we did not already fire - # this interval. - if now.second % interval or \ - now.second == last_fired_on_second: - - # Sleep till it is the next time that we have to fire an event. - # Aim for halfway through the second that fits TIMER_INTERVAL. - # If TIMER_INTERVAL is 10 fire at .5, 10.5, 20.5, etc seconds. - # This will yield the best results because time.sleep() is not - # 100% accurate because of non-realtime OS's - slp_seconds = interval - now.second % interval + \ - .5 - now.microsecond/1000000.0 - - yield from asyncio.sleep(slp_seconds, loop=hass.loop) - - now = calc_now() - - last_fired_on_second = now.second - - # Event might have been set while sleeping - if not stop_event.is_set(): - try: - # Schedule the bus event - hass.loop.call_soon( - hass.bus.async_fire, - EVENT_TIME_CHANGED, - {ATTR_NOW: now} - ) - except ShuttingDown: - # HA raises error if firing event after it has shut down - break - - @asyncio.coroutine - def start_timer(event): - """Start our async timer.""" - hass.loop.create_task(timer(interval, stop_event)) + if handle is not None: + handle.cancel() hass.bus.async_listen_once(EVENT_HOMEASSISTANT_START, start_timer) diff --git a/homeassistant/remote.py b/homeassistant/remote.py index 15421ebfc11..65ff61888ea 100644 --- a/homeassistant/remote.py +++ b/homeassistant/remote.py @@ -133,7 +133,7 @@ class HomeAssistant(ha.HomeAssistant): self.loop = loop or asyncio.get_event_loop() self.executor = ThreadPoolExecutor(max_workers=5) self.loop.set_default_executor(self.executor) - self.loop.set_exception_handler(self._async_exception_handler) + self.loop.set_exception_handler(ha.async_loop_exception_handler) self._pending_tasks = [] self._pending_sheduler = None diff --git a/tests/test_core.py b/tests/test_core.py index 98909ff8616..d027814e109 100644 --- a/tests/test_core.py +++ b/tests/test_core.py @@ -2,7 +2,7 @@ # pylint: disable=protected-access import asyncio import unittest -from unittest.mock import patch, MagicMock +from unittest.mock import patch, MagicMock, sentinel from datetime import datetime, timedelta import pytz @@ -14,7 +14,9 @@ from homeassistant.util.async import run_coroutine_threadsafe import homeassistant.util.dt as dt_util from homeassistant.util.unit_system import (METRIC_SYSTEM) from homeassistant.const import ( - __version__, EVENT_STATE_CHANGED, ATTR_FRIENDLY_NAME, CONF_UNIT_SYSTEM) + __version__, EVENT_STATE_CHANGED, ATTR_FRIENDLY_NAME, CONF_UNIT_SYSTEM, + ATTR_NOW, EVENT_TIME_CHANGED, EVENT_HOMEASSISTANT_STOP, + EVENT_HOMEASSISTANT_START) from tests.common import get_test_home_assistant @@ -736,37 +738,78 @@ class TestConfig(unittest.TestCase): self.assertEqual(expected, self.config.as_dict()) -class TestAsyncCreateTimer(object): +@patch('homeassistant.core.monotonic') +def test_create_timer(mock_monotonic, loop): """Test create timer.""" + hass = MagicMock() + funcs = [] + orig_callback = ha.callback - @patch('homeassistant.core.asyncio.Event') - @patch('homeassistant.core.dt_util.utcnow') - def test_create_timer(self, mock_utcnow, mock_event, event_loop): - """Test create timer fires correctly.""" - hass = MagicMock() - now = mock_utcnow() - event = mock_event() - now.second = 1 - mock_utcnow.reset_mock() + def mock_callback(func): + funcs.append(func) + return orig_callback(func) + with patch.object(ha, 'callback', mock_callback): ha._async_create_timer(hass) - assert len(hass.bus.async_listen_once.mock_calls) == 2 - start_timer = hass.bus.async_listen_once.mock_calls[1][1][1] - event_loop.run_until_complete(start_timer(None)) - assert hass.loop.create_task.called + assert len(funcs) == 3 + fire_time_event, start_timer, stop_timer = funcs - timer = hass.loop.create_task.mock_calls[0][1][0] - event.is_set.side_effect = False, False, True - event_loop.run_until_complete(timer) - assert len(mock_utcnow.mock_calls) == 1 + assert len(hass.bus.async_listen_once.mock_calls) == 1 + event_type, callback = hass.bus.async_listen_once.mock_calls[0][1] + assert event_type == EVENT_HOMEASSISTANT_START + assert callback is start_timer - assert hass.loop.call_soon.called - event_type, event_data = hass.loop.call_soon.mock_calls[0][1][1:] + mock_monotonic.side_effect = 10.2, 10.3 - assert ha.EVENT_TIME_CHANGED == event_type - assert {ha.ATTR_NOW: now} == event_data + with patch('homeassistant.core.dt_util.utcnow', + return_value=sentinel.mock_date): + start_timer(None) - stop_timer = hass.bus.async_listen_once.mock_calls[0][1][1] - stop_timer(None) - assert event.set.called + assert len(hass.bus.async_listen_once.mock_calls) == 2 + assert len(hass.bus.async_fire.mock_calls) == 1 + assert len(hass.loop.call_later.mock_calls) == 1 + + event_type, callback = hass.bus.async_listen_once.mock_calls[1][1] + assert event_type == EVENT_HOMEASSISTANT_STOP + assert callback is stop_timer + + slp_seconds, callback, nxt = hass.loop.call_later.mock_calls[0][1] + assert abs(slp_seconds - 0.9) < 0.001 + assert callback is fire_time_event + assert abs(nxt - 11.2) < 0.001 + + event_type, event_data = hass.bus.async_fire.mock_calls[0][1] + assert event_type == EVENT_TIME_CHANGED + assert event_data[ATTR_NOW] is sentinel.mock_date + + +@patch('homeassistant.core.monotonic') +def test_timer_out_of_sync(mock_monotonic, loop): + """Test create timer.""" + hass = MagicMock() + funcs = [] + orig_callback = ha.callback + + def mock_callback(func): + funcs.append(func) + return orig_callback(func) + + with patch.object(ha, 'callback', mock_callback): + ha._async_create_timer(hass) + + assert len(funcs) == 3 + fire_time_event, start_timer, stop_timer = funcs + + mock_monotonic.side_effect = 10.2, 11.3, 11.3 + + with patch('homeassistant.core.dt_util.utcnow', + return_value=sentinel.mock_date): + start_timer(None) + + assert len(hass.loop.call_later.mock_calls) == 1 + + slp_seconds, callback, nxt = hass.loop.call_later.mock_calls[0][1] + assert slp_seconds == 1 + assert callback is fire_time_event + assert abs(nxt - 12.3) < 0.001 From 23ff2eb79cfa663d8fe1971f563d563dae9a7c3c Mon Sep 17 00:00:00 2001 From: Paulus Schoutsen Date: Fri, 10 Feb 2017 09:30:13 -0800 Subject: [PATCH 019/196] Update frontend (#5855) --- homeassistant/components/frontend/version.py | 2 +- .../frontend/www_static/frontend.html | 2 +- .../frontend/www_static/frontend.html.gz | Bin 138154 -> 138153 bytes .../www_static/home-assistant-polymer | 2 +- .../frontend/www_static/service_worker.js | 2 +- .../frontend/www_static/service_worker.js.gz | Bin 2338 -> 2337 bytes 6 files changed, 4 insertions(+), 4 deletions(-) diff --git a/homeassistant/components/frontend/version.py b/homeassistant/components/frontend/version.py index 4f8b6aed2d0..40cda09ae24 100644 --- a/homeassistant/components/frontend/version.py +++ b/homeassistant/components/frontend/version.py @@ -2,7 +2,7 @@ FINGERPRINTS = { "core.js": "adfeb513cf650acf763e284d76a48d6b", - "frontend.html": "ae96f5256a562f35a652f31560a3b550", + "frontend.html": "43340b2369646b779e04a9925c225ab4", "mdi.html": "c1dde43ccf5667f687c418fc8daf9668", "micromarkdown-js.html": "93b5ec4016f0bba585521cf4d18dec1a", "panels/ha-panel-dev-event.html": "5c82300b3cf543a92cf4297506e450e7", diff --git a/homeassistant/components/frontend/www_static/frontend.html b/homeassistant/components/frontend/www_static/frontend.html index 70a7063556b..31f8a0789dd 100644 --- a/homeassistant/components/frontend/www_static/frontend.html +++ b/homeassistant/components/frontend/www_static/frontend.html @@ -600,4 +600,4 @@ this.currentTarget=t,this.defaultPrevented=!1,this.eventPhase=Event.AT_TARGET,th this.hass.callService('media_player', service, serviceData); }, }); -}()); \ No newline at end of file +}()); \ No newline at end of file diff --git a/homeassistant/components/frontend/www_static/frontend.html.gz b/homeassistant/components/frontend/www_static/frontend.html.gz index 2e368d5b7f80e50e9f04a54b610ee75669fe1a4e..2790cc1ddf447ff91abfdf445239ca8e335103ea 100644 GIT binary patch delta 10641 zcmV;CDQ?!Pw+N}X2nQdF2nbR5oq-3n2LXBVe`K9|=-A>Q2E=+ABe#(;$?lp1h-8!M z$tke*I=_O8Z)b&3s#l#D5D~wSu#ICt1b~|YeDPV70oQNtCG7$az&TP(sr7nwSgk+5 z%i^na_KInhb5x34z~A+~yDkdfz5np0cl66o?|bg~PndrPGU zFCMFJzQDU~Ok~?@)Ei4yy)1kdPY8AI09$ZZcl9m)I`h1yuOpmQrRYk9QR_ZBNR-U1dP{tg-iAPDarQYb?nOqv*(xuJ%Q#)>Rptr-nP4HR=?^;Df9M61 z&Nljs7nQ4TjbaOW8^L5gW*=2-4`$;|Jg8QlLhx#zWE4B~D#u_j7`_Ii=6CpmVgN@} ze!Wzse})sZ%&%vc6dMhTPw*GTh7(^fJ*_OqFwA)SR6V--dhrqS$#!JGC*T2;1@f%` zuoDs-$eu*R7^78J4d6*D&pd6*f6nxjeBjd84d4f+-_*TwEI zni^sl}>uH>y)& z>~HYYYQVbH3+o$d_kbr>9`I}5SPiiMDUYn07D6&futmH;e@Jzc@JC(Gc#G4md;3BL z1;%5@pSnWDq|JB;t=2K#K^=g+@1K%ln`b}_&J1K_PNcj{R#*8|LQWYZSr7N0iW%+O zwt8j#OysvMXJBlc<|+IYD+VH)iv}L}ZqmESS946x>0O4K&-FmdZ*73C>|5%_yse4V z_>~kGq5x|mnN{55(7qP=Mh53H5E_|0i~o)kABt}8_z$0% z%~!nd@`?8CUw91`v+;?S>*}`No#@T`vW_eouc>2^l)ui#_u@y7q^B(_Ll0Tr^MY#Y zzm0Y0D@a*yeW~e!ugafmtD1CE)^KHhmNr&mQdiUee=yAz#LKkVO>Za){nH=(6CSQv z_G|l2t+o+)SSThOS^O-r4&pNuG=^jO)&>)@Jy({?d4Nx( z7Nf~we=Bg$&)eBUj=tgK^?U^aD(C2fC;km#)C4{vBjC!Z`JVwqW7{!|1^31vR`oBa zb3m`}*25z{S^qz7x4d&XZ+}|j(zW|I)VHtUB1%w4nOCqa0I8;0+W-SL3h+K zbwe@&JPa?hHC5-;QD}@Beb+e#Y~&eKXcH?if1+Nf0;bGEG{HOx=~a?nmkuvByB2KX z+raFAH*|P>TL(0hGPkf*FkESsq?%@nG{Xd=j&bZJx8_+sPo@|-H!huIib4*Cx=)t*1M6{eHk5*+9lOGbbnN`3)|(dX>E%!)RbpSr|{cFoU68XAJ56 zj3QxhrUOk$D!RwpHl1zisy#M}Iz8Zg}a*y;~-1&5od`=dD9!hom6g6Gy@xNc>*Q;3~c&rRP z{=E+Gfd&l2eH9bL((KrcO;ZI-+rBLm(yhC~xMHRMRsLY2e{L+jkH+)7_ zizjwFHzXUF-FJdddhfbX*k&Df7F$B390mjlmQI z{|%huDfm0wPSW#~)YRS$$<`6abgowSqxp>yr0x5p`JQngo0PN2@o4^xIfnVVV_5(B zUa5=;2X>z|9)eWoAufW{fAFh)1gV#Q!uwTCVu_REPFcbgJDw+VyVQ-53#Q!0UF|_)o^|`T#65-NO~IM~Jg(RgCi2lYe~}bvL)Hd(N@>NL zLO=-?RUaaX=(t7*jf}nGefn^tgHrvi#JZV`Ik+iX@ zb<^BfTivxb*5rG7yJ`)@;4p!fa~CJ&#@gm#&-uHHKO`Q`ES-J91(FQ>;R zFHhbak50oS6MPtje@mo*eai4^b+#dnyrG)_JWfKq9%`*bBtD59HBlo~t5l$8 z%|sPaBepr~Jm_skWG}963QCM_#ojhWY6%!^WIL96T1-XFEBq*wr?f(qpzBm7zMDH~ zG629j!$(Q;169{Qd~bhS;MErA4)%w84_X1S^Ti|vd)uy~$q~d<22YWtxG;nE655`1mGA5W$Uv+bEt1o?!eocT@Fk>Bk3Aa#)q2 zM~*CLxtiL?e~8Un9kYZhJnodEox*BnouR%d2g#Q&J9^H?LU3_f==z%o+f$)y zr-V2;uED+qin`#op<;|2DZG%xtvHELAPCh3ys1&r#>u=d6uB-?MhnB5DrpQM*Z`A ze|BATx*Oki3-PvFJp66f*489I&+XoLxxzp9b+<7uff>9iF5@0FUEN6?u2S6AJ~jds zg$Hlrq6}V|ajr~VJlk5=WCehhQx03M+_%48l_rq<&EoGB*V#XJ#Ww4M#f9ko3RC*7 zQVgp08npuf09lG3&cpG87x+c7j5DEBf0p6d@$W7!8ht~1nN@q7_-+pqCAekGZDVT3yV!W1l%SQrnZmPmWDvMN_)$S7^oJo&H~=v~KplkKnh@F4l>O25 zib)SzxeDA3E2>)rDQ06cw2l;Firi*pTkFJYj;^vzFeOapB6I8vp1l0wr>B-#%fX9S z9XL=^rjofV%VjZo{P;2lu7Gi9e+o2+>8JVQ3!Z+D-hz|)V*&{Z9=q9PI2KHBlojRb znvhd)KAErBXA%Q#4h%){u+`%t`6Vy?!K5uhU2)}UhPA(Zc@QS7#oU-Ugx(y#xzQlZ zo;+&Z01LGEePQx63CT`1Y>o;}H?eWKMeLt#WBim(j2}C&k48WlrNv)he@|k{kevYr z{3)D(Kj^$`1or6|zxt~61jLQ5Z>e?+jLAQPQkk$v>EwPLWs}o0<*{+t!5i)BO+35o zI41AWYD{8NA2omMZqYwSA;-gduCuh9=I7HZpuy`^LU)bSrck(FuO>S?6mZI*TTjbq zb-02HO^_a@r>ip#a#eOmfB0hpvcM>lMcp;J!<)iJ+U;M(OAmziI1a1<9@o%Qc?JlK z?$O|R1b22|ZS-db%ff}HXS(zhDzn7;EO{!i2zUExuot%Ag=H-B)m;xq+OR#Wcg3PG z(jAkrFA`WK+75p(pBPnW9(us7eIp%El!f=%0%PtN(RUajo`g53e+sN=V@E|}kYrRe z4S5t8z+!MTV~Uldb4SXby0uk6U05Yn;yGi?YNM`1nSbE)T#J(;Sq=t8!%H2f?&*p^ z3cxez#7ny4WKks8FkB^Md&+Vg`6hLl*2cQg2dV?j)>MKwi6gmCogIq3VCS!qfi$ot z2j~!DX{G6~nq@Cif1~L+raY(BBs)#daAK=Rk8m3OEWhb=dn*yVVE!TzkOwP{1A?t$ zI8B+99|Hxa`8*t>`&PU=2@e^kQ!UztyD3L^vvdO>&Awcwo$ya@PQoazrs^^7OdVP% zN6C#~qb~=krMqLZ^j@A4dOl3b7z2-xVc(MUVCiXc_T@_lfB#bpYh~t-!`)W>pkmWVbBYn!NA?I zn%a4Ko6NN}^;pK{9Fqa|V7#iDk;7uRtma6{W{`*N>k+)m+7QVHD&C#?XLf6a5faXfL123zUkGQatmDMdYq zVArbzdb?Uu$I|7+JtZB8n7#C5!oaC!@WxkVc<5@>uoiYqc5wJrz=oJji{65nX!Wb$ ztsGv@3#i1iy(t2-iULS)YNn$-FKs4ASYSTZVL+8rg znlNBIf2XlFl>Xf~BpVyQ>I1>KzZ&~4M1 zC#dk9zgFx(#Fw>)7lwD$J-2DZpWPsqz;qeuCpN7d0^zkm1g=$GT^Uyn|Hp8oQF`t#B8$@>rgrk4v6?nwJ2oAriWbBB1dW*s&SS=}7IsEDH-X#pgsDPP#w_6M=k zQ`}iOkRQ$2R7A$dbB7vk3Ox*Sp20OEzq*3k+?Ll}9T(V2mCa$+#Z^<>L*=5DKny`D7k{Z*Ax$Mi*>~B}`0e5?~^D?{d zG-cHT4Ytc0qzGzGk5>1 z?%THi%Z>@q%Pb&r4e}YKn49;5KWB7lEc4*}dV%r&pojmshD&?jep-6?&8}{zZ@S=p z?bSdauhOf%$PL~E9KpA#j>K%ei8vf<+|3a#;CVdTmaCqe5US$LY9!90ILyc}k`6SMquaMmvsZyXg(U&l5H zNy;fACZ>`xznfWvM7O+Esds$?{fI@Y?5K_hZ`5bUzUWptf<~!f9Gk)zjdwr5|BlRh zWRRdJ@esS09W{2VM?Z9Lf2N~UUK6d0?N+Z+G9yVgfjdu@z|yRRhF2t7Aq6~)ll4ER z$;~8TS*9ChYt>C+KE2z`lEd(ExLfYxzd^vmzt=om_;Y@h1TW>2Xz0A-T(1^Ayiz~# z^=9pV=}6HaF+J}TQrDi!Os~J<^a1L^DtPorRrm|e-}sKdIo?v?e~5gT56dY8EV_k< zLKLIdG!ig7vV`4$vPj5Ci+o00q>nfAEWS!ays-2lgFev?_;tdzt=#uv<5#2~IS^hW zJKe6+-!JiJBcPO3jvI~%4x zh_;Zftgvi0tq7sNf4^i>aq0<@k=1Yqp@p*tn=V9I{5id#bZMeFq9rcNcy?(&%gg68 zKguQz-^}wy5Sg2bK{gdunEsx+5$x@WN(bbU>b-ILI+(O=SvBg$lD1X}+;nG&A}`p) zOhpmCy3t!8KbF;v-!HB|7Uill?DmW0A}u=rt~j#&DDT7=f1y4;9iHK{Uh{jA;U$bl zIhOp~??3*CZU<8%QHu7|_F5H68$w;JS6s#`j2nv;3MZTorvdtxc)48Mb$UHEfa__q zx9+(5jpHR4-R+3pjDiiB@DpuLXwGTH{3D z#aVojtkBwqSrDA{!uSi>;yj;Sqkh_8Osl-iXE_KT7(Far;1>4R#4pIgpyqJz`~Cp_ z88+AK@?;pxUdcH8#Xyz`ba(+*_>u#tnRWVr#H$o8Ynb?P(P-kb-f&8pXf}_9vEaV> zO8POde{V;h9sxWC8q}3QJX(1i1B)m6paI#V5`y1LhWt@?&M0Gp|nc`T%=K|A-? z(2KBq6B_|=;XyJ736}1H6AcA+@bUubwank*e~HMJdfMLv&*Ag@HtZhshKK6cD4boc zKvD={#cUIiU*8|2jR0G$W9EQJ=6)2kMUoQg~H!z_Lkh7sRZ$Gp*Vz5ds;KH-w ze;?;@3S71yg4~)Fu*F!*jh0BMb!Rbma&#}e$8K=6^ zuiw0VbMj`>T6GzOyrBti3gA>T>#nulCol&X|G90$}2RMr11i5 z4|m9RD;54k3ms@s(a0R=gSrWZ4GdNxZk|0k zWRG-O_brl2^5f5qG90QJAdT(BE$V#)ZKB4#tD=YOq{mk_in}=Ov9i?j;VS=!Q@VyL zB-|151wego!txYgX#@Yq9GwqTvYREwky?N>{JUg;|EzV?rD|fF!MbuIymv0sev45jeIge*%zf<)8V7FZKOheXA~`K>n1tAEhRAHMhp9GM0V^R*J`<%ED*Wjnc-}f? ztCFaU4a4FUKG63lH7gpH+1flIEH%a4g8R{DTnSA(P zz!@>x(83+0+Eq`-WFwnC($|=g+SuI6Qc4I244MJJp;L~MU#0@l27JNQ$btD3l?PSpp;8iVc)&@nrElKj3QTPr3<MH3=5?S|-1)v?RlVrh7r>nL{ov&Bj!w<*1l!-}<=&D;DU zcz<0sOv4P=w<$bsRXVqwel?1^Fa!I$YVxWxyFPpg?rllL<5Owaq~jEy`qc(}Hi^=g zt5tmGnrqNuT_^+EeN`*=e=ySuZ=SwmTc;e}}!{C_WsH5{B+Y$^XS- zQFI`Sh9D6ExF&UsTq{b>57PA14D5aBQWEgd?9r~o=n7{JHs@jo`ksZUK%%sb< zrc@B3G78|~E(|}YpRo8BD(&#cD40|Jm190By2ASicte4aKSZ|5fqF#h6*nn+7o~+f z7~aK8%7AWeA zV#*;(e<%r_vh?i}9Uf*(byKhOBv;;<=a!rw2UROL^VT;E=|8>M%O51_Oxs|*!s=9tp zW=Do2jft#HR;sVf%JTNJjuyfo1Lnpo6wSi5n+nYhR4Nc2zWk^_h{&|C}UA>TYGJ;!+Hpk|VyS3eZ~ ze-~F_3xlHP=j13$%Xh_vVFzh&Z!>aQW(5b$bYNMN_PwD&&B++9S0+t++gaFaI_agU zKwOk9ZEUEn&v%6%F6>7J+iSyB=bDBo)N!v`CHmcyJ^ZITu4^Hxoe%M!uIUoPzAdS+ zbQ$eE$KR$VHy}stkNGV=lVG8Gf)J&be=#igXb|i{-F;Ly2dj&Zac2d^uv z@atl<@Ia%^d5r?le)1I5#C>@i>B zP3JRRI)YRCJsfJVkCgF}b_j^g52xBf>h8 z(GKe?@{;0Nd(F@6z7!Ep5|G6Ce<{BpDp|Q^3lJDteP4Qb6Ji#C1`Jx{yoqBhY$(dK0g*PWbPl*1rd75zLe2 zDw(0)BMPpIB=~ps8G~;b3?9!zah`E8k20Ob8G=tIV3fnyZTfe~?6nj|UA} zmRR;k6c?Gq^l~`7dzoboQow4=996SyF+IDY~nI6n_KRuX$z zfUr7NVn1p%k}gFtHiDgo-9r!h{%~@c1cI3Fg76Q!Ku8-}{5U&XL}3k{{4_t=HSe-l{%!!V$Zn{bZjV%@RE zGUQ+BR>NChQd91D`b|k6_aD-Mfi!oNbfshI_x6AI0rh)!Biz->U!!Kg8X2*scE{`< z10Ww?-}Pzb46ehPaG*^3&IH zV|1x^ahg>lN_jMG_#A0_RY|7+8MQN1RpiTp$|oyd8dMEaeIje2TH#pQIjXLVDXH#E zqf1qj-xYN3csBm@%YIxbP{MCKZt~(|!tY;EPAIAMcLls2l5{ z`);rJlq`}GmWN*1GW&f^^iIK7I~i=)1}$$Gq2R4v;(+VZOr?K^adJ7Rsh3XaHBBGE z?EdPceBwMin*BtrC7zuWVyP1fgbYFbZzy1>8qCEQH2WYDYCL!>RqSx!KQZ@4w@$S_NoElBhSf2LjbN;#T&?ASBc zkzdcH5^;c~Ee_c7GjQ5YNTJ};+2gBu+6#AefAigt?9js~i=6KL%~k!ZOS<3cidRsG z4l`2HAlqd>nE*$jj5UEew;bO-|(%@?=UMbdGs6_GS4fqr`|xmD!1$@EfN7aLxOPB*vIB ze^w-TLeUq^Csg3V!w@s(C383~f^gUP0BdfhgKB7ae(q~2pbL~o{4Vf(fSTMq(th; zYo{#QB5<5_3=WjFg-h;R8>Z@Rf$m^Q*9^wY55_Cn^$!9jRn~?76_E=xR=pBursQAS>B~JAIhmsuJy$=3AUZMSaZk7lDC6T84 delta 10642 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 diff --git a/homeassistant/components/frontend/www_static/home-assistant-polymer b/homeassistant/components/frontend/www_static/home-assistant-polymer index 44ed8271458..f3808ff4d44 160000 --- a/homeassistant/components/frontend/www_static/home-assistant-polymer +++ b/homeassistant/components/frontend/www_static/home-assistant-polymer @@ -1 +1 @@ -Subproject commit 44ed827145879dd12e20183be75a2af9594240a1 +Subproject commit f3808ff4d44733f5810e21131e0daa1425bf5f22 diff --git a/homeassistant/components/frontend/www_static/service_worker.js b/homeassistant/components/frontend/www_static/service_worker.js index 39156226abe..334d21443f1 100644 --- a/homeassistant/components/frontend/www_static/service_worker.js +++ b/homeassistant/components/frontend/www_static/service_worker.js @@ -1 +1 @@ -"use strict";function setOfCachedUrls(e){return e.keys().then(function(e){return e.map(function(e){return e.url})}).then(function(e){return new Set(e)})}function notificationEventCallback(e,t){firePushCallback({action:t.action,data:t.notification.data,tag:t.notification.tag,type:e},t.notification.data.jwt)}function firePushCallback(e,t){delete e.data.jwt,0===Object.keys(e.data).length&&e.data.constructor===Object&&delete e.data,fetch("/api/notify.html5/callback",{method:"POST",headers:new Headers({"Content-Type":"application/json",Authorization:"Bearer "+t}),body:JSON.stringify(e)})}var precacheConfig=[["/","7fd1a89b1d937df60e7a50429eec0d2b"],["/frontend/panels/dev-event-5c82300b3cf543a92cf4297506e450e7.html","1bb68c3df5c14307a2550a0cca39b435"],["/frontend/panels/dev-info-0469024d94d6270a8680df2be44ba916.html","35995794b5a909d517be812ad4f46ea8"],["/frontend/panels/dev-service-9f749635e518a4ca7991975bdefdb10a.html","1bc71eb7620c7b7198fd4b7976d6bc13"],["/frontend/panels/dev-state-7d069ba8fd5379fa8f59858b8c0a7473.html","18694d76e03e1194c734e9819923b70b"],["/frontend/panels/dev-template-2b618508510afa5281c9ecae0c3a3dbd.html","554e7f893ab24c8548813382142207d4"],["/frontend/panels/map-9c8c7924ba8f731560c9f4093835cc26.html","8ae4874622d23d995ddf2a8b0ffa8d80"],["/static/core-adfeb513cf650acf763e284d76a48d6b.js","f5fdf5f1f754e801f9f54ad31a3cc922"],["/static/frontend-ae96f5256a562f35a652f31560a3b550.html","d2a5bfe0753090d2abc2f1a57bab6627"],["/static/mdi-7a0f14bbf3822449f9060b9c53bd7376.html","8d60ec43a3f8a77b21c312783ae5b892"],["static/fonts/roboto/Roboto-Bold.ttf","d329cc8b34667f114a95422aaad1b063"],["static/fonts/roboto/Roboto-Light.ttf","7b5fb88f12bec8143f00e21bc3222124"],["static/fonts/roboto/Roboto-Medium.ttf","fe13e4170719c2fc586501e777bde143"],["static/fonts/roboto/Roboto-Regular.ttf","ac3f799d5bbaf5196fab15ab8de8431c"],["static/icons/favicon-192x192.png","419903b8422586a7e28021bbe9011175"],["static/icons/favicon.ico","04235bda7843ec2fceb1cbe2bc696cf4"],["static/images/card_media_player_bg.png","a34281d1c1835d338a642e90930e61aa"],["static/webcomponents-lite.min.js","32b5a9b7ada86304bec6b43d3f2194f0"]],cacheName="sw-precache-v2--"+(self.registration?self.registration.scope:""),ignoreUrlParametersMatching=[/^utm_/],addDirectoryIndex=function(e,t){var a=new URL(e);return"/"===a.pathname.slice(-1)&&(a.pathname+=t),a.toString()},createCacheKey=function(e,t,a,n){var c=new URL(e);return n&&c.toString().match(n)||(c.search+=(c.search?"&":"")+encodeURIComponent(t)+"="+encodeURIComponent(a)),c.toString()},isPathWhitelisted=function(e,t){if(0===e.length)return!0;var a=new URL(t).pathname;return e.some(function(e){return a.match(e)})},stripIgnoredUrlParameters=function(e,t){var a=new URL(e);return a.search=a.search.slice(1).split("&").map(function(e){return e.split("=")}).filter(function(e){return t.every(function(t){return!t.test(e[0])})}).map(function(e){return e.join("=")}).join("&"),a.toString()},hashParamName="_sw-precache",urlsToCacheKeys=new Map(precacheConfig.map(function(e){var t=e[0],a=e[1],n=new URL(t,self.location),c=createCacheKey(n,hashParamName,a,!1);return[n.toString(),c]}));self.addEventListener("install",function(e){e.waitUntil(caches.open(cacheName).then(function(e){return setOfCachedUrls(e).then(function(t){return Promise.all(Array.from(urlsToCacheKeys.values()).map(function(a){if(!t.has(a))return e.add(new Request(a,{credentials:"same-origin",redirect:"follow"}))}))})}).then(function(){return self.skipWaiting()}))}),self.addEventListener("activate",function(e){var t=new Set(urlsToCacheKeys.values());e.waitUntil(caches.open(cacheName).then(function(e){return e.keys().then(function(a){return Promise.all(a.map(function(a){if(!t.has(a.url))return e.delete(a)}))})}).then(function(){return self.clients.claim()}))}),self.addEventListener("fetch",function(e){if("GET"===e.request.method){var t,a=stripIgnoredUrlParameters(e.request.url,ignoreUrlParametersMatching);t=urlsToCacheKeys.has(a);var n="index.html";!t&&n&&(a=addDirectoryIndex(a,n),t=urlsToCacheKeys.has(a));var c="/";!t&&c&&"navigate"===e.request.mode&&isPathWhitelisted(["^((?!(static|api|local|service_worker.js|manifest.json)).)*$"],e.request.url)&&(a=new URL(c,self.location).toString(),t=urlsToCacheKeys.has(a)),t&&e.respondWith(caches.open(cacheName).then(function(e){return e.match(urlsToCacheKeys.get(a)).then(function(e){if(e)return e;throw Error("The cached response that was expected is missing.")})}).catch(function(t){return console.warn('Couldn\'t serve response for "%s" from cache: %O',e.request.url,t),fetch(e.request)}))}}),self.addEventListener("push",function(e){var t;e.data&&(t=e.data.json(),e.waitUntil(self.registration.showNotification(t.title,t).then(function(e){firePushCallback({type:"received",tag:t.tag,data:t.data},t.data.jwt)})))}),self.addEventListener("notificationclick",function(e){var t;notificationEventCallback("clicked",e),e.notification.close(),e.notification.data&&e.notification.data.url&&(t=e.notification.data.url,t&&e.waitUntil(clients.matchAll({type:"window"}).then(function(e){var a,n;for(a=0;an!PY&O%T%{4hDKe*lujt7YeMXDrZ$F=>x_komT$+Dc?=}ZzaAn}gx9p3|-RSSdG zG=((IM6W7oinp!q1_;zV_OgqrsS)`x@1L*H&haXO-(|6(< zNYkU&zw&|-s+pM&hwD#eU120v($vj%!*IAK&eve%+;zr$S&TdLu7bH)l<`=uZE*bS z1()|KNwU!jnu z_;0s%>ii14fo9;Gm|M>mwYoa}=f`(%1DiS346W#ccEOv$vH@u`2Q}zoHa$CY#*XhO zt|?U^13_Y;!i4B3Nurb`OvNB`;hg*Up>8^})Og7&DBH1uixJqEk7Aio7KVaJ9Y>7k zRO*Q4X&fdH#UZ2}3aEz&kz|r79ZM3iFy%CkLmo=WSuP?LAJd887W zhCEBMP-!Y4iUiL|vQfk0Jde{n5;4!iT*V|6kP*sNgnj|fj;m>*xhN!za-Bwb!eWR? z#v{qoJSXUnP@t6{A-{7-rUXQq&`_o#C3&V*B+@)hR3ao{k7zR7z$itqbHQ;}%+g%r zL!4)ECNdfF6a%o;lO^bMngGU#kUWwpiy+TPo>L~$@R0x+SS(Acii(6}ahSzuzUDE_ zh|Dn;Ae4+VCDcY$97mAqEN5KMNM>=AWrVSel8DkURnfz$u&s=8naMP#k@Y8KBu+w^ z>nO}w#$qYyHar=JC`+RRQ;sr)p;8z`o{3N+04fW64Hlq6j%D4zh${^uCYW9c=8M#6 z!hmKL5FTZSbnvZ3xjNRES(@k+UC2VBbIeAr7~xFHoYFnH8wW-aV^Jt5OY$U2M4ILh zMjUaCC8aSJ(Z*^eDN6y+N5Vpy^ITEE6Nwp56wT`Z8eD_C1kug$bc)>z+1k6sncGLHl#4Rpres<;x)y{Z)anBL78mX|F#@u{W3&mUeR zUrqY41L+CbmIq62<`qg0T4X|SN5mTr-Mi(JsquUsnEGQ!d9HWs%LcIRbz{=M;A&5s z&;6>`C=WFbs^L)XNWzK9l6vLc+_*Amk!j`pWV(HP<_sMR!wFQfR`B`5s~4NVxW+qi zrp`lexaawD&)lMYkG_1FV<<~R8Pq*|3hmlK1=eGU*BkpJoa_TA<(s!tzxYOtlxyKNcyJ)*~|AJgj3yyr9MT#kh!+cYOX_e=~LL5UPt3H9z#B z32@|SuI^r$&8sKaxuC@X^(;L1x>5G1u5WcwZB+HoXxhE}ne%quVbGV!*PS|Xd>oeB zPxU6b+7693sBM3|IxxUOXQtLbpW_cX_p7_e`CXBfbwB7~eoXgM*sb<$!YqD5Ht3&K zJI4F+{MPd(ojk0&ZZ3aqld3{YodV}r97i30*D?q$d0{?RrYPOcgEqkWuH0>-IDRlV zJdWJ^bQ__;`=(wLEd;3Eecm+uDnJ@uxcATuE_k^DJjUFMAn&RG!;CQ43fhJfeRM61 zAK*VLn*rRvM(7lJUGTC!by~E4gyZt8z|k3BbbaX5(REqYmkvVJ{W&=M?0ASkw%?28 z7sRMf54*uX0hujKZrkn3|xB}+yS^h<={7e1SnY+ zmX+|A7mJ@j)g74jaY8GczrXzCbj_~mBO3IFrZtFIJ4bt!d$$K&c#NC8iJ9JyLZ4V& zORc6@C`eQNls0*SXT8c&&h&uDT+1f@F=4$lIYlDtgvjC0sc?#z*#z155lLb=Jm3NM z%=z7QpFMGV>c7FW<&A9;<<0uA^7XQAzC(lLf3x6Kp{*=?O2qQ<{`wc38ulRRcyrry zQ$+# ze?K(?i#FWp&^4a7e`%e8?O?qHr-NVKJ>5qe`Eq?JuwCv7;&??YSMB_P#xdz{7%+Iq zAM3k|)|Q^X+b=X7vnfxiGvT HrxXAH-n*4K literal 2338 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 Date: Fri, 10 Feb 2017 22:22:15 +0200 Subject: [PATCH 020/196] [recorder] Run end model changed in session scope (#5858) --- homeassistant/components/recorder/__init__.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/homeassistant/components/recorder/__init__.py b/homeassistant/components/recorder/__init__.py index 8d3213a4805..66eb06f4d27 100644 --- a/homeassistant/components/recorder/__init__.py +++ b/homeassistant/components/recorder/__init__.py @@ -421,8 +421,8 @@ class Recorder(threading.Thread): def _close_run(self): """Save end time for current run.""" - self._run.end = dt_util.utcnow() with session_scope() as session: + self._run.end = dt_util.utcnow() self._commit(session, self._run) self._run = None From b10d20bcab5035416335e774d89e0b63c01247aa Mon Sep 17 00:00:00 2001 From: Paulus Schoutsen Date: Fri, 10 Feb 2017 12:55:59 -0800 Subject: [PATCH 021/196] Recorder run can be None (#5854) --- homeassistant/components/recorder/__init__.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/homeassistant/components/recorder/__init__.py b/homeassistant/components/recorder/__init__.py index 66eb06f4d27..b227a8ce76a 100644 --- a/homeassistant/components/recorder/__init__.py +++ b/homeassistant/components/recorder/__init__.py @@ -124,7 +124,8 @@ def run_information(point_in_time: Optional[datetime]=None): res = query(recorder_runs).filter( (recorder_runs.start < point_in_time) & (recorder_runs.end > point_in_time)).first() - session.expunge(res) + if res: + session.expunge(res) return res From 67957cbfa87086205cadea44b330cfb2411b5cf1 Mon Sep 17 00:00:00 2001 From: Johan Bloemberg Date: Sat, 11 Feb 2017 00:24:07 +0100 Subject: [PATCH 022/196] Rflink update and small refactor. (#5789) * Use same pattern for device defaults in both platforms. * Update Rflink that passes loop downstream. * Update requirements. --- homeassistant/components/rflink.py | 2 +- requirements_all.txt | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/homeassistant/components/rflink.py b/homeassistant/components/rflink.py index 13696318e01..9a9e6d1145f 100644 --- a/homeassistant/components/rflink.py +++ b/homeassistant/components/rflink.py @@ -36,7 +36,7 @@ import homeassistant.helpers.config_validation as cv from homeassistant.helpers.entity import Entity import voluptuous as vol -REQUIREMENTS = ['rflink==0.0.24'] +REQUIREMENTS = ['rflink==0.0.28'] DOMAIN = 'rflink' diff --git a/requirements_all.txt b/requirements_all.txt index c0735dc7f9a..6cab08068a9 100755 --- a/requirements_all.txt +++ b/requirements_all.txt @@ -587,7 +587,7 @@ qnapstats==0.2.1 radiotherm==1.2 # homeassistant.components.rflink -rflink==0.0.24 +rflink==0.0.28 # homeassistant.components.switch.rpi_rf # rpi-rf==0.9.6 From e877d572f54258c21be2ebdd0aa08ca7d3608f53 Mon Sep 17 00:00:00 2001 From: Adam Mills Date: Fri, 10 Feb 2017 23:46:15 -0500 Subject: [PATCH 023/196] binary_sensor sensor_class to entity device_class (#5860) * binary_sensor sensor_class to entity device_class * Linter fixes * Should be it --- .../components/binary_sensor/__init__.py | 21 ++----- .../components/binary_sensor/arest.py | 20 ++++--- .../components/binary_sensor/bloomsky.py | 4 +- .../components/binary_sensor/command_line.py | 20 ++++--- .../components/binary_sensor/concord232.py | 8 +-- .../components/binary_sensor/demo.py | 6 +- .../components/binary_sensor/digital_ocean.py | 2 +- .../components/binary_sensor/ecobee.py | 8 +-- .../components/binary_sensor/enocean.py | 21 ++++--- .../components/binary_sensor/envisalink.py | 4 +- .../components/binary_sensor/ffmpeg_motion.py | 4 +- .../components/binary_sensor/ffmpeg_noise.py | 4 +- .../components/binary_sensor/flic.py | 7 +-- .../components/binary_sensor/hikvision.py | 8 +-- .../components/binary_sensor/homematic.py | 4 +- homeassistant/components/binary_sensor/iss.py | 6 +- .../components/binary_sensor/mqtt.py | 19 ++++--- .../components/binary_sensor/mysensors.py | 8 +-- .../components/binary_sensor/netatmo.py | 4 +- .../components/binary_sensor/nx584.py | 8 +-- .../components/binary_sensor/octoprint.py | 4 +- .../components/binary_sensor/rest.py | 20 ++++--- .../components/binary_sensor/sleepiq.py | 2 +- .../components/binary_sensor/template.py | 21 ++++--- .../components/binary_sensor/threshold.py | 20 ++++--- .../components/binary_sensor/trend.py | 21 ++++--- .../components/binary_sensor/wink.py | 8 +-- .../components/binary_sensor/zwave.py | 12 ++-- .../components/media_player/__init__.py | 34 +---------- homeassistant/const.py | 4 ++ homeassistant/helpers/deprecation.py | 56 +++++++++++++++++++ homeassistant/helpers/entity.py | 8 ++- .../binary_sensor/test_binary_sensor.py | 10 ---- tests/components/binary_sensor/test_mqtt.py | 12 ++-- .../components/binary_sensor/test_template.py | 10 ++-- tests/helpers/test_entity.py | 13 ++++- 36 files changed, 242 insertions(+), 199 deletions(-) create mode 100644 homeassistant/helpers/deprecation.py diff --git a/homeassistant/components/binary_sensor/__init__.py b/homeassistant/components/binary_sensor/__init__.py index 26a19ce3f59..ab49c13770a 100644 --- a/homeassistant/components/binary_sensor/__init__.py +++ b/homeassistant/components/binary_sensor/__init__.py @@ -14,13 +14,13 @@ from homeassistant.helpers.entity_component import EntityComponent from homeassistant.helpers.entity import Entity from homeassistant.const import (STATE_ON, STATE_OFF) from homeassistant.helpers.config_validation import PLATFORM_SCHEMA # noqa +from homeassistant.helpers.deprecation import deprecated_substitute DOMAIN = 'binary_sensor' SCAN_INTERVAL = timedelta(seconds=30) ENTITY_ID_FORMAT = DOMAIN + '.{}' -SENSOR_CLASSES = [ - None, # Generic on/off +DEVICE_CLASSES = [ 'cold', # On means cold (or too cold) 'connectivity', # On means connection present, Off = no connection 'gas', # CO, CO2, etc. @@ -38,7 +38,7 @@ SENSOR_CLASSES = [ 'vibration', # On means vibration detected, Off means no vibration ] -SENSOR_CLASSES_SCHEMA = vol.All(vol.Lower, vol.In(SENSOR_CLASSES)) +DEVICE_CLASSES_SCHEMA = vol.All(vol.Lower, vol.In(DEVICE_CLASSES)) @asyncio.coroutine @@ -66,16 +66,7 @@ class BinarySensorDevice(Entity): return STATE_ON if self.is_on else STATE_OFF @property - def sensor_class(self): - """Return the class of this sensor, from SENSOR_CLASSES.""" + @deprecated_substitute('sensor_class') + def device_class(self): + """Return the class of this device, from component DEVICE_CLASSES.""" return None - - @property - def state_attributes(self): - """Return device specific state attributes.""" - attr = {} - - if self.sensor_class is not None: - attr['sensor_class'] = self.sensor_class - - return attr diff --git a/homeassistant/components/binary_sensor/arest.py b/homeassistant/components/binary_sensor/arest.py index 834fb490049..efa6043a035 100644 --- a/homeassistant/components/binary_sensor/arest.py +++ b/homeassistant/components/binary_sensor/arest.py @@ -11,11 +11,12 @@ import requests import voluptuous as vol from homeassistant.components.binary_sensor import ( - BinarySensorDevice, PLATFORM_SCHEMA, SENSOR_CLASSES_SCHEMA) + BinarySensorDevice, PLATFORM_SCHEMA, DEVICE_CLASSES_SCHEMA) from homeassistant.const import ( - CONF_RESOURCE, CONF_PIN, CONF_NAME, CONF_SENSOR_CLASS) + CONF_RESOURCE, CONF_PIN, CONF_NAME, CONF_SENSOR_CLASS, CONF_DEVICE_CLASS) from homeassistant.util import Throttle import homeassistant.helpers.config_validation as cv +from homeassistant.helpers.deprecation import get_deprecated _LOGGER = logging.getLogger(__name__) @@ -25,7 +26,8 @@ PLATFORM_SCHEMA = PLATFORM_SCHEMA.extend({ vol.Required(CONF_RESOURCE): cv.url, vol.Optional(CONF_NAME): cv.string, vol.Required(CONF_PIN): cv.string, - vol.Optional(CONF_SENSOR_CLASS): SENSOR_CLASSES_SCHEMA, + vol.Optional(CONF_SENSOR_CLASS): DEVICE_CLASSES_SCHEMA, + vol.Optional(CONF_DEVICE_CLASS): DEVICE_CLASSES_SCHEMA, }) @@ -33,7 +35,7 @@ def setup_platform(hass, config, add_devices, discovery_info=None): """Set up the aREST binary sensor.""" resource = config.get(CONF_RESOURCE) pin = config.get(CONF_PIN) - sensor_class = config.get(CONF_SENSOR_CLASS) + device_class = get_deprecated(config, CONF_DEVICE_CLASS, CONF_SENSOR_CLASS) try: response = requests.get(resource, timeout=10).json() @@ -49,18 +51,18 @@ def setup_platform(hass, config, add_devices, discovery_info=None): add_devices([ArestBinarySensor( arest, resource, config.get(CONF_NAME, response[CONF_NAME]), - sensor_class, pin)]) + device_class, pin)]) class ArestBinarySensor(BinarySensorDevice): """Implement an aREST binary sensor for a pin.""" - def __init__(self, arest, resource, name, sensor_class, pin): + def __init__(self, arest, resource, name, device_class, pin): """Initialize the aREST device.""" self.arest = arest self._resource = resource self._name = name - self._sensor_class = sensor_class + self._device_class = device_class self._pin = pin self.update() @@ -81,9 +83,9 @@ class ArestBinarySensor(BinarySensorDevice): return bool(self.arest.data.get('state')) @property - def sensor_class(self): + def device_class(self): """Return the class of this sensor.""" - return self._sensor_class + return self._device_class def update(self): """Get the latest data from aREST API.""" diff --git a/homeassistant/components/binary_sensor/bloomsky.py b/homeassistant/components/binary_sensor/bloomsky.py index 2419d6f766e..845a58ee918 100644 --- a/homeassistant/components/binary_sensor/bloomsky.py +++ b/homeassistant/components/binary_sensor/bloomsky.py @@ -64,8 +64,8 @@ class BloomSkySensor(BinarySensorDevice): return self._unique_id @property - def sensor_class(self): - """Return the class of this sensor, from SENSOR_CLASSES.""" + def device_class(self): + """Return the class of this sensor, from DEVICE_CLASSES.""" return SENSOR_TYPES.get(self._sensor_name) @property diff --git a/homeassistant/components/binary_sensor/command_line.py b/homeassistant/components/binary_sensor/command_line.py index f051120d680..e08ebbe18f8 100644 --- a/homeassistant/components/binary_sensor/command_line.py +++ b/homeassistant/components/binary_sensor/command_line.py @@ -10,12 +10,13 @@ import logging import voluptuous as vol from homeassistant.components.binary_sensor import ( - BinarySensorDevice, SENSOR_CLASSES_SCHEMA, PLATFORM_SCHEMA) + BinarySensorDevice, DEVICE_CLASSES_SCHEMA, PLATFORM_SCHEMA) from homeassistant.components.sensor.command_line import CommandSensorData from homeassistant.const import ( CONF_PAYLOAD_OFF, CONF_PAYLOAD_ON, CONF_NAME, CONF_VALUE_TEMPLATE, - CONF_SENSOR_CLASS, CONF_COMMAND) + CONF_SENSOR_CLASS, CONF_COMMAND, CONF_DEVICE_CLASS) import homeassistant.helpers.config_validation as cv +from homeassistant.helpers.deprecation import get_deprecated _LOGGER = logging.getLogger(__name__) @@ -30,7 +31,8 @@ PLATFORM_SCHEMA = PLATFORM_SCHEMA.extend({ vol.Optional(CONF_NAME, default=DEFAULT_NAME): cv.string, vol.Optional(CONF_PAYLOAD_OFF, default=DEFAULT_PAYLOAD_OFF): cv.string, vol.Optional(CONF_PAYLOAD_ON, default=DEFAULT_PAYLOAD_ON): cv.string, - vol.Optional(CONF_SENSOR_CLASS): SENSOR_CLASSES_SCHEMA, + vol.Optional(CONF_SENSOR_CLASS): DEVICE_CLASSES_SCHEMA, + vol.Optional(CONF_DEVICE_CLASS): DEVICE_CLASSES_SCHEMA, vol.Optional(CONF_VALUE_TEMPLATE): cv.template, }) @@ -42,27 +44,27 @@ def setup_platform(hass, config, add_devices, discovery_info=None): command = config.get(CONF_COMMAND) payload_off = config.get(CONF_PAYLOAD_OFF) payload_on = config.get(CONF_PAYLOAD_ON) - sensor_class = config.get(CONF_SENSOR_CLASS) + device_class = get_deprecated(config, CONF_DEVICE_CLASS, CONF_SENSOR_CLASS) value_template = config.get(CONF_VALUE_TEMPLATE) if value_template is not None: value_template.hass = hass data = CommandSensorData(command) add_devices([CommandBinarySensor( - hass, data, name, sensor_class, payload_on, payload_off, + hass, data, name, device_class, payload_on, payload_off, value_template)]) class CommandBinarySensor(BinarySensorDevice): """Represent a command line binary sensor.""" - def __init__(self, hass, data, name, sensor_class, payload_on, + def __init__(self, hass, data, name, device_class, payload_on, payload_off, value_template): """Initialize the Command line binary sensor.""" self._hass = hass self.data = data self._name = name - self._sensor_class = sensor_class + self._device_class = device_class self._state = False self._payload_on = payload_on self._payload_off = payload_off @@ -80,9 +82,9 @@ class CommandBinarySensor(BinarySensorDevice): return self._state @ property - def sensor_class(self): + def device_class(self): """Return the class of the binary sensor.""" - return self._sensor_class + return self._device_class def update(self): """Get the latest data and updates the state.""" diff --git a/homeassistant/components/binary_sensor/concord232.py b/homeassistant/components/binary_sensor/concord232.py index 109eed1fdc2..38ec0a74f97 100755 --- a/homeassistant/components/binary_sensor/concord232.py +++ b/homeassistant/components/binary_sensor/concord232.py @@ -11,7 +11,7 @@ import requests import voluptuous as vol from homeassistant.components.binary_sensor import ( - BinarySensorDevice, PLATFORM_SCHEMA, SENSOR_CLASSES) + BinarySensorDevice, PLATFORM_SCHEMA, DEVICE_CLASSES) from homeassistant.const import (CONF_HOST, CONF_PORT) import homeassistant.helpers.config_validation as cv @@ -30,7 +30,7 @@ DEFAULT_SSL = False SCAN_INTERVAL = datetime.timedelta(seconds=1) ZONE_TYPES_SCHEMA = vol.Schema({ - cv.positive_int: vol.In(SENSOR_CLASSES), + cv.positive_int: vol.In(DEVICE_CLASSES), }) PLATFORM_SCHEMA = PLATFORM_SCHEMA.extend({ @@ -102,8 +102,8 @@ class Concord232ZoneSensor(BinarySensorDevice): self.update() @property - def sensor_class(self): - """Return the class of this sensor, from SENSOR_CLASSES.""" + def device_class(self): + """Return the class of this sensor, from DEVICE_CLASSES.""" return self._zone_type @property diff --git a/homeassistant/components/binary_sensor/demo.py b/homeassistant/components/binary_sensor/demo.py index 6f7d59c65fd..9dbae2fdb49 100644 --- a/homeassistant/components/binary_sensor/demo.py +++ b/homeassistant/components/binary_sensor/demo.py @@ -18,14 +18,14 @@ def setup_platform(hass, config, add_devices, discovery_info=None): class DemoBinarySensor(BinarySensorDevice): """A Demo binary sensor.""" - def __init__(self, name, state, sensor_class): + def __init__(self, name, state, device_class): """Initialize the demo sensor.""" self._name = name self._state = state - self._sensor_type = sensor_class + self._sensor_type = device_class @property - def sensor_class(self): + def device_class(self): """Return the class of this sensor.""" return self._sensor_type diff --git a/homeassistant/components/binary_sensor/digital_ocean.py b/homeassistant/components/binary_sensor/digital_ocean.py index 4c5783cc220..31f29597f06 100644 --- a/homeassistant/components/binary_sensor/digital_ocean.py +++ b/homeassistant/components/binary_sensor/digital_ocean.py @@ -63,7 +63,7 @@ class DigitalOceanBinarySensor(BinarySensorDevice): return self.data.status == 'active' @property - def sensor_class(self): + def device_class(self): """Return the class of this sensor.""" return DEFAULT_SENSOR_CLASS diff --git a/homeassistant/components/binary_sensor/ecobee.py b/homeassistant/components/binary_sensor/ecobee.py index 93583ff08b1..b2a5d21386b 100644 --- a/homeassistant/components/binary_sensor/ecobee.py +++ b/homeassistant/components/binary_sensor/ecobee.py @@ -38,7 +38,7 @@ class EcobeeBinarySensor(BinarySensorDevice): self.sensor_name = sensor_name self.index = sensor_index self._state = None - self._sensor_class = 'occupancy' + self._device_class = 'occupancy' self.update() @property @@ -57,9 +57,9 @@ class EcobeeBinarySensor(BinarySensorDevice): return "binary_sensor_ecobee_{}_{}".format(self._name, self.index) @property - def sensor_class(self): - """Return the class of this sensor, from SENSOR_CLASSES.""" - return self._sensor_class + def device_class(self): + """Return the class of this sensor, from DEVICE_CLASSES.""" + return self._device_class def update(self): """Get the latest state of the sensor.""" diff --git a/homeassistant/components/binary_sensor/enocean.py b/homeassistant/components/binary_sensor/enocean.py index bd68a232f22..c89148ebc15 100644 --- a/homeassistant/components/binary_sensor/enocean.py +++ b/homeassistant/components/binary_sensor/enocean.py @@ -9,10 +9,12 @@ import logging import voluptuous as vol from homeassistant.components.binary_sensor import ( - BinarySensorDevice, PLATFORM_SCHEMA, SENSOR_CLASSES_SCHEMA) + BinarySensorDevice, PLATFORM_SCHEMA, DEVICE_CLASSES_SCHEMA) from homeassistant.components import enocean -from homeassistant.const import (CONF_NAME, CONF_ID, CONF_SENSOR_CLASS) +from homeassistant.const import ( + CONF_NAME, CONF_ID, CONF_SENSOR_CLASS, CONF_DEVICE_CLASS) import homeassistant.helpers.config_validation as cv +from homeassistant.helpers.deprecation import get_deprecated _LOGGER = logging.getLogger(__name__) @@ -22,7 +24,8 @@ DEFAULT_NAME = 'EnOcean binary sensor' PLATFORM_SCHEMA = PLATFORM_SCHEMA.extend({ vol.Required(CONF_ID): vol.All(cv.ensure_list, [vol.Coerce(int)]), vol.Optional(CONF_NAME, default=DEFAULT_NAME): cv.string, - vol.Optional(CONF_SENSOR_CLASS, default=None): SENSOR_CLASSES_SCHEMA, + vol.Optional(CONF_SENSOR_CLASS): DEVICE_CLASSES_SCHEMA, + vol.Optional(CONF_DEVICE_CLASS): DEVICE_CLASSES_SCHEMA, }) @@ -30,15 +33,15 @@ def setup_platform(hass, config, add_devices, discovery_info=None): """Setup the Binary Sensor platform fo EnOcean.""" dev_id = config.get(CONF_ID) devname = config.get(CONF_NAME) - sensor_class = config.get(CONF_SENSOR_CLASS) + device_class = get_deprecated(config, CONF_DEVICE_CLASS, CONF_SENSOR_CLASS) - add_devices([EnOceanBinarySensor(dev_id, devname, sensor_class)]) + add_devices([EnOceanBinarySensor(dev_id, devname, device_class)]) class EnOceanBinarySensor(enocean.EnOceanDevice, BinarySensorDevice): """Representation of EnOcean binary sensors such as wall switches.""" - def __init__(self, dev_id, devname, sensor_class): + def __init__(self, dev_id, devname, device_class): """Initialize the EnOcean binary sensor.""" enocean.EnOceanDevice.__init__(self) self.stype = "listener" @@ -46,7 +49,7 @@ class EnOceanBinarySensor(enocean.EnOceanDevice, BinarySensorDevice): self.which = -1 self.onoff = -1 self.devname = devname - self._sensor_class = sensor_class + self._device_class = device_class @property def name(self): @@ -54,9 +57,9 @@ class EnOceanBinarySensor(enocean.EnOceanDevice, BinarySensorDevice): return self.devname @property - def sensor_class(self): + def device_class(self): """Return the class of this sensor.""" - return self._sensor_class + return self._device_class def value_changed(self, value, value2): """Fire an event with the data that have changed. diff --git a/homeassistant/components/binary_sensor/envisalink.py b/homeassistant/components/binary_sensor/envisalink.py index 5bbc15aefcf..3e669333d69 100644 --- a/homeassistant/components/binary_sensor/envisalink.py +++ b/homeassistant/components/binary_sensor/envisalink.py @@ -60,8 +60,8 @@ class EnvisalinkBinarySensor(EnvisalinkDevice, BinarySensorDevice): return self._info['status']['open'] @property - def sensor_class(self): - """Return the class of this sensor, from SENSOR_CLASSES.""" + def device_class(self): + """Return the class of this sensor, from DEVICE_CLASSES.""" return self._zone_type def _update_callback(self, zone): diff --git a/homeassistant/components/binary_sensor/ffmpeg_motion.py b/homeassistant/components/binary_sensor/ffmpeg_motion.py index 70e13722b85..8c822c56361 100644 --- a/homeassistant/components/binary_sensor/ffmpeg_motion.py +++ b/homeassistant/components/binary_sensor/ffmpeg_motion.py @@ -122,6 +122,6 @@ class FFmpegMotion(FFmpegBinarySensor): ) @property - def sensor_class(self): - """Return the class of this sensor, from SENSOR_CLASSES.""" + def device_class(self): + """Return the class of this sensor, from DEVICE_CLASSES.""" return "motion" diff --git a/homeassistant/components/binary_sensor/ffmpeg_noise.py b/homeassistant/components/binary_sensor/ffmpeg_noise.py index b4592fceefd..8db4691d743 100644 --- a/homeassistant/components/binary_sensor/ffmpeg_noise.py +++ b/homeassistant/components/binary_sensor/ffmpeg_noise.py @@ -91,6 +91,6 @@ class FFmpegNoise(FFmpegBinarySensor): ) @property - def sensor_class(self): - """Return the class of this sensor, from SENSOR_CLASSES.""" + def device_class(self): + """Return the class of this sensor, from DEVICE_CLASSES.""" return "sound" diff --git a/homeassistant/components/binary_sensor/flic.py b/homeassistant/components/binary_sensor/flic.py index 94a75fcda4b..eedcfb6060e 100644 --- a/homeassistant/components/binary_sensor/flic.py +++ b/homeassistant/components/binary_sensor/flic.py @@ -179,12 +179,9 @@ class FlicButton(BinarySensorDevice): return False @property - def state_attributes(self): + def device_state_attributes(self): """Return device specific state attributes.""" - attr = super(FlicButton, self).state_attributes - attr["address"] = self.address - - return attr + return {"address": self.address} def _queued_event_check(self, click_type, time_diff): """Generate a log message and returns true if timeout exceeded.""" diff --git a/homeassistant/components/binary_sensor/hikvision.py b/homeassistant/components/binary_sensor/hikvision.py index 1cc98372cee..e14d4149ffe 100644 --- a/homeassistant/components/binary_sensor/hikvision.py +++ b/homeassistant/components/binary_sensor/hikvision.py @@ -29,7 +29,7 @@ DEFAULT_DELAY = 0 ATTR_DELAY = 'delay' -SENSOR_CLASS_MAP = { +DEVICE_CLASS_MAP = { 'Motion': 'motion', 'Line Crossing': 'motion', 'IO Trigger': None, @@ -201,10 +201,10 @@ class HikvisionBinarySensor(BinarySensorDevice): return self._sensor_state() @property - def sensor_class(self): - """Return the class of this sensor, from SENSOR_CLASSES.""" + def device_class(self): + """Return the class of this sensor, from DEVICE_CLASSES.""" try: - return SENSOR_CLASS_MAP[self._sensor] + return DEVICE_CLASS_MAP[self._sensor] except KeyError: # Sensor must be unknown to us, add as generic return None diff --git a/homeassistant/components/binary_sensor/homematic.py b/homeassistant/components/binary_sensor/homematic.py index 82b77eb11d4..5379ccfe5d6 100644 --- a/homeassistant/components/binary_sensor/homematic.py +++ b/homeassistant/components/binary_sensor/homematic.py @@ -54,8 +54,8 @@ class HMBinarySensor(HMDevice, BinarySensorDevice): return bool(self._hm_get_state()) @property - def sensor_class(self): - """Return the class of this sensor, from SENSOR_CLASSES.""" + def device_class(self): + """Return the class of this sensor, from DEVICE_CLASSES.""" if not self.available: return None diff --git a/homeassistant/components/binary_sensor/iss.py b/homeassistant/components/binary_sensor/iss.py index b4182557878..44d2b16fcc9 100644 --- a/homeassistant/components/binary_sensor/iss.py +++ b/homeassistant/components/binary_sensor/iss.py @@ -26,7 +26,7 @@ ATTR_ISS_NUMBER_PEOPLE_SPACE = 'number_of_people_in_space' CONF_SHOW_ON_MAP = 'show_on_map' DEFAULT_NAME = 'ISS' -DEFAULT_SENSOR_CLASS = 'visible' +DEFAULT_DEVICE_CLASS = 'visible' MIN_TIME_BETWEEN_UPDATES = timedelta(seconds=60) @@ -77,9 +77,9 @@ class IssBinarySensor(BinarySensorDevice): return self.iss_data.is_above if self.iss_data else False @property - def sensor_class(self): + def device_class(self): """Return the class of this sensor.""" - return DEFAULT_SENSOR_CLASS + return DEFAULT_DEVICE_CLASS @property def device_state_attributes(self): diff --git a/homeassistant/components/binary_sensor/mqtt.py b/homeassistant/components/binary_sensor/mqtt.py index 8c8beaddb6e..3dbfffa75b6 100644 --- a/homeassistant/components/binary_sensor/mqtt.py +++ b/homeassistant/components/binary_sensor/mqtt.py @@ -11,12 +11,13 @@ import voluptuous as vol from homeassistant.core import callback import homeassistant.components.mqtt as mqtt from homeassistant.components.binary_sensor import ( - BinarySensorDevice, SENSOR_CLASSES) + BinarySensorDevice, DEVICE_CLASSES_SCHEMA) from homeassistant.const import ( CONF_NAME, CONF_VALUE_TEMPLATE, CONF_PAYLOAD_ON, CONF_PAYLOAD_OFF, - CONF_SENSOR_CLASS) + CONF_SENSOR_CLASS, CONF_DEVICE_CLASS) from homeassistant.components.mqtt import (CONF_STATE_TOPIC, CONF_QOS) import homeassistant.helpers.config_validation as cv +from homeassistant.helpers.deprecation import get_deprecated _LOGGER = logging.getLogger(__name__) @@ -29,8 +30,8 @@ PLATFORM_SCHEMA = mqtt.MQTT_RO_PLATFORM_SCHEMA.extend({ vol.Optional(CONF_NAME, default=DEFAULT_NAME): cv.string, vol.Optional(CONF_PAYLOAD_OFF, default=DEFAULT_PAYLOAD_OFF): cv.string, vol.Optional(CONF_PAYLOAD_ON, default=DEFAULT_PAYLOAD_ON): cv.string, - vol.Optional(CONF_SENSOR_CLASS, default=None): - vol.Any(vol.In(SENSOR_CLASSES), vol.SetTo(None)), + vol.Optional(CONF_SENSOR_CLASS): DEVICE_CLASSES_SCHEMA, + vol.Optional(CONF_DEVICE_CLASS): DEVICE_CLASSES_SCHEMA, }) @@ -47,7 +48,7 @@ def setup_platform(hass, config, add_devices, discovery_info=None): hass, config.get(CONF_NAME), config.get(CONF_STATE_TOPIC), - config.get(CONF_SENSOR_CLASS), + get_deprecated(config, CONF_DEVICE_CLASS, CONF_SENSOR_CLASS), config.get(CONF_QOS), config.get(CONF_PAYLOAD_ON), config.get(CONF_PAYLOAD_OFF), @@ -58,14 +59,14 @@ def setup_platform(hass, config, add_devices, discovery_info=None): class MqttBinarySensor(BinarySensorDevice): """Representation a binary sensor that is updated by MQTT.""" - def __init__(self, hass, name, state_topic, sensor_class, qos, payload_on, + def __init__(self, hass, name, state_topic, device_class, qos, payload_on, payload_off, value_template): """Initialize the MQTT binary sensor.""" self._hass = hass self._name = name self._state = False self._state_topic = state_topic - self._sensor_class = sensor_class + self._device_class = device_class self._payload_on = payload_on self._payload_off = payload_off self._qos = qos @@ -101,6 +102,6 @@ class MqttBinarySensor(BinarySensorDevice): return self._state @property - def sensor_class(self): + def device_class(self): """Return the class of this sensor.""" - return self._sensor_class + return self._device_class diff --git a/homeassistant/components/binary_sensor/mysensors.py b/homeassistant/components/binary_sensor/mysensors.py index 6406dabd26f..3a0b09c0074 100644 --- a/homeassistant/components/binary_sensor/mysensors.py +++ b/homeassistant/components/binary_sensor/mysensors.py @@ -7,7 +7,7 @@ https://home-assistant.io/components/binary_sensor.mysensors/ import logging from homeassistant.components import mysensors -from homeassistant.components.binary_sensor import (SENSOR_CLASSES, +from homeassistant.components.binary_sensor import (DEVICE_CLASSES, BinarySensorDevice) from homeassistant.const import STATE_ON @@ -62,8 +62,8 @@ class MySensorsBinarySensor( return False @property - def sensor_class(self): - """Return the class of this sensor, from SENSOR_CLASSES.""" + def device_class(self): + """Return the class of this sensor, from DEVICE_CLASSES.""" pres = self.gateway.const.Presentation class_map = { pres.S_DOOR: 'opening', @@ -78,5 +78,5 @@ class MySensorsBinarySensor( pres.S_VIBRATION: 'vibration', pres.S_MOISTURE: 'moisture', }) - if class_map.get(self.child_type) in SENSOR_CLASSES: + if class_map.get(self.child_type) in DEVICE_CLASSES: return class_map.get(self.child_type) diff --git a/homeassistant/components/binary_sensor/netatmo.py b/homeassistant/components/binary_sensor/netatmo.py index 661d1128086..ee7bc53c4cb 100644 --- a/homeassistant/components/binary_sensor/netatmo.py +++ b/homeassistant/components/binary_sensor/netatmo.py @@ -154,8 +154,8 @@ class NetatmoBinarySensor(BinarySensorDevice): return self._unique_id @property - def sensor_class(self): - """Return the class of this sensor, from SENSOR_CLASSES.""" + def device_class(self): + """Return the class of this sensor, from DEVICE_CLASSES.""" if self._cameratype == "NACamera": return WELCOME_SENSOR_TYPES.get(self._sensor_name) elif self._cameratype == "NOC": diff --git a/homeassistant/components/binary_sensor/nx584.py b/homeassistant/components/binary_sensor/nx584.py index ad7612d11a6..6ffcb7b0cf3 100644 --- a/homeassistant/components/binary_sensor/nx584.py +++ b/homeassistant/components/binary_sensor/nx584.py @@ -12,7 +12,7 @@ import requests import voluptuous as vol from homeassistant.components.binary_sensor import ( - SENSOR_CLASSES, BinarySensorDevice, PLATFORM_SCHEMA) + DEVICE_CLASSES, BinarySensorDevice, PLATFORM_SCHEMA) from homeassistant.const import (CONF_HOST, CONF_PORT) import homeassistant.helpers.config_validation as cv @@ -28,7 +28,7 @@ DEFAULT_PORT = '5007' DEFAULT_SSL = False ZONE_TYPES_SCHEMA = vol.Schema({ - cv.positive_int: vol.In(SENSOR_CLASSES), + cv.positive_int: vol.In(DEVICE_CLASSES), }) PLATFORM_SCHEMA = PLATFORM_SCHEMA.extend({ @@ -85,8 +85,8 @@ class NX584ZoneSensor(BinarySensorDevice): self._zone_type = zone_type @property - def sensor_class(self): - """Return the class of this sensor, from SENSOR_CLASSES.""" + def device_class(self): + """Return the class of this sensor, from DEVICE_CLASSES.""" return self._zone_type @property diff --git a/homeassistant/components/binary_sensor/octoprint.py b/homeassistant/components/binary_sensor/octoprint.py index 4284d2844bd..3fd92d1ceb1 100644 --- a/homeassistant/components/binary_sensor/octoprint.py +++ b/homeassistant/components/binary_sensor/octoprint.py @@ -99,8 +99,8 @@ class OctoPrintBinarySensor(BinarySensorDevice): return STATE_OFF @property - def sensor_class(self): - """Return the class of this sensor, from SENSOR_CLASSES.""" + def device_class(self): + """Return the class of this sensor, from DEVICE_CLASSES.""" return None def update(self): diff --git a/homeassistant/components/binary_sensor/rest.py b/homeassistant/components/binary_sensor/rest.py index 72f506eaefc..2e5de7e2f27 100644 --- a/homeassistant/components/binary_sensor/rest.py +++ b/homeassistant/components/binary_sensor/rest.py @@ -10,14 +10,15 @@ import voluptuous as vol from requests.auth import HTTPBasicAuth, HTTPDigestAuth from homeassistant.components.binary_sensor import ( - BinarySensorDevice, SENSOR_CLASSES_SCHEMA, PLATFORM_SCHEMA) + BinarySensorDevice, DEVICE_CLASSES_SCHEMA, PLATFORM_SCHEMA) from homeassistant.components.sensor.rest import RestData from homeassistant.const import ( CONF_PAYLOAD, CONF_NAME, CONF_VALUE_TEMPLATE, CONF_METHOD, CONF_RESOURCE, CONF_SENSOR_CLASS, CONF_VERIFY_SSL, CONF_USERNAME, CONF_PASSWORD, CONF_HEADERS, CONF_AUTHENTICATION, HTTP_BASIC_AUTHENTICATION, - HTTP_DIGEST_AUTHENTICATION) + HTTP_DIGEST_AUTHENTICATION, CONF_DEVICE_CLASS) import homeassistant.helpers.config_validation as cv +from homeassistant.helpers.deprecation import get_deprecated _LOGGER = logging.getLogger(__name__) @@ -34,7 +35,8 @@ PLATFORM_SCHEMA = PLATFORM_SCHEMA.extend({ vol.Optional(CONF_NAME, default=DEFAULT_NAME): cv.string, vol.Optional(CONF_PASSWORD): cv.string, vol.Optional(CONF_PAYLOAD): cv.string, - vol.Optional(CONF_SENSOR_CLASS): SENSOR_CLASSES_SCHEMA, + vol.Optional(CONF_SENSOR_CLASS): DEVICE_CLASSES_SCHEMA, + vol.Optional(CONF_DEVICE_CLASS): DEVICE_CLASSES_SCHEMA, vol.Optional(CONF_USERNAME): cv.string, vol.Optional(CONF_VALUE_TEMPLATE): cv.template, vol.Optional(CONF_VERIFY_SSL, default=DEFAULT_VERIFY_SSL): cv.boolean, @@ -51,7 +53,7 @@ def setup_platform(hass, config, add_devices, discovery_info=None): username = config.get(CONF_USERNAME) password = config.get(CONF_PASSWORD) headers = config.get(CONF_HEADERS) - sensor_class = config.get(CONF_SENSOR_CLASS) + device_class = get_deprecated(config, CONF_DEVICE_CLASS, CONF_SENSOR_CLASS) value_template = config.get(CONF_VALUE_TEMPLATE) if value_template is not None: value_template.hass = hass @@ -72,18 +74,18 @@ def setup_platform(hass, config, add_devices, discovery_info=None): return False add_devices([RestBinarySensor( - hass, rest, name, sensor_class, value_template)]) + hass, rest, name, device_class, value_template)]) class RestBinarySensor(BinarySensorDevice): """Representation of a REST binary sensor.""" - def __init__(self, hass, rest, name, sensor_class, value_template): + def __init__(self, hass, rest, name, device_class, value_template): """Initialize a REST binary sensor.""" self._hass = hass self.rest = rest self._name = name - self._sensor_class = sensor_class + self._device_class = device_class self._state = False self._previous_data = None self._value_template = value_template @@ -95,9 +97,9 @@ class RestBinarySensor(BinarySensorDevice): return self._name @property - def sensor_class(self): + def device_class(self): """Return the class of this sensor.""" - return self._sensor_class + return self._device_class @property def is_on(self): diff --git a/homeassistant/components/binary_sensor/sleepiq.py b/homeassistant/components/binary_sensor/sleepiq.py index 0409d04f9a5..f55eba82dbe 100644 --- a/homeassistant/components/binary_sensor/sleepiq.py +++ b/homeassistant/components/binary_sensor/sleepiq.py @@ -42,7 +42,7 @@ class IsInBedBinarySensor(sleepiq.SleepIQSensor, BinarySensorDevice): return self._state is True @property - def sensor_class(self): + def device_class(self): """Return the class of this sensor.""" return "occupancy" diff --git a/homeassistant/components/binary_sensor/template.py b/homeassistant/components/binary_sensor/template.py index fa60412c77f..8f11424f54c 100644 --- a/homeassistant/components/binary_sensor/template.py +++ b/homeassistant/components/binary_sensor/template.py @@ -12,14 +12,15 @@ import voluptuous as vol from homeassistant.core import callback from homeassistant.components.binary_sensor import ( BinarySensorDevice, ENTITY_ID_FORMAT, PLATFORM_SCHEMA, - SENSOR_CLASSES_SCHEMA) + DEVICE_CLASSES_SCHEMA) from homeassistant.const import ( ATTR_FRIENDLY_NAME, ATTR_ENTITY_ID, CONF_VALUE_TEMPLATE, - CONF_SENSOR_CLASS, CONF_SENSORS) + CONF_SENSOR_CLASS, CONF_SENSORS, CONF_DEVICE_CLASS) from homeassistant.exceptions import TemplateError from homeassistant.helpers.entity import async_generate_entity_id from homeassistant.helpers.event import async_track_state_change import homeassistant.helpers.config_validation as cv +from homeassistant.helpers.deprecation import get_deprecated _LOGGER = logging.getLogger(__name__) @@ -27,7 +28,8 @@ SENSOR_SCHEMA = vol.Schema({ vol.Required(CONF_VALUE_TEMPLATE): cv.template, vol.Optional(ATTR_FRIENDLY_NAME): cv.string, vol.Optional(ATTR_ENTITY_ID): cv.entity_ids, - vol.Optional(CONF_SENSOR_CLASS, default=None): SENSOR_CLASSES_SCHEMA + vol.Optional(CONF_SENSOR_CLASS): DEVICE_CLASSES_SCHEMA, + vol.Optional(CONF_DEVICE_CLASS): DEVICE_CLASSES_SCHEMA, }) PLATFORM_SCHEMA = PLATFORM_SCHEMA.extend({ @@ -45,7 +47,8 @@ def async_setup_platform(hass, config, async_add_devices, discovery_info=None): entity_ids = (device_config.get(ATTR_ENTITY_ID) or value_template.extract_entities()) friendly_name = device_config.get(ATTR_FRIENDLY_NAME, device) - sensor_class = device_config.get(CONF_SENSOR_CLASS) + device_class = get_deprecated( + device_config, CONF_DEVICE_CLASS, CONF_SENSOR_CLASS) if value_template is not None: value_template.hass = hass @@ -55,7 +58,7 @@ def async_setup_platform(hass, config, async_add_devices, discovery_info=None): hass, device, friendly_name, - sensor_class, + device_class, value_template, entity_ids) ) @@ -70,14 +73,14 @@ def async_setup_platform(hass, config, async_add_devices, discovery_info=None): class BinarySensorTemplate(BinarySensorDevice): """A virtual binary sensor that triggers from another sensor.""" - def __init__(self, hass, device, friendly_name, sensor_class, + def __init__(self, hass, device, friendly_name, device_class, value_template, entity_ids): """Initialize the Template binary sensor.""" self.hass = hass self.entity_id = async_generate_entity_id(ENTITY_ID_FORMAT, device, hass=hass) self._name = friendly_name - self._sensor_class = sensor_class + self._device_class = device_class self._template = value_template self._state = None @@ -100,9 +103,9 @@ class BinarySensorTemplate(BinarySensorDevice): return self._state @property - def sensor_class(self): + def device_class(self): """Return the sensor class of the sensor.""" - return self._sensor_class + return self._device_class @property def should_poll(self): diff --git a/homeassistant/components/binary_sensor/threshold.py b/homeassistant/components/binary_sensor/threshold.py index 78338de64f7..be41fd96556 100644 --- a/homeassistant/components/binary_sensor/threshold.py +++ b/homeassistant/components/binary_sensor/threshold.py @@ -11,11 +11,12 @@ import voluptuous as vol import homeassistant.helpers.config_validation as cv from homeassistant.components.binary_sensor import ( - BinarySensorDevice, PLATFORM_SCHEMA, SENSOR_CLASSES_SCHEMA) + BinarySensorDevice, PLATFORM_SCHEMA, DEVICE_CLASSES_SCHEMA) from homeassistant.const import ( CONF_NAME, CONF_ENTITY_ID, CONF_TYPE, STATE_UNKNOWN, CONF_SENSOR_CLASS, - ATTR_ENTITY_ID) + ATTR_ENTITY_ID, CONF_DEVICE_CLASS) from homeassistant.core import callback +from homeassistant.helpers.deprecation import get_deprecated from homeassistant.helpers.event import async_track_state_change _LOGGER = logging.getLogger(__name__) @@ -37,7 +38,8 @@ PLATFORM_SCHEMA = PLATFORM_SCHEMA.extend({ vol.Required(CONF_THRESHOLD): vol.Coerce(float), vol.Required(CONF_TYPE): vol.In(SENSOR_TYPES), vol.Optional(CONF_NAME, default=DEFAULT_NAME): cv.string, - vol.Optional(CONF_SENSOR_CLASS, default=None): SENSOR_CLASSES_SCHEMA, + vol.Optional(CONF_SENSOR_CLASS): DEVICE_CLASSES_SCHEMA, + vol.Optional(CONF_DEVICE_CLASS): DEVICE_CLASSES_SCHEMA, }) @@ -48,11 +50,11 @@ def async_setup_platform(hass, config, async_add_devices, discovery_info=None): name = config.get(CONF_NAME) threshold = config.get(CONF_THRESHOLD) limit_type = config.get(CONF_TYPE) - sensor_class = config.get(CONF_SENSOR_CLASS) + device_class = get_deprecated(config, CONF_DEVICE_CLASS, CONF_SENSOR_CLASS) yield from async_add_devices( [ThresholdSensor(hass, entity_id, name, threshold, limit_type, - sensor_class)], True) + device_class)], True) return True @@ -60,14 +62,14 @@ class ThresholdSensor(BinarySensorDevice): """Representation of a Threshold sensor.""" def __init__(self, hass, entity_id, name, threshold, limit_type, - sensor_class): + device_class): """Initialize the Threshold sensor.""" self._hass = hass self._entity_id = entity_id self.is_upper = limit_type == 'upper' self._name = name self._threshold = threshold - self._sensor_class = sensor_class + self._device_class = device_class self._deviation = False self.sensor_value = 0 @@ -105,9 +107,9 @@ class ThresholdSensor(BinarySensorDevice): return False @property - def sensor_class(self): + def device_class(self): """Return the sensor class of the sensor.""" - return self._sensor_class + return self._device_class @property def device_state_attributes(self): diff --git a/homeassistant/components/binary_sensor/trend.py b/homeassistant/components/binary_sensor/trend.py index 7c38d4505ae..2c2a0563452 100644 --- a/homeassistant/components/binary_sensor/trend.py +++ b/homeassistant/components/binary_sensor/trend.py @@ -15,12 +15,14 @@ from homeassistant.components.binary_sensor import ( BinarySensorDevice, ENTITY_ID_FORMAT, PLATFORM_SCHEMA, - SENSOR_CLASSES_SCHEMA) + DEVICE_CLASSES_SCHEMA) from homeassistant.const import ( ATTR_FRIENDLY_NAME, ATTR_ENTITY_ID, CONF_SENSOR_CLASS, + CONF_DEVICE_CLASS, STATE_UNKNOWN,) +from homeassistant.helpers.deprecation import get_deprecated from homeassistant.helpers.entity import generate_entity_id from homeassistant.helpers.event import track_state_change @@ -34,8 +36,8 @@ SENSOR_SCHEMA = vol.Schema({ vol.Optional(CONF_ATTRIBUTE): cv.string, vol.Optional(ATTR_FRIENDLY_NAME): cv.string, vol.Optional(CONF_INVERT, default=False): cv.boolean, - vol.Optional(CONF_SENSOR_CLASS, default=None): SENSOR_CLASSES_SCHEMA - + vol.Optional(CONF_SENSOR_CLASS): DEVICE_CLASSES_SCHEMA, + vol.Optional(CONF_DEVICE_CLASS): DEVICE_CLASSES_SCHEMA, }) PLATFORM_SCHEMA = PLATFORM_SCHEMA.extend({ @@ -52,7 +54,8 @@ def setup_platform(hass, config, add_devices, discovery_info=None): entity_id = device_config[ATTR_ENTITY_ID] attribute = device_config.get(CONF_ATTRIBUTE) friendly_name = device_config.get(ATTR_FRIENDLY_NAME, device) - sensor_class = device_config[CONF_SENSOR_CLASS] + device_class = get_deprecated( + device_config, CONF_DEVICE_CLASS, CONF_SENSOR_CLASS) invert = device_config[CONF_INVERT] sensors.append( @@ -62,7 +65,7 @@ def setup_platform(hass, config, add_devices, discovery_info=None): friendly_name, entity_id, attribute, - sensor_class, + device_class, invert) ) if not sensors: @@ -76,7 +79,7 @@ class SensorTrend(BinarySensorDevice): """Representation of a trend Sensor.""" def __init__(self, hass, device_id, friendly_name, - target_entity, attribute, sensor_class, invert): + target_entity, attribute, device_class, invert): """Initialize the sensor.""" self._hass = hass self.entity_id = generate_entity_id(ENTITY_ID_FORMAT, device_id, @@ -84,7 +87,7 @@ class SensorTrend(BinarySensorDevice): self._name = friendly_name self._target_entity = target_entity self._attribute = attribute - self._sensor_class = sensor_class + self._device_class = device_class self._invert = invert self._state = None self.from_state = None @@ -111,9 +114,9 @@ class SensorTrend(BinarySensorDevice): return self._state @property - def sensor_class(self): + def device_class(self): """Return the sensor class of the sensor.""" - return self._sensor_class + return self._device_class @property def should_poll(self): diff --git a/homeassistant/components/binary_sensor/wink.py b/homeassistant/components/binary_sensor/wink.py index 4e1969de858..da60c54a0fd 100644 --- a/homeassistant/components/binary_sensor/wink.py +++ b/homeassistant/components/binary_sensor/wink.py @@ -107,8 +107,8 @@ class WinkBinarySensorDevice(WinkDevice, BinarySensorDevice, Entity): return self.wink.state() @property - def sensor_class(self): - """Return the class of this sensor, from SENSOR_CLASSES.""" + def device_class(self): + """Return the class of this sensor, from DEVICE_CLASSES.""" return SENSOR_TYPES.get(self.capability) @@ -161,8 +161,8 @@ class WinkRemote(WinkBinarySensorDevice): } @property - def sensor_class(self): - """Return the class of this sensor, from SENSOR_CLASSES.""" + def device_class(self): + """Return the class of this sensor, from DEVICE_CLASSES.""" return None diff --git a/homeassistant/components/binary_sensor/zwave.py b/homeassistant/components/binary_sensor/zwave.py index 8dd02cc4b43..f9bd417768b 100644 --- a/homeassistant/components/binary_sensor/zwave.py +++ b/homeassistant/components/binary_sensor/zwave.py @@ -48,9 +48,9 @@ def setup_platform(hass, config, add_devices, discovery_info=None): class ZWaveBinarySensor(BinarySensorDevice, zwave.ZWaveDeviceEntity): """Representation of a binary sensor within Z-Wave.""" - def __init__(self, value, sensor_class): + def __init__(self, value, device_class): """Initialize the sensor.""" - self._sensor_type = sensor_class + self._sensor_type = device_class zwave.ZWaveDeviceEntity.__init__(self, value, DOMAIN) @property @@ -59,8 +59,8 @@ class ZWaveBinarySensor(BinarySensorDevice, zwave.ZWaveDeviceEntity): return self._value.data @property - def sensor_class(self): - """Return the class of this sensor, from SENSOR_CLASSES.""" + def device_class(self): + """Return the class of this sensor, from DEVICE_CLASSES.""" return self._sensor_type @property @@ -72,9 +72,9 @@ class ZWaveBinarySensor(BinarySensorDevice, zwave.ZWaveDeviceEntity): class ZWaveTriggerSensor(ZWaveBinarySensor): """Representation of a stateless sensor within Z-Wave.""" - def __init__(self, value, sensor_class, hass, re_arm_sec=60): + def __init__(self, value, device_class, hass, re_arm_sec=60): """Initialize the sensor.""" - super(ZWaveTriggerSensor, self).__init__(value, sensor_class) + super(ZWaveTriggerSensor, self).__init__(value, device_class) self._hass = hass self.re_arm_sec = re_arm_sec self.invalidate_after = dt_util.utcnow() + datetime.timedelta( diff --git a/homeassistant/components/media_player/__init__.py b/homeassistant/components/media_player/__init__.py index a1077b1f132..e3c3170f6f1 100644 --- a/homeassistant/components/media_player/__init__.py +++ b/homeassistant/components/media_player/__init__.py @@ -20,6 +20,7 @@ from homeassistant.config import load_yaml_config_file from homeassistant.helpers.entity import Entity from homeassistant.helpers.entity_component import EntityComponent from homeassistant.helpers.config_validation import PLATFORM_SCHEMA # noqa +from homeassistant.helpers.deprecation import deprecated_substitute from homeassistant.components.http import HomeAssistantView, KEY_AUTHENTICATED from homeassistant.helpers.aiohttp_client import async_get_clientsession import homeassistant.helpers.config_validation as cv @@ -520,40 +521,9 @@ class MediaPlayerDevice(Entity): return None @property - def supported_media_commands(self): - """Flag media commands that are supported. - - DEPRECATED: Included for temporary custom platform compatibility. - """ - return None - - @property + @deprecated_substitute('supported_media_commands') def supported_features(self): """Flag media player features that are supported.""" - # Begin temporary transition logic - - if self.supported_media_commands is not None: - # If this platform is still using supported_media_commands, issue - # a logger warning once with instructions on how to fix it. - if not getattr(self, '_supported_features_warned', False): - def show_warning(): - """Show a deprecation warning in the log for this class.""" - import inspect - _LOGGER.warning( - "supported_media_commands is deprecated. Please " - "rename supported_media_commands to " - "supported_features in '%s' to ensure future support.", - inspect.getfile(self.__class__)) - # This is a temporary attribute. We don't want to pollute - # __init__ so it can be easily removed. - # pylint: disable=attribute-defined-outside-init - self._supported_features_warned = True - self.hass.add_job(show_warning) - - # Return the old property - return self.supported_media_commands - - # End temporary transition logic return 0 def turn_on(self): diff --git a/homeassistant/const.py b/homeassistant/const.py index 5df9bfe15f1..be33e12798f 100644 --- a/homeassistant/const.py +++ b/homeassistant/const.py @@ -78,6 +78,7 @@ CONF_CONDITION = 'condition' CONF_COVERS = 'covers' CONF_CUSTOMIZE = 'customize' CONF_DEVICE = 'device' +CONF_DEVICE_CLASS = 'device_class' CONF_DEVICES = 'devices' CONF_DISARM_AFTER_TRIGGER = 'disarm_after_trigger' CONF_DISCOVERY = 'discovery' @@ -291,6 +292,9 @@ ATTR_OPTION = 'option' # Bitfield of supported component features for the entity ATTR_SUPPORTED_FEATURES = 'supported_features' +# Class of device within its domain +ATTR_DEVICE_CLASS = 'device_class' + # #### SERVICES #### SERVICE_HOMEASSISTANT_STOP = 'stop' SERVICE_HOMEASSISTANT_RESTART = 'restart' diff --git a/homeassistant/helpers/deprecation.py b/homeassistant/helpers/deprecation.py new file mode 100644 index 00000000000..a2396b9d30f --- /dev/null +++ b/homeassistant/helpers/deprecation.py @@ -0,0 +1,56 @@ +"""Deprecation helpers for Home Assistant.""" + +import inspect +import logging + + +def deprecated_substitute(substitute_name): + """Help migrate properties to new names. + + When a property is added to replace an older property, this decorator can + be added to the new property, listing the old property as the substitute. + If the old property is defined, it's value will be used instead, and a log + warning will be issued alerting the user of the impending change. + """ + def decorator(func): + """Decorator function.""" + def func_wrapper(self): + """Wrapper for original function.""" + if hasattr(self, substitute_name): + # If this platform is still using the old property, issue + # a logger warning once with instructions on how to fix it. + warnings = getattr(func, '_deprecated_substitute_warnings', {}) + module_name = self.__module__ + if not warnings.get(module_name): + logger = logging.getLogger(module_name) + logger.warning( + "%s is deprecated. Please rename %s to " + "%s in '%s' to ensure future support.", + substitute_name, substitute_name, func.__name__, + inspect.getfile(self.__class__)) + warnings[module_name] = True + # pylint: disable=protected-access + func._deprecated_substitute_warnings = warnings + + # Return the old property + return getattr(self, substitute_name) + else: + return func(self) + return func_wrapper + return decorator + + +def get_deprecated(config, new_name, old_name, default=None): + """Allow an old config name to be deprecated with a replacement. + + If the new config isn't found, but the old one is, the old value is used + and a warning is issued to the user. + """ + if old_name in config: + module_name = inspect.getmodule(inspect.stack()[1][0]).__name__ + logger = logging.getLogger(module_name) + logger.warning( + "%s is deprecated. Please rename %s to %s in your " + "configuration file.", old_name, old_name, new_name) + return config.get(old_name) + return config.get(new_name, default) diff --git a/homeassistant/helpers/entity.py b/homeassistant/helpers/entity.py index a80f2f5edae..e66f49cc6dc 100644 --- a/homeassistant/helpers/entity.py +++ b/homeassistant/helpers/entity.py @@ -10,7 +10,7 @@ from homeassistant.const import ( ATTR_ASSUMED_STATE, ATTR_FRIENDLY_NAME, ATTR_HIDDEN, ATTR_ICON, ATTR_UNIT_OF_MEASUREMENT, DEVICE_DEFAULT_NAME, STATE_OFF, STATE_ON, STATE_UNAVAILABLE, STATE_UNKNOWN, TEMP_CELSIUS, TEMP_FAHRENHEIT, - ATTR_ENTITY_PICTURE, ATTR_SUPPORTED_FEATURES) + ATTR_ENTITY_PICTURE, ATTR_SUPPORTED_FEATURES, ATTR_DEVICE_CLASS) from homeassistant.core import HomeAssistant, DOMAIN as CORE_DOMAIN from homeassistant.exceptions import NoEntitySpecifiedError from homeassistant.util import ensure_unique_string, slugify @@ -109,6 +109,11 @@ class Entity(object): """ return None + @property + def device_class(self) -> str: + """Return the class of this device, from component DEVICE_CLASSES.""" + return None + @property def unit_of_measurement(self): """Return the unit of measurement of this entity, if any.""" @@ -236,6 +241,7 @@ class Entity(object): self._attr_setter('assumed_state', bool, ATTR_ASSUMED_STATE, attr) self._attr_setter('supported_features', int, ATTR_SUPPORTED_FEATURES, attr) + self._attr_setter('device_class', str, ATTR_DEVICE_CLASS, attr) end = timer() diff --git a/tests/components/binary_sensor/test_binary_sensor.py b/tests/components/binary_sensor/test_binary_sensor.py index 96dda5ab3bb..89b6226c016 100644 --- a/tests/components/binary_sensor/test_binary_sensor.py +++ b/tests/components/binary_sensor/test_binary_sensor.py @@ -23,13 +23,3 @@ class TestBinarySensor(unittest.TestCase): new=True): self.assertEqual(STATE_ON, binary_sensor.BinarySensorDevice().state) - - def test_attributes(self): - """Test binary sensor attributes.""" - sensor = binary_sensor.BinarySensorDevice() - self.assertEqual({}, sensor.state_attributes) - with mock.patch('homeassistant.components.binary_sensor.' - 'BinarySensorDevice.sensor_class', - new='motion'): - self.assertEqual({'sensor_class': 'motion'}, - sensor.state_attributes) diff --git a/tests/components/binary_sensor/test_mqtt.py b/tests/components/binary_sensor/test_mqtt.py index 5e4a2640a34..f9630ae4b25 100644 --- a/tests/components/binary_sensor/test_mqtt.py +++ b/tests/components/binary_sensor/test_mqtt.py @@ -47,32 +47,32 @@ class TestSensorMQTT(unittest.TestCase): state = self.hass.states.get('binary_sensor.test') self.assertEqual(STATE_OFF, state.state) - def test_valid_sensor_class(self): + def test_valid_device_class(self): """Test the setting of a valid sensor class.""" self.hass.config.components = set(['mqtt']) assert setup_component(self.hass, binary_sensor.DOMAIN, { binary_sensor.DOMAIN: { 'platform': 'mqtt', 'name': 'test', - 'sensor_class': 'motion', + 'device_class': 'motion', 'state_topic': 'test-topic', } }) state = self.hass.states.get('binary_sensor.test') - self.assertEqual('motion', state.attributes.get('sensor_class')) + self.assertEqual('motion', state.attributes.get('device_class')) - def test_invalid_sensor_class(self): + def test_invalid_device_class(self): """Test the setting of an invalid sensor class.""" self.hass.config.components = set(['mqtt']) assert setup_component(self.hass, binary_sensor.DOMAIN, { binary_sensor.DOMAIN: { 'platform': 'mqtt', 'name': 'test', - 'sensor_class': 'abc123', + 'device_class': 'abc123', 'state_topic': 'test-topic', } }) state = self.hass.states.get('binary_sensor.test') - self.assertIsNone(state.attributes.get('sensor_class')) + self.assertIsNone(state) diff --git a/tests/components/binary_sensor/test_template.py b/tests/components/binary_sensor/test_template.py index 98462083e6f..cb526851710 100644 --- a/tests/components/binary_sensor/test_template.py +++ b/tests/components/binary_sensor/test_template.py @@ -36,7 +36,7 @@ class TestBinarySensorTemplate(unittest.TestCase): 'test': { 'friendly_name': 'virtual thingy', 'value_template': '{{ foo }}', - 'sensor_class': 'motion', + 'device_class': 'motion', }, }, }, @@ -66,7 +66,7 @@ class TestBinarySensorTemplate(unittest.TestCase): } }) - def test_setup_invalid_sensor_class(self): + def test_setup_invalid_device_class(self): """"Test setup with invalid sensor class.""" with assert_setup_component(0): assert bootstrap.setup_component(self.hass, 'binary_sensor', { @@ -75,7 +75,7 @@ class TestBinarySensorTemplate(unittest.TestCase): 'sensors': { 'test': { 'value_template': '{{ foo }}', - 'sensor_class': 'foobarnotreal', + 'device_class': 'foobarnotreal', }, }, } @@ -89,7 +89,7 @@ class TestBinarySensorTemplate(unittest.TestCase): 'platform': 'template', 'sensors': { 'test': { - 'sensor_class': 'motion', + 'device_class': 'motion', }, } } @@ -103,7 +103,7 @@ class TestBinarySensorTemplate(unittest.TestCase): template_hlpr.Template('{{ 1 > 1 }}', self.hass), MATCH_ALL ).result() self.assertFalse(vs.should_poll) - self.assertEqual('motion', vs.sensor_class) + self.assertEqual('motion', vs.device_class) self.assertEqual('Parent', vs.name) vs.update() diff --git a/tests/helpers/test_entity.py b/tests/helpers/test_entity.py index 061c206c116..c114478319f 100644 --- a/tests/helpers/test_entity.py +++ b/tests/helpers/test_entity.py @@ -2,12 +2,13 @@ # pylint: disable=protected-access import asyncio from unittest.mock import MagicMock +from unittest.mock import patch import pytest import homeassistant.helpers.entity as entity from homeassistant.helpers.customize import set_customize -from homeassistant.const import ATTR_HIDDEN +from homeassistant.const import ATTR_HIDDEN, ATTR_DEVICE_CLASS from tests.common import get_test_home_assistant @@ -119,3 +120,13 @@ class TestHelpersEntity(object): ent = AsyncEntity() ent.update() assert len(async_update) == 1 + + def test_device_class(self): + """Test device class attribute.""" + state = self.hass.states.get(self.entity.entity_id) + assert state.attributes.get(ATTR_DEVICE_CLASS) is None + with patch('homeassistant.helpers.entity.Entity.device_class', + new='test_class'): + self.entity.update_ha_state() + state = self.hass.states.get(self.entity.entity_id) + assert state.attributes.get(ATTR_DEVICE_CLASS) == 'test_class' From 75887e6069e6d6af4a6448def6dd5e938a6a0a6d Mon Sep 17 00:00:00 2001 From: Marcelo Moreira de Mello Date: Fri, 10 Feb 2017 23:51:19 -0500 Subject: [PATCH 024/196] Avoid traceback for Amcrest cameras/firmware that does not have the software_information API call (#5865) * Avoid traceback for Amcrest cameras/firmware that does not have the software_information API call * Make lint happy --- homeassistant/components/sensor/amcrest.py | 16 ++++++++++++---- 1 file changed, 12 insertions(+), 4 deletions(-) diff --git a/homeassistant/components/sensor/amcrest.py b/homeassistant/components/sensor/amcrest.py index 08d551b8fde..f250905e952 100644 --- a/homeassistant/components/sensor/amcrest.py +++ b/homeassistant/components/sensor/amcrest.py @@ -122,10 +122,18 @@ class AmcrestSensor(Entity): def update(self): """Get the latest data and updates the state.""" - version, build_date = self._camera.software_information - self._attrs['Build Date'] = build_date.split('=')[-1] - self._attrs['Serial Number'] = self._camera.serial_number - self._attrs['Version'] = version.split('=')[-1] + try: + version, build_date = self._camera.software_information + self._attrs['Build Date'] = build_date.split('=')[-1] + self._attrs['Version'] = version.split('=')[-1] + except ValueError: + self._attrs['Build Date'] = 'Not Available' + self._attrs['Version'] = 'Not Available' + + try: + self._attrs['Serial Number'] = self._camera.serial_number + except ValueError: + self._attrs['Serial Number'] = 'Not Available' if self._sensor_type == 'motion_detector': self._state = self._camera.is_motion_detected From 3a7309ab62231c05fc86f1ec76dc7bbc3f049727 Mon Sep 17 00:00:00 2001 From: Paulus Schoutsen Date: Fri, 10 Feb 2017 21:06:42 -0800 Subject: [PATCH 025/196] Update frontend (#5866) --- homeassistant/components/frontend/version.py | 2 +- .../frontend/www_static/frontend.html | 2 +- .../frontend/www_static/frontend.html.gz | Bin 138153 -> 138152 bytes .../www_static/home-assistant-polymer | 2 +- .../frontend/www_static/service_worker.js | 2 +- .../frontend/www_static/service_worker.js.gz | Bin 2337 -> 2338 bytes 6 files changed, 4 insertions(+), 4 deletions(-) diff --git a/homeassistant/components/frontend/version.py b/homeassistant/components/frontend/version.py index 40cda09ae24..a186e440f50 100644 --- a/homeassistant/components/frontend/version.py +++ b/homeassistant/components/frontend/version.py @@ -2,7 +2,7 @@ FINGERPRINTS = { "core.js": "adfeb513cf650acf763e284d76a48d6b", - "frontend.html": "43340b2369646b779e04a9925c225ab4", + "frontend.html": "cfd75c944ab14912cfbb4fdd9027579c", "mdi.html": "c1dde43ccf5667f687c418fc8daf9668", "micromarkdown-js.html": "93b5ec4016f0bba585521cf4d18dec1a", "panels/ha-panel-dev-event.html": "5c82300b3cf543a92cf4297506e450e7", diff --git a/homeassistant/components/frontend/www_static/frontend.html b/homeassistant/components/frontend/www_static/frontend.html index 31f8a0789dd..45c229c8d01 100644 --- a/homeassistant/components/frontend/www_static/frontend.html +++ b/homeassistant/components/frontend/www_static/frontend.html @@ -320,7 +320,7 @@ window.hassUtil.domainIcon = function (domain, state) { window.hassUtil.binarySensorIcon = function (state) { var activated = state.state && state.state === 'off'; - switch (state.attributes.sensor_class) { + switch (state.attributes.device_class) { case 'connectivity': return activated ? 'mdi:server-network-off' : 'mdi:server-network'; case 'light': diff --git a/homeassistant/components/frontend/www_static/frontend.html.gz b/homeassistant/components/frontend/www_static/frontend.html.gz index 2790cc1ddf447ff91abfdf445239ca8e335103ea..765e7b749f2793c79598663c8bea7704d33a13c7 100644 GIT binary patch delta 64453 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 z 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 diff --git a/homeassistant/components/frontend/www_static/home-assistant-polymer b/homeassistant/components/frontend/www_static/home-assistant-polymer index f3808ff4d44..518d0b38da4 160000 --- a/homeassistant/components/frontend/www_static/home-assistant-polymer +++ b/homeassistant/components/frontend/www_static/home-assistant-polymer @@ -1 +1 @@ -Subproject commit f3808ff4d44733f5810e21131e0daa1425bf5f22 +Subproject commit 518d0b38da47fa5923c84a963d11e9ed59424c2f diff --git a/homeassistant/components/frontend/www_static/service_worker.js b/homeassistant/components/frontend/www_static/service_worker.js index 334d21443f1..61b5d020825 100644 --- a/homeassistant/components/frontend/www_static/service_worker.js +++ b/homeassistant/components/frontend/www_static/service_worker.js @@ -1 +1 @@ -"use strict";function setOfCachedUrls(e){return e.keys().then(function(e){return e.map(function(e){return e.url})}).then(function(e){return new Set(e)})}function notificationEventCallback(e,t){firePushCallback({action:t.action,data:t.notification.data,tag:t.notification.tag,type:e},t.notification.data.jwt)}function firePushCallback(e,t){delete e.data.jwt,0===Object.keys(e.data).length&&e.data.constructor===Object&&delete e.data,fetch("/api/notify.html5/callback",{method:"POST",headers:new Headers({"Content-Type":"application/json",Authorization:"Bearer "+t}),body:JSON.stringify(e)})}var precacheConfig=[["/","daf22d03eb15bd061f46647363d5ec9b"],["/frontend/panels/dev-event-5c82300b3cf543a92cf4297506e450e7.html","1bb68c3df5c14307a2550a0cca39b435"],["/frontend/panels/dev-info-0469024d94d6270a8680df2be44ba916.html","35995794b5a909d517be812ad4f46ea8"],["/frontend/panels/dev-service-9f749635e518a4ca7991975bdefdb10a.html","1bc71eb7620c7b7198fd4b7976d6bc13"],["/frontend/panels/dev-state-7d069ba8fd5379fa8f59858b8c0a7473.html","18694d76e03e1194c734e9819923b70b"],["/frontend/panels/dev-template-2b618508510afa5281c9ecae0c3a3dbd.html","554e7f893ab24c8548813382142207d4"],["/frontend/panels/map-9c8c7924ba8f731560c9f4093835cc26.html","8ae4874622d23d995ddf2a8b0ffa8d80"],["/static/core-adfeb513cf650acf763e284d76a48d6b.js","f5fdf5f1f754e801f9f54ad31a3cc922"],["/static/frontend-43340b2369646b779e04a9925c225ab4.html","dc237eec8c13029a9d2ba6ccf51d2820"],["/static/mdi-c1dde43ccf5667f687c418fc8daf9668.html","6a3c9317736ca26e3390316335be9ba5"],["static/fonts/roboto/Roboto-Bold.ttf","d329cc8b34667f114a95422aaad1b063"],["static/fonts/roboto/Roboto-Light.ttf","7b5fb88f12bec8143f00e21bc3222124"],["static/fonts/roboto/Roboto-Medium.ttf","fe13e4170719c2fc586501e777bde143"],["static/fonts/roboto/Roboto-Regular.ttf","ac3f799d5bbaf5196fab15ab8de8431c"],["static/icons/favicon-192x192.png","419903b8422586a7e28021bbe9011175"],["static/icons/favicon.ico","04235bda7843ec2fceb1cbe2bc696cf4"],["static/images/card_media_player_bg.png","a34281d1c1835d338a642e90930e61aa"],["static/webcomponents-lite.min.js","32b5a9b7ada86304bec6b43d3f2194f0"]],cacheName="sw-precache-v2--"+(self.registration?self.registration.scope:""),ignoreUrlParametersMatching=[/^utm_/],addDirectoryIndex=function(e,t){var a=new URL(e);return"/"===a.pathname.slice(-1)&&(a.pathname+=t),a.toString()},createCacheKey=function(e,t,a,n){var c=new URL(e);return n&&c.toString().match(n)||(c.search+=(c.search?"&":"")+encodeURIComponent(t)+"="+encodeURIComponent(a)),c.toString()},isPathWhitelisted=function(e,t){if(0===e.length)return!0;var a=new URL(t).pathname;return e.some(function(e){return a.match(e)})},stripIgnoredUrlParameters=function(e,t){var a=new URL(e);return a.search=a.search.slice(1).split("&").map(function(e){return e.split("=")}).filter(function(e){return t.every(function(t){return!t.test(e[0])})}).map(function(e){return e.join("=")}).join("&"),a.toString()},hashParamName="_sw-precache",urlsToCacheKeys=new Map(precacheConfig.map(function(e){var t=e[0],a=e[1],n=new URL(t,self.location),c=createCacheKey(n,hashParamName,a,!1);return[n.toString(),c]}));self.addEventListener("install",function(e){e.waitUntil(caches.open(cacheName).then(function(e){return setOfCachedUrls(e).then(function(t){return Promise.all(Array.from(urlsToCacheKeys.values()).map(function(a){if(!t.has(a))return e.add(new Request(a,{credentials:"same-origin",redirect:"follow"}))}))})}).then(function(){return self.skipWaiting()}))}),self.addEventListener("activate",function(e){var t=new Set(urlsToCacheKeys.values());e.waitUntil(caches.open(cacheName).then(function(e){return e.keys().then(function(a){return Promise.all(a.map(function(a){if(!t.has(a.url))return e.delete(a)}))})}).then(function(){return self.clients.claim()}))}),self.addEventListener("fetch",function(e){if("GET"===e.request.method){var t,a=stripIgnoredUrlParameters(e.request.url,ignoreUrlParametersMatching);t=urlsToCacheKeys.has(a);var n="index.html";!t&&n&&(a=addDirectoryIndex(a,n),t=urlsToCacheKeys.has(a));var c="/";!t&&c&&"navigate"===e.request.mode&&isPathWhitelisted(["^((?!(static|api|local|service_worker.js|manifest.json)).)*$"],e.request.url)&&(a=new URL(c,self.location).toString(),t=urlsToCacheKeys.has(a)),t&&e.respondWith(caches.open(cacheName).then(function(e){return e.match(urlsToCacheKeys.get(a)).then(function(e){if(e)return e;throw Error("The cached response that was expected is missing.")})}).catch(function(t){return console.warn('Couldn\'t serve response for "%s" from cache: %O',e.request.url,t),fetch(e.request)}))}}),self.addEventListener("push",function(e){var t;e.data&&(t=e.data.json(),e.waitUntil(self.registration.showNotification(t.title,t).then(function(e){firePushCallback({type:"received",tag:t.tag,data:t.data},t.data.jwt)})))}),self.addEventListener("notificationclick",function(e){var t;notificationEventCallback("clicked",e),e.notification.close(),e.notification.data&&e.notification.data.url&&(t=e.notification.data.url,t&&e.waitUntil(clients.matchAll({type:"window"}).then(function(e){var a,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 delta 2327 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 From f5c58748b7bc89a8eee2eea80c54b15f9424724d Mon Sep 17 00:00:00 2001 From: Jose Juan Montes Date: Sat, 11 Feb 2017 10:07:31 +0100 Subject: [PATCH 026/196] Adds play URL support to mpd (makes it work with tts). (#5863) * Adds play URL support to mpd (makes it work with tts). * Removed extra line at the end of the file. --- homeassistant/components/media_player/mpd.py | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/homeassistant/components/media_player/mpd.py b/homeassistant/components/media_player/mpd.py index 48d22dab021..9d3a0928866 100644 --- a/homeassistant/components/media_player/mpd.py +++ b/homeassistant/components/media_player/mpd.py @@ -266,5 +266,6 @@ class MpdDevice(MediaPlayerDevice): self.client.load(media_id) self.client.play() else: - _LOGGER.error(str.format("Invalid media type. Expected: {0}", - MEDIA_TYPE_PLAYLIST)) + self.client.clear() + self.client.add(media_id) + self.client.play() From d32949b099f66477969a657d7efd054b03893d6b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Daniel=20H=C3=B8yer=20Iversen?= Date: Sat, 11 Feb 2017 10:55:38 +0100 Subject: [PATCH 027/196] rfxtrx 0.17 (#5870) --- homeassistant/components/rfxtrx.py | 2 +- requirements_all.txt | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/homeassistant/components/rfxtrx.py b/homeassistant/components/rfxtrx.py index caa44d5a8f2..c035836594c 100644 --- a/homeassistant/components/rfxtrx.py +++ b/homeassistant/components/rfxtrx.py @@ -14,7 +14,7 @@ from homeassistant.const import EVENT_HOMEASSISTANT_STOP from homeassistant.helpers.entity import Entity from homeassistant.const import (ATTR_ENTITY_ID, TEMP_CELSIUS) -REQUIREMENTS = ['pyRFXtrx==0.16.1'] +REQUIREMENTS = ['pyRFXtrx==0.17.0'] DOMAIN = "rfxtrx" diff --git a/requirements_all.txt b/requirements_all.txt index 6cab08068a9..fb5d6477c23 100755 --- a/requirements_all.txt +++ b/requirements_all.txt @@ -409,7 +409,7 @@ pyCEC==0.4.12 pyHS100==0.2.3 # homeassistant.components.rfxtrx -pyRFXtrx==0.16.1 +pyRFXtrx==0.17.0 # homeassistant.components.notify.xmpp pyasn1-modules==0.0.8 From 0aad6c72d260b9387c7ce8668644d2ee6deda382 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Petr=20Vran=C3=ADk?= Date: Sat, 11 Feb 2017 13:53:45 +0100 Subject: [PATCH 028/196] version bump (#5871) --- homeassistant/components/hdmi_cec.py | 2 +- requirements_all.txt | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/homeassistant/components/hdmi_cec.py b/homeassistant/components/hdmi_cec.py index 11a3f0f2d02..a154bdf609e 100644 --- a/homeassistant/components/hdmi_cec.py +++ b/homeassistant/components/hdmi_cec.py @@ -26,7 +26,7 @@ from homeassistant.const import (EVENT_HOMEASSISTANT_START, STATE_UNKNOWN, from homeassistant.core import HomeAssistant, callback from homeassistant.helpers.entity import Entity -REQUIREMENTS = ['pyCEC==0.4.12'] +REQUIREMENTS = ['pyCEC==0.4.13'] DOMAIN = 'hdmi_cec' diff --git a/requirements_all.txt b/requirements_all.txt index fb5d6477c23..e3c8e853987 100755 --- a/requirements_all.txt +++ b/requirements_all.txt @@ -403,7 +403,7 @@ pwaqi==1.4 py-cpuinfo==0.2.3 # homeassistant.components.hdmi_cec -pyCEC==0.4.12 +pyCEC==0.4.13 # homeassistant.components.switch.tplink pyHS100==0.2.3 From 2711c129281423761bda7e65d11f2509ed1c59e7 Mon Sep 17 00:00:00 2001 From: Fabian Affolter Date: Sat, 11 Feb 2017 14:48:54 +0100 Subject: [PATCH 029/196] Upgrade psutil to 5.1.3 (#5873) --- homeassistant/components/sensor/systemmonitor.py | 2 +- requirements_all.txt | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/homeassistant/components/sensor/systemmonitor.py b/homeassistant/components/sensor/systemmonitor.py index da9c9457aa0..333f572a27c 100755 --- a/homeassistant/components/sensor/systemmonitor.py +++ b/homeassistant/components/sensor/systemmonitor.py @@ -16,7 +16,7 @@ from homeassistant.helpers.entity import Entity import homeassistant.helpers.config_validation as cv import homeassistant.util.dt as dt_util -REQUIREMENTS = ['psutil==5.1.2'] +REQUIREMENTS = ['psutil==5.1.3'] _LOGGER = logging.getLogger(__name__) diff --git a/requirements_all.txt b/requirements_all.txt index e3c8e853987..df814a8b55c 100755 --- a/requirements_all.txt +++ b/requirements_all.txt @@ -385,7 +385,7 @@ pmsensor==0.3 proliphix==0.4.1 # homeassistant.components.sensor.systemmonitor -psutil==5.1.2 +psutil==5.1.3 # homeassistant.components.wink pubnubsub-handler==1.0.0 From b981bfba7e11075ddc5aff9e9ef83556d0d5dbdb Mon Sep 17 00:00:00 2001 From: Andrey Date: Sat, 11 Feb 2017 20:33:41 +0200 Subject: [PATCH 030/196] Stop using entity_picture that is known to be bad. (#5856) * Stop using entity_picture that is known to be bad. * Only abandon image on 400 or 404 response * Return is_permanent_failure as a third part of response * Add debug printout * Fix lint * Fix lint --- .../components/media_player/__init__.py | 32 +++++++--- tests/components/media_player/test_demo.py | 62 ++++++++++++++++++- 2 files changed, 83 insertions(+), 11 deletions(-) diff --git a/homeassistant/components/media_player/__init__.py b/homeassistant/components/media_player/__init__.py index e3c3170f6f1..545ccd1c9d0 100644 --- a/homeassistant/components/media_player/__init__.py +++ b/homeassistant/components/media_player/__init__.py @@ -391,6 +391,7 @@ class MediaPlayerDevice(Entity): """ABC for media player devices.""" _access_token = None + _last_bad_image_url = None # pylint: disable=no-self-use # Implement these for your media player @@ -809,8 +810,7 @@ class MediaPlayerDevice(Entity): return None url = self.media_image_url - - if url is None: + if url in (None, self._last_bad_image_url): return None return ENTITY_IMAGE_URL.format( @@ -836,6 +836,14 @@ class MediaPlayerDevice(Entity): _async_fetch_image(self.hass, url), self.hass.loop ).result() + def set_last_bad_image_url(self, url): + """Save last bad image url.""" + should_update = self._last_bad_image_url != url + self._last_bad_image_url = url + if should_update: + _LOGGER.debug('%s marked as inaccessible', url) + self.schedule_update_ha_state() + @asyncio.coroutine def _async_fetch_image(hass, url): @@ -846,11 +854,10 @@ def _async_fetch_image(hass, url): cache_images = ENTITY_IMAGE_CACHE[ATTR_CACHE_IMAGES] cache_urls = ENTITY_IMAGE_CACHE[ATTR_CACHE_URLS] cache_maxsize = ENTITY_IMAGE_CACHE[ATTR_CACHE_MAXSIZE] - if url in cache_images: return cache_images[url] - content, content_type = (None, None) + content, content_type, is_permanent_failure = (None, None, False) websession = async_get_clientsession(hass) response = None try: @@ -859,6 +866,8 @@ def _async_fetch_image(hass, url): if response.status == 200: content = yield from response.read() content_type = response.headers.get(CONTENT_TYPE_HEADER) + elif response.status in (400, 404): + is_permanent_failure = True except asyncio.TimeoutError: pass @@ -868,9 +877,9 @@ def _async_fetch_image(hass, url): yield from response.release() if not content: - return (None, None) + return (None, None, is_permanent_failure) - cache_images[url] = (content, content_type) + cache_images[url] = (content, content_type, is_permanent_failure) cache_urls.append(url) while len(cache_urls) > cache_maxsize: @@ -881,7 +890,7 @@ def _async_fetch_image(hass, url): cache_urls = cache_urls[1:] - return content, content_type + return content, content_type, is_permanent_failure class MediaPlayerImageView(HomeAssistantView): @@ -907,12 +916,15 @@ class MediaPlayerImageView(HomeAssistantView): request.GET.get('token') == player.access_token) if not authenticated: - return web.Response(status=401) + return web.Response(status=401), - data, content_type = yield from _async_fetch_image( - request.app['hass'], player.media_image_url) + url = player.media_image_url + data, content_type, is_permanent_failure = \ + yield from _async_fetch_image(request.app['hass'], url) if data is None: + if is_permanent_failure: + player.set_last_bad_image_url(url) return web.Response(status=500) return web.Response(body=data, content_type=content_type) diff --git a/tests/components/media_player/test_demo.py b/tests/components/media_player/test_demo.py index 1e53245d8a5..ca53e9b66ca 100644 --- a/tests/components/media_player/test_demo.py +++ b/tests/components/media_player/test_demo.py @@ -254,7 +254,7 @@ class TestMediaPlayerWeb(unittest.TestCase): assert setup_component( self.hass, mp.DOMAIN, {'media_player': {'platform': 'demo'}}) - + mp.ENTITY_IMAGE_CACHE[mp.ATTR_CACHE_IMAGES].clear() self.hass.start() def tearDown(self): @@ -295,3 +295,63 @@ class TestMediaPlayerWeb(unittest.TestCase): state.attributes.get('entity_picture')) assert req.status_code == 200 assert req.text == fake_picture_data + + def test_media_image_proxy_500(self): + """Test the media server image proxy server .""" + class MockResponse(): + def __init__(self): + self.status = 500 + + @asyncio.coroutine + def release(self): + pass + + class MockWebsession(): + + @asyncio.coroutine + def get(self, url): + return MockResponse() + + def detach(self): + pass + + self.hass.data[DATA_CLIENTSESSION] = MockWebsession() + + assert self.hass.states.is_state(entity_id, 'playing') + state = self.hass.states.get(entity_id) + req = requests.get(HTTP_BASE_URL + + state.attributes.get('entity_picture')) + assert req.status_code == 500 + self.hass.block_till_done() + assert self.hass.states.get(entity_id).attributes.get( + 'entity_picture') is not None + + def test_media_image_proxy_404(self): + """Test the media server image proxy server .""" + class MockResponse(): + def __init__(self): + self.status = 404 + + @asyncio.coroutine + def release(self): + pass + + class MockWebsession(): + + @asyncio.coroutine + def get(self, url): + return MockResponse() + + def detach(self): + pass + + self.hass.data[DATA_CLIENTSESSION] = MockWebsession() + + assert self.hass.states.is_state(entity_id, 'playing') + state = self.hass.states.get(entity_id) + req = requests.get(HTTP_BASE_URL + + state.attributes.get('entity_picture')) + assert req.status_code == 500 + self.hass.block_till_done() + assert self.hass.states.get(entity_id).attributes.get( + 'entity_picture') is None From 88653e66c8a45658070034c878ddf2c90f16bd52 Mon Sep 17 00:00:00 2001 From: Fabian Affolter Date: Sat, 11 Feb 2017 20:29:37 +0100 Subject: [PATCH 031/196] Style updates (#5878) * Use consts, update quoting, and update comments * Update log message * Update docstrings * Update log messages * Update log messages * Update style * Fix typo * Add newline * Fix indent * Fix line too long --- homeassistant/components/alert.py | 38 ++--- homeassistant/components/apiai.py | 12 +- homeassistant/components/light/qwikswitch.py | 2 +- homeassistant/components/light/rflink.py | 39 +++-- homeassistant/components/notify/mailgun.py | 37 +++-- homeassistant/components/rflink.py | 144 ++++++++----------- homeassistant/components/sensor/openevse.py | 10 +- homeassistant/components/sensor/rflink.py | 30 ++-- homeassistant/components/switch/rflink.py | 15 +- 9 files changed, 142 insertions(+), 185 deletions(-) diff --git a/homeassistant/components/alert.py b/homeassistant/components/alert.py index dc0774edef2..8cee05f29cc 100644 --- a/homeassistant/components/alert.py +++ b/homeassistant/components/alert.py @@ -13,10 +13,9 @@ import voluptuous as vol from homeassistant.core import callback from homeassistant.config import load_yaml_config_file -from homeassistant.const import (CONF_ENTITY_ID, STATE_IDLE, CONF_NAME, - CONF_STATE, STATE_ON, STATE_OFF, - SERVICE_TURN_ON, SERVICE_TURN_OFF, - SERVICE_TOGGLE, ATTR_ENTITY_ID) +from homeassistant.const import ( + CONF_ENTITY_ID, STATE_IDLE, CONF_NAME, CONF_STATE, STATE_ON, STATE_OFF, + SERVICE_TURN_ON, SERVICE_TURN_OFF, SERVICE_TOGGLE, ATTR_ENTITY_ID) from homeassistant.helpers.entity import ToggleEntity from homeassistant.helpers import service, event from homeassistant.util.async import run_callback_threadsafe @@ -32,13 +31,16 @@ CONF_NOTIFIERS = 'notifiers' CONF_REPEAT = 'repeat' CONF_SKIP_FIRST = 'skip_first' +DEFAULT_CAN_ACK = True +DEFAULT_SKIP_FIRST = False + ALERT_SCHEMA = vol.Schema({ vol.Required(CONF_NAME): cv.string, vol.Required(CONF_ENTITY_ID): cv.entity_id, vol.Required(CONF_STATE, default=STATE_ON): cv.string, vol.Required(CONF_REPEAT): vol.All(cv.ensure_list, [vol.Coerce(float)]), - vol.Required(CONF_CAN_ACK, default=True): cv.boolean, - vol.Required(CONF_SKIP_FIRST, default=False): cv.boolean, + vol.Required(CONF_CAN_ACK, default=DEFAULT_CAN_ACK): cv.boolean, + vol.Required(CONF_SKIP_FIRST, default=DEFAULT_SKIP_FIRST): cv.boolean, vol.Required(CONF_NOTIFIERS): cv.ensure_list}) CONFIG_SCHEMA = vol.Schema({ @@ -99,7 +101,7 @@ def async_toggle(hass, entity_id): @asyncio.coroutine def async_setup(hass, config): - """Setup alert component.""" + """Set up the Alert component.""" alerts = config.get(DOMAIN) all_alerts = {} @@ -117,7 +119,7 @@ def async_setup(hass, config): else: yield from alert.async_turn_off() - # setup alerts + # Setup alerts for entity_id, alert in alerts.items(): entity = Alert(hass, entity_id, alert[CONF_NAME], alert[CONF_ENTITY_ID], @@ -126,13 +128,13 @@ def async_setup(hass, config): alert[CONF_CAN_ACK]) all_alerts[entity.entity_id] = entity - # read descriptions + # Read descriptions descriptions = yield from hass.loop.run_in_executor( None, load_yaml_config_file, os.path.join( os.path.dirname(__file__), 'services.yaml')) descriptions = descriptions.get(DOMAIN, {}) - # setup service calls + # Setup service calls hass.services.async_register( DOMAIN, SERVICE_TURN_OFF, async_handle_alert_service, descriptions.get(SERVICE_TURN_OFF), schema=ALERT_SERVICE_SCHEMA) @@ -171,8 +173,8 @@ class Alert(ToggleEntity): self._cancel = None self.entity_id = ENTITY_ID_FORMAT.format(entity_id) - event.async_track_state_change(hass, watched_entity_id, - self.watched_entity_change) + event.async_track_state_change( + hass, watched_entity_id, self.watched_entity_change) @property def name(self): @@ -201,7 +203,7 @@ class Alert(ToggleEntity): @asyncio.coroutine def watched_entity_change(self, entity, from_state, to_state): """Determine if the alert should start or stop.""" - _LOGGER.debug('Watched entity (%s) has changed.', entity) + _LOGGER.debug("Watched entity (%s) has changed", entity) if to_state.state == self._alert_state and not self._firing: yield from self.begin_alerting() if to_state.state != self._alert_state and self._firing: @@ -210,7 +212,7 @@ class Alert(ToggleEntity): @asyncio.coroutine def begin_alerting(self): """Begin the alert procedures.""" - _LOGGER.debug('Beginning Alert: %s', self._name) + _LOGGER.debug("Beginning Alert: %s", self._name) self._ack = False self._firing = True self._next_delay = 0 @@ -225,7 +227,7 @@ class Alert(ToggleEntity): @asyncio.coroutine def end_alerting(self): """End the alert procedures.""" - _LOGGER.debug('Ending Alert: %s', self._name) + _LOGGER.debug("Ending Alert: %s", self._name) self._cancel() self._ack = False self._firing = False @@ -247,7 +249,7 @@ class Alert(ToggleEntity): return if not self._ack: - _LOGGER.info('Alerting: %s', self._name) + _LOGGER.info("Alerting: %s", self._name) for target in self._notifiers: yield from self.hass.services.async_call( 'notify', target, {'message': self._name}) @@ -256,14 +258,14 @@ class Alert(ToggleEntity): @asyncio.coroutine def async_turn_on(self): """Async Unacknowledge alert.""" - _LOGGER.debug('Reset Alert: %s', self._name) + _LOGGER.debug("Reset Alert: %s", self._name) self._ack = False yield from self.async_update_ha_state() @asyncio.coroutine def async_turn_off(self): """Async Acknowledge alert.""" - _LOGGER.debug('Acknowledged Alert: %s', self._name) + _LOGGER.debug("Acknowledged Alert: %s", self._name) self._ack = True yield from self.async_update_ha_state() diff --git a/homeassistant/components/apiai.py b/homeassistant/components/apiai.py index 769283fa5d9..989c1a596f3 100644 --- a/homeassistant/components/apiai.py +++ b/homeassistant/components/apiai.py @@ -77,14 +77,14 @@ class ApiaiIntentsView(HomeAssistantView): """Handle API.AI.""" data = yield from request.json() - _LOGGER.debug('Received Apiai request: %s', data) + _LOGGER.debug("Received api.ai request: %s", data) req = data.get('result') if req is None: - _LOGGER.error('Received invalid data from Apiai: %s', data) - return self.json_message('Expected result value not received', - HTTP_BAD_REQUEST) + _LOGGER.error("Received invalid data from api.ai: %s", data) + return self.json_message( + "Expected result value not received", HTTP_BAD_REQUEST) action_incomplete = req['actionIncomplete'] @@ -106,7 +106,7 @@ class ApiaiIntentsView(HomeAssistantView): # return self.json(response) if intent == "": - _LOGGER.warning('Received intent with empty action') + _LOGGER.warning("Received intent with empty action") response.add_speech( "You have not defined an action in your api.ai intent.") return self.json(response) @@ -114,7 +114,7 @@ class ApiaiIntentsView(HomeAssistantView): config = self.intents.get(intent) if config is None: - _LOGGER.warning('Received unknown intent %s', intent) + _LOGGER.warning("Received unknown intent %s", intent) response.add_speech( "Intent '%s' is not yet configured within Home Assistant." % intent) diff --git a/homeassistant/components/light/qwikswitch.py b/homeassistant/components/light/qwikswitch.py index b963f14cfb4..b5b4378d526 100644 --- a/homeassistant/components/light/qwikswitch.py +++ b/homeassistant/components/light/qwikswitch.py @@ -17,7 +17,7 @@ DEPENDENCIES = ['qwikswitch'] def setup_platform(hass, config, add_devices, discovery_info=None): """Add lights from the main Qwikswitch component.""" if discovery_info is None: - _LOGGER.error("Configure Qwikswitch component") + _LOGGER.error("Configure Qwikswitch component failed") return False add_devices(qwikswitch.QSUSB['light']) diff --git a/homeassistant/components/light/rflink.py b/homeassistant/components/light/rflink.py index ab532e2368a..82b7b46b1f8 100644 --- a/homeassistant/components/light/rflink.py +++ b/homeassistant/components/light/rflink.py @@ -1,8 +1,8 @@ -"""Support for Rflink lights. - -For more details about this platform, please refer to the documentation -at https://home-assistant.io/components/light.rflink/ +""" +Support for Rflink lights. +For more details about this platform, please refer to the documentation at +https://home-assistant.io/components/light.rflink/ """ import asyncio import logging @@ -46,10 +46,9 @@ PLATFORM_SCHEMA = vol.Schema({ def entity_type_for_device_id(device_id): - """Return entity class for procotol of a given device_id. + """Return entity class for protocol of a given device_id. Async friendly. - """ entity_type_mapping = { # KlikAanKlikUit support both dimmers and on/off switches on the same @@ -64,7 +63,6 @@ def entity_class_for_type(entity_type): """Translate entity type to entity class. Async friendly. - """ entity_device_mapping = { # sends only 'dim' commands not compatible with on/off switches @@ -81,12 +79,12 @@ def entity_class_for_type(entity_type): def devices_from_config(domain_config, hass=None): - """Parse config and add rflink switch devices.""" + """Parse configuration and add Rflink light devices.""" devices = [] for device_id, config in domain_config[CONF_DEVICES].items(): - # determine which kind of entity to create + # Determine which kind of entity to create if CONF_TYPE in config: - # remove type from config to not pass it as and argument to entity + # Remove type from config to not pass it as and argument to entity # instantiation entity_type = config.pop(CONF_TYPE) else: @@ -97,19 +95,18 @@ def devices_from_config(domain_config, hass=None): is_hybrid = entity_class is HybridRflinkLight - # make user aware this can cause problems + # Make user aware this can cause problems repetitions_enabled = device_config[CONF_SIGNAL_REPETITIONS] != 1 if is_hybrid and repetitions_enabled: _LOGGER.warning( "Hybrid type for %s not compatible with signal " "repetitions. Please set 'dimmable' or 'switchable' " - "type explicity in configuration.", - device_id) + "type explicity in configuration", device_id) device = entity_class(device_id, hass, **device_config) devices.append(device) - # register entity (and aliasses) to listen to incoming rflink events + # Register entity (and aliasses) to listen to incoming rflink events for _id in [device_id] + config[CONF_ALIASSES]: hass.data[DATA_ENTITY_LOOKUP][ EVENT_KEY_COMMAND][_id].append(device) @@ -119,11 +116,10 @@ def devices_from_config(domain_config, hass=None): @asyncio.coroutine def async_setup_platform(hass, config, async_add_devices, discovery_info=None): - """Setup the Rflink platform.""" - # add devices from config + """Set up the Rflink light platform.""" yield from async_add_devices(devices_from_config(config, hass)) - # add new (unconfigured) devices to user desired group + # Add new (unconfigured) devices to user desired group if config[CONF_NEW_DEVICES_GROUP]: new_devices_group = yield from group.Group.async_create_group( hass, config[CONF_NEW_DEVICES_GROUP], [], True) @@ -142,14 +138,14 @@ def async_setup_platform(hass, config, async_add_devices, discovery_info=None): device = entity_class(device_id, hass, **device_config) yield from async_add_devices([device]) - # register entity to listen to incoming rflink events + # Register entity to listen to incoming Rflink events hass.data[DATA_ENTITY_LOOKUP][ EVENT_KEY_COMMAND][device_id].append(device) - # make sure the event is processed by the new entity + # Make sure the event is processed by the new entity device.handle_event(event) - # maybe add to new devices group + # Maybe add to new devices group if new_devices_group: yield from new_devices_group.async_update_tracked_entity_ids( list(new_devices_group.tracking) + [device.entity_id]) @@ -202,7 +198,6 @@ class HybridRflinkLight(SwitchableRflinkDevice, Light): command are send sequential and multiple 'on' commands to a dimmable device can cause the dimmer to switch into a pulsating brightness mode. Which results in a nice house disco :) - """ _brightness = 255 @@ -221,7 +216,7 @@ class HybridRflinkLight(SwitchableRflinkDevice, Light): # if the receiving device does not support dimlevel this # will ensure it is turned on when full brightness is set if self._brightness == 255: - yield from self._async_handle_command("turn_on") + yield from self._async_handle_command('turn_on') @property def brightness(self): diff --git a/homeassistant/components/notify/mailgun.py b/homeassistant/components/notify/mailgun.py index 4765bd6893a..4a5a46f7e96 100644 --- a/homeassistant/components/notify/mailgun.py +++ b/homeassistant/components/notify/mailgun.py @@ -9,13 +9,14 @@ import logging import voluptuous as vol from homeassistant.components.notify import ( - PLATFORM_SCHEMA, BaseNotificationService, - ATTR_TITLE, ATTR_TITLE_DEFAULT, ATTR_DATA) -from homeassistant.const import (CONF_TOKEN, CONF_DOMAIN, - CONF_RECIPIENT, CONF_SENDER) + PLATFORM_SCHEMA, BaseNotificationService, ATTR_TITLE, ATTR_TITLE_DEFAULT, + ATTR_DATA) +from homeassistant.const import ( + CONF_TOKEN, CONF_DOMAIN, CONF_RECIPIENT, CONF_SENDER) import homeassistant.helpers.config_validation as cv _LOGGER = logging.getLogger(__name__) + REQUIREMENTS = ['https://github.com/pschmitt/pymailgun/' 'archive/1.3.zip#' 'pymailgun==1.3'] @@ -23,12 +24,9 @@ REQUIREMENTS = ['https://github.com/pschmitt/pymailgun/' # Images to attach to notification ATTR_IMAGES = 'images' -# Configuration item for the domain to use. CONF_SANDBOX = 'sandbox' -# Default sender name DEFAULT_SENDER = 'hass@{domain}' -# Default sandbox value DEFAULT_SANDBOX = False # pylint: disable=no-value-for-parameter @@ -43,11 +41,10 @@ PLATFORM_SCHEMA = PLATFORM_SCHEMA.extend({ def get_service(hass, config, discovery_info=None): """Get the Mailgun notification service.""" - mailgun_service = MailgunNotificationService(config.get(CONF_DOMAIN), - config.get(CONF_SANDBOX), - config.get(CONF_TOKEN), - config.get(CONF_SENDER), - config.get(CONF_RECIPIENT)) + mailgun_service = MailgunNotificationService( + config.get(CONF_DOMAIN), config.get(CONF_SANDBOX), + config.get(CONF_TOKEN), config.get(CONF_SENDER), + config.get(CONF_RECIPIENT)) if mailgun_service.connection_is_valid(): return mailgun_service else: @@ -70,7 +67,7 @@ class MailgunNotificationService(BaseNotificationService): """Initialize the connection to Mailgun.""" from pymailgun import Client self._client = Client(self._token, self._domain, self._sandbox) - _LOGGER.debug('Mailgun domain: %s', self._client.domain) + _LOGGER.debug("Mailgun domain: %s", self._client.domain) self._domain = self._client.domain if not self._sender: self._sender = DEFAULT_SENDER.format(domain=self._domain) @@ -81,7 +78,7 @@ class MailgunNotificationService(BaseNotificationService): try: self.initialize_client() except MailgunCredentialsError: - _LOGGER.exception('Invalid credentials') + _LOGGER.exception("Invalid credentials") return False except MailgunDomainError as mailgun_error: _LOGGER.exception(mailgun_error) @@ -99,11 +96,9 @@ class MailgunNotificationService(BaseNotificationService): # Initialize the client in case it was not. if self._client is None: self.initialize_client() - resp = self._client.send_mail(sender=self._sender, - to=self._recipient, - subject=subject, - text=message, - files=files) - _LOGGER.debug('Message sent: %s', resp) + resp = self._client.send_mail( + sender=self._sender, to=self._recipient, subject=subject, + text=message, files=files) + _LOGGER.debug("Message sent: %s", resp) except MailgunError as mailgun_error: - _LOGGER.exception('Failed to send message: %s', mailgun_error) + _LOGGER.exception("Failed to send message: %s", mailgun_error) diff --git a/homeassistant/components/rflink.py b/homeassistant/components/rflink.py index 9a9e6d1145f..e809430d210 100644 --- a/homeassistant/components/rflink.py +++ b/homeassistant/components/rflink.py @@ -1,48 +1,33 @@ -"""Support for Rflink components. +""" +Support for Rflink components. For more details about this component, please refer to the documentation at https://home-assistant.io/components/rflink/ - -Technical overview: - -The Rflink gateway is a USB serial device (Arduino with Rflink firwmare) -connected to a 433Mhz transceiver module. - -The the `rflink` Python module a asyncio transport/protocol is setup that -fires an callback for every (valid/supported) packet received by the Rflink -gateway. - -This component uses this callback to distribute 'rflink packet events' over -the HASS bus which can be subscribed to by entities/platform implementations. - -The platform implementions take care of creating new devices (if enabled) for -unsees incoming packet id's. - -Device Entities take care of matching to the packet id, interpreting and -performing actions based on the packet contents. Common entitiy logic is -maintained in this file. - """ import asyncio from collections import defaultdict import functools as ft import logging +import voluptuous as vol + from homeassistant.const import ( ATTR_ENTITY_ID, CONF_HOST, CONF_PORT, EVENT_HOMEASSISTANT_STOP, STATE_UNKNOWN) from homeassistant.core import CoreState, callback import homeassistant.helpers.config_validation as cv from homeassistant.helpers.entity import Entity -import voluptuous as vol REQUIREMENTS = ['rflink==0.0.28'] -DOMAIN = 'rflink' +_LOGGER = logging.getLogger(__name__) + +ATTR_EVENT = 'event' +ATTR_STATE = 'state' CONF_ALIASSES = 'aliasses' -CONF_DEVICES = 'devices' CONF_DEVICE_DEFAULTS = 'device_defaults' +CONF_DEVICES = 'devices' CONF_FIRE_EVENT = 'fire_event' CONF_IGNORE_DEVICES = 'ignore_devices' CONF_NEW_DEVICES_GROUP = 'new_devices_group' @@ -50,8 +35,18 @@ CONF_RECONNECT_INTERVAL = 'reconnect_interval' CONF_SIGNAL_REPETITIONS = 'signal_repetitions' CONF_WAIT_FOR_ACK = 'wait_for_ack' -DEFAULT_SIGNAL_REPETITIONS = 1 +DATA_DEVICE_REGISTER = 'rflink_device_register' +DATA_ENTITY_LOOKUP = 'rflink_entity_lookup' DEFAULT_RECONNECT_INTERVAL = 10 +DEFAULT_SIGNAL_REPETITIONS = 1 + +EVENT_BUTTON_PRESSED = 'button_pressed' +EVENT_KEY_COMMAND = 'command' +EVENT_KEY_ID = 'id' +EVENT_KEY_SENSOR = 'sensor' +EVENT_KEY_UNIT = 'unit' + +DOMAIN = 'rflink' DEVICE_DEFAULTS_SCHEMA = vol.Schema({ vol.Optional(CONF_FIRE_EVENT, default=False): cv.boolean, @@ -71,27 +66,11 @@ CONFIG_SCHEMA = vol.Schema({ }), }, extra=vol.ALLOW_EXTRA) -ATTR_EVENT = 'event' -ATTR_STATE = 'state' - -DATA_DEVICE_REGISTER = 'rflink_device_register' -DATA_ENTITY_LOOKUP = 'rflink_entity_lookup' - -EVENT_BUTTON_PRESSED = 'button_pressed' - -EVENT_KEY_COMMAND = 'command' -EVENT_KEY_ID = 'id' -EVENT_KEY_SENSOR = 'sensor' -EVENT_KEY_UNIT = 'unit' - -_LOGGER = logging.getLogger(__name__) - def identify_event_type(event): """Look at event to determine type of device. Async friendly. - """ if EVENT_KEY_COMMAND in event: return EVENT_KEY_COMMAND @@ -103,79 +82,78 @@ def identify_event_type(event): @asyncio.coroutine def async_setup(hass, config): - """Setup the Rflink component.""" + """Set up the Rflink component.""" from rflink.protocol import create_rflink_connection import serial - # allow entities to register themselves by device_id to be looked up when + # Allow entities to register themselves by device_id to be looked up when # new rflink events arrive to be handled hass.data[DATA_ENTITY_LOOKUP] = { EVENT_KEY_COMMAND: defaultdict(list), EVENT_KEY_SENSOR: defaultdict(list), } - # allow platform to specify function to register new unknown devices + # Allow platform to specify function to register new unknown devices hass.data[DATA_DEVICE_REGISTER] = {} @callback def event_callback(event): - """Handle incoming rflink events. + """Handle incoming Rflink events. Rflink events arrive as dictionaries of varying content depending on their type. Identify the events and distribute accordingly. - """ event_type = identify_event_type(event) _LOGGER.debug('event of type %s: %s', event_type, event) - # don't propagate non entity events (eg: version string, ack response) + # Don't propagate non entity events (eg: version string, ack response) if event_type not in hass.data[DATA_ENTITY_LOOKUP]: _LOGGER.debug('unhandled event of type: %s', event_type) return - # lookup entities who registered this device id as device id or alias + # Lookup entities who registered this device id as device id or alias event_id = event.get('id', None) entities = hass.data[DATA_ENTITY_LOOKUP][event_type][event_id] if entities: - # propagate event to every entity matching the device id + # Propagate event to every entity matching the device id for entity in entities: _LOGGER.debug('passing event to %s', entities) entity.handle_event(event) else: _LOGGER.debug('device_id not known, adding new device') - # if device is not yet known, register with platform (if loaded) + # If device is not yet known, register with platform (if loaded) if event_type in hass.data[DATA_DEVICE_REGISTER]: hass.async_run_job( hass.data[DATA_DEVICE_REGISTER][event_type], event) - # when connecting to tcp host instead of serial port (optional) + # When connecting to tcp host instead of serial port (optional) host = config[DOMAIN][CONF_HOST] - # tcp port when host configured, otherwise serial port + # TCP port when host configured, otherwise serial port port = config[DOMAIN][CONF_PORT] @callback def reconnect(exc=None): """Schedule reconnect after connection has been unexpectedly lost.""" - # reset protocol binding before starting reconnect + # Reset protocol binding before starting reconnect RflinkCommand.set_rflink_protocol(None) - # if HA is not stopping, initiate new connection + # If HA is not stopping, initiate new connection if hass.state != CoreState.stopping: _LOGGER.warning('disconnected from Rflink, reconnecting') hass.async_add_job(connect) @asyncio.coroutine def connect(): - """Setup connection and hook it into HA for reconnect/shutdown.""" - _LOGGER.info('initiating Rflink connection') + """Set up connection and hook it into HA for reconnect/shutdown.""" + _LOGGER.info("Initiating Rflink connection") - # rflink create_rflink_connection decides based on the value of host + # Rflink create_rflink_connection decides based on the value of host # (string or None) if serial or tcp mode should be used - # initiate serial/tcp connection to Rflink gateway + # Initiate serial/tcp connection to Rflink gateway connection = create_rflink_connection( port=port, host=host, @@ -191,38 +169,32 @@ def async_setup(hass, config): TimeoutError) as exc: reconnect_interval = config[DOMAIN][CONF_RECONNECT_INTERVAL] _LOGGER.exception( - 'error connecting to Rflink, reconnecting in %s', + "Error connecting to Rflink, reconnecting in %s", reconnect_interval) hass.loop.call_later(reconnect_interval, reconnect, exc) return - # bind protocol to command class to allow entities to send commands + # Bind protocol to command class to allow entities to send commands RflinkCommand.set_rflink_protocol( protocol, config[DOMAIN][CONF_WAIT_FOR_ACK]) - # handle shutdown of rflink asyncio transport + # handle shutdown of Rflink asyncio transport hass.bus.async_listen_once(EVENT_HOMEASSISTANT_STOP, lambda x: transport.close()) - _LOGGER.info('connected to Rflink') + _LOGGER.info("Connected to Rflink") - # make initial connection yield from connect() - - # whoo return True class RflinkDevice(Entity): - """Represents a Rflink device. + """Representation of a Rflink device. Contains the common logic for Rflink entities. - """ - # should be set by component implementation platform = None - # default state _state = STATE_UNKNOWN def __init__(self, device_id, hass, name=None, @@ -231,14 +203,14 @@ class RflinkDevice(Entity): """Initialize the device.""" self.hass = hass - # rflink specific attributes for every component type + # Rflink specific attributes for every component type self._device_id = device_id if name: self._name = name else: self._name = device_id - # generate list of device_ids to match against + # Generate list of device_ids to match against if aliasses: self._aliasses = aliasses else: @@ -249,23 +221,21 @@ class RflinkDevice(Entity): def handle_event(self, event): """Handle incoming event for device type.""" - # call platform specific event handler + # Call platform specific event handler self._handle_event(event) - # propagate changes through ha + # Propagate changes through ha self.hass.async_add_job(self.async_update_ha_state()) - # put command onto bus for user to subscribe to + # Put command onto bus for user to subscribe to if self._should_fire_event and identify_event_type( event) == EVENT_KEY_COMMAND: self.hass.bus.fire(EVENT_BUTTON_PRESSED, { ATTR_ENTITY_ID: self.entity_id, ATTR_STATE: event[EVENT_KEY_COMMAND], }) - _LOGGER.debug( - 'fired bus event for %s: %s', - self.entity_id, - event[EVENT_KEY_COMMAND]) + _LOGGER.debug("Fired bus event for %s: %s", + self.entity_id, event[EVENT_KEY_COMMAND]) def _handle_event(self, event): """Platform specific event handler.""" @@ -303,10 +273,9 @@ class RflinkCommand(RflinkDevice): The Rflink interface is managed as a class level and set during setup (and reset on reconnect). - """ - # keep repetition tasks to cancel if state is changed before repetitions + # Keep repetition tasks to cancel if state is changed before repetitions # are sent _repetition_task = None @@ -322,7 +291,7 @@ class RflinkCommand(RflinkDevice): """Do bookkeeping for command, send it to rflink and update state.""" self.cancel_queued_send_commands() - if command == "turn_on": + if command == 'turn_on': cmd = 'on' self._state = True @@ -335,8 +304,8 @@ class RflinkCommand(RflinkDevice): cmd = str(int(args[0] / 17)) self._state = True - # send initial command and queue repetitions - # this allows the entity state to be updated quickly and not having to + # Send initial command and queue repetitions. + # This allows the entity state to be updated quickly and not having to # wait for all repetitions to be sent yield from self._async_send_command(cmd, self._signal_repetitions) @@ -349,7 +318,6 @@ class RflinkCommand(RflinkDevice): For example when user changed state while repetitions are still queued for broadcast. Or when a incoming Rflink command (remote switch) changes the state. - """ # cancel any outstanding tasks from the previous state change if self._repetition_task: @@ -358,8 +326,8 @@ class RflinkCommand(RflinkDevice): @asyncio.coroutine def _async_send_command(self, cmd, repetitions): """Send a command for device to Rflink gateway.""" - _LOGGER.debug('sending command: %s to rflink device: %s', - cmd, self._device_id) + _LOGGER.debug( + "Sending command: %s to Rflink device: %s", cmd, self._device_id) if self._wait_ack: # Puts command on outgoing buffer then waits for Rflink to confirm @@ -394,9 +362,9 @@ class SwitchableRflinkDevice(RflinkCommand): @asyncio.coroutine def async_turn_on(self, **kwargs): """Turn the device on.""" - yield from self._async_handle_command("turn_on") + yield from self._async_handle_command('turn_on') @asyncio.coroutine def async_turn_off(self, **kwargs): """Turn the device off.""" - yield from self._async_handle_command("turn_off") + yield from self._async_handle_command('turn_off') diff --git a/homeassistant/components/sensor/openevse.py b/homeassistant/components/sensor/openevse.py index 4d1fad49fb0..d3ac52f58bd 100644 --- a/homeassistant/components/sensor/openevse.py +++ b/homeassistant/components/sensor/openevse.py @@ -37,7 +37,7 @@ PLATFORM_SCHEMA = PLATFORM_SCHEMA.extend({ def setup_platform(hass, config, add_devices, discovery_info=None): - """Setup the OpenEVSE sensor.""" + """Set up the OpenEVSE sensor.""" import openevsewifi host = config.get(CONF_HOST) @@ -85,7 +85,7 @@ class OpenEVSESensor(Entity): if self.type == 'status': self._state = self.charger.getStatus() elif self.type == 'charge_time': - self._state = self.charger.getChargeTimeElapsed()/60 + self._state = self.charger.getChargeTimeElapsed() / 60 elif self.type == 'ambient_temp': self._state = self.charger.getAmbientTemperature() elif self.type == 'ir_temp': @@ -93,10 +93,10 @@ class OpenEVSESensor(Entity): elif self.type == 'rtc_temp': self._state = self.charger.getRTCTemperature() elif self.type == 'usage_session': - self._state = float(self.charger.getUsageSession())/1000 + self._state = float(self.charger.getUsageSession()) / 1000 elif self.type == 'usage_total': - self._state = float(self.charger.getUsageTotal())/1000 + self._state = float(self.charger.getUsageTotal()) / 1000 else: self._state = 'Unknown' except (RequestException, ValueError, KeyError): - _LOGGER.warning('Could not update status for %s', self.name) + _LOGGER.warning("Could not update status for %s", self.name) diff --git a/homeassistant/components/sensor/rflink.py b/homeassistant/components/sensor/rflink.py index 9f6496149b3..eec21e161c1 100644 --- a/homeassistant/components/sensor/rflink.py +++ b/homeassistant/components/sensor/rflink.py @@ -1,8 +1,8 @@ -"""Support for Rflink sensors. - -For more details about this platform, please refer to the documentation -at https://home-assistant.io/components/light.rflink/ +""" +Support for Rflink sensors. +For more details about this platform, please refer to the documentation at +https://home-assistant.io/components/light.rflink/ """ import asyncio from functools import partial @@ -48,7 +48,6 @@ def lookup_unit_for_sensor_type(sensor_type): """Get unit for sensor type. Async friendly. - """ from rflink.parser import UNITS, PACKET_FIELDS field_abbrev = {v: k for k, v in PACKET_FIELDS.items()} @@ -57,7 +56,7 @@ def lookup_unit_for_sensor_type(sensor_type): def devices_from_config(domain_config, hass=None): - """Parse config and add rflink sensor devices.""" + """Parse configuration and add Rflink sensor devices.""" devices = [] for device_id, config in domain_config[CONF_DEVICES].items(): if not config[ATTR_UNIT_OF_MEASUREMENT]: @@ -66,7 +65,7 @@ def devices_from_config(domain_config, hass=None): device = RflinkSensor(device_id, hass, **config) devices.append(device) - # register entity to listen to incoming rflink events + # Register entity to listen to incoming rflink events hass.data[DATA_ENTITY_LOOKUP][ EVENT_KEY_SENSOR][device_id].append(device) return devices @@ -74,11 +73,10 @@ def devices_from_config(domain_config, hass=None): @asyncio.coroutine def async_setup_platform(hass, config, async_add_devices, discovery_info=None): - """Setup the Rflink platform.""" - # add devices from config + """Set up the Rflink platform.""" yield from async_add_devices(devices_from_config(config, hass)) - # add new (unconfigured) devices to user desired group + # Add new (unconfigured) devices to user desired group if config[CONF_NEW_DEVICES_GROUP]: new_devices_group = yield from group.Group.async_create_group( hass, config[CONF_NEW_DEVICES_GROUP], [], True) @@ -92,17 +90,17 @@ def async_setup_platform(hass, config, async_add_devices, discovery_info=None): rflinksensor = partial(RflinkSensor, device_id, hass) device = rflinksensor(event[EVENT_KEY_SENSOR], event[EVENT_KEY_UNIT]) - # add device entity + # Add device entity yield from async_add_devices([device]) - # register entity to listen to incoming rflink events + # Register entity to listen to incoming rflink events hass.data[DATA_ENTITY_LOOKUP][ EVENT_KEY_SENSOR][device_id].append(device) - # make sure the event is processed by the new entity + # Make sure the event is processed by the new entity device.handle_event(event) - # maybe add to new devices group + # Maybe add to new devices group if new_devices_group: yield from new_devices_group.async_update_tracked_entity_ids( list(new_devices_group.tracking) + [device.entity_id]) @@ -113,8 +111,8 @@ def async_setup_platform(hass, config, async_add_devices, discovery_info=None): class RflinkSensor(RflinkDevice): """Representation of a Rflink sensor.""" - def __init__(self, device_id, hass, sensor_type, - unit_of_measurement, **kwargs): + def __init__(self, device_id, hass, sensor_type, unit_of_measurement, + **kwargs): """Handle sensor specific args and super init.""" self._sensor_type = sensor_type self._unit_of_measurement = unit_of_measurement diff --git a/homeassistant/components/switch/rflink.py b/homeassistant/components/switch/rflink.py index aa61987c3dd..737554154c2 100644 --- a/homeassistant/components/switch/rflink.py +++ b/homeassistant/components/switch/rflink.py @@ -1,8 +1,8 @@ -"""Support for Rflink switches. - -For more details about this platform, please refer to the documentation -at https://home-assistant.io/components/switch.rflink/ +""" +Support for Rflink switches. +For more details about this platform, please refer to the documentation at +https://home-assistant.io/components/switch.rflink/ """ import asyncio import logging @@ -18,7 +18,6 @@ DEPENDENCIES = ['rflink'] _LOGGER = logging.getLogger(__name__) - PLATFORM_SCHEMA = vol.Schema({ vol.Required(CONF_PLATFORM): DOMAIN, vol.Optional(CONF_DEVICE_DEFAULTS, default=DEVICE_DEFAULTS_SCHEMA({})): @@ -36,14 +35,14 @@ PLATFORM_SCHEMA = vol.Schema({ def devices_from_config(domain_config, hass=None): - """Parse config and add rflink switch devices.""" + """Parse configuration and add Rflink switch devices.""" devices = [] for device_id, config in domain_config[CONF_DEVICES].items(): device_config = dict(domain_config[CONF_DEVICE_DEFAULTS], **config) device = RflinkSwitch(device_id, hass, **device_config) devices.append(device) - # register entity (and aliasses) to listen to incoming rflink events + # Register entity (and aliasses) to listen to incoming rflink events for _id in config[CONF_ALIASSES] + [device_id]: hass.data[DATA_ENTITY_LOOKUP][ EVENT_KEY_COMMAND][_id].append(device) @@ -52,7 +51,7 @@ def devices_from_config(domain_config, hass=None): @asyncio.coroutine def async_setup_platform(hass, config, async_add_devices, discovery_info=None): - """Setup the Rflink platform.""" + """Set up the Rflink platform.""" yield from async_add_devices(devices_from_config(config, hass)) From 5ad934907adb1c4f0faa6fd222af55dd6debaa26 Mon Sep 17 00:00:00 2001 From: Paulus Schoutsen Date: Sat, 11 Feb 2017 13:10:28 -0800 Subject: [PATCH 032/196] Revert "Stop using entity_picture that is known to be bad." (#5882) --- .../components/media_player/__init__.py | 32 +++------- tests/components/media_player/test_demo.py | 62 +------------------ 2 files changed, 11 insertions(+), 83 deletions(-) diff --git a/homeassistant/components/media_player/__init__.py b/homeassistant/components/media_player/__init__.py index 545ccd1c9d0..e3c3170f6f1 100644 --- a/homeassistant/components/media_player/__init__.py +++ b/homeassistant/components/media_player/__init__.py @@ -391,7 +391,6 @@ class MediaPlayerDevice(Entity): """ABC for media player devices.""" _access_token = None - _last_bad_image_url = None # pylint: disable=no-self-use # Implement these for your media player @@ -810,7 +809,8 @@ class MediaPlayerDevice(Entity): return None url = self.media_image_url - if url in (None, self._last_bad_image_url): + + if url is None: return None return ENTITY_IMAGE_URL.format( @@ -836,14 +836,6 @@ class MediaPlayerDevice(Entity): _async_fetch_image(self.hass, url), self.hass.loop ).result() - def set_last_bad_image_url(self, url): - """Save last bad image url.""" - should_update = self._last_bad_image_url != url - self._last_bad_image_url = url - if should_update: - _LOGGER.debug('%s marked as inaccessible', url) - self.schedule_update_ha_state() - @asyncio.coroutine def _async_fetch_image(hass, url): @@ -854,10 +846,11 @@ def _async_fetch_image(hass, url): cache_images = ENTITY_IMAGE_CACHE[ATTR_CACHE_IMAGES] cache_urls = ENTITY_IMAGE_CACHE[ATTR_CACHE_URLS] cache_maxsize = ENTITY_IMAGE_CACHE[ATTR_CACHE_MAXSIZE] + if url in cache_images: return cache_images[url] - content, content_type, is_permanent_failure = (None, None, False) + content, content_type = (None, None) websession = async_get_clientsession(hass) response = None try: @@ -866,8 +859,6 @@ def _async_fetch_image(hass, url): if response.status == 200: content = yield from response.read() content_type = response.headers.get(CONTENT_TYPE_HEADER) - elif response.status in (400, 404): - is_permanent_failure = True except asyncio.TimeoutError: pass @@ -877,9 +868,9 @@ def _async_fetch_image(hass, url): yield from response.release() if not content: - return (None, None, is_permanent_failure) + return (None, None) - cache_images[url] = (content, content_type, is_permanent_failure) + cache_images[url] = (content, content_type) cache_urls.append(url) while len(cache_urls) > cache_maxsize: @@ -890,7 +881,7 @@ def _async_fetch_image(hass, url): cache_urls = cache_urls[1:] - return content, content_type, is_permanent_failure + return content, content_type class MediaPlayerImageView(HomeAssistantView): @@ -916,15 +907,12 @@ class MediaPlayerImageView(HomeAssistantView): request.GET.get('token') == player.access_token) if not authenticated: - return web.Response(status=401), + return web.Response(status=401) - url = player.media_image_url - data, content_type, is_permanent_failure = \ - yield from _async_fetch_image(request.app['hass'], url) + data, content_type = yield from _async_fetch_image( + request.app['hass'], player.media_image_url) if data is None: - if is_permanent_failure: - player.set_last_bad_image_url(url) return web.Response(status=500) return web.Response(body=data, content_type=content_type) diff --git a/tests/components/media_player/test_demo.py b/tests/components/media_player/test_demo.py index ca53e9b66ca..1e53245d8a5 100644 --- a/tests/components/media_player/test_demo.py +++ b/tests/components/media_player/test_demo.py @@ -254,7 +254,7 @@ class TestMediaPlayerWeb(unittest.TestCase): assert setup_component( self.hass, mp.DOMAIN, {'media_player': {'platform': 'demo'}}) - mp.ENTITY_IMAGE_CACHE[mp.ATTR_CACHE_IMAGES].clear() + self.hass.start() def tearDown(self): @@ -295,63 +295,3 @@ class TestMediaPlayerWeb(unittest.TestCase): state.attributes.get('entity_picture')) assert req.status_code == 200 assert req.text == fake_picture_data - - def test_media_image_proxy_500(self): - """Test the media server image proxy server .""" - class MockResponse(): - def __init__(self): - self.status = 500 - - @asyncio.coroutine - def release(self): - pass - - class MockWebsession(): - - @asyncio.coroutine - def get(self, url): - return MockResponse() - - def detach(self): - pass - - self.hass.data[DATA_CLIENTSESSION] = MockWebsession() - - assert self.hass.states.is_state(entity_id, 'playing') - state = self.hass.states.get(entity_id) - req = requests.get(HTTP_BASE_URL + - state.attributes.get('entity_picture')) - assert req.status_code == 500 - self.hass.block_till_done() - assert self.hass.states.get(entity_id).attributes.get( - 'entity_picture') is not None - - def test_media_image_proxy_404(self): - """Test the media server image proxy server .""" - class MockResponse(): - def __init__(self): - self.status = 404 - - @asyncio.coroutine - def release(self): - pass - - class MockWebsession(): - - @asyncio.coroutine - def get(self, url): - return MockResponse() - - def detach(self): - pass - - self.hass.data[DATA_CLIENTSESSION] = MockWebsession() - - assert self.hass.states.is_state(entity_id, 'playing') - state = self.hass.states.get(entity_id) - req = requests.get(HTTP_BASE_URL + - state.attributes.get('entity_picture')) - assert req.status_code == 500 - self.hass.block_till_done() - assert self.hass.states.get(entity_id).attributes.get( - 'entity_picture') is None From abaf9e53c24d3c36abc0e6789ae76279f5ce8078 Mon Sep 17 00:00:00 2001 From: Johann Kellerman Date: Sat, 11 Feb 2017 23:27:06 +0200 Subject: [PATCH 033/196] Component set add unsing OR (#5880) --- tests/components/test_logbook.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tests/components/test_logbook.py b/tests/components/test_logbook.py index 1e755a5155b..b6583ba3536 100644 --- a/tests/components/test_logbook.py +++ b/tests/components/test_logbook.py @@ -25,7 +25,7 @@ class TestComponentLogbook(unittest.TestCase): """Setup things to be run when tests are started.""" self.hass = get_test_home_assistant() mock_http_component(self.hass) - self.hass.config.components &= set(['frontend', 'recorder', 'api']) + self.hass.config.components |= set(['frontend', 'recorder', 'api']) with patch('homeassistant.components.logbook.' 'register_built_in_panel'): assert setup_component(self.hass, logbook.DOMAIN, From 2b2c1562a5be05ffa5bdc9108ba233d94e73e7fa Mon Sep 17 00:00:00 2001 From: Robbie Trencheny Date: Sat, 11 Feb 2017 14:39:35 -0800 Subject: [PATCH 034/196] Version bump to 0.39.0.dev0 --- homeassistant/const.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/homeassistant/const.py b/homeassistant/const.py index be33e12798f..afc4c029e40 100644 --- a/homeassistant/const.py +++ b/homeassistant/const.py @@ -1,7 +1,7 @@ # coding: utf-8 """Constants used by Home Assistant components.""" MAJOR_VERSION = 0 -MINOR_VERSION = 38 +MINOR_VERSION = 39 PATCH_VERSION = '0.dev0' __short_version__ = '{}.{}'.format(MAJOR_VERSION, MINOR_VERSION) __version__ = '{}.{}'.format(__short_version__, PATCH_VERSION) From 44311193ef4d9b746e0b53ad27c357ea24bf1016 Mon Sep 17 00:00:00 2001 From: Paulus Schoutsen Date: Sat, 11 Feb 2017 17:29:05 -0800 Subject: [PATCH 035/196] Add config component and hassbian example panel (#5868) * Add hassbian panel * Rename to generic config panel * Allow loading hassbian as test * Add tests * Update frontend * Lint * Lint --- homeassistant/components/config/__init__.py | 28 +++++ homeassistant/components/config/hassbian.py | 118 ++++++++++++++++++ homeassistant/components/frontend/__init__.py | 15 ++- homeassistant/components/frontend/version.py | 1 + .../www_static/home-assistant-polymer | 2 +- .../www_static/panels/ha-panel-config.html | 22 ++++ .../www_static/panels/ha-panel-config.html.gz | Bin 0 -> 3470 bytes tests/common.py | 7 +- tests/components/config/__init__.py | 1 + tests/components/config/test_hassbian.py | 70 +++++++++++ tests/components/config/test_init.py | 18 +++ 11 files changed, 273 insertions(+), 9 deletions(-) create mode 100644 homeassistant/components/config/__init__.py create mode 100644 homeassistant/components/config/hassbian.py create mode 100644 homeassistant/components/frontend/www_static/panels/ha-panel-config.html create mode 100644 homeassistant/components/frontend/www_static/panels/ha-panel-config.html.gz create mode 100644 tests/components/config/__init__.py create mode 100644 tests/components/config/test_hassbian.py create mode 100644 tests/components/config/test_init.py diff --git a/homeassistant/components/config/__init__.py b/homeassistant/components/config/__init__.py new file mode 100644 index 00000000000..dc8946776f5 --- /dev/null +++ b/homeassistant/components/config/__init__.py @@ -0,0 +1,28 @@ +"""Component to interact with Hassbian tools.""" +import asyncio + +from homeassistant.bootstrap import async_prepare_setup_platform +from homeassistant.components.frontend import register_built_in_panel + +DOMAIN = 'config' +DEPENDENCIES = ['http'] + + +@asyncio.coroutine +def async_setup(hass, config): + """Setup the hassbian component.""" + register_built_in_panel(hass, 'config', 'Configuration', 'mdi:settings') + + for panel_name in ('hassbian',): + panel = yield from async_prepare_setup_platform(hass, config, DOMAIN, + panel_name) + + if not panel: + continue + + success = yield from panel.async_setup(hass) + + if success: + hass.config.components.add('{}.{}'.format(DOMAIN, panel_name)) + + return True diff --git a/homeassistant/components/config/hassbian.py b/homeassistant/components/config/hassbian.py new file mode 100644 index 00000000000..c90583c5278 --- /dev/null +++ b/homeassistant/components/config/hassbian.py @@ -0,0 +1,118 @@ +"""Component to interact with Hassbian tools.""" +import asyncio +import json +import os + +from homeassistant.components.http import HomeAssistantView + + +_TEST_OUTPUT = """ +{ + "suites": [ + { + "openzwave": [ + { + "state": "installed" + }, + { + "description": "This is the description of the Open Z-Wave suite." + } + ] + }, + { + "openelec": [ + { + "state": "not_installed" + }, + { + "description": + "OpenElec is amazing. It allows you to control the TV." + } + ] + }, + { + "mosquitto": [ + { + "state": "installing" + }, + { + "description": + "Mosquitto is an MQTT broker." + } + ] + } + ] +} +""" + + +@asyncio.coroutine +def async_setup(hass): + """Setup the hassbian config.""" + # Test if is hassbian + test_mode = 'FORCE_HASSBIAN' in os.environ + is_hassbian = test_mode + + if not is_hassbian: + return False + + hass.http.register_view(HassbianSuitesView(test_mode)) + hass.http.register_view(HassbianSuiteInstallView(test_mode)) + + return True + + +@asyncio.coroutine +def hassbian_status(hass, test_mode=False): + """Query for the Hassbian status.""" + # fetch real output when not in test mode + if test_mode: + return json.loads(_TEST_OUTPUT) + + raise Exception('Real mode not implemented yet.') + + +class HassbianSuitesView(HomeAssistantView): + """Hassbian packages endpoint.""" + + url = '/api/config/hassbian/suites' + name = 'api:config:hassbian:suites' + + def __init__(self, test_mode): + """Initialize suites view.""" + self._test_mode = test_mode + + @asyncio.coroutine + def get(self, request): + """Request suite status.""" + inp = yield from hassbian_status(request.app['hass'], self._test_mode) + + # Flatten the structure a bit + suites = {} + + for suite in inp['suites']: + key = next(iter(suite)) + info = suites[key] = {} + + for item in suite[key]: + item_key = next(iter(item)) + info[item_key] = item[item_key] + + return self.json(suites) + + +class HassbianSuiteInstallView(HomeAssistantView): + """Hassbian packages endpoint.""" + + url = '/api/config/hassbian/suites/{suite}/install' + name = 'api:config:hassbian:suite' + + def __init__(self, test_mode): + """Initialize suite view.""" + self._test_mode = test_mode + + @asyncio.coroutine + def post(self, request, suite): + """Request suite status.""" + # do real install if not in test mode + return self.json({"status": "ok"}) diff --git a/homeassistant/components/frontend/__init__.py b/homeassistant/components/frontend/__init__.py index 4d9fb8624d8..1b4602d35b4 100644 --- a/homeassistant/components/frontend/__init__.py +++ b/homeassistant/components/frontend/__init__.py @@ -19,7 +19,7 @@ DOMAIN = 'frontend' DEPENDENCIES = ['api', 'websocket_api'] URL_PANEL_COMPONENT = '/frontend/panels/{}.html' URL_PANEL_COMPONENT_FP = '/frontend/panels/{}-{}.html' -STATIC_PATH = os.path.join(os.path.dirname(__file__), 'www_static') +STATIC_PATH = os.path.join(os.path.dirname(__file__), 'www_static/') MANIFEST_JSON = { "background_color": "#FFFFFF", "description": "Open-source home automation platform running on Python 3.", @@ -51,17 +51,22 @@ _LOGGER = logging.getLogger(__name__) def register_built_in_panel(hass, component_name, sidebar_title=None, sidebar_icon=None, url_path=None, config=None): """Register a built-in panel.""" - path = 'panels/ha-panel-{}.html'.format(component_name) + nondev_path = 'panels/ha-panel-{}.html'.format(component_name) if hass.http.development: url = ('/static/home-assistant-polymer/panels/' '{0}/ha-panel-{0}.html'.format(component_name)) + path = os.path.join( + STATIC_PATH, 'home-assistant-polymer/panels/', + '{0}/ha-panel-{0}.html'.format(component_name)) else: url = None # use default url generate mechanism + path = os.path.join(STATIC_PATH, nondev_path) - register_panel(hass, component_name, os.path.join(STATIC_PATH, path), - FINGERPRINTS[path], sidebar_title, sidebar_icon, url_path, - url, config) + # Fingerprint doesn't exist when adding new built-in panel + register_panel(hass, component_name, path, + FINGERPRINTS.get(nondev_path, 'dev'), sidebar_title, + sidebar_icon, url_path, url, config) def register_panel(hass, component_name, path, md5=None, sidebar_title=None, diff --git a/homeassistant/components/frontend/version.py b/homeassistant/components/frontend/version.py index a186e440f50..1832564b98f 100644 --- a/homeassistant/components/frontend/version.py +++ b/homeassistant/components/frontend/version.py @@ -5,6 +5,7 @@ FINGERPRINTS = { "frontend.html": "cfd75c944ab14912cfbb4fdd9027579c", "mdi.html": "c1dde43ccf5667f687c418fc8daf9668", "micromarkdown-js.html": "93b5ec4016f0bba585521cf4d18dec1a", + "panels/ha-panel-config.html": "fb50a25da4b4cfbb0d9a74bb22a31db9", "panels/ha-panel-dev-event.html": "5c82300b3cf543a92cf4297506e450e7", "panels/ha-panel-dev-info.html": "0469024d94d6270a8680df2be44ba916", "panels/ha-panel-dev-service.html": "9f749635e518a4ca7991975bdefdb10a", diff --git a/homeassistant/components/frontend/www_static/home-assistant-polymer b/homeassistant/components/frontend/www_static/home-assistant-polymer index 518d0b38da4..ba48e40a2bb 160000 --- a/homeassistant/components/frontend/www_static/home-assistant-polymer +++ b/homeassistant/components/frontend/www_static/home-assistant-polymer @@ -1 +1 @@ -Subproject commit 518d0b38da47fa5923c84a963d11e9ed59424c2f +Subproject commit ba48e40a2bba273b1cdcdf637ecbef4f4db14284 diff --git a/homeassistant/components/frontend/www_static/panels/ha-panel-config.html b/homeassistant/components/frontend/www_static/panels/ha-panel-config.html new file mode 100644 index 00000000000..aa49194bfbc --- /dev/null +++ b/homeassistant/components/frontend/www_static/panels/ha-panel-config.html @@ -0,0 +1,22 @@ + \ No newline at end of file diff --git a/homeassistant/components/frontend/www_static/panels/ha-panel-config.html.gz b/homeassistant/components/frontend/www_static/panels/ha-panel-config.html.gz new file mode 100644 index 0000000000000000000000000000000000000000..0680d628cc006a71aa2214448149a94c7f0013d5 GIT binary patch literal 3470 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 literal 0 HcmV?d00001 diff --git a/tests/common.py b/tests/common.py index 70afae75155..5527a26b63e 100644 --- a/tests/common.py +++ b/tests/common.py @@ -210,9 +210,9 @@ def mock_state_change_event(hass, new_state, old_state=None): hass.bus.fire(EVENT_STATE_CHANGED, event_data) -def mock_http_component(hass): +def mock_http_component(hass, api_password=None): """Mock the HTTP component.""" - hass.http = MagicMock() + hass.http = MagicMock(api_password=api_password) hass.config.components.add('http') hass.http.views = {} @@ -229,7 +229,8 @@ def mock_http_component(hass): def mock_http_component_app(hass, api_password=None): """Create an aiohttp.web.Application instance for testing.""" - hass.http = MagicMock(api_password=api_password) + if 'http' not in hass.config.components: + mock_http_component(hass, api_password) app = web.Application(middlewares=[auth_middleware], loop=hass.loop) app['hass'] = hass app[KEY_USE_X_FORWARDED_FOR] = False diff --git a/tests/components/config/__init__.py b/tests/components/config/__init__.py new file mode 100644 index 00000000000..53629c7e8f7 --- /dev/null +++ b/tests/components/config/__init__.py @@ -0,0 +1 @@ +"""Tests for the config component.""" diff --git a/tests/components/config/test_hassbian.py b/tests/components/config/test_hassbian.py new file mode 100644 index 00000000000..5ed48fa7794 --- /dev/null +++ b/tests/components/config/test_hassbian.py @@ -0,0 +1,70 @@ +"""Test hassbian config.""" +import asyncio +import os +from unittest.mock import patch + +from homeassistant.bootstrap import async_setup_component +from homeassistant.components.config.hassbian import ( + HassbianSuitesView, HassbianSuiteInstallView) +from tests.common import ( + mock_http_component, mock_http_component_app) + + +def test_setup_check_env_prevents_load(hass, loop): + """Test it does not set up hassbian if environment var not present.""" + mock_http_component(hass) + with patch.dict(os.environ, clear=True): + loop.run_until_complete(async_setup_component(hass, 'config', {})) + assert 'config' in hass.config.components + assert HassbianSuitesView.name not in hass.http.views + assert HassbianSuiteInstallView.name not in hass.http.views + + +def test_setup_check_env_works(hass, loop): + """Test it sets up hassbian if environment var present.""" + mock_http_component(hass) + with patch.dict(os.environ, {'FORCE_HASSBIAN': '1'}): + loop.run_until_complete(async_setup_component(hass, 'config', {})) + assert 'config' in hass.config.components + assert HassbianSuitesView.name in hass.http.views + assert HassbianSuiteInstallView.name in hass.http.views + + +@asyncio.coroutine +def test_get_suites(hass, test_client): + """Test getting suites.""" + app = mock_http_component_app(hass) + + with patch.dict(os.environ, {'FORCE_HASSBIAN': '1'}): + yield from async_setup_component(hass, 'config', {}) + + hass.http.views[HassbianSuitesView.name].register(app.router) + + client = yield from test_client(app) + resp = yield from client.get('/api/config/hassbian/suites') + assert resp.status == 200 + result = yield from resp.json() + + assert 'mosquitto' in result + info = result['mosquitto'] + assert info['state'] == 'installing' + assert info['description'] == 'Mosquitto is an MQTT broker.' + + +@asyncio.coroutine +def test_install_suite(hass, test_client): + """Test getting suites.""" + app = mock_http_component_app(hass) + + with patch.dict(os.environ, {'FORCE_HASSBIAN': '1'}): + yield from async_setup_component(hass, 'config', {}) + + hass.http.views[HassbianSuiteInstallView.name].register(app.router) + + client = yield from test_client(app) + resp = yield from client.post( + '/api/config/hassbian/suites/openzwave/install') + assert resp.status == 200 + result = yield from resp.json() + + assert result == {"status": "ok"} diff --git a/tests/components/config/test_init.py b/tests/components/config/test_init.py new file mode 100644 index 00000000000..1194c6c2b3d --- /dev/null +++ b/tests/components/config/test_init.py @@ -0,0 +1,18 @@ +"""Test config init.""" +import pytest + +from homeassistant.bootstrap import async_setup_component + +from tests.common import mock_http_component + + +@pytest.fixture(autouse=True) +def stub_http(hass): + """Stub the HTTP component.""" + mock_http_component(hass) + + +def test_config_setup(hass, loop): + """Test it sets up hassbian.""" + loop.run_until_complete(async_setup_component(hass, 'config', {})) + assert 'config' in hass.config.components From a25e394a1169be9b01ac2042abd672b839dc925b Mon Sep 17 00:00:00 2001 From: Paulus Schoutsen Date: Sat, 11 Feb 2017 19:25:20 -0800 Subject: [PATCH 036/196] Upgrade AppleTV dep to 0.1.4 --- homeassistant/components/media_player/apple_tv.py | 2 +- requirements_all.txt | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/homeassistant/components/media_player/apple_tv.py b/homeassistant/components/media_player/apple_tv.py index 2f47b1ba0a8..982ca6af894 100644 --- a/homeassistant/components/media_player/apple_tv.py +++ b/homeassistant/components/media_player/apple_tv.py @@ -23,7 +23,7 @@ import homeassistant.helpers.config_validation as cv import homeassistant.util.dt as dt_util -REQUIREMENTS = ['pyatv==0.1.3'] +REQUIREMENTS = ['pyatv==0.1.4'] _LOGGER = logging.getLogger(__name__) diff --git a/requirements_all.txt b/requirements_all.txt index df814a8b55c..777ccc2d0c4 100755 --- a/requirements_all.txt +++ b/requirements_all.txt @@ -418,7 +418,7 @@ pyasn1-modules==0.0.8 pyasn1==0.2.2 # homeassistant.components.media_player.apple_tv -pyatv==0.1.3 +pyatv==0.1.4 # homeassistant.components.device_tracker.bbox # homeassistant.components.sensor.bbox From 533d28ce4062089da122a58b86cca37063ea6aac Mon Sep 17 00:00:00 2001 From: Philipp Schmitt Date: Sun, 12 Feb 2017 11:22:55 +0100 Subject: [PATCH 037/196] [lock.nuki] Fix Nuki lock for Python 3.4 and 3.5 (#5899) --- homeassistant/components/lock/nuki.py | 2 +- requirements_all.txt | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/homeassistant/components/lock/nuki.py b/homeassistant/components/lock/nuki.py index b167c00b9bc..33058c86239 100644 --- a/homeassistant/components/lock/nuki.py +++ b/homeassistant/components/lock/nuki.py @@ -14,7 +14,7 @@ from homeassistant.util import Throttle import homeassistant.helpers.config_validation as cv -REQUIREMENTS = ['pynuki==1.2'] +REQUIREMENTS = ['pynuki==1.2.1'] _LOGGER = logging.getLogger(__name__) diff --git a/requirements_all.txt b/requirements_all.txt index 777ccc2d0c4..cff59176145 100755 --- a/requirements_all.txt +++ b/requirements_all.txt @@ -487,7 +487,7 @@ pynetgear==0.3.3 pynetio==0.1.6 # homeassistant.components.lock.nuki -pynuki==1.2 +pynuki==1.2.1 # homeassistant.components.sensor.nut pynut2==2.1.2 From 4af9d0f9eac791113821f63d8171cf2a04585b6c Mon Sep 17 00:00:00 2001 From: happyleavesaoc Date: Sun, 12 Feb 2017 12:49:02 -0500 Subject: [PATCH 038/196] bump myusps version (#5911) --- homeassistant/components/sensor/usps.py | 2 +- requirements_all.txt | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/homeassistant/components/sensor/usps.py b/homeassistant/components/sensor/usps.py index 680b4e4142d..5c2bb84daa1 100644 --- a/homeassistant/components/sensor/usps.py +++ b/homeassistant/components/sensor/usps.py @@ -19,7 +19,7 @@ from homeassistant.util import Throttle from homeassistant.util.dt import now, parse_datetime import homeassistant.helpers.config_validation as cv -REQUIREMENTS = ['myusps==1.0.2'] +REQUIREMENTS = ['myusps==1.0.3'] _LOGGER = logging.getLogger(__name__) diff --git a/requirements_all.txt b/requirements_all.txt index cff59176145..09de26131f3 100755 --- a/requirements_all.txt +++ b/requirements_all.txt @@ -332,7 +332,7 @@ miflora==0.1.15 mutagen==1.36.2 # homeassistant.components.sensor.usps -myusps==1.0.2 +myusps==1.0.3 # homeassistant.components.discovery netdisco==0.8.2 From f8be731891b45f25adc112cfb2e3e73ed6d26d79 Mon Sep 17 00:00:00 2001 From: Pascal Bach Date: Sun, 12 Feb 2017 18:55:17 +0100 Subject: [PATCH 039/196] [google] Update google component dependencies (#5904) --- homeassistant/components/google.py | 4 ++-- requirements_all.txt | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/homeassistant/components/google.py b/homeassistant/components/google.py index 3dbc2c1a1ec..c23113a962e 100644 --- a/homeassistant/components/google.py +++ b/homeassistant/components/google.py @@ -25,8 +25,8 @@ from homeassistant.helpers.event import track_time_change from homeassistant.util import convert, dt REQUIREMENTS = [ - 'google-api-python-client==1.5.5', - 'oauth2client==3.0.0', + 'google-api-python-client==1.6.2', + 'oauth2client==4.0.0', ] _LOGGER = logging.getLogger(__name__) diff --git a/requirements_all.txt b/requirements_all.txt index 09de26131f3..a3ebe67dcb0 100755 --- a/requirements_all.txt +++ b/requirements_all.txt @@ -171,7 +171,7 @@ gTTS-token==1.1.1 gntp==1.0.3 # homeassistant.components.google -google-api-python-client==1.5.5 +google-api-python-client==1.6.2 # homeassistant.components.sensor.google_travel_time googlemaps==2.4.4 @@ -341,7 +341,7 @@ netdisco==0.8.2 neurio==0.3.1 # homeassistant.components.google -oauth2client==3.0.0 +oauth2client==4.0.0 # homeassistant.components.sensor.openevse openevsewifi==0.4 From 2103bfc8244f5de113060500f167315e6e89644d Mon Sep 17 00:00:00 2001 From: Jose Juan Montes Date: Sun, 12 Feb 2017 20:03:53 +0100 Subject: [PATCH 040/196] Fixed proximity zone incorrectly using name instead of zone setting. (#5862) * Fixed proximity zone incorrectly using name instead of zone setting. * Fixed proximity tests to suit change. --- homeassistant/components/proximity.py | 2 +- tests/components/test_proximity.py | 17 ++++++++++++----- 2 files changed, 13 insertions(+), 6 deletions(-) diff --git a/homeassistant/components/proximity.py b/homeassistant/components/proximity.py index 73e72149b37..18548dc203b 100644 --- a/homeassistant/components/proximity.py +++ b/homeassistant/components/proximity.py @@ -63,7 +63,7 @@ def setup_proximity_component(hass, name, config): proximity_zone = name unit_of_measurement = config.get( CONF_UNIT_OF_MEASUREMENT, hass.config.units.length_unit) - zone_id = 'zone.{}'.format(proximity_zone) + zone_id = 'zone.{}'.format(config.get(CONF_ZONE)) proximity = Proximity(hass, proximity_zone, DEFAULT_DIST_TO_ZONE, DEFAULT_DIR_OF_TRAVEL, DEFAULT_NEAREST, diff --git a/tests/components/test_proximity.py b/tests/components/test_proximity.py index 1a1033ab31d..532a5e10ab4 100644 --- a/tests/components/test_proximity.py +++ b/tests/components/test_proximity.py @@ -394,6 +394,7 @@ class TestProximity(unittest.TestCase): 'device_tracker.test2' ], 'tolerance': '1', + 'zone': 'home' } } }) @@ -445,7 +446,9 @@ class TestProximity(unittest.TestCase): 'devices': [ 'device_tracker.test1', 'device_tracker.test2' - ] + ], + 'zone': 'home' + } } }) @@ -497,7 +500,8 @@ class TestProximity(unittest.TestCase): 'devices': [ 'device_tracker.test1', 'device_tracker.test2' - ] + ], + 'zone': 'home' } } }) @@ -538,7 +542,8 @@ class TestProximity(unittest.TestCase): 'devices': [ 'device_tracker.test1', 'device_tracker.test2' - ] + ], + 'zone': 'home' } } }) @@ -601,7 +606,8 @@ class TestProximity(unittest.TestCase): 'devices': [ 'device_tracker.test1' ], - 'tolerance': 1000 + 'tolerance': 1000, + 'zone': 'home' } } }) @@ -654,7 +660,8 @@ class TestProximity(unittest.TestCase): 'devices': [ 'device_tracker.test1', 'device_tracker.test2' - ] + ], + 'zone': 'home' } } }) From e4bbe37112488368e98f5475118cfafceabc47e9 Mon Sep 17 00:00:00 2001 From: Adam Mills Date: Sun, 12 Feb 2017 14:08:06 -0500 Subject: [PATCH 041/196] Add device_class support to cover component (#5881) --- homeassistant/components/cover/__init__.py | 5 +++ homeassistant/components/cover/demo.py | 37 ++++++++++++++++------ homeassistant/components/cover/garadget.py | 5 +++ homeassistant/components/cover/zwave.py | 5 +++ 4 files changed, 42 insertions(+), 10 deletions(-) diff --git a/homeassistant/components/cover/__init__.py b/homeassistant/components/cover/__init__.py index 1dc6101f1e9..d27a1665635 100644 --- a/homeassistant/components/cover/__init__.py +++ b/homeassistant/components/cover/__init__.py @@ -33,6 +33,11 @@ ENTITY_ID_ALL_COVERS = group.ENTITY_ID_FORMAT.format('all_covers') ENTITY_ID_FORMAT = DOMAIN + '.{}' +DEVICE_CLASSES = [ + 'window', # Window control + 'garage', # Garage door control +] + _LOGGER = logging.getLogger(__name__) ATTR_CURRENT_POSITION = 'current_position' diff --git a/homeassistant/components/cover/demo.py b/homeassistant/components/cover/demo.py index 070c37a0e3c..484ff94f4f5 100644 --- a/homeassistant/components/cover/demo.py +++ b/homeassistant/components/cover/demo.py @@ -14,6 +14,7 @@ def setup_platform(hass, config, add_devices, discovery_info=None): DemoCover(hass, 'Kitchen Window'), DemoCover(hass, 'Hall Window', 10), DemoCover(hass, 'Living Room Window', 70, 50), + DemoCover(hass, 'Garage Door', device_class='garage'), ]) @@ -21,11 +22,13 @@ class DemoCover(CoverDevice): """Representation of a demo cover.""" # pylint: disable=no-self-use - def __init__(self, hass, name, position=None, tilt_position=None): + def __init__(self, hass, name, position=None, tilt_position=None, + device_class=None): """Initialize the cover.""" self.hass = hass self._name = name self._position = position + self._device_class = device_class self._set_position = None self._set_tilt_position = None self._tilt_position = tilt_position @@ -33,6 +36,10 @@ class DemoCover(CoverDevice): self._closing_tilt = True self._unsub_listener_cover = None self._unsub_listener_cover_tilt = None + if position is None: + self._closed = True + else: + self._closed = self.current_cover_position <= 0 @property def name(self): @@ -57,17 +64,20 @@ class DemoCover(CoverDevice): @property def is_closed(self): """Return if the cover is closed.""" - if self._position is not None: - if self.current_cover_position > 0: - return False - else: - return True - else: - return None + return self._closed + + @property + def device_class(self): + """Return the class of this device, from component DEVICE_CLASSES.""" + return self._device_class def close_cover(self, **kwargs): """Close the cover.""" - if self._position in (0, None): + if self._position == 0: + return + elif self._position is None: + self._closed = True + self.schedule_update_ha_state() return self._listen_cover() @@ -83,7 +93,11 @@ class DemoCover(CoverDevice): def open_cover(self, **kwargs): """Open the cover.""" - if self._position in (100, None): + if self._position == 100: + return + elif self._position is None: + self._closed = False + self.schedule_update_ha_state() return self._listen_cover() @@ -149,6 +163,9 @@ class DemoCover(CoverDevice): if self._position in (100, 0, self._set_position): self.stop_cover() + + self._closed = self.current_cover_position <= 0 + self.schedule_update_ha_state() def _listen_cover_tilt(self): diff --git a/homeassistant/components/cover/garadget.py b/homeassistant/components/cover/garadget.py index 1847e58c4a5..04df954aac6 100644 --- a/homeassistant/components/cover/garadget.py +++ b/homeassistant/components/cover/garadget.py @@ -168,6 +168,11 @@ class GaradgetCover(CoverDevice): else: return self._state == STATE_CLOSED + @property + def device_class(self): + """Return the class of this device, from component DEVICE_CLASSES.""" + return 'garage' + def get_token(self): """Get new token for usage during this session.""" args = { diff --git a/homeassistant/components/cover/zwave.py b/homeassistant/components/cover/zwave.py index 0e40b46a3f9..2d61af4d00e 100644 --- a/homeassistant/components/cover/zwave.py +++ b/homeassistant/components/cover/zwave.py @@ -140,3 +140,8 @@ class ZwaveGarageDoor(zwave.ZWaveDeviceEntity, CoverDevice): def open_cover(self): """Open the garage door.""" self._value.data = True + + @property + def device_class(self): + """Return the class of this device, from component DEVICE_CLASSES.""" + return 'garage' From 9c400de64bfe05c7886681671ce4d707839511db Mon Sep 17 00:00:00 2001 From: Greg Dowling Date: Sun, 12 Feb 2017 19:14:23 +0000 Subject: [PATCH 042/196] Bump pywemo - fix for latest bridge firmware. (#5921) --- homeassistant/components/wemo.py | 2 +- requirements_all.txt | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/homeassistant/components/wemo.py b/homeassistant/components/wemo.py index 3fea17ccee5..caa9d777571 100644 --- a/homeassistant/components/wemo.py +++ b/homeassistant/components/wemo.py @@ -14,7 +14,7 @@ from homeassistant.helpers import config_validation as cv from homeassistant.const import EVENT_HOMEASSISTANT_STOP -REQUIREMENTS = ['pywemo==0.4.11'] +REQUIREMENTS = ['pywemo==0.4.12'] DOMAIN = 'wemo' diff --git a/requirements_all.txt b/requirements_all.txt index a3ebe67dcb0..8ccd9097cb4 100755 --- a/requirements_all.txt +++ b/requirements_all.txt @@ -575,7 +575,7 @@ pyvera==0.2.23 pywebpush==0.6.1 # homeassistant.components.wemo -pywemo==0.4.11 +pywemo==0.4.12 # homeassistant.components.zabbix pyzabbix==0.7.4 From b2fae212cb27598de03a00f42f3321e9fc9deca5 Mon Sep 17 00:00:00 2001 From: Fabian Affolter Date: Sun, 12 Feb 2017 20:16:06 +0100 Subject: [PATCH 043/196] Fix name (#5912) --- homeassistant/components/mqtt/__init__.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/homeassistant/components/mqtt/__init__.py b/homeassistant/components/mqtt/__init__.py index e880be177e8..79c154ef223 100644 --- a/homeassistant/components/mqtt/__init__.py +++ b/homeassistant/components/mqtt/__init__.py @@ -237,7 +237,7 @@ def _setup_discovery(hass, config): _LOGGER.error("Unable to load MQTT discovery") return None - success = discovery.start(hass, conf[CONF_DISCOVERY_PREFIX], config) + success = discovery.async_start(hass, conf[CONF_DISCOVERY_PREFIX], config) return success From dc6a28a8b257e5ebb8571e21b5790abe9e49574d Mon Sep 17 00:00:00 2001 From: Andrey Date: Sun, 12 Feb 2017 21:19:15 +0200 Subject: [PATCH 044/196] Make hdmi_cec work with the new customize (#5916) --- homeassistant/components/hdmi_cec.py | 13 ++++++++----- 1 file changed, 8 insertions(+), 5 deletions(-) diff --git a/homeassistant/components/hdmi_cec.py b/homeassistant/components/hdmi_cec.py index a154bdf609e..5ed3b688672 100644 --- a/homeassistant/components/hdmi_cec.py +++ b/homeassistant/components/hdmi_cec.py @@ -21,10 +21,11 @@ from homeassistant.config import load_yaml_config_file from homeassistant.const import (EVENT_HOMEASSISTANT_START, STATE_UNKNOWN, EVENT_HOMEASSISTANT_STOP, STATE_ON, STATE_OFF, CONF_DEVICES, CONF_PLATFORM, - CONF_CUSTOMIZE, STATE_PLAYING, STATE_IDLE, + STATE_PLAYING, STATE_IDLE, STATE_PAUSED, CONF_HOST) from homeassistant.core import HomeAssistant, callback from homeassistant.helpers.entity import Entity +from homeassistant.helpers import customize REQUIREMENTS = ['pyCEC==0.4.13'] @@ -299,10 +300,12 @@ def setup(hass: HomeAssistant, base_config): """Called when new device is detected by HDMI network.""" key = DOMAIN + '.' + device.name hass.data[key] = device - discovery.load_platform(hass, base_config.get(core.DOMAIN).get( - CONF_CUSTOMIZE, {}).get(key, {}).get(CONF_PLATFORM, platform), - DOMAIN, discovered={ATTR_NEW: [key]}, - hass_config=base_config) + discovery.load_platform( + hass, + customize.get_overrides(hass, core.DOMAIN, key).get( + CONF_PLATFORM, platform), + DOMAIN, discovered={ATTR_NEW: [key]}, + hass_config=base_config) def _shutdown(call): hdmi_network.stop() From dab6d011ca7542111348ff2e840aab1fa563bb04 Mon Sep 17 00:00:00 2001 From: Paulus Schoutsen Date: Sun, 12 Feb 2017 11:31:46 -0800 Subject: [PATCH 045/196] Add check_config API (#5898) * Add check_config API * Add config panel to default config * Add tests * Lint * lint --- homeassistant/components/__init__.py | 10 +++++- homeassistant/components/config/__init__.py | 3 +- homeassistant/components/config/core.py | 31 ++++++++++++++++ homeassistant/config.py | 28 +++++++-------- tests/components/config/test_core.py | 39 +++++++++++++++++++++ tests/components/config/test_hassbian.py | 13 ++++--- tests/test_config.py | 11 +++--- 7 files changed, 107 insertions(+), 28 deletions(-) create mode 100644 homeassistant/components/config/core.py create mode 100644 tests/components/config/test_core.py diff --git a/homeassistant/components/__init__.py b/homeassistant/components/__init__.py index 0e9d554a579..2bb7af23662 100644 --- a/homeassistant/components/__init__.py +++ b/homeassistant/components/__init__.py @@ -156,10 +156,18 @@ def async_setup(hass, config): return try: - yield from conf_util.async_check_ha_config_file(hass) + errors = yield from conf_util.async_check_ha_config_file(hass) except HomeAssistantError: return + if errors: + notif = get_component('persistent_notification') + _LOGGER.error(errors) + notif.async_create( + hass, "Config error. See dev-info panel for details.", + "Config validating", "{0}.check_config".format(ha.DOMAIN)) + return + if call.service == SERVICE_HOMEASSISTANT_RESTART: hass.async_add_job(hass.async_stop(RESTART_EXIT_CODE)) diff --git a/homeassistant/components/config/__init__.py b/homeassistant/components/config/__init__.py index dc8946776f5..bf05ba9d99f 100644 --- a/homeassistant/components/config/__init__.py +++ b/homeassistant/components/config/__init__.py @@ -6,6 +6,7 @@ from homeassistant.components.frontend import register_built_in_panel DOMAIN = 'config' DEPENDENCIES = ['http'] +SECTIONS = ('core', 'hassbian') @asyncio.coroutine @@ -13,7 +14,7 @@ def async_setup(hass, config): """Setup the hassbian component.""" register_built_in_panel(hass, 'config', 'Configuration', 'mdi:settings') - for panel_name in ('hassbian',): + for panel_name in SECTIONS: panel = yield from async_prepare_setup_platform(hass, config, DOMAIN, panel_name) diff --git a/homeassistant/components/config/core.py b/homeassistant/components/config/core.py new file mode 100644 index 00000000000..15456ee74ad --- /dev/null +++ b/homeassistant/components/config/core.py @@ -0,0 +1,31 @@ +"""Component to interact with Hassbian tools.""" +import asyncio + +from homeassistant.components.http import HomeAssistantView +from homeassistant.config import async_check_ha_config_file + + +@asyncio.coroutine +def async_setup(hass): + """Setup the hassbian config.""" + hass.http.register_view(CheckConfigView) + return True + + +class CheckConfigView(HomeAssistantView): + """Hassbian packages endpoint.""" + + url = '/api/config/core/check_config' + name = 'api:config:core:check_config' + + @asyncio.coroutine + def post(self, request): + """Validate config and return results.""" + errors = yield from async_check_ha_config_file(request.app['hass']) + + state = 'invalid' if errors else 'valid' + + return self.json({ + "result": state, + "errors": errors, + }) diff --git a/homeassistant/config.py b/homeassistant/config.py index 101c1a1dc87..6c89c84b37b 100644 --- a/homeassistant/config.py +++ b/homeassistant/config.py @@ -53,6 +53,9 @@ introduction: # Enables the frontend frontend: +# Enables configuration UI +config: + http: # Uncomment this to add a password (recommended!) # api_password: PASSWORD @@ -463,22 +466,15 @@ def async_check_ha_config_file(hass): This method is a coroutine. """ - import homeassistant.components.persistent_notification as pn - proc = yield from asyncio.create_subprocess_exec( - sys.argv[0], - '--script', - 'check_config', - stdout=asyncio.subprocess.PIPE) + sys.executable, '-m', 'homeassistant', '--script', + 'check_config', '--config', hass.config.config_dir, + stdout=asyncio.subprocess.PIPE, loop=hass.loop) # Wait for the subprocess exit - (stdout_data, dummy) = yield from proc.communicate() + stdout_data, dummy = yield from proc.communicate() result = yield from proc.wait() - if result: - content = re.sub(r'\033\[[^m]*m', '', str(stdout_data, 'utf-8')) - # Put error cleaned from color codes in the error log so it - # will be visible at the UI. - _LOGGER.error(content) - pn.async_create( - hass, "Config error. See dev-info panel for details.", - "Config validating", "{0}.check_config".format(CONF_CORE)) - raise HomeAssistantError("Invalid config") + + if not result: + return None + + return re.sub(r'\033\[[^m]*m', '', str(stdout_data, 'utf-8')) diff --git a/tests/components/config/test_core.py b/tests/components/config/test_core.py new file mode 100644 index 00000000000..6492f2fabe6 --- /dev/null +++ b/tests/components/config/test_core.py @@ -0,0 +1,39 @@ +"""Test hassbian config.""" +import asyncio +from unittest.mock import patch + +from homeassistant.bootstrap import async_setup_component +from homeassistant.components import config +from homeassistant.components.config.core import CheckConfigView +from tests.common import mock_http_component_app, mock_coro + + +@asyncio.coroutine +def test_validate_config_ok(hass, test_client): + """Test getting suites.""" + app = mock_http_component_app(hass) + with patch.object(config, 'SECTIONS', ['core']): + yield from async_setup_component(hass, 'config', {}) + + hass.http.views[CheckConfigView.name].register(app.router) + client = yield from test_client(app) + + with patch( + 'homeassistant.components.config.core.async_check_ha_config_file', + return_value=mock_coro(None)()): + resp = yield from client.post('/api/config/core/check_config') + + assert resp.status == 200 + result = yield from resp.json() + assert result['result'] == 'valid' + assert result['errors'] is None + + with patch( + 'homeassistant.components.config.core.async_check_ha_config_file', + return_value=mock_coro('beer')()): + resp = yield from client.post('/api/config/core/check_config') + + assert resp.status == 200 + result = yield from resp.json() + assert result['result'] == 'invalid' + assert result['errors'] == 'beer' diff --git a/tests/components/config/test_hassbian.py b/tests/components/config/test_hassbian.py index 5ed48fa7794..811a8add3e2 100644 --- a/tests/components/config/test_hassbian.py +++ b/tests/components/config/test_hassbian.py @@ -4,6 +4,7 @@ import os from unittest.mock import patch from homeassistant.bootstrap import async_setup_component +from homeassistant.components import config from homeassistant.components.config.hassbian import ( HassbianSuitesView, HassbianSuiteInstallView) from tests.common import ( @@ -13,7 +14,8 @@ from tests.common import ( def test_setup_check_env_prevents_load(hass, loop): """Test it does not set up hassbian if environment var not present.""" mock_http_component(hass) - with patch.dict(os.environ, clear=True): + with patch.dict(os.environ, clear=True), \ + patch.object(config, 'SECTIONS', ['hassbian']): loop.run_until_complete(async_setup_component(hass, 'config', {})) assert 'config' in hass.config.components assert HassbianSuitesView.name not in hass.http.views @@ -23,7 +25,8 @@ def test_setup_check_env_prevents_load(hass, loop): def test_setup_check_env_works(hass, loop): """Test it sets up hassbian if environment var present.""" mock_http_component(hass) - with patch.dict(os.environ, {'FORCE_HASSBIAN': '1'}): + with patch.dict(os.environ, {'FORCE_HASSBIAN': '1'}), \ + patch.object(config, 'SECTIONS', ['hassbian']): loop.run_until_complete(async_setup_component(hass, 'config', {})) assert 'config' in hass.config.components assert HassbianSuitesView.name in hass.http.views @@ -35,7 +38,8 @@ def test_get_suites(hass, test_client): """Test getting suites.""" app = mock_http_component_app(hass) - with patch.dict(os.environ, {'FORCE_HASSBIAN': '1'}): + with patch.dict(os.environ, {'FORCE_HASSBIAN': '1'}), \ + patch.object(config, 'SECTIONS', ['hassbian']): yield from async_setup_component(hass, 'config', {}) hass.http.views[HassbianSuitesView.name].register(app.router) @@ -56,7 +60,8 @@ def test_install_suite(hass, test_client): """Test getting suites.""" app = mock_http_component_app(hass) - with patch.dict(os.environ, {'FORCE_HASSBIAN': '1'}): + with patch.dict(os.environ, {'FORCE_HASSBIAN': '1'}), \ + patch.object(config, 'SECTIONS', ['hassbian']): yield from async_setup_component(hass, 'config', {}) hass.http.views[HassbianSuiteInstallView.name].register(app.router) diff --git a/tests/test_config.py b/tests/test_config.py index 2ad25dece11..a796cc615ef 100644 --- a/tests/test_config.py +++ b/tests/test_config.py @@ -396,16 +396,15 @@ class TestConfig(unittest.TestCase): process_mock = mock.MagicMock() attrs = { 'communicate.return_value': - mock_generator((r'\033[hellom'.encode('utf-8'), 'error')), + mock_generator(('\033[34mhello'.encode('utf-8'), 'error')), 'wait.return_value': mock_generator(1)} process_mock.configure_mock(**attrs) mock_create.return_value = mock_generator(process_mock) - with self.assertRaises(HomeAssistantError): - run_coroutine_threadsafe( - config_util.async_check_ha_config_file(self.hass), - self.hass.loop - ).result() + assert run_coroutine_threadsafe( + config_util.async_check_ha_config_file(self.hass), + self.hass.loop + ).result() == 'hello' # pylint: disable=redefined-outer-name From 780173befb54c252e57d5dafd7c57fd058f092d1 Mon Sep 17 00:00:00 2001 From: Paulus Schoutsen Date: Sun, 12 Feb 2017 11:35:36 -0800 Subject: [PATCH 046/196] Update frontend (#5923) --- homeassistant/components/frontend/version.py | 8 ++++---- .../frontend/www_static/frontend.html | 14 +++++++++++++- .../frontend/www_static/frontend.html.gz | Bin 138152 -> 138229 bytes .../www_static/home-assistant-polymer | 2 +- .../www_static/panels/ha-panel-config.html | 2 +- .../www_static/panels/ha-panel-config.html.gz | Bin 3470 -> 4566 bytes .../www_static/panels/ha-panel-dev-info.html | 2 +- .../panels/ha-panel-dev-info.html.gz | Bin 1229 -> 1227 bytes .../www_static/panels/ha-panel-logbook.html | 2 +- .../panels/ha-panel-logbook.html.gz | Bin 8001 -> 8006 bytes .../frontend/www_static/service_worker.js | 2 +- .../frontend/www_static/service_worker.js.gz | Bin 2338 -> 2335 bytes 12 files changed, 22 insertions(+), 10 deletions(-) diff --git a/homeassistant/components/frontend/version.py b/homeassistant/components/frontend/version.py index 1832564b98f..5f039e387c1 100644 --- a/homeassistant/components/frontend/version.py +++ b/homeassistant/components/frontend/version.py @@ -2,18 +2,18 @@ FINGERPRINTS = { "core.js": "adfeb513cf650acf763e284d76a48d6b", - "frontend.html": "cfd75c944ab14912cfbb4fdd9027579c", + "frontend.html": "addef1d5c8990c9443e97adefd19cc63", "mdi.html": "c1dde43ccf5667f687c418fc8daf9668", "micromarkdown-js.html": "93b5ec4016f0bba585521cf4d18dec1a", - "panels/ha-panel-config.html": "fb50a25da4b4cfbb0d9a74bb22a31db9", + "panels/ha-panel-config.html": "e669c4c0b00eeddd8e05afcac11525fe", "panels/ha-panel-dev-event.html": "5c82300b3cf543a92cf4297506e450e7", - "panels/ha-panel-dev-info.html": "0469024d94d6270a8680df2be44ba916", + "panels/ha-panel-dev-info.html": "1e305a9af8fd6e7be77f3ddf215c336f", "panels/ha-panel-dev-service.html": "9f749635e518a4ca7991975bdefdb10a", "panels/ha-panel-dev-state.html": "7d069ba8fd5379fa8f59858b8c0a7473", "panels/ha-panel-dev-template.html": "2b618508510afa5281c9ecae0c3a3dbd", "panels/ha-panel-history.html": "8955c1d093a2c417c89ed90dd627c7d3", "panels/ha-panel-iframe.html": "d920f0aa3c903680f2f8795e2255daab", - "panels/ha-panel-logbook.html": "f36297a894524518fa70883f264492b0", + "panels/ha-panel-logbook.html": "7eb06cf9fdeab6683bcd755276f571aa", "panels/ha-panel-map.html": "9c8c7924ba8f731560c9f4093835cc26", "websocket_test.html": "575de64b431fe11c3785bf96d7813450" } diff --git a/homeassistant/components/frontend/www_static/frontend.html b/homeassistant/components/frontend/www_static/frontend.html index 45c229c8d01..d19dadd50a0 100644 --- a/homeassistant/components/frontend/www_static/frontend.html +++ b/homeassistant/components/frontend/www_static/frontend.html @@ -347,6 +347,16 @@ window.hassUtil.binarySensorIcon = function (state) { } }; +window.hassUtil.coverIcon = function (state) { + var open = state.state && state.state === 'open'; + switch (state.attributes.device_class) { + case 'garage': + return open ? 'mdi:garage-open' : 'mdi:garage'; + default: + return open ? 'mdi:window-open' : 'mdi:window-closed'; + } +}; + window.hassUtil.stateIcon = function (state) { if (!state) { return window.hassUtil.DEFAULT_ICON; @@ -365,6 +375,8 @@ window.hassUtil.stateIcon = function (state) { } } else if (domain === 'binary_sensor') { return window.hassUtil.binarySensorIcon(state); + } else if (domain === 'cover') { + return window.hassUtil.coverIcon(state); } return window.hassUtil.domainIcon(domain, state.state); @@ -600,4 +612,4 @@ this.currentTarget=t,this.defaultPrevented=!1,this.eventPhase=Event.AT_TARGET,th this.hass.callService('media_player', service, serviceData); }, }); -}()); \ No newline at end of file +}()); \ No newline at end of file diff --git a/homeassistant/components/frontend/www_static/frontend.html.gz b/homeassistant/components/frontend/www_static/frontend.html.gz index 765e7b749f2793c79598663c8bea7704d33a13c7..f684d31fba3ab83ebb519e77ec7e170194207cba 100644 GIT binary patch delta 111344 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�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

    5$DK6FEd}yc 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 z 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

    BJq{^!=xk5KaR00B6r|1mp}K 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 ajVc29$9#T=k{sN<4*owGb?jAcmIwe#Bn7ts diff --git a/homeassistant/components/frontend/www_static/home-assistant-polymer b/homeassistant/components/frontend/www_static/home-assistant-polymer index ba48e40a2bb..a6b2c369829 160000 --- a/homeassistant/components/frontend/www_static/home-assistant-polymer +++ b/homeassistant/components/frontend/www_static/home-assistant-polymer @@ -1 +1 @@ -Subproject commit ba48e40a2bba273b1cdcdf637ecbef4f4db14284 +Subproject commit a6b2c369829abce33e64399418ae9d645ec5d9c6 diff --git a/homeassistant/components/frontend/www_static/panels/ha-panel-config.html b/homeassistant/components/frontend/www_static/panels/ha-panel-config.html index aa49194bfbc..5de51d98e34 100644 --- a/homeassistant/components/frontend/www_static/panels/ha-panel-config.html +++ b/homeassistant/components/frontend/www_static/panels/ha-panel-config.html @@ -1,4 +1,4 @@ -

    \ No newline at end of file + clear: both;white-space:pre-wrap}
    About


    Home Assistant
    [[hass.config.core.version]]

    Path to configuration.yaml: [[hass.config.core.config_dir]]

    Developed by a bunch of awesome people.

    Published under the MIT license
    Source: server — frontend-ui

    Built using Python 3, Polymer [[polymerVersion]], Icons by Google and MaterialDesignIcons.com.

    The following errors have been logged this session:

    [[errorLog]]
    \ No newline at end of file diff --git a/homeassistant/components/frontend/www_static/panels/ha-panel-dev-info.html.gz b/homeassistant/components/frontend/www_static/panels/ha-panel-dev-info.html.gz index 2a297bf2c7e2e5badbd10dd219a9ecd66642fad2..89c8a73c1ad07084598a650a3c6cbe2e56a36570 100644 GIT binary patch delta 448 zcmV;x0YCoD3CjrwABzYGa=4(e2N(l??^XMv(*{`=qU0V0-EOyu+hI+!w7%l&_ro*$ zKH4w70w2SZsMtSATL-(NRNjvuqQ(UOjnWyF;UUzV(I!f_;?u&b==rU!;(0!@A7_3~ zYi`rzbjV>cjYAlP>`u-e2r;eQUE}H9rB8Qy;kCoVcxQVZvJ+nc3*rW4h8jY)kJ^y! zapxfWEsu=p7o#Rmi!Vq>LAHy3jWiu(-=6i0gEoH^@Q_mz>;ro0{DhhkJjhtTIMjX$ z%z580B%&-x6S9&7B#PT?zK_#N9`$`T?-!4j?o435hbK=Uq04SV+W!(t*%_S87lWrm z4lDlFN_9(<$c-sHO8*?ivjbGnbmp)S+$BQG633jYP5qh&Q43IG5HP2`sV delta 450 zcmV;z0X_c93C#%yABzYGNS~3h2N(l?4`HT?Uv%0a>q3;>qrltkHgP+wX`a?seEoiS zX5U92i?6`P6i8U?pQNvY-BCL4M-b6tg8y;Hsp$Dl%anp*o$m=q`fRYuXv+$MrC*iHD|Pm(yjQk@G5$KYpZyskL*X5 z-_x7hG&vn~m`vjkMlrjSv$bQQsWBSFY%hTcu5>t?W?P4QM2ido0{o|}XY5#*UzqL}`(j;=@%jbXi2pZ*78uQ%g8Grrif-lA?evDI`CnQ+y?0hpyq%C;qEF s=AQ>=J%UPjpX9n#vuHM-_x+si \ No newline at end of file + */.pika-single{z-index:9999;display:block;position:relative;color:#333;background:#fff;border:1px solid #ccc;border-bottom-color:#bbb;font-family:"Helvetica Neue",Helvetica,Arial,sans-serif}.pika-single:after,.pika-single:before{content:" ";display:table}.pika-single:after{clear:both}.pika-single.is-hidden{display:none}.pika-single.is-bound{position:absolute;box-shadow:0 5px 15px -5px rgba(0,0,0,.5)}.pika-lendar{float:left;width:240px;margin:8px}.pika-title{position:relative;text-align:center}.pika-label{display:inline-block;position:relative;z-index:9999;overflow:hidden;margin:0;padding:5px 3px;font-size:14px;line-height:20px;font-weight:700;background-color:#fff}.pika-title select{cursor:pointer;position:absolute;z-index:9998;margin:0;left:0;top:5px;filter:alpha(opacity=0);opacity:0}.pika-next,.pika-prev{display:block;cursor:pointer;position:relative;outline:0;border:0;padding:0;width:20px;height:30px;text-indent:20px;white-space:nowrap;overflow:hidden;background-color:transparent;background-position:center center;background-repeat:no-repeat;background-size:75% 75%;opacity:.5}.pika-next:hover,.pika-prev:hover{opacity:1}.is-rtl .pika-next,.pika-prev{float:left;background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAeCAYAAAAsEj5rAAAAUklEQVR42u3VMQoAIBADQf8Pgj+OD9hG2CtONJB2ymQkKe0HbwAP0xucDiQWARITIDEBEnMgMQ8S8+AqBIl6kKgHiXqQqAeJepBo/z38J/U0uAHlaBkBl9I4GwAAAABJRU5ErkJggg==)}.is-rtl .pika-prev,.pika-next{float:right;background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAeCAYAAAAsEj5rAAAAU0lEQVR42u3VOwoAMAgE0dwfAnNjU26bYkBCFGwfiL9VVWoO+BJ4Gf3gtsEKKoFBNTCoCAYVwaAiGNQGMUHMkjGbgjk2mIONuXo0nC8XnCf1JXgArVIZAQh5TKYAAAAASUVORK5CYII=)}.pika-next.is-disabled,.pika-prev.is-disabled{cursor:default;opacity:.2}.pika-select{display:inline-block}.pika-table{width:100%;border-collapse:collapse;border-spacing:0;border:0}.pika-table td,.pika-table th{width:14.285714285714286%;padding:0}.pika-table th{color:#999;font-size:12px;line-height:25px;font-weight:700;text-align:center}.pika-button{cursor:pointer;display:block;box-sizing:border-box;-moz-box-sizing:border-box;outline:0;border:0;margin:0;width:100%;padding:5px;color:#666;font-size:12px;line-height:15px;text-align:right;background:#f5f5f5}.pika-week{font-size:11px;color:#999}.is-today .pika-button{color:#3af;font-weight:700}.is-selected .pika-button{color:#fff;font-weight:700;background:#3af;box-shadow:inset 0 1px 3px #178fe5;border-radius:3px}.is-inrange .pika-button{background:#D5E9F7}.is-startrange .pika-button{color:#fff;background:#6CB31D;box-shadow:none;border-radius:3px}.is-endrange .pika-button{color:#fff;background:#3af;box-shadow:none;border-radius:3px}.is-disabled .pika-button,.is-outside-current-month .pika-button{pointer-events:none;cursor:default;color:#999;opacity:.3}.pika-button:hover{color:#fff;background:#ff8000;box-shadow:none;border-radius:3px}.pika-table abbr{border-bottom:none;cursor:help}} \ No newline at end of file diff --git a/homeassistant/components/frontend/www_static/panels/ha-panel-logbook.html.gz b/homeassistant/components/frontend/www_static/panels/ha-panel-logbook.html.gz index c81ae0bc4545bec3ebb536adf50165d822f0ac1d..63ac3760dba05e6c3cad46776236b2dadd10a73c 100644 GIT binary patch delta 571 zcmV-B0>u5nKE^%=ABzYGa=4(e2N@lI(wK@*5_qt*R$Noy81&tnD54xyD1*W-97AVw zLtAm`U>kUpFY6V)TzhVSmCn4=Q0IViy%9lAxRAa%#PeP7l=pRgCewtrOL@3*RXXxp z3&;3TKNgF^zf~5DH6lZJd5OR110bl4q%;D1KF>9Lv9Ps=!+Q0IwNiNy8Am*S*D6GM zo$Hiytv4ozMNn5E18nwWQpfKu04n9{fTFs*--q$RXAbGI!!|)-@OymwUR4TMe_fW+ zB*#3S>JOI0l$U|j$tRpA-Zv2tR?~~{@SM|T^p>uVJfZpuhTVBDN!PZ%H1`e^E?2^khn#E=b(Xo0i*&yjBq2hWk?R4KcJb0vdT{{q=B42l$xSMu49U>q;@~;uglB(dtO^A;A(%-lDD9!h>rq)l!Uixo3eD_ zsQr2VCAZ~I-+6rTs54s`Xe_)!+sYG^Ertp$-Srhcm#$nFp8STU>427c(S%g|qOO`8 z_3<~I9aMc8l#~~*HT4@?i1A-0B?O^go6WziwVbzTazEgvuUhDQ$pWd)zgEfEMNhny z#LLj{&b6T~OzB&L%S-tx$0NJ)w+$$=TQ=1G>W^|J#}{Y%HI7n{wjsY`yFuT*{XgL_ Jmp{KcVtvGV9 z2RzD`@(Ta0y*0o}2i|F@v%k6Ce4zJRNPisSnJ#$8`?@}dX+qnjJW#nR9rLY)WBiaG zi$&qnDvQJ#k@35{#9y@g5XeSS0)aiB=UTm3*xIXMy?Vr2sW6C)Bc5v&7QN1Y^~kx_ zn~}pJkgJdZc6u_YE(BL&S^7xOLs@!Pks5q?!1?zYx`ard!rz)_Yd42RAi&@@9?<)jzVK+YdZ%~%!(I!3x> zkVqzkgsvEn8wL%Uplm`J9hQ6@k{qwr6GSIf@n6#8n++@yfvw8bSg9CFVb=?)(3B-z z%@xv&n#|$N(Mw9#F-2EWyPx*a<>mc7Pc0R2wU21Yn@?24M*&L0TeUTRS-ND@K0N<= z+w$k`Jid6;fvpTK7G9xk`hd7hti!=S|Mkz4ckl(J|pl{v&AL{o(JMvZl E0OT(n^Z)<= diff --git a/homeassistant/components/frontend/www_static/service_worker.js b/homeassistant/components/frontend/www_static/service_worker.js index 61b5d020825..653fae485a6 100644 --- a/homeassistant/components/frontend/www_static/service_worker.js +++ b/homeassistant/components/frontend/www_static/service_worker.js @@ -1 +1 @@ -"use strict";function setOfCachedUrls(e){return e.keys().then(function(e){return e.map(function(e){return e.url})}).then(function(e){return new Set(e)})}function notificationEventCallback(e,t){firePushCallback({action:t.action,data:t.notification.data,tag:t.notification.tag,type:e},t.notification.data.jwt)}function firePushCallback(e,t){delete e.data.jwt,0===Object.keys(e.data).length&&e.data.constructor===Object&&delete e.data,fetch("/api/notify.html5/callback",{method:"POST",headers:new Headers({"Content-Type":"application/json",Authorization:"Bearer "+t}),body:JSON.stringify(e)})}var precacheConfig=[["/","d7f405a7eb08c79a23fc4dcfbdd434c1"],["/frontend/panels/dev-event-5c82300b3cf543a92cf4297506e450e7.html","1bb68c3df5c14307a2550a0cca39b435"],["/frontend/panels/dev-info-0469024d94d6270a8680df2be44ba916.html","35995794b5a909d517be812ad4f46ea8"],["/frontend/panels/dev-service-9f749635e518a4ca7991975bdefdb10a.html","1bc71eb7620c7b7198fd4b7976d6bc13"],["/frontend/panels/dev-state-7d069ba8fd5379fa8f59858b8c0a7473.html","18694d76e03e1194c734e9819923b70b"],["/frontend/panels/dev-template-2b618508510afa5281c9ecae0c3a3dbd.html","554e7f893ab24c8548813382142207d4"],["/frontend/panels/map-9c8c7924ba8f731560c9f4093835cc26.html","8ae4874622d23d995ddf2a8b0ffa8d80"],["/static/core-adfeb513cf650acf763e284d76a48d6b.js","f5fdf5f1f754e801f9f54ad31a3cc922"],["/static/frontend-cfd75c944ab14912cfbb4fdd9027579c.html","16ea30b8f7e66041968b48e0257f60ba"],["/static/mdi-c1dde43ccf5667f687c418fc8daf9668.html","6a3c9317736ca26e3390316335be9ba5"],["static/fonts/roboto/Roboto-Bold.ttf","d329cc8b34667f114a95422aaad1b063"],["static/fonts/roboto/Roboto-Light.ttf","7b5fb88f12bec8143f00e21bc3222124"],["static/fonts/roboto/Roboto-Medium.ttf","fe13e4170719c2fc586501e777bde143"],["static/fonts/roboto/Roboto-Regular.ttf","ac3f799d5bbaf5196fab15ab8de8431c"],["static/icons/favicon-192x192.png","419903b8422586a7e28021bbe9011175"],["static/icons/favicon.ico","04235bda7843ec2fceb1cbe2bc696cf4"],["static/images/card_media_player_bg.png","a34281d1c1835d338a642e90930e61aa"],["static/webcomponents-lite.min.js","32b5a9b7ada86304bec6b43d3f2194f0"]],cacheName="sw-precache-v2--"+(self.registration?self.registration.scope:""),ignoreUrlParametersMatching=[/^utm_/],addDirectoryIndex=function(e,t){var a=new URL(e);return"/"===a.pathname.slice(-1)&&(a.pathname+=t),a.toString()},createCacheKey=function(e,t,a,n){var c=new URL(e);return n&&c.toString().match(n)||(c.search+=(c.search?"&":"")+encodeURIComponent(t)+"="+encodeURIComponent(a)),c.toString()},isPathWhitelisted=function(e,t){if(0===e.length)return!0;var a=new URL(t).pathname;return e.some(function(e){return a.match(e)})},stripIgnoredUrlParameters=function(e,t){var a=new URL(e);return a.search=a.search.slice(1).split("&").map(function(e){return e.split("=")}).filter(function(e){return t.every(function(t){return!t.test(e[0])})}).map(function(e){return e.join("=")}).join("&"),a.toString()},hashParamName="_sw-precache",urlsToCacheKeys=new Map(precacheConfig.map(function(e){var t=e[0],a=e[1],n=new URL(t,self.location),c=createCacheKey(n,hashParamName,a,!1);return[n.toString(),c]}));self.addEventListener("install",function(e){e.waitUntil(caches.open(cacheName).then(function(e){return setOfCachedUrls(e).then(function(t){return Promise.all(Array.from(urlsToCacheKeys.values()).map(function(a){if(!t.has(a))return e.add(new Request(a,{credentials:"same-origin",redirect:"follow"}))}))})}).then(function(){return self.skipWaiting()}))}),self.addEventListener("activate",function(e){var t=new Set(urlsToCacheKeys.values());e.waitUntil(caches.open(cacheName).then(function(e){return e.keys().then(function(a){return Promise.all(a.map(function(a){if(!t.has(a.url))return e.delete(a)}))})}).then(function(){return self.clients.claim()}))}),self.addEventListener("fetch",function(e){if("GET"===e.request.method){var t,a=stripIgnoredUrlParameters(e.request.url,ignoreUrlParametersMatching);t=urlsToCacheKeys.has(a);var n="index.html";!t&&n&&(a=addDirectoryIndex(a,n),t=urlsToCacheKeys.has(a));var c="/";!t&&c&&"navigate"===e.request.mode&&isPathWhitelisted(["^((?!(static|api|local|service_worker.js|manifest.json)).)*$"],e.request.url)&&(a=new URL(c,self.location).toString(),t=urlsToCacheKeys.has(a)),t&&e.respondWith(caches.open(cacheName).then(function(e){return e.match(urlsToCacheKeys.get(a)).then(function(e){if(e)return e;throw Error("The cached response that was expected is missing.")})}).catch(function(t){return console.warn('Couldn\'t serve response for "%s" from cache: %O',e.request.url,t),fetch(e.request)}))}}),self.addEventListener("push",function(e){var t;e.data&&(t=e.data.json(),e.waitUntil(self.registration.showNotification(t.title,t).then(function(e){firePushCallback({type:"received",tag:t.tag,data:t.data},t.data.jwt)})))}),self.addEventListener("notificationclick",function(e){var t;notificationEventCallback("clicked",e),e.notification.close(),e.notification.data&&e.notification.data.url&&(t=e.notification.data.url,t&&e.waitUntil(clients.matchAll({type:"window"}).then(function(e){var a,n;for(a=0;asgd$ZEvg6wR@4X-;S+cBTcRG_q3`pF^xsP)JXVt=> zHBBLnGtsL`nxd`-Etq%ug^+VlpPRCE!Mka|teR>7!8f>WT`w?msNBtly$=>*`S^=f zQ{H)Z$G28+HTVbySMal~Emds_T}Wa7^YRiZ^FowmF61{CeB<5dqJj6TcD`M`5#7F1 z6Z8+h5=P+vcI5GWOx z6{P9W>tA_63DwNZhr{)!vaT=^D{1OxyJ0xo6X$C%a_%}~u`I@&dDp?*EXsH+*ETr* z%>vB4R;SMUcOO4F{v3pYraiUj{-b|(Z=4r(Wf05JCv?_1b;NR6t{okJZR^VMpRZ6z zQ~bAEJ9T~q(LghBPRyO>=e4>%{pZJbZv&e-)eNoZgLWyJ!Lk8qGY2*3Vm3WHbHdvd zcqnxg@-!w1L@|N1Ljm>BJWn#ol#V5h7)eDK$3ze*1>~SiX=Q2xGQEB>P*Kx zi?bYU6={^Rt)495kxCOF3@GK1Oj!gxqnw8H!u>IjCo8ky%Nk9sndi( zm{~wXlp)f=*B0gKSYu{ss#A0!BUE$DMxhuLOiCVxdvZ4ppll2(RhYt@qrp+cfTzL+ znsOuXU*cV>F6VEJT~L zoJCe6rIFwm>G>kX)4 zwO9+&Kp8|dC0HUd)H2R6kQD1T#ganVKNI!=W~)*(YiU9LUxLk5G3=8( z(pX;Se#ZfC#R8^Ido|jS!ss#_jhqv=g;EC%%nBrsj$xi1tOTvBk%%3~^NU%9HHwqS zd(ogogB12gAP*w-OwY!@ugv0NeC}hJ{f2~W>GS$krQrMYe#Wr8Y{^MXEe(GD@EZAQ z(vKZTPsp|+SPC<*PA zSG`7gsBusYhjK>}PE3~6EARH!l|hS4E9WQE?c+0N=vWv|ppvzM&mUgB*aXHk-ib4H z9(yA^&zF1V7VUfV<;xsHSt81y9^g}G*A6PM9!tF5*e7JN51jF~m`t{#U0W~Uv5`)! zee0$J-%bn5S6wjGUNrw$q)=Lq$aM3tjurKS7Uvh^B2wP*`E&iv)UiXTE=tt=*oP*- zk)yf3e`PkWo?z#K76;Tba_)7b>``4`>!RAI>YvfH2l+D>?YzUFFO!R%I&pj)mfKJD zCb`-UjW?)mf4n*{z(QxH)<9q24?Xv*`^foSk(G5n=wW_L_fy!d_HDu}enL0spH(}? z`||wG^Cq1v{2(Cn7K3AqF-OhtH!1}J-ZKF7TFgQGp zJot1Qp~3s6UKA|^sNQ|vG~zly8eX^$&2_IQ#5)h(NaAiscu? zs80{O!9N19J=t7h;Pw&jW4}2?9d&u~e?;QQ@lQO8zxWZj_B6NyaDU3dZ~h2SvMeks z;jbtbKY^+{Fzw@nRycou`N`>;UDHQ2=nqY65V3ZS_A2*&54!LpZt^B(`Y;N8Vs$OG znqr|KP4!dSz?>%+>$Ro#4p2Fd?+A*w=KS@x8O<>USJFE};qLDKQ&w&}9QDXI_E6kFi)5z06lVVC^R(xkhw^98G2`Jr%n8_LE(%&#(@Q^>& zcNeWKJ%6`fJTj)u>#Mgr7bPx|WMN86Wo6qlf!^`(rxhgsj-*dKct zbASKh{ixn|?`*J7*b9+ESC8K*Io%#>2w2DWZh&N2x8NQu_ozLxXv4FH^U-&Gmhbf9 zbzAFF_c=DuH8@w;COQ^5#Iu`}{Az-^f;C4b;%}SrZ6Z!iJk06}rvQOdfK`ai097I@ z$yJNJXHac2z6!cE*PGyujTyGqzI3WLpB=t&|6Di_zx{ChFcA247l%7<@;`UUdf%rM F003CTbkG0* literal 2338 zcmV+-3ElP|iwFp4o1Rz#19N3^c4=c}Uw3bEYh`jSYI6XkSow3?xE20a6i!zmYljh>GmAl!n_rZcMAAhlG z$~*7w_|^)p1|PxT3Vyb=rK(M#3(4(&US2|FUhuLMTz+%GH{Ojd8hF2I=iAjA-t9Xz zLI2<@ZaDsLS59Epe8XoC*Kx@=*Go8sJO7a_!PhIZW7>i4&LRaR7(jnFJN$4uoxT%a zL7E=D{*@P$P|eJII9z`!>k1>WlBRC98-~L@alQs4=dLs6%VOM_cOA^lqKwCKZG+?A zEWpfbb?Ur-_wkeC&w(pw+Ea_}Kl*3)#(7a!2C*D{LT8;*hcB1q+R^dXwyqri`3i+J z#eciCQ|DLU4KxGi#N2tlsMYo9KR>>E8`#XLW@tqpv`gL$mJLXoIjBJwv+3EHGj@DO zrJ98?PeFv4OmiMlEt!&9D8(p~#5wozL)~;{sqvCmP_|Q+D3qy4NuFuNM4G3GN`xfz2bv5wFiKUJ3=M2xl209eiz3u8uWkmL@ty7qXD(9J7%tN;s7=kD@)f8wW;Gt2CB5V_XoH6HHwp zm{tliEyW~~+Yn&p&`_XjkR%}^d6Eg1K^VoUPC~)=q%Tx4l0+$Bs9MKKg5PARWF*rv zQ(Wgsl5GShXkJc9n$kq_C;>|IkdlPbSODfmUlbdw(dc&E)S@=^_(S(I`n4`qV2rkP zOru=NOi*Su62f>MW7s(7iij|wKNI!3n9a>vRw`mGvP=`KFPUMv>M(=|6P`vuj`?jO9Fi7l0)t3Q{Y~K?pSJ)tF$S`~fHdjS; zgq=fUd7b+m2fXDAm^$s%XhRC4%V;!mPTUqs9W*d2kU%b zP9pDlgAxr=*c*;Kh}1JZ8~?sCi;MBO&z1TO3E9%;^{Yz3_v!tNVR_k-6Q5cd{QTiH z^3|jtJCL4`ZF#WdW?rH6phYGGcSOA5(7j(inHtaMfvG=sl;?VPzH9*7UNEFq}XoYXzS_yn3+-jBC6T zXX-rmhI^hb_slKY_vp))Ifk-CltDefr_in)RA4=pc)hVt!pS~x#@k{t*^YK?y@1C? zI==R;n+|+CEi7Mk!Bl(E{9}iSw2)kanSjHW%vpE+;m9R_`wTtouO^^JBW7!fv&16K3%fvO)i> z+A-dj=Xahr>EvPEb#wV^n^YBI>J&J~;yCK~yOu$4#S8PfGDYcj9<%}0cjayy#qoo| z;c?`_r`re(-Z%B4XdyuL?(?SM*8$S-!hL{daLLOR;4$Vw1bJ5l7-odQR?s$_=%Z_4 z`~d%1*$m+R4ML~T>w=f_z z{IR~fXl?2FyZz#kF>PL7z1_JeagihoQ(7WFg!%Bcrn_x%Fx#QH1m&zRW$Zo7`rgL= z*vpvv`xoy=^}c&&gMGqYh#b0l{7%W~_E-dv4O6^xxzNlvB)8w-K6AK6U-H?xp2b&wi(|h{N%*Ltgdhh;5Y?Xh1d*G zC9;xSwb*+G)h6Sspj&gj3GUdKVQcM6r+V|*;T!kQg#+>1562G!fnRrVxbr6e1NxR6 IvZoXP07y@V7XSbN From e5085bf6203a55330c6c9f49b048ba765dc20f6c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Pierre=20St=C3=A5hl?= Date: Sun, 12 Feb 2017 20:42:56 +0100 Subject: [PATCH 047/196] Add media_image to media_player component (#5754) --- .../components/media_player/__init__.py | 29 +++++++++++++++---- 1 file changed, 23 insertions(+), 6 deletions(-) diff --git a/homeassistant/components/media_player/__init__.py b/homeassistant/components/media_player/__init__.py index e3c3170f6f1..f4b828a0289 100644 --- a/homeassistant/components/media_player/__init__.py +++ b/homeassistant/components/media_player/__init__.py @@ -450,6 +450,25 @@ class MediaPlayerDevice(Entity): """Image url of current playing media.""" return None + @property + def media_image_hash(self): + """Hash value for media image.""" + url = self.media_image_url + + if url is not None: + return hashlib.md5(url.encode('utf-8')).hexdigest()[:5] + + return None + + @asyncio.coroutine + def async_get_media_image(self): + """Fetch media image of current playing image.""" + url = self.media_image_url + if url is None: + return None, None + + return (yield from _async_fetch_image(self.hass, url)) + @property def media_title(self): """Title of current playing media.""" @@ -808,14 +827,13 @@ class MediaPlayerDevice(Entity): if self.state == STATE_OFF: return None - url = self.media_image_url + image_hash = self.media_image_hash - if url is None: + if image_hash is None: return None return ENTITY_IMAGE_URL.format( - self.entity_id, self.access_token, - hashlib.md5(url.encode('utf-8')).hexdigest()[:5]) + self.entity_id, self.access_token, image_hash) @property def state_attributes(self): @@ -909,8 +927,7 @@ class MediaPlayerImageView(HomeAssistantView): if not authenticated: return web.Response(status=401) - data, content_type = yield from _async_fetch_image( - request.app['hass'], player.media_image_url) + data, content_type = yield from player.async_get_media_image() if data is None: return web.Response(status=500) From 675dd04e97cfdbc5cd6cd58a71bfdf74c793644b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Per=20Sandstr=C3=B6m?= Date: Sun, 12 Feb 2017 20:57:29 +0100 Subject: [PATCH 048/196] vasttrafik: update token on read error (#5875) --- homeassistant/components/sensor/vasttrafik.py | 22 ++++++++++++------- requirements_all.txt | 2 +- 2 files changed, 15 insertions(+), 9 deletions(-) diff --git a/homeassistant/components/sensor/vasttrafik.py b/homeassistant/components/sensor/vasttrafik.py index 8c7d4274495..9f62c8620de 100644 --- a/homeassistant/components/sensor/vasttrafik.py +++ b/homeassistant/components/sensor/vasttrafik.py @@ -14,7 +14,7 @@ import homeassistant.helpers.config_validation as cv from homeassistant.helpers.entity import Entity from homeassistant.util import Throttle -REQUIREMENTS = ['vtjp==0.1.11'] +REQUIREMENTS = ['vtjp==0.1.14'] _LOGGER = logging.getLogger(__name__) @@ -43,14 +43,15 @@ PLATFORM_SCHEMA = PLATFORM_SCHEMA.extend({ def setup_platform(hass, config, add_devices, discovery_info=None): """Setup the departure sensor.""" - from vasttrafik import JournyPlanner - planner = JournyPlanner( + import vasttrafik + planner = vasttrafik.JournyPlanner( config.get(CONF_KEY), config.get(CONF_SECRET)) sensors = [] for departure in config.get(CONF_DEPARTURES): sensors.append( VasttrafikDepartureSensor( + vasttrafik, planner, departure.get(CONF_NAME), departure.get(CONF_FROM), @@ -62,8 +63,9 @@ def setup_platform(hass, config, add_devices, discovery_info=None): class VasttrafikDepartureSensor(Entity): """Implementation of a Vasttrafik Departure Sensor.""" - def __init__(self, planner, name, departure, heading, delay): + def __init__(self, vasttrafik, planner, name, departure, heading, delay): """Initialize the sensor.""" + self._vasttrafik = vasttrafik self._planner = planner self._name = name or departure self._departure = planner.location_name(departure)[0] @@ -113,7 +115,11 @@ class VasttrafikDepartureSensor(Entity): @Throttle(MIN_TIME_BETWEEN_UPDATES) def update(self): """Get the departure board.""" - self._departureboard = self._planner.departureboard( - self._departure['id'], - direction=self._heading['id'] if self._heading else None, - date=datetime.now()+self._delay) + try: + self._departureboard = self._planner.departureboard( + self._departure['id'], + direction=self._heading['id'] if self._heading else None, + date=datetime.now()+self._delay) + except self._vasttrafik.Error: + _LOGGER.warning('Unable to read departure board, updating token') + self._planner.update_token() diff --git a/requirements_all.txt b/requirements_all.txt index 8ccd9097cb4..05faf93c1b8 100755 --- a/requirements_all.txt +++ b/requirements_all.txt @@ -681,7 +681,7 @@ volvooncall==0.1.1 vsure==0.11.1 # homeassistant.components.sensor.vasttrafik -vtjp==0.1.11 +vtjp==0.1.14 # homeassistant.components.media_player.panasonic_viera # homeassistant.components.media_player.webostv From 289767522bd9fb3405a191d62f6de102dbe82e91 Mon Sep 17 00:00:00 2001 From: Colin O'Dell Date: Sun, 12 Feb 2017 21:38:29 +0100 Subject: [PATCH 049/196] Update qnapstats library; add support for new verify_ssl config (#5919) --- homeassistant/components/sensor/qnap.py | 9 ++++++--- requirements_all.txt | 2 +- 2 files changed, 7 insertions(+), 4 deletions(-) diff --git a/homeassistant/components/sensor/qnap.py b/homeassistant/components/sensor/qnap.py index 51a83c9371b..95eece5779a 100644 --- a/homeassistant/components/sensor/qnap.py +++ b/homeassistant/components/sensor/qnap.py @@ -12,13 +12,13 @@ from homeassistant.components.sensor import PLATFORM_SCHEMA from homeassistant.helpers.entity import Entity from homeassistant.const import ( CONF_HOST, CONF_USERNAME, CONF_PASSWORD, CONF_PORT, CONF_SSL, - CONF_MONITORED_CONDITIONS, TEMP_CELSIUS) + CONF_VERIFY_SSL, CONF_MONITORED_CONDITIONS, TEMP_CELSIUS) from homeassistant.util import Throttle import homeassistant.helpers.config_validation as cv import voluptuous as vol -REQUIREMENTS = ['qnapstats==0.2.1'] +REQUIREMENTS = ['qnapstats==0.2.2'] _LOGGER = logging.getLogger(__name__) @@ -86,6 +86,7 @@ _MONITORED_CONDITIONS = list(_HEALTH_MON_COND.keys()) + \ PLATFORM_SCHEMA = PLATFORM_SCHEMA.extend({ vol.Required(CONF_HOST): cv.string, vol.Optional(CONF_SSL, default=False): cv.boolean, + vol.Optional(CONF_VERIFY_SSL, default=True): cv.boolean, vol.Optional(CONF_PORT, default=DEFAULT_PORT): cv.port, vol.Required(CONF_USERNAME): cv.string, vol.Required(CONF_PASSWORD): cv.string, @@ -175,7 +176,9 @@ class QNAPStatsAPI(object): protocol + "://" + config.get(CONF_HOST), config.get(CONF_PORT), config.get(CONF_USERNAME), - config.get(CONF_PASSWORD)) + config.get(CONF_PASSWORD), + verify_ssl=config.get(CONF_VERIFY_SSL) + ) self.data = {} diff --git a/requirements_all.txt b/requirements_all.txt index 05faf93c1b8..563ecadc5f4 100755 --- a/requirements_all.txt +++ b/requirements_all.txt @@ -581,7 +581,7 @@ pywemo==0.4.12 pyzabbix==0.7.4 # homeassistant.components.sensor.qnap -qnapstats==0.2.1 +qnapstats==0.2.2 # homeassistant.components.climate.radiotherm radiotherm==1.2 From 3f675afd5b3dbdd8a2807fd0fadcc298dbb5506d Mon Sep 17 00:00:00 2001 From: happyleavesaoc Date: Sun, 12 Feb 2017 15:47:12 -0500 Subject: [PATCH 050/196] ups sensor (#5890) --- .coveragerc | 1 + homeassistant/components/sensor/ups.py | 105 +++++++++++++++++++++++++ requirements_all.txt | 3 + 3 files changed, 109 insertions(+) create mode 100644 homeassistant/components/sensor/ups.py diff --git a/.coveragerc b/.coveragerc index 14f9a8b29f6..72acf1b91a1 100644 --- a/.coveragerc +++ b/.coveragerc @@ -358,6 +358,7 @@ omit = homeassistant/components/sensor/transmission.py homeassistant/components/sensor/twitch.py homeassistant/components/sensor/uber.py + homeassistant/components/sensor/ups.py homeassistant/components/sensor/usps.py homeassistant/components/sensor/vasttrafik.py homeassistant/components/sensor/waqi.py diff --git a/homeassistant/components/sensor/ups.py b/homeassistant/components/sensor/ups.py new file mode 100644 index 00000000000..0e358a6abbb --- /dev/null +++ b/homeassistant/components/sensor/ups.py @@ -0,0 +1,105 @@ +""" +Sensor for UPS packages. + +For more details about this platform, please refer to the documentation at +https://home-assistant.io/components/sensor.usps/ +""" +from collections import defaultdict +import logging +from datetime import timedelta + +import voluptuous as vol + +from homeassistant.components.sensor import PLATFORM_SCHEMA +from homeassistant.const import (CONF_NAME, CONF_USERNAME, CONF_PASSWORD, + ATTR_ATTRIBUTION) +from homeassistant.helpers.entity import Entity +from homeassistant.util import slugify +from homeassistant.util import Throttle +from homeassistant.util.dt import now, parse_date +import homeassistant.helpers.config_validation as cv + +REQUIREMENTS = ['upsmychoice==1.0.1'] + +_LOGGER = logging.getLogger(__name__) + +DOMAIN = 'ups' +COOKIE = 'upsmychoice_cookies.pickle' +CONF_UPDATE_INTERVAL = 'update_interval' +ICON = 'mdi:package-variant-closed' +STATUS_DELIVERED = 'delivered' + +PLATFORM_SCHEMA = PLATFORM_SCHEMA.extend({ + vol.Required(CONF_USERNAME): cv.string, + vol.Required(CONF_PASSWORD): cv.string, + vol.Optional(CONF_NAME): cv.string, + vol.Optional(CONF_UPDATE_INTERVAL, default=timedelta(seconds=1800)): ( + vol.All(cv.time_period, cv.positive_timedelta)), +}) + + +# pylint: disable=unused-argument +def setup_platform(hass, config, add_devices, discovery_info=None): + """Setup the UPS platform.""" + import upsmychoice + try: + cookie = hass.config.path(COOKIE) + session = upsmychoice.get_session(config.get(CONF_USERNAME), + config.get(CONF_PASSWORD), + cookie_path=cookie) + except upsmychoice.UPSError: + _LOGGER.exception('Could not connect to UPS My Choice') + return False + + add_devices([UPSSensor(session, config.get(CONF_NAME), + config.get(CONF_UPDATE_INTERVAL))]) + + +class UPSSensor(Entity): + """UPS Sensor.""" + + def __init__(self, session, name, interval): + """Initialize the sensor.""" + self._session = session + self._name = name + self._attributes = None + self._state = None + self.update = Throttle(interval)(self._update) + self.update() + + @property + def name(self): + """Return the name of the sensor.""" + return self._name or DOMAIN + + @property + def state(self): + """Return the state of the sensor.""" + return self._state + + def _update(self): + """Update device state.""" + import upsmychoice + status_counts = defaultdict(int) + for package in upsmychoice.get_packages(self._session): + status = slugify(package['status']) + skip = status == STATUS_DELIVERED and \ + parse_date(package['delivery_date']) < now().date() + if skip: + continue + status_counts[status] += 1 + self._attributes = { + ATTR_ATTRIBUTION: upsmychoice.ATTRIBUTION + } + self._attributes.update(status_counts) + self._state = sum(status_counts.values()) + + @property + def device_state_attributes(self): + """Return the state attributes.""" + return self._attributes + + @property + def icon(self): + """Icon to use in the frontend.""" + return ICON diff --git a/requirements_all.txt b/requirements_all.txt index 563ecadc5f4..36a6a978231 100755 --- a/requirements_all.txt +++ b/requirements_all.txt @@ -668,6 +668,9 @@ twilio==5.7.0 # homeassistant.components.sensor.uber uber_rides==0.2.7 +# homeassistant.components.sensor.ups +upsmychoice==1.0.1 + # homeassistant.components.device_tracker.unifi urllib3 From 64cb65a04edd3467ba02b0a19b961b447f9f25e2 Mon Sep 17 00:00:00 2001 From: happyleavesaoc Date: Sun, 12 Feb 2017 15:47:27 -0500 Subject: [PATCH 051/196] fedex sensor (#5891) * fedex sensor * fix fedex requirement --- .coveragerc | 1 + homeassistant/components/sensor/fedex.py | 105 +++++++++++++++++++++++ requirements_all.txt | 3 + 3 files changed, 109 insertions(+) create mode 100644 homeassistant/components/sensor/fedex.py diff --git a/.coveragerc b/.coveragerc index 72acf1b91a1..771cdcfe85b 100644 --- a/.coveragerc +++ b/.coveragerc @@ -303,6 +303,7 @@ omit = homeassistant/components/sensor/eliqonline.py homeassistant/components/sensor/emoncms.py homeassistant/components/sensor/fastdotcom.py + homeassistant/components/sensor/fedex.py homeassistant/components/sensor/fitbit.py homeassistant/components/sensor/fixer.py homeassistant/components/sensor/fritzbox_callmonitor.py diff --git a/homeassistant/components/sensor/fedex.py b/homeassistant/components/sensor/fedex.py new file mode 100644 index 00000000000..a0b5bbf5a0a --- /dev/null +++ b/homeassistant/components/sensor/fedex.py @@ -0,0 +1,105 @@ +""" +Sensor for Fedex packages. + +For more details about this platform, please refer to the documentation at +https://home-assistant.io/components/sensor.usps/ +""" +from collections import defaultdict +import logging +from datetime import timedelta + +import voluptuous as vol + +from homeassistant.components.sensor import PLATFORM_SCHEMA +from homeassistant.const import (CONF_NAME, CONF_USERNAME, CONF_PASSWORD, + ATTR_ATTRIBUTION) +from homeassistant.helpers.entity import Entity +from homeassistant.util import slugify +from homeassistant.util import Throttle +from homeassistant.util.dt import now, parse_date +import homeassistant.helpers.config_validation as cv + +REQUIREMENTS = ['fedexdeliverymanager==1.0.1'] + +_LOGGER = logging.getLogger(__name__) + +DOMAIN = 'fedex' +COOKIE = 'fedexdeliverymanager_cookies.pickle' +CONF_UPDATE_INTERVAL = 'update_interval' +ICON = 'mdi:package-variant-closed' +STATUS_DELIVERED = 'delivered' + +PLATFORM_SCHEMA = PLATFORM_SCHEMA.extend({ + vol.Required(CONF_USERNAME): cv.string, + vol.Required(CONF_PASSWORD): cv.string, + vol.Optional(CONF_NAME): cv.string, + vol.Optional(CONF_UPDATE_INTERVAL, default=timedelta(seconds=1800)): ( + vol.All(cv.time_period, cv.positive_timedelta)), +}) + + +# pylint: disable=unused-argument +def setup_platform(hass, config, add_devices, discovery_info=None): + """Setup the Fedex platform.""" + import fedexdeliverymanager + try: + cookie = hass.config.path(COOKIE) + session = fedexdeliverymanager.get_session(config.get(CONF_USERNAME), + config.get(CONF_PASSWORD), + cookie_path=cookie) + except fedexdeliverymanager.FedexError: + _LOGGER.exception('Could not connect to Fedex Delivery Manager') + return False + + add_devices([FedexSensor(session, config.get(CONF_NAME), + config.get(CONF_UPDATE_INTERVAL))]) + + +class FedexSensor(Entity): + """Fedex Sensor.""" + + def __init__(self, session, name, interval): + """Initialize the sensor.""" + self._session = session + self._name = name + self._attributes = None + self._state = None + self.update = Throttle(interval)(self._update) + self.update() + + @property + def name(self): + """Return the name of the sensor.""" + return self._name or DOMAIN + + @property + def state(self): + """Return the state of the sensor.""" + return self._state + + def _update(self): + """Update device state.""" + import fedexdeliverymanager + status_counts = defaultdict(int) + for package in fedexdeliverymanager.get_packages(self._session): + status = slugify(package['primary_status']) + skip = status == STATUS_DELIVERED and \ + parse_date(package['delivery_date']) < now().date() + if skip: + continue + status_counts[status] += 1 + self._attributes = { + ATTR_ATTRIBUTION: fedexdeliverymanager.ATTRIBUTION + } + self._attributes.update(status_counts) + self._state = sum(status_counts.values()) + + @property + def device_state_attributes(self): + """Return the state attributes.""" + return self._attributes + + @property + def icon(self): + """Icon to use in the frontend.""" + return ICON diff --git a/requirements_all.txt b/requirements_all.txt index 36a6a978231..b80726e5e3a 100755 --- a/requirements_all.txt +++ b/requirements_all.txt @@ -137,6 +137,9 @@ evohomeclient==0.2.5 # homeassistant.components.sensor.fastdotcom fastdotcom==0.0.1 +# homeassistant.components.sensor.fedex +fedexdeliverymanager==1.0.1 + # homeassistant.components.feedreader feedparser==5.2.1 From 5f0b2a7d15df474c47c73c2ddac3fa9e8bd4f332 Mon Sep 17 00:00:00 2001 From: happyleavesaoc Date: Sun, 12 Feb 2017 16:00:27 -0500 Subject: [PATCH 052/196] [WIP] gstreamer media player (#5839) * gstreamer media player * gstreamer meta --- .coveragerc | 1 + .../components/media_player/gstreamer.py | 162 ++++++++++++++++++ requirements_all.txt | 3 + 3 files changed, 166 insertions(+) create mode 100644 homeassistant/components/media_player/gstreamer.py diff --git a/.coveragerc b/.coveragerc index 771cdcfe85b..8d7d58f7f65 100644 --- a/.coveragerc +++ b/.coveragerc @@ -224,6 +224,7 @@ omit = homeassistant/components/media_player/emby.py homeassistant/components/media_player/firetv.py homeassistant/components/media_player/gpmdp.py + homeassistant/components/media_player/gstreamer.py homeassistant/components/media_player/hdmi_cec.py homeassistant/components/media_player/itunes.py homeassistant/components/media_player/kodi.py diff --git a/homeassistant/components/media_player/gstreamer.py b/homeassistant/components/media_player/gstreamer.py new file mode 100644 index 00000000000..b74af4a4ddb --- /dev/null +++ b/homeassistant/components/media_player/gstreamer.py @@ -0,0 +1,162 @@ +""" +Play media via gstreamer. + +For more details about this platform, please refer to the documentation at +https://home-assistant.io/components/media_player.gstreamer/ +""" +import logging + +import voluptuous as vol + +from homeassistant.components.media_player import ( + MEDIA_TYPE_MUSIC, SUPPORT_VOLUME_MUTE, SUPPORT_VOLUME_SET, + SUPPORT_PAUSE, SUPPORT_SEEK, SUPPORT_STOP, SUPPORT_PLAY_MEDIA, + SUPPORT_PLAY, SUPPORT_NEXT_TRACK, PLATFORM_SCHEMA, MediaPlayerDevice) +from homeassistant.const import ( + STATE_IDLE, CONF_NAME, EVENT_HOMEASSISTANT_STOP) +import homeassistant.helpers.config_validation as cv + + +_LOGGER = logging.getLogger(__name__) + + +REQUIREMENTS = ['gstreamer-player==1.0.0'] +DOMAIN = 'gstreamer' +CONF_PIPELINE = 'pipeline' + + +SUPPORT_GSTREAMER = SUPPORT_VOLUME_SET | SUPPORT_VOLUME_MUTE | \ + SUPPORT_PLAY | SUPPORT_PAUSE | SUPPORT_SEEK | SUPPORT_STOP | \ + SUPPORT_PLAY_MEDIA | SUPPORT_SEEK | SUPPORT_NEXT_TRACK + +PLATFORM_SCHEMA = PLATFORM_SCHEMA.extend({ + vol.Optional(CONF_NAME): cv.string, + vol.Optional(CONF_PIPELINE): cv.string, +}) + + +# pylint: disable=unused-argument +def setup_platform(hass, config, add_devices, discovery_info=None): + """Setup the Gstreamer platform.""" + from gsp import GstreamerPlayer + name = config.get(CONF_NAME) + pipeline = config.get(CONF_PIPELINE) + player = GstreamerPlayer(pipeline) + + def _shutdown(call): + """Quit the player on shutdown.""" + player.quit() + + hass.bus.listen_once(EVENT_HOMEASSISTANT_STOP, _shutdown) + add_devices([GstreamerDevice(player, name)]) + + +class GstreamerDevice(MediaPlayerDevice): + """Representation of a Gstreamer device.""" + + def __init__(self, player, name): + """Initialize the Gstreamer device.""" + self._player = player + self._name = name or DOMAIN + self._state = STATE_IDLE + self._volume = None + self._duration = None + self._position = None + self._uri = None + self._title = None + self._artist = None + self._album = None + + def update(self): + """Update properties.""" + self._state = self._player.state + self._volume = self._player.volume + self._duration = self._player.duration + self._position = self._player.position + self._uri = self._player.uri + self._title = self._player.title + self._album = self._player.album + self._artist = self._player.artist + + def mute_volume(self, mute): + """Send the mute command.""" + self._player.mute() + + def set_volume_level(self, volume): + """Set the volume level.""" + self._player.volume = volume + + def play_media(self, media_type, media_id, **kwargs): + """Play media.""" + if media_type != MEDIA_TYPE_MUSIC: + _LOGGER.error('invalid media type') + return + self._player.queue(media_id) + + def media_seek(self, position): + """Seek.""" + self._player.position = position + + def media_next_track(self): + """Next track.""" + self._player.next() + + @property + def media_content_id(self): + """Content ID of currently playing media.""" + return self._uri + + @property + def content_type(self): + """Content type of currently playing media.""" + return MEDIA_TYPE_MUSIC + + @property + def name(self): + """Return the name of the device.""" + return self._name + + @property + def volume_level(self): + """Return the volume level.""" + return self._volume + + @property + def is_volume_muted(self): + """Volume muted.""" + return self._volume == 0 + + @property + def supported_features(self): + """Flag media player features that are supported.""" + return SUPPORT_GSTREAMER + + @property + def state(self): + """Return the state of the player.""" + return self._state + + @property + def media_duration(self): + """Duration of current playing media in seconds.""" + return self._duration + + @property + def media_position(self): + """Position of current playing media in seconds.""" + return self._position + + @property + def media_title(self): + """Media title.""" + return self._title + + @property + def media_artist(self): + """Media artist.""" + return self._artist + + @property + def media_album_name(self): + """Media album.""" + return self._album diff --git a/requirements_all.txt b/requirements_all.txt index b80726e5e3a..0a26e1bbf72 100755 --- a/requirements_all.txt +++ b/requirements_all.txt @@ -182,6 +182,9 @@ googlemaps==2.4.4 # homeassistant.components.sensor.gpsd gps3==0.33.3 +# homeassistant.components.media_player.gstreamer +gstreamer-player==1.0.0 + # homeassistant.components.ffmpeg ha-ffmpeg==1.4 From 9aac2113b61de84116a10d3467c264ee5f0effaa Mon Sep 17 00:00:00 2001 From: Pascal Vizeli Date: Sun, 12 Feb 2017 22:27:53 +0100 Subject: [PATCH 053/196] Add 'wait_template' to script commands / Refactory track_template (#5827) * Add 'wait' to script commands. * Add track_template + unittest / rename wait_template * fix lint & test * Fix handling / change automation-template / add tests * address paulus comments --- .../components/automation/template.py | 35 ++--- homeassistant/helpers/config_validation.py | 12 +- homeassistant/helpers/event.py | 27 ++++ homeassistant/helpers/script.py | 92 +++++++++--- tests/helpers/test_event.py | 73 ++++++++++ tests/helpers/test_script.py | 137 +++++++++++++++++- 6 files changed, 326 insertions(+), 50 deletions(-) diff --git a/homeassistant/components/automation/template.py b/homeassistant/components/automation/template.py index 90d75d0d982..9727041e750 100644 --- a/homeassistant/components/automation/template.py +++ b/homeassistant/components/automation/template.py @@ -10,8 +10,7 @@ import voluptuous as vol from homeassistant.core import callback from homeassistant.const import CONF_VALUE_TEMPLATE, CONF_PLATFORM -from homeassistant.helpers import condition -from homeassistant.helpers.event import async_track_state_change +from homeassistant.helpers.event import async_track_template import homeassistant.helpers.config_validation as cv @@ -28,28 +27,16 @@ def async_trigger(hass, config, action): value_template = config.get(CONF_VALUE_TEMPLATE) value_template.hass = hass - # Local variable to keep track of if the action has already been triggered - already_triggered = False - @callback - def state_changed_listener(entity_id, from_s, to_s): + def template_listener(entity_id, from_s, to_s): """Listen for state changes and calls action.""" - nonlocal already_triggered - template_result = condition.async_template(hass, value_template) + hass.async_run_job(action, { + 'trigger': { + 'platform': 'template', + 'entity_id': entity_id, + 'from_state': from_s, + 'to_state': to_s, + }, + }) - # Check to see if template returns true - if template_result and not already_triggered: - already_triggered = True - hass.async_run_job(action, { - 'trigger': { - 'platform': 'template', - 'entity_id': entity_id, - 'from_state': from_s, - 'to_state': to_s, - }, - }) - elif not template_result: - already_triggered = False - - return async_track_state_change(hass, value_template.extract_entities(), - state_changed_listener) + return async_track_template(hass, value_template, template_listener) diff --git a/homeassistant/helpers/config_validation.py b/homeassistant/helpers/config_validation.py index cd26c2779b1..4bcde01c132 100644 --- a/homeassistant/helpers/config_validation.py +++ b/homeassistant/helpers/config_validation.py @@ -14,7 +14,7 @@ from homeassistant.loader import get_platform from homeassistant.const import ( CONF_PLATFORM, CONF_SCAN_INTERVAL, TEMP_CELSIUS, TEMP_FAHRENHEIT, CONF_ALIAS, CONF_ENTITY_ID, CONF_VALUE_TEMPLATE, WEEKDAYS, - CONF_CONDITION, CONF_BELOW, CONF_ABOVE, SUN_EVENT_SUNSET, + CONF_CONDITION, CONF_BELOW, CONF_ABOVE, CONF_TIMEOUT, SUN_EVENT_SUNSET, SUN_EVENT_SUNRISE, CONF_UNIT_SYSTEM_IMPERIAL, CONF_UNIT_SYSTEM_METRIC) from homeassistant.core import valid_entity_id from homeassistant.exceptions import TemplateError @@ -524,8 +524,14 @@ _SCRIPT_DELAY_SCHEMA = vol.Schema({ template) }) +_SCRIPT_WAIT_TEMPLATE_SCHEMA = vol.Schema({ + vol.Optional(CONF_ALIAS): string, + vol.Required("wait_template"): template, + vol.Optional(CONF_TIMEOUT): vol.All(time_period, positive_timedelta), +}) + SCRIPT_SCHEMA = vol.All( ensure_list, - [vol.Any(SERVICE_SCHEMA, _SCRIPT_DELAY_SCHEMA, EVENT_SCHEMA, - CONDITION_SCHEMA)], + [vol.Any(SERVICE_SCHEMA, _SCRIPT_DELAY_SCHEMA, + _SCRIPT_WAIT_TEMPLATE_SCHEMA, EVENT_SCHEMA, CONDITION_SCHEMA)], ) diff --git a/homeassistant/helpers/event.py b/homeassistant/helpers/event.py index 802a1dc1a7d..1b4819ddf9b 100644 --- a/homeassistant/helpers/event.py +++ b/homeassistant/helpers/event.py @@ -84,6 +84,33 @@ def async_track_state_change(hass, entity_ids, action, from_state=None, track_state_change = threaded_listener_factory(async_track_state_change) +def async_track_template(hass, template, action, variables=None): + """Add a listener that track state changes with template condition.""" + from . import condition + + # Local variable to keep track of if the action has already been triggered + already_triggered = False + + @callback + def template_condition_listener(entity_id, from_s, to_s): + """Check if condition is correct and run action.""" + nonlocal already_triggered + template_result = condition.async_template(hass, template, variables) + + # Check to see if template returns true + if template_result and not already_triggered: + already_triggered = True + hass.async_run_job(action, entity_id, from_s, to_s) + elif not template_result: + already_triggered = False + + return async_track_state_change( + hass, template.extract_entities(), template_condition_listener) + + +track_template = threaded_listener_factory(async_track_template) + + def async_track_point_in_time(hass, action, point_in_time): """Add a listener that fires once after a specific point in time.""" utc_point_in_time = dt_util.as_utc(point_in_time) diff --git a/homeassistant/helpers/script.py b/homeassistant/helpers/script.py index 46703d86450..03a01ece768 100644 --- a/homeassistant/helpers/script.py +++ b/homeassistant/helpers/script.py @@ -6,11 +6,12 @@ from typing import Optional, Sequence import voluptuous as vol -from homeassistant.core import HomeAssistant -from homeassistant.const import CONF_CONDITION +from homeassistant.core import HomeAssistant, callback +from homeassistant.const import CONF_CONDITION, CONF_TIMEOUT from homeassistant.helpers import ( service, condition, template, config_validation as cv) -from homeassistant.helpers.event import async_track_point_in_utc_time +from homeassistant.helpers.event import ( + async_track_point_in_utc_time, async_track_template) from homeassistant.helpers.typing import ConfigType import homeassistant.util.dt as date_util from homeassistant.util.async import ( @@ -25,6 +26,7 @@ CONF_SEQUENCE = "sequence" CONF_EVENT = "event" CONF_EVENT_DATA = "event_data" CONF_DELAY = "delay" +CONF_WAIT_TEMPLATE = "wait_template" def call_from_config(hass: HomeAssistant, config: ConfigType, @@ -47,9 +49,9 @@ class Script(): self._cur = -1 self.last_action = None self.last_triggered = None - self.can_cancel = any(CONF_DELAY in action for action - in self.sequence) - self._async_unsub_delay_listener = None + self.can_cancel = any(CONF_DELAY in action or CONF_WAIT_TEMPLATE + in action for action in self.sequence) + self._async_listener = [] self._template_cache = {} self._config_cache = {} @@ -74,19 +76,21 @@ class Script(): self._log('Running script') self._cur = 0 - # Unregister callback if we were in a delay but turn on is called - # again. In that case we just continue execution. + # Unregister callback if we were in a delay or wait but turn on is + # called again. In that case we just continue execution. self._async_remove_listener() - for cur, action in islice(enumerate(self.sequence), self._cur, - None): + for cur, action in islice(enumerate(self.sequence), self._cur, None): if CONF_DELAY in action: # Call ourselves in the future to continue work - @asyncio.coroutine - def script_delay(now): + unsub = None + + @callback + def async_script_delay(now): """Called after delay is done.""" - self._async_unsub_delay_listener = None + # pylint: disable=cell-var-from-loop + self._async_listener.remove(unsub) self.hass.async_add_job(self.async_run(variables)) delay = action[CONF_DELAY] @@ -97,15 +101,45 @@ class Script(): cv.positive_timedelta)( delay.async_render(variables)) - self._async_unsub_delay_listener = \ - async_track_point_in_utc_time( - self.hass, script_delay, - date_util.utcnow() + delay) + unsub = async_track_point_in_utc_time( + self.hass, async_script_delay, + date_util.utcnow() + delay + ) + self._async_listener.append(unsub) + self._cur = cur + 1 if self._change_listener: self.hass.async_add_job(self._change_listener) return + elif CONF_WAIT_TEMPLATE in action: + # Call ourselves in the future to continue work + wait_template = action[CONF_WAIT_TEMPLATE] + wait_template.hass = self.hass + + # check if condition allready okay + if condition.async_template( + self.hass, wait_template, variables): + continue + + @callback + def async_script_wait(entity_id, from_s, to_s): + """Called after template condition is true.""" + self._async_remove_listener() + self.hass.async_add_job(self.async_run(variables)) + + self._async_listener.append(async_track_template( + self.hass, wait_template, async_script_wait)) + + self._cur = cur + 1 + if self._change_listener: + self.hass.async_add_job(self._change_listener) + + if CONF_TIMEOUT in action: + self._async_set_timeout(action, variables) + + return + elif CONF_CONDITION in action: if not self._async_check_condition(action, variables): break @@ -166,11 +200,29 @@ class Script(): self._log("Test condition {}: {}".format(self.last_action, check)) return check + def _async_set_timeout(self, action, variables): + """Schedule a timeout to abort script.""" + timeout = action[CONF_TIMEOUT] + unsub = None + + @callback + def async_script_timeout(now): + """Call after timeout is retrieve stop script.""" + self._async_listener.remove(unsub) + self._log("Timout reach, abort script.") + self.async_stop() + + unsub = async_track_point_in_utc_time( + self.hass, async_script_timeout, + date_util.utcnow() + timeout + ) + self._async_listener.append(unsub) + def _async_remove_listener(self): """Remove point in time listener, if any.""" - if self._async_unsub_delay_listener: - self._async_unsub_delay_listener() - self._async_unsub_delay_listener = None + for unsub in self._async_listener: + unsub() + self._async_listener.clear() def _log(self, msg): """Logger helper.""" diff --git a/tests/helpers/test_event.py b/tests/helpers/test_event.py index 05d5953d08a..39691097545 100644 --- a/tests/helpers/test_event.py +++ b/tests/helpers/test_event.py @@ -16,9 +16,11 @@ from homeassistant.helpers.event import ( track_time_change, track_state_change, track_time_interval, + track_template, track_sunrise, track_sunset, ) +from homeassistant.helpers.template import Template from homeassistant.components import sun import homeassistant.util.dt as dt_util @@ -188,6 +190,77 @@ class TestEventHelpers(unittest.TestCase): self.assertEqual(5, len(wildcard_runs)) self.assertEqual(6, len(wildercard_runs)) + def test_track_template(self): + """Test tracking template.""" + specific_runs = [] + wildcard_runs = [] + wildercard_runs = [] + + template_condition = Template( + "{{states.switch.test.state == 'on'}}", + self.hass + ) + template_condition_var = Template( + "{{states.switch.test.state == 'on' and test == 5}}", + self.hass + ) + + self.hass.states.set('switch.test', 'off') + + def specific_run_callback(entity_id, old_state, new_state): + specific_runs.append(1) + + track_template(self.hass, template_condition, specific_run_callback) + + @ha.callback + def wildcard_run_callback(entity_id, old_state, new_state): + wildcard_runs.append((old_state, new_state)) + + track_template(self.hass, template_condition, wildcard_run_callback) + + @asyncio.coroutine + def wildercard_run_callback(entity_id, old_state, new_state): + wildercard_runs.append((old_state, new_state)) + + track_template( + self.hass, template_condition_var, wildercard_run_callback, + {'test': 5}) + + self.hass.states.set('switch.test', 'on') + self.hass.block_till_done() + + self.assertEqual(1, len(specific_runs)) + self.assertEqual(1, len(wildcard_runs)) + self.assertEqual(1, len(wildercard_runs)) + + self.hass.states.set('switch.test', 'on') + self.hass.block_till_done() + + self.assertEqual(1, len(specific_runs)) + self.assertEqual(1, len(wildcard_runs)) + self.assertEqual(1, len(wildercard_runs)) + + self.hass.states.set('switch.test', 'off') + self.hass.block_till_done() + + self.assertEqual(1, len(specific_runs)) + self.assertEqual(1, len(wildcard_runs)) + self.assertEqual(1, len(wildercard_runs)) + + self.hass.states.set('switch.test', 'off') + self.hass.block_till_done() + + self.assertEqual(1, len(specific_runs)) + self.assertEqual(1, len(wildcard_runs)) + self.assertEqual(1, len(wildercard_runs)) + + self.hass.states.set('switch.test', 'on') + self.hass.block_till_done() + + self.assertEqual(2, len(specific_runs)) + self.assertEqual(2, len(wildcard_runs)) + self.assertEqual(2, len(wildercard_runs)) + def test_track_time_interval(self): """Test tracking time interval.""" specific_runs = [] diff --git a/tests/helpers/test_script.py b/tests/helpers/test_script.py index 6eee484097b..d9ef7bc5a2b 100644 --- a/tests/helpers/test_script.py +++ b/tests/helpers/test_script.py @@ -131,7 +131,6 @@ class TestScriptHelper(unittest.TestCase): {'event': event}])) script_obj.run() - self.hass.block_till_done() assert script_obj.is_running @@ -164,7 +163,6 @@ class TestScriptHelper(unittest.TestCase): {'event': event}])) script_obj.run() - self.hass.block_till_done() assert script_obj.is_running @@ -196,7 +194,6 @@ class TestScriptHelper(unittest.TestCase): {'event': event}])) script_obj.run() - self.hass.block_till_done() assert script_obj.is_running @@ -214,6 +211,140 @@ class TestScriptHelper(unittest.TestCase): assert not script_obj.is_running assert len(events) == 0 + def test_wait_template(self): + """Test the wait template.""" + event = 'test_event' + events = [] + + @callback + def record_event(event): + """Add recorded event to set.""" + events.append(event) + + self.hass.bus.listen(event, record_event) + + self.hass.states.set('switch.test', 'on') + + script_obj = script.Script(self.hass, cv.SCRIPT_SCHEMA([ + {'event': event}, + {'wait_template': "{{states.switch.test.state == 'off'}}"}, + {'event': event}])) + + script_obj.run() + self.hass.block_till_done() + + assert script_obj.is_running + assert script_obj.can_cancel + assert script_obj.last_action == event + assert len(events) == 1 + + self.hass.states.set('switch.test', 'off') + self.hass.block_till_done() + + assert not script_obj.is_running + assert len(events) == 2 + + def test_wait_template_cancel(self): + """Test the wait template cancel action.""" + event = 'test_event' + events = [] + + @callback + def record_event(event): + """Add recorded event to set.""" + events.append(event) + + self.hass.bus.listen(event, record_event) + + self.hass.states.set('switch.test', 'on') + + script_obj = script.Script(self.hass, cv.SCRIPT_SCHEMA([ + {'event': event}, + {'wait_template': "{{states.switch.test.state == 'off'}}"}, + {'event': event}])) + + script_obj.run() + self.hass.block_till_done() + + assert script_obj.is_running + assert script_obj.can_cancel + assert script_obj.last_action == event + assert len(events) == 1 + + script_obj.stop() + + assert not script_obj.is_running + assert len(events) == 1 + + self.hass.states.set('switch.test', 'off') + self.hass.block_till_done() + + assert not script_obj.is_running + assert len(events) == 1 + + def test_wait_template_not_schedule(self): + """Test the wait template with correct condition.""" + event = 'test_event' + events = [] + + @callback + def record_event(event): + """Add recorded event to set.""" + events.append(event) + + self.hass.bus.listen(event, record_event) + + self.hass.states.set('switch.test', 'on') + + script_obj = script.Script(self.hass, cv.SCRIPT_SCHEMA([ + {'event': event}, + {'wait_template': "{{states.switch.test.state == 'on'}}"}, + {'event': event}])) + + script_obj.run() + self.hass.block_till_done() + + assert not script_obj.is_running + assert script_obj.can_cancel + assert len(events) == 2 + + def test_wait_template_timeout(self): + """Test the wait template.""" + event = 'test_event' + events = [] + + @callback + def record_event(event): + """Add recorded event to set.""" + events.append(event) + + self.hass.bus.listen(event, record_event) + + self.hass.states.set('switch.test', 'on') + + script_obj = script.Script(self.hass, cv.SCRIPT_SCHEMA([ + {'event': event}, + { + 'wait_template': "{{states.switch.test.state == 'off'}}", + 'timeout': 5 + }, + {'event': event}])) + + script_obj.run() + self.hass.block_till_done() + + assert script_obj.is_running + assert script_obj.can_cancel + assert script_obj.last_action == event + assert len(events) == 1 + + future = dt_util.utcnow() + timedelta(seconds=5) + fire_time_changed(self.hass, future) + self.hass.block_till_done() + + assert not script_obj.is_running + assert len(events) == 1 + def test_passing_variables_to_script(self): """Test if we can pass variables to script.""" calls = [] From 3a262cd7e0f8dcd136ff295e6d909614c2cd5e92 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Pierre=20St=C3=A5hl?= Date: Sun, 12 Feb 2017 22:34:02 +0100 Subject: [PATCH 054/196] Fix artwork in Apple TV platform (#5874) --- .../components/media_player/apple_tv.py | 36 ++++++++----------- 1 file changed, 15 insertions(+), 21 deletions(-) diff --git a/homeassistant/components/media_player/apple_tv.py b/homeassistant/components/media_player/apple_tv.py index 982ca6af894..9fba9cc4f0f 100644 --- a/homeassistant/components/media_player/apple_tv.py +++ b/homeassistant/components/media_player/apple_tv.py @@ -17,7 +17,7 @@ from homeassistant.components.media_player import ( PLATFORM_SCHEMA, MEDIA_TYPE_MUSIC, MEDIA_TYPE_VIDEO, MEDIA_TYPE_TVSHOW) from homeassistant.const import ( STATE_IDLE, STATE_PAUSED, STATE_PLAYING, STATE_STANDBY, CONF_HOST, - CONF_NAME, EVENT_HOMEASSISTANT_STOP) + CONF_NAME) from homeassistant.helpers.aiohttp_client import async_get_clientsession import homeassistant.helpers.config_validation as cv import homeassistant.util.dt as dt_util @@ -67,15 +67,6 @@ def async_setup_platform(hass, config, async_add_entities, atv = pyatv.connect_to_apple_tv(details, hass.loop, session=session) entity = AppleTvDevice(atv, name) - @asyncio.coroutine - def async_stop_subscription(event): - """Logout device to close its session.""" - _LOGGER.info("Closing Apple TV session") - yield from atv.logout() - - hass.bus.async_listen_once(EVENT_HOMEASSISTANT_STOP, - async_stop_subscription) - yield from async_add_entities([entity], update_before_add=True) @@ -87,7 +78,6 @@ class AppleTvDevice(MediaPlayerDevice): self._name = name self._atv = atv self._playing = None - self._artwork = None self._artwork_hash = None @property @@ -121,12 +111,11 @@ class AppleTvDevice(MediaPlayerDevice): try: playing = yield from self._atv.metadata.playing() - if self._should_download_artwork(playing): - self._artwork = None - self._artwork_hash = None - self._artwork = yield from self._atv.metadata.artwork() - if self._artwork: - self._artwork_hash = hashlib.md5(self._artwork).hexdigest() + if self._has_playing_media_changed(playing): + base = str(playing.title) + str(playing.artist) + \ + str(playing.album) + str(playing.total_time) + self._artwork_hash = hashlib.md5( + base.encode('utf-8')).hexdigest() self._playing = playing except exceptions.AuthenticationError as ex: @@ -136,7 +125,7 @@ class AppleTvDevice(MediaPlayerDevice): except asyncio.TimeoutError: _LOGGER.warning('timed out while connecting to Apple TV') - def _should_download_artwork(self, new_playing): + def _has_playing_media_changed(self, new_playing): if self._playing is None: return True old_playing = self._playing @@ -181,9 +170,14 @@ class AppleTvDevice(MediaPlayerDevice): yield from self._atv.remote_control.play_url(media_id, 0) @property - def media_image(self): - """Artwork for what is currently playing.""" - return self._artwork, 'image/png', self._artwork_hash + def media_image_hash(self): + """Hash value for media image.""" + return self._artwork_hash + + @asyncio.coroutine + def async_get_media_image(self): + """Fetch media image of current playing image.""" + return (yield from self._atv.metadata.artwork()), 'image/png' @property def media_title(self): From 9b0a3e4c5a1286547363e4b01e693f29eaf1c66f Mon Sep 17 00:00:00 2001 From: Andrey Date: Mon, 13 Feb 2017 00:10:56 +0200 Subject: [PATCH 055/196] force_update zwave sensors. (#5844) * force_update zwave sensors with polling_intensity. * use bool to cast * Make all zwave sensors force_update=True --- homeassistant/components/sensor/zwave.py | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/homeassistant/components/sensor/zwave.py b/homeassistant/components/sensor/zwave.py index c66816541fb..b3f55efd779 100644 --- a/homeassistant/components/sensor/zwave.py +++ b/homeassistant/components/sensor/zwave.py @@ -54,6 +54,11 @@ class ZWaveSensor(zwave.ZWaveDeviceEntity): """Initialize the sensor.""" zwave.ZWaveDeviceEntity.__init__(self, value, DOMAIN) + @property + def force_update(self): + """Return force_update.""" + return True + @property def state(self): """Return the state of the sensor.""" From f4372a7df5cda2102599602b9c61feb0d8a9efec Mon Sep 17 00:00:00 2001 From: Andrey Date: Mon, 13 Feb 2017 01:42:09 +0200 Subject: [PATCH 056/196] Fix getters that ignored labels. (#5903) * Fix getters that ignored labels. * Try 5 times for changed dict * fix lint * Add decorator with retrying functions. * Fix lint * use retries instead of decorator --- homeassistant/components/zwave/__init__.py | 33 +++++++++++++++------- 1 file changed, 23 insertions(+), 10 deletions(-) diff --git a/homeassistant/components/zwave/__init__.py b/homeassistant/components/zwave/__init__.py index 2abc79754ae..a3a3c64cf3f 100755 --- a/homeassistant/components/zwave/__init__.py +++ b/homeassistant/components/zwave/__init__.py @@ -236,7 +236,7 @@ def nice_print_node(node): print("\n\n\n") -def get_config_value(node, value_index): +def get_config_value(node, value_index, tries=5): """Return the current configuration value for a specific index.""" try: for value in node.values.values(): @@ -246,14 +246,24 @@ def get_config_value(node, value_index): except RuntimeError: # If we get an runtime error the dict has changed while # we was looking for a value, just do it again - return get_config_value(node, value_index) + return None if tries <= 0 else get_config_value( + node, value_index, tries=tries - 1) + return None -def _get_wakeup(node): +def _get_wakeup(node, tries=5): """Return wakeup interval of the node or None if node is not wakable.""" - if node.can_wake_up(): - for value_id in node.get_values(class_id=const.COMMAND_CLASS_WAKE_UP): - return node.values[value_id].data + try: + if node.can_wake_up(): + for value_id in node.get_values( + class_id=const.COMMAND_CLASS_WAKE_UP): + return node.values[value_id].data + except RuntimeError: + # If we get an runtime error the dict has changed while + # we was looking for a value, just do it again + return None if tries <= 0 else _get_wakeup( + node, tries=tries - 1) + return None @@ -671,7 +681,6 @@ class ZWaveDeviceEntity(Entity): def _value_handler(self, method=None, class_id=None, index=None, label=None, data=None, member=None, **kwargs): """Get the values for a given command_class with arguments.""" - varname = member if class_id is not None: kwargs[CLASS_ID] = class_id _LOGGER.debug('method=%s, class_id=%s, index=%s, label=%s, data=%s,' @@ -686,16 +695,20 @@ class ZWaveDeviceEntity(Entity): if index is not None and value.index != index: continue if label is not None: + label_found = False for entry in label: - if entry is not None and value.label != entry: - continue + if value.label == entry: + label_found = True + break + if not label_found: + continue if method == 'set': value.data = data return if data is not None and value.data != data: continue if member is not None: - results = getattr(value, varname) + results = getattr(value, member) else: results = value break From 6311f21d312368fb856e03bfbe181714fdc21b9f Mon Sep 17 00:00:00 2001 From: John Arild Berentsen Date: Mon, 13 Feb 2017 00:47:04 +0100 Subject: [PATCH 057/196] Bugfix for #5900 (#5901) --- homeassistant/components/climate/zwave.py | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/homeassistant/components/climate/zwave.py b/homeassistant/components/climate/zwave.py index 545d3b41432..e74d5d575a3 100755 --- a/homeassistant/components/climate/zwave.py +++ b/homeassistant/components/climate/zwave.py @@ -97,9 +97,11 @@ class ZWaveClimate(ZWaveDeviceEntity, ClimateDevice): self._current_temperature = self.get_value( class_id=zwave.const.COMMAND_CLASS_SENSOR_MULTILEVEL, label=['Temperature'], member='data') - self._unit = self.get_value( + device_unit = self.get_value( class_id=zwave.const.COMMAND_CLASS_SENSOR_MULTILEVEL, label=['Temperature'], member='units') + if device_unit is not None: + self._unit = device_unit # Fan Mode self._current_fan_mode = self.get_value( From 4623d1071eca19553c173be6ea8171542f91c0c5 Mon Sep 17 00:00:00 2001 From: William Scanlon Date: Sun, 12 Feb 2017 22:34:13 -0500 Subject: [PATCH 058/196] Fixed typos in wink climate (#5936) --- homeassistant/components/climate/wink.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/homeassistant/components/climate/wink.py b/homeassistant/components/climate/wink.py index d4785d4a13e..f2c2551d371 100644 --- a/homeassistant/components/climate/wink.py +++ b/homeassistant/components/climate/wink.py @@ -366,8 +366,8 @@ class WinkAC(WinkDevice, ClimateDevice): if target_temp_low is not None: data[ATTR_TARGET_TEMP_LOW] = self._convert_for_display( self.target_temperature_low) - data["total_consumption"] = self.wink.toatl_consumption() - data["schedule_enabled"] = self.wink.toatl_consumption() + data["total_consumption"] = self.wink.total_consumption() + data["schedule_enabled"] = self.wink.schedule_enabled() return data From 41849eab062171bc400ca5866e53c40e5da1cc3c Mon Sep 17 00:00:00 2001 From: Pascal Vizeli Date: Mon, 13 Feb 2017 06:24:07 +0100 Subject: [PATCH 059/196] Core cleanup: two stage shutdown (#5876) * Core cleanup: two stage shutdown * fix spell * fix * add async logger to close * change aiohttp to use CLOSE * address paulus comments * Fix tests * Add unittest --- homeassistant/bootstrap.py | 26 ++++++++----- homeassistant/const.py | 1 + homeassistant/core.py | 32 ++++++--------- homeassistant/helpers/aiohttp_client.py | 38 ++++++++---------- tests/components/test_mqtt_eventstream.py | 47 +++++++++++------------ tests/helpers/test_aiohttp_client.py | 14 +++---- tests/test_bootstrap.py | 4 +- tests/test_core.py | 42 ++++++++++---------- 8 files changed, 97 insertions(+), 107 deletions(-) diff --git a/homeassistant/bootstrap.py b/homeassistant/bootstrap.py index 72780707f66..e2210f66662 100644 --- a/homeassistant/bootstrap.py +++ b/homeassistant/bootstrap.py @@ -16,6 +16,7 @@ import homeassistant.components as core_components from homeassistant.components import persistent_notification import homeassistant.config as conf_util import homeassistant.core as core +from homeassistant.const import EVENT_HOMEASSISTANT_CLOSE import homeassistant.loader as loader import homeassistant.util.package as pkg_util from homeassistant.util.async import ( @@ -386,7 +387,7 @@ def async_from_config_dict(config: Dict[str, Any], None, conf_util.process_ha_config_upgrade, hass) if enable_log: - enable_logging(hass, verbose, log_rotate_days) + async_enable_logging(hass, verbose, log_rotate_days) hass.config.skip_pip = skip_pip if skip_pip: @@ -488,7 +489,7 @@ def async_from_config_file(config_path: str, yield from hass.loop.run_in_executor( None, mount_local_lib_path, config_dir) - enable_logging(hass, verbose, log_rotate_days) + async_enable_logging(hass, verbose, log_rotate_days) try: config_dict = yield from hass.loop.run_in_executor( @@ -503,11 +504,12 @@ def async_from_config_file(config_path: str, return hass -def enable_logging(hass: core.HomeAssistant, verbose: bool=False, - log_rotate_days=None) -> None: +@core.callback +def async_enable_logging(hass: core.HomeAssistant, verbose: bool=False, + log_rotate_days=None) -> None: """Setup the logging. - Async friendly. + This method must be run in the event loop. """ logging.basicConfig(level=logging.INFO) fmt = ("%(asctime)s %(levelname)s (%(threadName)s) " @@ -537,10 +539,6 @@ def enable_logging(hass: core.HomeAssistant, verbose: bool=False, except ImportError: pass - # AsyncHandler allready exists? - if hass.data.get(core.DATA_ASYNCHANDLER): - return - # Log errors to a file if we have write access to file or config dir err_log_path = hass.config.path(ERROR_LOG_FILENAME) err_path_exists = os.path.isfile(err_log_path) @@ -561,7 +559,15 @@ def enable_logging(hass: core.HomeAssistant, verbose: bool=False, err_handler.setFormatter(logging.Formatter(fmt, datefmt=datefmt)) async_handler = AsyncHandler(hass.loop, err_handler) - hass.data[core.DATA_ASYNCHANDLER] = async_handler + + @asyncio.coroutine + def async_stop_async_handler(event): + """Cleanup async handler.""" + logging.getLogger('').removeHandler(async_handler) + yield from async_handler.async_close(blocking=True) + + hass.bus.async_listen_once( + EVENT_HOMEASSISTANT_CLOSE, async_stop_async_handler) logger = logging.getLogger('') logger.addHandler(async_handler) diff --git a/homeassistant/const.py b/homeassistant/const.py index afc4c029e40..f5f86321b1e 100644 --- a/homeassistant/const.py +++ b/homeassistant/const.py @@ -156,6 +156,7 @@ CONF_ZONE = 'zone' # #### EVENTS #### EVENT_HOMEASSISTANT_START = 'homeassistant_start' EVENT_HOMEASSISTANT_STOP = 'homeassistant_stop' +EVENT_HOMEASSISTANT_CLOSE = 'homeassistant_close' EVENT_STATE_CHANGED = 'state_changed' EVENT_TIME_CHANGED = 'time_changed' EVENT_CALL_SERVICE = 'call_service' diff --git a/homeassistant/core.py b/homeassistant/core.py index d7b33a75f6a..29c61842c67 100644 --- a/homeassistant/core.py +++ b/homeassistant/core.py @@ -26,7 +26,7 @@ from homeassistant.const import ( ATTR_SERVICE_CALL_ID, ATTR_SERVICE_DATA, EVENT_CALL_SERVICE, EVENT_HOMEASSISTANT_START, EVENT_HOMEASSISTANT_STOP, EVENT_SERVICE_EXECUTED, EVENT_SERVICE_REGISTERED, EVENT_STATE_CHANGED, - EVENT_TIME_CHANGED, MATCH_ALL, __version__) + EVENT_TIME_CHANGED, MATCH_ALL, EVENT_HOMEASSISTANT_CLOSE, __version__) from homeassistant.exceptions import ( HomeAssistantError, InvalidEntityFormatError, ShuttingDown) from homeassistant.util.async import ( @@ -53,8 +53,6 @@ ENTITY_ID_PATTERN = re.compile(r"^(\w+)\.(\w+)$") # Size of a executor pool EXECUTOR_POOL_SIZE = 10 -# AsyncHandler for logging -DATA_ASYNCHANDLER = 'log_asynchandler' _LOGGER = logging.getLogger(__name__) @@ -279,23 +277,17 @@ class HomeAssistant(object): This method is a coroutine. """ - import homeassistant.helpers.aiohttp_client as aiohttp_client - + # stage 1 self.state = CoreState.stopping self.async_track_tasks() self.bus.async_fire(EVENT_HOMEASSISTANT_STOP) yield from self.async_block_till_done() - self.executor.shutdown() + + # stage 2 self.state = CoreState.not_running - - # cleanup connector pool from aiohttp - yield from aiohttp_client.async_cleanup_websession(self) - - # cleanup async layer from python logging - if self.data.get(DATA_ASYNCHANDLER): - handler = self.data.pop(DATA_ASYNCHANDLER) - logging.getLogger('').removeHandler(handler) - yield from handler.async_close(blocking=True) + self.bus.async_fire(EVENT_HOMEASSISTANT_CLOSE) + yield from self.async_block_till_done() + self.executor.shutdown() self.exit_code = exit_code self.loop.stop() @@ -397,11 +389,11 @@ class EventBus(object): self._hass.state == CoreState.stopping: raise ShuttingDown("Home Assistant is shutting down") - # Copy the list of the current listeners because some listeners - # remove themselves as a listener while being executed which - # causes the iterator to be confused. - get = self._listeners.get - listeners = get(MATCH_ALL, []) + get(event_type, []) + listeners = self._listeners.get(event_type, []) + + # EVENT_HOMEASSISTANT_CLOSE should go only to his listeners + if event_type != EVENT_HOMEASSISTANT_CLOSE: + listeners = self._listeners.get(MATCH_ALL, []) + listeners event = Event(event_type, event_data, origin) diff --git a/homeassistant/helpers/aiohttp_client.py b/homeassistant/helpers/aiohttp_client.py index 2825eb9e49c..75755ad3685 100644 --- a/homeassistant/helpers/aiohttp_client.py +++ b/homeassistant/helpers/aiohttp_client.py @@ -9,7 +9,7 @@ from aiohttp.web_exceptions import HTTPGatewayTimeout import async_timeout from homeassistant.core import callback -from homeassistant.const import EVENT_HOMEASSISTANT_STOP +from homeassistant.const import EVENT_HOMEASSISTANT_CLOSE from homeassistant.const import __version__ DATA_CONNECTOR = 'aiohttp_connector' @@ -38,6 +38,7 @@ def async_get_clientsession(hass, verify_ssl=True): connector=connector, headers={USER_AGENT: SERVER_SOFTWARE} ) + _async_register_clientsession_shutdown(hass, clientsession) hass.data[key] = clientsession return hass.data[key] @@ -121,7 +122,7 @@ def _async_register_clientsession_shutdown(hass, clientsession): clientsession.detach() hass.bus.async_listen_once( - EVENT_HOMEASSISTANT_STOP, _async_close_websession) + EVENT_HOMEASSISTANT_CLOSE, _async_close_websession) @callback @@ -130,37 +131,30 @@ def _async_get_connector(hass, verify_ssl=True): This method must be run in the event loop. """ + is_new = False + if verify_ssl: if DATA_CONNECTOR not in hass.data: connector = aiohttp.TCPConnector(loop=hass.loop) hass.data[DATA_CONNECTOR] = connector + is_new = True else: connector = hass.data[DATA_CONNECTOR] else: if DATA_CONNECTOR_NOTVERIFY not in hass.data: connector = aiohttp.TCPConnector(loop=hass.loop, verify_ssl=False) hass.data[DATA_CONNECTOR_NOTVERIFY] = connector + is_new = True else: connector = hass.data[DATA_CONNECTOR_NOTVERIFY] + if is_new: + @asyncio.coroutine + def _async_close_connector(event): + """Close connector pool.""" + yield from connector.close() + + hass.bus.async_listen_once( + EVENT_HOMEASSISTANT_CLOSE, _async_close_connector) + return connector - - -@asyncio.coroutine -def async_cleanup_websession(hass): - """Cleanup aiohttp connector pool. - - This method is a coroutine. - """ - tasks = [] - if DATA_CLIENTSESSION in hass.data: - hass.data[DATA_CLIENTSESSION].detach() - if DATA_CONNECTOR in hass.data: - tasks.append(hass.data[DATA_CONNECTOR].close()) - if DATA_CLIENTSESSION_NOTVERIFY in hass.data: - hass.data[DATA_CLIENTSESSION_NOTVERIFY].detach() - if DATA_CONNECTOR_NOTVERIFY in hass.data: - tasks.append(hass.data[DATA_CONNECTOR_NOTVERIFY].close()) - - if tasks: - yield from asyncio.wait(tasks, loop=hass.loop) diff --git a/tests/components/test_mqtt_eventstream.py b/tests/components/test_mqtt_eventstream.py index 3dbe6338e3f..7ce65fc7827 100644 --- a/tests/components/test_mqtt_eventstream.py +++ b/tests/components/test_mqtt_eventstream.py @@ -1,7 +1,6 @@ """The tests for the MQTT eventstream component.""" from collections import namedtuple import json -import unittest from unittest.mock import ANY, patch from homeassistant.bootstrap import setup_component @@ -21,16 +20,15 @@ from tests.common import ( ) -class TestMqttEventStream(unittest.TestCase): +class TestMqttEventStream(object): """Test the MQTT eventstream module.""" - def setUp(self): # pylint: disable=invalid-name + def setup_method(self): """Setup things to be run when tests are started.""" - super(TestMqttEventStream, self).setUp() self.hass = get_test_home_assistant() self.mock_mqtt = mock_mqtt_component(self.hass) - def tearDown(self): # pylint: disable=invalid-name + def teardown_method(self): """Stop everything that was started.""" self.hass.stop() @@ -46,24 +44,24 @@ class TestMqttEventStream(unittest.TestCase): def test_setup_succeeds(self): """"Test the success of the setup.""" - self.assertTrue(self.add_eventstream()) + assert self.add_eventstream() def test_setup_with_pub(self): """"Test the setup with subscription.""" # Should start off with no listeners for all events - self.assertEqual(self.hass.bus.listeners.get('*'), None) + assert self.hass.bus.listeners.get('*') is None - self.assertTrue(self.add_eventstream(pub_topic='bar')) + assert self.add_eventstream(pub_topic='bar') self.hass.block_till_done() # Verify that the event handler has been added as a listener - self.assertEqual(self.hass.bus.listeners.get('*'), 1) + assert self.hass.bus.listeners.get('*') == 1 @patch('homeassistant.components.mqtt.subscribe') def test_subscribe(self, mock_sub): """"Test the subscription.""" sub_topic = 'foo' - self.assertTrue(self.add_eventstream(sub_topic=sub_topic)) + assert self.add_eventstream(sub_topic=sub_topic) self.hass.block_till_done() # Verify that the this entity was subscribed to the topic @@ -79,7 +77,7 @@ class TestMqttEventStream(unittest.TestCase): mock_utcnow.return_value = now # Add the eventstream component for publishing events - self.assertTrue(self.add_eventstream(pub_topic=pub_topic)) + assert self.add_eventstream(pub_topic=pub_topic) self.hass.block_till_done() # Reset the mock because it will have already gotten calls for the @@ -93,7 +91,7 @@ class TestMqttEventStream(unittest.TestCase): # The order of the JSON is indeterminate, # so first just check that publish was called mock_pub.assert_called_with(self.hass, pub_topic, ANY) - self.assertTrue(mock_pub.called) + assert mock_pub.called # Get the actual call to publish and make sure it was the one # we were looking for @@ -110,12 +108,12 @@ class TestMqttEventStream(unittest.TestCase): event['event_data'] = {"new_state": new_state, "entity_id": e_id} # Verify that the message received was that expected - self.assertEqual(json.loads(msg), event) + assert json.loads(msg) == event @patch('homeassistant.components.mqtt.publish') def test_time_event_does_not_send_message(self, mock_pub): """"Test the sending of a new message if time event.""" - self.assertTrue(self.add_eventstream(pub_topic='bar')) + assert self.add_eventstream(pub_topic='bar') self.hass.block_till_done() # Reset the mock because it will have already gotten calls for the @@ -123,12 +121,12 @@ class TestMqttEventStream(unittest.TestCase): mock_pub.reset_mock() fire_time_changed(self.hass, dt_util.utcnow()) - self.assertFalse(mock_pub.called) + assert not mock_pub.called def test_receiving_remote_event_fires_hass_event(self): """"Test the receiving of the remotely fired event.""" sub_topic = 'foo' - self.assertTrue(self.add_eventstream(sub_topic=sub_topic)) + assert self.add_eventstream(sub_topic=sub_topic) self.hass.block_till_done() calls = [] @@ -147,7 +145,7 @@ class TestMqttEventStream(unittest.TestCase): fire_mqtt_message(self.hass, sub_topic, payload) self.hass.block_till_done() - self.assertEqual(1, len(calls)) + assert 1 == len(calls) @patch('homeassistant.components.mqtt.publish') def test_mqtt_received_event(self, mock_pub): @@ -160,10 +158,9 @@ class TestMqttEventStream(unittest.TestCase): """ SUB_TOPIC = 'from_slaves' - self.assertTrue( - self.add_eventstream( + assert self.add_eventstream( pub_topic='bar', - sub_topic=SUB_TOPIC)) + sub_topic=SUB_TOPIC) self.hass.block_till_done() # Reset the mock because it will have already gotten calls for the @@ -173,19 +170,21 @@ class TestMqttEventStream(unittest.TestCase): # Use MQTT component message handler to simulate firing message # received event. MQTTMessage = namedtuple('MQTTMessage', ['topic', 'qos', 'payload']) - message = MQTTMessage(SUB_TOPIC, 1, 'Hello World!'.encode('utf-8')) + message = MQTTMessage( + SUB_TOPIC, 1, '{"test": "Hello World!"}'.encode('utf-8')) mqtt.MQTT._mqtt_on_message(self, None, {'hass': self.hass}, message) self.hass.block_till_done() # 'normal' incoming mqtt messages should be broadcasted - self.assertEqual(mock_pub.call_count, 0) + assert mock_pub.call_count == 0 MQTTMessage = namedtuple('MQTTMessage', ['topic', 'qos', 'payload']) - message = MQTTMessage('test_topic', 1, 'Hello World!'.encode('utf-8')) + message = MQTTMessage( + 'test_topic', 1, '{"test": "Hello World!"}'.encode('utf-8')) mqtt.MQTT._mqtt_on_message(self, None, {'hass': self.hass}, message) self.hass.block_till_done() # but event from the event stream not - self.assertEqual(mock_pub.call_count, 1) + assert mock_pub.call_count == 1 diff --git a/tests/helpers/test_aiohttp_client.py b/tests/helpers/test_aiohttp_client.py index c54770268d0..65fd0386299 100644 --- a/tests/helpers/test_aiohttp_client.py +++ b/tests/helpers/test_aiohttp_client.py @@ -4,10 +4,10 @@ import unittest import aiohttp +from homeassistant.core import EVENT_HOMEASSISTANT_CLOSE from homeassistant.bootstrap import setup_component import homeassistant.helpers.aiohttp_client as client -from homeassistant.util.async import ( - run_callback_threadsafe, run_coroutine_threadsafe) +from homeassistant.util.async import run_callback_threadsafe from tests.common import get_test_home_assistant @@ -93,9 +93,8 @@ class TestHelpersAiohttpClient(unittest.TestCase): assert isinstance( self.hass.data[client.DATA_CONNECTOR], aiohttp.TCPConnector) - run_coroutine_threadsafe( - client.async_cleanup_websession(self.hass), self.hass.loop - ).result() + self.hass.bus.fire(EVENT_HOMEASSISTANT_CLOSE) + self.hass.block_till_done() assert self.hass.data[client.DATA_CLIENTSESSION].closed assert self.hass.data[client.DATA_CONNECTOR].closed @@ -112,9 +111,8 @@ class TestHelpersAiohttpClient(unittest.TestCase): self.hass.data[client.DATA_CONNECTOR_NOTVERIFY], aiohttp.TCPConnector) - run_coroutine_threadsafe( - client.async_cleanup_websession(self.hass), self.hass.loop - ).result() + self.hass.bus.fire(EVENT_HOMEASSISTANT_CLOSE) + self.hass.block_till_done() assert self.hass.data[client.DATA_CLIENTSESSION_NOTVERIFY].closed assert self.hass.data[client.DATA_CONNECTOR_NOTVERIFY].closed diff --git a/tests/test_bootstrap.py b/tests/test_bootstrap.py index 10f23346ca3..565265b3e01 100644 --- a/tests/test_bootstrap.py +++ b/tests/test_bootstrap.py @@ -71,7 +71,7 @@ class TestBootstrap: with mock.patch('os.path.isfile', mock.Mock(return_value=True)), \ mock.patch('os.access', mock.Mock(return_value=True)), \ - mock.patch('homeassistant.bootstrap.enable_logging', + mock.patch('homeassistant.bootstrap.async_enable_logging', mock.Mock(return_value=True)), \ patch_yaml_files(files, True): self.hass = bootstrap.from_config_file('config.yaml') @@ -289,7 +289,7 @@ class TestBootstrap: assert not bootstrap.setup_component(self.hass, 'comp', {}) assert 'comp' not in self.hass.config.components - @mock.patch('homeassistant.bootstrap.enable_logging') + @mock.patch('homeassistant.bootstrap.async_enable_logging') @mock.patch('homeassistant.bootstrap.async_register_signal_handling') def test_home_assistant_core_config_validation(self, log_mock, sig_mock): """Test if we pass in wrong information for HA conf.""" diff --git a/tests/test_core.py b/tests/test_core.py index d027814e109..a0dc11348a8 100644 --- a/tests/test_core.py +++ b/tests/test_core.py @@ -16,7 +16,7 @@ from homeassistant.util.unit_system import (METRIC_SYSTEM) from homeassistant.const import ( __version__, EVENT_STATE_CHANGED, ATTR_FRIENDLY_NAME, CONF_UNIT_SYSTEM, ATTR_NOW, EVENT_TIME_CHANGED, EVENT_HOMEASSISTANT_STOP, - EVENT_HOMEASSISTANT_START) + EVENT_HOMEASSISTANT_CLOSE, EVENT_HOMEASSISTANT_START) from tests.common import get_test_home_assistant @@ -89,6 +89,26 @@ def test_async_run_job_delegates_non_async(): assert len(hass.async_add_job.mock_calls) == 1 +def test_stage_shutdown(): + """Simulate a shutdown, test calling stuff.""" + hass = get_test_home_assistant() + test_stop = [] + test_close = [] + test_all = [] + + hass.bus.listen( + EVENT_HOMEASSISTANT_STOP, lambda event: test_stop.append(event)) + hass.bus.listen( + EVENT_HOMEASSISTANT_CLOSE, lambda event: test_close.append(event)) + hass.bus.listen('*', lambda event: test_all.append(event)) + + hass.stop() + + assert len(test_stop) == 1 + assert len(test_close) == 1 + assert len(test_all) == 1 + + class TestHomeAssistant(unittest.TestCase): """Test the Home Assistant core classes.""" @@ -102,26 +122,6 @@ class TestHomeAssistant(unittest.TestCase): """Stop everything that was started.""" self.hass.stop() - # This test hangs on `loop.add_signal_handler` - # def test_start_and_sigterm(self): - # """Start the test.""" - # calls = [] - # self.hass.bus.listen_once(EVENT_HOMEASSISTANT_START, - # lambda event: calls.append(1)) - - # self.hass.start() - - # self.assertEqual(1, len(calls)) - - # self.hass.bus.listen_once(EVENT_HOMEASSISTANT_STOP, - # lambda event: calls.append(1)) - - # os.kill(os.getpid(), signal.SIGTERM) - - # self.hass.block_till_done() - - # self.assertEqual(1, len(calls)) - def test_pending_sheduler(self): """Add a coro to pending tasks.""" call_count = [] From 8ca3ca85644ec8d5318b7f34c65ca5eb46556bb4 Mon Sep 17 00:00:00 2001 From: Paulus Schoutsen Date: Sun, 12 Feb 2017 23:55:27 -0800 Subject: [PATCH 060/196] Z-Wave: Rename customize to device_config [Breaking change] (#5933) * Z-Wave: Rename customize to device_config * Fix light * Make entity id not required --- homeassistant/components/light/zwave.py | 3 +- homeassistant/components/zwave/__init__.py | 19 +++--- tests/components/test_zwave.py | 68 ---------------------- 3 files changed, 10 insertions(+), 80 deletions(-) delete mode 100644 tests/components/test_zwave.py diff --git a/homeassistant/components/light/zwave.py b/homeassistant/components/light/zwave.py index a0804097830..89c25059d94 100644 --- a/homeassistant/components/light/zwave.py +++ b/homeassistant/components/light/zwave.py @@ -17,7 +17,6 @@ from homeassistant.const import STATE_OFF, STATE_ON from homeassistant.util.color import HASS_COLOR_MAX, HASS_COLOR_MIN, \ color_temperature_mired_to_kelvin, color_temperature_to_rgb, \ color_rgb_to_rgbw, color_rgbw_to_rgb -from homeassistant.helpers import customize _LOGGER = logging.getLogger(__name__) @@ -56,7 +55,7 @@ def setup_platform(hass, config, add_devices, discovery_info=None): node = zwave.NETWORK.nodes[discovery_info[zwave.const.ATTR_NODE_ID]] value = node.values[discovery_info[zwave.const.ATTR_VALUE_ID]] name = '{}.{}'.format(DOMAIN, zwave.object_id(value)) - node_config = customize.get_overrides(hass, zwave.DOMAIN, name) + node_config = hass.data[zwave.DATA_DEVICE_CONFIG].get(name) refresh = node_config.get(zwave.CONF_REFRESH_VALUE) delay = node_config.get(zwave.CONF_REFRESH_DELAY) _LOGGER.debug('name=%s node_config=%s CONF_REFRESH_VALUE=%s' diff --git a/homeassistant/components/zwave/__init__.py b/homeassistant/components/zwave/__init__.py index a3a3c64cf3f..ed234c3c614 100755 --- a/homeassistant/components/zwave/__init__.py +++ b/homeassistant/components/zwave/__init__.py @@ -11,11 +11,10 @@ from pprint import pprint import voluptuous as vol -from homeassistant.helpers import discovery, customize +from homeassistant.helpers import discovery from homeassistant.const import ( ATTR_BATTERY_LEVEL, ATTR_LOCATION, ATTR_ENTITY_ID, ATTR_WAKEUP, - CONF_CUSTOMIZE, EVENT_HOMEASSISTANT_START, EVENT_HOMEASSISTANT_STOP, - CONF_ENTITY_ID) + EVENT_HOMEASSISTANT_START, EVENT_HOMEASSISTANT_STOP) from homeassistant.helpers.entity import Entity from homeassistant.helpers.event import track_time_change from homeassistant.util import convert, slugify @@ -38,6 +37,7 @@ CONF_CONFIG_PATH = 'config_path' CONF_IGNORED = 'ignored' CONF_REFRESH_VALUE = 'refresh_value' CONF_REFRESH_DELAY = 'delay' +CONF_DEVICE_CONFIG = 'device_config' DEFAULT_CONF_AUTOHEAL = True DEFAULT_CONF_USB_STICK_PATH = '/zwaveusbstick' @@ -49,6 +49,7 @@ DEFAULT_CONF_REFRESH_DELAY = 2 DOMAIN = 'zwave' NETWORK = None +DATA_DEVICE_CONFIG = 'zwave_device_config' # List of tuple (DOMAIN, discovered service, supported command classes, # value type, genre type, specific device class). @@ -159,8 +160,7 @@ SET_WAKEUP_SCHEMA = vol.Schema({ vol.All(vol.Coerce(int), cv.positive_int), }) -_ZWAVE_CUSTOMIZE_SCHEMA_ENTRY = vol.Schema({ - vol.Required(CONF_ENTITY_ID): cv.match_all, +_DEVICE_CONFIG_SCHEMA_ENTRY = vol.Schema({ vol.Optional(CONF_POLLING_INTENSITY): cv.positive_int, vol.Optional(CONF_IGNORED, default=DEFAULT_CONF_IGNORED): cv.boolean, vol.Optional(CONF_REFRESH_VALUE, default=DEFAULT_CONF_REFRESH_VALUE): @@ -173,9 +173,8 @@ CONFIG_SCHEMA = vol.Schema({ DOMAIN: vol.Schema({ vol.Optional(CONF_AUTOHEAL, default=DEFAULT_CONF_AUTOHEAL): cv.boolean, vol.Optional(CONF_CONFIG_PATH): cv.string, - vol.Optional(CONF_CUSTOMIZE, default=[]): - vol.All(customize.CUSTOMIZE_SCHEMA, - [_ZWAVE_CUSTOMIZE_SCHEMA_ENTRY]), + vol.Optional(CONF_DEVICE_CONFIG, default={}): + _DEVICE_CONFIG_SCHEMA_ENTRY, vol.Optional(CONF_DEBUG, default=DEFAULT_DEBUG): cv.boolean, vol.Optional(CONF_POLLING_INTERVAL, default=DEFAULT_POLLING_INTERVAL): cv.positive_int, @@ -296,8 +295,8 @@ def setup(hass, config): # Load configuration use_debug = config[DOMAIN].get(CONF_DEBUG) - customize.set_customize(hass, DOMAIN, config[DOMAIN].get(CONF_CUSTOMIZE)) autoheal = config[DOMAIN].get(CONF_AUTOHEAL) + hass.data[DATA_DEVICE_CONFIG] = config[DOMAIN][CONF_DEVICE_CONFIG] # Setup options options = ZWaveOption( @@ -382,7 +381,7 @@ def setup(hass, config): component = workaround_component name = "{}.{}".format(component, object_id(value)) - node_config = customize.get_overrides(hass, DOMAIN, name) + node_config = hass.data[DATA_DEVICE_CONFIG].get(name) if node_config.get(CONF_IGNORED): _LOGGER.info("Ignoring device %s", name) diff --git a/tests/components/test_zwave.py b/tests/components/test_zwave.py deleted file mode 100644 index 5c9be9ba22a..00000000000 --- a/tests/components/test_zwave.py +++ /dev/null @@ -1,68 +0,0 @@ -"""The tests for the zwave component.""" -import unittest -from unittest.mock import MagicMock, patch - -from homeassistant.bootstrap import setup_component -from homeassistant.components import zwave -from tests.common import get_test_home_assistant - - -class TestComponentZwave(unittest.TestCase): - """Test the Zwave component.""" - - def setUp(self): - """Setup things to be run when tests are started.""" - self.hass = get_test_home_assistant() - - def tearDown(self): - """Stop everything that was started.""" - self.hass.stop() - - def _validate_config(self, validator, config): - libopenzwave = MagicMock() - libopenzwave.__file__ = 'test' - with patch.dict('sys.modules', { - 'libopenzwave': libopenzwave, - 'openzwave.option': MagicMock(), - 'openzwave.network': MagicMock(), - 'openzwave.group': MagicMock(), - }): - validator(setup_component(self.hass, zwave.DOMAIN, { - zwave.DOMAIN: config, - })) - - def test_empty_config(self): - """Test empty config.""" - self._validate_config(self.assertTrue, {}) - - def test_empty_customize(self): - """Test empty customize.""" - self._validate_config(self.assertTrue, {'customize': {}}) - self._validate_config(self.assertTrue, {'customize': []}) - - def test_empty_customize_content(self): - """Test empty customize.""" - self._validate_config( - self.assertTrue, {'customize': {'test.test': {}}}) - - def test_full_customize_dict(self): - """Test full customize as dict.""" - self._validate_config(self.assertTrue, {'customize': {'test.test': { - zwave.CONF_POLLING_INTENSITY: 10, - zwave.CONF_IGNORED: 1, - zwave.CONF_REFRESH_VALUE: 1, - zwave.CONF_REFRESH_DELAY: 10}}}) - - def test_full_customize_list(self): - """Test full customize as list.""" - self._validate_config(self.assertTrue, {'customize': [{ - 'entity_id': 'test.test', - zwave.CONF_POLLING_INTENSITY: 10, - zwave.CONF_IGNORED: 1, - zwave.CONF_REFRESH_VALUE: 1, - zwave.CONF_REFRESH_DELAY: 10}]}) - - def test_bad_customize(self): - """Test customize with extra keys.""" - self._validate_config( - self.assertFalse, {'customize': {'test.test': {'extra_key': 10}}}) From 7b56fe2af6419bc63a5dfc47269cbd83bec49712 Mon Sep 17 00:00:00 2001 From: Paulus Schoutsen Date: Mon, 13 Feb 2017 00:00:41 -0800 Subject: [PATCH 061/196] Update frontend (#5939) --- homeassistant/components/frontend/version.py | 4 +-- .../frontend/www_static/frontend.html | 2 +- .../frontend/www_static/frontend.html.gz | Bin 138229 -> 138242 bytes .../www_static/home-assistant-polymer | 2 +- .../www_static/panels/ha-panel-config.html | 27 +++++++++++++++++- .../www_static/panels/ha-panel-config.html.gz | Bin 4566 -> 8310 bytes .../frontend/www_static/service_worker.js | 2 +- .../frontend/www_static/service_worker.js.gz | Bin 2335 -> 2334 bytes 8 files changed, 31 insertions(+), 6 deletions(-) diff --git a/homeassistant/components/frontend/version.py b/homeassistant/components/frontend/version.py index 5f039e387c1..ddfb1798c36 100644 --- a/homeassistant/components/frontend/version.py +++ b/homeassistant/components/frontend/version.py @@ -2,10 +2,10 @@ FINGERPRINTS = { "core.js": "adfeb513cf650acf763e284d76a48d6b", - "frontend.html": "addef1d5c8990c9443e97adefd19cc63", + "frontend.html": "55ad0c8eb7ae154187303cc371f61136", "mdi.html": "c1dde43ccf5667f687c418fc8daf9668", "micromarkdown-js.html": "93b5ec4016f0bba585521cf4d18dec1a", - "panels/ha-panel-config.html": "e669c4c0b00eeddd8e05afcac11525fe", + "panels/ha-panel-config.html": "0455a14f1ab63a962462a682f42cd580", "panels/ha-panel-dev-event.html": "5c82300b3cf543a92cf4297506e450e7", "panels/ha-panel-dev-info.html": "1e305a9af8fd6e7be77f3ddf215c336f", "panels/ha-panel-dev-service.html": "9f749635e518a4ca7991975bdefdb10a", diff --git a/homeassistant/components/frontend/www_static/frontend.html b/homeassistant/components/frontend/www_static/frontend.html index d19dadd50a0..a9340a5cedd 100644 --- a/homeassistant/components/frontend/www_static/frontend.html +++ b/homeassistant/components/frontend/www_static/frontend.html @@ -612,4 +612,4 @@ this.currentTarget=t,this.defaultPrevented=!1,this.eventPhase=Event.AT_TARGET,th this.hass.callService('media_player', service, serviceData); }, }); -}()); \ No newline at end of file +}()); \ No newline at end of file diff --git a/homeassistant/components/frontend/www_static/frontend.html.gz b/homeassistant/components/frontend/www_static/frontend.html.gz index f684d31fba3ab83ebb519e77ec7e170194207cba..2efc9e1f0249eb18f0c2a57f24b66108d41cf124 100644 GIT binary patch delta 22234 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 \ No newline at end of file diff --git a/homeassistant/components/frontend/www_static/panels/ha-panel-config.html.gz b/homeassistant/components/frontend/www_static/panels/ha-panel-config.html.gz index c1ec967a861a559d652d7c6ce3abeba680f7bf2e..61a2041d73b6ed703b9115691fca616e5fbe176b 100644 GIT binary patch literal 8310 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 AvH$=8 diff --git a/homeassistant/components/frontend/www_static/service_worker.js b/homeassistant/components/frontend/www_static/service_worker.js index 653fae485a6..0bcdd54db3c 100644 --- a/homeassistant/components/frontend/www_static/service_worker.js +++ b/homeassistant/components/frontend/www_static/service_worker.js @@ -1 +1 @@ -"use strict";function setOfCachedUrls(e){return e.keys().then(function(e){return e.map(function(e){return e.url})}).then(function(e){return new Set(e)})}function notificationEventCallback(e,t){firePushCallback({action:t.action,data:t.notification.data,tag:t.notification.tag,type:e},t.notification.data.jwt)}function firePushCallback(e,t){delete e.data.jwt,0===Object.keys(e.data).length&&e.data.constructor===Object&&delete e.data,fetch("/api/notify.html5/callback",{method:"POST",headers:new Headers({"Content-Type":"application/json",Authorization:"Bearer "+t}),body:JSON.stringify(e)})}var precacheConfig=[["/","98a267101304f6200587dfef9e79fa19"],["/frontend/panels/dev-event-5c82300b3cf543a92cf4297506e450e7.html","1bb68c3df5c14307a2550a0cca39b435"],["/frontend/panels/dev-info-1e305a9af8fd6e7be77f3ddf215c336f.html","c030fa0f7ea7b36610efde8c01091286"],["/frontend/panels/dev-service-9f749635e518a4ca7991975bdefdb10a.html","1bc71eb7620c7b7198fd4b7976d6bc13"],["/frontend/panels/dev-state-7d069ba8fd5379fa8f59858b8c0a7473.html","18694d76e03e1194c734e9819923b70b"],["/frontend/panels/dev-template-2b618508510afa5281c9ecae0c3a3dbd.html","554e7f893ab24c8548813382142207d4"],["/frontend/panels/map-9c8c7924ba8f731560c9f4093835cc26.html","8ae4874622d23d995ddf2a8b0ffa8d80"],["/static/core-adfeb513cf650acf763e284d76a48d6b.js","f5fdf5f1f754e801f9f54ad31a3cc922"],["/static/frontend-addef1d5c8990c9443e97adefd19cc63.html","98a24699dc8a250463337beb0b373c5b"],["/static/mdi-c1dde43ccf5667f687c418fc8daf9668.html","6a3c9317736ca26e3390316335be9ba5"],["static/fonts/roboto/Roboto-Bold.ttf","d329cc8b34667f114a95422aaad1b063"],["static/fonts/roboto/Roboto-Light.ttf","7b5fb88f12bec8143f00e21bc3222124"],["static/fonts/roboto/Roboto-Medium.ttf","fe13e4170719c2fc586501e777bde143"],["static/fonts/roboto/Roboto-Regular.ttf","ac3f799d5bbaf5196fab15ab8de8431c"],["static/icons/favicon-192x192.png","419903b8422586a7e28021bbe9011175"],["static/icons/favicon.ico","04235bda7843ec2fceb1cbe2bc696cf4"],["static/images/card_media_player_bg.png","a34281d1c1835d338a642e90930e61aa"],["static/webcomponents-lite.min.js","32b5a9b7ada86304bec6b43d3f2194f0"]],cacheName="sw-precache-v2--"+(self.registration?self.registration.scope:""),ignoreUrlParametersMatching=[/^utm_/],addDirectoryIndex=function(e,t){var a=new URL(e);return"/"===a.pathname.slice(-1)&&(a.pathname+=t),a.toString()},createCacheKey=function(e,t,a,n){var c=new URL(e);return n&&c.toString().match(n)||(c.search+=(c.search?"&":"")+encodeURIComponent(t)+"="+encodeURIComponent(a)),c.toString()},isPathWhitelisted=function(e,t){if(0===e.length)return!0;var a=new URL(t).pathname;return e.some(function(e){return a.match(e)})},stripIgnoredUrlParameters=function(e,t){var a=new URL(e);return a.search=a.search.slice(1).split("&").map(function(e){return e.split("=")}).filter(function(e){return t.every(function(t){return!t.test(e[0])})}).map(function(e){return e.join("=")}).join("&"),a.toString()},hashParamName="_sw-precache",urlsToCacheKeys=new Map(precacheConfig.map(function(e){var t=e[0],a=e[1],n=new URL(t,self.location),c=createCacheKey(n,hashParamName,a,!1);return[n.toString(),c]}));self.addEventListener("install",function(e){e.waitUntil(caches.open(cacheName).then(function(e){return setOfCachedUrls(e).then(function(t){return Promise.all(Array.from(urlsToCacheKeys.values()).map(function(a){if(!t.has(a))return e.add(new Request(a,{credentials:"same-origin",redirect:"follow"}))}))})}).then(function(){return self.skipWaiting()}))}),self.addEventListener("activate",function(e){var t=new Set(urlsToCacheKeys.values());e.waitUntil(caches.open(cacheName).then(function(e){return e.keys().then(function(a){return Promise.all(a.map(function(a){if(!t.has(a.url))return e.delete(a)}))})}).then(function(){return self.clients.claim()}))}),self.addEventListener("fetch",function(e){if("GET"===e.request.method){var t,a=stripIgnoredUrlParameters(e.request.url,ignoreUrlParametersMatching);t=urlsToCacheKeys.has(a);var n="index.html";!t&&n&&(a=addDirectoryIndex(a,n),t=urlsToCacheKeys.has(a));var c="/";!t&&c&&"navigate"===e.request.mode&&isPathWhitelisted(["^((?!(static|api|local|service_worker.js|manifest.json)).)*$"],e.request.url)&&(a=new URL(c,self.location).toString(),t=urlsToCacheKeys.has(a)),t&&e.respondWith(caches.open(cacheName).then(function(e){return e.match(urlsToCacheKeys.get(a)).then(function(e){if(e)return e;throw Error("The cached response that was expected is missing.")})}).catch(function(t){return console.warn('Couldn\'t serve response for "%s" from cache: %O',e.request.url,t),fetch(e.request)}))}}),self.addEventListener("push",function(e){var t;e.data&&(t=e.data.json(),e.waitUntil(self.registration.showNotification(t.title,t).then(function(e){firePushCallback({type:"received",tag:t.tag,data:t.data},t.data.jwt)})))}),self.addEventListener("notificationclick",function(e){var t;notificationEventCallback("clicked",e),e.notification.close(),e.notification.data&&e.notification.data.url&&(t=e.notification.data.url,t&&e.waitUntil(clients.matchAll({type:"window"}).then(function(e){var a,n;for(a=0;a1Ao7dzq`N8#hmcT+{LXj#7*>P?E?_H3RELm1^H=Ri$1|;_J?c-a(TD3T6 zbyEm!P1LFqx~Qu`i~5~<0b-8wb5pi9IyVjKRZ|Vn`-a!8?Ra{QmA%=p_rU^|kH1(o z<(+ePd~1bQgO8|bg+ANbQq{Upg#h!PmzP-S7f_Zth;KH!+PP6hgYQ@Ee7kxB-M&-p z^$)HD4fMZVIi6W_HOwBa(~_&Nmw1YI?ju{guUC4u8Q-kh5`e*ybdQn%JupE6NXRT8UmdkSO==f_}SC;#HMM9e5 zzunrY^(#Vy&A>X*caEFa^7{0jAK$(8Oy*QGvZ4>#B{YL&gTiDEX;8&%dUj@wE!XnX zIQ2u|JO&8E3{uJCEaxdonIgl`I(O+q)pTab@e(R5+p)yU5t^8fB9R8%_j4{(6mrM{ zp~4_bB0t73@-gX9AU!P4<5X~|BEdrLClExD555qJdZkN05O^m5edT zF-a7cQUxp$WV_m^5kB`7_$on2avsObM

    8KJzmcr15bzEjE{hz)_}>FpGJF5lbNy zkYpJne{xBJa^}OmLn2|ACvo75Bu`jImW6qeC9#Zi!T1j}Y0x-Iq)$Kt?TUDkDSC*q zG)i-_6_POFTRmx*uJ#lFZ? z=x03Tkq|+=(U1a$X%fakAOkM5EHWX4H1`z&AXC5BU;rw_Skw)UKq|~5M(Gt(z6h1X z9D~#V0%1x>dtY0Ut0G02rI<>{h16#%qih7p8E_%8AlQ?;abOfhAbpWi5CK^fvNYj7 zea{o7V#fH^YLUbV>CXgVp9qLK55tK2d4MXQ@WY<;g)BybNr@qeQc)ZyDoztY(v?Uh zs4R}tjo_Hf%Q#CC9t#L!x}VXnbtyfq6^W8O zAp6pshejh~A!HGS4FDv|{h0qu)azn4*K1ix9;rM{6$^3{DV3}8eGDk!c@P9F2!AH) z4a#D*SPN6gIEF0osYFDeM3hn>8P#t>B}KA-ChP;wRwXoRX&|_wij+~FgNj%dE67;{ zc}hhdawc}A6{c^G6zg}JB~%etcO+m6aY6R{UnUj{tLsYy~gOGsnxhZMe;nycj0 zC$msdd7Zl*2fT#^PObK8v>}DjWiT39Cw7aa@*12KL?9i*JUdwNT2T`bTbAP%vx;hz zCXx5hkVH)s_6CRtiF&4Ip)3hyln?MJlx+qTT#qGAZ|oC)vJaegwwO$|qg`7s@Uf8& z*1mPqforCP<*P23axa>HEK($`M`XHrSjUPvUQ6?fwh1Zc`24y4W@?!sR23y@e(Xc- z(a6zU-@nqES5K&OVM_z*nSbtdqwG;#U+bdUsOq1|vOOLAS7c?~4|~fO|vGN%FdYvOTq0vVTP5@~oiInO<~#=+shmS=Lt;LDl^^IQ#5)NI~UYeK^k#$1EaA;LDMa)cs?E6S0F&rN7fPH5D zZrjhE*gf^%(%JIXG>P(deOS4;s+(`v5c%IOpemG+Wlo7yKF(kNLQ}&YBpq*Vn~r$U zbatD_QIA}04#f?&L}v0!q33@-PkY{ZD1U|>Gal}voWN~1PV~H~uLduhrlt(~G{-@w zQVx2HS{&#(=)o1V1N^?EK+&tB9Z=%8-uioxll-NX)g)R+|AHsZiThraPSd{HpT%xqrmonxaW_@pCe#~Xe z{r!vcqk7-Hv!Om=E<_GpJ$|QTb$g5 zZLLe)=hQ&g;9OCg=vd?s&u&t3s|n=_)to9lo*uTsR27{c!v+5cG8yhdXETKjVxCf2R}x E00-rCQUCw| literal 2335 zcmV+)3E=i0iwFpExS&`919N3^c4=c}Uw3bEYh`jSYI6XkSZj0JxE1{?3a6`(HAMjg zU$CmlWV4wzZC;bdsgd$ZEvg6wR@4X-;S+cBTcRG_q3`pF^xsP)JXVt=> zHBBLnGtsL`nxd`-Etq%ug^+VlpPRCE!Mka|teR>7!8f>WT`w?msNBtly$=>*`S^=f zQ{H)Z$G28+HTVbySMal~Emds_T}Wa7^YRiZ^FowmF61{CeB<5dqJj6TcD`M`5#7F1 z6Z8+h5=P+vcI5GWOx z6{P9W>tA_63DwNZhr{)!vaT=^D{1OxyJ0xo6X$C%a_%}~u`I@&dDp?*EXsH+*ETr* z%>vB4R;SMUcOO4F{v3pYraiUj{-b|(Z=4r(Wf05JCv?_1b;NR6t{okJZR^VMpRZ6z zQ~bAEJ9T~q(LghBPRyO>=e4>%{pZJbZv&e-)eNoZgLWyJ!Lk8qGY2*3Vm3WHbHdvd zcqnxg@-!w1L@|N1Ljm>BJWn#ol#V5h7)eDK$3ze*1>~SiX=Q2xGQEB>P*Kx zi?bYU6={^Rt)495kxCOF3@GK1Oj!gxqnw8H!u>IjCo8ky%Nk9sndi( zm{~wXlp)f=*B0gKSYu{ss#A0!BUE$DMxhuLOiCVxdvZ4ppll2(RhYt@qrp+cfTzL+ znsOuXU*cV>F6VEJT~L zoJCe6rIFwm>G>kX)4 zwO9+&Kp8|dC0HUd)H2R6kQD1T#ganVKNI!=W~)*(YiU9LUxLk5G3=8( z(pX;Se#ZfC#R8^Ido|jS!ss#_jhqv=g;EC%%nBrsj$xi1tOTvBk%%3~^NU%9HHwqS zd(ogogB12gAP*w-OwY!@ugv0NeC}hJ{f2~W>GS$krQrMYe#Wr8Y{^MXEe(GD@EZAQ z(vKZTPsp|+SPC<*PA zSG`7gsBusYhjK>}PE3~6EARH!l|hS4E9WQE?c+0N=vWv|ppvzM&mUgB*aXHk-ib4H z9(yA^&zF1V7VUfV<;xsHSt81y9^g}G*A6PM9!tF5*e7JN51jF~m`t{#U0W~Uv5`)! zee0$J-%bn5S6wjGUNrw$q)=Lq$aM3tjurKS7Uvh^B2wP*`E&iv)UiXTE=tt=*oP*- zk)yf3e`PkWo?z#K76;Tba_)7b>``4`>!RAI>YvfH2l+D>?YzUFFO!R%I&pj)mfKJD zCb`-UjW?)mf4n*{z(QxH)<9q24?Xv*`^foSk(G5n=wW_L_fy!d_HDu}enL0spH(}? z`||wG^Cq1v{2(Cn7K3AqF-OhtH!1}J-ZKF7TFgQGp zJot1Qp~3s6UKA|^sNQ|vG~zly8eX^$&2_IQ#5)h(NaAiscu? zs80{O!9N19J=t7h;Pw&jW4}2?9d&u~e?;QQ@lQO8zxWZj_B6NyaDU3dZ~h2SvMeks z;jbtbKY^+{Fzw@nRycou`N`>;UDHQ2=nqY65V3ZS_A2*&54!LpZt^B(`Y;N8Vs$OG znqr|KP4!dSz?>%+>$Ro#4p2Fd?+A*w=KS@x8O<>USJFE};qLDKQ&w&}9QDXI_E6kFi)5z06lVVC^R(xkhw^98G2`Jr%n8_LE(%&#(@Q^>& zcNeWKJ%6`fJTj)u>#Mgr7bPx|WMN86Wo6qlf!^`(rxhgsj-*dKct zbASKh{ixn|?`*J7*b9+ESC8K*Io%#>2w2DWZh&N2x8NQu_ozLxXv4FH^U-&Gmhbf9 zbzAFF_c=DuH8@w;COQ^5#Iu`}{Az-^f;C4b;%}SrZ6Z!iJk06}rvQOdfK`ai097I@ z$yJNJXHac2z6!cE*PGyujTyGqzI3WLpB=t&|6Di_zx{ChFcA247l%7<@;`UUdf%rM F003CTbkG0* From feb2ebbc03dd0cfb86e4eb700cf32bc2063493e0 Mon Sep 17 00:00:00 2001 From: Robbie Trencheny Date: Mon, 13 Feb 2017 00:27:50 -0800 Subject: [PATCH 062/196] Fix AWS Lambda breakage after #5824 (#5935) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Add an optional extended description… --- homeassistant/components/notify/aws_lambda.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/homeassistant/components/notify/aws_lambda.py b/homeassistant/components/notify/aws_lambda.py index 7bb83db7f82..801537fbba6 100644 --- a/homeassistant/components/notify/aws_lambda.py +++ b/homeassistant/components/notify/aws_lambda.py @@ -15,6 +15,7 @@ from homeassistant.const import ( from homeassistant.components.notify import ( ATTR_TARGET, PLATFORM_SCHEMA, BaseNotificationService) import homeassistant.helpers.config_validation as cv +from homeassistant.remote import JSONEncoder _LOGGER = logging.getLogger(__name__) REQUIREMENTS = ["boto3==1.4.3"] @@ -38,7 +39,7 @@ PLATFORM_SCHEMA = PLATFORM_SCHEMA.extend({ def get_service(hass, config, discovery_info=None): """Get the AWS Lambda notification service.""" context_str = json.dumps({'hass': hass.config.as_dict(), - 'custom': config[CONF_CONTEXT]}) + 'custom': config[CONF_CONTEXT]}, cls=JSONEncoder) context_b64 = base64.b64encode(context_str.encode("utf-8")) context = context_b64.decode("utf-8") From 18f38229b228e76b7a8e50c0a52aa30d653b863f Mon Sep 17 00:00:00 2001 From: Alan Fischer Date: Mon, 13 Feb 2017 03:10:34 -0700 Subject: [PATCH 063/196] iTach Remote Platform (#5660) * Added itach remote device * Added coverage & requirements * Updated requirements * Added schema, inline commands, and platform_setup failure if itach not found * Removed unnecessary optional parameter * Removed filename option for itach remote --- .coveragerc | 1 + homeassistant/components/remote/itach.py | 111 +++++++++++++++++++++++ requirements_all.txt | 3 + 3 files changed, 115 insertions(+) create mode 100644 homeassistant/components/remote/itach.py diff --git a/.coveragerc b/.coveragerc index 8d7d58f7f65..0d141ec42f1 100644 --- a/.coveragerc +++ b/.coveragerc @@ -282,6 +282,7 @@ omit = homeassistant/components/notify/xmpp.py homeassistant/components/nuimo_controller.py homeassistant/components/remote/harmony.py + homeassistant/components/remote/itach.py homeassistant/components/scene/hunterdouglas_powerview.py homeassistant/components/sensor/amcrest.py homeassistant/components/sensor/arest.py diff --git a/homeassistant/components/remote/itach.py b/homeassistant/components/remote/itach.py new file mode 100644 index 00000000000..d76c39bf36a --- /dev/null +++ b/homeassistant/components/remote/itach.py @@ -0,0 +1,111 @@ +""" +Support for iTach IR Devices. + +For more details about this platform, please refer to the documentation at +https://home-assistant.io/components/remote.itach/ +""" + +import logging + +import voluptuous as vol + +import homeassistant.helpers.config_validation as cv +import homeassistant.components.remote as remote +from homeassistant.const import ( + DEVICE_DEFAULT_NAME, CONF_NAME, CONF_MAC, CONF_HOST, CONF_PORT, + CONF_DEVICES) +from homeassistant.components.remote import ( + PLATFORM_SCHEMA, ATTR_COMMAND) + +REQUIREMENTS = ['pyitachip2ir==0.0.5'] + +_LOGGER = logging.getLogger(__name__) + +DEFAULT_PORT = 4998 +CONNECT_TIMEOUT = 5000 + +CONF_MODADDR = 'modaddr' +CONF_CONNADDR = 'connaddr' +CONF_COMMANDS = 'commands' +CONF_DATA = 'data' + +PLATFORM_SCHEMA = PLATFORM_SCHEMA.extend({ + vol.Optional(CONF_MAC): cv.string, + vol.Required(CONF_HOST): cv.string, + vol.Optional(CONF_PORT, default=DEFAULT_PORT): cv.port, + vol.Required(CONF_DEVICES): vol.All(cv.ensure_list, [{ + vol.Optional(CONF_NAME): cv.string, + vol.Optional(CONF_MODADDR): vol.Coerce(int), + vol.Required(CONF_CONNADDR): vol.Coerce(int), + vol.Required(CONF_COMMANDS): vol.All(cv.ensure_list, [{ + vol.Required(CONF_NAME): cv.string, + vol.Required(CONF_DATA): cv.string + }]) + }]) +}) + + +# pylint: disable=unused-argument +def setup_platform(hass, config, add_devices, discovery_info=None): + """Set up the ITach connection and devices.""" + import pyitachip2ir + itachip2ir = pyitachip2ir.ITachIP2IR( + config.get(CONF_MAC), config.get(CONF_HOST), + int(config.get(CONF_PORT))) + + if not itachip2ir.ready(CONNECT_TIMEOUT): + _LOGGER.error("Unable to find iTach") + return False + + devices = [] + for data in config.get(CONF_DEVICES): + name = data.get(CONF_NAME) + modaddr = int(data.get(CONF_MODADDR, 1)) + connaddr = int(data.get(CONF_CONNADDR, 1)) + cmddata = "" + for cmd in data.get(CONF_COMMANDS): + cmddata += cmd[CONF_NAME] + "\n" + cmd[CONF_DATA] + "\n" + itachip2ir.addDevice(name, modaddr, connaddr, cmddata) + devices.append(ITachIP2IRRemote(itachip2ir, name)) + add_devices(devices, True) + return True + + +class ITachIP2IRRemote(remote.RemoteDevice): + """Device that sends commands to an ITachIP2IR device.""" + + def __init__(self, itachip2ir, name): + """Initialize device.""" + self.itachip2ir = itachip2ir + self._power = False + self._name = name or DEVICE_DEFAULT_NAME + + @property + def name(self): + """Return the name of the device.""" + return self._name + + @property + def is_on(self): + """Return true if device is on.""" + return self._power + + def turn_on(self, **kwargs): + """Turn the device on.""" + self._power = True + self.itachip2ir.send(self._name, "ON", 1) + self.schedule_update_ha_state() + + def turn_off(self): + """Turn the device off.""" + self._power = False + self.itachip2ir.send(self._name, "OFF", 1) + self.schedule_update_ha_state() + + def send_command(self, **kwargs): + """Send a command to one device.""" + self.itachip2ir.send(self._name, kwargs[ATTR_COMMAND], 1) + + def update(self): + """Update the device.""" + self.itachip2ir.update() diff --git a/requirements_all.txt b/requirements_all.txt index 0a26e1bbf72..d7ebf40dd6a 100755 --- a/requirements_all.txt +++ b/requirements_all.txt @@ -474,6 +474,9 @@ pyicloud==0.9.1 # homeassistant.components.binary_sensor.iss pyiss==1.0.1 +# homeassistant.components.remote.itach +pyitachip2ir==0.0.5 + # homeassistant.components.sensor.lastfm pylast==1.7.0 From bc1d14f9c3f63ea0b0cc1760868ba8c7407937ce Mon Sep 17 00:00:00 2001 From: arraylabs Date: Mon, 13 Feb 2017 05:20:07 -0500 Subject: [PATCH 064/196] Added myq cover component (#5886) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Add an optional extended description… --- .coveragerc | 1 + homeassistant/components/cover/myq.py | 90 +++++++++++++++++++++++++++ requirements_all.txt | 3 + 3 files changed, 94 insertions(+) create mode 100644 homeassistant/components/cover/myq.py diff --git a/.coveragerc b/.coveragerc index 0d141ec42f1..dc44541c0c3 100644 --- a/.coveragerc +++ b/.coveragerc @@ -153,6 +153,7 @@ omit = homeassistant/components/climate/radiotherm.py homeassistant/components/cover/garadget.py homeassistant/components/cover/homematic.py + homeassistant/components/cover/myq.py homeassistant/components/cover/rpi_gpio.py homeassistant/components/cover/scsgate.py homeassistant/components/cover/wink.py diff --git a/homeassistant/components/cover/myq.py b/homeassistant/components/cover/myq.py new file mode 100644 index 00000000000..4fba1614b7e --- /dev/null +++ b/homeassistant/components/cover/myq.py @@ -0,0 +1,90 @@ +""" +Support for MyQ-Enabled Garage Doors. + +For more details about this platform, please refer to the documentation +https://home-assistant.io/components/cover.myq/ +""" +import logging + +import voluptuous as vol + +from homeassistant.components.cover import CoverDevice +from homeassistant.const import ( + CONF_USERNAME, CONF_PASSWORD, CONF_TYPE, STATE_CLOSED) +import homeassistant.helpers.config_validation as cv + +REQUIREMENTS = [ + 'https://github.com/arraylabs/pymyq/archive/v0.0.2.zip' + '#pymyq==0.0.2'] + +COVER_SCHEMA = vol.Schema({ + vol.Required(CONF_TYPE): cv.string, + vol.Required(CONF_USERNAME): cv.string, + vol.Required(CONF_PASSWORD): cv.string +}) + +DEFAULT_NAME = 'myq' + + +def setup_platform(hass, config, add_devices, discovery_info=None): + """Setup the MyQ component.""" + from pymyq import MyQAPI as pymyq + + username = config.get(CONF_USERNAME) + password = config.get(CONF_PASSWORD) + brand = config.get(CONF_TYPE) + + logger = logging.getLogger(__name__) + + myq = pymyq(username, password, brand) + + if not myq.is_supported_brand(): + logger.error('MyQ Cover - Unsupported Brand') + return + + if not myq.is_login_valid(): + logger.error('MyQ Cover - Username or Password is incorrect') + return + + try: + add_devices(MyQDevice(myq, door) for door in myq.get_garage_doors()) + except (TypeError, KeyError, NameError) as ex: + logger.error("MyQ Cover - %s", ex) + + +class MyQDevice(CoverDevice): + """Representation of a MyQ cover.""" + + def __init__(self, myq, device): + """Initialize with API object, device id.""" + self.myq = myq + self.device_id = device['deviceid'] + self._name = device['name'] + self._status = STATE_CLOSED + + @property + def should_poll(self): + """Poll for state.""" + return True + + @property + def name(self): + """Return the name of the garage door if any.""" + return self._name if self._name else DEFAULT_NAME + + @property + def is_closed(self): + """Return True if cover is closed, else False.""" + return self._status == STATE_CLOSED + + def close_cover(self): + """Issue close command to cover.""" + self.myq.close_device(self.device_id) + + def open_cover(self): + """Issue open command to cover.""" + self.myq.open_device(self.device_id) + + def update(self): + """Update status of cover.""" + self._status = self.myq.get_status(self.device_id) diff --git a/requirements_all.txt b/requirements_all.txt index d7ebf40dd6a..5ff4111bcb5 100755 --- a/requirements_all.txt +++ b/requirements_all.txt @@ -220,6 +220,9 @@ https://github.com/Xorso/pyalarmdotcom/archive/0.1.1.zip#pyalarmdotcom==0.1.1 # homeassistant.components.media_player.braviatv https://github.com/aparraga/braviarc/archive/0.3.6.zip#braviarc==0.3.6 +# homeassistant.components.cover.myq +https://github.com/arraylabs/pymyq/archive/v0.0.2.zip#pymyq==0.0.2 + # homeassistant.components.media_player.roku https://github.com/bah2830/python-roku/archive/3.1.3.zip#roku==3.1.3 From 9a5618fe9653b60e61166bd07d3f49d06d452e59 Mon Sep 17 00:00:00 2001 From: Fabian Affolter Date: Mon, 13 Feb 2017 11:20:37 +0100 Subject: [PATCH 065/196] Upgrade TwitterAPI to 2.4.4 (#5940) --- homeassistant/components/notify/twitter.py | 2 +- requirements_all.txt | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/homeassistant/components/notify/twitter.py b/homeassistant/components/notify/twitter.py index 5672429b9c6..60aa2aebd35 100644 --- a/homeassistant/components/notify/twitter.py +++ b/homeassistant/components/notify/twitter.py @@ -13,7 +13,7 @@ from homeassistant.components.notify import ( PLATFORM_SCHEMA, BaseNotificationService) from homeassistant.const import CONF_ACCESS_TOKEN, CONF_USERNAME -REQUIREMENTS = ['TwitterAPI==2.4.3'] +REQUIREMENTS = ['TwitterAPI==2.4.4'] _LOGGER = logging.getLogger(__name__) diff --git a/requirements_all.txt b/requirements_all.txt index 5ff4111bcb5..c452b58b3c3 100755 --- a/requirements_all.txt +++ b/requirements_all.txt @@ -31,7 +31,7 @@ PyMata==2.13 SoCo==0.12 # homeassistant.components.notify.twitter -TwitterAPI==2.4.3 +TwitterAPI==2.4.4 # homeassistant.components.emulated_hue # homeassistant.components.http From b6404d70ecc10f6e4b6df30a7ea56ae7446b9077 Mon Sep 17 00:00:00 2001 From: Martin Hjelmare Date: Mon, 13 Feb 2017 11:23:28 +0100 Subject: [PATCH 066/196] Fix mysensors platforms version requirement (#5942) * Notify and device tracker platforms require mysensors version 2.0 or greater. --- homeassistant/components/device_tracker/mysensors.py | 2 ++ homeassistant/components/notify/mysensors.py | 2 ++ 2 files changed, 4 insertions(+) diff --git a/homeassistant/components/device_tracker/mysensors.py b/homeassistant/components/device_tracker/mysensors.py index 2ba19924089..5bbbee89be3 100644 --- a/homeassistant/components/device_tracker/mysensors.py +++ b/homeassistant/components/device_tracker/mysensors.py @@ -55,6 +55,8 @@ def setup_scanner(hass, config, see, discovery_info=None): gateways = hass.data.get(mysensors.MYSENSORS_GATEWAYS) for gateway in gateways: + if float(gateway.protocol_version) < 2.0: + continue gateway.platform_callbacks.append(mysensors_callback) return True diff --git a/homeassistant/components/notify/mysensors.py b/homeassistant/components/notify/mysensors.py index ad747a7ae93..a2708a51efd 100644 --- a/homeassistant/components/notify/mysensors.py +++ b/homeassistant/components/notify/mysensors.py @@ -19,6 +19,8 @@ def get_service(hass, config, discovery_info=None): return for gateway in gateways: + if float(gateway.protocol_version) < 2.0: + continue pres = gateway.const.Presentation set_req = gateway.const.SetReq map_sv_types = { From f77eda29810d65c6ef314bb6a045e0aa6949ae73 Mon Sep 17 00:00:00 2001 From: Fabian Affolter Date: Mon, 13 Feb 2017 11:25:28 +0100 Subject: [PATCH 067/196] Upgrade thingspeak to 0.4.1 and use the correct API key (#5906) --- homeassistant/components/thingspeak.py | 10 +++++----- requirements_all.txt | 2 +- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/homeassistant/components/thingspeak.py b/homeassistant/components/thingspeak.py index 5f0ce2dc596..a21d44527a1 100644 --- a/homeassistant/components/thingspeak.py +++ b/homeassistant/components/thingspeak.py @@ -15,7 +15,7 @@ from homeassistant.helpers import state as state_helper import homeassistant.helpers.config_validation as cv import homeassistant.helpers.event as event -REQUIREMENTS = ['thingspeak==0.4.0'] +REQUIREMENTS = ['thingspeak==0.4.1'] _LOGGER = logging.getLogger(__name__) @@ -43,7 +43,7 @@ def setup(hass, config): try: channel = thingspeak.Channel( - channel_id, api_key=api_key, timeout=TIMEOUT) + channel_id, write_key=api_key, timeout=TIMEOUT) channel.get() except RequestException: _LOGGER.error("Error while accessing the ThingSpeak channel. " @@ -52,7 +52,7 @@ def setup(hass, config): return False def thingspeak_listener(entity_id, old_state, new_state): - """Listen for new events and send them to thingspeak.""" + """Listen for new events and send them to Thingspeak.""" if new_state is None or new_state.state in ( STATE_UNKNOWN, '', STATE_UNAVAILABLE): return @@ -65,8 +65,8 @@ def setup(hass, config): try: channel.update({'field1': _state}) except RequestException: - _LOGGER.error("Error while sending value '%s' to Thingspeak", - _state) + _LOGGER.error( + "Error while sending value '%s' to Thingspeak", _state) event.track_state_change(hass, entity, thingspeak_listener) diff --git a/requirements_all.txt b/requirements_all.txt index c452b58b3c3..271043089f8 100755 --- a/requirements_all.txt +++ b/requirements_all.txt @@ -664,7 +664,7 @@ tellduslive==0.3.2 temperusb==1.5.1 # homeassistant.components.thingspeak -thingspeak==0.4.0 +thingspeak==0.4.1 # homeassistant.components.light.tikteck tikteck==0.4 From 2ffdf1fdcd9f7cc5344eca32518e7c7f3ac9d7ce Mon Sep 17 00:00:00 2001 From: Valentin Alexeev Date: Mon, 13 Feb 2017 15:28:40 +0200 Subject: [PATCH 068/196] Bugfix/waqi sensor pwaqi version bump (#5944) * Bump pwaqi to 1.4 to fix a typo in the underlying library. * Update WAQI sensor to use pwaqi 2.0 which relies on AQICN public API. This is a breaking change as the component now requires 'token' parameter. * Fix lint --- homeassistant/components/sensor/waqi.py | 17 +++++++++++------ requirements_all.txt | 2 +- 2 files changed, 12 insertions(+), 7 deletions(-) diff --git a/homeassistant/components/sensor/waqi.py b/homeassistant/components/sensor/waqi.py index 699b617b7ee..453d32bd673 100644 --- a/homeassistant/components/sensor/waqi.py +++ b/homeassistant/components/sensor/waqi.py @@ -16,7 +16,7 @@ from homeassistant.helpers.config_validation import PLATFORM_SCHEMA from homeassistant.helpers.entity import Entity from homeassistant.util import Throttle -REQUIREMENTS = ['pwaqi==1.4'] +REQUIREMENTS = ['pwaqi==2.0'] _LOGGER = logging.getLogger(__name__) @@ -33,6 +33,7 @@ ATTRIBUTION = 'Data provided by the World Air Quality Index project' CONF_LOCATIONS = 'locations' CONF_STATIONS = 'stations' +CONF_API_TOKEN = 'token' MIN_TIME_BETWEEN_UPDATES = timedelta(seconds=10) @@ -42,6 +43,7 @@ SENSOR_TYPES = { PLATFORM_SCHEMA = PLATFORM_SCHEMA.extend({ vol.Optional(CONF_STATIONS): cv.ensure_list, + vol.Required(CONF_API_TOKEN): cv.string, vol.Required(CONF_LOCATIONS): cv.ensure_list, }) @@ -51,15 +53,16 @@ def setup_platform(hass, config, add_devices, discovery_info=None): import pwaqi dev = [] + token = config.get(CONF_API_TOKEN) station_filter = config.get(CONF_STATIONS) for location_name in config.get(CONF_LOCATIONS): - station_ids = pwaqi.findStationCodesByCity(location_name) + station_ids = pwaqi.findStationCodesByCity(location_name, token) _LOGGER.info("The following stations were returned: %s", station_ids) for station in station_ids: - waqi_sensor = WaqiSensor(WaqiData(station), station) + waqi_sensor = WaqiSensor(WaqiData(station, token), station) if (not station_filter) or \ (waqi_sensor.station_name in station_filter): - dev.append(WaqiSensor(WaqiData(station), station)) + dev.append(WaqiSensor(WaqiData(station, token), station)) add_devices(dev) @@ -148,9 +151,10 @@ class WaqiSensor(Entity): class WaqiData(object): """Get the latest data and update the states.""" - def __init__(self, station_id): + def __init__(self, station_id, token): """Initialize the data object.""" self._station_id = station_id + self._token = token self.data = None @Throttle(MIN_TIME_BETWEEN_UPDATES) @@ -158,6 +162,7 @@ class WaqiData(object): """Get the data from World Air Quality Index and updates the states.""" import pwaqi try: - self.data = pwaqi.getStationObservation(self._station_id) + self.data = pwaqi.getStationObservation( + self._station_id, self._token) except AttributeError: _LOGGER.exception("Unable to fetch data from WAQI") diff --git a/requirements_all.txt b/requirements_all.txt index 271043089f8..c1123305517 100755 --- a/requirements_all.txt +++ b/requirements_all.txt @@ -406,7 +406,7 @@ pushbullet.py==0.10.0 pushetta==1.0.15 # homeassistant.components.sensor.waqi -pwaqi==1.4 +pwaqi==2.0 # homeassistant.components.sensor.cpuspeed py-cpuinfo==0.2.3 From 6d7041cd4285e31b70b3a10be21fa4df0f1b2f86 Mon Sep 17 00:00:00 2001 From: Philipp Schmitt Date: Mon, 13 Feb 2017 14:43:12 +0100 Subject: [PATCH 069/196] Reduce battery drain on Nuki Lock (#5945) --- homeassistant/components/lock/nuki.py | 4 ++-- requirements_all.txt | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/homeassistant/components/lock/nuki.py b/homeassistant/components/lock/nuki.py index 33058c86239..bb3f2f030a2 100644 --- a/homeassistant/components/lock/nuki.py +++ b/homeassistant/components/lock/nuki.py @@ -14,7 +14,7 @@ from homeassistant.util import Throttle import homeassistant.helpers.config_validation as cv -REQUIREMENTS = ['pynuki==1.2.1'] +REQUIREMENTS = ['pynuki==1.2.2'] _LOGGER = logging.getLogger(__name__) @@ -61,7 +61,7 @@ class NukiLock(LockDevice): @Throttle(MIN_TIME_BETWEEN_SCANS, MIN_TIME_BETWEEN_FORCED_SCANS) def update(self): """Update the nuki lock properties.""" - self._nuki_lock.update() + self._nuki_lock.update(aggressive=False) self._name = self._nuki_lock.name self._locked = self._nuki_lock.is_locked diff --git a/requirements_all.txt b/requirements_all.txt index c1123305517..733c6c4e513 100755 --- a/requirements_all.txt +++ b/requirements_all.txt @@ -499,7 +499,7 @@ pynetgear==0.3.3 pynetio==0.1.6 # homeassistant.components.lock.nuki -pynuki==1.2.1 +pynuki==1.2.2 # homeassistant.components.sensor.nut pynut2==2.1.2 From a8dc5595195a4fbaad0439b5b8eb0ba132f4d4a6 Mon Sep 17 00:00:00 2001 From: Stuart Mumford Date: Mon, 13 Feb 2017 15:45:04 +0000 Subject: [PATCH 070/196] Add support for the Open Energy Monitor Thermostat (#5583) * Add support for the Open Energy Monitor Thermostat * Fix linting errors * Define an update method and local state * fix linter * Small tweaks. Update oemthermostat version, default name and docstrings * Fail to setup oem platform if connection fails. * update requirements * More tweaks to auth and exceptions * Remove target temp --- .coveragerc | 1 + homeassistant/components/climate/oem.py | 148 ++++++++++++++++++ .../www_static/home-assistant-polymer | 2 +- requirements_all.txt | 3 + 4 files changed, 153 insertions(+), 1 deletion(-) create mode 100644 homeassistant/components/climate/oem.py diff --git a/.coveragerc b/.coveragerc index dc44541c0c3..08b93aa4b7e 100644 --- a/.coveragerc +++ b/.coveragerc @@ -149,6 +149,7 @@ omit = homeassistant/components/climate/heatmiser.py homeassistant/components/climate/homematic.py homeassistant/components/climate/knx.py + homeassistant/components/climate/oem.py homeassistant/components/climate/proliphix.py homeassistant/components/climate/radiotherm.py homeassistant/components/cover/garadget.py diff --git a/homeassistant/components/climate/oem.py b/homeassistant/components/climate/oem.py new file mode 100644 index 00000000000..0280f116f1e --- /dev/null +++ b/homeassistant/components/climate/oem.py @@ -0,0 +1,148 @@ +""" +OpenEnergyMonitor Thermostat Support. + +This provides a climate component for the ESP8266 based thermostat sold by +OpenEnergyMonitor. + +For more details about this platform, please refer to the documentation at +https://home-assistant.io/components/climate.oem/ +""" +import logging + +import requests +import voluptuous as vol + +# Import the device class from the component that you want to support +from homeassistant.components.climate import ( + ClimateDevice, PLATFORM_SCHEMA, STATE_HEAT, STATE_IDLE, ATTR_TEMPERATURE) +from homeassistant.const import (CONF_HOST, CONF_USERNAME, CONF_PASSWORD, + CONF_PORT, TEMP_CELSIUS, CONF_NAME) +import homeassistant.helpers.config_validation as cv + +# Home Assistant depends on 3rd party packages for API specific code. +REQUIREMENTS = ['oemthermostat==1.1'] + +_LOGGER = logging.getLogger(__name__) + +# Local configs +CONF_AWAY_TEMP = 'away_temp' + +# Validation of the user's configuration +PLATFORM_SCHEMA = PLATFORM_SCHEMA.extend({ + vol.Required(CONF_HOST): cv.string, + vol.Optional(CONF_NAME, default="Thermostat"): cv.string, + vol.Optional(CONF_PORT, default=80): cv.port, + vol.Inclusive(CONF_USERNAME, 'authentication'): cv.string, + vol.Inclusive(CONF_PASSWORD, 'authentication'): cv.string, + vol.Optional(CONF_AWAY_TEMP, default=14): vol.Coerce(float) +}) + + +def setup_platform(hass, config, add_devices, discovery_info=None): + """Setup oemthermostat.""" + from oemthermostat import Thermostat + + # Assign configuration variables. The configuration check takes care they + # are present. + name = config.get(CONF_NAME) + host = config.get(CONF_HOST) + port = config.get(CONF_PORT) + username = config.get(CONF_USERNAME) + password = config.get(CONF_PASSWORD) + away_temp = config.get(CONF_AWAY_TEMP) + + # If creating the class raises an exception, it failed to connect or + # something else went wrong. + try: + therm = Thermostat(host, port=port, + username=username, password=password) + except (ValueError, AssertionError, requests.RequestException): + return False + + # Add devices + add_devices((ThermostatDevice(hass, therm, name, away_temp), ), True) + + +class ThermostatDevice(ClimateDevice): + """Interface class for the oemthermostat module and HA.""" + + def __init__(self, hass, thermostat, name, away_temp): + """Initialize the device.""" + self._name = name + self.hass = hass + + # Away mode stuff + self._away = False + self._away_temp = away_temp + self._prev_temp = thermostat.setpoint + + self.thermostat = thermostat + # Set the thermostat mode to manual + self.thermostat.mode = 2 + + # set up internal state varS + self._state = None + self._temperature = None + self._setpoint = None + + @property + def name(self): + """Name of this Thermostat.""" + return self._name + + @property + def temperature_unit(self): + """The unit of measurement used by the platform.""" + return TEMP_CELSIUS + + @property + def current_operation(self): + """Return current operation i.e. heat, cool, idle.""" + if self._state: + return STATE_HEAT + else: + return STATE_IDLE + + @property + def current_temperature(self): + """Return the current temperature.""" + return self._temperature + + @property + def target_temperature(self): + """Return the temperature we try to reach.""" + return self._setpoint + + def set_temperature(self, **kwargs): + """Change the setpoint of the thermostat.""" + # If we are setting the temp, then we don't want away mode anymore. + self.turn_away_mode_off() + + temp = kwargs.get(ATTR_TEMPERATURE) + self.thermostat.setpoint = temp + + @property + def is_away_mode_on(self): + """Return true if away mode is on.""" + return self._away + + def turn_away_mode_on(self): + """Turn away mode on.""" + if not self._away: + self._prev_temp = self._setpoint + + self.thermostat.setpoint = self._away_temp + self._away = True + + def turn_away_mode_off(self): + """Turn away mode off.""" + if self._away: + self.thermostat.setpoint = self._prev_temp + + self._away = False + + def update(self): + """Update local state.""" + self._setpoint = self.thermostat.setpoint + self._temperature = self.thermostat.temperature + self._state = self.thermostat.state diff --git a/homeassistant/components/frontend/www_static/home-assistant-polymer b/homeassistant/components/frontend/www_static/home-assistant-polymer index 62aa6353908..5159326a7b3 160000 --- a/homeassistant/components/frontend/www_static/home-assistant-polymer +++ b/homeassistant/components/frontend/www_static/home-assistant-polymer @@ -1 +1 @@ -Subproject commit 62aa6353908851a8fd648a981e9bf06f2a14a6dc +Subproject commit 5159326a7b3d1ba29ae17a7861fa2eaa8c2c95f6 diff --git a/requirements_all.txt b/requirements_all.txt index 733c6c4e513..b83c94a2276 100755 --- a/requirements_all.txt +++ b/requirements_all.txt @@ -352,6 +352,9 @@ neurio==0.3.1 # homeassistant.components.google oauth2client==4.0.0 +# homeassistant.components.climate.oem +oemthermostat==1.1 + # homeassistant.components.sensor.openevse openevsewifi==0.4 From b2d1774293ec004f81f8defd005007790d3b2c60 Mon Sep 17 00:00:00 2001 From: Paulus Schoutsen Date: Mon, 13 Feb 2017 08:54:11 -0800 Subject: [PATCH 071/196] Fix Z-Wave (#5955) --- homeassistant/components/zwave/__init__.py | 2 +- tests/components/zwave/__init__.py | 1 + tests/components/zwave/test_init.py | 46 ++++++++++++++++++++++ 3 files changed, 48 insertions(+), 1 deletion(-) create mode 100644 tests/components/zwave/__init__.py create mode 100644 tests/components/zwave/test_init.py diff --git a/homeassistant/components/zwave/__init__.py b/homeassistant/components/zwave/__init__.py index ed234c3c614..6080454f825 100755 --- a/homeassistant/components/zwave/__init__.py +++ b/homeassistant/components/zwave/__init__.py @@ -174,7 +174,7 @@ CONFIG_SCHEMA = vol.Schema({ vol.Optional(CONF_AUTOHEAL, default=DEFAULT_CONF_AUTOHEAL): cv.boolean, vol.Optional(CONF_CONFIG_PATH): cv.string, vol.Optional(CONF_DEVICE_CONFIG, default={}): - _DEVICE_CONFIG_SCHEMA_ENTRY, + vol.Schema({cv.entity_id: _DEVICE_CONFIG_SCHEMA_ENTRY}), vol.Optional(CONF_DEBUG, default=DEFAULT_DEBUG): cv.boolean, vol.Optional(CONF_POLLING_INTERVAL, default=DEFAULT_POLLING_INTERVAL): cv.positive_int, diff --git a/tests/components/zwave/__init__.py b/tests/components/zwave/__init__.py new file mode 100644 index 00000000000..996bbf22b69 --- /dev/null +++ b/tests/components/zwave/__init__.py @@ -0,0 +1 @@ +"""Tests for the Z-Wave component.""" diff --git a/tests/components/zwave/test_init.py b/tests/components/zwave/test_init.py new file mode 100644 index 00000000000..2bfb8986544 --- /dev/null +++ b/tests/components/zwave/test_init.py @@ -0,0 +1,46 @@ +"""Tests for the Z-Wave init.""" +import asyncio +from unittest.mock import MagicMock, patch + +import pytest + +from homeassistant.bootstrap import async_setup_component +from homeassistant.components.zwave import ( + DATA_DEVICE_CONFIG, _DEVICE_CONFIG_SCHEMA_ENTRY) + + +@pytest.fixture(autouse=True) +def mock_openzwave(): + """Mock out Open Z-Wave.""" + libopenzwave = MagicMock() + libopenzwave.__file__ = 'test' + with patch.dict('sys.modules', { + 'libopenzwave': libopenzwave, + 'openzwave.option': MagicMock(), + 'openzwave.network': MagicMock(), + 'openzwave.group': MagicMock(), + }): + yield + + +@asyncio.coroutine +def test_device_config(hass): + """Test device config stored in hass.""" + device_config = { + 'light.kitchen': { + 'ignored': 'true' + } + } + yield from async_setup_component(hass, 'zwave', { + 'zwave': { + 'device_config': device_config + }}) + + assert DATA_DEVICE_CONFIG in hass.data + + test_data = { + key: _DEVICE_CONFIG_SCHEMA_ENTRY(value) + for key, value in device_config.items() + } + + assert hass.data[DATA_DEVICE_CONFIG] == test_data From 0feb1c3e287383ac48fd0b6e0aa7369fcac5f9f7 Mon Sep 17 00:00:00 2001 From: Andrey Date: Mon, 13 Feb 2017 20:59:42 +0200 Subject: [PATCH 072/196] Add workaround for ignoring zwave devices and reversing cover open/close (#5922) --- homeassistant/components/cover/zwave.py | 42 +++++++------------- homeassistant/components/zwave/__init__.py | 4 ++ homeassistant/components/zwave/workaround.py | 39 ++++++++++++++---- 3 files changed, 50 insertions(+), 35 deletions(-) diff --git a/homeassistant/components/cover/zwave.py b/homeassistant/components/cover/zwave.py index 2d61af4d00e..6278f3636b3 100644 --- a/homeassistant/components/cover/zwave.py +++ b/homeassistant/components/cover/zwave.py @@ -10,17 +10,9 @@ import logging from homeassistant.components.cover import DOMAIN from homeassistant.components.zwave import ZWaveDeviceEntity from homeassistant.components import zwave +from homeassistant.components.zwave import workaround from homeassistant.components.cover import CoverDevice -SOMFY = 0x47 -SOMFY_ZRTSI = 0x5a52 -SOMFY_ZRTSI_CONTROLLER = (SOMFY, SOMFY_ZRTSI) -WORKAROUND = 'workaround' - -DEVICE_MAPPINGS = { - SOMFY_ZRTSI_CONTROLLER: WORKAROUND -} - _LOGGER = logging.getLogger(__name__) @@ -58,16 +50,9 @@ class ZwaveRollershutter(zwave.ZWaveDeviceEntity, CoverDevice): self._open_id = None self._close_id = None self._current_position = None - self._workaround = None - if (value.node.manufacturer_id.strip() and - value.node.product_id.strip()): - specific_sensor_key = (int(value.node.manufacturer_id, 16), - int(value.node.product_type, 16)) - - if specific_sensor_key in DEVICE_MAPPINGS: - if DEVICE_MAPPINGS[specific_sensor_key] == WORKAROUND: - _LOGGER.debug("Controller without positioning feedback") - self._workaround = 1 + self._workaround = workaround.get_device_mapping(value) + if self._workaround: + _LOGGER.debug("Using workaround %s", self._workaround) def update_properties(self): """Callback on data changes for node values.""" @@ -81,6 +66,8 @@ class ZwaveRollershutter(zwave.ZWaveDeviceEntity, CoverDevice): self._close_id = self.get_value( class_id=zwave.const.COMMAND_CLASS_SWITCH_MULTILEVEL, label=['Close', 'Down'], member='value_id') + if self._workaround == workaround.WORKAROUND_REVERSE_OPEN_CLOSE: + self._open_id, self._close_id = self._close_id, self._open_id @property def is_closed(self): @@ -95,14 +82,15 @@ class ZwaveRollershutter(zwave.ZWaveDeviceEntity, CoverDevice): @property def current_cover_position(self): """Return the current position of Zwave roller shutter.""" - if not self._workaround: - if self._current_position is not None: - if self._current_position <= 5: - return 0 - elif self._current_position >= 95: - return 100 - else: - return self._current_position + if self._workaround == workaround.WORKAROUND_NO_POSITION: + return None + if self._current_position is not None: + if self._current_position <= 5: + return 0 + elif self._current_position >= 95: + return 100 + else: + return self._current_position def open_cover(self, **kwargs): """Move the roller shutter up.""" diff --git a/homeassistant/components/zwave/__init__.py b/homeassistant/components/zwave/__init__.py index 6080454f825..b2c471595ab 100755 --- a/homeassistant/components/zwave/__init__.py +++ b/homeassistant/components/zwave/__init__.py @@ -376,6 +376,10 @@ def setup(hass, config): workaround_component = workaround.get_device_component_mapping( value) if workaround_component and workaround_component != component: + if workaround_component == workaround.WORKAROUND_IGNORE: + _LOGGER.info("Ignoring device %s", + "{}.{}".format(component, object_id(value))) + continue _LOGGER.debug("Using %s instead of %s", workaround_component, component) component = workaround_component diff --git a/homeassistant/components/zwave/workaround.py b/homeassistant/components/zwave/workaround.py index 7712c1868db..9522917ed09 100644 --- a/homeassistant/components/zwave/workaround.py +++ b/homeassistant/components/zwave/workaround.py @@ -5,6 +5,7 @@ from . import const FIBARO = 0x010f PHILIO = 0x013c WENZHOU = 0x0118 +SOMFY = 0x47 # Product IDs PHILIO_SLIM_SENSOR = 0x0002 @@ -12,32 +13,51 @@ PHILIO_3_IN_1_SENSOR_GEN_4 = 0x000d # Product Types FGFS101_FLOOD_SENSOR_TYPE = 0x0b00 +FGRM222_SHUTTER2 = 0x0301 PHILIO_SENSOR = 0x0002 +SOMFY_ZRTSI = 0x5a52 # Mapping devices -PHILIO_SLIM_SENSOR_MOTION = (PHILIO, PHILIO_SENSOR, PHILIO_SLIM_SENSOR, 0) -PHILIO_3_IN_1_SENSOR_GEN_4_MOTION = ( +PHILIO_SLIM_SENSOR_MOTION_MTII = (PHILIO, PHILIO_SENSOR, PHILIO_SLIM_SENSOR, 0) +PHILIO_3_IN_1_SENSOR_GEN_4_MOTION_MTII = ( PHILIO, PHILIO_SENSOR, PHILIO_3_IN_1_SENSOR_GEN_4, 0) -WENZHOU_SLIM_SENSOR_MOTION = (WENZHOU, PHILIO_SENSOR, PHILIO_SLIM_SENSOR, 0) +WENZHOU_SLIM_SENSOR_MOTION_MTII = ( + WENZHOU, PHILIO_SENSOR, PHILIO_SLIM_SENSOR, 0) # Workarounds WORKAROUND_NO_OFF_EVENT = 'trigger_no_off_event' +WORKAROUND_NO_POSITION = 'workaround_no_position' +WORKAROUND_REVERSE_OPEN_CLOSE = 'reverse_open_close' +WORKAROUND_IGNORE = 'workaround_ignore' # List of workarounds by (manufacturer_id, product_type, product_id, index) -DEVICE_MAPPINGS = { - PHILIO_SLIM_SENSOR_MOTION: WORKAROUND_NO_OFF_EVENT, - PHILIO_3_IN_1_SENSOR_GEN_4_MOTION: WORKAROUND_NO_OFF_EVENT, - WENZHOU_SLIM_SENSOR_MOTION: WORKAROUND_NO_OFF_EVENT, +DEVICE_MAPPINGS_MTII = { + PHILIO_SLIM_SENSOR_MOTION_MTII: WORKAROUND_NO_OFF_EVENT, + PHILIO_3_IN_1_SENSOR_GEN_4_MOTION_MTII: WORKAROUND_NO_OFF_EVENT, + WENZHOU_SLIM_SENSOR_MOTION_MTII: WORKAROUND_NO_OFF_EVENT, } +SOMFY_ZRTSI_CONTROLLER_MT = (SOMFY, SOMFY_ZRTSI) +FIBARO_FGRM222_MT = (FIBARO, FGRM222_SHUTTER2) + +# List of workarounds by (manufacturer_id, product_type) +DEVICE_MAPPINGS_MT = { + SOMFY_ZRTSI_CONTROLLER_MT: WORKAROUND_NO_POSITION, + FIBARO_FGRM222_MT: WORKAROUND_REVERSE_OPEN_CLOSE, +} + + # Component mapping devices FIBARO_FGFS101_SENSOR_ALARM = ( FIBARO, FGFS101_FLOOD_SENSOR_TYPE, const.COMMAND_CLASS_SENSOR_ALARM) +FIBARO_FGRM222_BINARY = ( + FIBARO, FGRM222_SHUTTER2, const.COMMAND_CLASS_SWITCH_BINARY) # List of component workarounds by # (manufacturer_id, product_type, command_class) DEVICE_COMPONENT_MAPPING = { FIBARO_FGFS101_SENSOR_ALARM: 'binary_sensor', + FIBARO_FGRM222_BINARY: WORKAROUND_IGNORE, } @@ -61,7 +81,10 @@ def get_device_mapping(value): manufacturer_id = int(value.node.manufacturer_id, 16) product_type = int(value.node.product_type, 16) product_id = int(value.node.product_id, 16) - return DEVICE_MAPPINGS.get( + result = DEVICE_MAPPINGS_MTII.get( (manufacturer_id, product_type, product_id, value.index)) + if result: + return result + return DEVICE_MAPPINGS_MT.get((manufacturer_id, product_type)) return None From 401263519df50b074eb51d1069b32c85b46a6d6e Mon Sep 17 00:00:00 2001 From: Josh Anderson Date: Mon, 13 Feb 2017 21:29:18 +0000 Subject: [PATCH 073/196] Only try to pair notify.webostv when not paired (#5967) This allows the notify.webostv component to successfully register when the TV is not currently powered on as long as a pairing record exists. --- homeassistant/components/notify/webostv.py | 17 +++++++++-------- 1 file changed, 9 insertions(+), 8 deletions(-) diff --git a/homeassistant/components/notify/webostv.py b/homeassistant/components/notify/webostv.py index edaab1b5521..476f7b9053e 100644 --- a/homeassistant/components/notify/webostv.py +++ b/homeassistant/components/notify/webostv.py @@ -34,14 +34,15 @@ def get_service(hass, config, discovery_info=None): path = hass.config.path(config.get(CONF_FILENAME)) client = WebOsClient(config.get(CONF_HOST), key_file_path=path) - try: - client.register() - except PyLGTVPairException: - _LOGGER.error("Pairing with TV failed") - return None - except OSError: - _LOGGER.error("TV unreachable") - return None + if not client.is_registered(): + try: + client.register() + except PyLGTVPairException: + _LOGGER.error("Pairing with TV failed") + return None + except OSError: + _LOGGER.error("TV unreachable") + return None return LgWebOSNotificationService(client) From 5cad539859a498ead219e67d8903cfa9395b9741 Mon Sep 17 00:00:00 2001 From: Gert-Jan van de Streek Date: Mon, 13 Feb 2017 22:48:48 +0100 Subject: [PATCH 074/196] Fix slow status updates from the knx bus (#5963) * Fix slow status updates from the knx bus The data set in the entity was an array, not the value. @fixes https://github.com/home-assistant/home-assistant/issues/4407 * speed up status update --- homeassistant/components/knx.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/homeassistant/components/knx.py b/homeassistant/components/knx.py index 8653f33c663..53c414922e4 100644 --- a/homeassistant/components/knx.py +++ b/homeassistant/components/knx.py @@ -136,8 +136,8 @@ class KNXGroupAddress(Entity): information relating to this device. """ if (addr == self.state_address) or (addr == self.address): - self._state = data - self.update_ha_state() + self._state = data[0] + self.schedule_update_ha_state() KNXTUNNEL.register_listener(self.address, handle_knx_message) if self.state_address: From 32fc164df3c351e2b8f1d6b19926cc587687c358 Mon Sep 17 00:00:00 2001 From: Paulus Schoutsen Date: Mon, 13 Feb 2017 13:52:11 -0800 Subject: [PATCH 075/196] Clean up HDMI_CEC [Breaking change] (#5932) --- homeassistant/components/hdmi_cec.py | 21 ++++++--------------- 1 file changed, 6 insertions(+), 15 deletions(-) diff --git a/homeassistant/components/hdmi_cec.py b/homeassistant/components/hdmi_cec.py index 5ed3b688672..b7d6f04c440 100644 --- a/homeassistant/components/hdmi_cec.py +++ b/homeassistant/components/hdmi_cec.py @@ -13,7 +13,6 @@ from functools import reduce import voluptuous as vol import homeassistant.helpers.config_validation as cv -from homeassistant import core from homeassistant.components import discovery from homeassistant.components.media_player import DOMAIN as MEDIA_PLAYER from homeassistant.components.switch import DOMAIN as SWITCH @@ -23,9 +22,8 @@ from homeassistant.const import (EVENT_HOMEASSISTANT_START, STATE_UNKNOWN, STATE_OFF, CONF_DEVICES, CONF_PLATFORM, STATE_PLAYING, STATE_IDLE, STATE_PAUSED, CONF_HOST) -from homeassistant.core import HomeAssistant, callback +from homeassistant.core import HomeAssistant from homeassistant.helpers.entity import Entity -from homeassistant.helpers import customize REQUIREMENTS = ['pyCEC==0.4.13'] @@ -34,6 +32,7 @@ DOMAIN = 'hdmi_cec' _LOGGER = logging.getLogger(__name__) DEFAULT_DISPLAY_NAME = "HomeAssistant" +CONF_TYPES = 'types' ICON_UNKNOWN = 'mdi:help' ICON_AUDIO = 'mdi:speaker' @@ -117,11 +116,6 @@ DEVICE_SCHEMA = vol.Schema({ cv.string) }) -CUSTOMIZE_SCHEMA = vol.Schema({ - vol.Optional(CONF_PLATFORM, default=MEDIA_PLAYER): vol.Any(MEDIA_PLAYER, - SWITCH) -}) - CONF_DISPLAY_NAME = 'osd_name' CONFIG_SCHEMA = vol.Schema({ DOMAIN: vol.Schema({ @@ -133,6 +127,8 @@ CONFIG_SCHEMA = vol.Schema({ vol.Optional(CONF_PLATFORM): vol.Any(SWITCH, MEDIA_PLAYER), vol.Optional(CONF_HOST): cv.string, vol.Optional(CONF_DISPLAY_NAME): cv.string, + vol.Optional(CONF_TYPES, default={}): + vol.Schema({cv.entity_id: vol.Any(MEDIA_PLAYER, SWITCH)}) }) }, extra=vol.ALLOW_EXTRA) @@ -254,11 +250,9 @@ def setup(hass: HomeAssistant, base_config): command = CecCommand(cmd, dst, src, att) hdmi_network.send_command(command) - @callback def _standby(call): hdmi_network.standby() - @callback def _power_on(call): hdmi_network.power_on() @@ -295,16 +289,13 @@ def setup(hass: HomeAssistant, base_config): """ hdmi_network.scan() - @callback def _new_device(device): """Called when new device is detected by HDMI network.""" key = DOMAIN + '.' + device.name hass.data[key] = device + ent_platform = base_config[DOMAIN][CONF_TYPES].get(key, platform) discovery.load_platform( - hass, - customize.get_overrides(hass, core.DOMAIN, key).get( - CONF_PLATFORM, platform), - DOMAIN, discovered={ATTR_NEW: [key]}, + hass, ent_platform, DOMAIN, discovered={ATTR_NEW: [key]}, hass_config=base_config) def _shutdown(call): From e866eeb518c9c4f552a1262cb6eb841b29d6a004 Mon Sep 17 00:00:00 2001 From: Fabian Affolter Date: Mon, 13 Feb 2017 23:04:25 +0100 Subject: [PATCH 076/196] Remove unit of measurement --- homeassistant/components/sensor/moon.py | 5 ----- 1 file changed, 5 deletions(-) diff --git a/homeassistant/components/sensor/moon.py b/homeassistant/components/sensor/moon.py index 3b13e625bb4..2de5b613065 100644 --- a/homeassistant/components/sensor/moon.py +++ b/homeassistant/components/sensor/moon.py @@ -62,11 +62,6 @@ class MoonSensor(Entity): else: return 'New moon' - @property - def unit_of_measurement(self): - """Return the unit the value is expressed in.""" - return 'Phase' - @property def icon(self): """Icon to use in the frontend, if any.""" From 41c2392f8bc83763f6d77d510d64ac1a1dafa0a2 Mon Sep 17 00:00:00 2001 From: William Scanlon Date: Mon, 13 Feb 2017 21:08:37 -0500 Subject: [PATCH 077/196] Fix #5979 (#5980) --- homeassistant/components/wink.py | 2 +- requirements_all.txt | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/homeassistant/components/wink.py b/homeassistant/components/wink.py index 569def22401..0ef03f54083 100644 --- a/homeassistant/components/wink.py +++ b/homeassistant/components/wink.py @@ -15,7 +15,7 @@ from homeassistant.const import ( from homeassistant.helpers.entity import Entity import homeassistant.helpers.config_validation as cv -REQUIREMENTS = ['python-wink==1.1.1', 'pubnubsub-handler==1.0.0'] +REQUIREMENTS = ['python-wink==1.1.1', 'pubnubsub-handler==1.0.1'] _LOGGER = logging.getLogger(__name__) diff --git a/requirements_all.txt b/requirements_all.txt index b83c94a2276..1f81829977b 100755 --- a/requirements_all.txt +++ b/requirements_all.txt @@ -400,7 +400,7 @@ proliphix==0.4.1 psutil==5.1.3 # homeassistant.components.wink -pubnubsub-handler==1.0.0 +pubnubsub-handler==1.0.1 # homeassistant.components.notify.pushbullet pushbullet.py==0.10.0 From 36c196f9e8813b41776bb7655f3d91a188163886 Mon Sep 17 00:00:00 2001 From: Paulus Schoutsen Date: Mon, 13 Feb 2017 21:34:36 -0800 Subject: [PATCH 078/196] Add initial Z-Wave config panel (#5937) * Add Z-Wave config panel * Add config to Z-Wave dependencies * Lint * lint * Add tests * Remove temp workaround * Lint * Fix tests * Address comments * Fix tests under Py34 --- homeassistant/components/config/__init__.py | 38 +++++++-- homeassistant/components/config/zwave.py | 78 +++++++++++++++++ homeassistant/components/zwave/__init__.py | 4 +- homeassistant/util/yaml.py | 38 ++++++++- tests/common.py | 10 +++ tests/components/config/test_core.py | 2 +- tests/components/config/test_init.py | 47 ++++++++++- tests/components/config/test_zwave.py | 89 ++++++++++++++++++++ tests/components/device_tracker/test_init.py | 4 +- tests/components/zwave/test_init.py | 4 +- 10 files changed, 295 insertions(+), 19 deletions(-) create mode 100644 homeassistant/components/config/zwave.py create mode 100644 tests/components/config/test_zwave.py diff --git a/homeassistant/components/config/__init__.py b/homeassistant/components/config/__init__.py index bf05ba9d99f..a664d64a5e2 100644 --- a/homeassistant/components/config/__init__.py +++ b/homeassistant/components/config/__init__.py @@ -1,29 +1,55 @@ -"""Component to interact with Hassbian tools.""" +"""Component to configure Home Assistant via an API.""" import asyncio -from homeassistant.bootstrap import async_prepare_setup_platform +from homeassistant.core import callback +from homeassistant.const import EVENT_COMPONENT_LOADED +from homeassistant.bootstrap import ( + async_prepare_setup_platform, ATTR_COMPONENT) from homeassistant.components.frontend import register_built_in_panel DOMAIN = 'config' DEPENDENCIES = ['http'] SECTIONS = ('core', 'hassbian') +ON_DEMAND = ('zwave', ) @asyncio.coroutine def async_setup(hass, config): - """Setup the hassbian component.""" + """Setup the config component.""" register_built_in_panel(hass, 'config', 'Configuration', 'mdi:settings') - for panel_name in SECTIONS: + @asyncio.coroutine + def setup_panel(panel_name): + """Setup a panel.""" panel = yield from async_prepare_setup_platform(hass, config, DOMAIN, panel_name) if not panel: - continue + return success = yield from panel.async_setup(hass) if success: - hass.config.components.add('{}.{}'.format(DOMAIN, panel_name)) + key = '{}.{}'.format(DOMAIN, panel_name) + hass.bus.async_fire(EVENT_COMPONENT_LOADED, {ATTR_COMPONENT: key}) + hass.config.components.add(key) + + tasks = [setup_panel(panel_name) for panel_name in SECTIONS] + + for panel_name in ON_DEMAND: + if panel_name in hass.config.components: + tasks.append(setup_panel(panel_name)) + + if tasks: + yield from asyncio.wait(tasks, loop=hass.loop) + + @callback + def component_loaded(event): + """Respond to components being loaded.""" + panel_name = event.data.get(ATTR_COMPONENT) + if panel_name in ON_DEMAND: + hass.async_add_job(setup_panel(panel_name)) + + hass.bus.async_listen(EVENT_COMPONENT_LOADED, component_loaded) return True diff --git a/homeassistant/components/config/zwave.py b/homeassistant/components/config/zwave.py new file mode 100644 index 00000000000..ec01e2dad6e --- /dev/null +++ b/homeassistant/components/config/zwave.py @@ -0,0 +1,78 @@ +"""Provide configuration end points for Z-Wave.""" +import asyncio +import os +import voluptuous as vol + +from homeassistant.components.http import HomeAssistantView +from homeassistant.components.zwave import DEVICE_CONFIG_SCHEMA_ENTRY +from homeassistant.util.yaml import load_yaml, dump + + +DEVICE_CONFIG = 'zwave_device_config.yml' + + +@asyncio.coroutine +def async_setup(hass): + """Setup the hassbian config.""" + hass.http.register_view(DeviceConfigView) + return True + + +class DeviceConfigView(HomeAssistantView): + """Configure a Z-Wave device endpoint.""" + + url = '/api/config/zwave/device_config/{entity_id}' + name = 'api:config:zwave:device_config:update' + + @asyncio.coroutine + def get(self, request, entity_id): + """Fetch device specific config.""" + hass = request.app['hass'] + current = yield from hass.loop.run_in_executor( + None, _read, hass.config.path(DEVICE_CONFIG)) + return self.json(current.get(entity_id, {})) + + @asyncio.coroutine + def post(self, request, entity_id): + """Validate config and return results.""" + try: + data = yield from request.json() + except ValueError: + return self.json_message('Invalid JSON specified', 400) + + try: + # We just validate, we don't store that data because + # we don't want to store the defaults. + DEVICE_CONFIG_SCHEMA_ENTRY(data) + except vol.Invalid as err: + print(data, err) + return self.json_message('Message malformed: {}'.format(err), 400) + + hass = request.app['hass'] + path = hass.config.path(DEVICE_CONFIG) + current = yield from hass.loop.run_in_executor( + None, _read, hass.config.path(DEVICE_CONFIG)) + current.setdefault(entity_id, {}).update(data) + + yield from hass.loop.run_in_executor( + None, _write, hass.config.path(path), current) + + return self.json({ + 'result': 'ok', + }) + + +def _read(path): + """Read YAML helper.""" + if not os.path.isfile(path): + with open(path, 'w'): + pass + return {} + + return load_yaml(path) + + +def _write(path, data): + """Write YAML helper.""" + with open(path, 'w') as outfile: + dump(data, outfile) diff --git a/homeassistant/components/zwave/__init__.py b/homeassistant/components/zwave/__init__.py index b2c471595ab..c729f6b2e12 100755 --- a/homeassistant/components/zwave/__init__.py +++ b/homeassistant/components/zwave/__init__.py @@ -160,7 +160,7 @@ SET_WAKEUP_SCHEMA = vol.Schema({ vol.All(vol.Coerce(int), cv.positive_int), }) -_DEVICE_CONFIG_SCHEMA_ENTRY = vol.Schema({ +DEVICE_CONFIG_SCHEMA_ENTRY = vol.Schema({ vol.Optional(CONF_POLLING_INTENSITY): cv.positive_int, vol.Optional(CONF_IGNORED, default=DEFAULT_CONF_IGNORED): cv.boolean, vol.Optional(CONF_REFRESH_VALUE, default=DEFAULT_CONF_REFRESH_VALUE): @@ -174,7 +174,7 @@ CONFIG_SCHEMA = vol.Schema({ vol.Optional(CONF_AUTOHEAL, default=DEFAULT_CONF_AUTOHEAL): cv.boolean, vol.Optional(CONF_CONFIG_PATH): cv.string, vol.Optional(CONF_DEVICE_CONFIG, default={}): - vol.Schema({cv.entity_id: _DEVICE_CONFIG_SCHEMA_ENTRY}), + vol.Schema({cv.entity_id: DEVICE_CONFIG_SCHEMA_ENTRY}), vol.Optional(CONF_DEBUG, default=DEFAULT_DEBUG): cv.boolean, vol.Optional(CONF_POLLING_INTERVAL, default=DEFAULT_POLLING_INTERVAL): cv.positive_int, diff --git a/homeassistant/util/yaml.py b/homeassistant/util/yaml.py index 00508862279..8100c6e5f68 100644 --- a/homeassistant/util/yaml.py +++ b/homeassistant/util/yaml.py @@ -69,9 +69,9 @@ def load_yaml(fname: str) -> Union[List, Dict]: raise HomeAssistantError(exc) -def dump(_dict: dict) -> str: +def dump(_dict: dict, outfile=None) -> str: """Dump yaml to a string and remove null.""" - return yaml.safe_dump(_dict, default_flow_style=False) \ + return yaml.safe_dump(_dict, outfile, default_flow_style=False) \ .replace(': null\n', ':\n') @@ -272,3 +272,37 @@ yaml.SafeLoader.add_constructor('!include_dir_merge_list', yaml.SafeLoader.add_constructor('!include_dir_named', _include_dir_named_yaml) yaml.SafeLoader.add_constructor('!include_dir_merge_named', _include_dir_merge_named_yaml) + + +# From: https://gist.github.com/miracle2k/3184458 +# pylint: disable=redefined-outer-name +def represent_odict(dump, tag, mapping, flow_style=None): + """Like BaseRepresenter.represent_mapping but does not issue the sort().""" + value = [] + node = yaml.MappingNode(tag, value, flow_style=flow_style) + if dump.alias_key is not None: + dump.represented_objects[dump.alias_key] = node + best_style = True + if hasattr(mapping, 'items'): + mapping = mapping.items() + for item_key, item_value in mapping: + node_key = dump.represent_data(item_key) + node_value = dump.represent_data(item_value) + if not (isinstance(node_key, yaml.ScalarNode) and not node_key.style): + best_style = False + if not (isinstance(node_value, yaml.ScalarNode) and + not node_value.style): + best_style = False + value.append((node_key, node_value)) + if flow_style is None: + if dump.default_flow_style is not None: + node.flow_style = dump.default_flow_style + else: + node.flow_style = best_style + return node + + +yaml.SafeDumper.add_representer( + OrderedDict, + lambda dumper, value: + represent_odict(dumper, u'tag:yaml.org,2002:map', value)) diff --git a/tests/common.py b/tests/common.py index 5527a26b63e..ec32d413597 100644 --- a/tests/common.py +++ b/tests/common.py @@ -401,6 +401,16 @@ def mock_generator(return_value=None): return mock_coro(return_value)() +def mock_coro_func(return_value=None): + """Helper method to return a coro that returns a value.""" + @asyncio.coroutine + def coro(*args, **kwargs): + """Fake coroutine.""" + return return_value + + return coro + + @contextmanager def assert_setup_component(count, domain=None): """Collect valid configuration from setup_component. diff --git a/tests/components/config/test_core.py b/tests/components/config/test_core.py index 6492f2fabe6..1db50873906 100644 --- a/tests/components/config/test_core.py +++ b/tests/components/config/test_core.py @@ -10,7 +10,7 @@ from tests.common import mock_http_component_app, mock_coro @asyncio.coroutine def test_validate_config_ok(hass, test_client): - """Test getting suites.""" + """Test checking config.""" app = mock_http_component_app(hass) with patch.object(config, 'SECTIONS', ['core']): yield from async_setup_component(hass, 'config', {}) diff --git a/tests/components/config/test_init.py b/tests/components/config/test_init.py index 1194c6c2b3d..dfe3c3fb436 100644 --- a/tests/components/config/test_init.py +++ b/tests/components/config/test_init.py @@ -1,9 +1,14 @@ """Test config init.""" +import asyncio +from unittest.mock import patch + import pytest -from homeassistant.bootstrap import async_setup_component +from homeassistant.const import EVENT_COMPONENT_LOADED +from homeassistant.bootstrap import async_setup_component, ATTR_COMPONENT +from homeassistant.components import config -from tests.common import mock_http_component +from tests.common import mock_http_component, mock_coro @pytest.fixture(autouse=True) @@ -12,7 +17,43 @@ def stub_http(hass): mock_http_component(hass) +@asyncio.coroutine def test_config_setup(hass, loop): """Test it sets up hassbian.""" - loop.run_until_complete(async_setup_component(hass, 'config', {})) + yield from async_setup_component(hass, 'config', {}) assert 'config' in hass.config.components + + +@asyncio.coroutine +def test_load_on_demand_already_loaded(hass, test_client): + """Test getting suites.""" + hass.config.components.add('zwave') + + with patch.object(config, 'SECTIONS', []), \ + patch.object(config, 'ON_DEMAND', ['zwave']), \ + patch('homeassistant.components.config.zwave.async_setup') as stp: + stp.return_value = mock_coro(True)() + + yield from async_setup_component(hass, 'config', {}) + + yield from hass.async_block_till_done() + assert 'config.zwave' in hass.config.components + assert stp.called + + +@asyncio.coroutine +def test_load_on_demand_on_load(hass, test_client): + """Test getting suites.""" + with patch.object(config, 'SECTIONS', []), \ + patch.object(config, 'ON_DEMAND', ['zwave']): + yield from async_setup_component(hass, 'config', {}) + + assert 'config.zwave' not in hass.config.components + + with patch('homeassistant.components.config.zwave.async_setup') as stp: + stp.return_value = mock_coro(True)() + hass.bus.async_fire(EVENT_COMPONENT_LOADED, {ATTR_COMPONENT: 'zwave'}) + yield from hass.async_block_till_done() + + assert 'config.zwave' in hass.config.components + assert stp.called diff --git a/tests/components/config/test_zwave.py b/tests/components/config/test_zwave.py new file mode 100644 index 00000000000..0a5d38b540a --- /dev/null +++ b/tests/components/config/test_zwave.py @@ -0,0 +1,89 @@ +"""Test Z-Wave config panel.""" +import asyncio +import json +from unittest.mock import patch + +from homeassistant.bootstrap import async_setup_component +from homeassistant.components import config +from homeassistant.components.config.zwave import DeviceConfigView +from tests.common import mock_http_component_app + + +@asyncio.coroutine +def test_get_device_config(hass, test_client): + """Test getting device config.""" + app = mock_http_component_app(hass) + + with patch.object(config, 'SECTIONS', ['zwave']): + yield from async_setup_component(hass, 'config', {}) + + hass.http.views[DeviceConfigView.name].register(app.router) + + client = yield from test_client(app) + + def mock_read(path): + """Mock reading data.""" + return { + 'hello.beer': { + 'free': 'beer', + }, + 'other.entity': { + 'do': 'something', + }, + } + + with patch('homeassistant.components.config.zwave._read', mock_read): + resp = yield from client.get( + '/api/config/zwave/device_config/hello.beer') + + assert resp.status == 200 + result = yield from resp.json() + + assert result == {'free': 'beer'} + + +@asyncio.coroutine +def test_update_device_config(hass, test_client): + """Test updating device config.""" + app = mock_http_component_app(hass) + + with patch.object(config, 'SECTIONS', ['zwave']): + yield from async_setup_component(hass, 'config', {}) + + hass.http.views[DeviceConfigView.name].register(app.router) + + client = yield from test_client(app) + + orig_data = { + 'hello.beer': { + 'ignored': True, + }, + 'other.entity': { + 'polling_intensity': 2, + }, + } + + def mock_read(path): + """Mock reading data.""" + return orig_data + + written = [] + + def mock_write(path, data): + """Mock writing data.""" + written.append(data) + + with patch('homeassistant.components.config.zwave._read', mock_read), \ + patch('homeassistant.components.config.zwave._write', mock_write): + resp = yield from client.post( + '/api/config/zwave/device_config/hello.beer', data=json.dumps({ + 'polling_intensity': 2 + })) + + assert resp.status == 200 + result = yield from resp.json() + assert result == {'result': 'ok'} + + orig_data['hello.beer']['polling_intensity'] = 2 + + assert written[0] == orig_data diff --git a/tests/components/device_tracker/test_init.py b/tests/components/device_tracker/test_init.py index 524eda22634..4f932cd177f 100644 --- a/tests/components/device_tracker/test_init.py +++ b/tests/components/device_tracker/test_init.py @@ -48,10 +48,8 @@ class TestComponentsDeviceTracker(unittest.TestCase): # pylint: disable=invalid-name def tearDown(self): """Stop everything that was started.""" - try: + if os.path.isfile(self.yaml_devices): os.remove(self.yaml_devices) - except FileNotFoundError: - pass self.hass.stop() diff --git a/tests/components/zwave/test_init.py b/tests/components/zwave/test_init.py index 2bfb8986544..8114a872c2a 100644 --- a/tests/components/zwave/test_init.py +++ b/tests/components/zwave/test_init.py @@ -6,7 +6,7 @@ import pytest from homeassistant.bootstrap import async_setup_component from homeassistant.components.zwave import ( - DATA_DEVICE_CONFIG, _DEVICE_CONFIG_SCHEMA_ENTRY) + DATA_DEVICE_CONFIG, DEVICE_CONFIG_SCHEMA_ENTRY) @pytest.fixture(autouse=True) @@ -39,7 +39,7 @@ def test_device_config(hass): assert DATA_DEVICE_CONFIG in hass.data test_data = { - key: _DEVICE_CONFIG_SCHEMA_ENTRY(value) + key: DEVICE_CONFIG_SCHEMA_ENTRY(value) for key, value in device_config.items() } From e70b7ab50938b8252de7bcbb92852ded3874ab25 Mon Sep 17 00:00:00 2001 From: Andrey Date: Tue, 14 Feb 2017 07:48:53 +0200 Subject: [PATCH 079/196] Allow printing the number of states returned by history and time it took to extract. (#5973) --- homeassistant/components/history.py | 14 ++++++++++++-- 1 file changed, 12 insertions(+), 2 deletions(-) diff --git a/homeassistant/components/history.py b/homeassistant/components/history.py index 69ed528f661..991e8a7bbb4 100644 --- a/homeassistant/components/history.py +++ b/homeassistant/components/history.py @@ -8,6 +8,9 @@ import asyncio from collections import defaultdict from datetime import timedelta from itertools import groupby +import logging +import time + import voluptuous as vol from homeassistant.const import ( @@ -19,6 +22,8 @@ from homeassistant.components.frontend import register_built_in_panel from homeassistant.components.http import HomeAssistantView from homeassistant.const import ATTR_HIDDEN +_LOGGER = logging.getLogger(__name__) + DOMAIN = 'history' DEPENDENCIES = ['recorder', 'http'] @@ -215,6 +220,7 @@ class HistoryPeriodView(HomeAssistantView): @asyncio.coroutine def get(self, request, datetime=None): """Return history over a period of time.""" + timer_start = time.perf_counter() if datetime: datetime = dt_util.parse_datetime(datetime) @@ -239,8 +245,12 @@ class HistoryPeriodView(HomeAssistantView): result = yield from request.app['hass'].loop.run_in_executor( None, get_significant_states, start_time, end_time, entity_id, self.filters) - - return self.json(result.values()) + result = result.values() + if _LOGGER.isEnabledFor(logging.DEBUG): + elapsed = time.perf_counter() - timer_start + _LOGGER.debug( + 'Extracted %d states in %fs', sum(map(len, result)), elapsed) + return self.json(result) class Filters(object): From 0effe146194d68527706f468ddbd0101b0bf091e Mon Sep 17 00:00:00 2001 From: Paulus Schoutsen Date: Mon, 13 Feb 2017 21:58:16 -0800 Subject: [PATCH 080/196] Z-Wave file name fix (#5985) --- homeassistant/components/config/zwave.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/homeassistant/components/config/zwave.py b/homeassistant/components/config/zwave.py index ec01e2dad6e..c01f22f0207 100644 --- a/homeassistant/components/config/zwave.py +++ b/homeassistant/components/config/zwave.py @@ -8,12 +8,12 @@ from homeassistant.components.zwave import DEVICE_CONFIG_SCHEMA_ENTRY from homeassistant.util.yaml import load_yaml, dump -DEVICE_CONFIG = 'zwave_device_config.yml' +DEVICE_CONFIG = 'zwave_device_config.yaml' @asyncio.coroutine def async_setup(hass): - """Setup the hassbian config.""" + """Setup the Z-Wave config API.""" hass.http.register_view(DeviceConfigView) return True From ffb46ab541f3e26ee5c721ced512bd60fb92e5c1 Mon Sep 17 00:00:00 2001 From: Andrey Date: Tue, 14 Feb 2017 08:10:39 +0200 Subject: [PATCH 081/196] Add 'days' flag to history fetch urls. (#5895) * Add 'days' flag to history fetch urls. * Fix unrenamed variable * Switch to end_time param instead of days * Checkthat end_time is parsed --- homeassistant/components/history.py | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/homeassistant/components/history.py b/homeassistant/components/history.py index 991e8a7bbb4..d8ff307fdde 100644 --- a/homeassistant/components/history.py +++ b/homeassistant/components/history.py @@ -230,7 +230,6 @@ class HistoryPeriodView(HomeAssistantView): now = dt_util.utcnow() one_day = timedelta(days=1) - if datetime: start_time = dt_util.as_utc(datetime) else: @@ -239,7 +238,14 @@ class HistoryPeriodView(HomeAssistantView): if start_time > now: return self.json([]) - end_time = start_time + one_day + end_time = request.GET.get('end_time') + if end_time: + end_time = dt_util.as_utc( + dt_util.parse_datetime(end_time)) + if end_time is None: + return self.json_message('Invalid end_time', HTTP_BAD_REQUEST) + else: + end_time = start_time + one_day entity_id = request.GET.get('filter_entity_id') result = yield from request.app['hass'].loop.run_in_executor( From 52567b1a48e0f28a1fb2d9c5430fbf2238687cb1 Mon Sep 17 00:00:00 2001 From: Paulus Schoutsen Date: Mon, 13 Feb 2017 22:16:39 -0800 Subject: [PATCH 082/196] Fix Z-Wave node config (#5986) --- homeassistant/components/light/zwave.py | 2 +- homeassistant/components/zwave/__init__.py | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/homeassistant/components/light/zwave.py b/homeassistant/components/light/zwave.py index 89c25059d94..184688a7b96 100644 --- a/homeassistant/components/light/zwave.py +++ b/homeassistant/components/light/zwave.py @@ -55,7 +55,7 @@ def setup_platform(hass, config, add_devices, discovery_info=None): node = zwave.NETWORK.nodes[discovery_info[zwave.const.ATTR_NODE_ID]] value = node.values[discovery_info[zwave.const.ATTR_VALUE_ID]] name = '{}.{}'.format(DOMAIN, zwave.object_id(value)) - node_config = hass.data[zwave.DATA_DEVICE_CONFIG].get(name) + node_config = hass.data[zwave.DATA_DEVICE_CONFIG].get(name) or {} refresh = node_config.get(zwave.CONF_REFRESH_VALUE) delay = node_config.get(zwave.CONF_REFRESH_DELAY) _LOGGER.debug('name=%s node_config=%s CONF_REFRESH_VALUE=%s' diff --git a/homeassistant/components/zwave/__init__.py b/homeassistant/components/zwave/__init__.py index c729f6b2e12..b4ae7396414 100755 --- a/homeassistant/components/zwave/__init__.py +++ b/homeassistant/components/zwave/__init__.py @@ -385,7 +385,7 @@ def setup(hass, config): component = workaround_component name = "{}.{}".format(component, object_id(value)) - node_config = hass.data[DATA_DEVICE_CONFIG].get(name) + node_config = hass.data[DATA_DEVICE_CONFIG].get(name) or {} if node_config.get(CONF_IGNORED): _LOGGER.info("Ignoring device %s", name) From 462b47c7255190b531d69886653cc5b84b98dd17 Mon Sep 17 00:00:00 2001 From: Paulus Schoutsen Date: Mon, 13 Feb 2017 22:25:26 -0800 Subject: [PATCH 083/196] Update frontend (#5987) --- homeassistant/components/frontend/version.py | 4 ++-- .../frontend/www_static/frontend.html | 2 +- .../frontend/www_static/frontend.html.gz | Bin 138242 -> 138349 bytes .../www_static/home-assistant-polymer | 2 +- .../www_static/panels/ha-panel-config.html | 2 +- .../www_static/panels/ha-panel-config.html.gz | Bin 8310 -> 8317 bytes .../frontend/www_static/service_worker.js | 2 +- .../frontend/www_static/service_worker.js.gz | Bin 2334 -> 2338 bytes 8 files changed, 6 insertions(+), 6 deletions(-) diff --git a/homeassistant/components/frontend/version.py b/homeassistant/components/frontend/version.py index ddfb1798c36..1ec137f8c0f 100644 --- a/homeassistant/components/frontend/version.py +++ b/homeassistant/components/frontend/version.py @@ -2,10 +2,10 @@ FINGERPRINTS = { "core.js": "adfeb513cf650acf763e284d76a48d6b", - "frontend.html": "55ad0c8eb7ae154187303cc371f61136", + "frontend.html": "96825e32ade965d406b37dd099393c8f", "mdi.html": "c1dde43ccf5667f687c418fc8daf9668", "micromarkdown-js.html": "93b5ec4016f0bba585521cf4d18dec1a", - "panels/ha-panel-config.html": "0455a14f1ab63a962462a682f42cd580", + "panels/ha-panel-config.html": "7676c0cff482092aea46917a7d2c80e5", "panels/ha-panel-dev-event.html": "5c82300b3cf543a92cf4297506e450e7", "panels/ha-panel-dev-info.html": "1e305a9af8fd6e7be77f3ddf215c336f", "panels/ha-panel-dev-service.html": "9f749635e518a4ca7991975bdefdb10a", diff --git a/homeassistant/components/frontend/www_static/frontend.html b/homeassistant/components/frontend/www_static/frontend.html index a9340a5cedd..f6039c8882a 100644 --- a/homeassistant/components/frontend/www_static/frontend.html +++ b/homeassistant/components/frontend/www_static/frontend.html @@ -612,4 +612,4 @@ this.currentTarget=t,this.defaultPrevented=!1,this.eventPhase=Event.AT_TARGET,th this.hass.callService('media_player', service, serviceData); }, }); -}()); \ No newline at end of file +}()); \ No newline at end of file diff --git a/homeassistant/components/frontend/www_static/frontend.html.gz b/homeassistant/components/frontend/www_static/frontend.html.gz index 2efc9e1f0249eb18f0c2a57f24b66108d41cf124..91ebf400e91387619f0dbb72fb78b616a234ca63 100644 GIT binary patch delta 27053 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�Aee5_b9HiN#EH1e<6@ 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 delta 26869 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

    #m_`*Xkl_#?UD^t^_T%% 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

    #} + {% if panel_url -%} diff --git a/homeassistant/components/frontend/version.py b/homeassistant/components/frontend/version.py index 1ec137f8c0f..8552fa24a0f 100644 --- a/homeassistant/components/frontend/version.py +++ b/homeassistant/components/frontend/version.py @@ -1,19 +1,20 @@ """DO NOT MODIFY. Auto-generated by script/fingerprint_frontend.""" FINGERPRINTS = { + "compatibility.js": "83d9c77748dafa9db49ae77d7f3d8fb0", "core.js": "adfeb513cf650acf763e284d76a48d6b", - "frontend.html": "96825e32ade965d406b37dd099393c8f", + "frontend.html": "ea7529d0d835b6b87109a052e69955db", "mdi.html": "c1dde43ccf5667f687c418fc8daf9668", "micromarkdown-js.html": "93b5ec4016f0bba585521cf4d18dec1a", - "panels/ha-panel-config.html": "7676c0cff482092aea46917a7d2c80e5", - "panels/ha-panel-dev-event.html": "5c82300b3cf543a92cf4297506e450e7", - "panels/ha-panel-dev-info.html": "1e305a9af8fd6e7be77f3ddf215c336f", - "panels/ha-panel-dev-service.html": "9f749635e518a4ca7991975bdefdb10a", - "panels/ha-panel-dev-state.html": "7d069ba8fd5379fa8f59858b8c0a7473", - "panels/ha-panel-dev-template.html": "2b618508510afa5281c9ecae0c3a3dbd", + "panels/ha-panel-config.html": "db9655faf18d5706ddbd1db2ce73afb6", + "panels/ha-panel-dev-event.html": "91347dedf3b4fa9b49ccf4c0a28a03c4", + "panels/ha-panel-dev-info.html": "6d09483730b86588fb3dc4f2242807aa", + "panels/ha-panel-dev-service.html": "a9247f255174b084fad2c04bdb9ec7a9", + "panels/ha-panel-dev-state.html": "90f3bede9602241552ef7bb7958198c6", + "panels/ha-panel-dev-template.html": "3eeabe4a47ac6bea5b7af0f2b7cf5e90", "panels/ha-panel-history.html": "8955c1d093a2c417c89ed90dd627c7d3", "panels/ha-panel-iframe.html": "d920f0aa3c903680f2f8795e2255daab", "panels/ha-panel-logbook.html": "7eb06cf9fdeab6683bcd755276f571aa", - "panels/ha-panel-map.html": "9c8c7924ba8f731560c9f4093835cc26", + "panels/ha-panel-map.html": "970f1a71ca1807fc7f6f049b5f38dbb0", "websocket_test.html": "575de64b431fe11c3785bf96d7813450" } diff --git a/homeassistant/components/frontend/www_static/compatibility.js b/homeassistant/components/frontend/www_static/compatibility.js new file mode 100644 index 00000000000..c152c50ddfa --- /dev/null +++ b/homeassistant/components/frontend/www_static/compatibility.js @@ -0,0 +1 @@ +!(function(){"use strict";function e(e,r){var t=arguments;if(void 0===e||null===e)throw new TypeError("Cannot convert first argument to object");for(var n=Object(e),o=1;o17mM(aA9<5Vrgt?ba^gna{xt=F>k^!5QX>t3X>tSg@s_n z_0)EzLpQ|WgmZA~o}lngrF;B z9(-SxegQZJCRar$ONrZRXTx}?VIbh1P~h-bGL7q>2(IfwgV*a+?!gCy44h)?;yzXA z%M-Gmt@OBIADVuum- \ No newline at end of file +}()); \ No newline at end of file diff --git a/homeassistant/components/frontend/www_static/frontend.html.gz b/homeassistant/components/frontend/www_static/frontend.html.gz index 91ebf400e91387619f0dbb72fb78b616a234ca63..35129fc4ef73416507a9b9f7af55daa4538f132d 100644 GIT binary patch literal 138342 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 UzMv)tve&`?0+v#S4kDZg0BrnWtN;K2 literal 138349 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�uN>1a9-Ob(g0Ashqc$_yBRr( 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 b{zle?{9`%4!$+>cvwzy<%y?Sw2ZHn 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%0AS*JOQi({wn*R-81hz_Q2 zn$Dq8^US;z-WzjmuQlV1{`G%5gf}|`QEFW}Cb}Y@Nsp1!E@_iZdb#IHsFIGosr|>F ze*R@i@`TguvF?db_5?akw}Y%`l*+Q-R51DZ@$1Xe^FLN2E?9cTyB3qSnU+Oh?fW|ukvfy(jZRS3 z+PkDRO@qu1W90}WgTu=x`5k!8L^gXsPO!*=>MdRrv+Ic~?H4Vx(v2bv)1_mRblEPm zm1Zn$Wxj#DcmNqIN)IuJhU@L8qG>>~(0`eKT}g(eNPlUDNa@4sW`gzUrl<5vVF4c7oSCXBkKRKWdu@Np%4{P79o9D{TS;9Hf9bh2VdT8fq@$ zJ3ALYoo|npNH1JTHDWC&^T>6zrs1Z{lWnrvKUZp*k5q1Wf3?FZ@8G>2;^(S zoPO`j&cv$4U#o~1C45!y%zm=c%R7?6%M} zkoD|hOw0{V>y_*0#O#wNu%sLodfIqn=AW6UY6i9SL5-PW&mtAJB5!)B2hm3+?#ZX} z#AL!Mx)3SB$G*S@5e*C=NDbD`*#!vNKy%~J1CN73l#ZbOh|4k zwd`q|8b~isU0RNKYS{l~RTeC!H%gE%iDUFFWd`g71bRfh#5F-p9V|aiaRU*ML>T=#3mzQaT*%w zOh)iY6b)(`5lK9fG+*8ux2@2@lXNQDw-I%cc?g4{lgYC3luzmEb*DEGqa!9X7`Gmxqrl&O%YV^$^ITnrZ+- z7*w|yz_@Y?@%!oU6a9ZD7TxW_@S-dnE#msit=Z4F|NDQ}6&0b%1)FKr{4s}Q?v=FC_G5!O-L z=AbZBlkO!lSbBeI8|-r3%1_S^4=<~Z(=qo(k_eaLnabn}@{tOVrdI5S851LM7|R-S z7)Xx{q!SfagKcmfJa+pBbp6vc&QVjqg&#&;xrO+p8_4SGxP5D2PJI3F^vmZP_@ntL zv7@=8_(za)hJvgW>3L*rM#eJtO#A4|xDPA$mJ@w9C~be8IhDvF22x$x*Tb}RG`G+MEzK*8Q$)Yg6LuZiJZ~w-ZVEceQ!I zvN`yTvPj_?Ix#vB<1eN5_Mq&~7f)#2*NuXSGIS_?L>^ZKia}Rwgc*>wQ_3 zjqvn3FfNY%nay&$QolSu{PcMhS(rxfv1xc|HoAW}t)U#l(qZ2d#h}malNlL9l9;;0 zW7Bxm^i{)BGcz}nO`lZYFSGDn&Pou%oqeprS=-Fg1)C7Mt)cgaseSzL?em9Kn|8`s zMVi4u4u#5(m{k{NOOSAvu3Myq@1-Kue|z0JDOV0cHJ2iVnQu1G@fnGZ&Mu7vIxh1}Y726Rq zKtO#@T{EH58RBn4C0mogkbq$Y3spV|lrDczW=isruodj51>n1|&^5r=T41Vy-q;e_ zO!CQQP_#uTkJMsAu9p@_l1zHzZisGsN|ga`b|l>!Hyw|&E3MnzOt{oTI=!(<`=Fdp?8IDzfXRc2I3LcgPPv=|1 zx0Md%G%4D@WpLeDkqg?i)=TMbvc(wXCrGgi&I-T zg85Fg*v<9ObPhJ}&BYYXk0#7>7M|baOi$G3hLsAORA%liiQ*{hFGxQ`I`ifWo4dQ2 z2vRa}JwmbT?PPvlRa;?pt0PV(A&Qlx{o>_sj~(rp?K90<>PDrk>ii^@A3T3tB=#G= zYw?MEFiB-euG2h+NS@fUd1F65etcOGejS6f=RmeF^j*rLj|uY^j8Ovcis$b$W4K|} z4MDLRF$=fo!Av8Df}N5(8Q9G#eUARL^Vz3cDS8Ek131o(|Nq{&wRb;!ynp}Kcfb7n z__9`ja82xa3eMOjPX0S;cfEgEviA?4@#n{<_utm(*0#X&%`9ezl>@EJJy+j1-5mo9 z+dAvl+jJ)O)u`LPmL8iHABT3ntqdsi@KJ2Zw38Q|HUe(1-u=5@9`66TT2H-o?l;Tz z9k=y;)pJXrT-i6~rS;|q8u-sEERtoo zeq4a-R3zy`3yI8Nyd&|;Q#Av&Jy4p(?6y{^b(lc9T)A_%P3T}q^oAmB&O$?eWt_}% z0=5(+E*J^xCI_(@c+;?n^zVqk_0r1(6Hw|H4;a-sTMT(8FKPT)61bTspP9qZD4Jf9 z-XIH&*B98gm*veW|8ak+@)aW)aF@)`Ry~CNNCXf_RwE zeWrR{PM8RNS?uu?Gt0{<)Z1nL`NJ~29rska@=^f^5_zcxQs)BAnLB%->pAB^Xjsr3 zi~IcM#XdjX;;{Y=Bg*;h{^w=-^X}`B+UhG8%Ot3pz) zfS!n|M!)M_5mO>aG7<-#&B!D5(`2qzcxuYX>54~l|E-J<$zz>oq~5<>sGsv>#yt6s zI#Pvbpb$nsnA1W{9gvfHGe^~s4blub6Y2QjE{epLQ=Ya)mESlfoupL}fL=(WFh5By zH4;OPlscn~UNV1dVWm-Uu<}Gh-o$LW7vYqIZgfZfm@=DYeykmuzOl|`3LZRvKiNr-G}3B~Pnr(5 zj+}y|@W_zP5|ZVUjh3J+P0r_d0*n=$$lVyqnN`?y0=7p>o|27~s&$kgf>s3E;oLsm zv(@4xZ@vwGd;I*eTBt5ZIJX=C-BMq`t;RnMU6~L9k}A==N0D{NC$>y8;}ViFww;Ph z>R^|(UI8F~zGjSAEb=68HL2(}>}||xHv%V-HwJZvj_4TW5DKbY&0Y$+ds;}K3w7Gn zbWlThOFyPoHc!_i5lkGPgS8P$R{$Up4pc2uCq{&WDVOG%(@7Fq^963;2|xqR7d*KVO(~Q)1rDu zZY;3AS3JEyCWm*X_>$~Uz+N9&2g;Dks>I-Sjko||rRhoHlu!+fX$9eIxij@6h389l z7Co#B&Y^k9Z;yJk1_V@Apcq|-hbPLZWN+Hj0Jl*xR_#a!sBx(()Z~KbplZt7@6i^F zo&d~$MPvh$gF{_}Ly$e4?VzH^dbr1%xh*l3F-CsYbUlSeX4Y$33IS{zt`1%7;8r`C z-*T&+qE`zkEhLpJ!?^xa$2-tS!8eJ@?xap9Sx5=Z((5sF^tw4$>DXYy!XWmSP8|BB z!d5Yr09%(+dd!>0N;YM7_%1j_oIpT`X6OFM`sqGj&6a7|lzc{62 z>&2{fQB{8FxT*TI${C zB~Eh~jGnLs@Uo*|nx%1Vt=U27vIw-wpg3aRog^x1+6B@pH6^?dk9}!Ug+`};OwKOb zM1#7-wl#Vi>8G88U7ifa0TLfjZs*i5d;Wxl&zgy4PsBT0AS^a8t7id3EwMF&Gw{3` zsyXw@BSTxKB4~Y}!adVDoY&H>n#ZG&$Qrx$a$sXLhk4W?tq;OZbO+Np2xdXk@0JEM z*`{iA)^^e|MptJ=Kr8VSk?g*IC`YI1Ae1+3O`_j8v!@RAs$4-O&)9eSUXlyz)k?`@ z>ZKNVGniU6+sUi&t}n&eXkJgxpYC5Cmqbngm=UBGL09ByCzs;iks1kVNxbN;G9c=fw4D?-qKwp^rM=I++YKEpdPpv7F^9f zNVGhe;SWwg&%xB?zZ=;w?3<=p#z+~%F8CR_o+3v<_I`y5j>@PPh6$pn9CNM_HT*FW z5a_XnbgTR^{d{{grN}~mvOEKy)CyxscuWMT?-ZQ0-ZMV^(l8+UQFMAt$t*$8tfjVGMb6O z34BAL-5aOEO-n3F0;$QOMPLoNFlH_r-|#o}c7J~B_$2n_0_%mvE;SdHrlp(la>|5()*x`Ij^t-pPG&& zreXV_e)M>WmNuEEMOi8k+cKE*;ePSTCSz%OYwgThQ%c9Qd?nE6Nz)7@Y0~A)8=?)9 zeZ);T4hR>-SaF7Ab`{llCyMVtV3E)}JGsOr#I!W{m@{O5Lb`;6qk#stRHy+YAXH{? z#v*041l^rtQxf$x@a7(s*8#$bK8BPx;!w=qnl_P5BYnh{S@9k?L8CCbvvg3T+8TwC zKw=pX>m0JW4#|a7X(I;KP>ECx8nriesyQg{oNzD))wni7crPnJgD|Hy?ffTI8tg3O z!&6Zo(TpvBDyg$Dm>2~TXFn*!87w(=vFp;1#$6=m%@jMjPCNH)qy5{%^UJ&UPg9G% z5jthspa07ofSVYvnmx#3<3oijh-}X?`6TI1yb@4PAVo~)4K>%IUo}&wONeI|VV0Ye zlPF9H4pkP=xxp*mo3GYRoAAoo$$|`QBB1FWfh)FykXk^Zh*G<#G%+z$}rYziTv-Sf3Af9cG%e_r{ zMht>~qo*MIFUp_Tkml%5`q*#CWIDDBDy6or3Od6;6Jr{UG-ZzEY);Ntb)j%~kh_Wn zvh_}**>Nk%1d^7FNxO&;oNbO9d)aFHgIYh-|MT$h<@3Wo)-gPC8V1@*75RHTGdHr_)m}X^iLA8xLU6O&A1JZ1+E-pbHl5tXtXz6g=+ikL9VC}e>HH?I zJpyR)bvHuC0*49_8^nhH^Z0y!0|(bCA3Z`>9jEl#^xy4Q?4|PUe(LwV_7hA5OJl}= zYqX|2fIS$B$iLi*P+;TMr4eW8f>8kjoV3-Mvod8l+&tjR$+pRh zYct9Cj`<#&4Y=*=V;vB-3vj*cNv_?hretJ3b;%WMV*4efrvwY?xMt#3q>fjrQB*(ZZ%|mo3Jt~GO(Z;VMd2T z8G(#too(%!VZEEIoVWrT(m2~@oCsHH3Jqg1CISdBdQP5o5iOYb{1>k0NbYhebwLP}yc(dS%_r1zZto(q`oT*81=pEw?OZ zx4>LV*~w-x@%9l-NN;%b$n+s1Mi6SrQ#AE~UcJl4_s z5!f&xE@$BcNulPIfk{~zn5@4~Hfy`=Y|CTn@)YIf+so|idfL^0K?E4gKd0O8Zyx(! zAAVXsb@>-ih$b1&A6A--bu;(wO-qL4`CzeU`U^XnVPZR5hTn`f;RL)0uw)vJ&i91n z0g(yoJl|Dr!$N<3czIbf0jcO)*g5Z_m`!nNTNFST?z$Nf7&@k0amXm5#AoqCd}n7-=C1z2!>bHIYXc03geFXO6p0ZWz?|s6xK+bZT;41CB8qYKD;r zB;9Z6;yAExm=ab9ga&|^afIF-C_}hs;xFSPB_Ti*Lx80ZK;@4139V2^ALz+8Vv@m8 zJyH}*Qor0fQz4Lx4*MqES=;60V037k@b?*GP6}hirIX{gRPiVh1xy ztJ~Gx-rnr?9o*jP_Hh{_o7kFI9||KopZ zMBHx>H7|58>1$&QW0Ig5KV15Nj`{~mFhHHtju;gGK2|#k4{#Df$=7q-a!^pUTVy!8 zOJ2K>WK?zG)4`Von}h3{#z-Qr#&Kw-R}Nh9_0v?=xt4i^5+$J%Zr5WSj;J1TaZBWI zUZ>$GEzo64g28-p+g9IgjSD|K-9LYSSO+uV){YKeY^%Uw#_?lE0ai11$Cng4wT}hO z73mU;nh@!$2TAoDk`zuWL3ab@+pub{9Ze`##!g*?4debIpyWt~?Nrya>)h5QBbI1| zb_*~i8@B(%(a;vBd#x_s{c!*OuV261zrP`Rz!d?kJ!WeP8`VBT+}P7A%f5d=>#9dv ztZ`^|uU_i?{Zht_4ysa>$s}oYU6w|F1&Li&r9^NM`z)m&CPwg!*DtqC-^Ful2WoFs z>0H@^zpzJ7HrvKmdd>t+w*HCwRY6a^9-#ijhmJ{q<1=p^dO2-pY*#(;c7br<(?v9j z9OC}G0UHuqd`To0=kr}i;pN-&ny}4YC*hrImsbvYs7z%8O>Vt9-?(&r zX={dpI_Dx4x|*O)*plk6cR9MITL>=-QH+0m9QA4bVvbI zgzSmEjBSzrsEYRCC5=H@M(Mj~t1)-qx_=e}y$&Y4H^+X;~;ao=aA?cD9OOGl0QV6zyu?%;lzJgKyMMlINt;DoXc=?&l z(H#wNfRywD=DHOKWrkQ$PR?i( znYYLQQf<`;Int>al)DP(G;celrw@;-fDqD)qxHDNgYSPCnz5V+NsWw5d#Ymrnn5Qz zHmf*VE_z^A8fsNYR0r_e0#JSf(`(ReANG({lNgzK+YFM`4$7x8wh}~4hFA{`#D#Ir zG^-e8xpjY+&3lUx^sL(|BA-P<))bKU%z{X5hBfDz0kAMMFxES(aRRcll4^1fWmb*y zJxFiyMI4B|AQV+o=C1rYkdLQXzB4H)K`VFKB45l7@O(2;pUf-tZt6L_ih=1zz4Fd_ zftoJ15z3nkjNqZklk;$~;p?OcxTSk0Q@qUO8K!>+h}+Uy41*%Q;V)L&lIq#W*E^(Z3|7`@Rx#Keq4ImOV|2#42D(}%B`8v0vM$P0f?Kd4Fe53MY#YmLBr@B`wIy(#5<$vgc122`)TU zrn4ULc?{kT?C*oXQQ69awx6t+;#p9yJ2RkAjdm(VG~R<~caICUUMmKU2`tAYcz3Pa zb?^M~{)d%#tTAG%oG;OFhG4>ybX-a+EsfQxF-g5>G%3oq(^;Ivs{4a*Nh*aqo zOSWy=iG>OiAQ`iRL=O3XP`N+-@Zo;tLNH+FKxMs#;7LIIr~(u_Sk{+djUtjZsZ&CH zV7Z$6I+plYCL9V`0Li2TO6bOAnDQLW9&QkjlU#vA-YDgll?ec<(^KRlBJgwSzFRWA zN3bSy(`^X0d|ay4LR5CFlKiU@`I~=kZCcH-Cv*ZdHu{s>us>bT9eHr0w%1-7PCh<(b@j_D@Ib--WX~bkwi8RC+PI6E;+Gu|~(FvVC z4Omy6%o+V+JYF^))4TUipFcmme_48`I$M2X)ve$_;M$vI@_Jek59?ZX=3i8HI}SLV zb0D{XWp}0;I<=`oJVAtPDm2zK0iyX(_&o-Kz6Y$=xW)=xfUzG#aWrRQ?13rUGr4%2 ziz~~{=`<>bycLhEGxFZd@R@(xjqk_f#YN_O^!=PVh8!h@-n9HX7)~&5H}rQO9>4xa zRN}w4s)Au0;?!$!Sq2>RQS-lIyQUEqW>-~lB-AWR z^xD{24)UUy=9-xBMN^g#VRc$6?W6-o6Af*`9&H3z5%yV`V^d&yw9;3rN<~UOvz$dW zDJ5sxeFOBDj3ZS6Y(Rf$lC(L3)=k)qoWj9%nRyaI9HvPq)c@{iwHM`Pnw5SJT}gaj zYyw)D1*)dkTnK+O<*kfz2HH1yGX}vrRrfXoIg-h4wVB07Ot!WsY;EjJWzKGeywa#8iBX#`=xUlxgA6Lh$f{==iwKF=+tJsb@1MV{ zRGBYL$<3OQn>8hOZA#{&TxB5B8&k8!RIM@PYh#L+#uR_9jmcjdlefm?tuguDnEa(N zMKz{$X-u;H!;2be$ zl`jn{Um8@pG^liKP{|rpvIdo|4Juz7lr<#7re>PLT^f`KP3lR8S(9?tCgrY8N|W*~ zu8U@LWEg)=W7yQ;9!S4+G_iGL?U`Gofw~{*yJ^ZiBlXfUZ4yjkCul zus=OmxP!GqYILD%DB%s6^heBc(yKS|^UJ4?Y0Yt)3eEeshM_esL!$v1u7CpI&CzW@ zN*FxB11wmCRt^9<;zkhB@Mg`)SWp6hKyk*SQUOz?kh2Rz7)f|UW_DQ$3D23>9Zeq? zi6MU_&K*<#sH0xJ$^UczxBIW}pC7+0mIGnWmo^rCH2 zK1<*45k0OJOtSt5F-;G7;yb5R?wzwFqz&hl$Uq2iauZ#QZSI=!&N-|)vz|R(%Xe}z z8Y#@+L`!Z|T4ec4X-TJTCM^^D-gd`%TFHO5SvbRJ0)kg!!b>x%BFJn>nG~WaL&s5P z8B7j@adUpmbWh(7G`FwKNDDgLbM};_yOkLMVh)bGi_E!d=i~4smR4dkwK9Z6xgH!r zFr+JXK1a@dvf!*}_rle?(6<9*>v~%ho_$~}Au-!3ef(#u0LFGX&T%EQ@yO@fL!Bgh|m$j8|ueYF*T`T5KGMP<`TCg(O#FeRCU zDg;xiNvtB&*1R}djrlc3#u~+5c+gevg}>Jk)=2F-r_7i(QcYtqZid4=zOZK?!GaT9 zW?zJ!=X6PKv5M-FtEBfF`JW;zaWsE!1_td>tOJB)ci9f8t!v;-n+K}*CxHR(5R;n9 zHLZ1}qmt_ZNtmPR7I54H6#Otl%f<;ricL+na0UYQmr_YAZcuYchG~K`-KfL|n=>bZ zC?1k>3in6M5af!@ykbnIeb`Jv7a7JZ&IETRBkGYIggoTP>?b`XnfgOkrzn2~0qsk! zsr&t%lzGF~M=pVMmpC~&OTuget3{fxXX0SsY&sad+moH@`LqIzJv3lM9ulRPLvlx; zE*b7Lm*n+5R)={c8vDu-R*7BUOOru1?tmPRG z*c(&I_qNB}gf%|Qk}Q{IBziSJVO-e$K<-Y~0KI_1Y=O$%u?hOYOih2A5^IvmhoI$j`EbbyoU&G#I|Gh!-O0C2+0mrze~!1P!h#}J8$aZEon`;r&$;-oU}>vdfq22%cbAqwOB%Z@ZH8L!$Y`YI;<)eS?zg{lHsUYQCJmD#xGMnl`{sB zv2=>MuaqZis(L_n?i5#tq60~`rpn5cPzFW;rdoWZc^6U$YPo;c8nzFW4@|E+zGDQ3 zvq{?otcxUw0}6g(b3)=&TF*?OvPgi-YKts7+wvFLT{@MS>(12O52PUDaT zI#Y-^if2q*U4egoNELr4nc8bG)un1!h^CcnLA@rDvMJ}xb0BI+OCQOq*(M=K7BEvV z!%-pGZ1061$dW;f^X)T=d?a`k!C3U}ikot_RH?2KW}8Ply>!kpX(N4o5yN~NgPfNt z2*DUd6HzzcX7wDexAE!&`})gDYMf+TCi?s+ya0_r>CE~B+)N|-1Gev#wV_>BYbz&N=HPI7V$`EJg2L1!AHRQ|~F z_VmcZ%T1}}%(;T*&?R*C4Jr-LBnm@y#hAu=OD1X=7u%feYT7Qj1Bx`urAkS565`R1 ziy773izR4i5&#oQ@I+fC?`c@7}g?ab>=jW$S4?jFT{dEl|hBh?qwj57pE`HG{Bmu~Q z_zr)^uj1)3QOZ_;zOnASCA5IYmjr!>1>I{tE zbZ4ex*=&81VuwK{Q_1k06D zRp`JZ_Za2pCKfEkCOd)VB*8Y@9T$y4e1&K@d;~fa(-5_r@>K&DH$`h>ugM8ogT#6> zXDNf}*fFS}joViJ?eqJeS90()nn!Z!D22LzD4vPw)5If{(IQ>#r#VVD)}lVVKd)5Z z>u->KC*k7kHc$xvc(|3PMx$0aoVnzCfK>xNhE!f=5>hQq3=qI>PR+$qauM^LzGl=8+sQXAMQT@ zr1So9i9?n35%h@IG`YD`+Q`#iEJ@-3L?S^lXb4!%r;F*Sq44cOdap=$Pn%S4)c2W? zNd%Vzr-&4X<@pN*nCz-nmXji$`50}Nm4N{}f33ykXg}RKnGL`UaIQ*0O16m*k4aGG zV>UrXgv}K(Qs5dRA&{HH=%`$cDGdJuxRGAVi2m%Tn3gDI?HT293ibpe_TSOAKAFwR zb#t6bhk%U!yKND-G(tFrFD&*r=c1Kb10+gdB!E?gJLtqulCYL;dwKJEpH~{*5FeaQ ze@DJ7nlWBdF5i8$mIlWj^yrSZT6BRvUXDDehH;=RE(=k14b;-XkSshhmX}tBn*}ts-$u(IifKsuORS7I77FWe zu~z*ReLEGcEK3$n3_wnAA&E^hdZqBlfAokmCs@9tPRIocEb*?{KlW+#bz&{p8K{*| zAwTLWZ{FGG^^GlRf4fMb7vqgPeDk84&;9qhGR~EjPrY!=9?oU?%x}kq#~+^WpZ~Ec zSY7H=r=?7_Ux-|$^C9|DHf5&MC zQb)lsb~>cl&v>C%?&%%YxnI}x+^KTq=|f0~oRpI>$D4@b|FkRAjklDR{BIdSy;k;5 z-@ZP+zX=|^ekOE2MWohSHxd7u1A7RBa^|6U9Yjw{R98r52XYhH@H<0j%t6y8w`{(P%(dAY0Gjx*1dK&ngw zxnyK0SlBeAtTi1uFXKQ_oP?z^TtlwMOAcK>&UV5)SDA7))J%y*LSfi%!e z#O`9QBs8-EObk4oz%ONxuj$;RU*mGfp_6Bq4|RU3r92*oAH18mGH_p_1AuNP?r7GQ zmlTPk3}xL=Awe~)XX!S7x9&6T+u*a>xLQ3X*GDnv1FnGSIMJBMNg>Nf#l#>y7@aRJ zH?DGC%U-P_xlpMK?I?L?4YC8Kc^7h_jKW1{ivd2u`L8b4R>-I^l*bDsb5?VN1RFGb zR5v9JTs`QZ_@9%lQ*Q*kpXaccrqY=c{U_8@T#)(JGi|0 zFt!|lrzWZ+)ZIx;|ySs^b+*vAMxKnvoS)%17C#8(3R zQmQlU6^1&rNtO%`=qhw-V$rHB=c~d*5%R!EHhh$(o~JA=q*Sg|`&Ntp&D{|DkYeIQ z{}Za0Ooss?f3*YspY-OJMxVkXQ%Vr?opo%#@n!eMt3ed;0%$P-4~WP`qOicCB_x4& zDoOOlERHzo|K#iO@Zs_EN{-K@xFx?KZ#x1Js?apbcqMI<0@?ch&<{4X2~1*b_3Lyf zfkFgU@oD%dbqm@6Q3csY#!?(*mrYn_I?V}h+5xOGf5h6rfLTZZFU85rLK1x?T>e@m zyxXvkrl2i~u=XR20-*RCpF$Q`>bGYp$l+E-i75|eJkC*rSqqA#ER1L+a31a?0t!W; zG1l{TqCVxm=^7{K4WTmiVVguYd`0 zBh;`Ce^bD#hhVx3&cVMDK>7Ub?Eyw8Np}dyQUFjv68iw-VSSbpCZdR#kF~vY$ zXtl!F<{~dMmn9CRrQP)24c$)G8Jbak#OPl-)z*>7-GY&fy-3Ca1MB_c*`gBB@~REy z+{poYrw+34Zx~&|uuJNSykWU1<)8a7G_WGSYe(o54qWa@H8N;HXZQhApH|5BT+?{Yk5 z`a`W1{8Ha02_^II$+CrHg7mL~4yI9H&`HAeO3|(quUASsDB%Z5KaSTc=?XW!&C~n8 z-mnkn#ut&zHg@#|wpEj3m>)LmmzPb70Udv;;~h}%<(yZRp38QgsU5G(%sj=x{b~B~ zBGVDJD&pPKmxs?QEYkPgz}Q_Cb`?tkd7WGiR^A>NP(W>%)_2ImF|C_O` zs{1i{qx#>XV%+M+-Kt{Ts^Z*R6|))d!#tHxC4gmz&iUsHGxQf`mcGioSoo zNA=Hqk)~RL@9fgl;+iqN_J>u`*Ah(PPo6)>rc!s3u%RIMe(|QO*NkYAxJD+)Z6Jw` zYSdA}AcZ|>nO|~Q0ywWOzZJKL3~{6MI9hVbkc21|s(6gjt0cD5X-bp1F+U$B=ChA9 zxs?MNvH!fS>GxS8g=d+7MI+KhpuB%rHOpHlNEhR$%lmMv8(CbLN?ofP)mavOLR$4H z;4sZUx7+X2_M=}X{;G+5FGIs_5qU=2T0wh<<(yh}HFcHfTl6Jxsod8SHFLq**(*E* zBQG&YZM}8s?Av2+7NprK3|^z3P~q9_pg=6tY@sL*)!JY3Mr7?PKc38Uy9rjCr>G zHqy|5h`_YV9422kA{*xO3u;iGevKPYI^h{Up1m>!lVFf7$H`c*>q21&9yuF=ZPTw=9gqCViLmkx~qAb(4LX_lXvp*F&5r{Ryc z4n;pmzcU_yh(@_YTD;*xmV0HAwc07}wM1(pz00!=Wm=r!W!ZRo-@e>rJqLMj`a%9< z(V2m|GF+CTZm_x7d6+R(qV7%+>>sdT<9k7*9a;xEVvs1c%g5^}P9k{e zfN0vvje%58H`rrhkP}KxQ1vS!IN0}r<_VWGoU~VpKGb&NdCBckVS<@`*JuZ@`?C}4 zkjp7f67c5UW~$vruwwfloS?`(vsVSbv_m8Ye?7^%UVlH`|MdA`Mb5)x`3rOfXHR$b znQ>2gD&x52J6vanF1PrXNfvPY977!e%j6@R&cRBm{dvkH-{VBL$N7YLd5x z(J1NTj|;FLMd{ZLbEf%_dk8#P;!Qkvlfq_mL%c3Z4@yHvI}*x_a*$z@2tS}7lKf5~ z_8>X%PJepg{8u^~c~ufN{M9~|nB@k*83Ndap)U4Aj88_LEK+hHa+ySJR|#2weeEeL zm-esK(5+!vTOuft|wo zKy6&F=oeUxsWhhqG^IJIynP>=OHY;=Dz|((w11A~Ga469`_csR&65~*w{2(Gcw&P+ z+VS$J7tjCFE&}TY#W_n~%-YeVU8%$;d$xSetoHu!Ve)8?b>tJ)v%Wlc$5`&Abxf}y&ua&D55uZtt|#G|9wCb}9qL=R_D0kA?iV`z9xwE7?1I8p7j*jW z*MI(3Iu6bJSd-=-16P=fBMckOZLL0jeE0lqLygtZh6VN^Ky9$aBP+!G2*nFSk$?^| z;7MOqlg4p`XR~i`;40x9kCZh-gj`yU4yG zG+F$-EXh>I^p+VOxFX4eO!*a$j9x(qM;UF%g+@B1A%2C7FC%?6U>ObOrmE23x_9%rg?(Qz)VxI--^$y7DNu=AL{SNGs2PiumD-_ z>-VKRR{@)Rd;O)R8apilPV2OyY2BW41^QDIh38X-$-+`f35~^K>ti%uXe`mBXQ1GV1MmqgVD35 z)EL6{#bx9cp8oo+ynFxn{Ql$ZO7Sm{G3xP z96`HcuUqf+9Qjr|!z+j4v?mHQLCXjo3B_lCi{W327-^J~$Y%dLUOp$1$?dN^xA=2X zT-hn`^l#Mv#vJ&jJq?n_X@9Go?WR3-N7eOlY)#VygEH;(bOut$h3nKRDqjjz6q;1q zcZDl*A=k4ZnKSs%{Z7kUH~8)2%j1_-6N{TSxm9=c#l9&^w07hYph+rNYU5Oy$yvr6ASn~>KJx!vcYmpwW?&;NRYJEg zbBXRD9?Yz%!UN@o_Vnyd`}RittvQ0(26Dy@N|JIP!vwtlkVS)rlvNbi7^Eer-z9Uz zGCQOEYaL3!lmy`cO>-1&N*!V7j=}*HzM`-7Y@_~|GLfXpLbG#Ys7?yK2sKj;DVEip zNnG)^J7Z zyB7_0u2+!=IsD#L9eW6#1gQNDRDlSxjoRy-B1Oj&YbeyH&VD-`@n!1rt#`bcT8Y$~%k5lmlewHx(Yewlb^;@OLuP~jUe z6+w$^t+4?L%SDpDtY#I@t5;wk0tYuUb;Os%|Lr&4-RHl4c=~^3iG4-1qaNb1P>gn< z1SPXz1M}A5$ZU3noDo0cJ8u@w)E|LPoGHO)0s4~Jzt*h+tfs<*j&W5)n@Y!#Lkm)q za{-6M{DMgnNn*IMi9ycL3?!#_J1|m_r*|N5=@w{kSU`z40glE~jZ%XZy4o(;%Yi^U zv3O9MXV@#|F?4?bI8=p_+StX5G+=Q-aV`Ry?}VD4I$I8fcv}KG3k7QsAH#iO<*}oR zt|^cXvS&RqL?BOv&B}ZC{^y4kstXyGBL?+j7U~&^*FjQ~d@xN0-^d0M;(PHJ!`wqj zV3O?`6LV0b-_fFx%6B_OE~srIhi|j>qLqRzmw2FF_N;%`A7?vLF2h|C#KQS*G>VtU z&kK)Kwq8=6k{K5;u0duXhp9}ephhX=c#h0@hC{%z(rx$(e7b*mcz(S9`0m@|()NvU zlCzV9m()+eIGS!#VID6TFJ46MrWMjyxDbihk%Ikr_n6CWn877#IMc!|paX@Nj}k1j z(vh4^D}sMUa!Lep;u)*~0@@>0I>kjx)edG&AFaSA5si}lKxe^@b7cXizWYd$T&id6 z-l&eB-@SkO^yU8Rasa33DomX~Pmr0T4Z-KgB@YL6q9lu7$1NSCL|x}wV&gV38~jA9;|${{*d{Nif>D2dX0O%M9TjaTops3|J8febl`kly zOlsF1yY0R~FeyeaFaO=lIRb-7dtOXFKtg9~O~wm{zL7Ma;9VYYhf`U2r&J4dvTY*r zm+1Fm4!B9ghi3EOjdA+r`EePr*~53x@Clh$JNpyW2f=rTq{)T)4p720NlZP`?2Mua z{&)yJ(){;KlZbtnIF|t&f9_&QssuupYvlKhEa8!g_02NQ%sgk)fR0kL4>*ozhNwLv zvQdQlM&jaFCB3JwDrxtl1m5dT&>BJVG9h{KuFJni918W^JxxWa*h8fwg3|$)-fKCQ z?<8lQ_M&P?+br0(0fz?r9lj(CmsLkr%2cYXwI&4^@W`d?&9Bs;f6=^?RMr(bX9OK! z2mOrSF^stpJ^TCn56iK7K=U+cbwN*)#o?*6_(Ta0h*e6rt3s31%P(viga)`_LTP&1 zji`1sc``)JF}yo2_4I89lB(#PF6REpSCb6PN-tpQ=u>ZfC<0bv58*6`AOmdz!C%=H z!`O=aCLE&}G6Cy_88~#^)Xn`re0Y36_1Hh$|FjzJ!V#&JqG6Y8m;p9_#eFhyG#Wa_ zAb0JHYWgs>!w`n88~gTYNkGDAfw8l@=ww@N*^Cq`ry+H4YM`nZp(T5SI^LQxPfnSa3fH&Yy~^;!*5?! zwV^v1SR3i^+K*mPsSB4448jijm~EWRy)qncUzHKBm4V&27yA13{-?DDiC^V%BIjYR zY3qCsY0a+l?*8M$^UG?ssA)!KGYxx#(EZy!HCygYpPmvEW^Hh&4&5-N^G z@4%pJy4;6LUBi-Dc29jSbddcQ>${**LObeatd8WChgh4p0v;HpK1%e~?g4DOf#zpe zfmfQXa;ev(oXQ;P_vuFU`~C2I|I7M)hzIK&ENoCwWLkW2XXSz;n(USQJ86R2HvvE- zKRL-APAd7yA_099GQ&x^@PFxbuSDa;KemlNepXIrx9 zUwdVU?mT3y_>fNa!z>; z=Pn`QUaN~Q&rk2C&6O`QX(FarRwOZh&~$-|6eqCBAN!P^AHIBC%zs}{H(MvTDZ#CL zx~u9S&hgEw-FTz8-q|_!c9)Lu(zW#-hWP`QaMdt=m%@F0czKzg(AVF!#UcgAmV#BY zJA0tbrX5_z7kmT^00xshVCr~(wRoHOesSM7^2biG2WKD{<)jf;?VGp1sjsA`htsdU zH!Ft1T5>)jGbp2oz<-rT5xLw+u4AC4ci*N)7>_V>p=Nd(+{{{qsB5FIL#62n6o9cw z`ZpO3gzs<_355!Z;b&Tx5Tu@!A!lYG8gMVGo16wXh=D1d6C{<9gPE#XDrGEwU>UBxdY6nLzAg&g6dLB58E!K-ePho!{l_RA>imoPHAn;H-Q~wBE z>N}`S=AKdKa<^~R*sV~yz(8hZsMiX17uD6QwZHaK-`GU`tNl&BOs6P?cj-CfyqA5W zFs}{U|LW)&@f#}rB&pOhdU(Kuk$GXn*vlz*T~F%YzJEHL{_XL@!_&>g?kH7K=9qb( z@l1Ewy3c>q82a+?v`8<(GM0LYW_ryWW#2YY0*UY>W@3w@6~P6l)4g0muiMAVxo_I^bBW6r7`J3>H`*%>zcT&%VYn^mp`8Y8-E&$zgAz~P$VLnA+vks=y&i)w zUb?Nfp2|l2N;Ntf{EC^aye#Im;C3gnA3Jn1qT9{xUU?&{onW1uNGxf5W!)*ypdPUX=Jo{ckOQh;W0^Ot5DV`ZGxO4ASKpr2Y(o{tS8s;ra}6 ze+HS)!1&LzXOR0d2>lrhtM$=pJ*9Z=s#-vmUf%YiT40B|`aY}{Wq)tf(#GPeEyXCn z3{A5gpxTfqZN#(bQY1ybN(Vt2$)#Y{xJ5+XepFAq!A z@%7j4*Q@(C3ror!SAR5)%y~&NalsD3`_)RRSZ9*VoN&(rbZ+SdmAlyD#)HQ^Z#oM- zN4*I~V&PCQP>0*LAmj5RExo?CzJF5-Ds;dDZDmybz zX*21KX=|=dEtv=|+mj^d*z##(NnOY)$qsVd2smTLMABw-EOi&dFi!4esaYE3%V`bi z4?zx*a7Z1aPz0F31k)~S+KOYBEksMBtDN6mZi{-JKoAc_KsT*CWsX6{HZkOtitLfI zse#)}w?-a;fq!H#Co8l?T2=LvZrAeDk1OlqU}+W)CoxBMj%Ay@M~*Xai3wvd@2GCc zPfq@*8;|ny!~5s^G7{2lJ6X~Tb>!QwSKCR`qGYNG)wazGJF?VT8u8w3Q)b!S9MoWY zQXZ9l0B6gLaqauI*XN5P#bynh1V7Ak^T^ zwGrRgd+k&vC1c`_=Dkhj;qrjIIkGrO+6csi>j5NTm#cPZnp?;>yOjN=Uw!)g__7LX zW6gemY?;mP4gr`)vZWLyck7&Mur-Q@7=t|hQn}POs4jLfnr*Gdn?a3v$AlTcNGI?y_b!6eXPZqH;xS=oNk@pZ~i83o!|PT zjbj6;f*YsbEd6HT-SEnxI5&Jy4~SF-OnA+Pc3RI<2?T7BBY&n{$E3*?#2J!_MrDKp z10(r-KY_|!JGygD9c@k>-t0#=0V z9>A!g2B8GEn15XGTqHB+JPNtnY|_#Y*oa}LBe1wd+}Zb2i@fTYKg|q(A`!kK1Z6X!| zf5WLjVt-*u7N{c6O?mxdQ>k$6ZKgE7v%%aG-7f$!H-9SfO7btC=1PEGE8-FDD{U50 zETWx4n-c!a=F>263ev0nB<2=+Y>53wZSI^YcR)GaNKM03!6tkH%(QtPN27jCTQ*gW zmqa`d)FywfO`bHFN{Ge@D}a^7gD_$a({)F%bMd>uP9p7ex8o6*FxnZoITCH5y$rYM zSZ(s>)qnJW3Rus@u5r2U$+TTq9Zs5V&4$G0dWB?5X$*AlXs#>dUNqo#b{bTQ7rq61 zz2|jQf8H2#182}7+sWeB$m|if}P2oJy%Rxd8GsX996-(QyC?2jl(OFbg9=ejY z-$y&x_ebrcomPkGYL_zHc0k|0KCDcWojr1Pnt$MYa;h1r0e7M%bQirCEa-XtOd1%L zf>GLW1HfkBEDZZTVTD71+)eoXW{G}tWVVPC0FfL9+C1M)M=P*PY<8jS!BQ5a!V+C- z4v|9C5$`!WtA_STPCb}xW`yJVJ<-nsKZPrF%c?I=(_)Y@gHjUHv2s*AGv(Z+lbYE< z)qmXI=t6m&?f`~my=rHiRamb>kmRJm_gd|3YPIf3`0z@?d5i^##Gl9v-}LqLY@r3p z&jdvA2o4(46ex1Er)mV=36jaQV58Rj~GqS1MAO7dt#eBXfp;h!pF zA{yG7+IKuKJsS{Tjt~wad1lNcwQ!ZQr@0T0($hN=CUBG)i`B{L^@leK!{nXGV0gL{ zQSzl($d|(k)^pD6`e2M=1X21l>Ew(P{q`qMA48H)IceF7jXwPi0MM_G|My{~UVm}+ z5~ynk$9i#L6hS_L^2ym#*=hO!^^<9SJ{EQynAc$$g3O9XxOwDW?4Tx>X8N$Q1YKJv z&=G~2?I*Vvr`*^zp14y==uJ=g1T{^Bu-&1Z%s^f6q})xphfcsMooy3MJ==_p%0am$ zFZ1=*{o3XKG`wC%n_UBfGtePB4u4{-S2U*t;+Ur{9nzPQXm(@`d6v?L^D2^DPK?to z7GkVHXMR#httK-ti{uZ>8m(5Mo6NroRUWwDB7-Zn+uM0u6H@qof&&V~12Vbzi_{k= z0`X9#2~dvsatYW1cXX)|HrztDs4{jtcxuJ?`2POoaphj@_9S4@wuN(Eh<~JHiXH;A z)Op$j`!LW3?0=JG55AKC;RSF(ngqS0@I8cXGN);<(d9BFnABfBV(cfTlsP$|KhNRq zf^Ya|eOK)MH%M%A;4~#;qEC{^<^>Y>DsMLjs}tKZbZjltqv2@wXe7ZotJAzu>6pNAMo)^^BBGNjoWP=vVD)ApMPG~S*O7DEVXe3 z7i^rCUhWL!bQ)emtcCh9Si_@aA!SPKV;o1azXLmAvB-o<_G`o*}X;wDOcQ+0C9D$bkrLf=Vg8!Q{Oo z=&f}xg?K&21f~fc=UJ#LPH-@MgJX# z`KtjNe;ycWvM+{X>aiE+f8-N-04?|D-~93^!?z>MKL}ldB^9kpDli^MIVjwMg{5Qw zF7Kr`831W?@EETA86)pZ>+g9}f4=|t<9}k=sb-p4`jf89es^X_WpYgmLoLPJ=KJbv zhsC?}MzyS8Hh+29()DFi<(^W1*`i)H(Qfp%f0gUorgh94eXY0GEzVxIID6gN^>srk z`trJ^{vEqR4h}{(tLtf8HeU@z7 zGGOK=7#vb-Ap?Q|4sOo%gD<~HcBahCa5FFg!NUV{i3HhAwRFJ|-#$E*`rVg@r&YEv z-pcI`62V*TBU^g4FT8Rbq^13({Mt;if0e!5bK1D)dihPg-ZSwHcGK~C(~Kz4DCCN^ zMB_WmcTg`3zDKhf%4d68?fSG-L_Mu*$!{z1Z;wCSuA8SubBv1R`i4%-k)wb&jDfed z*Ce4Iu{9h1{BZyL?$g66)lA{DsUZfD@|&eWoY|`ryN{p*4!u3&!-v&NO8IzHe|$a4 z8&JkF+D*e5=M4%X!H#?cGH!bmxvr?Rb1bQh} zCYK+1Yt61NHy+4EWkt**2^ZKQ*B_=6?l!azPfuT8?q61!;Ktsxkvm*Dsji`maYgBH z0lK3ro1ujl$+=y9Ljd-nyc?A{iGoV|W;y>Tc7!)Wu||fHXDiBdx$b4af8(JE1a&_t zZb!u~hu{{8l9jRWfa@_AD@<@*R+GT|V^zUTGL0t1n)FkZcCc%XqRFx-$%@A{`An?Ha3B1n2X1CyfBgBQ(g-*QJaVISH>k}2<|s_NCCV{fBql-imbSrz=(x2bssNpY^eVk%3o`RuCM=)S=pkA_70!%)s|i*X z@)2AWs^dcPPaf(N(dGPJf;p93)kH04CZnihK&oo%G7R2&Dw1K+e`Tix8@SmhZJdn# zFDxopcjj{9rP`^DD&rIMbX>P!gsp@vdWEcUbuSIW!p%TV1pzHJ(bC=o)vchxi6vwn zM+1c)xS=_!lQ4l$s<`;TZihVAJByC9`}Nf49EynywL9s~6ZjGhdP%XvDBpUm6$$_} zmBK>!nXy@BAq{7)tunYJ1wj_90$uDv-9A0iMz zOdLV4xYN=M+mvH@dkj7k`)BcDaOe9Cm zS1LO5M(uw6a{px+@gO?m00Ujm;IZjnhW=4mkz!I!K+}q&bRzE`qFn`Z;|y}OEB2X` zK28R5-{tolT;cmq>=*W}9e+KXp^UanOS;>%WII#G+D>|NzdycT#}(+L3!&M*Nhx7! z0<$YkOoy`vYJ}5~RosBsYtc3l`eG;7yz$u?8A#R(4oS1Mk;ipJfHOe9&;d2?&6ne` z0Vsd;@$t^Q?&v8BVAal$d}Fu50&h+tKS0Ad!3M`@YCl{qn+-ZgEXlpF)U9+nu>>VV z1s&x00fp&8xdn2qFI9cnJTcV^>jA#n7$LlD1{@A#9D9_5uoxoZL@WHkrB-10!!}8F z;I@biw4=a?3e=|Wh6Dn-*Sk2|9Orx6omqeIb$SJ=`>fTy=Jxi>beFGN<6>V#4^yI* zA`-sI!bJ{d{kE@L00b1Qa6RGfoKumV$XLSTYb%|l1R|M`#UBQ$xtL}!g$>Ud~&0(u{w%{!lW^rMj9e4CL zCC+vrYh@sVW$26NMID*O!6*qXcTsG;a_Ky0r=v0x(1q!-BMfVHF2TOPahus&)V(A@x^hB;_$t3T$A(Fa&&h9 z%sZe@n;I~}C8k=2woTi*LR-}gu9sdL^tuLS+3|;RP$JY4aXeau5Ju($b%uY@0T!;K zu{l;lG<)ExGlR^b*(Q*?XVC7(CeU~Al1xX`LJlU_!YpN^`6KsJfsDu6R*Zz>(dw)i z^}1L$;l1eH@SQ(O2%YIsqPR2IGxF5{58$%t+ZpvRM#apgb`YhylQ6nO0^mu`2V|6q zYz#xeqSnK8lhAgHb0*EYoBV$>lMu?;{4#CxQuo@SQt2lutWIPTPt6nwmE~2vbo*GC z%QltAnSLc~JHt4paVW{CVm+KpB{}9G=q~EBl(rGcL1t=KFFsnxyzunMcoFqIC>>Oy zWS@@K(i~;krEu=G03sBX=`&{=9S~_dnWoXf9&L>$A=JvN-GPc%tTlhi-@|MWuMZ9I zwL5Y3iW;|mpDkpI(^92JO5uDr1c2omqnGF;0evS4cKL8s8KW4xFf_C0Qr4?7C>$?p zJEF#A6K!cE`${`b3=M4;8UiF?OE^H)+=c9-EX5jKbA#`@X;l%qRFrp`CNj=K*MSp3 zO>i__v#U~5H_=-(rv88JK-7EJ*3)(xZBxU)GXqxhKh-9!j#A&vs9ul)Nf7OlL#slL zz7PJ<=yxIYJ91<~c(bsr?YgaF23zsMa}HD!ne-}Zs?S-+WQj#_v7B?ScPhi;Myb$rzMHcID9Jabdu>r$vg%r5kJ);Ro3Z$kWpw!A!u&vJD$57w(sFawfGNi z0TzH`6G-^1*(l~ho2}vT$Bq(y{}FlB`;Q-2YT)MgFr6(h1jmYi_LV`!*HRLnzkFIs zw4iz@C<91@5vCBHYk% zS(21wd{k;0Xxc7AY04+FbG&8WGD{Dk{`EI(rD&e|dFVk3@}ZmQ`s2d459ZUu^W*zf z^I<#dBy9?LgKQsi#N(7P?PG(c(`I6~nh_BSiyWyXO@qY)v8oZAMr=!h- z@58R6`{%n9Q=adEk{K8v&Ys(PICE2IGIV z!AOwI96lDO1p%>)#P-#;>wbT<4s`;PwwoZPRZ027+TlOl==`gVPF1OZbLo$2%dg#D*lM}MD+U*YPX~YDYfb%VCtm~17e-NPthsZh zqTaOklQR#sOVb{8tXxJ}Th|6YGLocF!0VBKQTDgqRWEE&tvlEMFrRey!R5QLoF}b@kfIaK4ea8G6IHsW`Ko`_-4^Y@H0(&RY|+ zKl_D=TQ7f%@j=z5dlT=k^Pf?mf6v&i9M zR|=UnnnAlf`_;@j-1Lr{on!m6noRocE>G6Hy$@6GY;C*D9`=8yJ}muOA2x~<)jK6Q z5MP|f(zR*)2lYz%_iBzCD<4^kYj#?8T12Ja_5FWy`^5wyy?K{!x7%N+R^kkuLWiug^q)6p&963bx4*Pp#V@vl9pCd3tR}GN$Hr!DiVK;dV9KBU zDwIDqdL&(rcJ9*@KuO9Q0f6#dZI-lQ>rwG~QQYA_uw|9ETGm$0{Mk>x{?Si=`*rzU z=DmNnZ`5#m-eK#!?Xm{jeghY;{n>?U6MqPjUsYf-kHnP;LT;g_DlSq_o5ZGS6{S+{qP_D5dZvFfEa`|XXBr5m%Y0I z8A`FUYBpQViaxxn*HofppwwWq^ml!IO=w4qAG+oP&GfuPWk_5?{C)Rwz1@K_*U`)QuPquz|s#lxyan+ z;PYFeWCHxid+BXPMo zzB4I)eSO|$qmm$TEh&dwyOqk^Aof$_;kha-)+#F@ACp0U+BUPGtcFP;u<})+!z85z z4-WzM(ZEFD+a!dj+E1x5;kg1jWjyPycfCArGQ%FEf#R9NQh$n|x1En?5O0d4n5jgW z$T1NG^7aI?7Q%gl=}1>nfM#A*PS|Hodoyi$6EtwzOUJ+j(R~R#@+nlAx(!h>{ zCPo5gG!oxPV&C*Yrsb$?J@W717kF%S2BruI_nm{7<$=)``(_mDcI7EZIV!r0uqNKh zd!pREX|58n9Q422Ng?0aQi2u9 z_9XU%NII8+qCJUOF$bNfq;$`}qw@8+tM$`bzkjmLH{)4)g8p7a=cO39=rsw4A4t%b zZBx(ZrlcrvuFZvziy#SB)G==Hf^1BFU<~m6*0yo?wfykI^ZN}ve40u{t2Ry9z}hB~ z4WEN3tvvC!94eRzldeHjAIOq9GifjF;F4dSKW?W+d?{UyN#y*wa3gPW+%^er$WtBq z>3{ut{e>FgI&+-}y;aJ3gY}v6=omL+FcHu^_c>kUa=Y zyhN@sGgT-$=K0Mc1D2(65Zj`<81s71)XPG`5C?Pi(?(f?C}XV}(*Q;!g1R<~A|zI> z0eZt^9Zs|TqIPLj*QqTG*NiFS%*0|!bbnI8oyjTKbW+hcrOTl14X#Ikaj9j`zU(Lp z;`)|SuZW&5Gmg44p*V?6(izDP@}V(zOhuAGaF8ZDj|{XG!c^9&Sq}5VcY4mduTMXJ zetNwpMPu{cd5FL>OTyl)SN{6AU>H1bJ2#}$$*YlM084IIKt4E0k7kp zPv%wLZaeLDJTajoCUV@fx|jucGk?jqT7}D^#^qLJu?INmJhst0tF`yHYI}dHw_hwh zd@m^FKPWPx7NibeX;w<_ZdJB5Qa0r}m6PCTW|Z@8uHEVl)3;Zgh3PdfR&~}IQUt@8 zmG5^*60OB)Y-~PXjV&r8Hn#W7X;ou;TP^80tE;QLnaapwv)e`rgiXtFWPkWD#T?(U zr{0}S#i^--vEkIg*ly}z9^4l`s)PBc4yNPmV7jVkari);ClwL*9;+2zbaXu4ZqFha znwJJ4xLL5Rj5=&JCf((Hl<0fq<1x`OzgVTgbl!`D!LpafrCWhSF@dFOK8j~bWiq{B zf9r5|ZMijpI-IA#sE^j+e1EhKXU*hq&-IigQKNcfC90_3dVn zYyN6${!A0C6?PUtPkOOh?Qgu&B zgz7QY;>cndZ9CYvA`TIWqA6RtLT2NE3LJN@^3&6Y*XLiJHV%WqmQq}?bLmrM+rj2J zcw=U?S$C z%3+h+lbwM)a`?vPrxmc2X6@P0V5O`jZD+Q0xk~mB3Q_Ix{ znQNF;C8-)%#*JhE-d!Wq*_^GkxUixX4SJ{o`983totaXS&spTbV1vTvaBfCgV3*Tr zujIZ!r=CQqsIlp!1IpwH&}%Sl;#zrvLLF6l?RU-a`SJbp*S~LkDAN>O>8(NjKNG_% z3>dD9p?`_SbooQq#FYvXXdXm$F@5YxCI^QdgaBJWq`zm$tN=>8W*!7iKXN6+KC5H} z`E;r=^Y8{}NN@L*idg3CZDY+~rO|0Dpw-|4AJS+%()vUT954kPJd1_QlM~i!)i%0f zE0L-vBx@t{ zc)HfkL7sS@ZG56$^Ey5e-zws#r(ZY8L|VK|ljxakA=1%i2eQ8ls5r0C%w9pCKWxf~Pyy4@$*D2YO+>whLXkQoIchjh8vX{(gj#L-D`c)Q zyOLp`9y))u6s-5r&03Ct;Vs1%vvfM@J9+3Vxxo26iAq6Ib8+vL*taamkt z038zy9sy#-Jy=&6fPme!8eYzuLo>k!pgpJn~i6ZEXq+AJx9=tLQQSjn&BQ9hYMZvq0 zVdQ_<$&-`VQl{%MK@R1bSIms*8kYs}M+P951m&PeBnb7o;t2H0Nh8;j_ng2pq7;R6 zKjA2{!N_hyvYP>;G zno8q8s}~hiZh*8i=bY&_m+j5m-OcXq74FZ#ojfCWRF#GF zbOA6TLYi6xO7NRI0cvbXW>30N`4{rV*}AZzi;2{dwEuNZ_jP*I;@Muc8jX=OFc3mqKRjPn1I+S8)uKXgq3d<(gmix}V5%MD zo59K|H-*M9Dd(si5nmS1QfqBH`m{dz+vAU`bsE=!WXpx311tvE)(~pf5t8dhvM`V2 zbURAB8VDysQvMh|EfdND5p<#u6CC0(^S0B1nLe2W8dlcQlk)@va0a}ijtqkz8JJ`R zy)*X2#4TDMiktsz#~1B% zzLjlUmUynjR4KS0Si@VD=Vmz1O*1Z<3yrsJ?zh(m24+G>y1lcxgm1OWx6d0d)c>6~ z|GWKI0cgF(PNam_nC92m?rF4p!|YfqTmr)huN4zU07}To)nbY!?M#0`>1Vnx7WvjPFF_h9{)N*x?{`HMCP7< zHE5jL-al~CnkN6w=Z6roiZ8UnwBo1!9-RsFDC2*2kbJcFjuS2l={Y)x5Q8Cmc|DU{ zpFzOpxOT?|`N-SZIF5gbt&nviYc6z#Wy$egh1}^EUqow9szkgwhmKN$QFK$T@YMNa#I-Zsr=&A}>rsDy`S$hQ_b(q-p41FN z#SO4!#cSN*qHFeO@EI?5Om~^?B>ydtp1)ayA6{NIs)m1NAshwM<_~EZB z1_TSJO8%Q=`0{`J;pzLw*LNSEe)#&=zLnwk-bydZE0j|Inz9fI+`GvAdhzq)$EUBG za7WoAb8~r@%mwGRJC3_IPbD+qoz9<_)$gw$An(2$Z=6{#ZRgH)=k&IBU-!m|^^*76 zW0%_|@3cmJ>qN8#JTdLq<{X6SF}I%#hU})+H3{y_VyHn<{H>a)NtlBGobv{*_Mt=D z3f1vMMF$0)*r(go$1}vp?CvkK73#pq^o}F9r_Bd*-S-c0+rEB(Qv|m}rvd&#xZa2KI)Ta-RTS-;A zwc;_@5;jQktzhjMdblXie^R+A-p89e;cMx>yA51E%b;c;O#Zh1wFVA6Mz7|1s?g zv$HTQ`_d<~r>c(NBadgcf5JgawsM`JM%74*Q z&6o4QNQ-%|qfx{MAx&zpP$9)P>q&A{RevtQ#WWWP;GFfXB7K&@)MU?Hct))3G`nbB zR#A^LNbW75{2k#H_;2Ar1(PcxPs4h6b$5I9nD0cL-tXc1{R?CB6cXe1!HCL>h|1|I zqZyuS-|6V-(a9b7;qM>N_R83Hi+?!uQ#aMr-S?ZoS^J%5g3XEbmTk@P8|Yr@9qBl#w4kwx<5)tPn+CfCon~Vt;7-P0d-2 z6TtFUB7wO@b+M_@uKYDBo;r{#KbltUVNr#h#+=&n=f`zI4Kpf?)q;G`B=F@5qnr}6 zTGm1E=~G>DoevoE*75Z~F|=)}WPPhV(}Ly8Pfve;+G_L;Bb72dR7n`YI#3IROQ@s-E1< z2U;k+kV#_^NYuV;aRMe6>vl;(W9F=}bO^m-1u4tDwY>r$-tB?tq=)&2_ysZt^gvbNZ_(zgUT+ z#r1%00%OZpg}*uLFA@v!*VAT0AEGQ5G!XbEX(AJ&P0XgQz<-}y_^Uwr1_%*60pEch z%iJ=S#j?ys{bhlZu#Bii1U^o+V=eUz2jn0B#-RO^rLU3zLJEj3Ks5L+tk6Ob^E_?D zFlr+N+oKxx#(c9A{5q{s-#vc%@#A*9qqq&eS%5aty@B)^(wr1XS;czxnzvxg;>}Wn zjM8~w9>q}UgMT+PzD9*2!6Ds;tDG}$4tEk{k_tcSLQ|~FLnXVpFwo_}K1IsIwRFoS ztd=YXJ#QDZKH>-L`s3#!^?|b)W}A>;8x@%C)Ncp@$+MmlEvr+XJb~*a*ua0GNH<}Z zM|OV-vI^dfzU7&ZqZKx`{C zNL-yU9bH|Yw@0Ip2kQ#DvT1<2&egj+&cKHYn}55+%~@%4m+kRja)9f*Y+r`o++}-w z*zMl$KR$on82bsoX8XxW-?smea2A9Rdsyq-z|0aO5Pa#Y>}4U7N=Xk2k$nr~n36o=?_Lh>a1 z+oXA6AinKh{OMU#M);omwTAi|c&TkdwE#{%j z64572@)G`rSe}GrmJe}vk9BuNbBEniXn!Hhm^Chm{Ng94>&0(QaqHu8zjAMrIGpK} znRynpcj_9(?XaL!5G{ik81$mh27zs2@9N4_;k-k~xGKh5?632izhV?yynO!t=gN!8 zAsOGpOannKfHu=ZbRGyzB|G2Wuj^HHfXlCOWk|r$Ae&Btd>H*78bg@SSfs#R*MDkn zSZ_gIlF~htKP)mB0^s$v9BpAj%cyi`f)o#-z9dZ_t_qqCz$~$|on5Y68s1YlLOzHN z89kh#XLB<3LK33Pf+K6gY7@D1V;%Y63&OWBf?QOxN@CuKT={@=NK%)Pc`-P^Uav*6 zf5?82(ZsY^9H%Z;r27%F_o4^@Lx0Kx-HesOp!vesEs+aOyMbn?I@L2)tQ)|-wA(s~ zNd|+DI};-uT`!kh&?>7UGltskUS<$@CSYW{I+?s>7VJ$MTG>N9L22wW-&w63t{sw)2?!%7hvNnt<2nH);r=LRNX&5L;We!+U1 zj^Pr=VvjXA(yc2UR>apkBG^a4Q!KWFja57?0B%W_4 z@3iCndY_KrGe)9%PGYwsUfxs5_`!12(_8o29h#9fftRmJaCk#6JYg`557BlT{C@xO z?)M)5`hJs1T8^viyx~|DKQX3%EPlq#!N^ps<@F>iTHX(lk>&4rcib@siOk7!QqcL# zh#HW$Ox28MJHAt!=P&PHK5tubCF41)ymnJhM%)m#V~q#dA*$t?fHiFhSU1NLJrU)| zH3kE0g8(DN1c4nrk&!TyOqxf3Eb?vLk|-HnF`9sZYe4qPfs6r>IGsj+0=}yFN;L+s z+mu5y*u%@=oShPByz<*opGbso!qP$M-kT%pBfZzKS z-^M_=q$t(QNLt1Mz^_|Yx1mZj{Z`CDpPmR~0Y0q(eKcX=?J)c{GRDAya-t652XbqQ z-Bx?|{l{-lUteCn{r9YOLK0sLHVpq9lCb_2Nr^U@BEe{XWdfuwB7Eim9=|(udoejY~|*@`1%*_G8BH zdOKq;ql$0&J@{sS*Yev$h$8n9WEfZiW70be3V&x1|2YdJW1;N$|MUj&CxZ;p8B}1< zDt4IGp+>0;bOJqFgu^Ka0)D8V`Mc&Zuv>9ww9_KtEC?8mou#=(b6YUNi|k%z?g-EY z5-fO#M013Vspo_%>52_VA%tFN$7BOClkLelMNiO7(*<9D+qE(m$LP5{@lEwc$pWPa zLILH(7?c=irNpr8d(8){5d2-LWHNXgHqANWEI>b~l{!j^Xy5Z>4)R?>wB491+kxKd zob)$L&xyiz`e4QvXx$!)-W?nnNiWo8<@XW&+Mw$-kP)AZod@F3fNXZ)s3Jq4BvACf z*dm(=1X`wl`yylr-{dNUh^c%LKD;|DI62i=*7i83gM1eRrysvW2KDZj z^WuO-|Ek6~SVHKZq%GiI4s(DkXqeO2s>{gA667&tplBLDWx8?fn9N`EBJ!}lWL>0B z*}i-MCG0PNg3+FDXQ4=TabOmyGrstgM;kU&EsiFt>@c^04L!Eo+R6qgwx1($wwe_q zTC~=G#z2?tC1Csu_HJAj8?R_83FoN(+Kl7IrJ2|)ABhBf!`68I^zQ59$G>gEkVx#_ zs25z@nwSLR26<9ElRU~Q!{eHaHwcx)TonY||Mxe3_l>{xUf#d_yg@p|75&OT^UOb^ z`OBjD%cA+iZu8f<`OBZw{E}{&dOW0_V7)nitvSQl$k&s|X<*&G(fQ%*npoe}7?r@C*C+^5c&2@fR-^<3G4qtmpr|bu*VEus6WdhgksvQWV<0NY{yf zmI#kz9I1Asi8|5_wUe!|((YTB#<*`^{=z{n|Ak*bdHV~f|JWB0_rCzZt^g>SS}?!S zdSAA52f^^jw&a*2y`r-I4lUQgaTlhhY1`CXzkKEiE>+GYXA=pv5LGF1FZgh_1`*Y~m6ZX1{o?HpRL~yS2)0 z6?DO089>pBlRjo!a`xOSa#iq`QUar`I;9Zfue`~q9o6is8ti#yj@7>Kj8-}`--RGn!TswHSG+FlW254W`^+tSvaY~pUQ7Og(@F0^45D_)kJl=}jI)cOPS zk&}@(F!72065^-@g9%@^ACxH_a0$>qR;E6PX|e(xo^# zT7jA6*a&#uej^hw_+c9d9_*s_@0osQy)3vR`Kih^ywR>7|2^frJ>}%7+jbOczKRZ7 zQxMbXcU$z!)7P)lXz=A;SC`h_nEjsn%gZKhfXbYN?=GSI znYtGxHNB8FDUHX0(F5!ivc;!A$DA{Bpr0yr_PUr52rc)Y!zOr<KUrj#M@A1VvuSeW; zEzF8I8MVAy5pux%Tl{8!g7aye_ER=#KO_?(Fa6y@<9UlW15)(A$2oo{;+l^O-QBp( zZE~yRrow3K%88aYVRa0F*Ji|g6*kyiRUSXRY^JWeoV5)nA;+Yx3~1Yt0Zn=x)0?HZ zK$>hA61DfYt)0|Pzz$HaGsfJIentvG9dNtZF3&4lvE32g410usHx`7rQ-pVKo!Ueb z)b7}C_AXG=;_l}8&2t%UVaj1<_BrWXNOPim%}OVb6d@&cz!i2o_5qHGeoE&?QV~WI zPi!xbX3alZO30!gB#P0<*+y^|H^PR;#jkl>!Wisivd!>%jz-2x7xf@Qh4F`w=}M|i zuL274jZ%ZPK~*t-Oi*g(eNe3l+(uiRm8d#w()YIMdBZw=uiYQcQkhs!XzR1$CI>Lw zAGaL9k&1jmT_dy9A!q=uhj`ISb88a^-%m&QhNk>K_vDC z>7Mh}c-sd>&HP}QE*Uic1&t4~^8@p*VFw+W_zoDfA-XAlKqH9iJ%{<37s*WU@$^#S zDA@R-E&vv{=`Kw8=A8vD&Rr}ss|@&ZSu6lpoJxAz9G80uuV+PXkH7!aKdwN@@j=pt zo`5du!{VWV)SKj$DzyH%*(@jA6Rd_}C4%q-3k})M08*Vvtx|<8vID6LOLdOaH)Bud z27yr(DFC#8&uW)xy_N2gSR$%)MU#r6V?t@pOjBp($21X(ADRE3sdr(j7eLZTodFqy zU|?;O^x0Y%^MeI9AW9GL2j{oFvOT@~`uem+wPET7>sY|k!U@zsQ_B@eA_EyrjZI0ni)^+^ z^5?XFlQ-O-u(f8U5$w(eh<_+=J+4UrY45d;7^7?vwJOhAn@HhistHyGz_DW~aVAC^ zD}|jY|I^o}*QX6d=bGfHZy#J2RjhPwXK5BUK?}JRB=eikk_SYJ$TYYQ-G2ziQb69R zbLO4!f|4LqN?O$>pqjvkYm-6llBEXI<%45?Jon>F!l+^|MIpqc?;+FMHxEpWfPHRT z$RrspU&1rzk<+=n_LR2D|2 zAGgVg;`)9`JevfDWxP=H*eBz60U3puqVPd*!aqujqu43gz`8M73p&!Zm|k!(_+v$X zx|77y1}vTwr!IX9rWKx#*WOtTLz1c+6v>J%2S_C)8@I* zD-NM+Ag|ejsj{gpncK*!(iQ}+s7NioEictSCy_(~W}DMKaP}TWB*{%c-A8TWd|s7> zwTOM&^Bipl31nN}b>yQI9>Qf)3URaDflH%pSt8_voVU!(BjdL)yl{$8p|-%XJs2N_u?BgdrhYYc7Q%{b1wK*P ze^v@?A+J&@>QP0H4>aqd*AAF}JcnCWX>LN0lAeuXJx+ZP4!3EQ$Mt|x|p zlCh`N9qV`3mV#dc3sioP#fKJ@wa)w-IJ`zGz`P>^8t#l$5Yk;8i4w3z4HP7gh;5uH zY+!DSWih2tgO8Y)I|@{+^<=b68P*vttlEkig^T8ONPo|6_^TpNWx0R|RgfqRx6Zi2E-r}F0pFV!rR{BgQj2p#}p5#;W^b%5mWK`(Q8#dF< zBE9KVF)ij|;L|0uh}b)S=ts*WyR}U)!NEUfGEqKL^_%kMjT2-eGkRpsNe>`hVYhn| zy2u#6C3F%PE)3-?HCtYHd(uxw!nh(`+kbKZ)`p2<^;# z^ba&>v3Kv<-%Kl%5T9}iPie(&_(z>$z<&h}7RWmc@{GaMg$gBqp<*(l$MPaodBf0>M;tvpB~BQrT-;N^L*}`rMbhwEFUNSUbG_S)wnF!U8&!E!gde= z=fTO_3*qNKy%oHq>Gk00$sE5>5@N;}7&OlmTPDF+_>Cuj{Z>`9ydJoWjtn1w>glEf z@K03n_37uAjfyn!GkAX|Pq~`wtY1V%c`>Dxd^W;iPvC%L9MXAaA+7`!I?2$*v&6q5 zBl$JhPTyIGke-!bm#W^$iE9T8!#P&d{w2VAkuG1pOKd@G$ppwM8&2!Iq zdNAcoMHrE#zt}|RJM+UOqh`|621wa*V5N4v&_OWmxUWE#tFW~i!|2JBYv{A4K)Br& z%bKfymXejreRTbinf~Oi!7Z@@oojO6p`W&ntljm>NP=k48t|a+s}^!xI7{BQGj>)l zefe^NG9DB|;!sCJ`7-PjsXqrM87!dv$nU+;i3OK` zt3W0cWo%fJ9W*vfCvdtOMUKHyyAf+3j;5(3qe!2?<7R#__(n!5JIBrlh4UpGhzt_& zuu|2mGjo_fO~X*5XQBPpEBHTb*@t5>RFJ+2gXD0#7~o?6qxkgn_1BlzzilHimi?WT z2VQ&Ei~X~pP-|F!#2^q|?kPtr#9s=3JSy;vAwGQI6h!Hqw8AYA?6+V0P4>AKqp}|( z4Xlc~#}h>?DRDFiIv{eWW=oectwN&`O3DL-9EZC9xceR!C-b@?Ttu9wU^Gd(H4aoJ z9P!YIwZG45?=#yQ*C=ow{X^Eu*NsNbA0pelBVCbZ3n{?22S`IbH3C_0$d%%M;ssub+FfMuB2At}HmuWl&3%AOHUIT4xVw0-zQz4_YXI z)P`m=_NVip9~}4_N%OF_48_<)KtYZ}@Eio&(RLVmU)FI1O!1=>MVXzE$g>IMC@#OI zVL7eoZ#amAu7~N3ni2nhqx5T6J-Mah`VK|hO1eY4-J#hX%7(REoMfXdw8XS8>M(#J zM+2z{ZIo}9aw<5>qLy-WvS3sx^u0u4FC@8K6|=x^8fsY$!mwN5 z_Z$=qfK7+d8|ar&w?qV-{GRqmxePeNTB%wuC;b6Q)|KiaRRe&3jeG5y)sDs>!}HE+ zhdsJ;vqv?nT~qBKctU8zz1jBi`Tfi5r*%*X*ai3lB4hbl|4o)~B{pDM=6c$zU_oQ< zCDx0e?t~MBCqqwT+REBZ*|o9%;5pM!!DzQ&$|75xGAqn@rXtZCm3p)DP7bA zJxHF6#Gxb6RpQTovO`rjo`3R8tWU=tYU{;kW#B?0AtP!xfa8sIW@3@pXw!0oa1A8- zU^9@2Yp^4QK`#$^djx?O34jqSuZ{s1dOqSPHaQ~RsI*Q%*|F2e6~^1-3%K13<6#u* zEXCM~TB|UdDZY{dDNvCnItcVS{_y&0< zQ)X;M)rDTE^9mEJ=Q=q2G;LN%vzm|~!L1MyBx$^}wBm5VK}HqpPNK;RT)O}HPn1|> zHd9yQPzogwZi*drRiXQ5fBW=d&ErQg<8vlvrJOuPOk`=DU?`nw#5HJmAwmjZ%8A@@ zw6Rc2xGF_|DM#~xTyr`k%CDkh@OTmI&)bnZ@hnqpdJ;8>*@syQnDpKfRy_sCB3Z|E z6b9zG*fE@QA%ifoIdnI8-sGyqqi}Gy9k#P=INp40EZ=HGa3Ob zR9_47{7a4__5FqW1utQGd13G(@?Fwfd{*iZdY&AA#1Bfc75!?oV{#rl9iteHUB!#~ z4SB!*Fg~jngyle?DFLUaM?O8+>5WCRgZEAP>&7}D)G`4wg_6<*Ox#h$DjLuvLP2Pw zPnKTSSm-hyx8LSu;JF+siV}J%!5hG>#K`B26wahaGD-sKk0=CSxRhR0H3v#P+{$iW zwmzwUuvcfqG=AJHrOTE68p!WWTgYRmBXlWYxn~Bq2=7Vc^KocrtSN;rMDicz0Dxaf zopCJx@6G3KL5~#~TBZ%|l!}7yhP)*NcX8Qds$f#;qj&nCM@OWwj7)%%z6BOaMAo2P z;<{GG_Xxi%h5tNgsWBK)jfvpP%oPf&Yni!!35&o=LjtL@hr32FSuuPNp>wWRBD0dE z_C`8g)&dsJGTU-VY-`&V`Vzg zr>V@M(21-r4CioW;qm~sBi3X{<9w((H%8miWRc`cS_`;~*ng^p0+x1DYg_*>p2o=v}%N=}O; zrzI~ZfkyEZX`E~|gvvUfVqc+tsytXqx0NS_!>|Dct#L!tN=|HA&NrUScWw)r{5~sT@dik>MtnnnGbpt(h{wtl_~@Q<5Z;!n^r}m4xw$Pv2Rt1tBTZKs=bDE zr3KLIaNpcSr>@C^DRxw-jomhqRdpj-)z*?%96C0~y`_E8feMFloBCv0=Ib5h!Ii)g zzhzID-J-j<9XybV{w{2D-t#(tdv=vpw^l22b$gV>TS~wwLyqNQ3Zk3($kG=ef2d@| z=~d*0qU8d8wcI1kjaBc1g%&3uBS3xq@SK)>;QGcOfa}b&f+Y$9XR8{1RSgy1*wNp(lqU#X_pko z&^K3M+#r#MI}6boh#f!;~Kb`j%z$tXr8PXGwfWj{k|C4Bb9@sE<$}{;hiMnkLi2 z{EGY*-@kRYNjx9cUq@SiJKMv^_(jiyVO$xh;OA7G{W>?seC^T0Am;F_q~DN#hPkI3j?U z=1lWmF2KsrDjh~WM{-(M5$6rrEr8RGnx92;-c0wi57>5 zgJ4)SQ<#NUyji1*-;}nvOw23p@!R{sXTR{80C^ zH5VRZ(|fsj1y!tr6_v+T10ax8G2ClZefa>YXE?9FLTpZd#tO%kY{}GR;mB`G$Twsa z+hopUrS-tB1;%TYn^4kv@>b4{=glw7d*QQe;p>dHpO!J5hXO?_A%ebLWke`DM(IB} z&)ds5j^oYYOpq*|(gEC#3Z=W#pyY}J%nD>M^T<7kN=8u%ZlXqWR5FGFd_;^fE-j%V z`QF>@lxA0dwcCw&TB9z}>^q?w(NDJR z(Kd8jovg=M8FoIX|KHR5uP+b%%mc3(0j7K5Bf+Rdb z6$|hTjZVk;C6cHYys|N5^r%FHNhP^lt+!PrW{6bP$0`;I*Dg@4r zW#E?7;13mk`H|xmB6u()^oLOj3|LJjMt%nEY`8`^fBmv z+Di{z-Wp*&4%Q9`lYr$+##W+75{J3v8dFKR;7(Fmib+I0(HJh=Jc}or(yOF&DyIQo zbq#_Yws0r)EAQPmJtv3UR0=0iM3&9q$}F;Jgs>)H_lQdp&BU- z5)>h?qg0YjJP!ffX3}<=<)otQh?1#))N^M_EVD&fOfEGA&?7#eYr-qtnlWBai%Vf% z(=Q<%m&hBMDVj*dGR$__Kn_9Bl{$AjHUJ^boIZruk$)`-l*s1hQ=$!B3|E(CWlH7) z1`d%)fUE%%BOT1!>Q&Lmdb0X~yi4Fd3EoXukT-fK5R!G zF6J1cbFggE%*LNCBs?=#Bxe*kWKy_6TIv40#qQ+R0+^Pb5?f4i+x00o^=lLF)@hzrkmE7$SLk=$Z-{AndfYlzEteu* zqX>@$Qka&lqJ&Bv$|{I!zQNpoFnnk`al6|35$A|oVz9&^T${KIO?Db@i>YxiFyC}8 zJ*QZuVfjn*NHqBX(_Y98CBz?&a&~4}I6J@b+AK0myOrrbSTs)0T9GIWTx)aHzT#Vm zJX`3XdL6j1H(iH}rS0-AL=jD;<6UeMi{Le*1J=jVg}Czw{KvP)5AR=pK5x8!M7NJs z_!!8pDiLIWbyW{dIsG8O3s`+LaV=CvXqcA5BoVR4=uD*KC`UqfqR?7CYLGdS1RmU@ zAQKBbWBOCYTV$sU%ra44Eyz!#Xqp+s3XYkA19LQ#8pBlIPGnF!QLF9{?Us>`jhuBd z|F3$oXE4_Xorm<%%wGb3FH5UxbmCB@x}H~}!$DOi{e)$MAkxY}L2%0E5M=;Q9{LRi zyW>C-3Op+5xq*-6Q|%O#l&Q&LIKW_t+8r3Viz1ve3Wu{&R!R+qTM}rDtfRf$ES0mS9E%Hn74@b6B7XOU^CGL zw!T9Y<48J_zF_xBG!a@TP80XJ*o^3b$y4@Y!9yBZOoj%_Mvi3IJ=xCHL$G!C5TdI1 z5Ybyr_RN`zWh~Qw`Bsw)_o7TXbGrMP7pI5&yCx+iz|hL&XoMb>HWdywgdLkx6{0E= zbe`%uP4Q<||E-(j;K)|YsvlLJS?K{I)zDP*tV&qP5w2}cPehhdWHCtPTvRp&qE%qN z%((Yr1h-0%+B&!Mdf2%ie0WP$yR9)FVtW`Ryk(#Z81Hv^pwzQdJ+K zx~f${J$O-voeA#azS~zG9@qm9j206YB-xy}VT1) z$>lKK(y5hyPE6M$;Xi$Llbyv)IGh{#on^7bjvtEDPbF*@2FV(>JKV!|C;J8STbyCL z@vsM<{f}?Y@BjAo`R8qh%aSILv7*s5+i%h|TmeYwy)-dU0bYBrc|e`YY9ePMQ8Mh- zpj6NzBq(s5Yc@i^CMygQd%TIuU^%`Kax5dIcMO?->a#g(5gDa-A`{lw#M?s{EB$W= z+i)cF(Fp@_y3WXyNGvmN5XL%~9;>MG#r$548sZ>PbOKQBN_iKaczyivxWP_i*+YyY zLsn$ol~F|Gf;XkwUCK8d+y1`^fwjcV77O z_Fi?zV~T$H zvJtn*>*lV1h#;_zR3C>2g`u#>@E9o(10Bfj=nUYCe2KFR9IXBUHdAt)Bj(Cg3v$=X zN_?21)FlpTB|WTmUmt#>x)8qm@Y9BWSE#Mr=k*wvXPV1F`ThY5wPCE5JYFrmoOwMb z$5@W?%Y`v?ri={eW>E-3XCS(B6k>AK&&bR&6DSY&tnMoL*E>}0Dvio5Mm(>%wlbP5 z?Vm({D}fOY!bL?glzQ>$pXqR<`)OD~5JT=axFlhE^BagvVx6yYWdn?S%ynir+oBWymh0DsSZFBA*n zdW_kKh_RP?ruhQu`#f^x(nKR3D!b`PP&L?ew%2iW$k+xIAp<)UzI#%C1UGwtw+HfV zPD9vk>w_lY`;U*G{&tsGzOmibrd`~KiQid%e<3l!T<)JAU$@eC|5642Ba4KM+WYUD z=U+a5|MdF$_q7%QXDaa(a(W{2W@DVtpWfv87fW#ysBt}oia5&;!XUwKJZ;mjzMTy=MRmubSI-+P#TFu$C?h<0*a zOpIhmLab#=bRrH7gAbo-(6jsI`}@16Pg}v>)`MP52JFcmN&^70l1Z&xKon!yaZGy4 zOnsyj$`Uxr<>E^Cp}kR#caN{H8_bjvQ7y{w&pq@vYn86kxU<85<%p7f`TDpZ+Ag zXm7X6w*UP0{T6S~Qi$|Q@P3v6#IPULMs&62>0S{NBM znD&CmoS8@})KhkSn-S%}@M>nRuL!lNtCy>`6;Ic0Z)eUkcW6?L56BDBMc5={-rHWT zFao?Gs3?i?^L45aac4kk(Sjm&4oqbS<^iJIBNIs-oaKpsFy)dLo8xM)^rjC?4w4*I zFt)M8xR2llZMhB33{vqj54HuxAA$s!vEr@9#4GA@=7Jzohmm`(joWzJlwlFH1RF_g z!!xVp2$3j|?$ddT07)4&Oi1ro$L#%EuuNs4)_Pl_o!KzoCG2ZY|l zbV2TLQaWb@*@{@zi%G8`Y3(2YV1(aM%bw{37^KR7t)sl4J?lbl06M78Mz_IKPAQX- zNiX2*2Rbkci{BNqs4N3$B0h{f4;zjm?#d_PU&%p{AGon&=c*g3mEmU+iHARHPav81`a-S#R1JLOQd)!5UCQop#6VCxp#!9)^EeJ-Q zcZ-9(Z`na74T;pr_iZz}`MCBLR;-HM!5+=fj3}gz!6ME0O{Q*qY}3Mr89|HzapW18 z`N#Hyc>P1R(Wj?t%J)FIb^3%eGd(#Jkpj_w=bKmyIbpb@ZPQnAHbDSEU9a@wen6 z^MkG#fE6`neh!g>E04AjFzoAGr;*r@zRY!DW{%GWyyB|zU?l*okFEmZA=Pu6@8BkX zuJ!|2Z-#0+D;XYmE*nv|AlyuMPWCi|9-{=ozIzmm@iCTHn;>!Yy_ z6WC08EZUA`aW?p(gj__U3uWe#HE+8loxl_4md8sNG=-BK2@@fY%Z0+tCYBXy(VD;{ zCnCv3l-u@b8_-NS*vSLw=XsOHWLw>TdeE(-q;Vq8QI2>_Us0X$mRYp9yGhM?OJ zU#6S;E;P|MK@wSd*>oa{oJ}ymW73yD%1EhHYkRbP4?0mjR|B^>mN1+fq@07iI={w# zeG{4z_@!u~nB^;jB$m9*D)zYvlzMyW#im(Kd>SM<9cG&$_2GJ=Wqh`&Oy9VFW;lKN zn)oyzi29$ygeFN19-KNgq-a9bNTYf7RscajzP}31k8F5OWc-pjx#8;;P##}AXF(1F zMS0XVU2?oAmOMtCkE(%1lP!ju^Zba5rhSZiO@^K)`Zaq^*OV5CT`w!yxW=iTgB_=T z41iT3ja+3WV4$Swpuv*{g@)Aryd8^af4!V#Y6lZMI;S%wt37AY$Ps-`7|uHAm@c=t z66msgot7A9uwyR5V*xp$fhnMzsL<0Zji9QCP&zA}hjTU4O_farXj?n2FzHL$eo`7C z_PkfU$M2sJIp3It;&(|$#{H@@SXT$HCJPJR7Ec3Pw3tjK;o^bgM{^b!lCe=eK- z{DTOFe6XEW{M;DYsxCff-Le#0jDa-huz>V3K<1PWnT=2;&s=8=g(A(Abo-3(f)r#l zoel}r31M53m8sC?7p_qd>xx=EZ}U z3^~SG8)k7LfPde3_+7aXL^w*Lf6&dTv9#HDslfdXU0=8_g<||DG?2z*HRKcTJIec~ z=g(iaL}w)W!adFqQ=>pQe>Dng4gIH7AY7P#C;ra!@53t*reM1n;+&~5**b{?90+V61 zfUqb2N@n7ajjajUyul<3sygdZD-LD@2RmYB0;VIQv0qSoPrLF`$lP zS2P4PFB8B49&XyLkh(mVE|LEOkX3S)^+!&`|`oTyakqGS(C17bVo!+^}41qTIQ zV*sr|=k>_UWY%}i7>1}8$Nvi(B*u(ZE1Y)AHmXS*Q_>#NW(fn&xHOP*#&?a4_h$dJOq% zxfmY>`wj-yX4qN>$ZuFgieD7e#>$>|$~-a4#IAA$#8JR+;>qD$e$J(e;W` zX9+RLS0MH0f5Tij=7~fWveytUH#LH7jrvQPr}z-9@nn^adYY4GU?q_z4LmiL&f?wm zyqynZ?I*5=(4tg$lG7UMpa<)C8TKna^X7Y2E0-P#WPXA59-~PsRrF5-Kv}l$ATMm} zJCg~;dvEI?RJSTCks0ylxkP(KfA`Dd>+|DUhlch;fB7yGXPa&?0GM*?oo3Z=)*{x(oo84oFi=%LJr!ZF1_~xz12@h|S^SlJakBRYgQNeW@PD~of1j^9$UGyrM07Mjo)#AR&KdxgcP7L(QpO!p@SXHAwBZ5Zd zwwDTE=;w%;9#Ivhy&BmxIJ%s9{)L65Putx@h8lTRp)o>1ZmJ1sOo3W67`159Q$||; z^#H0f_&FdT#}pRckzUH_=uyIw?2Qa%z|mLof0d#eh71g2NM>E-IA6@k-xAXW%ARr_s3ZsqFc&0eBDkhULNn)G$-1eXZZ(Bc*e^wc;eSG zDz`SuCrnxt&22;k(@_rpZA6sDX(Nm7e~R?HTEh>pGol;>Ca()KbL1=vKM+;pm1!cE zR5jO%li>!=yOHA*BYpVm5kd?~*Mj1Om*qTlO?jy!gSa*#GR228NKjPK3qjTa*i~au zBLj}O(RY_-Kfiq4f~y9>j0R(0LewG3DxPM$q}+@QW5h%Df{R|uERNcyb1Rq*e>i-& zq<4iWCy7Hi%oxicP>I9!a4FIX9O#EaYe)FHm~E1%$&tZZ)5qRWkJNu>%1h!f%s>K& z!?Gls1`Ze*-nT+r{j^x=S{HQe((UJUcz*i6IOPUC_WP=oj?^G4U?!3{{Te$NPHUiR zCXRSmLu+?@8J`}1zLUt73&0IFf3hE-pq)9bsRUS6O7>*dqe#|?44i3 zGshTw5K3%j5-}5-12cso`geNsL4Z9xzh6IQDwicMhf|vdXZ`|DDltqtf0jTn8q_4n zG$C?i=P93`*2Dnf$;S)BlBAx+wcjMMgj8qRQ(#P>Bq>P(C02wYl>G<%!+P>Go0upK z>sIB!I9!Y{MY?f8SP5ki2@+eWju0u4M!54IA#$wzeX}DQ>J(x1lf%>*Hy! zOn={~zD!@wIhZP@BPTCtg&3#nxtb4Dkp*MT&{>3tJ8!%9f43D334Df>H^c22iUkVL zp=U%sBXkHFvj^JL>~*>vjyLoj5aOx4<+!s9`270v;oJKy$ETree}nN%=B`n%%oqy0 zlN=*P3v9t1Nn{l>CP~3X-dgJE3g2HCcBRIMtdz>BJxUWHYgINXPsAdfwDI_eB6u~I zJ~c`5+!&iEj3)?i?zuaOW2v+j6C+cdG!30s$zRmV4N~7d*mip$B1lAx4Y-CzJaGk- z-*_e94-t>Wn2i&Re-w{!a5Vae5ITsw+hp_tEpo6N#sK%H%#joUnsD~`X7T=6wgt8~ zbD6TU_@OghaAFdqAJ|w&nMFAoAyFWb==T0VfH%Wfjr{fYa|LpR=VpD-Pgk!qD>j)E zo5YIs(H%h1m*@Y&RQmPn%g^s#pMU&m>o=Pdb}0EoPg*@0e=!Vr49G|5Z!25xZ);sK z20H3l;2dwb*-nAT`*^8=?v(8F%cn0J=zBc!u5F_+E|T-SR)%pM=Zf&!a1;Z@2BbSJ z%vK=Xcn1r{^EL=zaW|;8163X@Z{$IVB$<_Ut3?W>QwHLvoxJ%=f?0<9$g{KEtE}|R zUjO#F!^NUtan=y>hG1|(9 zQU8u5rX4oNMTfRp9T|8h6~i+!Ni#Dsxt{5}#}Wa2e_Q}TUgKr8rXi}z(|ZXKPttNA zA%!Ha(-0XIEzOXVY8+`OqaiK|&qW7Ubp^n;%4}_kILW`V5Kg~S70&DTyf^_KyW|Dz|-QVatKz3r4Kl;h>FU9oe6jx zxqrY3e~{(HMZ$;YcrC9TuV3UI_soLZZ`m(kKlkslD@q6yUptp>uS}ibI_UsL3_yyw*iT0~f0SL{n2ytx>Fwl^*f@ue?7>pPY+mCB z#^Em+6O@1Gd{JJ`ZN}D;iDOScVR1OS3AY?gGkeqQkpbb#0r3<@Xd$Tr@gVpG zrVS}6F zy^~Q~`GGJaV;YY#`V%Fm2!9P^IbO~SPN_&s3JN7!*X1s6K8%%B=BNR%mK^qye~wrp z1_*>%lF`!S49m%Akn$=DD4GHld9X@Mf7gz!$@=EEzojzb9JATUGwU5M+`HT8PV+wzvt+NG+P(n$(2e%@@hu0gM? zj7%7!XCS5$Sy7y3cgal=j(cuKf18wn{wv1+epqb|CP<0TMHU-!RX3X$4bQiVT#_Xf zv}DKwKA2uVj3MC!;0x$dvpe6;y~J6Se%c#t(Rx;ZoPmiF&$n|fmC$-DBIUhhJDlku zrnXhZ{(cJm37|>lEVZ)Vfq7Z)4MO>B_Qp5PZTDo|uP@Ua`ndgY8AqeDf4ba|Cu=H` zTj-G@Zj~NVxR2#S=DR~yMWtvQ+h3Q!J`B>H%XkrnCJEh7eo^S~0gP5=0gqAe74a1h zu&)28*fa)mma7n?nxyMI*nb(}B2ilB->Ts64-MtZyOh9*no zI}bF$I9)cz^1lWdskIB@e=bB?i2*){#g?b&J7F&`x3G(NmH3=&&)x~zD$9Sxfw2+? z@EdV}uswWlpuK#3{Q9(2^B^)V6Ok+4^V}9uMNjt*MZ*PB(3g=&SkM?Wk_gp6--$P* zn+qoJ)hupB2r8YKRsKkSRrCTlW%`c9{2s_q1d=`sU*ID}cK8E$e@6?5Y6@0enaMd~ z{zv%)yr?1(C~z?`fTf%dI9N#|Ct&0r+*0lG@#%-Jo0S#meB8Mzno^trH8WB$px^BLH+G9J=@B z`~tMhAe-Vs~V#-p31%~A(dv-17`F@v7umshF3&csIEoMdhiYfPyjD@i_ zT}P&YY`Knw49LnyY1#)(-wW3XNx`-i<#At9BL4Iiko>X32BoQ6ee zh28aHo%br2tfFwP8C+YreG2Gu&LnZDt9ap^{H@b*6n96f^pNd=4eJ znGP&70y{H2;&MhTkBAo*m6u@Z2&99@Q7}LtV2XGtLSqP~!etNQh5%w^YTV33&XE40 z#*OHOMF`<`&LOtAiGSH6`YOpF1Y@V4=$cDvi!7~5;-VM1>WzLa)MsZV{szUMU!Px} zK0bZkX|>D} zs440sOM#l6A8oK+F>?@I=xZiFUM?(uDm&t7)G zf+dn)g!QF+YK`VOP}4|B`js7;_KMNy3wkH@U`jecTnKG+_s-Ved1it-7O~$!kcg^8 zov6{6s4BtLOmu--5`UaTyvh%wd`pyX*O_-Wx!wOFk<#xRLa!y8a(D^fF@e+4 zIOl*RuoKiHm3YE;jd1&!J`{Ljy62`w`3@P4N2WF2W-Csk(}g?Du>}SFaq;JsHwl28 zwS=@BKihRU4U+9nbNsA#wl~jAz$hUOx>Zhw!|b-+W&R5(?|;`T)~pWl9aG=tbMHr+ zZyz^vB`q#GL&AfAw{VM4Nn+s$IjmWI^b#=>>|s4oM(# z;Cj1eF!XHF!vAcGUtVPz;W`C-uk==0k3T7?j3rS1bdST#97$8KUUyhY-%fd4F(r9_l%BP!`b^R^3Ph!hNYm zPm}G;+d2f|SWrHJA_c<$>O032r0CManOe8_n^(yRwx?k3!h4ia~ zB&y-V>lu;{k_8?*kA$StV4&xs=ux4BCG5QPKx9k=ypr&4cyJ?c52I4X0wVC$rWbCa?!{zlj?}YO&k}3%+H+)__Dcy@ee%ZjXk+)3x zS`m|T2ypmd3&wzCCJ=sCTeJ#$UdWkADI9p2Ie$PDGDjpPRY5;IJb*uwYDe@)2AvBF zv~+rZXMeAcgXF z^5Exp=P!Qa%wnABamSUM-f$&vOX2d{=fc~Kh$K>|iIL@4I}HYBO$3M-@c8{({rdFr z#XZMlXCtoi+y}0F#DOlZE{$tK&kQn* zBP~ujBB)zky4sXc*@$nCSXGUX1ELx7;<;>l3(agh zF+7OuX!<04UR@09b~;>1R82w^e9Za44SalupnyWcmz6N})hG!Fh7mMz4_W3b4xVK( zFPae#JuCCvMce0$i+MrT5V^k18{I!7BnzFkbb&-vPUKAx{>Bi|@U=8nwZU5-w*c-)*zjQrp;Gab+& zMaV!}7I}mP^AbTylU_OArSx+hz<&mj-hQW~(Wy59)D2AcRl4*_&hn(Q?{HY2?)xpg z@0hqMytOEQEqIxtaXY9`bdU2wOVv;X3`4roO?rIPR^av|)a1qO%Qr6IA6 z1mS4MtMWrdtDt)*7MP7%7VIS$}8kBa&;> zxyS+%3s{|V3U}Y_yYC-AK5kL&{>X@Y3CysO(WAWg6R-qGHie&ZYGtl3D7I8gWk;#L zO|W9-6a$wB_U_Kt2*k5;0kN=1noBEDAzu1hf;L_&#UcXJUqyY^uVpVQba)#_01bbZ z#nOI-%45untXC=z#}+O|P=6xkU)+cwWtIgrYM6yIHlO3>Ybh)h7AM09=-yF+FOMod8`(29=(yL{6iTOb6_VTHCy zhEy92>53N%1B+aWHGdc$gb)t;1?Vln&ohrG_1J-$g@w!o}ZWp2)sej8AF%*BHgDv<@7SwYZszxVr7e{+int`5# z^y~(iue+h=5r0nY(s{n|WqKV(nnw(0<|j>l8E+Q(3=pk+GZJc}HH&V@p1=-Ghl~f{ zCeyP;#$4*qPaS2Tt9d}rrjQYsUHTTGN^5fAxamp=dp|DBp$uSj?J|vdHsxK z5~)5UjtK6yU7OB1TMZ*ScIdtNV4Hy*`_>419qrc-uYb?KY(`pisw#v%w-^XK7@(EO zLFC^;8WD0usV(HhTH}fM1WVc(cGelj__->fI0Hkmf~f?P2n_WE z5+Mi}k;Lv;KD?K@mZVl9%yP+~(Uy&o(WcPp^}=Y}7)<_$Y43zWqnzfFP6cLM+fb}H zo_`oN`#9q=dghcZMPWHUhwB=?q@vM^*kC8WHhtdEZs!L0DGQwR19WLXhJghMIV*{& zZd^5hF~bNVebdR(IpH0eRKb(RRBiCkMcQ+6YV+3gknk3cOBn(o#c@mzyxb{ec5t_F zWRh@&WGcyDicliqXn+t#7y|HQ)$Wy5A%Cu3C;-`tgf7b^&J=@mzeh_*O5h_XK>(+U zE?y+ng7fW(s!cr`BN zBo1qD*UIV{Of6iLKVk@Tq&oxZ3kx zBmx+JHyH{C^X>(P1?*1hLm(ccBZ0@*TXYG#knY5Or3YAmTq=TviH}!|boi54>gNISwtS3Mgn-nl5*(}!>G zH|kW<>}U@prgG*LfZrtgqjz1STg+|pxt*4VFHDOoNlDuVh1h7M7eOVaB`o!SSqt5g zVtTG3%d*G+X1n^mcHOP&>(hH=E#CKH1`2^O0G$%<4;FzVHG3n5MFa;&+H9C?q;;WO zI7SYc7K_jb#tMuHzLU~UjfR{)j${}(h-os`B;s})ec)hx8pSovEMaWw zS2=KT5iW9gD*F;;S71duG8H(2s+45x6(N1FlTuvvvL7dhz!kY!NhnBsyirL~+_P zM){m`4jUSk1S^RMzNq5VMso;8v8fE)Mg~&2-QY)wIeF^HTve0)H~5@kPgO z#(V49_It_~@#84ZwDs3a{p;XG6^6IU%mmlv2Kcw1qSSL?+X7ou@Jo-?Ph-@O7FV$( zyb>k;K?*%X^fCF~!*r*A7VgkQUtFX)T!=K7=F5WgRc5k613Yc!uX<7{tfN{ACV;zl z_x{`KJ(D_2I+DajejHl66p;y6BV%YJMV{8=4?zjOj)~jI7(+vhOhifeCLvs*q}b^~ z`a@i{J>J<_^c`P`9@sH-RLFNfy==6=9Rc`3^l{?F=IRl?6K9ftc8**`D42k7%E;kE zZzYLVwz;tJ(90kGK*2seef{<2^>16!qPo#xCp8}eE$*}qIEpJ|2|r=~^y;2#O6$rh zk?~FPJ&9=^N9I8RfP3wWXu`no1L4)ej2dsEC%VWfStydPWcsSk03GK>s--K5`{1Fc z8izApI!Tfa3iu3vJoCO)K0dwQWRSpMKp1Nctq%Cq!WyIFd;;ofRG5_@T@?8xstXD0kZuj-EuTF6X8v# zruYg37(rd0$gYK^+Cuj?*#V?rz^`IIyxT%T?0_Kn)Wh3g|G|!iB!N>~W)@s}bB7J; zgy57b8fZflO%4vr00_6Ngk=`NGLxa_Dy&g1Z#3NVr(d34zdUVWvMlv=ekdF4+MBMi zkXO^l?3K5FT!bFCI#~~5k6GkCEHfi+DG)vTVUd3^CuZ~{3|8umYHV2DFqwjh4HH5T zT$-$Iq`QR|oc?=n{as~)zbP>%NFDDa4;1h8r+tn8>tEI%`I z`DIOiq*RW*7d9!qPEW7X7QWr-)4gb6*9a4tx&h6Eo_odQ!V8wMNNL6JyYtXZAZN1W z?sAFzHLs_evH_D$%f~fV6tbZADM`aR-H52BEi5%&x5!i!sodYJUf1jr1L#KAHzR@B zx?qskO;mZu=X+^l!w{yI$xrx%hyL}F{xTVV`(?5ZPsEUtl_53e9tE))_TA6VpT2E! zwc=e>ruVXGm0?p6q$@0|5ijl7C4#Tjl!ObFgzM4l!%CCzjdJ}j*l^nyoz?;%QLNRQ zm+UqSAA`}mxXMi3?fKIfzdpNeo?5P9^-K@7Wd*w0HDBZm8BBr%h!apnPeYg9H;00M z!j-^px9i>H^;X+zj*@8##!*2Nr+ziSf$5d7hF5UeoAJ2uKlEyl?sH~X;=WB$_VfM( z{YPIDQu59S*iPSd1fhl(iqwm67mN&WNX*IAf2^ZO(Zz@_F|F^vZQ!xUbjEiO|JbYE zyy8DNZZ0`tIjmfX))9XSB-pfshHw{u5d#`c$Te`NRvGC|y2o>K(|-1{GD+feCJz6&A+(7mi1K>CZV=}9jfB-V$tcDqd1YnG zOt;|j%-yvZ;KG?QbBtSNLPg*J@p2>)CO^=R7J*vY+-Cc6 z;}(}{nd|k+z7wdObs{HqofngT72QA5mVvGzGc(!6=ttsDehL{UQSt}w6pCW!R1sPZ#u;CX>OrG#5Vie0p1*bMS`NE4}w ze9V|=FN+HlmXIN*3rO>A|O&uL6w9CVG`_k>Vs^DQC-uT#~F&K)E;Dw|L3`EJ2qtn^q)9%&skL%VMZTltL;fWW5#5VmnE4 zYY;WLu}Rpe18ZE7wmj&rqa`#@p~&=rBYIGED%V+n4-|LIhRAM+*cGe9AzNB^0o9!d znS2|QAyOO&ndsd_!zGh{tqhH+m4Q_%*7n)-nSJP+V>T6k=K^Iqac(5g!c`G(os$Iy z9nc`cLJW8iG(IS@DgLJ7L;#FH-^kJzaW^seHIBlVjzu-eTU~r+_|Op?6@xt@N~u^1EU*>~gxyqX z%b}JoGrL)TF;XFly(>GF6h(zvu+^Hvx-c8ay7s_y^&-ql&_@xhjqL+b4xoK3e}y24 z7+I_#<{!U;HSsWPw(D8zrO$YbZ1|aM`=lM zWs)1qWIeZ(l@R&c`fyt4R*=0jEboXXpz#u==q#ImgwX^S%=aOODs=^^-(#eW$d-{hISfnWEJ%Lf6vQL#YNDJ--PYTe{7P-jMMd{Usr=KgRD!2Mu?eOJ4 zzCFI~KJWKB2A|igp}adOC~z%`cQDAf3r+O3MmWcfxMfRMFf4&Mec!F z5Dmi}!swY{{VXkR2ePE;(_BRAshYY7+)t~CA$DS!mY$eu8am%dFV$DwwA ziQ#NyvyJ?q+!)1Is-05R)5)f=H;u>KhY5Uc2)?8H7ySJ6aZA7XHtrza;SS;-#2xTC z`%LV|e+Ea;kq8%4oJ}-zXD(xDYJ-4b0j?lF)&t^QK))tCv5Klg%jEm=zkL3@VYtHM z!%AMIo|b(?QfI5)SAi^B5u^)H5!MNR7Dmv|IKjl0K3$V*J-^ik?|%OF<@xPHI%cnJdrq^Jdf>dwv>mccs`1S}r3nDNRc zaZO5hD9-H;`z?GIwYYEPG`Dhp_?=cpvjBPLNs}|{geRkh3c=hJs4$J)5a%Yz?$#ul zcu4+&9K+tOJB<>QsFAHv=IY10>H{S!xB%D1o})L;?umVTkEy@Lz&xHpo)>%PBYVJa z^pLq1S+`nrv_hNnsFxdyCXgsW4rK_kA5mw9J<^K2ps7^LmNETSal%(X_CX=SlfCYz9 z>At4le)wTS7o-Jx=&oeyh$4!>@4`~{qhz2FxsOuDm8eac>A7*exODpW36tndn>K;& z2M*}LuH-jHg6agc*p1eIjHltMB(JqmpVbBR*&9`Q_u=`=9P`!)|b(y zwGtgNWP~L`b=r3!%R5&*eC3S!B^zM@9s`?rp|??a(sb7hNUzp+>P|R{Y^iz#TPc!z zt_}E2C>k^bjFP&^*Yy0dP*;1L!d&x7u< z+^bmIGSgTI9{C7c1)Zf1*9!c=hqeZ9d)qRDmwljyd(D-ga^BdM5_S-zxb}Up}uj zLX5VAj?rW#WRhForMe7#U+HHJR^#7z(4JGJ(naQPW{03`WTM12{5zNVn~AEb`ogt; z6K(#IezOR>wEoC)pVs+GX^?_~GiI%6;4-;KYzjJm{=iiP*ny`@No0FnaGvi+KQ~aiz=zGn$y5)END7a)K%5?P-yc zR3ISD$>Ik#Irf-bK!*CXumH;d$!SR@IH2W!Dn;O$5#xx{Iy2X>n$>11YL!C3gMyv3 zO%%o9woYK$eU-5uYYHZ_>;b;fBqZ#|6Y&ljdK4&eqQr{ z9JkaVzr{PkEYBGiZlgKi>GUd*d+Q{Xh$5_IkB`vpl!OCo6jrAmytG)D%)mXt0y~s{ zC%o7SB3Te(XQBH1^Sj57Pp?}=Al;|Z!Zg&6p7R$Ft4u}MI&s<^KR+H>1S^4Oifft- z{1BH;bbqju!F_c`$0=nUQ!L7|85QRAjA>=M!|C>K0`ai7Rmy8-O4+Ep2hgzDbMDLk z_37uw&+EJ&#(wxB%=73N^Kzde6`_x7X&?`G44 zw7plfTe+iHczCa=8(2OH4%IjA_UY+AH-bM(j^^6)B5f<<;LX&U{eN%W#UizTcgm1U zyJsV`HrxrV4R>N}I%hI#tC|WpKQP1{XJzsDJ0;px-~IDSMiD$sEHoE23(Tr?5=qSR z5y`?EmEYT)0B+#~Xv)!*v>qybb=kTIs%$vVx>w`RuTQ@`zpU+P5=$9TM;0ZDXz;J3 zz1YoIU*794f2V}q<`Z33s;hf{qoZz$^aoz5`@_P1ccO2i(G6&AniTEZ;f9d#U4R=23@lSngvz9yl)JI=tM zizZn>mL~-c?_G0$`}^k&ZTvBh%w7kzwp4JFK~P}cNGdVm6v@kj41_p8r-sSPh*Y-l zB=IH2hr}xh?4n;kWW&brNs1ox`Dh(5w%SZd!6RAkE* za4A$7kfjF5ov76YQs9eOd!TySK$4|_tOP^XPJ`1g((gms&4H3oUYuF=fy}xPPLjNK z@v6GK?~Rc#I?tOGf<`yg=C}#M8*P~yqIe(ZN3C2>j5IH>t57R{&{Js&9(sJ^T!~~v zjm2+XT}Rz{(pY#&>rt{ncs@0^=-C5BEVWIyLEkK$zZYdsonal@B4*HTsb5Yv0h0y! z65!A^o@VfTpgZ=z)5>SmW+GCwzq;Ei-Te~YegEytG*W)qfS_rXXAz-=qD|0;5WwlZ zZGu!})F##nhbmrwR{%pABUjiYoNnHWK9!8aLy7XlMjsZua(z1(t+KY&t#to^^&B9g65r&QBwMHj`vku02HM$kgBIGWZGC z#R^IhsmxPq=ze@5m-!ACulC;~-)-cpD?E`z=0Up!ge$4Hj4f+`%z&H(kcQ3D=LK+` zlRwDS9dSN^RDeSD(t9B^w-;%i<4Bi?7jJUeu4AVdfF*ZJMx$cPbX8wcL)6DubI3m$ zFkm?j&I~etj$$59Bz^IQW+ky5B8-HLW8HQjv)J?^c4z=TK5n>w2Sbv=I-#Ns_7r18 z#)n811&vN6oEPU`8209V;#Z~Dnu0N>dVXfrrV=8vMF1(JbrMEcsB7L4e9g%u!(7L( zQ=7XB>0wz(61*n;HF4K^k<2**4hM;^rDIWg1E6Mq3^G!Tn6?D<-hxT?B~uSg9E-fP zc?D)@@PSkgCYkd~cl=JT>MW|mN(Gt3(ox8qrAZ?>l8ORyLDWQqD}%3(c!&V9nj)$q z^7bN4fa-NM&42(Rv?WIxjo}_p33O3OYm5>IFd`=pwmd^f1R$v!U!jK&N({x-@-ry9 z3hKpwu0&m=!+g+0gEC3I4zp!Yn1M5>)L_Xu6=r}SBg3Uh$_ds3@t=}kAlafM0R+4* zGFD9!O8Hz))Zvwy<7C6e>BSscP6jn_FX$}nkW?WuEil!AFS)AJ#0ffysETVecM9)b zYL^YvU)iUGbx}PwM z!_CLRD?SKSLMB8dOn@-GphHw7oKOx5L`R;UI|@8gPN*<#$VndT_Wb+L{OM`sDe+>b zq++&6Yw7EVaCKxR5-AH7tY?Bm^Q7vPpq2Ce-t^RD1f>tfbv%$+sXZ`tm*yWD zjerr%ApK?b*Na97*NBxu61^A0_y@|Q6RG%$B+&y$IEd17(1X21i=R2w8o7dSy;Mz-^@p=K>~&oR%HER% zA9z}cOjoeZ$*vi|``1K_%}rVKn3)J^#o#Z3ck;*zS2Rk#+v{qHPBmv$n!cKGwq1*< zyd!uaN<;DiG7%IuFNpWNnBcH~sZ^JUv?Z7AgiOO9xt%b6@EU!9dS=g@rLq zQK_ex@;15tEZZ=EQ!hJ_EMfu$*?wY5Ee&B(=Gv}=PhBTk#$@0G(d?E?rqXj{<<}oRKK|`# zLt$SmwT>Y;5mGbu7WwTVFMME{c-2xgGDKJ`O%Cyq0H+5<@g#VfDch4QfJklAz!b5l z6pJ%`4T8`SQ4;Dk@do5r@9;>#TZOCl%%X=-%bBQGok4bTKyreAg!+u4!k)o)|ugm@X_-UK2wZYeWzshxhJ*r$H z^2$mPu$pNLK22)(K?Il1Tr7g{cjS;XE#M?(6!e#PSW2zdB3NFfL?@cGQC%0GBx29! zC_2w+QRx*!MzC4b_fy9*In9QrmJcXf?ry2Nkz~Pj`zWi#bzbPo&&~kBu(9Np z8n{)dHegXtR;-JeBJbQubD%O5+9gG$A*aToTq#=+C&(9i7LhUA+A;TvFF>;>w8ot& zE>yX3qrFgn6OH71W+&}}kk%vEd+vJK%lr2m)a#!bPLrcGOV<`sXr$OgyNeVAV-Dit z_$-vwizAK;%?zKAv;#P`57JN$T}F+cBOH~|dgTpi3?)-;g%hB~F;fbHT+6fvD(peK z6d~Gtl4x`$Z9Cs}6eB%R%vEV}lBGev1g2uT>O#wZCY!M1aF$1%%a(bpi%`Sl-oOC1 zhc^;`N70ZYivXQ1z|2mNQf{b&-IvVXnT!bI?Cl$xB0E^jQVx=#Y>XqAh-C^EdIV`% zo)|HH5R5!$BbUH`=iA*87J@oE#!IEyd#Q;*_PZ*-yw0*K88}=wTqHN&bJ_hP z3qz-WAqAvKSaq;WFnZ(3HJyXy)tKg34qamwZNPh5+N&mPqg7BpHm@$ljx5*4L{Rp+ z_z#ckMH@1?76B>bJdx>lshwC5U`a~vT4h7=T%ZJ&yA#d^h<&5Cd|hQwlimC-FB_>C zl6zY+zmOSe#RU_UDMkDOnIqe2SaZy{9r2idmygdYe8Ke8laE&)Ps81*8yL%QG^8eF zy&dTj4aXT7f#jZY?YXnivUkWA27*LlGz#y5Leg<>c#vPI0Ghq?re47T`}wEG@1MRt zzh48o=`>*sCmm;}A_fmiQtO9nIxaOgX<2hws2%XMdZ)UZzoR=Ij2u`|$MEf0O^LjuhYSIG?`#{Pem`fh?ThN3OXr zV~ai_(O;Q3@lw^ES!?uMMy)_|*LQKGPI1b9=kznMUliSfPF0v8@=sDkh8850~@3^x0peR#U;bj8?ph z%kRJmeilIpl$wk5BnB~iwceVMXH`h}+7# zN68-qu5pXGw-KrswYpcIr@~}m-H1sAtk&=%R4_#o4}HTiqrVvwj1xhS@;;i;f5#M} zO(eRc<$dgY>smHZ2E!@6Co^y=e?{jY(3&s1@#eUveMpOg1Xp5V;usggg*Q=$#=Y5B zB;v_rGN$M==*xDe#%LsuOD3{4+NM)Tvv1QMP!;pyErRe6qs)F|UQyK08F!GAgN%;* zsQt2MdjKrc1p#B9>G-h=x>K~re;L71l&hzja-uW&xg?#X#kPoy{SRPkrgBsJb6 zYYkD0DKGMqx;5E9J8|xgwL4I1fnI0sa%6W*mP)>m29+Spum?GO`S$6<`;RZ*)(MeR zbV8lP96h~gQPLSl(o|Ql) zCK7yfq*g;P7*E2>HslmuvEVHSyL_h;zrKHZ_xJs^e~gK@k)UugKu*R$ z+|0LMh_NbkQ4eeNPe>TAHL#i@3Ar6QZ&|7bX`mq=vx2;iBvwpIr4KhA*YT*8cVvKf zWYCF5yER=2qp1dpOGDPI)~*XPXgx_f1UgRuWFn#^$=A;TmBd$=E-ivYZY|6{kXk=3 zRlUF~ztlFJtTcSBf7K`y=}Y6xOt@I(gsqHU&l#8&0Qn~)Vsc9jVS+VoKg&`^gYr-7 zqYm-GxVk>APROgP*T=x3xjF%<8q1%E0xo{m?a{Y-*87*Ae}3L(b1T`Ga*p&=)lOfh zkEnCUPMf1-4tca+!Ru*URH-0}@Qgt?sUDOEPSC#EAv>8*f2MTGT2ahzNLJFCWMzB2 z{bp6)ZFu$h&<(RlS$jVJ#cKm~?#C?#xUAVxez%J2!{tvX_eSO7x2y4gq6+uo9KT&D zW*6Mo>|edZ{iD_V^7Zlc>+ik0e|A9m^Iz^CsMK3;@L#2G{-L+DO-;?K`MDhdT*%Z> z7b9h;is2Wrf1)`_-bfy=Dy##S>ex&)RN>+p#NtTAUFdsKKPT%NuFZ58MU;7K#hLj$ zmjrslYA&f*h_5Us^tviP=)go~6+9EJ;=CSZ0KU?{3;kfOWx1kcRJuuDzORu4C$7vX zh>YNiI$v7OLZNa|KsP+ip~h8m>o70{pS7`}^YZH!f1j>wc5*X5R-u7g>^GK6KAATt zyIzpNO4qEoz5H4AL1gs^1PK(5QQ;(HLuIa8R?`GER#-J_20`S?JV`4PB(JQGvN;y1 zbicMZ(%K$b882;nl!|F9>q^v}i{E~2UopvYeSCKfh)>|>r`I1hdbMF~qXLgCtw;uZ zpyeo3e{vOCJc%vX@%7Uwq!qlQ|EFYqza!V#g$Q4-nMK#vzc?gW6XD0Z- z5)lgo+W=35ZcdUG881CQYK z`fbg5pFzQ7;X_s zT&DRgN^+U`jXfDJ=4=Ne1B?{(e=U}gbX(bor##CuTKmA(4EjX`Qz2Y4FkvYj1mO(Y z5EWdYcU`?J(KmQ23w2-@5r2NvD{gkfL7bK!KE=P58MDxhtt$ox%m}w%lUclc%fsei zQj%}y7-DLATKwcddi$wm%<8baY;$^tbxtqG>Q$QX=4jaIV^1Gmet!CTe?J=M^;aFl zJ6)-ht+dobXRZpQFoA66WZ9i9k`tL-5-r;?(D6OiRYHpP&fPC#9a(spkMz4gt^&?;lu1H9rb8{U*5 zENxPXo1Og1|HohuMD%^Ge=_(tY!loAImrU`dUVpjkA@fWb6MS0Xk0_PRxCVho8dYY z(BRDi+4Sup+BvN1mH%7BWQO~)X|NF(Y$3$C8o7o=H9;E)cQMF~rJ_Xim;*kS71`-I zA3whT>1mzchKt!x2vDe_3ge@2{yMJefu)SnpT zK2zHSfR5A!Wb$b`0Kj6FKmpLZ=YG|Fv0uJE|M2&X_DM6iH_)h9#fYaDorBDIO#5mN zJ&!SWA&qIOON#5^0HaO}+aU-PDA;xo@o?dYWSSF!??*R6`|}gxI}u`^i|!^#f@)DP z4QMLng~${Hd>Mu0f51A344eagN6H6+BqC$tNL6dPDeJ|M0YpX^lwm4`qUeWYSar;a z(irJS9r|Oo0tE&pXlNcfmX^W$Eb@AlmT^CIXH4WQq>6rFk|kVKL`4eAmMoQ!?u~r}GA`-CTP7;jjfW0+0GNYIFTF90B`7FAJdY3G_45V3f22B#@Xw>&PSb~S&za^J z1R@y~L{3&VmB*#St@M8)Fmtc3etiD%r>|?nj_Na5W~am#h;LQ78gAw$1-|;gW{t%1 z5vT;@wR2bW*l<)f3b`_quE&RSP#gXWh4E}1}bOZu_+gUIo@y!m{B*Xkd`}OXQYnk0X~|!GoPLarEr0th=il~ll?cmvR{wqRmCf*{w=|4<^xfGKe zEn55!s4d||y8gZqUmyRzfwRTQ%DYNclw!@zgqaB~l}h4;)G*+71YJ)i(hfj7YY}cIwc*@(2^zQxRm!H-QlGD|oe>|QRezGTSXx;QcD`|U#KxPlU+wBqN znWXFe0Y2rT95&{_jJBPL7O;`25|vVo4E@Ta0FJhTss&4eBir&}aWkN8GSodWv(o1f zq6jSr@@jxMwVvrQax3#|gaijVQ8!VD@mjw7jl+5Qq zI57t!m~;>pWVj_CX|)HM-tZ`7s3=Y241z#W`;)vBWXgx5V!9f)OuQkNJ4*Ab?ATRp z$7dksMb2+26gTj{la2!`qC>QcqVlQss1;GqmtUS&A>G?>gQAcr%b6e;_if zU^}M&?4{wb@TuBnyx6rj|lW8P5Ob`9+OUHV1wUB8Eoe5SHqsUp}rLcd` zw^IQEgQ^NM#)u(`M0r=b2?kMW8a+`t-%iF1hKUJ#$*evw1yFz*M*%{L2XU&h6E8hU zIWjJr9l7{L3Fgq?ZKqW~Jb(Lne@&`Ct#Y9JmCn-y2*^2jS)%g%>?^P4j|@zqXWtBV zoI$%lSuR*tNPyy9kXk-yAu@fto|HZZqc$J4p%+#5F^n?9mUK(sER0w}A z?n;dwq=xj&okJ1ZkHi>8X|M)MeNPS&NJK4uMJBJ*D+vP9Y4@wUbI=qL#}KmSU01aUOmHIxHCmQbWjdv2rYXa7 zpa9hg#TGve+8Nb%(P!Lwf3F04T!ooT9MvSIBWP7fIbyjQ0ArsSj%#Fb8H8p`(K5@x zfQH}nNLMUoS~ArbNA;=x0Ist}f|UJ%N`8OhLJM{K>G9(a_Zr4=nh2Z;`jBaj`M=FZ z48bk~vjY>SC?ua;?%F@B+duq)_W#W{yIX;Ol-#43mnkeB+Dox0f0z|DNe8)wh3DTd zd)Qp*MR8ppwHp>S6bmhU^ZT!0pKy{k(YYGIO@?ZZxQ{|TC!nB9P`~}! z>f*KK|BctSS^sqmMrm-vg&>+W&(vNhJJ@EUo1U96RbsW_6b>Xt(x{W#(N?pOT+7?2FhpVq~-r%R66D?hQ3R!Z@r)cSVfDSf*x_Sdx7 zMyj+yspA-xFoWg`552;YTV57ou+lFUVrbQiWi$YHO)H!xf2q%%B_SJeUQ*n<^sI-; zVwzVJiH%*k7oogPMh9VX-ziL5M_W`1;`Syn-n-EEXEVW_>)Yw}rfiZ+_QFf+_X*^3 z=t-%C&yrjh`31d5Z*Dccs3(t3^kLHlgYkMKZLxcZ*ODEYC#pYNzn&4~L+P;c0a){* zY_K!=*(6fve~jx6?^AqAw1^DjKYD|v0D-RW{J_ju4sJAr$#O_pN$Q2i{$(6gjZ5#f z{F1n$YK)u;MqO-k_5O$3ce&mh-aHj|-5D{SUhkz9|7@aVh9nyoI`U+QV?2wTQA@@~ z3k)dwBPo@61aAWzMRsX|)*e*+a)QZ_3n16_I@ibpw1u&5Ck zqg|54APa;F9N*}{RVA|fz@)Z6&J!wyyQ@&@nx2A!IE?qs>r zHl1c05<)AQNL5~w#)YM~Teuze@uZ@G7~UDFxp!|A%`RV;j0Izw@?0*)bZ-SaO4jAH zU#hP^G`)Oz|FWU{ZAa$jAj{^!w161!w{4W_hEYNYZqWRb=o)UCgd(%krlXZf+|Y0a zlY&u_9G4$i0v3Or931IJ)$i!<0hKAHR53J!W-A`gjSXvLUh4q0Q4|kKX{hvUL^{N9 z(<=$@=-e)(08+`^p+~0Y$PTw)9p5Nc0Y%F*g$*f=t=JCc=)E0CV_{;~vh%j3I+=mWZ%X_d z49`MZ+9Mxs8w0#n)r`kO=SX8dqi5hWSi44E*bQB zcsnBfH(r1C3>z}r=(i46dxfh5;!t8qlC(4LP))O8T5orTS4nGtcxsfv&ZT%?0ga@} zEC&^D-?n~vzop0nzGsVWS;1YV^)?4xS{aqW8WBB|&TfJ!lx#U@bzt_Cr-*cC$#^nR zttxtfeEzPfT`i!P8L-n9^681sZSLAupoMacYsh~C{6}K)D`FemiLiWq`Mg!&uG3eN z>2a@nr~kD){Ou^wlXPltKl}f#ib6wYp(4vp^sX?=xJ{_nU zQRwAqjy~VIo@R00D%zyrY+Hw)(@*|aoM)kp4}WR z7p4_1_NDbHaeafZJzDVI;Q@E-2lRAPd${InKYZPYGBRB|dXWmk1E!l-z8h*#KuXijX;h}g z$bLpV44dr_Joa^q2q48Z{rO_{t^L*#c+Q=k1GOZkPUoFSnSOuL zqWL6syVxP-z~!shJpAZg;{0cKH1(JYY&!Zg(BFUtajOvXM}Jn%!D2U4g25jJ)OzG<-{ z4jMR9h^T?82p3g|d(tIT!Sa8?a=mh`1@a>t7I_XmyW-p-wYsCJO|ok;@COn}l5(e1 zk=-zHf8Io57*Fuh7V#t#uik%dMu87Kg7R~Ea3m8ur-NzDK-{szQqqeA2t^M znme#bO1Nzc2Pb+OGuG0R*M}` zTI$PFgz8#r)WwU|$wXrd(1z^%QCfgte2#`3G^-AwmqQfyViSCpb~$N)@ZV@WCM^hW z7V`pcM(BLvmp71h$R2(912C)K18H3h;Y#m6?#d;DPn~j>k90lNUC!>AuIb@-5nMM`HQe&zx=q7LN&&j6WJz#MgYkW(8}I%O9WIv zyK4)leCKF-V1;gDC$7Wck+Aq^DS99RCF|did7V+UlHnzh<8dH=BkC3i^%RvWegBSD z4EZ-aEedXm*_9_myC&K_cnG(>iaC?3z)X)VH>J}-G16#M$RvNH3}hcJ&Gr(1u5-Dm zJ8+Y&pmVDc9F@vV1JbD}nbbs}87np<cXtm&W=Wi0GMB6y??#*dqeby~Zp@n4SVD#5*h_ANG$cGKJhOftwwTMzb=p@0AO zzdXI(b1WVM#6KZ22yX|LoPn#_!Usjs7SRlKXCvpl2PplzQI}j`0vvx#B3<;W@sm}9 z8YQWb@+$94HOM>5k3$wNAJvTS4zJ&P3j8rMzg|qO3ql^vX!5=BziBoLOcF6WMFLiy z{KQPiqTN7J9O)I~ukw`T1SFYG;D|=a1t)P{gc_B16p+qR&mw!PrtE913Zo&Oqv66$ zeM?Q0tgnHT30zTLA~cUpAhEjmrV! z!im7J)uMdhO{wKtS8Hvzc41IPH?REx$m(4!?v5q{+i8BId>r`#FC-QK({Bg^3mpr= zUdjYZv7SDf`-SqaFYAyA8Q;<=F-I_-jiX?iwWSBwj5(a~50ig_Ds)wbWa*ZJB`in} zx{-8PVOfbZHSSlY3d5<5dll9yXT}OafKo{Ame~Vvd<8{lVw!8NBiKmF?phzvM;3!9 z$iuu@$oki-an}@oU&Dr#qS^KCZ#e=SlEqydjD8Xsk+P5w!;4%Nl!JuB0`0_wCz~$9 zD+16W`SnN3hrEBfb0xFg5x%6`gKvfzqotOkQjCRdOb!b2=^Cqx zIM+SBar1wzakDk<&R4{|B5A`DW0Zw$9y@L$lJU}WH>ii=y8B4SrI80$l(bFBTwWnV z;ZCVt@4BEj{wIAuY-|U-qP4+Av~l*H0f&U9gG7F&FHO9#WNjsy3I#XX{*fB2v-s&|?L8SZM zE$Ss1vryPn_ClN~V?Zzqy_0runf4>}9wev^C{d6oV-k1gOx@WSf(X~P(;Dl*RXVQt z%x`~*BCCMk)X|se!C~z~fUi7GcM`8U=3wfk>nG*OP*n^8vJ0Y)+m6PmI_#G8-TRl1 z-+un|?(@fQU*0|buuVO7>%e4Kvn41O2QE>RN-%n}3I@UIGh;NgR2XBCWIZtV7_Xhd zYzN};DMc^Oypdq19lQL#)Zah-unlX4<7$6x@3tfl#M{#bL(3^Uh;5{(2KT7w0macC z7G9AZ7(nok))P|+h$D_T69Og-U;SpWU!Q*7grpcma(|$y*Gch+yshFx{vUh^j2puE zqEFFT?pi%-#!bv%gPZA0@`1?2?E361fTPpt@7*hhp&I@ z#33luZN8klG%gTgY(AZBcGz?ud>vkMI%N#_b!bPER>36+`NT7douM6KVGsNo$k&Tq z(VX$_`bMpuKCIa&g{KG<#u*GUMNK5-pj`S{(U$DJo&$j5iTf@4@$q$=)f4W*t!dp)5C_=#dbX4j z@yJy?g3VEU`&!eJa9`sDmh(1DMC(HwhuLDd)JXt<1pew`$|&F-Kf4IfkuQHlg7arq zV4V-~e1!6c-soKjKK}HyjXq-bS_{h;r4z1XI9Br^6fu}hxcq`J+qE8k4=A_35@t;d z7tJi@0^wn+Q<6`FT9j&1UsK$C)YilC4aF!6tM^juy1ohseWPk!T!-qwl0lE|bN zJqh0>0fXAB!eG7UOvEx0(x9&AqTa}@qY12GKN)#r57FeyiC1 z4Awa22TMIktuN5EB8|o}LG2o?QE%rMVxMZbybZFF`xyi8QqI+GV$XkJe!!+%Y$;>z zz!N)|j5akLS{Q-(#*U6=;{ep))nhY5{OAo!?=JWcEm2GmTGa-4Jc-OPhM{fzh|9;d z-7DJ<1V6k49$;XE+;P97eSP=%>BH;G^9Da_^z>0~4<{ab^Dwaw5lS+gmH^9X>$)I0 zLo%|Drxn*1lisgOd^CUV@$%g;?|yiE z|Fq5SgJ;}HaaQ<)KpcV}o0150Fq4^e;S-~OXz3%vod}j+OI9rvtPq@DVVbr_IaI;% zn322L$`Ss(0Ih$v;15iuac7MG0yjADzyy*HWdbs>I7L=>peuN}tYI(*>)vSV-oSM) zo<`%Ifl7WKKUyBR4g^8N*>;(HZ*D_f zFsz9S+L{Y~dw6dt_2XpvY?zw=(T`y@*Z%H@z|clgl+J%IK7{%QK7{&Ddq+_TNNG%^`2NKUw zLgy*d$+44T5l`l}57OgD*Na2eK^D;;7PZ;yLqC7}`1Seo##w{ZnN`z}{B_e@1Dh*v z_Qf~OBS(K!e{pcj&M#DP?5K?}T4hoXGj}Gb-eIg`1DfuvXFG~SS=Sy!jbb!P(@zC1 zNHo|Ciij>a_v&%k*L(Lz5(D6EGCpLzz;*&$X?hAdEe7~4y)r(iP)g~ixpNA?lbAXH zo-kzh&t2cylC{*{t>?ZzcYS>c%g;mjhOUP>&>w$WnCLr1g{;p800`&XtWUA|Z4hfxhUaLA<>{%1*5}m@kTaH#3y=%nNCPwXU69e$N}V4oOVeJoF|$dy>{t# zx99HloUc%<`1fG_zdKl8I(Vn)TM&6%;T6d=BT?)5tV=P@(MVprK?xjYJ~KV@d^_X* zwZH!Ov;_+ID>5IU(h2xsf&yp?64p>kBoQ*<#IvHQ&u4$&1ypd90s}}B$oO`3o&SFz z`+h>}dW+0BY>f56vxdkdPv!~5v>CHkNf4wVYb?q+StV5wqD%_MWXZ2&@2MuuE_{(h=^iIn0RA?BY|ioa^X7_-QFsb?8Iz1T>)ZRB%_jAktdV2AS;hd@P`bPK^7Q!gFV9cEZX&tu7}k+AOyeVOM$!@l&Aqb+ZbE<2YwB%q zVZna~=I7~~xG607#ZOMF%irzpIAt?{ay}~GFJ1}S#I8ssXZrF5*1V5`Jbirn@pVJk z$srj5wX@_T2@fPvkZUu%M~WP4otV4!YY{>vU}!2ts)n;kD30C)UqSa`6ud;XD(j(~ zMcz!wUq5K6Ly~s^y9-m48&H2Bb*49~#wx7k8)dH^`ZCRRHtdj@`oL`5vkB)^LUJV5 zS&616F&b}pxK)0yseXC>^8E5?0~&H-+f>jgbO#~wndMJH7b&Y;hdCHw0fgzof(Le3-G&+ zz>{<>7`cceab#Vf^UOk5h>pmY#`qP3Bs(MF)6buuULU`HdwqKM{^{eF=k;QSDN6l~ zCsBDMT6qIl*D_i1XcjeUPSM{|=@wuotxC(Pz>bS@*CaNmeoSPmGH8^%HJUOmHKJ@* zBdXnt(~)ssCB$iBn?Zl!nxNoD$a1$AP58G&F8IIKJ5{-RO_?=e(VBVZ&y#uitvB(* z<4>xrk ztxSZX%h1zCyA?D{baN%)`uRWu-3T0R8p%?cU91Xf8O2X9w`q-xX+i@9+@wy*WW z#i${)2TQvmv3h^Zg18VXB;C#KZ_@t{(HK4)n3GDg!p{}joha9dq|iHwnggSR z@I2Tem;KtW`t>y3D+L4|+5?qRD4%ulhOLWC;etubuBY+D0Pa$81YW;zm@a4geP7Ji z*T;1q2kR2^2xwVSn?<-}+G@a28simJYeE~9vy8rcefRa-_ZtBoj#mu4{(*EZOpby7LGtv`jz*pv?MgAD$*O1iKS{X>eYkI;Y0>@Vr^gR# zI$2DcPU(NZKolZe9>gu$`5QbYN=~cA=p2|{fpL~rt;C6jj)fr}gUb%?5w%WGdg94o zi&+0~&kTF;drl^l`0L9%h^MS`FV@)|GBe{^f+ep7TH==N-RaY+gGbs-zzF0d=`zE5#29kc0aoP5jyArOCFd5|zq&c+2#@kPdXUadB z2myZ)cgjlVGHIQ+iW!r`-=8GTp__=qAo3Yuy!~JiOtFlNFsHTj9J2AI);==10w55x zrorPvP7#62ig0gxE%fbm12|&ZG3Ev$?d-^8VSeOY+x_(PxB=CXojh;Es+eZB0Sh8?=Cqc% zN_HyNfMt^}m+rm=o$KX#>w$w6Docq0g<#=Jj9LR@_ub-L` z4(NRZeuIStbfOZ{w|LZ@#`^i`odiKXJg)VI*|(v@gG2+D_+}sua1g^{BGV#&MyUhO zLB9Z19u{Lk8C>G+hM(X-HSCRs0UvOY9u=re;8CCq+_?*1rL!^F4Rk%|JTS>sBy%_V zai_MSYDtm#6qu@ghW!S@SO!T$CtgQ(bEHugj9D2O4}|f_-|Fdyu)ANFS#6*IGFnvl zOvC{We)lXLWVit-(TlvDMmrgQS;7G_A_F94WbM+i!E~jNJFo9#y3G$!hRD4*gqnbK z5Y==Dh}4lXjhKlWlf6Z6=a~+cyL6MnLZmo!Y`yp(Q7;Cu`^uQJK_H15)n4or`UL5p z4O~b|LN~j!S7{1q=x^s->>Pne0IbF;Alm88VA%bPOQT+lo(~gG#X??x5le!INxTXjsN5topHtNr7{ZlwgNKWhQ8rSdRim}LWT%@jV zPp8!KO&YRgEgCv~?`u)fVhhPEuG?aFaH19|%wzbCW_X9t(U(nQFyjagYS^!wWS!=n zBCrzS%Jj|`MLMQg<*FoqMffD)7#c-`87SwV>TpF!eIK}&{=eSl(DR{>4oO)+n70#P z#Dxj=5LH1Sz|*Y;e;L!N;9LU(KzeZ2V#yj255;-+{)nHx{rvsAX({sQj$sQkioDS9 zMk99;ulB$}7BoOKDkDiW9<&YuA2VI9R5TF$2!FBeV03E@$%e0g?9|{BuBN1s0DlUa zppm;5I3SnXW(C;-6YR;TOAiLmEabv$QObMF(N%&BgM``AEr(?9GTFwJLJPt4I3>)u z<4m0!X_v9EF(;hKRjIevIzIqOaO3UC%i`RMIT!s_n{ipiTeW*zEZXhd$YPp18X7BI z+Uy4r4)*q+7QOv{z1-f^{QA!GJ00iOY_FYKOo_4%QzvU>W-cT}65Z#VG=sO4q_*e% zVncpgQB`^_uSsOkk=PVvhU*Ygis;C&!y+k5GYS=$Fq-k=U~tJ*NR1*}vp#}|qbctNErRvlGo|&jf5F%53 zGp%1Q%Gs=qE9D@V*EKE883n??I4!*2YN_4m{E=cE7*o?_mC?yzuU*^NYjdlfRk_WL zFt!xwFb0SUAzHK(#_bbJUAcffp4y{ego^*&Nua3RejMMw^lkYT5nu7>fF$j z_977i+#66EO7a>^1}sQCZ7IsyKyVZ5zp&@KKtp~(OKu03r*#4#e{zr%!jNslo7~nq z*4yx$Dm7&h$L4xP%Xr17N$16A1jYb`vN;^s`X6L{k>a6bBSBCLv|p9C2CcIM0Gw?= zcWVQ}nCr`ouyp~!FNE*9dWM(r;aq(WcN312*$fPcqx(#cJj3@5&9XBYML;q(GDQuR z`C*_U1^-|^-IT?de+u5Ig4L=Tzy%RDCaY5bD@$~NBoj~{f1q+f14n~|dJ6HKUbGYW zUNMh!(Cf%VB1AJkNWKN_DTP+-X(HL5I+LdUfkbEEV3UMLdZ-3_)E*fX!&%wxxbSl0 z(HbmET6{}PpUR`}h)?%ml(aj{XTvBml|f1T?XY6ea!OnJe?$CeE4K=Zw%>R37pICPeQC+Sf@{;DJTVQdOV4bf;Q3&~WBk+Qn)goT5h z+eu@qM1EkPRLx0Xuo$8!L5c}_ym2KCqkxtyPVy!>e_bO(j4c}>h;8G{yF1zSnN&g1 zf_ROQ4h@*%lZ^hiug4kpFMUH5O@K;9^U+O0ttM_WI#qW(NY5WPkOqW$7^n9~7L^R{peGK-&zt2=^~iLGIL#SzQu%#8G;u@x!j zT(DdAGgtgrH<5(}PLSO;dgq3Xx&@nAU{`LJ^mqa^e{1sD+BKNM=?z518#EI@@ZKg( zKCT&dwZNwmrD+abdMj|_0Azx!GTj2zV5?QSZ!!xVD$Uw4$dqJ2JUiWH`j2w;ZB3IgQDR*bTg)*o0HJ zV8z$Uf0vkS<;Is)4F}KYmb|f)j^gFgfitpUC;rAOTi_yj%tAreK(wgD-uZC{-aJw4 zQ~Fut31@*5HAnDgl+a8fxT7{IqDQA|=y~Oh1cJ?wNk=3a4}{Jw+|qEmVSWQfxQV2& zSnFc~<2;T9f;Jr&Z&)Xe#iS4^xyv`5n{EOhe_RxmwZrWz$D0&Ppfa1oL|$POt{LH! z-ZB?d=zd4BeMUNYogy&xL9p)J_jxV`+5FiqHGQ#St(ojOYHdAU6wfLZk&$%7a5c%o zyJ+8|Tz|D%O>Ns#FxgR_B^uUf;L+05a=e!)A9?#~tkQ*@W`6G%tQ)IwGlq>&|m>BHUFoEy3T- z&+~6K*!`i;#et(@peGpfhk$fmp@gpPmy8OHNduz>ZjMZx033W4(pOERGw}OiKFhNV zPT10sn#s&~Y{q3)TQ9-zP|ZddcuUh(e-moGDzuc%Tx2DstR$?V*mNUV45h@V{mmQ; zFe1H~cAldJ9cPSN^Vx;lay}F`c{ob%P`RCsqCu7Q^At^Nv_vem58U6jQGn4wOY#4% z0u?&xjmX6L_=Z!&4jV`}u3`;zT2UHq>IKr0qcex(=%E-74!ELG4(uE_?=@=)fAXWY zn~6ozY6jFW4l`ba(MuCrvAv$hPUD~!8 zFjqh-_luJfYaS9u+Kzw7C)LDELaa)(4jhuED-Na71(Uk=gukfr-6n721NLv(}8 zG0baWA;xu*Dl45f@+B+pGUZO*e;xrR#mm6=aX!6i-Iq% z_W2}p!qe`eUs&9q%9yX_eWD#_-SWLhDSJ_(y%M0r3*pVp_c*Fv9PBGE0H zU*d!BZ`(FA?K98GB@&b18LHMDG`U2+Y|SpzQrGOlCALj4iQOa^0V)Zz)i;LJCzvd$ zje{|SaDthcWIc1+in9rZF%p|#&?OApEXh{QFBn2?dXfCNf2J2l5k5^X%+x)a<)s*6 zx0g7>V7uB3GjDS$G?gE9m1Hx_jp{aAL9`<5_-|1$NEske;6hCJ+V5(gVo1|sQ%q+8 zmOCqzKF9P}s#o|v_Bke7MKI0eKF1_lQOTqQYUq;;1+Hz92~6M6pvp-m_8CS&G|e#4 z7?K$`O1aN4f6)|+*&9s?NrB1SXPDflmuwS<1YSk;dsNiXmLb&?6I%CKXl}8rO3p2= zt3J-Qx8@d^rJ7p?o9_$F(wh6^(&u~Gmujw3Z`*;kCT)m=mg2JT`-E_DvRpizEF3%( z<)f}n_qRD2Ve}Gk72Rsx&_UpZB`*)vBtew2>a+|SSfz>x zTd`0?cYzE{M2ZK>ZB9)MS4N>*>Oh7{EVenyVf|giuR&)o9C7UD8Pg2rA%Qv`=&Xx} zB-q!qe?%o!2ZRF-lzitpJSy~C^VpLS;IE``0P_>zTR?K92Q8AXio<90=}O+`?jf<% zS5MYw_@4(v1u32r#ky3;v&?4DnjHr-^lPyTDHn1MU~O(L6J~uD`g$l(pv5}28nO>c zQSwBS%u{jNYACF2C0tP{iEwC|cyOV!SKWFCe+cqmknC<$1_ftEdgC}T9yC-Tnb7>`<`m^|NYICFkz%9OJOo>mL8`+V zf50LnjbyP0L?L8PgH}tHzQenxs}J2m!y@~NkVlLcvk>ezUgSnlOyVSAf8k?2fl_Fc z>@mPg?2&W?%Bh}pxF}i33DMND`aJDHphZK^+ZM-oK|wWM)?%ec*GvQ+PW@IUKQ>3M zLbX>@82)Bcfn~F5l(v8k7ZDwAUpW5De-|PsfV1f+^)V(>f!>yEaFw~fT66PuH07Je1Is}u`^en>Sat-N&F%Qupe{wc$ zW-MkRRVaail}R4soiF_|`}mXj_!$X!!_7a6W*08aSa=aeU}9s>a(6cPu#%`=JMT5r4> z%z78U=ylG4VB)4!1Dn9ZB-6uXf5d}(vYloFvN2GNL*lpQgpe9jzyv|EVfZR8Yq<`b zIBrC4%Jg&*sb-SzVU{dtnCJ2=+} zx>l%72x>YeQcz0&H0obT^1R0^jlMl9ah@4IMvgOB)N|Q^lYN;(GYXZ!e@qt&3sEfQ z9{I6Dlb)E$HVvmXL1KA(5caW9+MSfnRfNLRr;CKPDp`ekGG0hvgfPL%2IK_lwW9Vm z{|(GYxJVola`7#|xQ=*NyMj=^m!&u|w{?EY@~vSeI=3(L{jc^RQv{U5uu5@z(q3(e*1|Ta*3KAwukRWfR`6=4Q?6#cM@FkrYMyn$iyAg zKfZ=>MX}Q>WHaJZCi~3~wg7tw}p1t^-ERshN|8ZED3Ef4DFqh!VQyj86t- zvcw)Oj24Qll_#9DSi$!AxUCJIe}4S&>3^gVh`Lrvlas7-ISPM0t*KU0Bujpca$JLZ z*T>RZ)!ISf{#6x=yh|6(rs7q(Nn11PFaAz3@3{W{H_J-iCM6_d+7omw8jOw7^X{78 zst|G#|0gPfq!03uf230)z8d9B1X#mBCa@p!hNrzAvR2fX?A9@o0vceXI(iG!GlPz) z&O{7lOsmy+%970Afo?aYt<#_HsJ&@frxca)7BbNoO50G(c48Rf1Nr2EnWChYz*amG zGE0HeKnC!syZfoIlQB!a(IcPC2Xj_KT@`Rei-u97 z=WQTZxy3_YNWj;gxMH&1R1m8sE{26r>Uk1!rv`CnjathF6T41_X6HA%LG8kI@lfYS z$yDObY#!Ezb&hBa2KYn-NO$N6tk`6aOfQft%xQfwHPg=LwnZzEegG>rzMIA+x6lLg z|JSvcyW2>)e|s8BQV(uoOk_$n*6CWL&x=306p}$p3jqUZRM?X=4WzcnW0}`yrd)^A z6v{Qjr9>e~TCDVPWeU{_JQSJtF>j3msECb?u!v+1FRIxJWI`QDr9n^2QQ!ZLdWV4m zt3<9xI>WGB#gdAC^n_%|nv9sqo5ZAT8pEIXLA?A&e-hx0bP}DNNoHe#YMTIFK%u{h zFvWp60r8+Lfkq%?R17DW^kfgBWPVzM_~yt5-a${^Tr<-Su099lRE;$IS~2=xxg7^e zjT6z&Xh=1OrM38C^S(pFjV8Lx0RbHKj5Q%J~|&`XSxMr5NLMR>Fhd;Kd zQQ&Bc81->Yk{3KWCWTc>)!-mT1Ut$VJ;z!e*TwF3wX@3|uU~NsGONkuHE#n(=S3A< zuY>EA=zj*t;+)XWas8ZOr?+hQeyTb>a*_B(N>@InaIhrbXO5jR=ZLGI)&>lS&=1V08G};h+qu) zvW|!bQ1Lg3k_&c)(_!f`pQQymJjih3B#S^bvI?<2RvoJiE91b&w$Sk_RF2&!`z@99u#SqSvRZTHGYYiWl_}hHE=Mt{ zkbh#HZlu*&G~U6jmUmw0r!VhcpV!P%_`KJvfsGWGC#Sa2E{dXp%EHv+8okCqkuRVx z(Z466juoY`teXYh#xn3Bht$$csZx1nr-r6Hsd!$8s)LV0uTXU3Ka}-X2 zY>sqmj&y5|bZd@e&EeS`X}39kSSJlkwimc1L7P>lucDr)K40KeWHxayuHSl*yU#-_ zwj|O-Bok=l?%jtye|@+2P}iw~JCP8R%PNTt#lxs~hzZKN zKTyLMqXwd)g-CGvjsgi$;aWzhSt;3qmm3H(r zrJaR0h|@Gdl}`|z&;@%2c!#!IFMs^*d;0kJb@Oo$qmanvGSH6m%=Qqzz;g}aAIw#6 zi-k(E2U1^WS`QTTI+31^B8nFGV^5bvhbu;4Vhf z2gTPB9Ye%57b~8(SYxUfNE>**W6wV>Ov=91OEO%rgBVou9AYE=Fk*J2W`DAmj4X}h zL>p9`hvnRHu(@=Bc*qP+2k#sB>G2C0Sbuu@@^wdmcfoJSk=RLcoNBG$pjuHL(lgXk z8RZWmi6hPq=T3_xA$xc`Jqfk^o?PSW)6g&cKo0_5Mk$B` zOUO8=5nKv-&vgR0%tnI#D1Sw78OU5bk07e9N2T)}*_DQT zSsHVjLrM_Xdt4RQc-S)~pFVwf{`BKLOG>7(Qt8Z+5>GIQNew2Vh&b*U2p0-IAcMvZ zcsrSNo*lw>W~7A7jQP!Ce0usejdUNkVwa3(lBZtZ)3lj&zc=r+CgPZ?ldU%RuUCew zwoSBp4wQaUpa`?p#DB6jlqgoN0Mv+Bo4i|@=f_V!ZsMGzVdpa3zj695{fbBasIDcm zfe}5EH8qyIJH34VX%iiumgoLt1P#m@5Cb3V@M&19W2KxNI6e#R7i%eoNejw*aP*`A8|E!l7kDP&`_V+t606sN=EVzyj zKucV;dzs(OCVzDx)^OIS%XNy~>5arfBo0|M|v$|HRuG4;ho}@(xmosDGiO` zBVOt;D@;RVJuNa?^3mU%GfL@AlBJ8NCI{90Mzj9%h_CnS-8YAa8{049M8EM_O-8BK zu8{~yu569T_W^W0Biq}ny@T32@3wcoZ|x+MS?6}AvwuNo?YX@lEQI~gbE_Obi~ezO zk)e+(>*I>|A6K@Ii-*X9hJmsE=GSE{x7RU6sr-MYv5eHY(Uov@e$BsT?j~B#V1^~_ z_!Yb zK0JMV{^jZQ@9X9FlCa~iC<|+SAyou@&1VxuN8g}kx|riRm7gu65^v=4kGAn2e{Yxn zMz8rtdgFfc!>#-AUcz1MHpAlED$54thy*I&t$$+o+OOV@bZC17huvC0!L8L5R^-F= z?&$sJ`Q@kQ*RSv1zdrrCu{)tFvRGiq9}YY$*7}B!PJ~U1cre$#<;6V<4nn0_A%jUN zrtM%G0AS*1l}1{?DhOfYNM|>G-(n*+CX1rOC{Zpr z$7e9i9?4Bc7eBT^cmThR7mgiw1J!NSBZ#A!wz2$f0zc52$L?E6-gu|K{0qHMp>Yc- zqM`(-|CQe+UQ$$625BlhCqw>j$MR>ssuFKMfB*4yyMQ%34j3Oor&*o#myM4CEPp*F z<3Gv7>F!FXuNa&n-B=q=CwM3TeDO0=lcy(RzYX5KK7If3WhEaUl$Lw09aE9Hf_7wx zMsuz~MjXni(*y^vT}-oF_%u}u#Lxdqq-eY~jl!T&zAQ zIl(cbt}0JqRC=&SZkzJXfI^d&B=sF~=gY&)sr>ljBwfX<(=m&v5ng`ySwK2)V1x;Y zi&Fu~=truklEt8`TzE6e1w5vPAuOU*Atl~o14Vlu#`Qi0}IXA|f~%=u58Jgx7%e|~+xaosMu z&!S|D^4_X2*XmZ)RsH8ySvJ+8{pMC(wDs);EZ)lEUESW`?X})s_3ia9dc@pI7JX;Y zqZa*a+4<%kx#*{h-n;12i=Mvj|NX02d@J_#^p9!rece8}`73{1e4EQpcJ(PQKk-}l z*^mmlJH|kF$13O!yQjR>b6%gm{`$10ND#YT* zUEHY|n&SS5rl)@dchdFDqqx#eDnz+o!MJ?m|ibop*lU zIu}mGV3%R;Xv2Iph*=!pTO}I<@KV$$z_L};E99d~%74#fA0=2gkaoc{?x(c}a_G@j z2&m$kS2^#DnA(#~L`WPJj<}s9c0!^G>@!i?vZT``=UIQTVBsq~I8o)7PK8*tJ!)97 z{hkAYhMQoY-9YjP327w)k#jVRT~xMqRaUK>No<;-cJzC)yz1g-8W5tSO+M>jTrr*^ zFUf49K(-0VFLH%eyj6H^hD#?kpu>ZJNj{Boif|+9UNBhC_6*1OAV7m~a$*gzLRRxj z4An+^V!D56r?8?Jv`5vxJP2cPW32NS+8db&E0St!AFpTevC7R+uR(hUb#4N%6M=O8 zYzs`XV({&9aMwGpa|^(QT17QC)=v0_QL}Mgz+g*`MF%+_qPCbqP$eVc2`O^oKE!65U2A~(7a6l*qSla@tU3QT_wH=4|IGrpHfzC|(iBC#P96I-%M z*hgjrE1fS&NS4IjiHt?A)WK7rFNkw%U&>d0JL+wfyc+qz@)r1AqJxV#g~a##dW~2m z8q+`vhea`fE;7oaBw!8Yn~b)@HlZ-Vzv#+5ZR!e#WJ0Rm%x&xwNwF6f1vf|i<=wJz zebj%${M5Ta?&t4cAK$Nl5LGOS=OQB@R1w`%X(QVz!h=CPI}IH@kirf{eT~ibxZ0nL z5+IBAwvRu>K4VYw#lAAJL3tMAtSjq79_KB3h&f$LjzFuK+?Y4-1Oe(L*=~=k{ez7z z0|`~_E`?)aPzDWKrT@jGcgxn7476YT=GuQ{@jKid4tuZS>Ep-8yQy_Wt}A~;Te{G| zHNW^xO^C8i5cSIhQ3kDuI&vGnfwzkE2DX6NN&}-TMYJwM6pd0lO#|gfCJR#7Rx;V+ zlK=H8efsdS!N5V=nkmdxqZ5{({95vvJ`Erv&!tZyV8ti|8Z#};yrIeXv8Ne1};{hVyqk0y>jn`i;3td-(?~amryBy8`pbzs#pGVr5#DX zWfhFu$Q=`5+;q%poSfceVa~`vLNt&io{gIYzB_3{82YtA$E~5UDmBc5h5O(QBzeG2 zwSIW{_~G5hr!RM!<%GXFOPM6I0Y-nMGimW4>;|Nmlt+NrE5h6Wej||-u_a^{owvXq zvCQ!-W?r0cm%UN4pI=_L-5v`qD~C(CgYTpV_~_3nyX{fFC)E_vttib(Qmi0B<(hz{pp-rCYYtA72J)Cd?_v=neF@$x zc9^5&(DzV`-#$IBc`L-fR!&59b}|Zl38yA4R=kyHS|ropOi7)g-sDLNfmzL5VLsb= zzF!L*0966;n2V@zv!Kfy2`Yb83PlSV0L44s&bgSCPMlX_4%C*S z?ju*mUVuz2Gn@{R%Z69;BlXz;o3>>iW=C~0<=l4QT;A1Z5i?MAHn$q8TonwHkD!0Wd4J zQ3JlwH#-&qm=m*TF*}f^7a6r9>A0$`aT*dhwUiM(069V&z0?Nyjt{gqxzBL{Lc^yB zROgl|w1D4>_PBo=S3ZB(WDJOJ$x)KobNp)Nrr_FXdfiwfG9mgvYB3N4hgj4mlxw3Z@T64A!#+7K$6m%w7C2&nwnVekNZTluw z+jNFV+#{Ri!HGW)$2tEx^>ELnJ?KDflMJFbj?{rb?jV0}rsUPhd1f*bT(xM86HQ&X zGF#}ru|K{%uEy|Y4!tB30o5KX^w%y)d6AfUC)4WwZePA%Lr*Q`K$AJbqAn?^w;hv( zIFUGvLBA?}E@iHSn$Zd!$qWd;5#tZ=Ng*jNb0u5ogFZx39u{pNq*QfzQXXGo@CeVi zy08MKDjt6e4>!MH-z?3u2`=i$V~90@2O#;uFFDd4{B|$sXYqMPAxPzRD$edn($MKa z3<9sR`D%~&HiR(m+Vq#F_g`OL-#xy*K7RV~>D}Y^FTZR<&?YbmVM(FR5Uw5NKtsGs z>XSj#faC%{SmI440GCT!;t`FFRhBpjl<8q2gjIhYJ<~sT=9j`%ya%J-vZmsRQR7O9 zRM2=a-2_?PQ}a+qlg^pS9R8;G$0%M?@}=7uii5O~f{7LfnXFYTGm!lEJMHxS)5n)z zx13}CAAAh`paSin-3ss@BTHTmMW;_@^(dR697KB?2(Ednq8Ev@wca!rIndc=Xg&0f z>sx8*ZrA1Z19u7Y@jJ`WB_^djNsfm9FFFHff^b`Fi(o*^0b^np=D1aoNW zr>k*_6tjgmcp9TS6{wk6#{4{{LYa0%)f06Yi$U9E`eZyn3bfa;47iZAmFNVB3`%#- zDICS+EPR?qC{OG}7Fi5uqaq;9gM4Yq9d>`ws7{130hU7+SoL=J|KHxXY`2YMTmA|^ zfL0^k5yM=VXh2Rm=$X=1W@@D@`O5aqs{Z=M-unayfTZoJn^k>R-<(Jw-UtNZan62Z z)8(bcrsvH=Cx;j3HeS%85l9d54v9s+XWK_?Hv$ENm>?ut5nh3rvHRAmx{B8JdzF72 z`zq2jMd_qpE=h)qfP^f!M*d@ROlF>rPPU^C^Ujp0mDSek5mvf$SK#n0CFYT!EedaT zG47`GIYh6}$u%?JLboS3#!(`abOFo+_~C%0_L8vWObiCIuT$@AFYZRsyng)o>E*xB z4w^zVKiMwMqNS=Y`A=)AOt43(75;x2`%<))^*b#pKy%tP3Ys=eH!oWuJZhoGqc972 z&N#KhZQra_p4uD$%!nJ~*mAlp3_SPj%uTi@7Y4lfhu6N|GhE`2`kVRsw(g(EBqX`Ya zeZP<~!@(?Km`*c286FH%QZ~-2#s~yNBQmu857b65s3_P+_8UQ<{@CT!va#(U z2}dyF)Dtxe>YqCv0{VY%_j><8FP?f&#XqQC^M`w@k35Q_ck|29SBasTzwr{DUcNlO zeV&##4#C1`|HPR+{>;1^Y*>BX=K=_@?V)q;@Oj**1Q&TppsblmDdJ+@LpOvi0^{k_lpqwG zcwg7QN1&) zv!SSVSD^*Nv=hQvNc+&!pI zVa0#Ic6^-E+?3VZDvT1<+1N`}bqyatmJ)O259%_juFaSQt80tbcC)Ts)9z?{=sP!< zb0m83%uUbyD)s7_V>-xQjnp+#g2(|Y^zHBzZ9NEXX8r*uE-u>`-RwNhyndr!UoJn0 ze_&$vr_PbSF|D&e_F`DiVdZ7%zdil(^tgY{fP-uYMF#^{Fx4ztG?losq~}06tfuRE z0Bg*-vHN(^L6g?L%rwY0HQO5Ry4xqteNr~%;>MnSe%p#}A!B$?BZn-BG{i5~vvUxN zfp10va^AoAGTB9u(>We|Mhj<{Yvqb3FVanEzV*+;`&@JuEk;lb&WPB<49zE zwktCS-v8U%!wOQwR?}guNUIe#uOND=Z7nomxzh0CT<;&=UcXM`jE%mAP*s2al#kSn z!=Q%B0Zkeem}^`=-Rtw$k6Ssd&HX@*pMnpL*_R|#-__H7c=-I=&#zlCqQGuR(;yY4 zQ}sIX7qShBEwBXW0tvD=&c7Co+7m;D6H}RD{T9*YtZPKRtP$zd*6*-l5a2qHZJN(r zy^&wvo<3~)G-vmIeyDK2eBggz1FInL=mmY2=l$*R;lriHMKU6=l1m-~B98St&6q!u zT_s*^Os8`{KdsdQ+dk>Fq+{#nO4Bf|aoq2y7&x6+J&0Yep3E#rV`^Id#H&~P`1;}N z^W$aBa=Id_lk3$<8g9I%;!?e?k>uNJ;q)V_1e(5(>#ye1!`s92^ZI`aLEm}`WQwaQ zdyBo`O(`;l73lii6`eGm_dmWqJ%8DB`-|sUKf$#RM~vkgU(V;p|M>d&^5tnw;|_bi ziK%8!vl;*!jD3v(@=+CN=+L98G^0eAB0G&c;RO@v+z#B7O<5oNK#JgJ8Sm@J^37K8)Wy2`*D{0?{3NKR6IC6-45=ZU_K z41Xu!V5-a%AaoAS0tp>lK$|(n#9P_LQ5QR zD7G@1LT@K^$*wrcNJ=n(0b#Xb#>t5SVg$+-DV>KPsdG?difRV{#3(cQT4!lykLN{_ zW0G_VE z2y$#Dhs%_0Fc7hv2qKZH1M{wpr~>A(fuWOabZW-t@*)rsSz6$73Vk?9(I(()OH>Hc zERFF!`q5w#cg{RO$(AK8Br*g2rL9GTS7BO87i2jeN=BWQabeNR@)DeIvJ&k`&5zOMxdHdz-`TX_a`SX{rAD*_; zQ%;sl#++102E;&hj6&H&>9&^BR8I~hQ68G`iUXZs{DC0tbOM2-2zC&noZ=7t9LOHT zLpH-CPaUFxu9O$I`unEkNjg{e5GRQW3T+a)q;N$v<8%O)<=jieYa#Nd<>fL|YB`x3 z`@(-t#;*9u)|oThOt?`C{aa1l!JYtmij0$$YL3NDvLxtxmdoSS_2RCIX`cy#7v;CI z#>*R+A(eR3s$vX!9d-5b>F03vulv&PZ5O#tC@19cQk*y zH54Erf)uwv|2{8{>$OsHVSNrHOHtdk3t<#tj}}XiAx+eXQKWAt-NWe+EM=!sLo|;M zhLx1`aU41h&6F+h;jroj4I?FJwmW~hmtXi+LWc5c%P{%$QV`u+OD{~boU~3vw3X)s zV|ayLv61|FImmg6+~qExF-urD^6-DF$+c57gw-{0v0&sm2oonU9kkdY$>{%q=0cK! zJ1?TOr!Z2Lp_w;VFZ2P;WcND#-4@67S{3XNjY>o=wBfTohb+OI2x2j^jA)l8Bj8Q7 zq%ou$=jDNeH?Pq@Vcw)ug0@ahk%+?{&5F#&s77z(chY!79x=}UAjUp@9I$^XSCUqy z=f*ch`!wL=Dg8Zw#z1=$0C0^XpG{J~k%mACkH*?N@C`~W;JiF;*2{pwWphzO$-r$* zwhU|@`8B~PkrR*s4QREJEh2q*e_ld196q2@ps8s2969J!@6uQ#Tq=d&eGVr<+Mp~< z@aLuRye`|zYM@3tsk)EN(06}=mWsCTmdp2ScC7KSt)5DUnQe_HDz3##plgf4f)|Tc;jHv4+7*v;E4=cHDTVs{}2=gNQR*^mV;q+w=CB^vM>3gDH z0lzJdv})(1h--fShOaaoR}_T)H0_zcnvcJlkH4Ca|BsuG=l5H#I;VflRY+=tGdNO5 zhPQyRObx|K#$^Bb%6cAR^APVyzydUm8cvU*jD z0`NUMv;T<{P9YyvrRwKklVuSA#OF=H$&s3mo+DQkxX*p>nU?2Y7DB$KwT1%N|b2!;-EGIwc9>Y2V$NYjq=W7F-;bb zql9uOM3}V$Lq0kzvCZV!43{AF#pZPFLnqjvz%FXq>(l!U${~L(A?s7awfG4&;Kk3h z*~nB!>bPOaIAsmDF$PBTpCY@qR&53q@kzBWXPr+@g%TrNg{_%HW{TLjBx4R-FQ?_^ zrE8?c%5NiywmLAyYNv*JE!%rGw-NCQ$d{|E&ysoTJF?TMrx;9 zu~S|x*pClS&li8p4YziVH1Dvxi?!IdZdS@|;Oed}(Xi;^>{pLSSI*sT?TEKSk-3#+ zlaUDcsgo})Lnt;016xnigJc@$uUJdWOsQ^!)YX z9*BR9L}g>(g#rfqsIVK%OZE9z zNeqo%VcDHD1b7rKXl8p}0cNQ)a!^&tqNlhRq-@NlBC$Q`-g|l1(F8%55Sh*lr+5Go zDcpGW4Xv~2SioSj4hB2q3VA_Ce|-G#^!4L6>F9qOx3B?_AZc&_PaWSl6<82KI}(o-4(RWEnMOd<@U`8CWidG-PMq4yVhIrm z&1jrjB`cP<@0e#<7JWB+xO`WiUN-%VQP(S|>qmKR zMhb<%ImdN*b^TxQyZzdB)d<(hU5F!2F_@Gm{tAE!odT`=6IxA3>kz z-?UKIc{vKxVA$QW-iO zs13u|D^}5>5{-VhWTp#-23G!SFlr|5EKQ?Y+&&y``MJ#bi)l1G@(bAMq!LkuBRk$Sdy& zR$lop(XABM%5qz#h&nQt-E|}HC@BERVpPtN*2Eb8Ta}E0BX;z&fu0Thj7EO|=;wS! zKa<>_Z`6Q~j~{=2eEa;{)2D460Jtmmw@1KL=vo$6{Xx*{v-h_Is#x`!o*JD}3-e6+g2R7rX)wyL zX@l=#o=sv~F)+HxAr40~2!-t!C5A*_b;M2C%6UIK^w_nd1kK{+xHEsCOl8i^k#dqK zXWJG3 z$E-7D3(rEhc;Hlpz7r^X(`PH*P*)UR=Ru~!K8$^VVGc=A4<^)|tMSkRd#(BAx(<8~ z{U!@_^+(gbx}t97$n1YTU27OH!+6|wsCEpEMTFI`{ATHwD+-d|^CSd>%r}`9H=p_w zrSns!^Rw#?j+r6ZaF0qcYQ!5ApH8#vZeg-N!D>P)vz+L-qn&^t5t=!&dXB2E2nABb z-DUk9ZP{6Xu}}k!2hxW%?~T&eY&ODc^vUrstC4|XIl8!9t@wYi_U3sm8-%Ihe);v? z$A|a7ZGmRdhO8Rf%LhTy?tw7@U;2Cz%B93k6bY4?oSl|6BF)yJ_fsC>X6oviakg@~ zAS`EUIMz0I^srvKF9D?<*8t2FJ~OY(?bh3ft&OWTEv?(K72wouw^AXv{*?Fm?5!6U zKQ+Hv{H_<Gkc)CQwDCGZ9G$k|IQwEL!gwQTDbDSN6s@AuE5R?Yms-@mkqzN|pf9eKvjW ztjIp$g`O(>K0P9F) zndYLzsGCKZ&LtUpK^F2pFN<;5RKdZ@acX?`Xfo*t0fe$|Dn-c3su1TQn;w5SKRpX^ zQAvBfooj!ws?f4tt%@z9EbWD86)&lR?0E?)qDmE?DbW0#V!XnR;|vv4G`hHvu_l^@ zn@MY6teIvR$!aGPMT5twY2PC$qUAsB|HP6lK>TY#G}YNZ{?t?6nZ}tNqK(;^{D;$#l0Sj^z~aAt-Fhc7|W)G zs{mfiKWW6X;Pu7%dAZz_pNxXL=}3?Z;r5R4QCYAEx%JA6xiohf*57wzAyC8KoEZbP z-}-NQldYR&3yWR7+C><)bWvnXP!t}-7e%-$n0=`GkWdN~r^MT0kcjDI_NVP?pV8sL z?8ASlA{7jb?y8crsS#gHt!QEYD|Mm!?T}d;M|(g%uKgSPFGgFSt*jI~bo6kB$_!(e z!)*exS9{l7xL!7&9^c+SUZ_s2%9}5vzZP0r(0|k4=qgvYKfgT+M$-q1l{W>6GDF-w z$gbs3O}4&44x2;1pJZ)`)67a$MCx8_&;ft`?s7|2O}u%`!0CZf@0ZuJ@mjgENk^5- z4dL5I#A{(0zKX9OKdqs=ma*18}tPq}Sjm@qfZ~uWLt}9M`*spD# z(rUC;FbiIu-R-Gfvx$P0Q)3FjEg~<5BRc3W%de0ckP6Zr${b7_^mf=PDL=PEY62?8=&O@=P!!P2R5SD2Q6JWf}IW83rV*AIW+ z3=Z2*Q!y{}5Eef(MSYmf1x&o#Bg=1?IeMXvE%(H)Nb&Sl(B7p@)V@IiMFT7NXwFw0 zEiRewF088{UoT(VuzqccuPy1d<@vR>`K`72rJ;Y%YU@|# z$6$czU`V~(1%+>a zW4~?i4D6nlXL9QYnBM5>`*W*z2??#x-=)0U>|J_$mvMfV)!t>@e0_fN^+A1O)6A`6 z)Ro?O+fT-CDgon}ZCwYVLSuib18J@Ub*=+-t^;*?xVo+bZvELBadp}1ZZu}(jC1~7 zFE%r~bEnVdA}LXBBsQa*9teJk(Y9-e<*Rvm3L8=*EP zn`I>v<0qh$ke~*IVCuL*;#kl*X{^Ha@Wj6(F%1AxnoY>R=Phqu>FO1?r3BKy?ft65 zpa(SPtwY^e8E0y%v|}@G88d8>!KSA?Zb{;{Ne530RGLmwBQ}UlqZVQ&7n31SX;(-7 z41Ig($H@56+nycQ={tY5c(ImeFGdEkYu>647a7Xc1ib<1X(lg>%oTrI@X9@+%v;G*>PCjL zI}&hTo>)kY0NqNic{k&BOneBShD9QN%s{9i78gh|53&`6oD#&?A+K4J{0D=kp_I#} zm-moKEFM9*BDcF*2B9*q(X71an8T0UvyvIMdbfCdyz0PO)p}%J)Iy+eF{1*yU7$gV zD`#1M;tm-ep*epWO-uoB+7oaUI-!%`Ql62l`XE~&;cBH7Ao`hI|5o+<^zioO`R|uA zi=JGID*wIV!-K}0217MQKC@nQlCeO6Q^X)s@k`byES`bw7L6yZUFwa3PUboO6f>5u~ahN+N_&P3%B7MZ-K= zC}CF!2JGaz6NHSHrh=34R)Hv)XNz)n%wm=I&FVxqXtHxE|Hxb>Oavo>QOPWn8f{Tv zzD;tY4dh`Lx=iakwUk z)uh}3pW4|ekD~0m>3xMe1#mFS@X0bx6OEvm`ODd6x*fXho)9!$kLMw zu`VZB__10Bj^YJ{JZb{!sclf`(3x(Sm})VX%;bRFDL3^t*Nl8b_h=D46W2 z`$bI4d}A08^*b|u6K@SD`KX}vEQye;4TZUpSvGs8CTyzC+yTN6Jc@}{f=+|=f4Vs# z&vbux&Yy3OcSfBzLUYddR~GkI7WbFWWrxPQ7oO#hQF<<&i_chGEI;$ft(Iu*C1~m* zy34e<%e=VD((iKkcaN!laPS(ogIE7=9lVZ=TOds7HBKoCR6HZ-baHlp7jIJP*< z-(z%miL~`Fu_ii81%7!oNaqPkRlsTvLH#~<&&K2XEpW$V%pn1094E28;nR0B=s2UN z|EUSIIb(ugE-Ti2=%&Y!ddPpWGL7a>%Ws22P+|7iaEh3#3DLl4goI&4rLBZzQ}e5_ zrZmYmQHd$*wT~7fvgX=Lf<}USA`W-~C7gW|T6RghC_YtTm(7X!G-Fi=YY^MlaopQI z&O8R+1G!ceP{P6yu;pQ$D@; zHS=q1Wa;SUC60)XK=4cYiKwBT+O440n^VVnUNn)xsos$e4VJ71#ZaF6MuhqE*OyJZ z;P++O4VQH`kS*`x_vL09!7Q_J`1+Ov1W&%~l8~_7PDOD=5lG%O@xfvc6wD}?S`>?_5t^11TSgr3U?=2>@y!_oQEG<82=IS3b%C=UDWqZC9qsEh zb|{i8p%))+jgl_nzXf;_`H$Xs&jP3VA=@;vXOU=fbxEA!u|tDo0w zCw%hvWmEsQwf8bD9yV$5xXrJJb&l85-gFsD5puL_nv=T9CCBv+O73kEziesOBT#V9 z)){HHNgTs)=h}Z)v-#%kk<0(@`W^kN>if6r&btqR)O(41&EKO`}bbz1>1IqQhsQCt%)6(N_);{sDromM~9wn7|QG-ucm1fb^ zv{;mekfS?c|6Z?vq!JsO{Y|QoS%R6JGJ!dr@!jxf4@44pii%& zjr4ET%XU|-iZU>4RTQJ;c>t@q1FGn}7@c;pDmqOBSw(dis;Ks4743_z+IH4UT}@RK z_n;ceIi;#7Zg}hyduKItLGt0aC7Y72i9FeJ-m0K~JiV;5a&hn0fT*_W0aq|b66`jt zVRGXl#?ybA=|ql0I6X%6SGoiiflrEyaXmF^rky3>NilJ5WJIDto1Ea_0ZaTOmotND zvauE&aJ2quOSq=8C2o@~8CaqGxk5Qo9!*_npx^`b0|pb@^rbIntCZeYQ|-=FL^OXh zOnj9trzxO=B7kWGr#kD*q+4euVK=oNdxZ7a!-IbUAa|p<{_xBCIL5>l*K(UIXk|pR zD88|iB_IER& z&24{j%EKzBoR649uCjc?D$B=L`@MR5PtoeK(HhbxxLH;8VDSF>A6#L6UK@QVbwj2| z?D0^OU(v_C&~kBhi_!+njBw&`WMjz&Zq`C5|KkuiJ#&ea6yz>}f_zf+V=}^m_*5cN z7BET*k~2H6XlKzYp){n3GKKP4nWLrJ1D=0&s-q@)! zqP+{AQspYvGmF~}KUx%LH1mfb_8s1FXW{Yvb2F=i4jAD03CNEXbndhxx>&F<%UqV_ z{L-X9%94~23d<###yB1?ktf|?NXp`*PMEECLR)x(ym36SQ;@tcMLkxvEZ2F|K$e?o zlQ`(CWa&)O%GQnHBpf-8Ogww43#5Oo(&}&_#yVUGwrZa%AME?JEezZ2vM=YBwk>}W z9e@6vwp+#PUxfaq!Q(m*=$2dE#b&;PC7uXABFmqCIobwlce51@{|b)GJOOK6_Np)( zIz%>rRjPxInP-Xy2;An1#kGx1I2u()j&06%kw6lUq-vJa39YH(We6U@l_7s#afKCq z<&FII`nuNj85mS*Be`OXk}3z20Ph(%q=n`NqfpYplDH!j3)ol`%Ggjn5TBT20xLee z#3+728D#G2M}a1S%BZs0F8sa}D@F2wtVN&-IJaxqD&FSQx=1P!EIH5=vy!x}$G6EU zDU#{85~h_zv-xQzzBUs8rI>$O{uh??=g4vRoeF|i$%eBw!Cr{U~?;;Y7jC8WpFf0 z5ah9`$XN_g;=LsvBPHSs@3#f;Kw|2Y!DcU<{bSZFsj)W;ni;cgGWCBxM8sLMGrftU zfP<2;P(nI%1%*awjcm)9n^{ha_0@>CRPwNbEWCNWje-5GVLU7chSrp6ED>R)_-9>z z?%iyl5p)j)H>OS#U5W1LmtndeU6Gg~s-9v5l+yR9x4p_NnLeynVj)KLZ%H77zz$4{ zz~a&N$5**EAWPs(gVTR3k_`L9&PHgWkS+6IRmIt~x4+G!34ORIJY7~?WC7qCALObf z@s9j~?1}E9=C9eUONLrxNWRc?$M7;WJDb?U5CV(E27XLGInzFF1TiyrqEi){fhX}l zy+#Z)-l04er+Ss-TxynpBb12`%;xHV@kpZHw7Efe6}=2#Fdwuz8!CN&kTi)m5;jSu zQZa#W>8|SrN6a!MF#$*$9k8J{T+QV&p>vi?$bcY*T2E>cBsLZfaf~4=mkm@?G2!KC zNTKQW6UQ%63~Dc2Qx=?&(E=l_!DN!yS}Iyhcf*ln*ok{p@@{^KSK8xG5AU~>L5x^O z{Wo8f9`LfyqfmOyTNt8$^6d*EC&g#)mN*w>#!YV8_Hh;hss0d*5gP~~?(w}~SC@wo zCMh)Ya=;d|B9$g};mr0_=VJg+moaI#(&n_GZfj?^YQ7wJ0>lLMU^v&P=j8<`;^@5o z!@2n`X%OYofeA|Msx9MnujM=<_^HEphqWIMp2O z=5|!nQv(=H%Mlhm^Z_=>g|XOIK<5k%e^Vvt_3Y(*9*G-em2m;^7owtj+CC1?Suf7lF7~Y#=PTFt zaaSngj~5J;sgGF)@Hl`fHUg;V`(zpi9fx}vI5oN=G!s_hAWCYTiGES0T_CkKL=g?} zzqXur_e;JwlbG}FeZYm`<y(bUa<)*D6n?)RtX*I(Z*=0|^(>5r7@u~}9;MnZjv&G#Ha3^wG=%nCK>f<(-# zF{Y^ImIpyKS>u5o0#)B?t8h+eQpTfw{m6cti0Pmh3j3iUa`t_qyWzo9bTd(D;vE$m zCArcq$duXVpb+f~c^$s%!UxSz`T~?pPZqt=noi4qXk5;QiL()LT5$68KF+ z8E;VnF(6v${&v(LPmE0j;+K;2mIL=-s4KIsiOkffFDA($&m9?8*ARVnG$_ReorHav zYoQ!Vli9GyYqMsXuNXYh0JBlUkdc(5DuCTScZXLU9RvI6xY5OJ^* z44bHb!Mm*6ve8`#i|XE=gh-iMh}J83RBfP4Viq-wolP=bk-Q|o%5!zO_~fUa|MSDA zPn-BgN~uQf|(o}hwRjkA1!MUO?5{&zN$h`7UZdWX}D>YmssK&zOj(cULIYK zt#LFKg!v4zip4M?D(Z&UP-Ucu?*zke(P;{QLRw0qq|gaaLEN;;W2n}{33|cZGkT4z zP|*ye(kAtulR}0qO)QVEtI19^5WBGfmDpcqE`H{Ptqu79eUp|j30w0DO6%V5DP>?mjV>tGVFC{ zQ{-FTN{F?sgg+S?Wez6tNijLwC3ADkPC8&*pUt6dH(Dzq7vEAr)k9*J{MVbd9zBaU23Sy)oBV`0p;z#uW9XCprv1XhE@ z_Nm+jpVio*i5v!~1*fjfm^(u+3q0SHh)Z(b6rO(2#%R9Z?l9lskMm#c?)&1XWwO&Ke3s z>l4<3R7;*KBST`pOhdxDYGO9cKxO@NibGlu4V6ZOJI#L?xblJm7Gs=GpBGvb*w%Bh z7Vx1TbEo&gip8brqoK^8t^0O4J-xhtc=_=7`9iu()>San#Pbh=#hBP#^#2HtAn0~es7RMrwQ)qXSmnyBkwAO#4TFF`pjUF_0KgV60PGVOe zECe6hiMJ4G`0SY?M+QsFqDUF0cN}(>CAgI>GCX zk^6jhhrt+MMs@5=GJm$a?jOURGv5gp$O?cl{xlf`cf=zDfr-`~1DA)eZ=)i6j(UxL zpH1VHjt#~U>Cs$1JqAwbve8gQ18)q;#LP%ofMNwA3z%T?&(>5IO}T9irmfwQ}9cdcqZbKQ$(@Q6k#|xgBLn zr{@K%QZ{#sB4WrKB%vrjP4cSfQ{BQr-dQw~W)c=vbC(RV(%hA&FAP8i*`JECcGW{M75`6cK}2FhO! zZVLX;393+wzQz;RAKB8u$D6*}O?k`4(7AFC8Ny?K^s98|xG$bvhb5DfAwG#>$T92C zVj?QZ)>Ye07d$eT({Bz|>vnToZ#UDlu}RRm7F%=RSs6D=}5 zy4@OR|A9V@Zw~^icQmVkg^9nT-Ih)E$dD?377feh5gFYH0~MGMjI`9CS}fAzP6j23 zX}Nq!u?vOXc^cPmdp-9yay^y1Paurj&LXlb(vo zG$w}-t16Ni=f3P$Xh$ctD6U*AqFpuScCr})T3@gSp|ixUg%*ci7F$WksS$sb$#a!| z|E4;G6!9r@Y8Ry)#1X=PEX= zq=i^LgY;ieZSlNKa58+2ybD8u;aLR<<0@wO=Z#E@;@-ePKgs6Tp))osW4ebHOSToF zs6FEyDHvp;(H(~9!^B{je49Ms5t0#quRYE6E@`?|n6qg)QJ&Q>cqp$u_0T-7P#F1Ofu?AGQD4sp zZ?CfF#ogkoST0|FQ7<1}|A1cb=e4It;In%6{Sd67tB;gx6xPA`m%t-HnMrEZ^SttX_C$Uh5qlBj_YzI(O|MEh5d;I+6^=(r|^}f>U>x5`cR%uma z=%@RNxVwyJfyx#QO<0CgY4}@(_<2joI%V2`qbmwb?zuxSZxjB888u^n{tZT;Ak6MH zr#dv{&oJF>2Z5FoDwD*3e4@M9K-zu-B!tIu%f+p|zJ2&KJ^ts7P@WAfh=oF6ieY;y zUo`VFKVx>h9J-lB$hHeWd_0hxDm3f^@p5$@kfC?dP0kAPC z=32Wynnny$D^Az~ka-$^CbCUGU--zJW(6F2UfMBJSwW%)kQw8;(aXWfg`KRHJaY|l za2wjr5(b$>DyA+NXkrIOe0G&?9F-S4kch${*2D)>3rs|wWs`;@Op9aXNC-9M_@bd2 zY5AU+b>S$Lw!4^lNxrK{ZBN$q<|N5jwLp~vZR~yQnkyO~6w8!<_GR@Vjoz?*iSj&A z3fWq$hL`7}V3sK8n2m~EX|O;qt$L^0FkOJYlLUV=s6djyv;-eTxt4(&kegtQK*|#8 zHwvb2!b5?gddj6yJdZ=uMEE46Lj_aL;ZSrRbn>vJUD4SCmMU)zTX{i%^mpP%-Q$*Z ze|Vu+zLMWBj5!>CMk9$9@`_RskWa&OG#ZUujBI){(a+I~V_mqRDi9TxzlpaYE0pNZ zJq_#R(To3SY77!u9%#gHdRu4{nze*BWt^Ab7A0f8=^b!5(UR6kUqwLtdC^o?y7*4u zA6+k;yiCJ&Cs0fgJ`O&BS1~wm51%$r!E_&FCzGU`K0O3~l&!koMfIdnZN_4fF(_N($#yrhaP z8m%_k7?6b&Ma*^kU?X2h?(7FfO`u>|rq+5If~ZD`;+iPr)D#-KKXC?wlAtTtXAdtq4&lw=!Y_5)u55gLd{57mxe(<-_CK^V8=| zu0U!mtg#3EI5E!KFf2;c+b=>ma@2h=RzLuPUW8ssiXPO6Q5BPD+9L2`WwemLiIQ!S zL=OG1W|`$80W)0Uc->$2npN$}zvI%Sc3TF2d-(W&yh+Vc7U*Cj=}N57At`)wAZ$0^ zbK{}!d-Q=8dfrUKQD13gxk1Gjc6k+-#bw0ci#50F}U#bEH1qJ(3fFMwpJ1l_rEX z7O|El*`W23Z@{T=m-eB-vs8OU|D`A%J%JcpO=OcX$z~mvmdv7?-McB8ID%c8A+&ErI}C_`p9Lm$e6N!&PZKGA9NXFEXB{FK~?Rrtz<;Kz6=A=B!#Dy zi)3B?^!pV%Hf*<+?-bU%pC7(_d3^i(yNBt=g*SOS6}lHAT8uz4*c&6Vf73&II#=Ug zrab`=pFcUWu;7N;I}IFz%oU)O44jyHzCZ~<5@$q9A|h5G9Z?uVnF@nLi@;oeKf2d< zqL%J77@h_=cu`SyiPNi?moN|mP>tvrxThj{9xm=pG@XRO4UDBvaO9z4=cb5*z}_>P%^i!umdkOtSt+fsA4M#9nh#< z=+=tN+(kKWJX{bRDSL&4nCGA^xi<~6wigMiFA?r7Ca2-3$<8{6`bB96CeoQtDbC1E zo?)oKoF3IFC?~6b^eBQ4eaT!HDmAIKfS$w ze!LKQTB$|-vw~7brBsPcD+Fy;fXkJm&8moK4%k%D1+VL6XOe)}EF6qD637$G>SB@v zAEnrTuSzB9>s{YNA^6yFVsf=p{X>Vu3K&SN9Ez!D%k`qVGgT$W4*3gAE;|n2g1|=< zHj{9TEfU0&1Ro>0WuGmpoR3B0d9Wr!8?C-E2|!kOp?Mt=v{d5|5y}y-C9R8YU=y`# zUmSZdzWEt^=2#iC7VnW~A0>#uP1y{f2BtxOZ~*fnq%+w#9$)<(lpji%ioddSxR#e+hz_&sH~|o#3{}t6F-I94eWnM6oOo7oa8*X+6B{zK_giE z03(Y*n13>Xj4>!GsyX zaHA$aO-@|Y^T)k%cibmkR*2_M8wwuub4JN2d9#G#P>@xM!)U!MWPs=l6uO43H+_c8 ze3oM#OGJAKUx|QUO7{Su$_!PD_~6xe0*+ndVDJ}uU#!86sOG>zWHd1@Z} ztQawtX6#cL;8?x#nEqt*#xXp9jteHm?dULTHVx=LMsYFG$r!Z-!~59^wuFP=Mi{h? zqC*l78|^c0xVbFr*@Qb*%M9+0d`Y5iKGNT`P#@iOH#Alp86@$hfJ}kbXp!L5j9r|O8OXYR}RsO&d%&{2{1QIhIY8?}!#AExs$ zb_l>nM&X^PRy~6w6Cn>|egTc3#tmR5eoC4lEPMhJ4Nxrs&+R6D49W;y$~udmPu#H- zyd-xZQ$n}Def=goO*d@(mH@;Bqlx+4&{*vSLbqPfJUmqTS`8@sm{Ga&o^!EDl?&{HnDc=A9 delta 188719 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 \ No newline at end of file + \ No newline at end of file diff --git a/homeassistant/components/frontend/www_static/panels/ha-panel-dev-event.html.gz b/homeassistant/components/frontend/www_static/panels/ha-panel-dev-event.html.gz index c4be6a82b4d2ff6cdaabafcc27e23033b0713ef7..b837adbe5a3b90635519db0fee0f1d507aee7f86 100644 GIT binary patch delta 579 zcmV-J0=)gL6{8ggABzYGCQYNU2W|*|;S(p$)K;B@6|jNu{;mBa4qsPKAli|ALf$`- znk=s0t?@^Ui?ENniyzDT7A_Nza$|!smge=_prGu#udNO%#T2Jb!~scc$nC4W2Tl@$ z#RZ2rUPJJ$!3g?Sl0B)nV)r!bfl3IT5-3t25@e)0h8(6u0j&#E(mT_;;1@=JY?VVD zMc*2~HG723g z--FtyzxAVcim8&j#*Ws#5SQq4qY{684ThL7Y1($FpBic3qihAsU>pVe1^#Pnv_0Gk z@_Wc9@%(3yolX?15AQ$jtJT8>+E1Z{h|8&4Bv`>#$Nxaq7e& zki>@EzU6!1Ix*aX;1Jzw2+1{=M*nuQC-qkBo@PBz3BgkWr3*xYJXOb#*_0@MprL{K zdS^Ns{K7b{a;WY|gkW5}gKzW1INWU>ayL*Ejm&u3Ywe=l3*_MF@m@OT30OBDw)e$K z_Y#4$3XD9VKG%6KMxVgSzIX#J?2*FLUIqyU5-zoiw5~=_y9fL1RScT~&vxHhXb&CV zX$z`Iaz_CCwY$rIQHp^kMEe z%7n{pj^#s^qS*19vaPCHmZ`#NT9tAtp?kwq5E6NZNNUTfs6I zQo(+K{~FtG54VE+9`Z>%{~2Vb6D91!`;Yq?Huj$l6@i}VpsHC_O)WxJaUm32F^~t) zP>wccBuH%h9CCaHsj6N)E`exOa}U{MXFgP^VR1Z8Edy&?o$00D{cMOoKPB$U>$0wp b>@yAl+#gm#^RxC?{|x>gNL>{M4Icmi{x~LO diff --git a/homeassistant/components/frontend/www_static/panels/ha-panel-dev-info.html b/homeassistant/components/frontend/www_static/panels/ha-panel-dev-info.html index 87af5c90bbd..d04c3b1f97d 100644 --- a/homeassistant/components/frontend/www_static/panels/ha-panel-dev-info.html +++ b/homeassistant/components/frontend/www_static/panels/ha-panel-dev-info.html @@ -1,2 +1,2 @@ - \ No newline at end of file + \ No newline at end of file diff --git a/homeassistant/components/frontend/www_static/panels/ha-panel-dev-info.html.gz b/homeassistant/components/frontend/www_static/panels/ha-panel-dev-info.html.gz index 89c8a73c1ad07084598a650a3c6cbe2e56a36570..746c0fb162fbac351648251ae23d39f4b4d03fea 100644 GIT binary patch literal 1216 zcmV;x1V8&9iwFoNO`})>1889_aA9s`Y%OGEb}eacW^XQNbZu+^omSm$+cp%w-&1hB zC~Ux#mJS#;#Wt2AT{ocJ0yNuA5CoKXEODVkf;_V0xdQqSdxkw&pJa!UoIg9jFaw4q z@;m<@KYCtaZI<&2q*~5vK*@?q`T)4#zhC|&zURw%I&9`vZI^RpYf)R(8em#2cqN6C z4H%(dEp)T8gh!~IkqFCqz-`1eg=rNmxc0UY&IXOzHo7SpS@#gW%qkmjC+Z;D0A2(z zP++DTf=Y8LHjv+HJib@kzm9EmNnsm=26s*>MbWa8@7!IN$lSKLL%2gBjV_z4APo3Z zqZ<$v=(57>HPl_Q1|KNT-H*~avz-Vk)KQcbc@?oE(O}voR5%#xj>1BlN91&j%H*!F z#`xHo;brZea(PpU|f!6i;pXSypa^JtZI~J_biVglu z%>9|e)3Nw_2i=gKrsjyeMWg~(#!Ae5w0;!-XhDTla5DXhji17R^cl-7R;QavBZ%N+ z0h#k4HeR}Jp7!%y&dFEbG;(C*Huj>DL4?9vV`6$9O6v83^T$xO(s!Wl7tvaiOHX8# zqK2j&^Jk5uoHq-8bu~O)Uvm~JyXir3Ilg?LXWEEteqv3G)@xSF*kg?bVzje3ta(Zs z1b-4aeMoLFEQ}0c!AGi5!pNU&^mC^rw_g}p6-#23hZP+mL>IC&t!xc~Fgl=YFwyZS z>AGaW7Yj~(l&Fg|&Ml-Xx$Xye^26&p`X;U^IUBgU;It6SlyqYK@@I0&&h}2@%GDKh zKE%VZ(k1JD!dIQfxY6 zDV4PFpfrY*GbHv$DZ0sxY;O7Td;}?$Z<%Cy+Y}YED<(G(Vximcr6Wps=H`~{K49t1g%_L$J0+p>u zN210}rn@+;A?i1J9za961wx&bOoHlO11_k(^>CnpTmN`w^H5HBy!`+ z=YRMB8WdF;bLRAfzk7ShXTub4;uNO|X;w3N9Pp`Y`1FbYY7hD6!C8->65b`bZqy{2 eO{ZNqrE7T@>O39()usKvz<&V;?Ybol3IG5@;ap_^ literal 1227 zcmV;+1T^~}iwFpExS&`91889_aA9s`Y%OGEb}eacW^XQNbZu+^omTCN+%^>b-=|Pj z2s1FU*%U(Sof(>tGz}zeAlv>~mLOZ#wz{$D=$5BQI-g%z9aaRO@8}C|OZU9{^YU_luv!4}85$$IaZT-Fm5PBO0qZ15B$GucdIZ z1tSz}gl_&P5D(SC<^SY6KH+F%5;Jx+2*ou0L-tK9$(yc)2hWyWS z>lL{l-rWrg)@a2>e`^{H=q2OixpDMBX7%fu*q$Gas$*#Xnh4VHKRszhTo~ zVLCqk$Ohc^uXpFm(~>(ZOst9}vD!mP2Mf`K zEKO_MfFO(xC|gW)JYc%1Sn$P)Qy(SjB8_tkX(>0u0MCAWdPBd&wH0S0cUPPiVwsZ8 zv0wi}PTBK=)3|bZNu3YzaFn{De;y7@zq(qcj#6E}msm5jY{Yb4##5Z^WMeXR!hC%G zsI)(LI21dbjsH??I$bz%^YzOKq*%UVlI2}n)XbJlZXv`< z9av`|8LFRZ>2jk(O%|jzL@BI+y?b-PjHYuRAa>+~?L3i|9VJ<5th=1*YaZqM==C^H zk|SzrOoM&-{P+L&Od4u-4fx{-r5`A#M5pgn`=ZkZSr?+@9tGWQw~5cf=E=7a@lQc^spUB z&^EwwfR+)mBEn&<0}BvhFS6y4?y~s2;*HW7mEj@OoY5vqx8l>ntLXWyt>Sq;vL9!D zPit<|=Wri9;wvXD7 z?Q!QI`z?=*=@+9WPm3=|NI|xXjWiu(-=6i0gEoH^@Q_mz>;ro0{DhhkJjhtTIMjX$ z%z580B%&-x6S9&7B#PT?zK_#N9`$`T?-!4j?o435hbK=Uq04SV+W!(t*%_S87lWrm z4lDlFN_9(<$c-eBSqSx{t@9F4OTNFC9J#{{^6 \ No newline at end of file + \ No newline at end of file diff --git a/homeassistant/components/frontend/www_static/panels/ha-panel-dev-service.html.gz b/homeassistant/components/frontend/www_static/panels/ha-panel-dev-service.html.gz index e9b1d4676fc3285106ca5f6a4a0c1dd68940cc0d..bd749bcb2a56752166c73d373068253af6354c17 100644 GIT binary patch literal 17875 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 C5%H4% literal 17861 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 o954|k4q \ No newline at end of file + \ No newline at end of file diff --git a/homeassistant/components/frontend/www_static/panels/ha-panel-dev-state.html.gz b/homeassistant/components/frontend/www_static/panels/ha-panel-dev-state.html.gz index 0b8a61e04263470ff0810db9bd2ad997fdf5b281..a40999b24b2fbe94610f728f2903407ff19f63e6 100644 GIT binary patch delta 1066 zcmV+_1l9Zf7WftiABzYGCQYNU2Ve((rw2W{vxrSglCqL1Mv8XgcoL^)OeYZg#17Kx zW~h1bZS}ZM0K&B2frhm+pevvmagn0lYX5}F-x4TZ_3&w_atJ+EKu-nlYgl*l#n{Xh zUrU|X0xS^=x&r^fadk)PE!iW@TA+ePd`=)+z$JleY+`UG#Y=cY zAf-K+M?`<=j4N|UsG3NF_2L73o2gEJx0#)-ArHl%P=OP3oTA8P=+hHD>`vF4y4joc z5eRv5cC9=2oWi>VmXv@ZIzT*szVwI(o(P4w_rSoVOYb|rrrwp5OzJ`@fdYH>30xh} zMFG{1^5B(SZ%Vj$W%eLnvQQgRSXK!n)?RYFNU^CPVD* zbOj7yqYsfGla>H4QX>)ZOc7%0`0JjwfiYI(9atg6AV)E+Kbc20Fk-_-qFZyQgBrx% z-w^M2=4OIk68pNs<-|+Wt2!VfHm~}R^Pj<-`^YHy|Kp_FT35E*1vKdrR8($?BJw>?&!ZB^@VcLULziSzK*h3; z`kCf%B%&hQ!5@l$?4}a`{z;yHhJP=It4L2_l-Sj3N-yzDmHsgpYOS>1?-w}iRBe^C z;b2fg(W)zk1%;ZzNEi%)^3ZEb$5q2f koKNMsuf3odJl9jMX1XW(b+pZX_`f0i2Q7|P|BWC30CJ%X!~g&Q delta 1071 zcmV+~1kn5V7X20nABzYGv8DkTXSNSwS97D?xEMYR05EA??jcTPCD7yrBXN;vJR zk>`xQNL9spkPSvLLsbttq8P4|7X?@%7IXz(g+uI))LXJgnzcX$?fINQ4uPu!huOs7 zVv3jWvOuDHFi(sA(s@|skY+WJ2J6KK_%^ei{%$i-TSIn=L7@WY=r~)E%_yiRdf1(= zH;c13>mv}d=j>Yd^Erjr3M?sq0Y!A!czo#*5Bw9#bMJwHqnF-yd`-P8DVfyeQvzl8 z>=Oh4po;=(BIUu`yWW&=@yhH$zGR^`q_C_KNVmO|?b+Jst-ht5_x_FZYU^JPnrBmg zw*|u;-s$eWE)V(%{3LI*(o?K3{GQ~~mNhObk2GmRdcohXfBYfxc%_YhMvCx=b(>$Tv|b9<(7)A`_4M`tR~QQEbiz0(Zdg#8B2g)pEg88 zJ~Lv5c#y-#A6%0XC>tSv=+_eK=tcvqiyDn~zEvcHF!XXkpEn!=&;J?)kfTyWJ1y65HJ^x()mT5Nd8Vt;I+RZ4(ei*R`d?OO@rr4R@C}PvT z+MV6PF`Y0wlN;0X^H5G1Xd9JNm+D5|MrRl)36uCYD8s>^gi=;l3=0Z1g^@5A1m&UE pmX522kvN|o%5z_PL3yrcU(L)<^s8%|{qTQI_zw#79W$dK000Dt7Z3md diff --git a/homeassistant/components/frontend/www_static/panels/ha-panel-dev-template.html b/homeassistant/components/frontend/www_static/panels/ha-panel-dev-template.html index abc6dd7c0b6..277cf8de0ae 100644 --- a/homeassistant/components/frontend/www_static/panels/ha-panel-dev-template.html +++ b/homeassistant/components/frontend/www_static/panels/ha-panel-dev-template.html @@ -1,2 +1,2 @@ -