Source code for lime_trader.async_trader.async_client

import logging

import httpx

from lime_trader.async_trader.clients.async_account_client import AsyncAccountClient
from lime_trader.async_trader.clients.async_market_data_client import AsyncMarketDataClient
from lime_trader.async_trader.clients.async_trading_client import AsyncTradingClient
from lime_trader.constants.config import DEFAULT_TIMEOUT
from lime_trader.converters.cattr_converter import CAttrConverter

from lime_trader import LimeClient
from lime_trader.async_trader.api.async_api_client import AsyncApiClient
from lime_trader.async_trader.api.async_authenticated_api_client import AsyncAuthenticatedApiClient
from lime_trader.models.accounts import Credentials
from lime_trader.models.token_storage import AsyncApiTokenStorage
from lime_trader.utils.http_event_handlers import async_log_request, async_log_response


[docs] class AsyncLimeClient(LimeClient): def __init__(self, base_url: str, credentials: Credentials, logger: logging.Logger, auth_url: str = None, timeout: int = DEFAULT_TIMEOUT): super().__init__(base_url=base_url, credentials=credentials, logger=logger, auth_url=auth_url) self._converter = CAttrConverter() self._api_client = AsyncApiClient(base_url=self._base_url, converter=self._converter, use_https=self._api_use_https, use_wss=self._api_use_wss, logger=self._logger, timeout=timeout, http_client=httpx.AsyncClient( event_hooks={ 'request': [async_log_request], 'response': [async_log_response] } ) ) self._auth_api_client = AsyncApiClient(base_url=self._auth_url, converter=self._converter, use_https=self._auth_use_https, use_wss=self._auth_use_wss, logger=self._logger, timeout=timeout, http_client=httpx.AsyncClient( event_hooks={ 'request': [async_log_request], 'response': [async_log_response] } ) ) self._token_storage = AsyncApiTokenStorage(credentials=credentials, api_client=self._auth_api_client) self._authenticated_api_client = AsyncAuthenticatedApiClient(api_client=self._api_client, token_storage=self._token_storage, credentials=self._credentials, logger=self._logger) # instantiate clients self.account = AsyncAccountClient(api_client=self._authenticated_api_client, logger=self._logger) self.trading = AsyncTradingClient(api_client=self._authenticated_api_client, logger=self._logger) self.market = AsyncMarketDataClient(api_client=self._authenticated_api_client, logger=self._logger)