from __future__ import annotations

from collections.abc import Callable

from backend.data.providers.tushare_client import TushareClient


class TushareProvider:
    def __init__(
        self,
        token_supplier: Callable[[], str],
        client_factory: Callable[[str], TushareClient] = TushareClient,
    ) -> None:
        self._token_supplier = token_supplier
        self._client_factory = client_factory

    def client(self) -> TushareClient:
        return self._client_factory(str(self._token_supplier() or "").strip())
