diff --git a/cozepy/__init__.py b/cozepy/__init__.py index dd63938..083c915 100644 --- a/cozepy/__init__.py +++ b/cozepy/__init__.py @@ -3,23 +3,23 @@ from .audio.transcriptions import CreateTranscriptionsResp from .audio.voices import Voice from .auth import ( + AsyncAuth, AsyncDeviceOAuthApp, + AsyncJWTAuth, AsyncJWTOAuthApp, AsyncPKCEOAuthApp, + AsyncTokenAuth, AsyncWebOAuthApp, Auth, - AsyncAuth, DeviceAuthCode, DeviceOAuthApp, JWTAuth, - AsyncJWTAuth, JWTOAuthApp, OAuthApp, OAuthToken, PKCEOAuthApp, Scope, TokenAuth, - AsyncTokenAuth, WebOAuthApp, load_oauth_app_from_config, ) diff --git a/cozepy/auth/__init__.py b/cozepy/auth/__init__.py index 2d314f7..f901bbd 100644 --- a/cozepy/auth/__init__.py +++ b/cozepy/auth/__init__.py @@ -77,12 +77,12 @@ def __init__(self, client_id: str, base_url: str, www_base_url: str): self._requester = Requester() def _get_oauth_url( - self, - redirect_uri: str, - code_challenge: Optional[str] = None, - code_challenge_method: Optional[str] = None, - state: str = "", - workspace_id: Optional[str] = None, + self, + redirect_uri: str, + code_challenge: Optional[str] = None, + code_challenge_method: Optional[str] = None, + state: str = "", + workspace_id: Optional[str] = None, ): params = { "response_type": "code", @@ -163,10 +163,10 @@ def __init__(self, client_id: str, client_secret: str, base_url: str = COZE_COM_ super().__init__(client_id, base_url, www_base_url=www_base_url) def get_oauth_url( - self, - redirect_uri: str, - state: str = "", - workspace_id: Optional[str] = None, + self, + redirect_uri: str, + state: str = "", + workspace_id: Optional[str] = None, ): """ Get the pkce flow authorized url. @@ -185,9 +185,9 @@ def get_oauth_url( ) def get_access_token( - self, - redirect_uri: str, - code: str, + self, + redirect_uri: str, + code: str, ) -> OAuthToken: """ Get the token by jwt with jwt auth flow. @@ -225,10 +225,10 @@ def __init__(self, client_id: str, client_secret: str, base_url: str = COZE_COM_ super().__init__(client_id, base_url, www_base_url=www_base_url) def get_oauth_url( - self, - redirect_uri: str, - state: str = "", - workspace_id: Optional[str] = None, + self, + redirect_uri: str, + state: str = "", + workspace_id: Optional[str] = None, ): """ Get the pkce flow authorized url. @@ -247,9 +247,9 @@ def get_oauth_url( ) async def get_access_token( - self, - redirect_uri: str, - code: str, + self, + redirect_uri: str, + code: str, ) -> OAuthToken: """ Get the token by jwt with jwt auth flow. @@ -289,7 +289,7 @@ def __init__(self, client_id: str, private_key: str, public_key_id: str, base_ur super().__init__(client_id, base_url, www_base_url="") def get_access_token( - self, ttl: int = 900, scope: Optional[Scope] = None, session_name: Optional[str] = None + self, ttl: int = 900, scope: Optional[Scope] = None, session_name: Optional[str] = None ) -> OAuthToken: """ Get the token by jwt with jwt auth flow. @@ -332,7 +332,7 @@ def __init__(self, client_id: str, private_key: str, public_key_id: str, base_ur super().__init__(client_id, base_url, www_base_url="") async def get_access_token( - self, ttl: int, scope: Optional[Scope] = None, session_name: Optional[str] = None + self, ttl: int, scope: Optional[Scope] = None, session_name: Optional[str] = None ) -> OAuthToken: """ Get the token by jwt with jwt auth flow. @@ -366,12 +366,12 @@ def __init__(self, client_id: str, base_url: str = COZE_COM_BASE_URL, www_base_u ) def get_oauth_url( - self, - redirect_uri: str, - code_verifier: str, - code_challenge_method: Literal["plain", "S256"] = "plain", - state: str = "", - workspace_id: Optional[str] = None, + self, + redirect_uri: str, + code_verifier: str, + code_challenge_method: Literal["plain", "S256"] = "plain", + state: str = "", + workspace_id: Optional[str] = None, ): """ Get the pkce flow authorized url. @@ -433,12 +433,12 @@ def __init__(self, client_id: str, base_url: str = COZE_COM_BASE_URL, www_base_u ) def get_oauth_url( - self, - redirect_uri: str, - code_verifier: str, - code_challenge_method: Literal["plain", "S256"] = "plain", - state: str = "", - workspace_id: Optional[str] = None, + self, + redirect_uri: str, + code_verifier: str, + code_challenge_method: Literal["plain", "S256"] = "plain", + state: str = "", + workspace_id: Optional[str] = None, ): """ Get the pkce flow authorized url. @@ -500,8 +500,8 @@ def __init__(self, client_id: str, base_url: str = COZE_COM_BASE_URL, www_base_u ) def get_device_code( - self, - workspace_id: Optional[str] = None, + self, + workspace_id: Optional[str] = None, ) -> DeviceAuthCode: """ Get the pkce flow authorized url. @@ -735,13 +735,13 @@ class JWTAuth(Auth): """ def __init__( - self, - client_id: Optional[str] = None, - private_key: Optional[str] = None, - public_key_id: Optional[str] = None, - ttl: int = 7200, - base_url: str = COZE_COM_BASE_URL, - oauth_app: Optional[JWTOAuthApp] = None, + self, + client_id: Optional[str] = None, + private_key: Optional[str] = None, + public_key_id: Optional[str] = None, + ttl: int = 7200, + base_url: str = COZE_COM_BASE_URL, + oauth_app: Optional[JWTOAuthApp] = None, ): assert ttl > 0 self._ttl = ttl @@ -784,7 +784,7 @@ class AsyncAuth(abc.ABC): @property @abc.abstractmethod - async def token_type(self) -> str: + def token_type(self) -> str: """ The authorization type used in the http request header. @@ -809,7 +809,7 @@ async def authentication(self, headers: dict) -> None: :param headers: http headers :return: None """ - headers["Authorization"] = f"{await self.token_type} {await self.token}" + headers["Authorization"] = f"{self.token_type} {await self.token}" class AsyncTokenAuth(AsyncAuth): @@ -823,7 +823,7 @@ def __init__(self, token: str): self._token = token @property - async def token_type(self) -> str: + def token_type(self) -> str: return "Bearer" @property @@ -837,13 +837,13 @@ class AsyncJWTAuth(AsyncAuth): """ def __init__( - self, - client_id: Optional[str] = None, - private_key: Optional[str] = None, - public_key_id: Optional[str] = None, - ttl: int = 7200, - base_url: str = COZE_COM_BASE_URL, - oauth_app: Optional[AsyncJWTOAuthApp] = None, + self, + client_id: Optional[str] = None, + private_key: Optional[str] = None, + public_key_id: Optional[str] = None, + ttl: int = 7200, + base_url: str = COZE_COM_BASE_URL, + oauth_app: Optional[AsyncJWTOAuthApp] = None, ): assert ttl > 0 self._ttl = ttl @@ -862,7 +862,7 @@ def __init__( ) @property - async def token_type(self) -> str: + def token_type(self) -> str: return "Bearer" @property diff --git a/cozepy/datasets/__init__.py b/cozepy/datasets/__init__.py index 29d7b6c..075a2da 100644 --- a/cozepy/datasets/__init__.py +++ b/cozepy/datasets/__init__.py @@ -96,9 +96,7 @@ def documents(self) -> "DatasetsDocumentsClient": if self._documents is None: from .documents import DatasetsDocumentsClient - self._documents = DatasetsDocumentsClient( - base_url=self._base_url, requester=self._requester - ) + self._documents = DatasetsDocumentsClient(base_url=self._base_url, requester=self._requester) return self._documents @property @@ -110,13 +108,13 @@ def images(self) -> "DatasetsImagesClient": return self._images def create( - self, - *, - name: str, - space_id: str, - format_type: DocumentFormatType, - description: Optional[str] = None, - icon_file_id: Optional[str] = None, + self, + *, + name: str, + space_id: str, + format_type: DocumentFormatType, + description: Optional[str] = None, + icon_file_id: Optional[str] = None, ) -> CreateDatasetResp: """ Create Dataset @@ -147,14 +145,14 @@ def create( ) def list( - self, - *, - space_id: str, - name: Optional[str] = None, - format_type: Optional[DocumentFormatType] = None, - page_num: int = 1, - page_size: int = 10, - **kwargs, + self, + *, + space_id: str, + name: Optional[str] = None, + format_type: Optional[DocumentFormatType] = None, + page_num: int = 1, + page_size: int = 10, + **kwargs, ) -> NumberPaged[Dataset]: """ List Datasets @@ -196,12 +194,12 @@ def request_maker(i_page_num: int, i_page_size: int) -> HTTPRequest: ) def update( - self, - *, - dataset_id: str, - name: str, - description: Optional[str] = None, - icon_file_id: Optional[str] = None, + self, + *, + dataset_id: str, + name: str, + description: Optional[str] = None, + icon_file_id: Optional[str] = None, ) -> UpdateDatasetRes: """ Update Dataset @@ -230,9 +228,9 @@ def update( ) def delete( - self, - *, - dataset_id: str, + self, + *, + dataset_id: str, ) -> DeleteDatasetRes: """ Delete Dataset @@ -253,10 +251,10 @@ def delete( ) def process( - self, - *, - dataset_id: str, - document_ids: List[str], + self, + *, + dataset_id: str, + document_ids: List[str], ) -> ListResponse[DocumentProgress]: """ Check the upload progress @@ -296,9 +294,7 @@ def documents(self) -> "AsyncDatasetsDocumentsClient": if self._documents is None: from .documents import AsyncDatasetsDocumentsClient - self._documents = AsyncDatasetsDocumentsClient( - base_url=self._base_url, requester=self._requester - ) + self._documents = AsyncDatasetsDocumentsClient(base_url=self._base_url, requester=self._requester) return self._documents @property @@ -306,19 +302,17 @@ def images(self) -> "AsyncDatasetsImagesClient": if self._images is None: from .images import AsyncDatasetsImagesClient - self._images = AsyncDatasetsImagesClient( - base_url=self._base_url, requester=self._requester - ) + self._images = AsyncDatasetsImagesClient(base_url=self._base_url, requester=self._requester) return self._images async def create( - self, - *, - name: str, - space_id: str, - format_type: DocumentFormatType, - description: Optional[str] = None, - icon_file_id: Optional[str] = None, + self, + *, + name: str, + space_id: str, + format_type: DocumentFormatType, + description: Optional[str] = None, + icon_file_id: Optional[str] = None, ) -> CreateDatasetResp: """ Create Dataset @@ -346,14 +340,14 @@ async def create( ) async def list( - self, - *, - space_id: str, - name: Optional[str] = None, - format_type: Optional[DocumentFormatType] = None, - page_num: int = 1, - page_size: int = 10, - **kwargs, + self, + *, + space_id: str, + name: Optional[str] = None, + format_type: Optional[DocumentFormatType] = None, + page_num: int = 1, + page_size: int = 10, + **kwargs, ) -> AsyncNumberPaged[Dataset]: """ List Datasets @@ -395,12 +389,12 @@ async def request_maker(i_page_num: int, i_page_size: int) -> HTTPRequest: ) async def update( - self, - *, - dataset_id: str, - name: str, - description: Optional[str] = None, - icon_file_id: Optional[str] = None, + self, + *, + dataset_id: str, + name: str, + description: Optional[str] = None, + icon_file_id: Optional[str] = None, ) -> UpdateDatasetRes: """ Update Dataset @@ -429,9 +423,9 @@ async def update( ) async def delete( - self, - *, - dataset_id: str, + self, + *, + dataset_id: str, ) -> DeleteDatasetRes: """ Delete Dataset @@ -452,10 +446,10 @@ async def delete( ) async def process( - self, - *, - dataset_id: str, - document_ids: List[str], + self, + *, + dataset_id: str, + document_ids: List[str], ) -> ListResponse[DocumentProgress]: """ Check the upload progress diff --git a/cozepy/model.py b/cozepy/model.py index 1284c91..41b96ec 100644 --- a/cozepy/model.py +++ b/cozepy/model.py @@ -4,6 +4,7 @@ Any, AsyncIterator, Callable, + Coroutine, Dict, Generic, Iterable, @@ -14,7 +15,7 @@ TypeVar, Union, cast, - overload, Coroutine, + overload, ) import httpx diff --git a/cozepy/request.py b/cozepy/request.py index ebc834d..06243d2 100644 --- a/cozepy/request.py +++ b/cozepy/request.py @@ -28,7 +28,7 @@ from cozepy.version import coze_client_user_agent, user_agent if TYPE_CHECKING: - from cozepy.auth import Auth, AsyncAuth + from cozepy.auth import AsyncAuth, Auth T = TypeVar("T", bound=BaseModel) @@ -55,11 +55,11 @@ class Requester(object): """ def __init__( - self, - auth: Optional["Auth"] = None, - async_auth: Optional["AsyncAuth"] = None, - sync_client: Optional[SyncHTTPClient] = None, - async_client: Optional[AsyncHTTPClient] = None, + self, + auth: Optional["Auth"] = None, + async_auth: Optional["AsyncAuth"] = None, + sync_client: Optional[SyncHTTPClient] = None, + async_client: Optional[AsyncHTTPClient] = None, ): self._auth = auth self._async_auth = async_auth @@ -77,16 +77,16 @@ async def async_auth_header(self, headers: dict): await self._async_auth.authentication(headers) def make_request( - self, - method: str, - url: str, - params: Optional[dict] = None, - headers: Optional[dict] = None, - json: Optional[dict] = None, - files: Optional[dict] = None, - cast: Union[Type[T], List[Type[T]], Type[ListResponse[T]], Type[FileHTTPResponse], None] = None, - data_field: str = "data", - stream: bool = False, + self, + method: str, + url: str, + params: Optional[dict] = None, + headers: Optional[dict] = None, + json: Optional[dict] = None, + files: Optional[dict] = None, + cast: Union[Type[T], List[Type[T]], Type[ListResponse[T]], Type[FileHTTPResponse], None] = None, + data_field: str = "data", + stream: bool = False, ) -> HTTPRequest: if headers is None: headers = {} @@ -119,16 +119,16 @@ def make_request( ) async def amake_request( - self, - method: str, - url: str, - params: Optional[dict] = None, - headers: Optional[dict] = None, - json: Optional[dict] = None, - files: Optional[dict] = None, - cast: Union[Type[T], List[Type[T]], Type[ListResponse[T]], Type[FileHTTPResponse], None] = None, - data_field: str = "data", - stream: bool = False, + self, + method: str, + url: str, + params: Optional[dict] = None, + headers: Optional[dict] = None, + json: Optional[dict] = None, + files: Optional[dict] = None, + cast: Union[Type[T], List[Type[T]], Type[ListResponse[T]], Type[FileHTTPResponse], None] = None, + data_field: str = "data", + stream: bool = False, ) -> HTTPRequest: if headers is None: headers = {} @@ -166,105 +166,99 @@ async def amake_request( @overload def request( - self, - method: str, - url: str, - stream: Literal[False], - cast: Type[T], - params: dict = ..., - headers: Optional[dict] = ..., - body: dict = ..., - files: dict = ..., - data_field: str = ..., - ) -> T: - ... + self, + method: str, + url: str, + stream: Literal[False], + cast: Type[T], + params: dict = ..., + headers: Optional[dict] = ..., + body: dict = ..., + files: dict = ..., + data_field: str = ..., + ) -> T: ... @overload def request( - self, - method: str, - url: str, - stream: Literal[False], - cast: List[Type[T]], - params: dict = ..., - headers: Optional[dict] = ..., - body: dict = ..., - files: dict = ..., - data_field: str = ..., - ) -> List[T]: - ... + self, + method: str, + url: str, + stream: Literal[False], + cast: List[Type[T]], + params: dict = ..., + headers: Optional[dict] = ..., + body: dict = ..., + files: dict = ..., + data_field: str = ..., + ) -> List[T]: ... @overload def request( - self, - method: str, - url: str, - stream: Literal[False], - cast: Type[ListResponse[T]], - params: dict = ..., - headers: Optional[dict] = ..., - body: dict = ..., - files: dict = ..., - data_field: str = ..., - ) -> ListResponse[T]: - ... + self, + method: str, + url: str, + stream: Literal[False], + cast: Type[ListResponse[T]], + params: dict = ..., + headers: Optional[dict] = ..., + body: dict = ..., + files: dict = ..., + data_field: str = ..., + ) -> ListResponse[T]: ... @overload def request( - self, - method: str, - url: str, - stream: Literal[False], - cast: Type[FileHTTPResponse], - params: dict = ..., - headers: Optional[dict] = ..., - body: dict = ..., - files: dict = ..., - data_field: str = ..., - ) -> FileHTTPResponse: - ... + self, + method: str, + url: str, + stream: Literal[False], + cast: Type[FileHTTPResponse], + params: dict = ..., + headers: Optional[dict] = ..., + body: dict = ..., + files: dict = ..., + data_field: str = ..., + ) -> FileHTTPResponse: ... @overload def request( - self, - method: str, - url: str, - stream: Literal[True], - cast: None, - params: dict = ..., - headers: Optional[dict] = ..., - body: dict = ..., - files: dict = ..., - data_field: str = ..., - ) -> IteratorHTTPResponse[str]: - ... + self, + method: str, + url: str, + stream: Literal[True], + cast: None, + params: dict = ..., + headers: Optional[dict] = ..., + body: dict = ..., + files: dict = ..., + data_field: str = ..., + ) -> IteratorHTTPResponse[str]: ... @overload def request( - self, - method: str, - url: str, - stream: Literal[False], - cast: None, - params: dict = ..., - headers: Optional[dict] = ..., - body: dict = ..., - files: dict = ..., - data_field: str = ..., - ) -> None: - ... + self, + method: str, + url: str, + stream: Literal[False], + cast: None, + params: dict = ..., + headers: Optional[dict] = ..., + body: dict = ..., + files: dict = ..., + data_field: str = ..., + ) -> None: ... def request( - self, - method: str, - url: str, - stream: Literal[True, False], - cast: Union[Type[T], List[Type[T]], Type[ListResponse[T]], Type[FileHTTPResponse], None], - params: Optional[dict] = None, - headers: Optional[dict] = None, - body: Optional[dict] = None, - files: Optional[dict] = None, - data_field: str = "data", + self, + method: str, + url: str, + stream: Literal[True, False], + cast: Union[Type[T], List[Type[T]], Type[ListResponse[T]], Type[FileHTTPResponse], None], + params: Optional[dict] = None, + headers: Optional[dict] = None, + body: Optional[dict] = None, + files: Optional[dict] = None, + data_field: str = "data", ) -> Union[T, List[T], ListResponse[T], IteratorHTTPResponse[str], FileHTTPResponse, None]: """ Send a request to the server. @@ -286,8 +280,8 @@ def request( return self.send(request) def send( - self, - request: HTTPRequest, + self, + request: HTTPRequest, ) -> Union[T, List[T], ListResponse[T], IteratorHTTPResponse[str], FileHTTPResponse, None]: """ Send a request to the server. @@ -304,105 +298,99 @@ def send( @overload async def arequest( - self, - method: str, - url: str, - stream: Literal[False], - cast: Type[T], - params: dict = ..., - headers: Optional[dict] = ..., - body: dict = ..., - files: dict = ..., - data_field: str = ..., - ) -> T: - ... + self, + method: str, + url: str, + stream: Literal[False], + cast: Type[T], + params: dict = ..., + headers: Optional[dict] = ..., + body: dict = ..., + files: dict = ..., + data_field: str = ..., + ) -> T: ... @overload async def arequest( - self, - method: str, - url: str, - stream: Literal[False], - cast: List[Type[T]], - params: dict = ..., - headers: Optional[dict] = ..., - body: dict = ..., - files: dict = ..., - data_field: str = ..., - ) -> List[T]: - ... + self, + method: str, + url: str, + stream: Literal[False], + cast: List[Type[T]], + params: dict = ..., + headers: Optional[dict] = ..., + body: dict = ..., + files: dict = ..., + data_field: str = ..., + ) -> List[T]: ... @overload async def arequest( - self, - method: str, - url: str, - stream: Literal[False], - cast: Type[ListResponse[T]], - params: dict = ..., - headers: Optional[dict] = ..., - body: dict = ..., - files: dict = ..., - data_field: str = ..., - ) -> ListResponse[T]: - ... + self, + method: str, + url: str, + stream: Literal[False], + cast: Type[ListResponse[T]], + params: dict = ..., + headers: Optional[dict] = ..., + body: dict = ..., + files: dict = ..., + data_field: str = ..., + ) -> ListResponse[T]: ... @overload async def arequest( - self, - method: str, - url: str, - stream: Literal[False], - cast: Type[FileHTTPResponse], - params: dict = ..., - headers: Optional[dict] = ..., - body: dict = ..., - files: dict = ..., - data_field: str = ..., - ) -> FileHTTPResponse: - ... + self, + method: str, + url: str, + stream: Literal[False], + cast: Type[FileHTTPResponse], + params: dict = ..., + headers: Optional[dict] = ..., + body: dict = ..., + files: dict = ..., + data_field: str = ..., + ) -> FileHTTPResponse: ... @overload async def arequest( - self, - method: str, - url: str, - stream: Literal[False], - cast: None, - params: Optional[dict] = ..., - headers: Optional[dict] = ..., - body: Optional[dict] = ..., - files: Optional[dict] = ..., - data_field: str = ..., - ) -> None: - ... + self, + method: str, + url: str, + stream: Literal[False], + cast: None, + params: Optional[dict] = ..., + headers: Optional[dict] = ..., + body: Optional[dict] = ..., + files: Optional[dict] = ..., + data_field: str = ..., + ) -> None: ... @overload async def arequest( - self, - method: str, - url: str, - stream: Literal[True], - cast: None, - params: Optional[dict] = ..., - headers: Optional[dict] = ..., - body: Optional[dict] = ..., - files: Optional[dict] = ..., - data_field: str = ..., - ) -> AsyncIteratorHTTPResponse[str]: - ... + self, + method: str, + url: str, + stream: Literal[True], + cast: None, + params: Optional[dict] = ..., + headers: Optional[dict] = ..., + body: Optional[dict] = ..., + files: Optional[dict] = ..., + data_field: str = ..., + ) -> AsyncIteratorHTTPResponse[str]: ... async def arequest( - self, - method: str, - url: str, - stream: Literal[True, False], - cast: Union[Type[T], List[Type[T]], Type[ListResponse[T]], Type[FileHTTPResponse], None], - params: Optional[dict] = None, - headers: Optional[dict] = None, - body: Optional[dict] = None, - files: Optional[dict] = None, - data_field: str = "data", + self, + method: str, + url: str, + stream: Literal[True, False], + cast: Union[Type[T], List[Type[T]], Type[ListResponse[T]], Type[FileHTTPResponse], None], + params: Optional[dict] = None, + headers: Optional[dict] = None, + body: Optional[dict] = None, + files: Optional[dict] = None, + data_field: str = "data", ) -> Union[T, List[T], ListResponse[T], AsyncIteratorHTTPResponse[str], FileHTTPResponse, None]: """ Send a request to the server. @@ -418,8 +406,8 @@ async def arequest( ) async def asend( - self, - request: HTTPRequest, + self, + request: HTTPRequest, ) -> Union[T, List[T], ListResponse[T], AsyncIteratorHTTPResponse[str], FileHTTPResponse, None]: return self._parse_response( method=request.method, @@ -445,39 +433,37 @@ def async_client(self) -> "AsyncHTTPClient": @overload def _parse_response( - self, - method: str, - url: str, - is_async: Literal[False], - response: httpx.Response, - cast: Union[Type[T], List[Type[T]], Type[ListResponse[T]], Type[FileHTTPResponse], None], - stream: bool = ..., - data_field: str = ..., - ) -> Union[T, List[T], ListResponse[T], IteratorHTTPResponse[str], FileHTTPResponse, None]: - ... + self, + method: str, + url: str, + is_async: Literal[False], + response: httpx.Response, + cast: Union[Type[T], List[Type[T]], Type[ListResponse[T]], Type[FileHTTPResponse], None], + stream: bool = ..., + data_field: str = ..., + ) -> Union[T, List[T], ListResponse[T], IteratorHTTPResponse[str], FileHTTPResponse, None]: ... @overload def _parse_response( - self, - method: str, - url: str, - is_async: Literal[True], - response: httpx.Response, - cast: Union[Type[T], List[Type[T]], Type[ListResponse[T]], Type[FileHTTPResponse], None], - stream: bool = ..., - data_field: str = ..., - ) -> Union[T, List[T], ListResponse[T], AsyncIteratorHTTPResponse[str], FileHTTPResponse, None]: - ... + self, + method: str, + url: str, + is_async: Literal[True], + response: httpx.Response, + cast: Union[Type[T], List[Type[T]], Type[ListResponse[T]], Type[FileHTTPResponse], None], + stream: bool = ..., + data_field: str = ..., + ) -> Union[T, List[T], ListResponse[T], AsyncIteratorHTTPResponse[str], FileHTTPResponse, None]: ... def _parse_response( - self, - method: str, - url: str, - is_async: Literal[True, False], - response: httpx.Response, - cast: Union[Type[T], List[Type[T]], Type[ListResponse[T]], Type[FileHTTPResponse], None], - stream: bool = False, - data_field: str = "data", + self, + method: str, + url: str, + is_async: Literal[True, False], + response: httpx.Response, + cast: Union[Type[T], List[Type[T]], Type[ListResponse[T]], Type[FileHTTPResponse], None], + stream: bool = False, + data_field: str = "data", ) -> Union[ T, List[T], ListResponse[T], IteratorHTTPResponse[str], AsyncIteratorHTTPResponse[str], FileHTTPResponse, None ]: @@ -522,7 +508,7 @@ def _parse_response( return res # type: ignore def _parse_requests_code_msg( - self, method: str, url: str, response: Response, data_field: str = "data" + self, method: str, url: str, response: Response, data_field: str = "data" ) -> Tuple[Optional[int], str, Any]: try: response.read() diff --git a/cozepy/websockets/audio/speech/__init__.py b/cozepy/websockets/audio/speech/__init__.py index dc20101..05c3a89 100644 --- a/cozepy/websockets/audio/speech/__init__.py +++ b/cozepy/websockets/audio/speech/__init__.py @@ -84,11 +84,11 @@ def on_speech_audio_completed(self, cli: "WebsocketsAudioSpeechClient", event: S class WebsocketsAudioSpeechClient(WebsocketsBaseClient): def __init__( - self, - base_url: str, - requester: Requester, - on_event: Union[WebsocketsAudioSpeechEventHandler, Dict[WebsocketsEventType, Callable]], - **kwargs, + self, + base_url: str, + requester: Requester, + on_event: Union[WebsocketsAudioSpeechEventHandler, Dict[WebsocketsEventType, Callable]], + **kwargs, ): if isinstance(on_event, WebsocketsAudioSpeechEventHandler): on_event = on_event.to_dict( @@ -164,7 +164,7 @@ def __init__(self, base_url: str, requester: Requester): self._requester = requester def create( - self, *, on_event: Union[WebsocketsAudioSpeechEventHandler, Dict[WebsocketsEventType, Callable]], **kwargs + self, *, on_event: Union[WebsocketsAudioSpeechEventHandler, Dict[WebsocketsEventType, Callable]], **kwargs ) -> WebsocketsAudioSpeechClient: return WebsocketsAudioSpeechClient( base_url=self._base_url, @@ -179,7 +179,7 @@ async def on_speech_created(self, cli: "AsyncWebsocketsAudioSpeechClient", event pass async def on_input_text_buffer_completed( - self, cli: "AsyncWebsocketsAudioSpeechClient", event: InputTextBufferCompletedEvent + self, cli: "AsyncWebsocketsAudioSpeechClient", event: InputTextBufferCompletedEvent ): pass @@ -187,18 +187,18 @@ async def on_speech_audio_update(self, cli: "AsyncWebsocketsAudioSpeechClient", pass async def on_speech_audio_completed( - self, cli: "AsyncWebsocketsAudioSpeechClient", event: SpeechAudioCompletedEvent + self, cli: "AsyncWebsocketsAudioSpeechClient", event: SpeechAudioCompletedEvent ): pass class AsyncWebsocketsAudioSpeechClient(AsyncWebsocketsBaseClient): def __init__( - self, - base_url: str, - requester: Requester, - on_event: Union[AsyncWebsocketsAudioSpeechEventHandler, Dict[WebsocketsEventType, Callable]], - **kwargs, + self, + base_url: str, + requester: Requester, + on_event: Union[AsyncWebsocketsAudioSpeechEventHandler, Dict[WebsocketsEventType, Callable]], + **kwargs, ): if isinstance(on_event, AsyncWebsocketsAudioSpeechEventHandler): on_event = on_event.to_dict( @@ -269,10 +269,10 @@ def __init__(self, base_url: str, requester: Requester): self._requester = requester def create( - self, - *, - on_event: Union[AsyncWebsocketsAudioSpeechEventHandler, Dict[WebsocketsEventType, Callable]], - **kwargs, + self, + *, + on_event: Union[AsyncWebsocketsAudioSpeechEventHandler, Dict[WebsocketsEventType, Callable]], + **kwargs, ) -> AsyncWebsocketsAudioSpeechClient: return AsyncWebsocketsAudioSpeechClient( base_url=self._base_url, diff --git a/cozepy/websockets/audio/transcriptions/__init__.py b/cozepy/websockets/audio/transcriptions/__init__.py index 5323fc8..3d27150 100644 --- a/cozepy/websockets/audio/transcriptions/__init__.py +++ b/cozepy/websockets/audio/transcriptions/__init__.py @@ -83,28 +83,28 @@ def on_transcriptions_created(self, cli: "WebsocketsAudioTranscriptionsClient", pass def on_input_audio_buffer_completed( - self, cli: "WebsocketsAudioTranscriptionsClient", event: InputAudioBufferCompletedEvent + self, cli: "WebsocketsAudioTranscriptionsClient", event: InputAudioBufferCompletedEvent ): pass def on_transcriptions_message_update( - self, cli: "WebsocketsAudioTranscriptionsClient", event: TranscriptionsMessageUpdateEvent + self, cli: "WebsocketsAudioTranscriptionsClient", event: TranscriptionsMessageUpdateEvent ): pass def on_transcriptions_message_completed( - self, cli: "WebsocketsAudioTranscriptionsClient", event: TranscriptionsMessageCompletedEvent + self, cli: "WebsocketsAudioTranscriptionsClient", event: TranscriptionsMessageCompletedEvent ): pass class WebsocketsAudioTranscriptionsClient(WebsocketsBaseClient): def __init__( - self, - base_url: str, - requester: Requester, - on_event: Union[WebsocketsAudioTranscriptionsEventHandler, Dict[WebsocketsEventType, Callable]], - **kwargs, + self, + base_url: str, + requester: Requester, + on_event: Union[WebsocketsAudioTranscriptionsEventHandler, Dict[WebsocketsEventType, Callable]], + **kwargs, ): if isinstance(on_event, WebsocketsAudioTranscriptionsEventHandler): on_event = on_event.to_dict( @@ -182,10 +182,10 @@ def __init__(self, base_url: str, requester: Requester): self._requester = requester def create( - self, - *, - on_event: Union[WebsocketsAudioTranscriptionsEventHandler, Dict[WebsocketsEventType, Callable]], - **kwargs, + self, + *, + on_event: Union[WebsocketsAudioTranscriptionsEventHandler, Dict[WebsocketsEventType, Callable]], + **kwargs, ) -> WebsocketsAudioTranscriptionsClient: return WebsocketsAudioTranscriptionsClient( base_url=self._base_url, @@ -197,33 +197,33 @@ def create( class AsyncWebsocketsAudioTranscriptionsEventHandler(AsyncWebsocketsBaseEventHandler): async def on_transcriptions_created( - self, cli: "AsyncWebsocketsAudioTranscriptionsClient", event: TranscriptionsCreatedEvent + self, cli: "AsyncWebsocketsAudioTranscriptionsClient", event: TranscriptionsCreatedEvent ): pass async def on_input_audio_buffer_completed( - self, cli: "AsyncWebsocketsAudioTranscriptionsClient", event: InputAudioBufferCompletedEvent + self, cli: "AsyncWebsocketsAudioTranscriptionsClient", event: InputAudioBufferCompletedEvent ): pass async def on_transcriptions_message_update( - self, cli: "AsyncWebsocketsAudioTranscriptionsClient", event: TranscriptionsMessageUpdateEvent + self, cli: "AsyncWebsocketsAudioTranscriptionsClient", event: TranscriptionsMessageUpdateEvent ): pass async def on_transcriptions_message_completed( - self, cli: "AsyncWebsocketsAudioTranscriptionsClient", event: TranscriptionsMessageCompletedEvent + self, cli: "AsyncWebsocketsAudioTranscriptionsClient", event: TranscriptionsMessageCompletedEvent ): pass class AsyncWebsocketsAudioTranscriptionsClient(AsyncWebsocketsBaseClient): def __init__( - self, - base_url: str, - requester: Requester, - on_event: Union[AsyncWebsocketsAudioTranscriptionsEventHandler, Dict[WebsocketsEventType, Callable]], - **kwargs, + self, + base_url: str, + requester: Requester, + on_event: Union[AsyncWebsocketsAudioTranscriptionsEventHandler, Dict[WebsocketsEventType, Callable]], + **kwargs, ): if isinstance(on_event, AsyncWebsocketsAudioTranscriptionsEventHandler): on_event = on_event.to_dict( @@ -301,10 +301,10 @@ def __init__(self, base_url: str, requester: Requester): self._requester = requester def create( - self, - *, - on_event: Union[AsyncWebsocketsAudioTranscriptionsEventHandler, Dict[WebsocketsEventType, Callable]], - **kwargs, + self, + *, + on_event: Union[AsyncWebsocketsAudioTranscriptionsEventHandler, Dict[WebsocketsEventType, Callable]], + **kwargs, ) -> AsyncWebsocketsAudioTranscriptionsClient: return AsyncWebsocketsAudioTranscriptionsClient( base_url=self._base_url, diff --git a/cozepy/websockets/ws.py b/cozepy/websockets/ws.py index f7e0599..492450c 100644 --- a/cozepy/websockets/ws.py +++ b/cozepy/websockets/ws.py @@ -22,7 +22,6 @@ warnings.warn("asyncio websockets requires Python >= 3.8") - class AsyncWebsocketClientConnection(object): def recv(self, *args, **kwargs): pass @@ -33,14 +32,13 @@ def send(self, *args, **kwargs): def close(self, *args, **kwargs): pass - def asyncio_connect(*args, **kwargs): pass - class InvalidStatus(object): pass + import websockets.sync.client from pydantic import BaseModel @@ -163,14 +161,14 @@ class State(str, Enum): CLOSED = "closed" def __init__( - self, - base_url: str, - requester: Requester, - path: str, - query: Optional[Dict[str, str]] = None, - on_event: Optional[Dict[WebsocketsEventType, Callable]] = None, - wait_events: Optional[List[WebsocketsEventType]] = None, - **kwargs, + self, + base_url: str, + requester: Requester, + path: str, + query: Optional[Dict[str, str]] = None, + on_event: Optional[Dict[WebsocketsEventType, Callable]] = None, + wait_events: Optional[List[WebsocketsEventType]] = None, + **kwargs, ): self._state = self.State.INITIALIZED self._base_url = remove_url_trailing_slash(base_url) @@ -288,8 +286,7 @@ def _load_all_event(self, message: Dict) -> Optional[WebsocketsEvent]: return self._load_event(message) @abc.abstractmethod - def _load_event(self, message: Dict) -> Optional[WebsocketsEvent]: - ... + def _load_event(self, message: Dict) -> Optional[WebsocketsEvent]: ... def _wait_completed(self, events: List[WebsocketsEventType], wait_all: bool) -> None: while True: @@ -371,14 +368,14 @@ class State(str, Enum): CLOSED = "closed" def __init__( - self, - base_url: str, - requester: Requester, - path: str, - query: Optional[Dict[str, str]] = None, - on_event: Optional[Dict[WebsocketsEventType, Callable]] = None, - wait_events: Optional[List[WebsocketsEventType]] = None, - **kwargs, + self, + base_url: str, + requester: Requester, + path: str, + query: Optional[Dict[str, str]] = None, + on_event: Optional[Dict[WebsocketsEventType, Callable]] = None, + wait_events: Optional[List[WebsocketsEventType]] = None, + **kwargs, ): self._state = self.State.INITIALIZED self._base_url = remove_url_trailing_slash(base_url) @@ -489,8 +486,7 @@ def _load_all_event(self, message: Dict) -> Optional[WebsocketsEvent]: return self._load_event(message) @abc.abstractmethod - def _load_event(self, message: Dict) -> Optional[WebsocketsEvent]: - ... + def _load_event(self, message: Dict) -> Optional[WebsocketsEvent]: ... async def _wait_completed(self, wait_events: List[WebsocketsEventType], wait_all: bool) -> None: future: asyncio.Future[None] = asyncio.Future()