Files
SpotifyRecAlg/swingmusic/api/__init__.py
T
Tomas Dvorak 6e8fedf534 first commit
2026-04-13 17:46:58 +02:00

56 lines
1.8 KiB
Python

"""
Swing Music API package.
The package intentionally avoids eager imports so a broken or optional API
module cannot crash process boot.
"""
from __future__ import annotations
import importlib
_MODULES = {
"album": "swingmusic.api.album",
"artist": "swingmusic.api.artist",
"collections": "swingmusic.api.collections",
"colors": "swingmusic.api.colors",
"favorites": "swingmusic.api.favorites",
"folder": "swingmusic.api.folder",
"imgserver": "swingmusic.api.imgserver",
"playlist": "swingmusic.api.playlist",
"search": "swingmusic.api.search",
"settings": "swingmusic.api.settings",
"lyrics": "swingmusic.api.lyrics",
"plugins": "swingmusic.api.plugins",
"scrobble": "swingmusic.api.scrobble",
"home": "swingmusic.api.home",
"getall": "swingmusic.api.getall",
"auth": "swingmusic.api.auth",
"stream": "swingmusic.api.stream",
"backup_and_restore": "swingmusic.api.backup_and_restore",
"spotify": "swingmusic.api.spotify",
"spotify_settings": "swingmusic.api.spotify_settings",
"enhanced_search": "swingmusic.api.enhanced_search",
"universal_downloader": "swingmusic.api.universal_downloader",
"music_catalog": "swingmusic.api.music_catalog",
"upload": "swingmusic.api.upload",
"downloads": "swingmusic.api.downloads",
"setup": "swingmusic.api.setup",
"plugins_lyrics": "swingmusic.api.plugins.lyrics",
"plugins_mixes": "swingmusic.api.plugins.mixes",
"dragonfly": "swingmusic.api.dragonfly",
}
def __getattr__(name: str):
module_path = _MODULES.get(name)
if module_path is None:
raise AttributeError(f"module 'swingmusic.api' has no attribute '{name}'")
module = importlib.import_module(module_path)
globals()[name] = module
return module
__all__ = sorted(_MODULES.keys())