diff --git a/homeassistant/components/google_assistant/const.py b/homeassistant/components/google_assistant/const.py
index c9f8d857b6241a66875bda428bf1f899be2e0b40..37fef6f2d794afe863eb9740866b6f680e14f1b3 100644
--- a/homeassistant/components/google_assistant/const.py
+++ b/homeassistant/components/google_assistant/const.py
@@ -57,29 +57,29 @@ DEFAULT_EXPOSED_DOMAINS = [
 ]
 
 PREFIX_TYPES = "action.devices.types."
-TYPE_CAMERA = PREFIX_TYPES + "CAMERA"
-TYPE_LIGHT = PREFIX_TYPES + "LIGHT"
-TYPE_SWITCH = PREFIX_TYPES + "SWITCH"
-TYPE_VACUUM = PREFIX_TYPES + "VACUUM"
-TYPE_SCENE = PREFIX_TYPES + "SCENE"
-TYPE_FAN = PREFIX_TYPES + "FAN"
-TYPE_THERMOSTAT = PREFIX_TYPES + "THERMOSTAT"
-TYPE_LOCK = PREFIX_TYPES + "LOCK"
-TYPE_BLINDS = PREFIX_TYPES + "BLINDS"
-TYPE_GARAGE = PREFIX_TYPES + "GARAGE"
-TYPE_OUTLET = PREFIX_TYPES + "OUTLET"
-TYPE_SENSOR = PREFIX_TYPES + "SENSOR"
-TYPE_DOOR = PREFIX_TYPES + "DOOR"
-TYPE_TV = PREFIX_TYPES + "TV"
-TYPE_SPEAKER = PREFIX_TYPES + "SPEAKER"
-TYPE_ALARM = PREFIX_TYPES + "SECURITYSYSTEM"
+TYPE_CAMERA = f"{PREFIX_TYPES}CAMERA"
+TYPE_LIGHT = f"{PREFIX_TYPES}LIGHT"
+TYPE_SWITCH = f"{PREFIX_TYPES}SWITCH"
+TYPE_VACUUM = f"{PREFIX_TYPES}VACUUM"
+TYPE_SCENE = f"{PREFIX_TYPES}SCENE"
+TYPE_FAN = f"{PREFIX_TYPES}FAN"
+TYPE_THERMOSTAT = f"{PREFIX_TYPES}THERMOSTAT"
+TYPE_LOCK = f"{PREFIX_TYPES}LOCK"
+TYPE_BLINDS = f"{PREFIX_TYPES}BLINDS"
+TYPE_GARAGE = f"{PREFIX_TYPES}GARAGE"
+TYPE_OUTLET = f"{PREFIX_TYPES}OUTLET"
+TYPE_SENSOR = f"{PREFIX_TYPES}SENSOR"
+TYPE_DOOR = f"{PREFIX_TYPES}DOOR"
+TYPE_TV = f"{PREFIX_TYPES}TV"
+TYPE_SPEAKER = f"{PREFIX_TYPES}SPEAKER"
+TYPE_ALARM = f"{PREFIX_TYPES}SECURITYSYSTEM"
 
 SERVICE_REQUEST_SYNC = "request_sync"
 HOMEGRAPH_URL = "https://homegraph.googleapis.com/"
 HOMEGRAPH_SCOPE = "https://www.googleapis.com/auth/homegraph"
 HOMEGRAPH_TOKEN_URL = "https://accounts.google.com/o/oauth2/token"
-REQUEST_SYNC_BASE_URL = HOMEGRAPH_URL + "v1/devices:requestSync"
-REPORT_STATE_BASE_URL = HOMEGRAPH_URL + "v1/devices:reportStateAndNotification"
+REQUEST_SYNC_BASE_URL = f"{HOMEGRAPH_URL}v1/devices:requestSync"
+REPORT_STATE_BASE_URL = f"{HOMEGRAPH_URL}v1/devices:reportStateAndNotification"
 
 # Error codes used for SmartHomeError class
 # https://developers.google.com/actions/reference/smarthome/errors-exceptions
diff --git a/homeassistant/components/google_assistant/trait.py b/homeassistant/components/google_assistant/trait.py
index 2bc5f5040d413e23ca0005e844ab6e7caebe4c97..ab045896235545cfed8dc9425e747ddcb6d4569d 100644
--- a/homeassistant/components/google_assistant/trait.py
+++ b/homeassistant/components/google_assistant/trait.py
@@ -68,45 +68,45 @@ from .error import ChallengeNeeded, SmartHomeError
 _LOGGER = logging.getLogger(__name__)
 
 PREFIX_TRAITS = "action.devices.traits."
-TRAIT_CAMERA_STREAM = PREFIX_TRAITS + "CameraStream"
-TRAIT_ONOFF = PREFIX_TRAITS + "OnOff"
-TRAIT_DOCK = PREFIX_TRAITS + "Dock"
-TRAIT_STARTSTOP = PREFIX_TRAITS + "StartStop"
-TRAIT_BRIGHTNESS = PREFIX_TRAITS + "Brightness"
-TRAIT_COLOR_SETTING = PREFIX_TRAITS + "ColorSetting"
-TRAIT_SCENE = PREFIX_TRAITS + "Scene"
-TRAIT_TEMPERATURE_SETTING = PREFIX_TRAITS + "TemperatureSetting"
-TRAIT_LOCKUNLOCK = PREFIX_TRAITS + "LockUnlock"
-TRAIT_FANSPEED = PREFIX_TRAITS + "FanSpeed"
-TRAIT_MODES = PREFIX_TRAITS + "Modes"
-TRAIT_OPENCLOSE = PREFIX_TRAITS + "OpenClose"
-TRAIT_VOLUME = PREFIX_TRAITS + "Volume"
-TRAIT_ARMDISARM = PREFIX_TRAITS + "ArmDisarm"
-TRAIT_HUMIDITY_SETTING = PREFIX_TRAITS + "HumiditySetting"
+TRAIT_CAMERA_STREAM = f"{PREFIX_TRAITS}CameraStream"
+TRAIT_ONOFF = f"{PREFIX_TRAITS}OnOff"
+TRAIT_DOCK = f"{PREFIX_TRAITS}Dock"
+TRAIT_STARTSTOP = f"{PREFIX_TRAITS}StartStop"
+TRAIT_BRIGHTNESS = f"{PREFIX_TRAITS}Brightness"
+TRAIT_COLOR_SETTING = f"{PREFIX_TRAITS}ColorSetting"
+TRAIT_SCENE = f"{PREFIX_TRAITS}Scene"
+TRAIT_TEMPERATURE_SETTING = f"{PREFIX_TRAITS}TemperatureSetting"
+TRAIT_LOCKUNLOCK = f"{PREFIX_TRAITS}LockUnlock"
+TRAIT_FANSPEED = f"{PREFIX_TRAITS}FanSpeed"
+TRAIT_MODES = f"{PREFIX_TRAITS}Modes"
+TRAIT_OPENCLOSE = f"{PREFIX_TRAITS}OpenClose"
+TRAIT_VOLUME = f"{PREFIX_TRAITS}Volume"
+TRAIT_ARMDISARM = f"{PREFIX_TRAITS}ArmDisarm"
+TRAIT_HUMIDITY_SETTING = f"{PREFIX_TRAITS}HumiditySetting"
 
 PREFIX_COMMANDS = "action.devices.commands."
-COMMAND_ONOFF = PREFIX_COMMANDS + "OnOff"
-COMMAND_GET_CAMERA_STREAM = PREFIX_COMMANDS + "GetCameraStream"
-COMMAND_DOCK = PREFIX_COMMANDS + "Dock"
-COMMAND_STARTSTOP = PREFIX_COMMANDS + "StartStop"
-COMMAND_PAUSEUNPAUSE = PREFIX_COMMANDS + "PauseUnpause"
-COMMAND_BRIGHTNESS_ABSOLUTE = PREFIX_COMMANDS + "BrightnessAbsolute"
-COMMAND_COLOR_ABSOLUTE = PREFIX_COMMANDS + "ColorAbsolute"
-COMMAND_ACTIVATE_SCENE = PREFIX_COMMANDS + "ActivateScene"
+COMMAND_ONOFF = f"{PREFIX_COMMANDS}OnOff"
+COMMAND_GET_CAMERA_STREAM = f"{PREFIX_COMMANDS}GetCameraStream"
+COMMAND_DOCK = f"{PREFIX_COMMANDS}Dock"
+COMMAND_STARTSTOP = f"{PREFIX_COMMANDS}StartStop"
+COMMAND_PAUSEUNPAUSE = f"{PREFIX_COMMANDS}PauseUnpause"
+COMMAND_BRIGHTNESS_ABSOLUTE = f"{PREFIX_COMMANDS}BrightnessAbsolute"
+COMMAND_COLOR_ABSOLUTE = f"{PREFIX_COMMANDS}ColorAbsolute"
+COMMAND_ACTIVATE_SCENE = f"{PREFIX_COMMANDS}ActivateScene"
 COMMAND_THERMOSTAT_TEMPERATURE_SETPOINT = (
-    PREFIX_COMMANDS + "ThermostatTemperatureSetpoint"
+    f"{PREFIX_COMMANDS}ThermostatTemperatureSetpoint"
 )
 COMMAND_THERMOSTAT_TEMPERATURE_SET_RANGE = (
-    PREFIX_COMMANDS + "ThermostatTemperatureSetRange"
+    f"{PREFIX_COMMANDS}ThermostatTemperatureSetRange"
 )
-COMMAND_THERMOSTAT_SET_MODE = PREFIX_COMMANDS + "ThermostatSetMode"
-COMMAND_LOCKUNLOCK = PREFIX_COMMANDS + "LockUnlock"
-COMMAND_FANSPEED = PREFIX_COMMANDS + "SetFanSpeed"
-COMMAND_MODES = PREFIX_COMMANDS + "SetModes"
-COMMAND_OPENCLOSE = PREFIX_COMMANDS + "OpenClose"
-COMMAND_SET_VOLUME = PREFIX_COMMANDS + "setVolume"
-COMMAND_VOLUME_RELATIVE = PREFIX_COMMANDS + "volumeRelative"
-COMMAND_ARMDISARM = PREFIX_COMMANDS + "ArmDisarm"
+COMMAND_THERMOSTAT_SET_MODE = f"{PREFIX_COMMANDS}ThermostatSetMode"
+COMMAND_LOCKUNLOCK = f"{PREFIX_COMMANDS}LockUnlock"
+COMMAND_FANSPEED = f"{PREFIX_COMMANDS}SetFanSpeed"
+COMMAND_MODES = f"{PREFIX_COMMANDS}SetModes"
+COMMAND_OPENCLOSE = f"{PREFIX_COMMANDS}OpenClose"
+COMMAND_SET_VOLUME = f"{PREFIX_COMMANDS}setVolume"
+COMMAND_VOLUME_RELATIVE = f"{PREFIX_COMMANDS}volumeRelative"
+COMMAND_ARMDISARM = f"{PREFIX_COMMANDS}ArmDisarm"
 
 TRAITS = []
 
diff --git a/homeassistant/components/joaoapps_join/__init__.py b/homeassistant/components/joaoapps_join/__init__.py
index 10cbcf6b5c0684a66b889be9375c4a3cc8887319..1bc4ae298c4785c7defc1f537c6b3beb1f794431 100644
--- a/homeassistant/components/joaoapps_join/__init__.py
+++ b/homeassistant/components/joaoapps_join/__init__.py
@@ -105,12 +105,12 @@ def register_device(hass, api_key, name, device_id, device_ids, device_names):
             api_key=api_key,
         )
 
-    hass.services.register(DOMAIN, name + "ring", ring_service)
-    hass.services.register(DOMAIN, name + "set_wallpaper", set_wallpaper_service)
-    hass.services.register(DOMAIN, name + "send_sms", send_sms_service)
-    hass.services.register(DOMAIN, name + "send_file", send_file_service)
-    hass.services.register(DOMAIN, name + "send_url", send_url_service)
-    hass.services.register(DOMAIN, name + "send_tasker", send_tasker_service)
+    hass.services.register(DOMAIN, f"{name}ring", ring_service)
+    hass.services.register(DOMAIN, f"{name}set_wallpaper", set_wallpaper_service)
+    hass.services.register(DOMAIN, f"{name}send_sms", send_sms_service)
+    hass.services.register(DOMAIN, f"{name}send_file", send_file_service)
+    hass.services.register(DOMAIN, f"{name}send_url", send_url_service)
+    hass.services.register(DOMAIN, f"{name}send_tasker", send_tasker_service)
 
 
 def setup(hass, config):
@@ -122,7 +122,7 @@ def setup(hass, config):
         device_ids = device.get(CONF_DEVICE_IDS)
         device_names = device.get(CONF_DEVICE_NAMES)
         name = device.get(CONF_NAME)
-        name = name.lower().replace(" ", "_") + "_" if name else ""
+        name = f"{name.lower().replace(' ', '_')}_" if name else ""
         if api_key:
             if not get_devices(api_key):
                 _LOGGER.error("Error connecting to Join, check API key")
diff --git a/homeassistant/components/nissan_leaf/sensor.py b/homeassistant/components/nissan_leaf/sensor.py
index 33b0efa5d607410981a873b616f7eb3486edcb7c..3565fb303d549abd8ddb1ae27d0fbf4c32ba89bb 100644
--- a/homeassistant/components/nissan_leaf/sensor.py
+++ b/homeassistant/components/nissan_leaf/sensor.py
@@ -41,7 +41,7 @@ class LeafBatterySensor(LeafEntity):
     @property
     def name(self):
         """Sensor Name."""
-        return self.car.leaf.nickname + " Charge"
+        return f"{self.car.leaf.nickname} Charge"
 
     @property
     def device_class(self):
@@ -77,8 +77,8 @@ class LeafRangeSensor(LeafEntity):
     def name(self):
         """Update sensor name depending on AC."""
         if self._ac_on is True:
-            return self.car.leaf.nickname + " Range (AC)"
-        return self.car.leaf.nickname + " Range"
+            return f"{self.car.leaf.nickname} Range (AC)"
+        return f"{self.car.leaf.nickname} Range"
 
     def log_registration(self):
         """Log registration."""
diff --git a/script/hassfest/codeowners.py b/script/hassfest/codeowners.py
index cfbd112100ab5c74ccb1325bee64d116d38a3a3a..0a653ea0e90a0ab4b5a6fdfa27adc4ba87c8048c 100644
--- a/script/hassfest/codeowners.py
+++ b/script/hassfest/codeowners.py
@@ -76,4 +76,4 @@ def generate(integrations: Dict[str, Integration], config: Config):
     """Generate CODEOWNERS."""
     codeowners_path = config.root / "CODEOWNERS"
     with open(str(codeowners_path), "w") as fp:
-        fp.write(config.cache["codeowners"] + "\n")
+        fp.write(f"{config.cache['codeowners']}\n")
diff --git a/script/hassfest/config_flow.py b/script/hassfest/config_flow.py
index 83d495e1bf2b69e4f3dce1168f423c31680eeed8..5a6f0798c51d353fb8c6ffdc07382412f54618c1 100644
--- a/script/hassfest/config_flow.py
+++ b/script/hassfest/config_flow.py
@@ -83,4 +83,4 @@ def generate(integrations: Dict[str, Integration], config: Config):
     """Generate config flow file."""
     config_flow_path = config.root / "homeassistant/generated/config_flows.py"
     with open(str(config_flow_path), "w") as fp:
-        fp.write(config.cache["config_flow"] + "\n")
+        fp.write(f"{config.cache['config_flow']}\n")
diff --git a/script/hassfest/ssdp.py b/script/hassfest/ssdp.py
index a32e07f4aac4f484228902fbf1451285fe4289da..28701f2b0156182b9c747768abe2f92585ddeb48 100644
--- a/script/hassfest/ssdp.py
+++ b/script/hassfest/ssdp.py
@@ -79,4 +79,4 @@ def generate(integrations: Dict[str, Integration], config: Config):
     """Generate ssdp file."""
     ssdp_path = config.root / "homeassistant/generated/ssdp.py"
     with open(str(ssdp_path), "w") as fp:
-        fp.write(config.cache["ssdp"] + "\n")
+        fp.write(f"{config.cache['ssdp']}\n")
diff --git a/script/hassfest/zeroconf.py b/script/hassfest/zeroconf.py
index 7e1b7eae727ecd7b926f66f3d425ae52c269eda8..377115f7ae45c9e92a077fa384aa2d758f45995d 100644
--- a/script/hassfest/zeroconf.py
+++ b/script/hassfest/zeroconf.py
@@ -135,4 +135,4 @@ def generate(integrations: Dict[str, Integration], config: Config):
     """Generate zeroconf file."""
     zeroconf_path = config.root / "homeassistant/generated/zeroconf.py"
     with open(str(zeroconf_path), "w") as fp:
-        fp.write(config.cache["zeroconf"] + "\n")
+        fp.write(f"{config.cache['zeroconf']}\n")
diff --git a/setup.py b/setup.py
index 89205d4ee8aee24ac4f27405e723e4a6940aa424..f53af0ee1f3bd511fdd931659062f5024f5c0e33 100755
--- a/setup.py
+++ b/setup.py
@@ -10,20 +10,20 @@ PROJECT_NAME = "Home Assistant"
 PROJECT_PACKAGE_NAME = "homeassistant"
 PROJECT_LICENSE = "Apache License 2.0"
 PROJECT_AUTHOR = "The Home Assistant Authors"
-PROJECT_COPYRIGHT = " 2013-{}, {}".format(dt.now().year, PROJECT_AUTHOR)
+PROJECT_COPYRIGHT = f" 2013-{dt.now().year}, {PROJECT_AUTHOR}"
 PROJECT_URL = "https://www.home-assistant.io/"
 PROJECT_EMAIL = "hello@home-assistant.io"
 
 PROJECT_GITHUB_USERNAME = "home-assistant"
 PROJECT_GITHUB_REPOSITORY = "core"
 
-PYPI_URL = "https://pypi.python.org/pypi/{}".format(PROJECT_PACKAGE_NAME)
-GITHUB_PATH = "{}/{}".format(PROJECT_GITHUB_USERNAME, PROJECT_GITHUB_REPOSITORY)
-GITHUB_URL = "https://github.com/{}".format(GITHUB_PATH)
+PYPI_URL = f"https://pypi.python.org/pypi/{PROJECT_PACKAGE_NAME}"
+GITHUB_PATH = f"{PROJECT_GITHUB_USERNAME}/{PROJECT_GITHUB_REPOSITORY}"
+GITHUB_URL = f"https://github.com/{GITHUB_PATH}"
 
-DOWNLOAD_URL = "{}/archive/{}.zip".format(GITHUB_URL, hass_const.__version__)
+DOWNLOAD_URL = f"{GITHUB_URL}/archive/{hass_const.__version__}.zip"
 PROJECT_URLS = {
-    "Bug Reports": "{}/issues".format(GITHUB_URL),
+    "Bug Reports": f"{GITHUB_URL}/issues",
     "Dev Docs": "https://developers.home-assistant.io/",
     "Discord": "https://discordapp.com/invite/c5DvZ4e",
     "Forum": "https://community.home-assistant.io/",
@@ -68,7 +68,7 @@ setup(
     include_package_data=True,
     zip_safe=False,
     install_requires=REQUIRES,
-    python_requires=">={}".format(MIN_PY_VERSION),
+    python_requires=f">={MIN_PY_VERSION}",
     test_suite="tests",
     entry_points={"console_scripts": ["hass = homeassistant.__main__:main"]},
 )
diff --git a/tests/components/withings/common.py b/tests/components/withings/common.py
index 8b7d4ba91a695ac3ab94c64e67976c4106a0977d..f57b2d9b0c8e5e34565fa36b9d87048e2dc1775a 100644
--- a/tests/components/withings/common.py
+++ b/tests/components/withings/common.py
@@ -86,27 +86,27 @@ async def configure_integration(
 
     with requests_mock.mock() as rqmck:
         rqmck.get(
-            re.compile(AbstractWithingsApi.URL + "/v2/user?.*action=getdevice(&.*|$)"),
+            re.compile(f"{AbstractWithingsApi.URL}/v2/user?.*action=getdevice(&.*|$)"),
             status_code=200,
             json=get_device_response,
         )
 
         rqmck.get(
-            re.compile(AbstractWithingsApi.URL + "/v2/sleep?.*action=get(&.*|$)"),
+            re.compile(f"{AbstractWithingsApi.URL}/v2/sleep?.*action=get(&.*|$)"),
             status_code=200,
             json=get_sleep_response,
         )
 
         rqmck.get(
             re.compile(
-                AbstractWithingsApi.URL + "/v2/sleep?.*action=getsummary(&.*|$)"
+                f"{AbstractWithingsApi.URL}/v2/sleep?.*action=getsummary(&.*|$)"
             ),
             status_code=200,
             json=get_sleep_summary_response,
         )
 
         rqmck.get(
-            re.compile(AbstractWithingsApi.URL + "/measure?.*action=getmeas(&.*|$)"),
+            re.compile(f"{AbstractWithingsApi.URL}/measure?.*action=getmeas(&.*|$)"),
             status_code=200,
             json=getmeasures_response,
         )