diff --git a/script/gen_requirements_all.py b/script/gen_requirements_all.py index 9bbe7d379ec..c18b51ba5d1 100755 --- a/script/gen_requirements_all.py +++ b/script/gen_requirements_all.py @@ -8,10 +8,10 @@ import pkgutil import re import sys -from homeassistant.util.yaml.loader import load_yaml - from script.hassfest.model import Integration +from homeassistant.util.yaml.loader import load_yaml + COMMENT_REQUIREMENTS = ( "Adafruit_BBIO", "Adafruit-DHT", diff --git a/script/hassfest/__main__.py b/script/hassfest/__main__.py index a1168b15f7d..78b46b8db57 100644 --- a/script/hassfest/__main__.py +++ b/script/hassfest/__main__.py @@ -2,8 +2,8 @@ import pathlib import sys -from .model import Integration, Config from . import codeowners, config_flow, dependencies, manifest, services, ssdp, zeroconf +from .model import Config, Integration PLUGINS = [codeowners, config_flow, dependencies, manifest, services, ssdp, zeroconf] diff --git a/script/hassfest/codeowners.py b/script/hassfest/codeowners.py index 6f63fab3fdb..f6970b50a3c 100644 --- a/script/hassfest/codeowners.py +++ b/script/hassfest/codeowners.py @@ -1,7 +1,7 @@ """Generate CODEOWNERS.""" from typing import Dict -from .model import Integration, Config +from .model import Config, Integration BASE = """ # This file is generated by script/hassfest/codeowners.py diff --git a/script/hassfest/config_flow.py b/script/hassfest/config_flow.py index 4384399f4db..83d495e1bf2 100644 --- a/script/hassfest/config_flow.py +++ b/script/hassfest/config_flow.py @@ -2,7 +2,7 @@ import json from typing import Dict -from .model import Integration, Config +from .model import Config, Integration BASE = """ \"\"\"Automatically generated by hassfest. diff --git a/script/hassfest/dependencies.py b/script/hassfest/dependencies.py index 42a31f20610..71936411b75 100644 --- a/script/hassfest/dependencies.py +++ b/script/hassfest/dependencies.py @@ -1,7 +1,7 @@ """Validate dependencies.""" import pathlib import re -from typing import Set, Dict +from typing import Dict, Set from .model import Integration diff --git a/script/hassfest/manifest.py b/script/hassfest/manifest.py index 16f8b77b5d3..acc5e9af832 100644 --- a/script/hassfest/manifest.py +++ b/script/hassfest/manifest.py @@ -6,7 +6,6 @@ from voluptuous.humanize import humanize_error from .model import Integration - MANIFEST_SCHEMA = vol.Schema( { vol.Required("domain"): str, diff --git a/script/hassfest/manifest_helper.py b/script/hassfest/manifest_helper.py index 251a2939807..0c2a1456ec6 100644 --- a/script/hassfest/manifest_helper.py +++ b/script/hassfest/manifest_helper.py @@ -2,7 +2,6 @@ import json import pathlib - component_dir = pathlib.Path("homeassistant/components") diff --git a/script/hassfest/model.py b/script/hassfest/model.py index 77683d65961..faa1c26262c 100644 --- a/script/hassfest/model.py +++ b/script/hassfest/model.py @@ -1,8 +1,8 @@ """Models for manifest validator.""" -import json -from typing import List, Dict, Any -import pathlib import importlib +import json +import pathlib +from typing import Any, Dict, List import attr diff --git a/script/hassfest/services.py b/script/hassfest/services.py index 801ee10e43a..08cde60f5b5 100644 --- a/script/hassfest/services.py +++ b/script/hassfest/services.py @@ -1,8 +1,8 @@ """Validate dependencies.""" import pathlib +import re from typing import Dict -import re import voluptuous as vol from voluptuous.humanize import humanize_error diff --git a/script/hassfest/ssdp.py b/script/hassfest/ssdp.py index d2dd724605e..7578d52ed4f 100644 --- a/script/hassfest/ssdp.py +++ b/script/hassfest/ssdp.py @@ -3,7 +3,7 @@ from collections import OrderedDict, defaultdict import json from typing import Dict -from .model import Integration, Config +from .model import Config, Integration BASE = """ \"\"\"Automatically generated by hassfest. diff --git a/script/hassfest/zeroconf.py b/script/hassfest/zeroconf.py index 3d93d363086..f864d3e0327 100644 --- a/script/hassfest/zeroconf.py +++ b/script/hassfest/zeroconf.py @@ -3,7 +3,7 @@ from collections import OrderedDict, defaultdict import json from typing import Dict -from .model import Integration, Config +from .model import Config, Integration BASE = """ \"\"\"Automatically generated by hassfest. diff --git a/script/inspect_schemas.py b/script/inspect_schemas.py index e46165bfaa2..4f305a4fb9c 100755 --- a/script/inspect_schemas.py +++ b/script/inspect_schemas.py @@ -1,7 +1,7 @@ #!/usr/bin/env python3 """Inspect all component SCHEMAS.""" -import os import importlib +import os import pkgutil from homeassistant.config import _identify_config_schema diff --git a/script/lazytox.py b/script/lazytox.py index ca8a160e7dc..d1b09618998 100755 --- a/script/lazytox.py +++ b/script/lazytox.py @@ -4,12 +4,12 @@ Lazy 'tox' to quickly check if branch is up to PR standards. This is NOT a tox replacement, only a quick check during development. """ -import os import asyncio -import sys +from collections import namedtuple +import os import re import shlex -from collections import namedtuple +import sys try: from colorlog.escape_codes import escape_codes diff --git a/script/scaffold/__main__.py b/script/scaffold/__main__.py index 78490b84ba3..94ac009fd9c 100644 --- a/script/scaffold/__main__.py +++ b/script/scaffold/__main__.py @@ -4,10 +4,9 @@ from pathlib import Path import subprocess import sys -from . import gather_info, generate, error, docs +from . import docs, error, gather_info, generate from .const import COMPONENT_DIR - TEMPLATES = [ p.name for p in (Path(__file__).parent / "templates").glob("*") if p.is_dir() ] diff --git a/script/scaffold/docs.py b/script/scaffold/docs.py index 5df663fec0b..8186b857e80 100644 --- a/script/scaffold/docs.py +++ b/script/scaffold/docs.py @@ -1,7 +1,6 @@ """Print links to relevant docs.""" from .model import Info - DATA = { "config_flow": { "title": "Config Flow", diff --git a/script/scaffold/gather_info.py b/script/scaffold/gather_info.py index 6a69040a6d7..48d0a20ea73 100644 --- a/script/scaffold/gather_info.py +++ b/script/scaffold/gather_info.py @@ -4,9 +4,8 @@ import json from homeassistant.util import slugify from .const import COMPONENT_DIR -from .model import Info from .error import ExitApp - +from .model import Info CHECK_EMPTY = ["Cannot be empty", lambda value: value] diff --git a/script/scaffold/templates/config_flow/integration/__init__.py b/script/scaffold/templates/config_flow/integration/__init__.py index 04b908952d1..4a206981c3c 100644 --- a/script/scaffold/templates/config_flow/integration/__init__.py +++ b/script/scaffold/templates/config_flow/integration/__init__.py @@ -3,8 +3,8 @@ import asyncio import voluptuous as vol -from homeassistant.core import HomeAssistant from homeassistant.config_entries import ConfigEntry +from homeassistant.core import HomeAssistant from .const import DOMAIN diff --git a/script/scaffold/templates/config_flow/integration/config_flow.py b/script/scaffold/templates/config_flow/integration/config_flow.py index e08851f47a0..e2452b5324d 100644 --- a/script/scaffold/templates/config_flow/integration/config_flow.py +++ b/script/scaffold/templates/config_flow/integration/config_flow.py @@ -3,7 +3,7 @@ import logging import voluptuous as vol -from homeassistant import core, config_entries, exceptions +from homeassistant import config_entries, core, exceptions from .const import DOMAIN # pylint:disable=unused-import diff --git a/script/scaffold/templates/config_flow/tests/test_config_flow.py b/script/scaffold/templates/config_flow/tests/test_config_flow.py index 35d8a96ab2b..b68adc897bb 100644 --- a/script/scaffold/templates/config_flow/tests/test_config_flow.py +++ b/script/scaffold/templates/config_flow/tests/test_config_flow.py @@ -2,8 +2,8 @@ from unittest.mock import patch from homeassistant import config_entries, setup -from homeassistant.components.NEW_DOMAIN.const import DOMAIN from homeassistant.components.NEW_DOMAIN.config_flow import CannotConnect, InvalidAuth +from homeassistant.components.NEW_DOMAIN.const import DOMAIN from tests.common import mock_coro diff --git a/script/scaffold/templates/config_flow_discovery/integration/__init__.py b/script/scaffold/templates/config_flow_discovery/integration/__init__.py index 04b908952d1..4a206981c3c 100644 --- a/script/scaffold/templates/config_flow_discovery/integration/__init__.py +++ b/script/scaffold/templates/config_flow_discovery/integration/__init__.py @@ -3,8 +3,8 @@ import asyncio import voluptuous as vol -from homeassistant.core import HomeAssistant from homeassistant.config_entries import ConfigEntry +from homeassistant.core import HomeAssistant from .const import DOMAIN diff --git a/script/scaffold/templates/config_flow_discovery/integration/config_flow.py b/script/scaffold/templates/config_flow_discovery/integration/config_flow.py index 16d13aaa99f..db5f719ce3d 100644 --- a/script/scaffold/templates/config_flow_discovery/integration/config_flow.py +++ b/script/scaffold/templates/config_flow_discovery/integration/config_flow.py @@ -1,8 +1,9 @@ """Config flow for NEW_NAME.""" import my_pypi_dependency -from homeassistant.helpers import config_entry_flow from homeassistant import config_entries +from homeassistant.helpers import config_entry_flow + from .const import DOMAIN diff --git a/script/scaffold/templates/config_flow_oauth2/integration/__init__.py b/script/scaffold/templates/config_flow_oauth2/integration/__init__.py index 30e7ad97810..d561f284caf 100644 --- a/script/scaffold/templates/config_flow_oauth2/integration/__init__.py +++ b/script/scaffold/templates/config_flow_oauth2/integration/__init__.py @@ -3,17 +3,17 @@ import asyncio import voluptuous as vol -from homeassistant.core import HomeAssistant -from homeassistant.const import CONF_CLIENT_ID, CONF_CLIENT_SECRET -from homeassistant.helpers import ( - config_validation as cv, - config_entry_oauth2_flow, - aiohttp_client, -) from homeassistant.config_entries import ConfigEntry +from homeassistant.const import CONF_CLIENT_ID, CONF_CLIENT_SECRET +from homeassistant.core import HomeAssistant +from homeassistant.helpers import ( + aiohttp_client, + config_entry_oauth2_flow, + config_validation as cv, +) -from .const import DOMAIN, OAUTH2_AUTHORIZE, OAUTH2_TOKEN from . import api, config_flow +from .const import DOMAIN, OAUTH2_AUTHORIZE, OAUTH2_TOKEN CONFIG_SCHEMA = vol.Schema( { diff --git a/script/scaffold/templates/config_flow_oauth2/integration/api.py b/script/scaffold/templates/config_flow_oauth2/integration/api.py index c5aa4a81ebe..f1a1f6a7ec4 100644 --- a/script/scaffold/templates/config_flow_oauth2/integration/api.py +++ b/script/scaffold/templates/config_flow_oauth2/integration/api.py @@ -4,7 +4,7 @@ from asyncio import run_coroutine_threadsafe from aiohttp import ClientSession import my_pypi_package -from homeassistant import core, config_entries +from homeassistant import config_entries, core from homeassistant.helpers import config_entry_oauth2_flow # TODO the following two API examples are based on our suggested best practices diff --git a/script/scaffold/templates/config_flow_oauth2/integration/config_flow.py b/script/scaffold/templates/config_flow_oauth2/integration/config_flow.py index 1112a404e60..2343e1d79f8 100644 --- a/script/scaffold/templates/config_flow_oauth2/integration/config_flow.py +++ b/script/scaffold/templates/config_flow_oauth2/integration/config_flow.py @@ -3,6 +3,7 @@ import logging from homeassistant import config_entries from homeassistant.helpers import config_entry_oauth2_flow + from .const import DOMAIN _LOGGER = logging.getLogger(__name__) diff --git a/script/scaffold/templates/config_flow_oauth2/tests/test_config_flow.py b/script/scaffold/templates/config_flow_oauth2/tests/test_config_flow.py index 7e61bcbfb1b..50540594a34 100644 --- a/script/scaffold/templates/config_flow_oauth2/tests/test_config_flow.py +++ b/script/scaffold/templates/config_flow_oauth2/tests/test_config_flow.py @@ -1,5 +1,5 @@ """Test the NEW_NAME config flow.""" -from homeassistant import config_entries, setup, data_entry_flow +from homeassistant import config_entries, data_entry_flow, setup from homeassistant.components.NEW_DOMAIN.const import ( DOMAIN, OAUTH2_AUTHORIZE, diff --git a/script/scaffold/templates/device_action/integration/device_action.py b/script/scaffold/templates/device_action/integration/device_action.py index d5674f01b2d..3861ee8ebe9 100644 --- a/script/scaffold/templates/device_action/integration/device_action.py +++ b/script/scaffold/templates/device_action/integration/device_action.py @@ -1,19 +1,21 @@ """Provides device automations for NEW_NAME.""" -from typing import Optional, List +from typing import List, Optional + import voluptuous as vol from homeassistant.const import ( ATTR_ENTITY_ID, - CONF_DOMAIN, - CONF_TYPE, CONF_DEVICE_ID, + CONF_DOMAIN, CONF_ENTITY_ID, - SERVICE_TURN_ON, + CONF_TYPE, SERVICE_TURN_OFF, + SERVICE_TURN_ON, ) -from homeassistant.core import HomeAssistant, Context +from homeassistant.core import Context, HomeAssistant from homeassistant.helpers import entity_registry import homeassistant.helpers.config_validation as cv + from . import DOMAIN # TODO specify your supported action types. diff --git a/script/scaffold/templates/device_action/tests/test_device_action.py b/script/scaffold/templates/device_action/tests/test_device_action.py index b65c8257531..3c7c7bb71a4 100644 --- a/script/scaffold/templates/device_action/tests/test_device_action.py +++ b/script/scaffold/templates/device_action/tests/test_device_action.py @@ -2,17 +2,17 @@ import pytest from homeassistant.components.NEW_DOMAIN import DOMAIN -from homeassistant.setup import async_setup_component import homeassistant.components.automation as automation from homeassistant.helpers import device_registry +from homeassistant.setup import async_setup_component from tests.common import ( MockConfigEntry, assert_lists_same, + async_get_device_automations, async_mock_service, mock_device_registry, mock_registry, - async_get_device_automations, ) diff --git a/script/scaffold/templates/device_condition/integration/device_condition.py b/script/scaffold/templates/device_condition/integration/device_condition.py index 4b7baf68a37..1414636474d 100644 --- a/script/scaffold/templates/device_condition/integration/device_condition.py +++ b/script/scaffold/templates/device_condition/integration/device_condition.py @@ -1,21 +1,23 @@ """Provide the device automations for NEW_NAME.""" from typing import Dict, List + import voluptuous as vol from homeassistant.const import ( ATTR_ENTITY_ID, CONF_CONDITION, - CONF_DOMAIN, - CONF_TYPE, CONF_DEVICE_ID, + CONF_DOMAIN, CONF_ENTITY_ID, + CONF_TYPE, STATE_OFF, STATE_ON, ) from homeassistant.core import HomeAssistant from homeassistant.helpers import condition, config_validation as cv, entity_registry -from homeassistant.helpers.typing import ConfigType, TemplateVarsType from homeassistant.helpers.config_validation import DEVICE_CONDITION_BASE_SCHEMA +from homeassistant.helpers.typing import ConfigType, TemplateVarsType + from . import DOMAIN # TODO specify your supported condition types. diff --git a/script/scaffold/templates/device_condition/tests/test_device_condition.py b/script/scaffold/templates/device_condition/tests/test_device_condition.py index 1ae4df5f1b7..d58957030dc 100644 --- a/script/scaffold/templates/device_condition/tests/test_device_condition.py +++ b/script/scaffold/templates/device_condition/tests/test_device_condition.py @@ -2,18 +2,18 @@ import pytest from homeassistant.components.NEW_DOMAIN import DOMAIN -from homeassistant.const import STATE_ON, STATE_OFF -from homeassistant.setup import async_setup_component import homeassistant.components.automation as automation +from homeassistant.const import STATE_OFF, STATE_ON from homeassistant.helpers import device_registry +from homeassistant.setup import async_setup_component from tests.common import ( MockConfigEntry, assert_lists_same, + async_get_device_automations, async_mock_service, mock_device_registry, mock_registry, - async_get_device_automations, ) diff --git a/script/scaffold/templates/device_trigger/integration/device_trigger.py b/script/scaffold/templates/device_trigger/integration/device_trigger.py index e0741734d5f..a4f918684dc 100644 --- a/script/scaffold/templates/device_trigger/integration/device_trigger.py +++ b/script/scaffold/templates/device_trigger/integration/device_trigger.py @@ -1,21 +1,23 @@ """Provides device automations for NEW_NAME.""" from typing import List + import voluptuous as vol +from homeassistant.components.automation import AutomationActionType, state +from homeassistant.components.device_automation import TRIGGER_BASE_SCHEMA from homeassistant.const import ( - CONF_DOMAIN, - CONF_TYPE, - CONF_PLATFORM, CONF_DEVICE_ID, + CONF_DOMAIN, CONF_ENTITY_ID, - STATE_ON, + CONF_PLATFORM, + CONF_TYPE, STATE_OFF, + STATE_ON, ) -from homeassistant.core import HomeAssistant, CALLBACK_TYPE +from homeassistant.core import CALLBACK_TYPE, HomeAssistant from homeassistant.helpers import config_validation as cv, entity_registry from homeassistant.helpers.typing import ConfigType -from homeassistant.components.automation import state, AutomationActionType -from homeassistant.components.device_automation import TRIGGER_BASE_SCHEMA + from . import DOMAIN # TODO specify your supported trigger types. diff --git a/script/scaffold/templates/device_trigger/tests/test_device_trigger.py b/script/scaffold/templates/device_trigger/tests/test_device_trigger.py index 99e1f8937af..0ea584f474d 100644 --- a/script/scaffold/templates/device_trigger/tests/test_device_trigger.py +++ b/script/scaffold/templates/device_trigger/tests/test_device_trigger.py @@ -2,18 +2,18 @@ import pytest from homeassistant.components.NEW_DOMAIN import DOMAIN -from homeassistant.const import STATE_ON, STATE_OFF -from homeassistant.setup import async_setup_component import homeassistant.components.automation as automation +from homeassistant.const import STATE_OFF, STATE_ON from homeassistant.helpers import device_registry +from homeassistant.setup import async_setup_component from tests.common import ( MockConfigEntry, assert_lists_same, + async_get_device_automations, async_mock_service, mock_device_registry, mock_registry, - async_get_device_automations, ) diff --git a/script/scaffold/templates/integration/integration/__init__.py b/script/scaffold/templates/integration/integration/__init__.py index c2ae59aaad4..0ab65cb7da8 100644 --- a/script/scaffold/templates/integration/integration/__init__.py +++ b/script/scaffold/templates/integration/integration/__init__.py @@ -5,7 +5,6 @@ from homeassistant.core import HomeAssistant from .const import DOMAIN - CONFIG_SCHEMA = vol.Schema({vol.Optional(DOMAIN): {}}, extra=vol.ALLOW_EXTRA) diff --git a/script/scaffold/templates/reproduce_state/integration/reproduce_state.py b/script/scaffold/templates/reproduce_state/integration/reproduce_state.py index 3449009818b..871142a5b00 100644 --- a/script/scaffold/templates/reproduce_state/integration/reproduce_state.py +++ b/script/scaffold/templates/reproduce_state/integration/reproduce_state.py @@ -5,10 +5,10 @@ from typing import Iterable, Optional from homeassistant.const import ( ATTR_ENTITY_ID, - STATE_ON, - STATE_OFF, SERVICE_TURN_OFF, SERVICE_TURN_ON, + STATE_OFF, + STATE_ON, ) from homeassistant.core import Context, State from homeassistant.helpers.typing import HomeAssistantType diff --git a/script/translations_download_split.py b/script/translations_download_split.py index 375a9490e4e..86944ec9f90 100755 --- a/script/translations_download_split.py +++ b/script/translations_download_split.py @@ -4,7 +4,7 @@ import glob import json import os import re -from typing import Union, List, Dict +from typing import Dict, List, Union FILENAME_FORMAT = re.compile(r"strings\.(?P\w+)\.json") diff --git a/script/translations_upload_merge.py b/script/translations_upload_merge.py index c44727f690f..86de1f1842b 100755 --- a/script/translations_upload_merge.py +++ b/script/translations_upload_merge.py @@ -5,7 +5,7 @@ import itertools import json import os import re -from typing import Union, List, Dict +from typing import Dict, List, Union FILENAME_FORMAT = re.compile(r"strings\.(?P\w+)\.json") diff --git a/script/version_bump.py b/script/version_bump.py index de6638df30b..13dfe499f5e 100755 --- a/script/version_bump.py +++ b/script/version_bump.py @@ -1,9 +1,9 @@ #!/usr/bin/env python3 """Helper script to bump the current version.""" import argparse +from datetime import datetime import re import subprocess -from datetime import datetime from packaging.version import Version