From dd8d4471ec5ca42de70f2035a2d2f23c7a757459 Mon Sep 17 00:00:00 2001 From: Franck Nijhof Date: Fri, 12 Feb 2021 18:54:00 +0100 Subject: [PATCH] Postponed evaluation of annotations for integrations (#46455) --- homeassistant/components/bmw_connected_drive/__init__.py | 4 +++- homeassistant/components/cast/helpers.py | 4 +++- homeassistant/components/counter/__init__.py | 4 +++- homeassistant/components/esphome/sensor.py | 4 ++-- homeassistant/components/huawei_lte/config_flow.py | 3 ++- homeassistant/components/huawei_lte/notify.py | 3 ++- homeassistant/components/input_boolean/__init__.py | 4 +++- homeassistant/components/input_datetime/__init__.py | 4 +++- homeassistant/components/input_number/__init__.py | 4 +++- homeassistant/components/input_select/__init__.py | 4 +++- homeassistant/components/input_text/__init__.py | 4 +++- homeassistant/components/light/__init__.py | 4 +++- homeassistant/components/media_player/__init__.py | 4 +++- homeassistant/components/media_source/models.py | 6 ++++-- homeassistant/components/timer/__init__.py | 4 +++- homeassistant/components/transmission/__init__.py | 4 +++- homeassistant/components/zha/core/channels/__init__.py | 8 +++++--- homeassistant/components/zone/__init__.py | 4 +++- 18 files changed, 54 insertions(+), 22 deletions(-) diff --git a/homeassistant/components/bmw_connected_drive/__init__.py b/homeassistant/components/bmw_connected_drive/__init__.py index ac25636a066..9d794ace5be 100644 --- a/homeassistant/components/bmw_connected_drive/__init__.py +++ b/homeassistant/components/bmw_connected_drive/__init__.py @@ -1,4 +1,6 @@ """Reads vehicle status from BMW connected drive portal.""" +from __future__ import annotations + import asyncio import logging @@ -195,7 +197,7 @@ async def update_listener(hass, config_entry): await hass.config_entries.async_reload(config_entry.entry_id) -def setup_account(entry: ConfigEntry, hass, name: str) -> "BMWConnectedDriveAccount": +def setup_account(entry: ConfigEntry, hass, name: str) -> BMWConnectedDriveAccount: """Set up a new BMWConnectedDriveAccount based on the config.""" username = entry.data[CONF_USERNAME] password = entry.data[CONF_PASSWORD] diff --git a/homeassistant/components/cast/helpers.py b/homeassistant/components/cast/helpers.py index e7db380406b..b8742ec2b5e 100644 --- a/homeassistant/components/cast/helpers.py +++ b/homeassistant/components/cast/helpers.py @@ -1,4 +1,6 @@ """Helpers to deal with Cast devices.""" +from __future__ import annotations + from typing import Optional import attr @@ -57,7 +59,7 @@ class ChromecastInfo: return None return CAST_MANUFACTURERS.get(self.model_name.lower(), "Google Inc.") - def fill_out_missing_chromecast_info(self) -> "ChromecastInfo": + def fill_out_missing_chromecast_info(self) -> ChromecastInfo: """Return a new ChromecastInfo object with missing attributes filled in. Uses blocking HTTP / HTTPS. diff --git a/homeassistant/components/counter/__init__.py b/homeassistant/components/counter/__init__.py index d23c90bcb93..868a74cc7b7 100644 --- a/homeassistant/components/counter/__init__.py +++ b/homeassistant/components/counter/__init__.py @@ -1,4 +1,6 @@ """Component to count within automations.""" +from __future__ import annotations + import logging from typing import Dict, Optional @@ -179,7 +181,7 @@ class Counter(RestoreEntity): self.editable: bool = True @classmethod - def from_yaml(cls, config: Dict) -> "Counter": + def from_yaml(cls, config: Dict) -> Counter: """Create counter instance from yaml config.""" counter = cls(config) counter.editable = False diff --git a/homeassistant/components/esphome/sensor.py b/homeassistant/components/esphome/sensor.py index fbf3925953b..a5cc321cb08 100644 --- a/homeassistant/components/esphome/sensor.py +++ b/homeassistant/components/esphome/sensor.py @@ -78,11 +78,11 @@ class EsphomeTextSensor(EsphomeEntity): """A text sensor implementation for ESPHome.""" @property - def _static_info(self) -> "TextSensorInfo": + def _static_info(self) -> TextSensorInfo: return super()._static_info @property - def _state(self) -> Optional["TextSensorState"]: + def _state(self) -> Optional[TextSensorState]: return super()._state @property diff --git a/homeassistant/components/huawei_lte/config_flow.py b/homeassistant/components/huawei_lte/config_flow.py index ba8baedcaf7..350ad5bca0d 100644 --- a/homeassistant/components/huawei_lte/config_flow.py +++ b/homeassistant/components/huawei_lte/config_flow.py @@ -1,4 +1,5 @@ """Config flow for the Huawei LTE platform.""" +from __future__ import annotations from collections import OrderedDict import logging @@ -48,7 +49,7 @@ class ConfigFlowHandler(config_entries.ConfigFlow, domain=DOMAIN): @callback def async_get_options_flow( config_entry: config_entries.ConfigEntry, - ) -> "OptionsFlowHandler": + ) -> OptionsFlowHandler: """Get options flow.""" return OptionsFlowHandler(config_entry) diff --git a/homeassistant/components/huawei_lte/notify.py b/homeassistant/components/huawei_lte/notify.py index 5659e66ea98..ef354fefaf3 100644 --- a/homeassistant/components/huawei_lte/notify.py +++ b/homeassistant/components/huawei_lte/notify.py @@ -1,4 +1,5 @@ """Support for Huawei LTE router notifications.""" +from __future__ import annotations import logging import time @@ -21,7 +22,7 @@ async def async_get_service( hass: HomeAssistantType, config: Dict[str, Any], discovery_info: Optional[Dict[str, Any]] = None, -) -> Optional["HuaweiLteSmsNotificationService"]: +) -> Optional[HuaweiLteSmsNotificationService]: """Get the notification service.""" if discovery_info is None: return None diff --git a/homeassistant/components/input_boolean/__init__.py b/homeassistant/components/input_boolean/__init__.py index 1b996722c01..fbfe4cd0454 100644 --- a/homeassistant/components/input_boolean/__init__.py +++ b/homeassistant/components/input_boolean/__init__.py @@ -1,4 +1,6 @@ """Support to keep track of user controlled booleans for within automation.""" +from __future__ import annotations + import logging import typing @@ -150,7 +152,7 @@ class InputBoolean(ToggleEntity, RestoreEntity): self._state = config.get(CONF_INITIAL) @classmethod - def from_yaml(cls, config: typing.Dict) -> "InputBoolean": + def from_yaml(cls, config: typing.Dict) -> InputBoolean: """Return entity instance initialized from yaml storage.""" input_bool = cls(config) input_bool.entity_id = f"{DOMAIN}.{config[CONF_ID]}" diff --git a/homeassistant/components/input_datetime/__init__.py b/homeassistant/components/input_datetime/__init__.py index 9589fe9a7ea..adefa36639a 100644 --- a/homeassistant/components/input_datetime/__init__.py +++ b/homeassistant/components/input_datetime/__init__.py @@ -1,4 +1,6 @@ """Support to select a date and/or a time.""" +from __future__ import annotations + import datetime as py_datetime import logging import typing @@ -228,7 +230,7 @@ class InputDatetime(RestoreEntity): ) @classmethod - def from_yaml(cls, config: typing.Dict) -> "InputDatetime": + def from_yaml(cls, config: typing.Dict) -> InputDatetime: """Return entity instance initialized from yaml storage.""" input_dt = cls(config) input_dt.entity_id = f"{DOMAIN}.{config[CONF_ID]}" diff --git a/homeassistant/components/input_number/__init__.py b/homeassistant/components/input_number/__init__.py index 5cad0f49c88..b68e6fff45d 100644 --- a/homeassistant/components/input_number/__init__.py +++ b/homeassistant/components/input_number/__init__.py @@ -1,4 +1,6 @@ """Support to set a numeric value from a slider or text box.""" +from __future__ import annotations + import logging import typing @@ -202,7 +204,7 @@ class InputNumber(RestoreEntity): self._current_value = config.get(CONF_INITIAL) @classmethod - def from_yaml(cls, config: typing.Dict) -> "InputNumber": + def from_yaml(cls, config: typing.Dict) -> InputNumber: """Return entity instance initialized from yaml storage.""" input_num = cls(config) input_num.entity_id = f"{DOMAIN}.{config[CONF_ID]}" diff --git a/homeassistant/components/input_select/__init__.py b/homeassistant/components/input_select/__init__.py index a390d8e1901..f6831dc3e88 100644 --- a/homeassistant/components/input_select/__init__.py +++ b/homeassistant/components/input_select/__init__.py @@ -1,4 +1,6 @@ """Support to select an option from a list.""" +from __future__ import annotations + import logging import typing @@ -207,7 +209,7 @@ class InputSelect(RestoreEntity): self._current_option = config.get(CONF_INITIAL) @classmethod - def from_yaml(cls, config: typing.Dict) -> "InputSelect": + def from_yaml(cls, config: typing.Dict) -> InputSelect: """Return entity instance initialized from yaml storage.""" input_select = cls(config) input_select.entity_id = f"{DOMAIN}.{config[CONF_ID]}" diff --git a/homeassistant/components/input_text/__init__.py b/homeassistant/components/input_text/__init__.py index 76eb51eedd5..3f8c1d6a13e 100644 --- a/homeassistant/components/input_text/__init__.py +++ b/homeassistant/components/input_text/__init__.py @@ -1,4 +1,6 @@ """Support to enter a value into a text box.""" +from __future__ import annotations + import logging import typing @@ -196,7 +198,7 @@ class InputText(RestoreEntity): self._current_value = config.get(CONF_INITIAL) @classmethod - def from_yaml(cls, config: typing.Dict) -> "InputText": + def from_yaml(cls, config: typing.Dict) -> InputText: """Return entity instance initialized from yaml storage.""" input_text = cls(config) input_text.entity_id = f"{DOMAIN}.{config[CONF_ID]}" diff --git a/homeassistant/components/light/__init__.py b/homeassistant/components/light/__init__.py index c46b7568b59..55476c754f2 100644 --- a/homeassistant/components/light/__init__.py +++ b/homeassistant/components/light/__init__.py @@ -1,4 +1,6 @@ """Provides functionality to interact with lights.""" +from __future__ import annotations + import csv import dataclasses from datetime import timedelta @@ -327,7 +329,7 @@ class Profile: ) @classmethod - def from_csv_row(cls, csv_row: List[str]) -> "Profile": + def from_csv_row(cls, csv_row: List[str]) -> Profile: """Create profile from a CSV row tuple.""" return cls(*cls.SCHEMA(csv_row)) diff --git a/homeassistant/components/media_player/__init__.py b/homeassistant/components/media_player/__init__.py index d670acb7af9..87ecff7a54c 100644 --- a/homeassistant/components/media_player/__init__.py +++ b/homeassistant/components/media_player/__init__.py @@ -1,4 +1,6 @@ """Component to interface with various media players.""" +from __future__ import annotations + import asyncio import base64 import collections @@ -851,7 +853,7 @@ class MediaPlayerEntity(Entity): self, media_content_type: Optional[str] = None, media_content_id: Optional[str] = None, - ) -> "BrowseMedia": + ) -> BrowseMedia: """Return a BrowseMedia instance. The BrowseMedia instance will be used by the diff --git a/homeassistant/components/media_source/models.py b/homeassistant/components/media_source/models.py index e16ecbe578e..98b817344d9 100644 --- a/homeassistant/components/media_source/models.py +++ b/homeassistant/components/media_source/models.py @@ -1,4 +1,6 @@ """Media Source models.""" +from __future__ import annotations + from abc import ABC from dataclasses import dataclass from typing import List, Optional, Tuple @@ -82,12 +84,12 @@ class MediaSourceItem: return await self.async_media_source().async_resolve_media(self) @callback - def async_media_source(self) -> "MediaSource": + def async_media_source(self) -> MediaSource: """Return media source that owns this item.""" return self.hass.data[DOMAIN][self.domain] @classmethod - def from_uri(cls, hass: HomeAssistant, uri: str) -> "MediaSourceItem": + def from_uri(cls, hass: HomeAssistant, uri: str) -> MediaSourceItem: """Create an item from a uri.""" match = URI_SCHEME_REGEX.match(uri) diff --git a/homeassistant/components/timer/__init__.py b/homeassistant/components/timer/__init__.py index b123bbadf7d..b0ff60bbcae 100644 --- a/homeassistant/components/timer/__init__.py +++ b/homeassistant/components/timer/__init__.py @@ -1,4 +1,6 @@ """Support for Timers.""" +from __future__ import annotations + from datetime import datetime, timedelta import logging from typing import Dict, Optional @@ -198,7 +200,7 @@ class Timer(RestoreEntity): self._listener = None @classmethod - def from_yaml(cls, config: Dict) -> "Timer": + def from_yaml(cls, config: Dict) -> Timer: """Return entity instance initialized from yaml storage.""" timer = cls(config) timer.entity_id = ENTITY_ID_FORMAT.format(config[CONF_ID]) diff --git a/homeassistant/components/transmission/__init__.py b/homeassistant/components/transmission/__init__.py index 76d9aedd8d5..5a37cc4d771 100644 --- a/homeassistant/components/transmission/__init__.py +++ b/homeassistant/components/transmission/__init__.py @@ -1,4 +1,6 @@ """Support for the Transmission BitTorrent client API.""" +from __future__ import annotations + from datetime import timedelta import logging from typing import List @@ -176,7 +178,7 @@ class TransmissionClient: self.unsub_timer = None @property - def api(self) -> "TransmissionData": + def api(self) -> TransmissionData: """Return the TransmissionData object.""" return self._tm_data diff --git a/homeassistant/components/zha/core/channels/__init__.py b/homeassistant/components/zha/core/channels/__init__.py index 1bd8a52b6e6..852d576c035 100644 --- a/homeassistant/components/zha/core/channels/__init__.py +++ b/homeassistant/components/zha/core/channels/__init__.py @@ -1,4 +1,6 @@ """Channels module for Zigbee Home Automation.""" +from __future__ import annotations + import asyncio from typing import Any, Dict, List, Optional, Tuple, Union @@ -47,7 +49,7 @@ class Channels: self._zha_device = zha_device @property - def pools(self) -> List["ChannelPool"]: + def pools(self) -> List[ChannelPool]: """Return channel pools list.""" return self._pools @@ -102,7 +104,7 @@ class Channels: } @classmethod - def new(cls, zha_device: zha_typing.ZhaDeviceType) -> "Channels": + def new(cls, zha_device: zha_typing.ZhaDeviceType) -> Channels: """Create new instance.""" channels = cls(zha_device) for ep_id in sorted(zha_device.device.endpoints): @@ -263,7 +265,7 @@ class ChannelPool: ) @classmethod - def new(cls, channels: Channels, ep_id: int) -> "ChannelPool": + def new(cls, channels: Channels, ep_id: int) -> ChannelPool: """Create new channels for an endpoint.""" pool = cls(channels, ep_id) pool.add_all_channels() diff --git a/homeassistant/components/zone/__init__.py b/homeassistant/components/zone/__init__.py index 1eef9636e36..e1d48cbe1ff 100644 --- a/homeassistant/components/zone/__init__.py +++ b/homeassistant/components/zone/__init__.py @@ -1,4 +1,6 @@ """Support for the definition of zones.""" +from __future__ import annotations + import logging from typing import Any, Dict, Optional, cast @@ -285,7 +287,7 @@ class Zone(entity.Entity): self._generate_attrs() @classmethod - def from_yaml(cls, config: Dict) -> "Zone": + def from_yaml(cls, config: Dict) -> Zone: """Return entity instance initialized from yaml storage.""" zone = cls(config) zone.editable = False