Improve helpers.frame.report_usage when called from outside the event loop (#148021)

This commit is contained in:
Erik Montnemery 2025-07-03 20:12:52 +02:00 committed by GitHub
parent b999c5906e
commit bc4a322e81
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194

View File

@ -185,6 +185,16 @@ def report_usage(
"""
if (hass := _hass.hass) is None:
raise RuntimeError("Frame helper not set up")
integration_frame: IntegrationFrame | None = None
integration_frame_err: MissingIntegrationFrame | None = None
if not integration_domain:
try:
integration_frame = get_integration_frame(
exclude_integrations=exclude_integrations
)
except MissingIntegrationFrame as err:
if core_behavior is ReportBehavior.ERROR:
integration_frame_err = err
_report_usage_partial = functools.partial(
_report_usage,
hass,
@ -193,8 +203,9 @@ def report_usage(
core_behavior=core_behavior,
core_integration_behavior=core_integration_behavior,
custom_integration_behavior=custom_integration_behavior,
exclude_integrations=exclude_integrations,
integration_domain=integration_domain,
integration_frame=integration_frame,
integration_frame_err=integration_frame_err,
level=level,
)
if hass.loop_thread_id != threading.get_ident():
@ -212,8 +223,9 @@ def _report_usage(
core_behavior: ReportBehavior,
core_integration_behavior: ReportBehavior,
custom_integration_behavior: ReportBehavior,
exclude_integrations: set[str] | None,
integration_domain: str | None,
integration_frame: IntegrationFrame | None,
integration_frame_err: MissingIntegrationFrame | None,
level: int,
) -> None:
"""Report incorrect code usage.
@ -235,12 +247,10 @@ def _report_usage(
_report_usage_no_integration(what, core_behavior, breaks_in_ha_version, None)
return
try:
integration_frame = get_integration_frame(
exclude_integrations=exclude_integrations
if not integration_frame:
_report_usage_no_integration(
what, core_behavior, breaks_in_ha_version, integration_frame_err
)
except MissingIntegrationFrame as err:
_report_usage_no_integration(what, core_behavior, breaks_in_ha_version, err)
return
integration_behavior = core_integration_behavior