from logging import Logger from typing import Type from apollo_utils.job.clients.base.client import BaseApiClient from apollo_utils.job.clients.factory import BaseClientFactory from juno_email_messages.clients.apollo_api import ApolloClient from juno_email_messages.clients.atlas_api import AtlasClient from juno_email_messages.clients.dsp_api import DspClient from juno_email_messages.clients.gate_api import GateClient from juno_email_messages.clients.notifications_api import NotificationsClient from juno_email_messages.clients.user_data_api import UserDataClient class ClientFactory(BaseClientFactory): logger: Logger = None def _get_client(self, client_cls: Type[BaseApiClient]) -> BaseApiClient: result = super()._get_client(client_cls) result.logger = self.logger return result @property def apollo(self): return self._get_client(ApolloClient) @property def dsp(self): return self._get_client(DspClient) @property def gate(self): return self._get_client(GateClient) @property def user_data(self): return self._get_client(UserDataClient) @property def atlas(self): return self._get_client(AtlasClient) @property def notifications(self): return self._get_client(NotificationsClient)