diff --git a/homeassistant/auth/models.py b/homeassistant/auth/models.py index 8b4e6355700..502155df129 100644 --- a/homeassistant/auth/models.py +++ b/homeassistant/auth/models.py @@ -123,4 +123,8 @@ class Credentials: is_new = attr.ib(type=bool, default=True) -UserMeta = NamedTuple("UserMeta", [("name", Optional[str]), ("is_active", bool)]) +class UserMeta(NamedTuple): + """User metadata.""" + + name: Optional[str] + is_active: bool diff --git a/homeassistant/components/tplink/light.py b/homeassistant/components/tplink/light.py index 0e7be471f43..7e07f7931f5 100644 --- a/homeassistant/components/tplink/light.py +++ b/homeassistant/components/tplink/light.py @@ -75,30 +75,26 @@ def brightness_from_percentage(percent): return (percent * 255.0) / 100.0 -LightState = NamedTuple( - "LightState", - ( - ("state", bool), - ("brightness", int), - ("color_temp", float), - ("hs", Tuple[int, int]), - ("emeter_params", dict), - ), -) +class LightState(NamedTuple): + """Light state.""" + + state: bool + brightness: int + color_temp: float + hs: Tuple[int, int] + emeter_params: dict -LightFeatures = NamedTuple( - "LightFeatures", - ( - ("sysinfo", Dict[str, Any]), - ("mac", str), - ("alias", str), - ("model", str), - ("supported_features", int), - ("min_mireds", float), - ("max_mireds", float), - ), -) +class LightFeatures(NamedTuple): + """Light features.""" + + sysinfo: Dict[str, Any] + mac: str + alias: str + model: str + supported_features: int + min_mireds: float + max_mireds: float class TPLinkSmartBulb(Light): diff --git a/tests/components/tplink/test_light.py b/tests/components/tplink/test_light.py index 8e5a2a775b9..e13870b8ee2 100644 --- a/tests/components/tplink/test_light.py +++ b/tests/components/tplink/test_light.py @@ -26,20 +26,19 @@ from homeassistant.const import ( from homeassistant.core import HomeAssistant from homeassistant.setup import async_setup_component -LightMockData = NamedTuple( - "LightMockData", - ( - ("sys_info", dict), - ("light_state", dict), - ("set_light_state", Callable[[dict], None]), - ("set_light_state_mock", Mock), - ("get_light_state_mock", Mock), - ("current_consumption_mock", Mock), - ("get_sysinfo_mock", Mock), - ("get_emeter_daily_mock", Mock), - ("get_emeter_monthly_mock", Mock), - ), -) + +class LightMockData(NamedTuple): + """Mock light data.""" + + sys_info: dict + light_state: dict + set_light_state: Callable[[dict], None] + set_light_state_mock: Mock + get_light_state_mock: Mock + current_consumption_mock: Mock + get_sysinfo_mock: Mock + get_emeter_daily_mock: Mock + get_emeter_monthly_mock: Mock @pytest.fixture(name="light_mock_data") diff --git a/tests/components/vera/common.py b/tests/components/vera/common.py index e99540e675e..649cf9af6a5 100644 --- a/tests/components/vera/common.py +++ b/tests/components/vera/common.py @@ -9,7 +9,11 @@ from homeassistant.components.vera import CONF_CONTROLLER, DOMAIN from homeassistant.core import HomeAssistant from homeassistant.setup import async_setup_component -ComponentData = NamedTuple("ComponentData", (("controller", VeraController),)) + +class ComponentData(NamedTuple): + """Component data.""" + + controller: VeraController class ComponentFactory: