from collections.abc import Awaitable, Callable
from contextlib import suppress
from datetime import datetime
-from enum import StrEnum
from typing import TYPE_CHECKING, Any, TypeVar, cast
from aiohttp import ClientConnectionError, ClientResponse
T = TypeVar("T")
-class TidalQualityEnum(StrEnum):
- """Enum for Tidal Quality."""
-
- HIGH_LOSSLESS = "LOSSLESS" # "High - 16bit, 44.1kHz"
- HI_RES = "HI_RES_LOSSLESS" # "Max - Up to 24bit, 192kHz"
-
-
async def setup(
mass: MusicAssistant, manifest: ProviderManifest, config: ProviderConfig
) -> ProviderInstanceType:
ConfigEntry(
key=CONF_QUALITY,
type=ConfigEntryType.STRING,
- label=CONF_QUALITY,
- required=True,
- hidden=True,
- value=cast("str", values.get(CONF_QUALITY) or TidalQualityEnum.HI_RES.value),
- default_value=cast(
- "str", values.get(CONF_QUALITY) or TidalQualityEnum.HI_RES.value
- ),
+ label="Quality setting for Tidal:",
+ description="High = 16bit 44.1kHz\n\nMax = Up to 24bit 192kHz",
+ options=[
+ ConfigValueOption("High", "LOSSLESS"),
+ ConfigValueOption("Max", "HI_RES_LOSSLESS"),
+ ],
+ default_value="HI_RES_LOSSLESS",
),
)
else:
type=ConfigEntryType.STRING,
label="Quality setting for Tidal:",
required=True,
- description="HIGH_LOSSLESS = 16bit 44.1kHz, HI_RES = Up to 24bit 192kHz",
- options=[ConfigValueOption(x.value, x.name) for x in TidalQualityEnum],
- default_value=TidalQualityEnum.HI_RES.value,
- value=cast("str", values.get(CONF_QUALITY)) if values else None,
+ description="High = 16bit 44.1kHz\n\nMax = Up to 24bit 192kHz",
+ options=[
+ ConfigValueOption("High", "LOSSLESS"),
+ ConfigValueOption("Max", "HI_RES_LOSSLESS"),
+ ],
+ default_value="HI_RES_LOSSLESS",
),
ConfigEntry(
key=LABEL_START_PKCE_LOGIN,