music-assistant-server

1.3 KBPY
base.py
1.3 KB40 lines • python
1"""
2NicovideoMusicProviderMixinBase: Interface definitions for _for_mixin patterns.
3
4This abstract base class defines the common interface for all nicovideo provider mixins:
5- Abstract properties for shared resources (config, adapter)
6- _for_mixin method signatures for delegation patterns
7- Default implementations returning None for optional functionality
8"""
9
10from __future__ import annotations
11
12from abc import abstractmethod
13from typing import TYPE_CHECKING
14
15from music_assistant.models.music_provider import MusicProvider
16
17if TYPE_CHECKING:
18    from music_assistant.providers.nicovideo.config import NicovideoConfig
19    from music_assistant.providers.nicovideo.services.manager import NicovideoServiceManager
20
21
22class NicovideoMusicProviderMixinBase(MusicProvider):
23    """Interface for _for_mixin delegation patterns."""
24
25    @property
26    @abstractmethod
27    def nicovideo_config(self) -> NicovideoConfig:
28        """Get the config helper instance."""
29
30    @property
31    @abstractmethod
32    def service_manager(self) -> NicovideoServiceManager:
33        """Get the nicovideo service manager instance."""
34
35    async def handle_async_init_for_mixin(self) -> None:
36        """Handle async initialization for this mixin."""
37
38    async def unload_for_mixin(self, is_removed: bool = False) -> None:
39        """Handle unload/close for this mixin."""
40