Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Improve lists in integrations [A] #113006

Merged
merged 4 commits into from
Mar 11, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
9 changes: 5 additions & 4 deletions homeassistant/components/acmeda/config_flow.py
Original file line number Diff line number Diff line change
Expand Up @@ -40,12 +40,13 @@ async def async_step_user(
entry.unique_id for entry in self._async_current_entries()
}

hubs: list[aiopulse.Hub] = []
with suppress(TimeoutError):
async with timeout(5):
async for hub in aiopulse.Hub.discover():
if hub.id not in already_configured:
hubs.append(hub)
hubs: list[aiopulse.Hub] = [
hub
async for hub in aiopulse.Hub.discover()
if hub.id not in already_configured
]

if not hubs:
return self.async_abort(reason="no_devices_found")
Expand Down
5 changes: 1 addition & 4 deletions homeassistant/components/advantage_air/select.py
Original file line number Diff line number Diff line change
Expand Up @@ -21,11 +21,8 @@ async def async_setup_entry(

instance: AdvantageAirData = hass.data[ADVANTAGE_AIR_DOMAIN][config_entry.entry_id]

entities: list[SelectEntity] = []
if aircons := instance.coordinator.data.get("aircons"):
for ac_key in aircons:
entities.append(AdvantageAirMyZone(instance, ac_key))
async_add_entities(entities)
async_add_entities(AdvantageAirMyZone(instance, ac_key) for ac_key in aircons)
frenck marked this conversation as resolved.
Show resolved Hide resolved


class AdvantageAirMyZone(AdvantageAirAcEntity, SelectEntity):
Expand Down
8 changes: 5 additions & 3 deletions homeassistant/components/advantage_air/switch.py
Original file line number Diff line number Diff line change
Expand Up @@ -34,9 +34,11 @@ async def async_setup_entry(
if ADVANTAGE_AIR_AUTOFAN_ENABLED in ac_device["info"]:
entities.append(AdvantageAirMyFan(instance, ac_key))
if things := instance.coordinator.data.get("myThings"):
for thing in things["things"].values():
if thing["channelDipState"] == 8: # 8 = Other relay
entities.append(AdvantageAirRelay(instance, thing))
entities.extend(
AdvantageAirRelay(instance, thing)
for thing in things["things"].values()
if thing["channelDipState"] == 8 # 8 = Other relay
)
async_add_entities(entities)


Expand Down
24 changes: 10 additions & 14 deletions homeassistant/components/aemet/sensor.py
Original file line number Diff line number Diff line change
Expand Up @@ -368,20 +368,16 @@ async def async_setup_entry(
name: str = domain_data[ENTRY_NAME]
coordinator: WeatherUpdateCoordinator = domain_data[ENTRY_WEATHER_COORDINATOR]

entities: list[AemetSensor] = []

for description in FORECAST_SENSORS + WEATHER_SENSORS:
if dict_nested_value(coordinator.data["lib"], description.keys) is not None:
entities.append(
AemetSensor(
name,
coordinator,
description,
config_entry,
)
)

async_add_entities(entities)
async_add_entities(
AemetSensor(
name,
coordinator,
description,
config_entry,
)
for description in FORECAST_SENSORS + WEATHER_SENSORS
if dict_nested_value(coordinator.data["lib"], description.keys) is not None
)


class AemetSensor(AemetEntity, SensorEntity):
Expand Down
16 changes: 9 additions & 7 deletions homeassistant/components/airly/sensor.py
Original file line number Diff line number Diff line change
Expand Up @@ -181,13 +181,15 @@ async def async_setup_entry(

coordinator = hass.data[DOMAIN][entry.entry_id]

sensors = []
for description in SENSOR_TYPES:
# When we use the nearest method, we are not sure which sensors are available
if coordinator.data.get(description.key):
sensors.append(AirlySensor(coordinator, name, description))

async_add_entities(sensors, False)
async_add_entities(
(
AirlySensor(coordinator, name, description)
for description in SENSOR_TYPES
# When we use the nearest method, we are not sure which sensors are available
if coordinator.data.get(description.key)
),
False,
)


class AirlySensor(CoordinatorEntity[AirlyDataUpdateCoordinator], SensorEntity):
Expand Down
6 changes: 4 additions & 2 deletions homeassistant/components/airtouch5/climate.py
Original file line number Diff line number Diff line change
Expand Up @@ -109,8 +109,10 @@ async def async_setup_entry(
entities.append(Airtouch5AC(client, ac))

# Add each zone
for zone in client.zones:
entities.append(Airtouch5Zone(client, zone, zone_to_ac[zone.zone_number]))
entities.extend(
Airtouch5Zone(client, zone, zone_to_ac[zone.zone_number])
for zone in client.zones
)

async_add_entities(entities)

Expand Down
52 changes: 25 additions & 27 deletions homeassistant/components/airzone/binary_sensor.py
Original file line number Diff line number Diff line change
Expand Up @@ -80,33 +80,31 @@ async def async_setup_entry(
"""Add Airzone binary sensors from a config_entry."""
coordinator = hass.data[DOMAIN][entry.entry_id]

binary_sensors: list[AirzoneBinarySensor] = []

for system_id, system_data in coordinator.data[AZD_SYSTEMS].items():
for description in SYSTEM_BINARY_SENSOR_TYPES:
if description.key in system_data:
binary_sensors.append(
AirzoneSystemBinarySensor(
coordinator,
description,
entry,
system_id,
system_data,
)
)

for system_zone_id, zone_data in coordinator.data[AZD_ZONES].items():
for description in ZONE_BINARY_SENSOR_TYPES:
if description.key in zone_data:
binary_sensors.append(
AirzoneZoneBinarySensor(
coordinator,
description,
entry,
system_zone_id,
zone_data,
)
)
binary_sensors: list[AirzoneBinarySensor] = [
AirzoneSystemBinarySensor(
coordinator,
description,
entry,
system_id,
system_data,
)
for system_id, system_data in coordinator.data[AZD_SYSTEMS].items()
for description in SYSTEM_BINARY_SENSOR_TYPES
if description.key in system_data
]

binary_sensors.extend(
AirzoneZoneBinarySensor(
coordinator,
description,
entry,
system_zone_id,
zone_data,
)
for system_zone_id, zone_data in coordinator.data[AZD_ZONES].items()
for description in ZONE_BINARY_SENSOR_TYPES
if description.key in zone_data
)

async_add_entities(binary_sensors)

Expand Down
28 changes: 12 additions & 16 deletions homeassistant/components/airzone/select.py
Original file line number Diff line number Diff line change
Expand Up @@ -84,22 +84,18 @@ async def async_setup_entry(
"""Add Airzone sensors from a config_entry."""
coordinator = hass.data[DOMAIN][entry.entry_id]

entities: list[AirzoneBaseSelect] = []

for system_zone_id, zone_data in coordinator.data[AZD_ZONES].items():
for description in ZONE_SELECT_TYPES:
if description.key in zone_data:
entities.append(
AirzoneZoneSelect(
coordinator,
description,
entry,
system_zone_id,
zone_data,
)
)

async_add_entities(entities)
async_add_entities(
AirzoneZoneSelect(
coordinator,
description,
entry,
system_zone_id,
zone_data,
)
for description in ZONE_SELECT_TYPES
for system_zone_id, zone_data in coordinator.data[AZD_ZONES].items()
if description.key in zone_data
)


class AirzoneBaseSelect(AirzoneEntity, SelectEntity):
Expand Down
64 changes: 30 additions & 34 deletions homeassistant/components/airzone/sensor.py
Original file line number Diff line number Diff line change
Expand Up @@ -82,44 +82,40 @@ async def async_setup_entry(
"""Add Airzone sensors from a config_entry."""
coordinator = hass.data[DOMAIN][entry.entry_id]

sensors: list[AirzoneSensor] = []
sensors: list[AirzoneSensor] = [
AirzoneZoneSensor(
coordinator,
description,
entry,
system_zone_id,
zone_data,
)
for system_zone_id, zone_data in coordinator.data[AZD_ZONES].items()
for description in ZONE_SENSOR_TYPES
if description.key in zone_data
]

if AZD_HOT_WATER in coordinator.data:
dhw_data = coordinator.data[AZD_HOT_WATER]
for description in HOT_WATER_SENSOR_TYPES:
if description.key in dhw_data:
sensors.append(
AirzoneHotWaterSensor(
coordinator,
description,
entry,
)
)
sensors.extend(
AirzoneHotWaterSensor(
coordinator,
description,
entry,
)
for description in HOT_WATER_SENSOR_TYPES
if description.key in coordinator.data[AZD_HOT_WATER]
)

if AZD_WEBSERVER in coordinator.data:
ws_data = coordinator.data[AZD_WEBSERVER]
for description in WEBSERVER_SENSOR_TYPES:
if description.key in ws_data:
sensors.append(
AirzoneWebServerSensor(
coordinator,
description,
entry,
)
)

for system_zone_id, zone_data in coordinator.data[AZD_ZONES].items():
for description in ZONE_SENSOR_TYPES:
if description.key in zone_data:
sensors.append(
AirzoneZoneSensor(
coordinator,
description,
entry,
system_zone_id,
zone_data,
)
)
sensors.extend(
AirzoneWebServerSensor(
coordinator,
description,
entry,
)
for description in WEBSERVER_SENSOR_TYPES
if description.key in coordinator.data[AZD_WEBSERVER]
)

async_add_entities(sensors)

Expand Down
72 changes: 35 additions & 37 deletions homeassistant/components/airzone_cloud/binary_sensor.py
Original file line number Diff line number Diff line change
Expand Up @@ -99,43 +99,41 @@ async def async_setup_entry(
"""Add Airzone Cloud binary sensors from a config_entry."""
coordinator: AirzoneUpdateCoordinator = hass.data[DOMAIN][entry.entry_id]

binary_sensors: list[AirzoneBinarySensor] = []

for aidoo_id, aidoo_data in coordinator.data.get(AZD_AIDOOS, {}).items():
for description in AIDOO_BINARY_SENSOR_TYPES:
if description.key in aidoo_data:
binary_sensors.append(
AirzoneAidooBinarySensor(
coordinator,
description,
aidoo_id,
aidoo_data,
)
)

for system_id, system_data in coordinator.data.get(AZD_SYSTEMS, {}).items():
for description in SYSTEM_BINARY_SENSOR_TYPES:
if description.key in system_data:
binary_sensors.append(
AirzoneSystemBinarySensor(
coordinator,
description,
system_id,
system_data,
)
)

for zone_id, zone_data in coordinator.data.get(AZD_ZONES, {}).items():
for description in ZONE_BINARY_SENSOR_TYPES:
if description.key in zone_data:
binary_sensors.append(
AirzoneZoneBinarySensor(
coordinator,
description,
zone_id,
zone_data,
)
)
binary_sensors: list[AirzoneBinarySensor] = [
AirzoneAidooBinarySensor(
coordinator,
description,
aidoo_id,
aidoo_data,
)
for aidoo_id, aidoo_data in coordinator.data.get(AZD_AIDOOS, {}).items()
for description in AIDOO_BINARY_SENSOR_TYPES
if description.key in aidoo_data
]

binary_sensors.extend(
AirzoneSystemBinarySensor(
coordinator,
description,
system_id,
system_data,
)
for system_id, system_data in coordinator.data.get(AZD_SYSTEMS, {}).items()
for description in SYSTEM_BINARY_SENSOR_TYPES
if description.key in system_data
)

binary_sensors.extend(
AirzoneZoneBinarySensor(
coordinator,
description,
zone_id,
zone_data,
)
for zone_id, zone_data in coordinator.data.get(AZD_ZONES, {}).items()
for description in ZONE_BINARY_SENSOR_TYPES
if description.key in zone_data
)

async_add_entities(binary_sensors)

Expand Down
Loading
Loading