"""
CDM helpers and implementations.

Keep this module import-light: downstream code frequently imports helpers from
`envied.core.cdm.detect`, which requires importing this package first.
Some CDM implementations pull in optional/heavy dependencies, so we lazily
import them via `__getattr__` (PEP 562).
"""

from __future__ import annotations

from typing import Any

__all__ = [
    "DecryptLabsRemoteCDM",
    "CustomRemoteCDM",
    "MonaLisaCDM",
    "is_remote_cdm",
    "is_local_cdm",
    "cdm_location",
    "is_playready_cdm",
    "is_widevine_cdm",
]


def __getattr__(name: str) -> Any:
    if name == "DecryptLabsRemoteCDM":
        from .decrypt_labs_remote_cdm import DecryptLabsRemoteCDM

        return DecryptLabsRemoteCDM
    if name == "CustomRemoteCDM":
        from .custom_remote_cdm import CustomRemoteCDM

        return CustomRemoteCDM
    if name == "MonaLisaCDM":
        from .monalisa import MonaLisaCDM

        return MonaLisaCDM

    if name in {
        "is_remote_cdm",
        "is_local_cdm",
        "cdm_location",
        "is_playready_cdm",
        "is_widevine_cdm",
    }:
        from .detect import cdm_location, is_local_cdm, is_playready_cdm, is_remote_cdm, is_widevine_cdm

        return {
            "is_remote_cdm": is_remote_cdm,
            "is_local_cdm": is_local_cdm,
            "cdm_location": cdm_location,
            "is_playready_cdm": is_playready_cdm,
            "is_widevine_cdm": is_widevine_cdm,
        }[name]

    raise AttributeError(f"module {__name__!r} has no attribute {name!r}")
