diff --git a/homeassistant/components/actiontec/device_tracker.py b/homeassistant/components/actiontec/device_tracker.py index d9d4a4f2ea6a55b0cc19cbf439459538463d6def..e3fdeaf35f28fe17d71f6a208d6f0e19545b18b7 100644 --- a/homeassistant/components/actiontec/device_tracker.py +++ b/homeassistant/components/actiontec/device_tracker.py @@ -95,9 +95,9 @@ class ActiontecDeviceScanner(DeviceScanner): try: telnet = telnetlib.Telnet(self.host) telnet.read_until(b"Username: ") - telnet.write((self.username + "\n").encode("ascii")) + telnet.write((f"{self.username}\n").encode("ascii")) telnet.read_until(b"Password: ") - telnet.write((self.password + "\n").encode("ascii")) + telnet.write((f"{self.password}\n").encode("ascii")) prompt = telnet.read_until(b"Wireless Broadband Router> ").split(b"\n")[-1] telnet.write(b"firewall mac_cache_dump\n") telnet.write(b"\n") diff --git a/homeassistant/components/aftership/sensor.py b/homeassistant/components/aftership/sensor.py index 3f00c8c310da31820034f964be8ca45bc30a0d37..a615c5e40330be2acac5442498b6e07b56a3d56d 100644 --- a/homeassistant/components/aftership/sensor.py +++ b/homeassistant/components/aftership/sensor.py @@ -27,7 +27,7 @@ CONF_TITLE = "title" CONF_TRACKING_NUMBER = "tracking_number" DEFAULT_NAME = "aftership" -UPDATE_TOPIC = DOMAIN + "_update" +UPDATE_TOPIC = f"{DOMAIN}_update" ICON = "mdi:package-variant-closed" diff --git a/homeassistant/components/aqualogic/__init__.py b/homeassistant/components/aqualogic/__init__.py index 9f693966382c48d29613fab7f9c2d4b5a32616ce..7ed38206a11901f63d777e8207348de5e7400201 100644 --- a/homeassistant/components/aqualogic/__init__.py +++ b/homeassistant/components/aqualogic/__init__.py @@ -18,7 +18,7 @@ from homeassistant.helpers import config_validation as cv _LOGGER = logging.getLogger(__name__) DOMAIN = "aqualogic" -UPDATE_TOPIC = DOMAIN + "_update" +UPDATE_TOPIC = f"{DOMAIN}_update" CONF_UNIT = "unit" RECONNECT_INTERVAL = timedelta(seconds=10) diff --git a/homeassistant/components/arwn/sensor.py b/homeassistant/components/arwn/sensor.py index 6684a5b882b83737a2f5623bf3ed01be47a44448..7be5c4bfb935b01fc3ce0c9925591819c825befa 100644 --- a/homeassistant/components/arwn/sensor.py +++ b/homeassistant/components/arwn/sensor.py @@ -32,7 +32,7 @@ def discover_sensors(topic, payload): unit = TEMP_CELSIUS return ArwnSensor(name, "temp", unit) if domain == "moisture": - name = parts[2] + " Moisture" + name = f"{parts[2]} Moisture" return ArwnSensor(name, "moisture", unit, "mdi:water-percent") if domain == "rain": if len(parts) >= 3 and parts[2] == "today": diff --git a/homeassistant/components/darksky/sensor.py b/homeassistant/components/darksky/sensor.py index 26ba590888f9994db1c3ada5a7800ca3a54778c6..0d6814fca10d66946b3b7d601870378b77d04f89 100644 --- a/homeassistant/components/darksky/sensor.py +++ b/homeassistant/components/darksky/sensor.py @@ -771,7 +771,8 @@ def convert_to_camel(data): This is not pythonic, but needed for certain situations. """ components = data.split("_") - return components[0] + "".join(x.title() for x in components[1:]) + capital_components = "".join(x.title() for x in components[1:]) + return f"{components[0]}{capital_components}" class DarkSkyData: diff --git a/homeassistant/components/denon/media_player.py b/homeassistant/components/denon/media_player.py index 9f210add0af0709c1ce3e1ab1ee9d8c19c2f2913..11c31107ef60e93f18364ca06380765cac9bd854 100644 --- a/homeassistant/components/denon/media_player.py +++ b/homeassistant/components/denon/media_player.py @@ -187,7 +187,7 @@ class DenonDevice(MediaPlayerDevice): "NSE8", ] for line in self.telnet_request(telnet, "NSE", all_lines=True): - self._mediainfo += line[len(answer_codes.pop(0)) :] + "\n" + self._mediainfo += f"{line[len(answer_codes.pop(0)) :]}\n" else: self._mediainfo = self.source @@ -257,7 +257,7 @@ class DenonDevice(MediaPlayerDevice): def set_volume_level(self, volume): """Set volume level, range 0..1.""" - self.telnet_command(f"MV{str(round(volume * self._volume_max)).zfill(2)}") + self.telnet_command(f"MV{round(volume * self._volume_max):02}") def mute_volume(self, mute): """Mute (true) or unmute (false) media player.""" diff --git a/homeassistant/components/dublin_bus_transport/sensor.py b/homeassistant/components/dublin_bus_transport/sensor.py index 5de0b62a4a9a5837748b86dd919ef120b28897ab..e75775bf75f522226cedb0991f09772b477f2291 100644 --- a/homeassistant/components/dublin_bus_transport/sensor.py +++ b/homeassistant/components/dublin_bus_transport/sensor.py @@ -94,7 +94,7 @@ class DublinPublicTransportSensor(Entity): if self._times is not None: next_up = "None" if len(self._times) > 1: - next_up = self._times[1][ATTR_ROUTE] + " in " + next_up = f"{self._times[1][ATTR_ROUTE]} in " next_up += self._times[1][ATTR_DUE_IN] return { diff --git a/homeassistant/components/dwd_weather_warnings/sensor.py b/homeassistant/components/dwd_weather_warnings/sensor.py index 966ec407ce8fa80ce0c6f5eed9edca89a4b82c08..2b7d2296a0160ee099c77a0d2ce1dab53fbe5828 100644 --- a/homeassistant/components/dwd_weather_warnings/sensor.py +++ b/homeassistant/components/dwd_weather_warnings/sensor.py @@ -133,9 +133,9 @@ class DwdWeatherWarningsSensor(Entity): else: raise Exception("Unknown warning type") - data["warning_count"] = self._api.data[prefix + "_warning_count"] + data["warning_count"] = self._api.data[f"{prefix}_warning_count"] i = 0 - for event in self._api.data[prefix + "_warnings"]: + for event in self._api.data[f"{prefix}_warnings"]: i = i + 1 data[f"warning_{i}_name"] = event["event"] diff --git a/homeassistant/components/ecobee/binary_sensor.py b/homeassistant/components/ecobee/binary_sensor.py index 71aaee1c40548fd84bd7e07cd2710f6a280299b0..2f422007ff45500d6ad2721b084e6f13efd50259 100644 --- a/homeassistant/components/ecobee/binary_sensor.py +++ b/homeassistant/components/ecobee/binary_sensor.py @@ -28,7 +28,7 @@ class EcobeeBinarySensor(BinarySensorDevice): def __init__(self, data, sensor_name, sensor_index): """Initialize the Ecobee sensor.""" self.data = data - self._name = sensor_name + " Occupancy" + self._name = f"{sensor_name} Occupancy" self.sensor_name = sensor_name self.index = sensor_index self._state = None diff --git a/homeassistant/components/econet/water_heater.py b/homeassistant/components/econet/water_heater.py index 26ee7cb8bd422fd40338055e3e782cd575267f87..8fede954255c45b15b20a0c6c22a4c6c642f421e 100644 --- a/homeassistant/components/econet/water_heater.py +++ b/homeassistant/components/econet/water_heater.py @@ -132,11 +132,7 @@ class EcoNetWaterHeater(WaterHeaterDevice): self.ha_state_to_econet[value] = key for mode in self.supported_modes: if mode not in ECONET_STATE_TO_HA: - error = ( - "Invalid operation mode mapping. " - + mode - + " doesn't map. Please report this." - ) + error = f"Invalid operation mode mapping. {mode} doesn't map. Please report this." _LOGGER.error(error) @property diff --git a/homeassistant/components/group/__init__.py b/homeassistant/components/group/__init__.py index fd44a80cf3cf6761b849e4e802a26de1ffc1dc0c..e4966a1a4ceef11101d8502a261a6901e0294111 100644 --- a/homeassistant/components/group/__init__.py +++ b/homeassistant/components/group/__init__.py @@ -174,7 +174,7 @@ def get_entity_ids( if not domain_filter: return cast(List[str], entity_ids) - domain_filter = domain_filter.lower() + "." + domain_filter = f"{domain_filter.lower()}." return [ent_id for ent_id in entity_ids if ent_id.startswith(domain_filter)] diff --git a/homeassistant/components/hydrawise/sensor.py b/homeassistant/components/hydrawise/sensor.py index 53bca7996576b21127a2f625f69bfe47ef87b4ec..88146dbeb0d1746c24f20c8723e6ab9cbdcca099 100644 --- a/homeassistant/components/hydrawise/sensor.py +++ b/homeassistant/components/hydrawise/sensor.py @@ -58,11 +58,7 @@ class HydrawiseSensor(HydrawiseEntity): if relay["nicetime"] == "Not scheduled": self._state = "not_scheduled" else: - self._state = ( - relay["nicetime"].split(",")[0] - + " " - + relay["nicetime"].split(" ")[3] - ) + self._state = f"{relay['nicetime'].split(',')[0]} {relay['nicetime'].split(' ')[3]}" @property def icon(self): diff --git a/homeassistant/components/hyperion/light.py b/homeassistant/components/hyperion/light.py index fa5d58fb385296f4a8c4be60067b5f3c1e170003..fc96f672afbf09879d0d76d942b89043862b4ff1 100644 --- a/homeassistant/components/hyperion/light.py +++ b/homeassistant/components/hyperion/light.py @@ -285,7 +285,7 @@ class Hyperion(Light): sock.close() return False - sock.send(bytearray(json.dumps(request) + "\n", "utf-8")) + sock.send(bytearray(f"{json.dumps(request)}\n", "utf-8")) try: buf = sock.recv(4096) except socket.timeout: diff --git a/homeassistant/components/influxdb/__init__.py b/homeassistant/components/influxdb/__init__.py index 1b3093447ecbdb52c4c6f1f533bdcecace65f216..922a0197cf160023e7a32c5dcf92306f106a6fce 100644 --- a/homeassistant/components/influxdb/__init__.py +++ b/homeassistant/components/influxdb/__init__.py @@ -239,7 +239,7 @@ def setup(hass, config): elif key != "unit_of_measurement" or include_uom: # If the key is already in fields if key in json["fields"]: - key = key + "_" + key = f"{key}_" # Prevent column data errors in influxDB. # For each value we try to cast it as float # But if we can not do it we store the value diff --git a/homeassistant/components/irish_rail_transport/sensor.py b/homeassistant/components/irish_rail_transport/sensor.py index 3bb7da52e22c4f7652f17d41ab76722ff93956fc..76f8d0dfaabd2f02dbc3fab52b60d2a1cd05369f 100644 --- a/homeassistant/components/irish_rail_transport/sensor.py +++ b/homeassistant/components/irish_rail_transport/sensor.py @@ -97,9 +97,11 @@ class IrishRailTransportSensor(Entity): if self._times: next_up = "None" if len(self._times) > 1: - next_up = self._times[1][ATTR_ORIGIN] + " to " - next_up += self._times[1][ATTR_DESTINATION] + " in " - next_up += self._times[1][ATTR_DUE_IN] + next_up = ( + f"{self._times[1][ATTR_ORIGIN]} to " + f"{self._times[1][ATTR_DESTINATION]} in " + f"{self._times[1][ATTR_DUE_IN]}" + ) return { ATTR_ATTRIBUTION: ATTRIBUTION, diff --git a/homeassistant/components/knx/climate.py b/homeassistant/components/knx/climate.py index e6da946c81c38b7e8984b5d78faa5b943f3cef08..e7e489dba789666d1118c121d2262efa3eeac8b5 100644 --- a/homeassistant/components/knx/climate.py +++ b/homeassistant/components/knx/climate.py @@ -139,7 +139,7 @@ def async_add_entities_config(hass, config, async_add_entities): """Set up climate for KNX platform configured within platform.""" climate_mode = XknxClimateMode( hass.data[DATA_KNX].xknx, - name=config[CONF_NAME] + " Mode", + name=f"{config[CONF_NAME]} Mode", group_address_operation_mode=config.get(CONF_OPERATION_MODE_ADDRESS), group_address_operation_mode_state=config.get( CONF_OPERATION_MODE_STATE_ADDRESS diff --git a/homeassistant/components/life360/__init__.py b/homeassistant/components/life360/__init__.py index 50117c210a2a2459051d46f2dfca55ba46f860e4..8338cbf7f116e9a7cb1852754271c91a1df421ee 100644 --- a/homeassistant/components/life360/__init__.py +++ b/homeassistant/components/life360/__init__.py @@ -57,7 +57,7 @@ def _prefix(value): if not value: return "" if not value.endswith("_"): - return value + "_" + return f"{value}_" return value diff --git a/homeassistant/components/light/__init__.py b/homeassistant/components/light/__init__.py index 5b9b923cc56f8c167ca1593b6f08c19e011ec409..e86de00b59f3bd014f7b8fa2069cb9c0646f76a9 100644 --- a/homeassistant/components/light/__init__.py +++ b/homeassistant/components/light/__init__.py @@ -325,7 +325,7 @@ class Profiles: def get_default(cls, entity_id): """Return the default turn-on profile for the given light.""" # pylint: disable=unsupported-membership-test - name = entity_id + ".default" + name = f"{entity_id}.default" if name in cls._all: return name name = "group.all_lights.default" diff --git a/homeassistant/components/mobile_app/const.py b/homeassistant/components/mobile_app/const.py index f43f1c88396d30fc750ff696669d61973b0667d2..a9cdc67693246ca714b8039f1a6ac89332e2ad65 100644 --- a/homeassistant/components/mobile_app/const.py +++ b/homeassistant/components/mobile_app/const.py @@ -70,5 +70,5 @@ ATTR_SENSOR_TYPE_SENSOR = "sensor" ATTR_SENSOR_UNIQUE_ID = "unique_id" ATTR_SENSOR_UOM = "unit_of_measurement" -SIGNAL_SENSOR_UPDATE = DOMAIN + "_sensor_update" +SIGNAL_SENSOR_UPDATE = f"{DOMAIN}_sensor_update" SIGNAL_LOCATION_UPDATE = DOMAIN + "_location_update_{}" diff --git a/homeassistant/components/mqtt/discovery.py b/homeassistant/components/mqtt/discovery.py index 812bb183e1c46497d38fa8806605cd55c8fd2329..ce8207fc28d82b8cb3b3e77ec80bf57213716e1f 100644 --- a/homeassistant/components/mqtt/discovery.py +++ b/homeassistant/components/mqtt/discovery.py @@ -166,7 +166,7 @@ async def async_start( hass.data[CONFIG_ENTRY_IS_SETUP] = set() await mqtt.async_subscribe( - hass, discovery_topic + "/#", async_device_message_received, 0 + hass, f"{discovery_topic}/#", async_device_message_received, 0 ) return True diff --git a/homeassistant/components/mychevy/__init__.py b/homeassistant/components/mychevy/__init__.py index 0ec4d05a623bdb18e9c076d2a8770bd9298f66c0..2b8bd65dfe8a01fba6d9b579a54f61a0cdcfbafd 100644 --- a/homeassistant/components/mychevy/__init__.py +++ b/homeassistant/components/mychevy/__init__.py @@ -13,7 +13,7 @@ from homeassistant.util import Throttle DOMAIN = "mychevy" UPDATE_TOPIC = DOMAIN -ERROR_TOPIC = DOMAIN + "_error" +ERROR_TOPIC = f"{DOMAIN}_error" MYCHEVY_SUCCESS = "success" MYCHEVY_ERROR = "error" diff --git a/homeassistant/components/nest/binary_sensor.py b/homeassistant/components/nest/binary_sensor.py index a029fcfe7d65fc805dc73442d3c0dab22d6603b5..34dc7b06ade620ae01b7d338c7bc0fea33ef78fc 100644 --- a/homeassistant/components/nest/binary_sensor.py +++ b/homeassistant/components/nest/binary_sensor.py @@ -69,7 +69,7 @@ async def async_setup_entry(hass, entry, async_add_entities): for variable in conditions: if variable in _BINARY_TYPES_DEPRECATED: wstr = ( - variable + " is no a longer supported " + f"{variable} is no a longer supported " "monitored_conditions. See " "https://www.home-assistant.io/integrations/binary_sensor.nest/ " "for valid options." diff --git a/homeassistant/components/nest/sensor.py b/homeassistant/components/nest/sensor.py index 064c78917e1cc28c2cfa19821d4ad51fd8db2676..082b5b19b5f465f16b319198b578f230c8cc2737 100644 --- a/homeassistant/components/nest/sensor.py +++ b/homeassistant/components/nest/sensor.py @@ -96,7 +96,7 @@ async def async_setup_entry(hass, entry, async_add_entities): ) else: wstr = ( - variable + " is no a longer supported " + f"{variable} is no a longer supported " "monitored_conditions. See " "https://www.home-assistant.io/integrations/" "binary_sensor.nest/ for valid options." diff --git a/homeassistant/components/ombi/__init__.py b/homeassistant/components/ombi/__init__.py index 750772ce8f5beb2a5deeba61e673f3ed0856d250..dcd8f2641612b0aa10e4dbe56738c1efa019df05 100644 --- a/homeassistant/components/ombi/__init__.py +++ b/homeassistant/components/ombi/__init__.py @@ -38,7 +38,7 @@ def urlbase(value) -> str: value = str(value).strip("/") if not value: return value - return value + "/" + return f"{value}/" SUBMIT_MOVIE_REQUEST_SERVICE_SCHEMA = vol.Schema({vol.Required(ATTR_NAME): cv.string})