mirror of
https://github.com/Electric-Special/ha-core.git
synced 2026-03-24 22:07:57 +01:00
Filter out custom integrations in extended analytics (#152820)
This commit is contained in:
@@ -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,
|
||||
|
||||
@@ -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,
|
||||
},
|
||||
},
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user