1- import os
2- from types import TracebackType
31import json
42import logging
5- from typing import Optional , Union
6- from httpx import Limits , BaseTransport , AsyncBaseTransport
3+ import os
74from dataclasses import dataclass
5+ from types import TracebackType
6+ from typing import Any , Optional , Union
7+
8+ from httpx import AsyncBaseTransport , BaseTransport , Limits
89
910from e2b .api .client .client import AuthenticatedClient
10- from e2b .connection_config import ConnectionConfig
11+ from e2b .api . client . types import Response
1112from e2b .api .metadata import default_headers
13+ from e2b .connection_config import ConnectionConfig
1214from e2b .exceptions import (
1315 AuthenticationException ,
14- SandboxException ,
1516 RateLimitException ,
17+ SandboxException ,
1618)
17- from e2b .api .client .types import Response
1819
1920logger = logging .getLogger (__name__ )
2021
@@ -34,7 +35,7 @@ class SandboxCreateResponse:
3435
3536
3637def handle_api_exception (
37- e : Response ,
38+ e : Response [ Any ] ,
3839 default_exception_class : type [Exception ] = SandboxException ,
3940 stack_trace : Optional [TracebackType ] = None ,
4041):
@@ -106,6 +107,11 @@ def __init__(
106107 )
107108 token = config .access_token
108109
110+ if token is None :
111+ raise AuthenticationException (
112+ "Authentication token is required but not provided." ,
113+ )
114+
109115 auth_header_name = "X-API-KEY" if require_api_key else "Authorization"
110116 prefix = "" if require_api_key else "Bearer"
111117
@@ -115,7 +121,7 @@ def __init__(
115121 }
116122
117123 # Prevent passing these parameters twice
118- more_headers : Optional [dict ] = kwargs .pop ("headers" , None )
124+ more_headers : Optional [dict [ str , str ] ] = kwargs .pop ("headers" , None )
119125 if more_headers :
120126 headers .update (more_headers )
121127 kwargs .pop ("token" , None )
@@ -143,7 +149,7 @@ def __init__(
143149 def _log_request (self , request ):
144150 logger .info (f"Request { request .method } { request .url } " )
145151
146- def _log_response (self , response : Response ):
152+ def _log_response (self , response : Response [ Any ] ):
147153 if response .status_code >= 400 :
148154 logger .error (f"Response { response .status_code } " )
149155 else :
@@ -155,7 +161,7 @@ class AsyncApiClient(ApiClient):
155161 async def _log_request (self , request ):
156162 logger .info (f"Request { request .method } { request .url } " )
157163
158- async def _log_response (self , response : Response ):
164+ async def _log_response (self , response : Response [ Any ] ):
159165 if response .status_code >= 400 :
160166 logger .error (f"Response { response .status_code } " )
161167 else :
0 commit comments