/
/
/
1"""
2Home Assistant PlayerProvider for Music Assistant.
3
4Allows using media_player entities in HA to be used as players in MA.
5Requires the Home Assistant Plugin.
6"""
7
8from __future__ import annotations
9
10from typing import TYPE_CHECKING, cast
11
12from music_assistant_models.errors import SetupFailedError
13
14from music_assistant.providers.hass import DOMAIN as HASS_DOMAIN
15
16from .provider import HomeAssistantPlayerProvider
17
18if TYPE_CHECKING:
19 from music_assistant_models.config_entries import ProviderConfig
20 from music_assistant_models.provider import ProviderManifest
21
22 from music_assistant import MusicAssistant
23 from music_assistant.models import ProviderInstanceType
24 from music_assistant.providers.hass import HomeAssistantProvider
25
26
27async def setup(
28 mass: MusicAssistant, manifest: ProviderManifest, config: ProviderConfig
29) -> ProviderInstanceType:
30 """Initialize provider(instance) with given configuration."""
31 hass_prov = mass.get_provider(HASS_DOMAIN)
32 if not hass_prov:
33 msg = "The Home Assistant Plugin needs to be set-up first"
34 raise SetupFailedError(msg)
35 hass_prov = cast("HomeAssistantProvider", hass_prov)
36 return HomeAssistantPlayerProvider(mass, manifest, config, hass_prov)
37