From bd87ae79ae4a7d7dbfdf014a6eca21ca3da77f8a Mon Sep 17 00:00:00 2001 From: epenet <6771947+epenet@users.noreply.github.com> Date: Tue, 26 Apr 2022 18:57:45 +0200 Subject: [PATCH] Adjust climate constants in coolmaster config flow (#70764) --- .../components/coolmaster/config_flow.py | 33 ++++++++++++++----- homeassistant/components/coolmaster/const.py | 18 ---------- .../components/coolmaster/test_config_flow.py | 3 +- 3 files changed, 27 insertions(+), 27 deletions(-) diff --git a/homeassistant/components/coolmaster/config_flow.py b/homeassistant/components/coolmaster/config_flow.py index 6a5c517fc85..2c5592c156b 100644 --- a/homeassistant/components/coolmaster/config_flow.py +++ b/homeassistant/components/coolmaster/config_flow.py @@ -1,31 +1,46 @@ """Config flow to configure Coolmaster.""" +from __future__ import annotations + +from typing import Any from pycoolmasternet_async import CoolMasterNet import voluptuous as vol -from homeassistant import config_entries, core +from homeassistant.components.climate.const import HVACMode +from homeassistant.config_entries import ConfigFlow from homeassistant.const import CONF_HOST, CONF_PORT +from homeassistant.core import callback +from homeassistant.data_entry_flow import FlowResult -from .const import AVAILABLE_MODES, CONF_SUPPORTED_MODES, DEFAULT_PORT, DOMAIN +from .const import CONF_SUPPORTED_MODES, DEFAULT_PORT, DOMAIN + +AVAILABLE_MODES = [ + HVACMode.OFF.value, + HVACMode.HEAT.value, + HVACMode.COOL.value, + HVACMode.DRY.value, + HVACMode.HEAT_COOL.value, + HVACMode.FAN_ONLY.value, +] MODES_SCHEMA = {vol.Required(mode, default=True): bool for mode in AVAILABLE_MODES} DATA_SCHEMA = vol.Schema({vol.Required(CONF_HOST): str, **MODES_SCHEMA}) -async def _validate_connection(hass: core.HomeAssistant, host): +async def _validate_connection(host: str) -> bool: cool = CoolMasterNet(host, DEFAULT_PORT) units = await cool.status() return bool(units) -class CoolmasterConfigFlow(config_entries.ConfigFlow, domain=DOMAIN): +class CoolmasterConfigFlow(ConfigFlow, domain=DOMAIN): """Handle a Coolmaster config flow.""" VERSION = 1 - @core.callback - def _async_get_entry(self, data): + @callback + def _async_get_entry(self, data: dict[str, Any]) -> FlowResult: supported_modes = [ key for (key, value) in data.items() if key in AVAILABLE_MODES and value ] @@ -38,7 +53,9 @@ class CoolmasterConfigFlow(config_entries.ConfigFlow, domain=DOMAIN): }, ) - async def async_step_user(self, user_input=None): + async def async_step_user( + self, user_input: dict[str, Any] | None = None + ) -> FlowResult: """Handle a flow initialized by the user.""" if user_input is None: return self.async_show_form(step_id="user", data_schema=DATA_SCHEMA) @@ -48,7 +65,7 @@ class CoolmasterConfigFlow(config_entries.ConfigFlow, domain=DOMAIN): host = user_input[CONF_HOST] try: - result = await _validate_connection(self.hass, host) + result = await _validate_connection(host) if not result: errors["base"] = "no_units" except OSError: diff --git a/homeassistant/components/coolmaster/const.py b/homeassistant/components/coolmaster/const.py index c07cbe392ef..e5aa1f1b93d 100644 --- a/homeassistant/components/coolmaster/const.py +++ b/homeassistant/components/coolmaster/const.py @@ -1,14 +1,5 @@ """Constants for the Coolmaster integration.""" -from homeassistant.components.climate.const import ( - HVAC_MODE_COOL, - HVAC_MODE_DRY, - HVAC_MODE_FAN_ONLY, - HVAC_MODE_HEAT, - HVAC_MODE_HEAT_COOL, - HVAC_MODE_OFF, -) - DATA_INFO = "info" DATA_COORDINATOR = "coordinator" @@ -17,12 +8,3 @@ DOMAIN = "coolmaster" DEFAULT_PORT = 10102 CONF_SUPPORTED_MODES = "supported_modes" - -AVAILABLE_MODES = [ - HVAC_MODE_OFF, - HVAC_MODE_HEAT, - HVAC_MODE_COOL, - HVAC_MODE_DRY, - HVAC_MODE_HEAT_COOL, - HVAC_MODE_FAN_ONLY, -] diff --git a/tests/components/coolmaster/test_config_flow.py b/tests/components/coolmaster/test_config_flow.py index 1c2abaf8389..1f69e2336bc 100644 --- a/tests/components/coolmaster/test_config_flow.py +++ b/tests/components/coolmaster/test_config_flow.py @@ -2,7 +2,8 @@ from unittest.mock import patch from homeassistant import config_entries -from homeassistant.components.coolmaster.const import AVAILABLE_MODES, DOMAIN +from homeassistant.components.coolmaster.config_flow import AVAILABLE_MODES +from homeassistant.components.coolmaster.const import DOMAIN def _flow_data():