Filter out custom integrations in extended analytics (#152820)

This commit is contained in:
Artur Pragacz
2025-09-24 10:24:42 +02:00
committed by GitHub
parent ddfc528d63
commit 403cd2d8ef
2 changed files with 17 additions and 40 deletions

View File

@@ -506,7 +506,7 @@ DEFAULT_DEVICE_ANALYTICS_CONFIG = DeviceAnalyticsModifications()
DEFAULT_ENTITY_ANALYTICS_CONFIG = EntityAnalyticsModifications()
async def async_devices_payload(hass: HomeAssistant) -> dict: # noqa: C901
async def async_devices_payload(hass: HomeAssistant) -> dict:
"""Return detailed information about entities and devices."""
dev_reg = dr.async_get(hass)
ent_reg = er.async_get(hass)
@@ -538,6 +538,22 @@ async def async_devices_payload(hass: HomeAssistant) -> dict: # noqa: C901
integration_input = integration_inputs.setdefault(integration_domain, ([], []))
integration_input[1].append(entity_entry.entity_id)
integrations = {
domain: integration
for domain, integration in (
await async_get_integrations(hass, integration_inputs.keys())
).items()
if isinstance(integration, Integration)
}
# Filter out custom integrations
integration_inputs = {
domain: integration_info
for domain, integration_info in integration_inputs.items()
if (integration := integrations.get(domain)) is not None
and integration.is_built_in
}
# Call integrations that implement the analytics platform
for integration_domain, integration_input in integration_inputs.items():
if (
@@ -688,23 +704,6 @@ async def async_devices_payload(hass: HomeAssistant) -> dict: # noqa: C901
else:
entities_info.append(entity_info)
integrations = {
domain: integration
for domain, integration in (
await async_get_integrations(hass, integrations_info.keys())
).items()
if isinstance(integration, Integration)
}
for domain, integration_info in integrations_info.items():
if integration := integrations.get(domain):
integration_info["is_custom_integration"] = not integration.is_built_in
# Include version for custom integrations
if not integration.is_built_in and integration.version:
integration_info["custom_integration_version"] = str(
integration.version
)
return {
"version": "home-assistant:1",
"home_assistant": HA_VERSION,

View File

@@ -1121,25 +1121,6 @@ async def test_devices_payload_no_entities(
},
],
"entities": [],
"is_custom_integration": False,
},
"test": {
"devices": [
{
"entities": [],
"entry_type": None,
"has_configuration_url": False,
"hw_version": None,
"manufacturer": "test-manufacturer7",
"model": None,
"model_id": "test-model-id7",
"sw_version": None,
"via_device": None,
},
],
"entities": [],
"is_custom_integration": True,
"custom_integration_version": "1.2.3",
},
},
}
@@ -1299,7 +1280,6 @@ async def test_devices_payload_with_entities(
"unit_of_measurement": "°C",
},
],
"is_custom_integration": False,
},
"template": {
"devices": [],
@@ -1315,7 +1295,6 @@ async def test_devices_payload_with_entities(
"unit_of_measurement": None,
},
],
"is_custom_integration": False,
},
},
}
@@ -1429,7 +1408,6 @@ async def test_analytics_platforms(
"unit_of_measurement": None,
},
],
"is_custom_integration": False,
},
},
}