"""Musopen fetcher — DEFERRED (see spec §6.4).

Public-domain / CC classical music. Access has historically been gated and may
require an API key (a secret — never logged, see spec §9). The Fetcher seam is
wired so enabling it later is purely additive; it raises until implemented.
"""

from __future__ import annotations

from tools.ingest.base import Candidate

_DEFERRED = "deferred — see spec §6.4 (Musopen access may require an API key)"


class MusopenFetcher:
    archive = "musopen"

    def __init__(self, client):
        self.client = client

    def search(self, query: str, *, limit: int) -> list[Candidate]:
        raise NotImplementedError(_DEFERRED)

    def resolve(self, identifier: str) -> Candidate:
        raise NotImplementedError(_DEFERRED)
