From 752a4d72214eaf9f85b7f8be67afb50776ecc7f9 Mon Sep 17 00:00:00 2001 From: Quentame Date: Mon, 25 Nov 2019 14:06:39 +0100 Subject: [PATCH] Move dyson imports at top-level (#29047) --- homeassistant/components/dyson/__init__.py | 5 +-- homeassistant/components/dyson/air_quality.py | 9 ++-- homeassistant/components/dyson/climate.py | 8 ++-- homeassistant/components/dyson/fan.py | 45 +++++-------------- homeassistant/components/dyson/sensor.py | 6 ++- homeassistant/components/dyson/vacuum.py | 19 ++------ 6 files changed, 28 insertions(+), 64 deletions(-) diff --git a/homeassistant/components/dyson/__init__.py b/homeassistant/components/dyson/__init__.py index 7f247be6bcc..a5dde58d30f 100644 --- a/homeassistant/components/dyson/__init__.py +++ b/homeassistant/components/dyson/__init__.py @@ -1,11 +1,12 @@ """Support for Dyson Pure Cool Link devices.""" import logging +from libpurecool.dyson import DysonAccount import voluptuous as vol -import homeassistant.helpers.config_validation as cv from homeassistant.const import CONF_DEVICES, CONF_PASSWORD, CONF_TIMEOUT, CONF_USERNAME from homeassistant.helpers import discovery +import homeassistant.helpers.config_validation as cv _LOGGER = logging.getLogger(__name__) @@ -43,8 +44,6 @@ def setup(hass, config): if DYSON_DEVICES not in hass.data: hass.data[DYSON_DEVICES] = [] - from libpurecool.dyson import DysonAccount - dyson_account = DysonAccount( config[DOMAIN].get(CONF_USERNAME), config[DOMAIN].get(CONF_PASSWORD), diff --git a/homeassistant/components/dyson/air_quality.py b/homeassistant/components/dyson/air_quality.py index 0276e47ed61..647fb236707 100644 --- a/homeassistant/components/dyson/air_quality.py +++ b/homeassistant/components/dyson/air_quality.py @@ -1,7 +1,11 @@ """Support for Dyson Pure Cool Air Quality Sensors.""" import logging -from homeassistant.components.air_quality import AirQualityEntity, DOMAIN +from libpurecool.dyson_pure_cool import DysonPureCool +from libpurecool.dyson_pure_state_v2 import DysonEnvironmentalSensorV2State + +from homeassistant.components.air_quality import DOMAIN, AirQualityEntity + from . import DYSON_DEVICES ATTRIBUTION = "Dyson purifier air quality sensor" @@ -15,7 +19,6 @@ ATTR_VOC = "volatile_organic_compounds" def setup_platform(hass, config, add_entities, discovery_info=None): """Set up the Dyson Sensors.""" - from libpurecool.dyson_pure_cool import DysonPureCool if discovery_info is None: return @@ -47,8 +50,6 @@ class DysonAirSensor(AirQualityEntity): def on_message(self, message): """Handle new messages which are received from the fan.""" - from libpurecool.dyson_pure_state_v2 import DysonEnvironmentalSensorV2State - _LOGGER.debug( "%s: Message received for %s device: %s", DOMAIN, self.name, message ) diff --git a/homeassistant/components/dyson/climate.py b/homeassistant/components/dyson/climate.py index 90c19e9de88..df97358d550 100644 --- a/homeassistant/components/dyson/climate.py +++ b/homeassistant/components/dyson/climate.py @@ -1,20 +1,20 @@ """Support for Dyson Pure Hot+Cool link fan.""" import logging -from libpurecool.const import HeatMode, HeatState, FocusMode, HeatTarget -from libpurecool.dyson_pure_state import DysonPureHotCoolState +from libpurecool.const import FocusMode, HeatMode, HeatState, HeatTarget from libpurecool.dyson_pure_hotcool_link import DysonPureHotCoolLink +from libpurecool.dyson_pure_state import DysonPureHotCoolState from homeassistant.components.climate import ClimateDevice from homeassistant.components.climate.const import ( CURRENT_HVAC_COOL, CURRENT_HVAC_HEAT, CURRENT_HVAC_IDLE, + FAN_DIFFUSE, + FAN_FOCUS, HVAC_MODE_COOL, HVAC_MODE_HEAT, SUPPORT_FAN_MODE, - FAN_FOCUS, - FAN_DIFFUSE, SUPPORT_TARGET_TEMPERATURE, ) from homeassistant.const import ATTR_TEMPERATURE, TEMP_CELSIUS diff --git a/homeassistant/components/dyson/fan.py b/homeassistant/components/dyson/fan.py index 341919935d0..1fdbed0d204 100644 --- a/homeassistant/components/dyson/fan.py +++ b/homeassistant/components/dyson/fan.py @@ -5,18 +5,24 @@ https://home-assistant.io/components/fan.dyson/ """ import logging +from libpurecool.const import FanMode, FanSpeed, NightMode, Oscillation +from libpurecool.dyson_pure_cool import DysonPureCool +from libpurecool.dyson_pure_cool_link import DysonPureCoolLink +from libpurecool.dyson_pure_state import DysonPureCoolState +from libpurecool.dyson_pure_state_v2 import DysonPureCoolV2State import voluptuous as vol -import homeassistant.helpers.config_validation as cv from homeassistant.components.fan import ( + SPEED_HIGH, + SPEED_LOW, + SPEED_MEDIUM, SUPPORT_OSCILLATE, SUPPORT_SET_SPEED, FanEntity, - SPEED_LOW, - SPEED_MEDIUM, - SPEED_HIGH, ) from homeassistant.const import ATTR_ENTITY_ID +import homeassistant.helpers.config_validation as cv + from . import DYSON_DEVICES _LOGGER = logging.getLogger(__name__) @@ -88,8 +94,6 @@ SET_DYSON_SPEED_SCHEMA = vol.Schema( def setup_platform(hass, config, add_entities, discovery_info=None): """Set up the Dyson fan components.""" - from libpurecool.dyson_pure_cool_link import DysonPureCoolLink - from libpurecool.dyson_pure_cool import DysonPureCool if discovery_info is None: return @@ -197,7 +201,6 @@ class DysonPureCoolLinkDevice(FanEntity): def on_message(self, message): """Call when new messages received from the fan.""" - from libpurecool.dyson_pure_state import DysonPureCoolState if isinstance(message, DysonPureCoolState): _LOGGER.debug("Message received for fan device %s: %s", self.name, message) @@ -215,8 +218,6 @@ class DysonPureCoolLinkDevice(FanEntity): def set_speed(self, speed: str) -> None: """Set the speed of the fan. Never called ??.""" - from libpurecool.const import FanSpeed, FanMode - _LOGGER.debug("Set fan speed to: %s", speed) if speed == FanSpeed.FAN_SPEED_AUTO.value: @@ -227,8 +228,6 @@ class DysonPureCoolLinkDevice(FanEntity): def turn_on(self, speed: str = None, **kwargs) -> None: """Turn on the fan.""" - from libpurecool.const import FanSpeed, FanMode - _LOGGER.debug("Turn on fan %s with speed %s", self.name, speed) if speed: if speed == FanSpeed.FAN_SPEED_AUTO.value: @@ -244,15 +243,11 @@ class DysonPureCoolLinkDevice(FanEntity): def turn_off(self, **kwargs) -> None: """Turn off the fan.""" - from libpurecool.const import FanMode - _LOGGER.debug("Turn off fan %s", self.name) self._device.set_configuration(fan_mode=FanMode.OFF) def oscillate(self, oscillating: bool) -> None: """Turn on/off oscillating.""" - from libpurecool.const import Oscillation - _LOGGER.debug("Turn oscillation %s for device %s", oscillating, self.name) if oscillating: @@ -275,8 +270,6 @@ class DysonPureCoolLinkDevice(FanEntity): @property def speed(self) -> str: """Return the current speed.""" - from libpurecool.const import FanSpeed - if self._device.state: if self._device.state.speed == FanSpeed.FAN_SPEED_AUTO.value: return self._device.state.speed @@ -295,8 +288,6 @@ class DysonPureCoolLinkDevice(FanEntity): def set_night_mode(self, night_mode: bool) -> None: """Turn fan in night mode.""" - from libpurecool.const import NightMode - _LOGGER.debug("Set %s night mode %s", self.name, night_mode) if night_mode: self._device.set_configuration(night_mode=NightMode.NIGHT_MODE_ON) @@ -310,8 +301,6 @@ class DysonPureCoolLinkDevice(FanEntity): def set_auto_mode(self, auto_mode: bool) -> None: """Turn fan in auto mode.""" - from libpurecool.const import FanMode - _LOGGER.debug("Set %s auto mode %s", self.name, auto_mode) if auto_mode: self._device.set_configuration(fan_mode=FanMode.AUTO) @@ -321,8 +310,6 @@ class DysonPureCoolLinkDevice(FanEntity): @property def speed_list(self) -> list: """Get the list of available speeds.""" - from libpurecool.const import FanSpeed - supported_speeds = [ FanSpeed.FAN_SPEED_AUTO.value, int(FanSpeed.FAN_SPEED_1.value), @@ -365,8 +352,6 @@ class DysonPureCoolDevice(FanEntity): def on_message(self, message): """Call when new messages received from the fan.""" - from libpurecool.dyson_pure_state_v2 import DysonPureCoolV2State - if isinstance(message, DysonPureCoolV2State): _LOGGER.debug("Message received for fan device %s: %s", self.name, message) self.schedule_update_ha_state() @@ -392,8 +377,6 @@ class DysonPureCoolDevice(FanEntity): def set_speed(self, speed: str) -> None: """Set the speed of the fan.""" - from libpurecool.const import FanSpeed - if speed == SPEED_LOW: self._device.set_fan_speed(FanSpeed.FAN_SPEED_4) elif speed == SPEED_MEDIUM: @@ -408,8 +391,6 @@ class DysonPureCoolDevice(FanEntity): def set_dyson_speed(self, speed: str = None) -> None: """Set the exact speed of the purecool fan.""" - from libpurecool.const import FanSpeed - _LOGGER.debug("Set exact speed for fan %s", self.name) fan_speed = FanSpeed("{0:04d}".format(int(speed))) @@ -487,8 +468,6 @@ class DysonPureCoolDevice(FanEntity): @property def speed(self): """Return the current speed.""" - from libpurecool.const import FanSpeed - speed_map = { FanSpeed.FAN_SPEED_1.value: SPEED_LOW, FanSpeed.FAN_SPEED_2.value: SPEED_LOW, @@ -508,8 +487,6 @@ class DysonPureCoolDevice(FanEntity): @property def dyson_speed(self): """Return the current speed.""" - from libpurecool.const import FanSpeed - if self._device.state: if self._device.state.speed == FanSpeed.FAN_SPEED_AUTO.value: return self._device.state.speed @@ -563,8 +540,6 @@ class DysonPureCoolDevice(FanEntity): @property def dyson_speed_list(self) -> list: """Get the list of available dyson speeds.""" - from libpurecool.const import FanSpeed - return [ int(FanSpeed.FAN_SPEED_1.value), int(FanSpeed.FAN_SPEED_2.value), diff --git a/homeassistant/components/dyson/sensor.py b/homeassistant/components/dyson/sensor.py index 1eb2b79c073..c51f46c7790 100644 --- a/homeassistant/components/dyson/sensor.py +++ b/homeassistant/components/dyson/sensor.py @@ -1,8 +1,12 @@ """Support for Dyson Pure Cool Link Sensors.""" import logging +from libpurecool.dyson_pure_cool import DysonPureCool +from libpurecool.dyson_pure_cool_link import DysonPureCoolLink + from homeassistant.const import STATE_OFF, TEMP_CELSIUS from homeassistant.helpers.entity import Entity + from . import DYSON_DEVICES SENSOR_UNITS = { @@ -27,8 +31,6 @@ _LOGGER = logging.getLogger(__name__) def setup_platform(hass, config, add_entities, discovery_info=None): """Set up the Dyson Sensors.""" - from libpurecool.dyson_pure_cool_link import DysonPureCoolLink - from libpurecool.dyson_pure_cool import DysonPureCool if discovery_info is None: return diff --git a/homeassistant/components/dyson/vacuum.py b/homeassistant/components/dyson/vacuum.py index cef5f0c9961..6203b65c9db 100644 --- a/homeassistant/components/dyson/vacuum.py +++ b/homeassistant/components/dyson/vacuum.py @@ -1,6 +1,9 @@ """Support for the Dyson 360 eye vacuum cleaner robot.""" import logging +from libpurecool.const import Dyson360EyeMode, PowerMode +from libpurecool.dyson_360_eye import Dyson360Eye + from homeassistant.components.vacuum import ( SUPPORT_BATTERY, SUPPORT_FAN_SPEED, @@ -38,8 +41,6 @@ SUPPORT_DYSON = ( def setup_platform(hass, config, add_entities, discovery_info=None): """Set up the Dyson 360 Eye robot vacuum platform.""" - from libpurecool.dyson_360_eye import Dyson360Eye - _LOGGER.debug("Creating new Dyson 360 Eye robot vacuum") if DYSON_360_EYE_DEVICES not in hass.data: hass.data[DYSON_360_EYE_DEVICES] = [] @@ -86,8 +87,6 @@ class Dyson360EyeDevice(VacuumDevice): @property def status(self): """Return the status of the vacuum cleaner.""" - from libpurecool.const import Dyson360EyeMode - dyson_labels = { Dyson360EyeMode.INACTIVE_CHARGING: "Stopped - Charging", Dyson360EyeMode.INACTIVE_CHARGED: "Stopped - Charged", @@ -110,8 +109,6 @@ class Dyson360EyeDevice(VacuumDevice): @property def fan_speed(self): """Return the fan speed of the vacuum cleaner.""" - from libpurecool.const import PowerMode - speed_labels = {PowerMode.MAX: "Max", PowerMode.QUIET: "Quiet"} return speed_labels[self._device.state.power_mode] @@ -128,8 +125,6 @@ class Dyson360EyeDevice(VacuumDevice): @property def is_on(self) -> bool: """Return True if entity is on.""" - from libpurecool.const import Dyson360EyeMode - return self._device.state.state in [ Dyson360EyeMode.FULL_CLEAN_INITIATED, Dyson360EyeMode.FULL_CLEAN_ABORTED, @@ -149,8 +144,6 @@ class Dyson360EyeDevice(VacuumDevice): @property def battery_icon(self): """Return the battery icon for the vacuum cleaner.""" - from libpurecool.const import Dyson360EyeMode - charging = self._device.state.state in [Dyson360EyeMode.INACTIVE_CHARGING] return icon_for_battery_level( battery_level=self.battery_level, charging=charging @@ -158,8 +151,6 @@ class Dyson360EyeDevice(VacuumDevice): def turn_on(self, **kwargs): """Turn the vacuum on.""" - from libpurecool.const import Dyson360EyeMode - _LOGGER.debug("Turn on device %s", self.name) if self._device.state.state in [Dyson360EyeMode.FULL_CLEAN_PAUSED]: self._device.resume() @@ -178,16 +169,12 @@ class Dyson360EyeDevice(VacuumDevice): def set_fan_speed(self, fan_speed, **kwargs): """Set fan speed.""" - from libpurecool.const import PowerMode - _LOGGER.debug("Set fan speed %s on device %s", fan_speed, self.name) power_modes = {"Quiet": PowerMode.QUIET, "Max": PowerMode.MAX} self._device.set_power_mode(power_modes[fan_speed]) def start_pause(self, **kwargs): """Start, pause or resume the cleaning task.""" - from libpurecool.const import Dyson360EyeMode - if self._device.state.state in [Dyson360EyeMode.FULL_CLEAN_PAUSED]: _LOGGER.debug("Resume device %s", self.name) self._device.resume()