/
/
/
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