Avoid having to work out the job type for each entity service at startup (#112557)

This commit is contained in:
J. Nick Koston 2024-03-06 16:09:55 -10:00 committed by GitHub
parent 869128e951
commit 84455dbe1d
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
2 changed files with 11 additions and 2 deletions

View file

@ -2014,9 +2014,10 @@ class Service:
service: str, service: str,
context: Context | None = None, context: Context | None = None,
supports_response: SupportsResponse = SupportsResponse.NONE, supports_response: SupportsResponse = SupportsResponse.NONE,
job_type: HassJobType | None = None,
) -> None: ) -> None:
"""Initialize a service.""" """Initialize a service."""
self.job = HassJob(func, f"service {domain}.{service}") self.job = HassJob(func, f"service {domain}.{service}", job_type=job_type)
self.schema = schema self.schema = schema
self.supports_response = supports_response self.supports_response = supports_response
@ -2158,6 +2159,7 @@ class ServiceRegistry:
], ],
schema: vol.Schema | None = None, schema: vol.Schema | None = None,
supports_response: SupportsResponse = SupportsResponse.NONE, supports_response: SupportsResponse = SupportsResponse.NONE,
job_type: HassJobType | None = None,
) -> None: ) -> None:
"""Register a service. """Register a service.
@ -2168,7 +2170,12 @@ class ServiceRegistry:
domain = domain.lower() domain = domain.lower()
service = service.lower() service = service.lower()
service_obj = Service( service_obj = Service(
service_func, schema, domain, service, supports_response=supports_response service_func,
schema,
domain,
service,
supports_response=supports_response,
job_type=job_type,
) )
if domain in self._services: if domain in self._services:

View file

@ -22,6 +22,7 @@ from homeassistant.const import (
from homeassistant.core import ( from homeassistant.core import (
Event, Event,
HassJob, HassJob,
HassJobType,
HomeAssistant, HomeAssistant,
ServiceCall, ServiceCall,
ServiceResponse, ServiceResponse,
@ -278,6 +279,7 @@ class EntityComponent(Generic[_EntityT]):
), ),
schema, schema,
supports_response, supports_response,
job_type=HassJobType.Coroutinefunction,
) )
async def async_setup_platform( async def async_setup_platform(