Run pylint sorted platform check also when platform has type annotations (#111407)
This commit is contained in:
parent
e116d2a721
commit
1c5be598f5
11 changed files with 72 additions and 22 deletions
|
@ -12,11 +12,11 @@ from homeassistant.exceptions import ConfigEntryNotReady
|
||||||
from .const import DOMAIN
|
from .const import DOMAIN
|
||||||
|
|
||||||
PLATFORMS: list[Platform] = [
|
PLATFORMS: list[Platform] = [
|
||||||
Platform.SWITCH,
|
Platform.BINARY_SENSOR,
|
||||||
|
Platform.CLIMATE,
|
||||||
Platform.COVER,
|
Platform.COVER,
|
||||||
Platform.LIGHT,
|
Platform.LIGHT,
|
||||||
Platform.CLIMATE,
|
Platform.SWITCH,
|
||||||
Platform.BINARY_SENSOR,
|
|
||||||
]
|
]
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -18,7 +18,7 @@ from homeassistant.exceptions import ConfigEntryNotReady
|
||||||
from .const import DOMAIN
|
from .const import DOMAIN
|
||||||
from .coordinator import EcoforestCoordinator
|
from .coordinator import EcoforestCoordinator
|
||||||
|
|
||||||
PLATFORMS: list[Platform] = [Platform.SENSOR, Platform.NUMBER, Platform.SWITCH]
|
PLATFORMS: list[Platform] = [Platform.NUMBER, Platform.SENSOR, Platform.SWITCH]
|
||||||
|
|
||||||
_LOGGER = logging.getLogger(__name__)
|
_LOGGER = logging.getLogger(__name__)
|
||||||
|
|
||||||
|
|
|
@ -18,7 +18,7 @@ from .coordinator import (
|
||||||
ElectricKiwiHOPDataCoordinator,
|
ElectricKiwiHOPDataCoordinator,
|
||||||
)
|
)
|
||||||
|
|
||||||
PLATFORMS: list[Platform] = [Platform.SENSOR, Platform.SELECT]
|
PLATFORMS: list[Platform] = [Platform.SELECT, Platform.SENSOR]
|
||||||
|
|
||||||
|
|
||||||
async def async_setup_entry(hass: HomeAssistant, entry: ConfigEntry) -> bool:
|
async def async_setup_entry(hass: HomeAssistant, entry: ConfigEntry) -> bool:
|
||||||
|
|
|
@ -11,7 +11,7 @@ from homeassistant.helpers.discovery import async_load_platform
|
||||||
from homeassistant.helpers.typing import ConfigType
|
from homeassistant.helpers.typing import ConfigType
|
||||||
|
|
||||||
DOMAIN = "jewish_calendar"
|
DOMAIN = "jewish_calendar"
|
||||||
PLATFORMS: list[Platform] = [Platform.SENSOR, Platform.BINARY_SENSOR]
|
PLATFORMS: list[Platform] = [Platform.BINARY_SENSOR, Platform.SENSOR]
|
||||||
|
|
||||||
CONF_DIASPORA = "diaspora"
|
CONF_DIASPORA = "diaspora"
|
||||||
CONF_LANGUAGE = "language"
|
CONF_LANGUAGE = "language"
|
||||||
|
|
|
@ -29,7 +29,7 @@ from .const import (
|
||||||
SMART_METER_SCAN_INTERVAL,
|
SMART_METER_SCAN_INTERVAL,
|
||||||
)
|
)
|
||||||
|
|
||||||
PLATFORMS: Final = [Platform.SENSOR, Platform.BINARY_SENSOR]
|
PLATFORMS: Final = [Platform.BINARY_SENSOR, Platform.SENSOR]
|
||||||
|
|
||||||
|
|
||||||
@dataclass
|
@dataclass
|
||||||
|
|
|
@ -18,7 +18,7 @@ from .config_flow import CONF_SITE, create_omada_client
|
||||||
from .const import DOMAIN
|
from .const import DOMAIN
|
||||||
from .controller import OmadaSiteController
|
from .controller import OmadaSiteController
|
||||||
|
|
||||||
PLATFORMS: list[Platform] = [Platform.SWITCH, Platform.UPDATE, Platform.BINARY_SENSOR]
|
PLATFORMS: list[Platform] = [Platform.BINARY_SENSOR, Platform.SWITCH, Platform.UPDATE]
|
||||||
|
|
||||||
|
|
||||||
async def async_setup_entry(hass: HomeAssistant, entry: ConfigEntry) -> bool:
|
async def async_setup_entry(hass: HomeAssistant, entry: ConfigEntry) -> bool:
|
||||||
|
|
|
@ -13,9 +13,9 @@ from .coordinator import V2CUpdateCoordinator
|
||||||
|
|
||||||
PLATFORMS: list[Platform] = [
|
PLATFORMS: list[Platform] = [
|
||||||
Platform.BINARY_SENSOR,
|
Platform.BINARY_SENSOR,
|
||||||
|
Platform.NUMBER,
|
||||||
Platform.SENSOR,
|
Platform.SENSOR,
|
||||||
Platform.SWITCH,
|
Platform.SWITCH,
|
||||||
Platform.NUMBER,
|
|
||||||
]
|
]
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -46,10 +46,10 @@ CONFIG_SCHEMA = vol.Schema(
|
||||||
)
|
)
|
||||||
|
|
||||||
PLATFORMS: list[str] = [
|
PLATFORMS: list[str] = [
|
||||||
Platform.SENSOR,
|
|
||||||
Platform.FAN,
|
|
||||||
Platform.BINARY_SENSOR,
|
Platform.BINARY_SENSOR,
|
||||||
|
Platform.FAN,
|
||||||
Platform.NUMBER,
|
Platform.NUMBER,
|
||||||
|
Platform.SENSOR,
|
||||||
Platform.SWITCH,
|
Platform.SWITCH,
|
||||||
]
|
]
|
||||||
|
|
||||||
|
|
|
@ -23,7 +23,7 @@ from .const import (
|
||||||
)
|
)
|
||||||
from .coordinator import WeatherKitDataUpdateCoordinator
|
from .coordinator import WeatherKitDataUpdateCoordinator
|
||||||
|
|
||||||
PLATFORMS: list[Platform] = [Platform.WEATHER, Platform.SENSOR]
|
PLATFORMS: list[Platform] = [Platform.SENSOR, Platform.WEATHER]
|
||||||
|
|
||||||
|
|
||||||
async def async_setup_entry(hass: HomeAssistant, entry: ConfigEntry) -> bool:
|
async def async_setup_entry(hass: HomeAssistant, entry: ConfigEntry) -> bool:
|
||||||
|
|
|
@ -20,9 +20,19 @@ class HassEnforceSortedPlatformsChecker(BaseChecker):
|
||||||
}
|
}
|
||||||
options = ()
|
options = ()
|
||||||
|
|
||||||
|
def visit_annassign(self, node: nodes.AnnAssign) -> None:
|
||||||
|
"""Check for sorted PLATFORMS const with type annotations."""
|
||||||
|
self._do_sorted_check(node.target, node)
|
||||||
|
|
||||||
def visit_assign(self, node: nodes.Assign) -> None:
|
def visit_assign(self, node: nodes.Assign) -> None:
|
||||||
"""Check for sorted PLATFORMS const."""
|
"""Check for sorted PLATFORMS const without type annotations."""
|
||||||
for target in node.targets:
|
for target in node.targets:
|
||||||
|
self._do_sorted_check(target, node)
|
||||||
|
|
||||||
|
def _do_sorted_check(
|
||||||
|
self, target: nodes.NodeNG, node: nodes.Assign | nodes.AnnAssign
|
||||||
|
) -> None:
|
||||||
|
"""Check for sorted PLATFORMS const."""
|
||||||
if (
|
if (
|
||||||
isinstance(target, nodes.AssignName)
|
isinstance(target, nodes.AssignName)
|
||||||
and target.name == "PLATFORMS"
|
and target.name == "PLATFORMS"
|
||||||
|
|
|
@ -27,6 +27,18 @@ from . import assert_adds_messages, assert_no_messages
|
||||||
""",
|
""",
|
||||||
id="multiple_platforms",
|
id="multiple_platforms",
|
||||||
),
|
),
|
||||||
|
pytest.param(
|
||||||
|
"""
|
||||||
|
PLATFORMS: list[str] = [Platform.SENSOR]
|
||||||
|
""",
|
||||||
|
id="typed_on_platform",
|
||||||
|
),
|
||||||
|
pytest.param(
|
||||||
|
"""
|
||||||
|
PLATFORMS: list[str] = [Platform.BINARY_SENSOR, Platform.BUTTON, Platform.SENSOR]
|
||||||
|
""",
|
||||||
|
id="typed_multiple_platform",
|
||||||
|
),
|
||||||
],
|
],
|
||||||
)
|
)
|
||||||
def test_enforce_sorted_platforms(
|
def test_enforce_sorted_platforms(
|
||||||
|
@ -69,3 +81,31 @@ def test_enforce_sorted_platforms_bad(
|
||||||
),
|
),
|
||||||
):
|
):
|
||||||
enforce_sorted_platforms_checker.visit_assign(assign_node)
|
enforce_sorted_platforms_checker.visit_assign(assign_node)
|
||||||
|
|
||||||
|
|
||||||
|
def test_enforce_sorted_platforms_bad_typed(
|
||||||
|
linter: UnittestLinter,
|
||||||
|
enforce_sorted_platforms_checker: BaseChecker,
|
||||||
|
) -> None:
|
||||||
|
"""Bad typed test case."""
|
||||||
|
assign_node = astroid.extract_node(
|
||||||
|
"""
|
||||||
|
PLATFORMS: list[str] = [Platform.SENSOR, Platform.BINARY_SENSOR, Platform.BUTTON]
|
||||||
|
""",
|
||||||
|
"homeassistant.components.pylint_test",
|
||||||
|
)
|
||||||
|
|
||||||
|
with assert_adds_messages(
|
||||||
|
linter,
|
||||||
|
MessageTest(
|
||||||
|
msg_id="hass-enforce-sorted-platforms",
|
||||||
|
line=2,
|
||||||
|
node=assign_node,
|
||||||
|
args=None,
|
||||||
|
confidence=UNDEFINED,
|
||||||
|
col_offset=0,
|
||||||
|
end_line=2,
|
||||||
|
end_col_offset=81,
|
||||||
|
),
|
||||||
|
):
|
||||||
|
enforce_sorted_platforms_checker.visit_annassign(assign_node)
|
||||||
|
|
Loading…
Add table
Reference in a new issue