Source code for pylav.nodes.api.responses.shared

from __future__ import annotations

from dataclasses import _FIELD, _FIELDS, InitVar, asdict, dataclass, field  # noqa
from typing import NotRequired  # noqa

_JSON_TYPE = dict[str, "_JSON_TYPE"] | list["_JSON_TYPE"] | str | int | float | bool | None
_JSON_DICT_TYPE = dict[str, _JSON_TYPE]


[docs] @dataclass(kw_only=True) class PluginInfo: kwargs: InitVar[_JSON_DICT_TYPE | None] = None def __post_init__(self, kwargs: _JSON_DICT_TYPE | None) -> None: if kwargs: for k, v in kwargs.items(): object.__setattr__(self, k, v) def __getattr__(self, item): return None def __repr__(self): return f"PluginInfo({', '.join([f'{key}={val!r}' for key, val in self.__dict__.items()])})"
[docs] def to_dict(self) -> _JSON_DICT_TYPE: return asdict(self)
def _add_to_asdict(self, attr: str) -> None: f = field(repr=True) f.name = attr f._field_type = _FIELD getattr(self, _FIELDS)[attr] = f
[docs] @dataclass(kw_only=True) class PlaylistPluginInfo(PluginInfo): type: NotRequired[str] | None = field(init=False) identifier: NotRequired[str] | None = field(init=False) url: NotRequired[str] | None = field(init=False) artworkUrl: NotRequired[str] | None = field(init=False) author: NotRequired[str] | None = field(init=False)
[docs] @dataclass(kw_only=True) class TrackPluginInfo(PluginInfo): probeInfo: NotRequired[str] | None = field(init=False)
[docs] @dataclass(kw_only=True) class LyricsPluginInfo(PluginInfo): template: NotRequired[str] | None = field(init=False)