diff --git a/homeassistant/components/google_assistant/const.py b/homeassistant/components/google_assistant/const.py index c9f8d857b62..37fef6f2d79 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 2bc5f5040d4..ab045896235 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 10cbcf6b5c0..1bc4ae298c4 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 33b0efa5d60..3565fb303d5 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 cfbd112100a..0a653ea0e90 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 83d495e1bf2..5a6f0798c51 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 a32e07f4aac..28701f2b015 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 7e1b7eae727..377115f7ae4 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 89205d4ee8a..f53af0ee1f3 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 8b7d4ba91a6..f57b2d9b0c8 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, )