/
/
/
1"""
2Universal Player provider.
3
4Auto-creates virtual players that merge multiple protocol players
5(AirPlay, Chromecast, DLNA, Squeezelite, SendSpin) for the same device
6into a single unified player when no native provider exists.
7"""
8
9from __future__ import annotations
10
11from typing import TYPE_CHECKING
12
13from music_assistant_models.enums import ProviderFeature
14
15from .player import UniversalPlayer
16from .provider import UniversalPlayerProvider
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
25SUPPORTED_FEATURES: set[ProviderFeature] = {ProviderFeature.REMOVE_PLAYER}
26
27
28async def setup(
29 mass: MusicAssistant, manifest: ProviderManifest, config: ProviderConfig
30) -> ProviderInstanceType:
31 """Initialize provider(instance) with given configuration."""
32 return UniversalPlayerProvider(mass, manifest, config, SUPPORTED_FEATURES)
33
34
35__all__ = (
36 "UniversalPlayer",
37 "UniversalPlayerProvider",
38 "setup",
39)
40