"""Lazy OwsClient singleton for earnings_transfer.""" from __future__ import annotations from owsclient import M2MTokenManager, OwsClient from secrets_manager.lambda_ext import LambdaSecretsManager # type: ignore import config _client: OwsClient | None = None def get_ows_client() -> OwsClient: """Return the shared OwsClient, constructing it on first call.""" global _client if _client is None: secrets_manager = LambdaSecretsManager( environment=config.ENVIRONMENT, service_name=config.APPLICATION_NAME, ) m2m_token_manager = M2MTokenManager( secrets_manager=secrets_manager, environment=config.ENVIRONMENT, service_name=config.APPLICATION_NAME, ) _client = OwsClient( environment=config.ENVIRONMENT, service_name=config.APPLICATION_NAME, m2m_token_manager=m2m_token_manager if config.ENVIRONMENT != config.DEV_ENVIRONMENT else None, ) return _client