Improve lists in integrations [C-D] (#113072)

This commit is contained in:
Joost Lekkerkerker 2024-03-11 18:58:35 +01:00 committed by GitHub
parent 4d77bec681
commit c75342bd9a
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
32 changed files with 276 additions and 311 deletions

View File

@ -64,22 +64,22 @@ async def async_setup_entry(
ffmpeg_arguments: str = entry.options.get( ffmpeg_arguments: str = entry.options.get(
CONF_FFMPEG_ARGUMENTS, DEFAULT_FFMPEG_ARGUMENTS CONF_FFMPEG_ARGUMENTS, DEFAULT_FFMPEG_ARGUMENTS
) )
cameras: list[CanaryCamera] = []
for location_id, location in coordinator.data["locations"].items(): async_add_entities(
for device in location.devices: (
if device.is_online: CanaryCamera(
cameras.append( hass,
CanaryCamera( coordinator,
hass, location_id,
coordinator, device,
location_id, ffmpeg_arguments,
device, )
ffmpeg_arguments, for location_id, location in coordinator.data["locations"].items()
) for device in location.devices
) if device.is_online
),
async_add_entities(cameras, True) True,
)
class CanaryCamera(CoordinatorEntity[CanaryDataUpdateCoordinator], Camera): class CanaryCamera(CoordinatorEntity[CanaryDataUpdateCoordinator], Camera):

View File

@ -75,11 +75,11 @@ async def async_setup_entry(
for device in location.devices: for device in location.devices:
if device.is_online: if device.is_online:
device_type = device.device_type device_type = device.device_type
for sensor_type in SENSOR_TYPES: sensors.extend(
if device_type.get("name") in sensor_type[4]: CanarySensor(coordinator, sensor_type, location, device)
sensors.append( for sensor_type in SENSOR_TYPES
CanarySensor(coordinator, sensor_type, location, device) if device_type.get("name") in sensor_type[4]
) )
async_add_entities(sensors, True) async_add_entities(sensors, True)

View File

@ -649,16 +649,14 @@ async def google_assistant_list(
gconf = await cloud.client.get_google_config() gconf = await cloud.client.get_google_config()
entities = google_helpers.async_get_entities(hass, gconf) entities = google_helpers.async_get_entities(hass, gconf)
result = [] result = [
{
for entity in entities: "entity_id": entity.entity_id,
result.append( "traits": [trait.name for trait in entity.traits()],
{ "might_2fa": entity.might_2fa_traits(),
"entity_id": entity.entity_id, }
"traits": [trait.name for trait in entity.traits()], for entity in entities
"might_2fa": entity.might_2fa_traits(), ]
}
)
connection.send_result(msg["id"], result) connection.send_result(msg["id"], result)
@ -743,16 +741,14 @@ async def alexa_list(
alexa_config = await cloud.client.get_alexa_config() alexa_config = await cloud.client.get_alexa_config()
entities = alexa_entities.async_get_entities(hass, alexa_config) entities = alexa_entities.async_get_entities(hass, alexa_config)
result = [] result = [
{
for entity in entities: "entity_id": entity.entity_id,
result.append( "display_categories": entity.default_display_categories(),
{ "interfaces": [ifc.name() for ifc in entity.interfaces()],
"entity_id": entity.entity_id, }
"display_categories": entity.default_display_categories(), for entity in entities
"interfaces": [ifc.name() for ifc in entity.interfaces()], ]
}
)
connection.send_result(msg["id"], result) connection.send_result(msg["id"], result)

View File

@ -85,13 +85,12 @@ async def async_setup_entry(
entities.append(AccountSensor(instance, currency)) entities.append(AccountSensor(instance, currency))
if CONF_EXCHANGE_RATES in config_entry.options: if CONF_EXCHANGE_RATES in config_entry.options:
rate: str entities.extend(
for rate in config_entry.options[CONF_EXCHANGE_RATES]: ExchangeRateSensor(
entities.append( instance, rate, exchange_base_currency, exchange_precision
ExchangeRateSensor(
instance, rate, exchange_base_currency, exchange_precision
)
) )
for rate in config_entry.options[CONF_EXCHANGE_RATES]
)
async_add_entities(entities) async_add_entities(entities)

View File

@ -138,11 +138,11 @@ async def async_unload_entry(hass: HomeAssistant, entry: ConfigEntry) -> bool:
async def get_items_of_category(hass: HomeAssistant, entry: ConfigEntry, category: str): async def get_items_of_category(hass: HomeAssistant, entry: ConfigEntry, category: str):
"""Return a list of all Control4 items with the specified category.""" """Return a list of all Control4 items with the specified category."""
director_all_items = hass.data[DOMAIN][entry.entry_id][CONF_DIRECTOR_ALL_ITEMS] director_all_items = hass.data[DOMAIN][entry.entry_id][CONF_DIRECTOR_ALL_ITEMS]
return_list = [] return [
for item in director_all_items: item
if "categories" in item and category in item["categories"]: for item in director_all_items
return_list.append(item) if "categories" in item and category in item["categories"]
return return_list ]
class Control4Entity(CoordinatorEntity): class Control4Entity(CoordinatorEntity):

View File

@ -24,17 +24,18 @@ def list_ports_as_str(
if no_usb_option: if no_usb_option:
ports_as_string.append(DONT_USE_USB) ports_as_string.append(DONT_USE_USB)
for port in serial_ports: ports_as_string.extend(
ports_as_string.append( usb.human_readable_device_name(
usb.human_readable_device_name( port.device,
port.device, port.serial_number,
port.serial_number, port.manufacturer,
port.manufacturer, port.description,
port.description, f"{hex(port.vid)[2:]:0>4}".upper() if port.vid else None,
f"{hex(port.vid)[2:]:0>4}".upper() if port.vid else None, f"{hex(port.pid)[2:]:0>4}".upper() if port.pid else None,
f"{hex(port.pid)[2:]:0>4}".upper() if port.pid else None,
)
) )
for port in serial_ports
)
ports_as_string.append(MANUAL_PATH) ports_as_string.append(MANUAL_PATH)
ports_as_string.append(REFRESH_LIST) ports_as_string.append(REFRESH_LIST)

View File

@ -85,8 +85,10 @@ def setup_platform(
dev.append(CupsSensor(data, printer)) dev.append(CupsSensor(data, printer))
if "marker-names" in data.attributes[printer]: if "marker-names" in data.attributes[printer]:
for marker in data.attributes[printer]["marker-names"]: dev.extend(
dev.append(MarkerSensor(data, printer, marker, True)) MarkerSensor(data, printer, marker, True)
for marker in data.attributes[printer]["marker-names"]
)
add_entities(dev, True) add_entities(dev, True)
return return

View File

@ -48,12 +48,12 @@ def setup_platform(
rest = CurrencylayerData(_RESOURCE, parameters) rest = CurrencylayerData(_RESOURCE, parameters)
response = requests.get(_RESOURCE, params=parameters, timeout=10) response = requests.get(_RESOURCE, params=parameters, timeout=10)
sensors = []
for variable in config[CONF_QUOTE]:
sensors.append(CurrencylayerSensor(rest, base, variable))
if "error" in response.json(): if "error" in response.json():
return return
add_entities(sensors, True) add_entities(
(CurrencylayerSensor(rest, base, variable) for variable in config[CONF_QUOTE]),
True,
)
class CurrencylayerSensor(SensorEntity): class CurrencylayerSensor(SensorEntity):

View File

@ -33,12 +33,13 @@ def setup_platform(
["Danfoss Air Away Mode Active", ReadCommand.away_mode, None], ["Danfoss Air Away Mode Active", ReadCommand.away_mode, None],
] ]
dev = [] add_entities(
(
for sensor in sensors: DanfossAirBinarySensor(data, sensor[0], sensor[1], sensor[2])
dev.append(DanfossAirBinarySensor(data, sensor[0], sensor[1], sensor[2])) for sensor in sensors
),
add_entities(dev, True) True,
)
class DanfossAirBinarySensor(BinarySensorEntity): class DanfossAirBinarySensor(BinarySensorEntity):

View File

@ -97,14 +97,13 @@ def setup_platform(
], ],
] ]
dev = [] add_entities(
(
for sensor in sensors:
dev.append(
DanfossAir(data, sensor[0], sensor[1], sensor[2], sensor[3], sensor[4]) DanfossAir(data, sensor[0], sensor[1], sensor[2], sensor[3], sensor[4])
) for sensor in sensors
),
add_entities(dev, True) True,
)
class DanfossAir(SensorEntity): class DanfossAir(SensorEntity):

View File

@ -47,12 +47,10 @@ def setup_platform(
], ],
] ]
dev = [] add_entities(
DanfossAir(data, switch[0], switch[1], switch[2], switch[3])
for switch in switches: for switch in switches
dev.append(DanfossAir(data, switch[0], switch[1], switch[2], switch[3])) )
add_entities(dev)
class DanfossAir(SwitchEntity): class DanfossAir(SwitchEntity):

View File

@ -114,10 +114,7 @@ class DeconzFlowHandler(ConfigFlow, domain=DOMAIN):
LOGGER.debug("Discovered deCONZ gateways %s", pformat(self.bridges)) LOGGER.debug("Discovered deCONZ gateways %s", pformat(self.bridges))
if self.bridges: if self.bridges:
hosts = [] hosts = [bridge[CONF_HOST] for bridge in self.bridges]
for bridge in self.bridges:
hosts.append(bridge[CONF_HOST])
hosts.append(CONF_MANUAL_INPUT) hosts.append(CONF_MANUAL_INPUT)

View File

@ -63,17 +63,18 @@ def setup_platform(
# Gather all the available devices... # Gather all the available devices...
perms = session.user.get_residential_permissions() perms = session.user.get_residential_permissions()
all_switches = [] all_switches: list = []
for permission in perms: for permission in perms:
if permission.residentialAccountId is not None: if permission.residentialAccountId is not None:
acct = ResidentialAccount(session, permission.residentialAccountId) acct = ResidentialAccount(session, permission.residentialAccountId)
for residence in acct.get_residences(): all_switches.extend(
for switch in residence.get_iot_switches(): switch
all_switches.append(switch) for residence in acct.get_residences()
for switch in residence.get_iot_switches()
)
elif permission.residenceId is not None: elif permission.residenceId is not None:
residence = Residence(session, permission.residenceId) residence = Residence(session, permission.residenceId)
for switch in residence.get_iot_switches(): all_switches.extend(residence.get_iot_switches())
all_switches.append(switch)
add_entities(DecoraWifiLight(sw) for sw in all_switches) add_entities(DecoraWifiLight(sw) for sw in all_switches)
except ValueError: except ValueError:

View File

@ -64,9 +64,8 @@ async def async_setup_platform(
session = async_get_clientsession(hass) session = async_get_clientsession(hass)
sensors = [] async_add_entities(
for nextpassage in config[CONF_NEXT_DEPARTURE]: (
sensors.append(
DeLijnPublicTransportSensor( DeLijnPublicTransportSensor(
Passages( Passages(
nextpassage[CONF_STOP_ID], nextpassage[CONF_STOP_ID],
@ -76,9 +75,10 @@ async def async_setup_platform(
True, True,
) )
) )
) for nextpassage in config[CONF_NEXT_DEPARTURE]
),
async_add_entities(sensors, True) True,
)
class DeLijnPublicTransportSensor(SensorEntity): class DeLijnPublicTransportSensor(SensorEntity):

View File

@ -34,29 +34,27 @@ async def async_setup_entry(
entities: list[BinarySensorEntity] = [] entities: list[BinarySensorEntity] = []
for gateway in hass.data[DOMAIN][entry.entry_id]["gateways"]: for gateway in hass.data[DOMAIN][entry.entry_id]["gateways"]:
for device in gateway.binary_sensor_devices: entities.extend(
for binary_sensor in device.binary_sensor_property: DevoloBinaryDeviceEntity(
entities.append( homecontrol=gateway,
DevoloBinaryDeviceEntity( device_instance=device,
homecontrol=gateway, element_uid=binary_sensor,
device_instance=device, )
element_uid=binary_sensor, for device in gateway.binary_sensor_devices
) for binary_sensor in device.binary_sensor_property
) )
for device in gateway.devices.values(): entities.extend(
if hasattr(device, "remote_control_property"): DevoloRemoteControl(
for remote in device.remote_control_property: homecontrol=gateway,
for index in range( device_instance=device,
1, device.remote_control_property[remote].key_count + 1 element_uid=remote,
): key=index,
entities.append( )
DevoloRemoteControl( for device in gateway.devices.values()
homecontrol=gateway, if hasattr(device, "remote_control_property")
device_instance=device, for remote in device.remote_control_property
element_uid=remote, for index in range(1, device.remote_control_property[remote].key_count + 1)
key=index, )
)
)
async_add_entities(entities) async_add_entities(entities)

View File

@ -26,26 +26,24 @@ async def async_setup_entry(
hass: HomeAssistant, entry: ConfigEntry, async_add_entities: AddEntitiesCallback hass: HomeAssistant, entry: ConfigEntry, async_add_entities: AddEntitiesCallback
) -> None: ) -> None:
"""Get all cover devices and setup them via config entry.""" """Get all cover devices and setup them via config entry."""
entities = []
for gateway in hass.data[DOMAIN][entry.entry_id]["gateways"]: async_add_entities(
for device in gateway.multi_level_switch_devices: DevoloClimateDeviceEntity(
for multi_level_switch in device.multi_level_switch_property: homecontrol=gateway,
if device.device_model_uid in ( device_instance=device,
"devolo.model.Thermostat:Valve", element_uid=multi_level_switch,
"devolo.model.Room:Thermostat", )
"devolo.model.Eurotronic:Spirit:Device", for gateway in hass.data[DOMAIN][entry.entry_id]["gateways"]
"unk.model.Danfoss:Thermostat", for device in gateway.multi_level_switch_devices
): for multi_level_switch in device.multi_level_switch_property
entities.append( if device.device_model_uid
DevoloClimateDeviceEntity( in (
homecontrol=gateway, "devolo.model.Thermostat:Valve",
device_instance=device, "devolo.model.Room:Thermostat",
element_uid=multi_level_switch, "devolo.model.Eurotronic:Spirit:Device",
) "unk.model.Danfoss:Thermostat",
) )
)
async_add_entities(entities)
class DevoloClimateDeviceEntity(DevoloMultiLevelSwitchDeviceEntity, ClimateEntity): class DevoloClimateDeviceEntity(DevoloMultiLevelSwitchDeviceEntity, ClimateEntity):

View File

@ -21,21 +21,18 @@ async def async_setup_entry(
hass: HomeAssistant, entry: ConfigEntry, async_add_entities: AddEntitiesCallback hass: HomeAssistant, entry: ConfigEntry, async_add_entities: AddEntitiesCallback
) -> None: ) -> None:
"""Get all cover devices and setup them via config entry.""" """Get all cover devices and setup them via config entry."""
entities = []
for gateway in hass.data[DOMAIN][entry.entry_id]["gateways"]: async_add_entities(
for device in gateway.multi_level_switch_devices: DevoloCoverDeviceEntity(
for multi_level_switch in device.multi_level_switch_property: homecontrol=gateway,
if multi_level_switch.startswith("devolo.Blinds"): device_instance=device,
entities.append( element_uid=multi_level_switch,
DevoloCoverDeviceEntity( )
homecontrol=gateway, for gateway in hass.data[DOMAIN][entry.entry_id]["gateways"]
device_instance=device, for device in gateway.multi_level_switch_devices
element_uid=multi_level_switch, for multi_level_switch in device.multi_level_switch_property
) if multi_level_switch.startswith("devolo.Blinds")
) )
async_add_entities(entities)
class DevoloCoverDeviceEntity(DevoloMultiLevelSwitchDeviceEntity, CoverEntity): class DevoloCoverDeviceEntity(DevoloMultiLevelSwitchDeviceEntity, CoverEntity):

View File

@ -22,25 +22,24 @@ async def async_get_config_entry_diagnostics(
"""Return diagnostics for a config entry.""" """Return diagnostics for a config entry."""
gateways: list[HomeControl] = hass.data[DOMAIN][entry.entry_id]["gateways"] gateways: list[HomeControl] = hass.data[DOMAIN][entry.entry_id]["gateways"]
device_info = [] device_info = [
for gateway in gateways: {
device_info.append( "gateway": {
{ "local_connection": gateway.gateway.local_connection,
"gateway": { "firmware_version": gateway.gateway.firmware_version,
"local_connection": gateway.gateway.local_connection, },
"firmware_version": gateway.gateway.firmware_version, "devices": [
}, {
"devices": [ "device_id": device_id,
{ "device_model_uid": properties.device_model_uid,
"device_id": device_id, "device_type": properties.device_type,
"device_model_uid": properties.device_model_uid, "name": properties.name,
"device_type": properties.device_type, }
"name": properties.name, for device_id, properties in gateway.devices.items()
} ],
for device_id, properties in gateway.devices.items() }
], for gateway in gateways
} ]
)
diag_data = { diag_data = {
"entry": async_redact_data(entry.as_dict(), TO_REDACT), "entry": async_redact_data(entry.as_dict(), TO_REDACT),

View File

@ -20,21 +20,18 @@ async def async_setup_entry(
hass: HomeAssistant, entry: ConfigEntry, async_add_entities: AddEntitiesCallback hass: HomeAssistant, entry: ConfigEntry, async_add_entities: AddEntitiesCallback
) -> None: ) -> None:
"""Get all light devices and setup them via config entry.""" """Get all light devices and setup them via config entry."""
entities = []
for gateway in hass.data[DOMAIN][entry.entry_id]["gateways"]: async_add_entities(
for device in gateway.multi_level_switch_devices: DevoloLightDeviceEntity(
for multi_level_switch in device.multi_level_switch_property.values(): homecontrol=gateway,
if multi_level_switch.switch_type == "dimmer": device_instance=device,
entities.append( element_uid=multi_level_switch.element_uid,
DevoloLightDeviceEntity( )
homecontrol=gateway, for gateway in hass.data[DOMAIN][entry.entry_id]["gateways"]
device_instance=device, for device in gateway.multi_level_switch_devices
element_uid=multi_level_switch.element_uid, for multi_level_switch in device.multi_level_switch_property.values()
) if multi_level_switch.switch_type == "dimmer"
) )
async_add_entities(entities)
class DevoloLightDeviceEntity(DevoloMultiLevelSwitchDeviceEntity, LightEntity): class DevoloLightDeviceEntity(DevoloMultiLevelSwitchDeviceEntity, LightEntity):

View File

@ -45,35 +45,36 @@ async def async_setup_entry(
entities: list[SensorEntity] = [] entities: list[SensorEntity] = []
for gateway in hass.data[DOMAIN][entry.entry_id]["gateways"]: for gateway in hass.data[DOMAIN][entry.entry_id]["gateways"]:
for device in gateway.multi_level_sensor_devices: entities.extend(
for multi_level_sensor in device.multi_level_sensor_property: DevoloGenericMultiLevelDeviceEntity(
entities.append( homecontrol=gateway,
DevoloGenericMultiLevelDeviceEntity( device_instance=device,
homecontrol=gateway, element_uid=multi_level_sensor,
device_instance=device, )
element_uid=multi_level_sensor, for device in gateway.multi_level_sensor_devices
) for multi_level_sensor in device.multi_level_sensor_property
) )
for device in gateway.devices.values(): entities.extend(
if hasattr(device, "consumption_property"): DevoloConsumptionEntity(
for consumption in device.consumption_property: homecontrol=gateway,
for consumption_type in ("current", "total"): device_instance=device,
entities.append( element_uid=consumption,
DevoloConsumptionEntity( consumption=consumption_type,
homecontrol=gateway, )
device_instance=device, for device in gateway.devices.values()
element_uid=consumption, if hasattr(device, "consumption_property")
consumption=consumption_type, for consumption in device.consumption_property
) for consumption_type in ("current", "total")
) )
if hasattr(device, "battery_level"): entities.extend(
entities.append( DevoloBatteryEntity(
DevoloBatteryEntity( homecontrol=gateway,
homecontrol=gateway, device_instance=device,
device_instance=device, element_uid=f"devolo.BatterySensor:{device.uid}",
element_uid=f"devolo.BatterySensor:{device.uid}", )
) for device in gateway.devices.values()
) if hasattr(device, "battery_level")
)
async_add_entities(entities) async_add_entities(entities)

View File

@ -18,21 +18,18 @@ async def async_setup_entry(
hass: HomeAssistant, entry: ConfigEntry, async_add_entities: AddEntitiesCallback hass: HomeAssistant, entry: ConfigEntry, async_add_entities: AddEntitiesCallback
) -> None: ) -> None:
"""Get all binary sensor and multi level sensor devices and setup them via config entry.""" """Get all binary sensor and multi level sensor devices and setup them via config entry."""
entities = []
for gateway in hass.data[DOMAIN][entry.entry_id]["gateways"]: async_add_entities(
for device in gateway.multi_level_switch_devices: DevoloSirenDeviceEntity(
for multi_level_switch in device.multi_level_switch_property: homecontrol=gateway,
if multi_level_switch.startswith("devolo.SirenMultiLevelSwitch"): device_instance=device,
entities.append( element_uid=multi_level_switch,
DevoloSirenDeviceEntity( )
homecontrol=gateway, for gateway in hass.data[DOMAIN][entry.entry_id]["gateways"]
device_instance=device, for device in gateway.multi_level_switch_devices
element_uid=multi_level_switch, for multi_level_switch in device.multi_level_switch_property
) if multi_level_switch.startswith("devolo.SirenMultiLevelSwitch")
) )
async_add_entities(entities)
class DevoloSirenDeviceEntity(DevoloMultiLevelSwitchDeviceEntity, SirenEntity): class DevoloSirenDeviceEntity(DevoloMultiLevelSwitchDeviceEntity, SirenEntity):

View File

@ -20,23 +20,20 @@ async def async_setup_entry(
hass: HomeAssistant, entry: ConfigEntry, async_add_entities: AddEntitiesCallback hass: HomeAssistant, entry: ConfigEntry, async_add_entities: AddEntitiesCallback
) -> None: ) -> None:
"""Get all devices and setup the switch devices via config entry.""" """Get all devices and setup the switch devices via config entry."""
entities = []
for gateway in hass.data[DOMAIN][entry.entry_id]["gateways"]: async_add_entities(
for device in gateway.binary_switch_devices: DevoloSwitch(
for binary_switch in device.binary_switch_property: homecontrol=gateway,
# Exclude the binary switch which also has multi_level_switches here, device_instance=device,
# because those are implemented as light entities now. element_uid=binary_switch,
if not hasattr(device, "multi_level_switch_property"): )
entities.append( for gateway in hass.data[DOMAIN][entry.entry_id]["gateways"]
DevoloSwitch( for device in gateway.binary_switch_devices
homecontrol=gateway, for binary_switch in device.binary_switch_property
device_instance=device, # Exclude the binary switch which also has multi_level_switches here,
element_uid=binary_switch, # because those are implemented as light entities now.
) if not hasattr(device, "multi_level_switch_property")
) )
async_add_entities(entities)
class DevoloSwitch(DevoloDeviceEntity, SwitchEntity): class DevoloSwitch(DevoloDeviceEntity, SwitchEntity):

View File

@ -60,18 +60,18 @@ async def async_setup_entry(
) -> None: ) -> None:
"""Set up the DirecTV config entry.""" """Set up the DirecTV config entry."""
dtv = hass.data[DOMAIN][entry.entry_id] dtv = hass.data[DOMAIN][entry.entry_id]
entities = []
for location in dtv.device.locations: async_add_entities(
entities.append( (
DIRECTVMediaPlayer( DIRECTVMediaPlayer(
dtv=dtv, dtv=dtv,
name=str.title(location.name), name=str.title(location.name),
address=location.address, address=location.address,
) )
) for location in dtv.device.locations
),
async_add_entities(entities, True) True,
)
class DIRECTVMediaPlayer(DIRECTVEntity, MediaPlayerEntity): class DIRECTVMediaPlayer(DIRECTVEntity, MediaPlayerEntity):

View File

@ -29,18 +29,18 @@ async def async_setup_entry(
) -> None: ) -> None:
"""Load DirecTV remote based on a config entry.""" """Load DirecTV remote based on a config entry."""
dtv = hass.data[DOMAIN][entry.entry_id] dtv = hass.data[DOMAIN][entry.entry_id]
entities = []
for location in dtv.device.locations: async_add_entities(
entities.append( (
DIRECTVRemote( DIRECTVRemote(
dtv=dtv, dtv=dtv,
name=str.title(location.name), name=str.title(location.name),
address=location.address, address=location.address,
) )
) for location in dtv.device.locations
),
async_add_entities(entities, True) True,
)
class DIRECTVRemote(DIRECTVEntity, RemoteEntity): class DIRECTVRemote(DIRECTVEntity, RemoteEntity):

View File

@ -24,13 +24,10 @@ def setup_platform(
discovery_info: DiscoveryInfoType | None = None, discovery_info: DiscoveryInfoType | None = None,
) -> None: ) -> None:
"""Set up the Dlib Face detection platform.""" """Set up the Dlib Face detection platform."""
entities = [] add_entities(
for camera in config[CONF_SOURCE]: DlibFaceDetectEntity(camera[CONF_ENTITY_ID], camera.get(CONF_NAME))
entities.append( for camera in config[CONF_SOURCE]
DlibFaceDetectEntity(camera[CONF_ENTITY_ID], camera.get(CONF_NAME)) )
)
add_entities(entities)
class DlibFaceDetectEntity(ImageProcessingFaceEntity): class DlibFaceDetectEntity(ImageProcessingFaceEntity):

View File

@ -38,18 +38,15 @@ def setup_platform(
discovery_info: DiscoveryInfoType | None = None, discovery_info: DiscoveryInfoType | None = None,
) -> None: ) -> None:
"""Set up the Dlib Face detection platform.""" """Set up the Dlib Face detection platform."""
entities = [] add_entities(
for camera in config[CONF_SOURCE]: DlibFaceIdentifyEntity(
entities.append( camera[CONF_ENTITY_ID],
DlibFaceIdentifyEntity( config[CONF_FACES],
camera[CONF_ENTITY_ID], camera.get(CONF_NAME),
config[CONF_FACES], config[CONF_CONFIDENCE],
camera.get(CONF_NAME),
config[CONF_CONFIDENCE],
)
) )
for camera in config[CONF_SOURCE]
add_entities(entities) )
class DlibFaceIdentifyEntity(ImageProcessingFaceEntity): class DlibFaceIdentifyEntity(ImageProcessingFaceEntity):

View File

@ -112,19 +112,17 @@ def setup_platform(
) )
return return
entities = [] add_entities(
for camera in config[CONF_SOURCE]: Doods(
entities.append( hass,
Doods( camera[CONF_ENTITY_ID],
hass, camera.get(CONF_NAME),
camera[CONF_ENTITY_ID], doods,
camera.get(CONF_NAME), detector,
doods, config,
detector,
config,
)
) )
add_entities(entities) for camera in config[CONF_SOURCE]
)
class Doods(ImageProcessingEntity): class Doods(ImageProcessingEntity):

View File

@ -531,9 +531,7 @@ async def async_setup_entry(
add_entities_handler = None add_entities_handler = None
if dsmr_version == "5B": if dsmr_version == "5B":
mbus_entities = create_mbus_entities(hass, telegram, entry) entities.extend(create_mbus_entities(hass, telegram, entry))
for mbus_entity in mbus_entities:
entities.append(mbus_entity)
entities.extend( entities.extend(
[ [

View File

@ -65,10 +65,11 @@ async def async_setup(hass: HomeAssistant, config: ConfigType) -> bool:
async def dynalite_service(service_call: ServiceCall) -> None: async def dynalite_service(service_call: ServiceCall) -> None:
data = service_call.data data = service_call.data
host = data.get(ATTR_HOST, "") host = data.get(ATTR_HOST, "")
bridges = [] bridges = [
for cur_bridge in hass.data[DOMAIN].values(): bridge
if not host or cur_bridge.host == host: for bridge in hass.data[DOMAIN].values()
bridges.append(cur_bridge) if not host or bridge.host == host
]
LOGGER.debug("Selected bridged for service call: %s", bridges) LOGGER.debug("Selected bridged for service call: %s", bridges)
if service_call.service == SERVICE_REQUEST_AREA_PRESET: if service_call.service == SERVICE_REQUEST_AREA_PRESET:
bridge_attr = "request_area_preset" bridge_attr = "request_area_preset"

View File

@ -31,9 +31,7 @@ def async_setup_entry_base(
@callback @callback
def async_add_entities_platform(devices): def async_add_entities_platform(devices):
# assumes it is called with a single platform # assumes it is called with a single platform
added_entities = [] added_entities = [entity_from_device(device, bridge) for device in devices]
for device in devices:
added_entities.append(entity_from_device(device, bridge))
async_add_entities(added_entities) async_add_entities(added_entities)
bridge.register_add_devices(platform, async_add_entities_platform) bridge.register_add_devices(platform, async_add_entities_platform)

View File

@ -157,11 +157,12 @@ async def test_sync_turn_off(hass: HomeAssistant) -> None:
def _create_tuples(enum: Enum, constant_prefix: str) -> list[tuple[Enum, str]]: def _create_tuples(enum: Enum, constant_prefix: str) -> list[tuple[Enum, str]]:
result = [] return [
for enum in enum: (enum_field, constant_prefix)
if enum not in [ClimateEntityFeature.TURN_ON, ClimateEntityFeature.TURN_OFF]: for enum_field in enum
result.append((enum, constant_prefix)) if enum_field
return result not in [ClimateEntityFeature.TURN_ON, ClimateEntityFeature.TURN_OFF]
]
@pytest.mark.parametrize( @pytest.mark.parametrize(

View File

@ -140,10 +140,7 @@ def is_closing(hass, ent):
def _create_tuples(enum: Enum, constant_prefix: str) -> list[tuple[Enum, str]]: def _create_tuples(enum: Enum, constant_prefix: str) -> list[tuple[Enum, str]]:
result = [] return [(enum_field, constant_prefix) for enum_field in enum]
for enum in enum:
result.append((enum, constant_prefix))
return result
def test_all() -> None: def test_all() -> None: