Path: blob/master/ invest-robot-contest_TinkoffBotTwitch-main/venv/lib/python3.8/site-packages/tinkoff/invest/clients.py
7824 views
from typing import Optional12from .async_services import AsyncServices3from .channels import create_channel4from .services import Services5from .typedefs import ChannelArgumentType67__all__ = ("Client", "AsyncClient")8910class Client:11def __init__(12self,13token: str,14*,15sandbox_token: Optional[str] = None,16options: Optional[ChannelArgumentType] = None,17app_name: Optional[str] = None,18):19self._token = token20self._sandbox_token = sandbox_token21self._options = options22self._app_name = app_name23self._channel = create_channel(options=options)2425def __enter__(self) -> Services:26channel = self._channel.__enter__()27return Services(28channel,29token=self._token,30sandbox_token=self._sandbox_token,31app_name=self._app_name,32)3334def __exit__(self, exc_type, exc_val, exc_tb):35self._channel.__exit__(exc_type, exc_val, exc_tb)36return False373839class AsyncClient:40def __init__(41self,42token: str,43*,44sandbox_token: Optional[str] = None,45options: Optional[ChannelArgumentType] = None,46app_name: Optional[str] = None,47):48self._token = token49self._sandbox_token = sandbox_token50self._options = options51self._app_name = app_name52self._channel = create_channel(force_async=True, options=options)5354async def __aenter__(self) -> AsyncServices:55channel = await self._channel.__aenter__()56return AsyncServices(57channel,58token=self._token,59sandbox_token=self._sandbox_token,60app_name=self._app_name,61)6263async def __aexit__(self, exc_type, exc_val, exc_tb):64await self._channel.__aexit__(exc_type, exc_val, exc_tb)65return False666768