From 9b96bc32ebcc464f4bf14a7ec721f12ca38bf5cd Mon Sep 17 00:00:00 2001
From: epenet <6771947+epenet@users.noreply.github.com>
Date: Mon, 23 Sep 2024 21:03:29 +0200
Subject: [PATCH] Add derived Entity classes in hass-enforce-class-module
 pylint plugin (#126494)

---
 homeassistant/components/homekit/type_cameras.py | 2 ++
 homeassistant/components/roomba/braava.py        | 2 +-
 homeassistant/components/roomba/entity.py        | 2 +-
 homeassistant/components/roomba/roomba.py        | 4 ++--
 pylint/plugins/hass_enforce_class_module.py      | 8 ++++----
 5 files changed, 10 insertions(+), 8 deletions(-)

diff --git a/homeassistant/components/homekit/type_cameras.py b/homeassistant/components/homekit/type_cameras.py
index 13169c877a9..9e076f7d4d7 100644
--- a/homeassistant/components/homekit/type_cameras.py
+++ b/homeassistant/components/homekit/type_cameras.py
@@ -147,6 +147,8 @@ CONFIG_DEFAULTS = {
 
 
 @TYPES.register("Camera")
+# False-positive on pylint, not a CameraEntity
+# pylint: disable-next=hass-enforce-class-module
 class Camera(HomeAccessory, PyhapCamera):  # type: ignore[misc]
     """Generate a Camera accessory."""
 
diff --git a/homeassistant/components/roomba/braava.py b/homeassistant/components/roomba/braava.py
index 6a62a715a8a..8744561b2c5 100644
--- a/homeassistant/components/roomba/braava.py
+++ b/homeassistant/components/roomba/braava.py
@@ -27,7 +27,7 @@ BRAAVA_SPRAY_AMOUNT = [1, 2, 3]
 SUPPORT_BRAAVA = SUPPORT_IROBOT | VacuumEntityFeature.FAN_SPEED
 
 
-class BraavaJet(IRobotVacuum):
+class BraavaJet(IRobotVacuum):  # pylint: disable=hass-enforce-class-module
     """Braava Jet."""
 
     _attr_supported_features = SUPPORT_BRAAVA
diff --git a/homeassistant/components/roomba/entity.py b/homeassistant/components/roomba/entity.py
index 07d05a28b89..10c3d36de12 100644
--- a/homeassistant/components/roomba/entity.py
+++ b/homeassistant/components/roomba/entity.py
@@ -156,7 +156,7 @@ class IRobotEntity(Entity):
             self.schedule_update_ha_state()
 
 
-class IRobotVacuum(IRobotEntity, StateVacuumEntity):
+class IRobotVacuum(IRobotEntity, StateVacuumEntity):  # pylint: disable=hass-enforce-class-module
     """Base class for iRobot robots."""
 
     _attr_name = None
diff --git a/homeassistant/components/roomba/roomba.py b/homeassistant/components/roomba/roomba.py
index a26f1912831..917fbb2bfff 100644
--- a/homeassistant/components/roomba/roomba.py
+++ b/homeassistant/components/roomba/roomba.py
@@ -20,7 +20,7 @@ FAN_SPEEDS = [FAN_SPEED_AUTOMATIC, FAN_SPEED_ECO, FAN_SPEED_PERFORMANCE]
 SUPPORT_ROOMBA_CARPET_BOOST = SUPPORT_IROBOT | VacuumEntityFeature.FAN_SPEED
 
 
-class RoombaVacuum(IRobotVacuum):
+class RoombaVacuum(IRobotVacuum):  # pylint: disable=hass-enforce-class-module
     """Basic Roomba robot (without carpet boost)."""
 
     @property
@@ -40,7 +40,7 @@ class RoombaVacuum(IRobotVacuum):
         return state_attrs
 
 
-class RoombaVacuumCarpetBoost(RoombaVacuum):
+class RoombaVacuumCarpetBoost(RoombaVacuum):  # pylint: disable=hass-enforce-class-module
     """Roomba robot with carpet boost."""
 
     _attr_fan_speed_list = FAN_SPEEDS
diff --git a/pylint/plugins/hass_enforce_class_module.py b/pylint/plugins/hass_enforce_class_module.py
index 2b8a836dfb4..6491a702b7f 100644
--- a/pylint/plugins/hass_enforce_class_module.py
+++ b/pylint/plugins/hass_enforce_class_module.py
@@ -20,14 +20,14 @@ _MODULES: dict[str, set[str]] = {
     "binary_sensor": {"BinarySensorEntity", "BinarySensorEntityDescription"},
     "button": {"ButtonEntity", "ButtonEntityDescription"},
     "calendar": {"CalendarEntity"},
-    "camera": {"CameraEntity", "CameraEntityDescription"},
+    "camera": {"Camera", "CameraEntityDescription"},
     "climate": {"ClimateEntity", "ClimateEntityDescription"},
     "coordinator": {"DataUpdateCoordinator"},
     "conversation": {"ConversationEntity"},
     "cover": {"CoverEntity", "CoverEntityDescription"},
     "date": {"DateEntity", "DateEntityDescription"},
     "datetime": {"DateTimeEntity", "DateTimeEntityDescription"},
-    "device_tracker": {"DeviceTrackerEntity"},
+    "device_tracker": {"DeviceTrackerEntity", "ScannerEntity", "TrackerEntity"},
     "event": {"EventEntity", "EventEntityDescription"},
     "fan": {"FanEntity", "FanEntityDescription"},
     "geo_location": {"GeolocationEvent"},
@@ -54,8 +54,8 @@ _MODULES: dict[str, set[str]] = {
     "time": {"TimeEntity", "TimeEntityDescription"},
     "todo": {"TodoListEntity"},
     "tts": {"TextToSpeechEntity"},
-    "update": {"UpdateEntityDescription"},
-    "vacuum": {"VacuumEntity", "VacuumEntityDescription"},
+    "update": {"UpdateEntity", "UpdateEntityDescription"},
+    "vacuum": {"StateVacuumEntity", "VacuumEntity", "VacuumEntityDescription"},
     "wake_word": {"WakeWordDetectionEntity"},
     "water_heater": {"WaterHeaterEntity"},
     "weather": {
-- 
GitLab