-
Notifications
You must be signed in to change notification settings - Fork 887
Expand file tree
/
Copy pathconnection_config.py
More file actions
94 lines (74 loc) · 2.56 KB
/
connection_config.py
File metadata and controls
94 lines (74 loc) · 2.56 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
import os
from typing import Literal, Optional, Dict
from httpx._types import ProxyTypes
from e2b.api.metadata import package_version
REQUEST_TIMEOUT: float = 60.0 # 60 seconds
KEEPALIVE_PING_INTERVAL_SEC = 50 # 50 seconds
KEEPALIVE_PING_HEADER = "Keepalive-Ping-Interval"
class ConnectionConfig:
"""
Configuration for the connection to the API.
"""
@staticmethod
def _domain():
return os.getenv("E2B_DOMAIN") or "e2b.app"
@staticmethod
def _debug():
return os.getenv("E2B_DEBUG", "false").lower() == "true"
@staticmethod
def _api_key():
return os.getenv("E2B_API_KEY")
@staticmethod
def _access_token():
return os.getenv("E2B_ACCESS_TOKEN")
def __init__(
self,
domain: Optional[str] = None,
debug: Optional[bool] = None,
api_key: Optional[str] = None,
access_token: Optional[str] = None,
request_timeout: Optional[float] = None,
headers: Optional[Dict[str, str]] = None,
proxy: Optional[ProxyTypes] = None,
):
self.domain = domain or ConnectionConfig._domain()
self.debug = debug or ConnectionConfig._debug()
self.api_key = api_key or ConnectionConfig._api_key()
self.access_token = access_token or ConnectionConfig._access_token()
self.headers = headers or {}
self.headers["User-Agent"] = f"e2b-python-sdk/{package_version}"
self.proxy = proxy
self.request_timeout = ConnectionConfig._get_request_timeout(
REQUEST_TIMEOUT,
request_timeout,
)
if request_timeout == 0:
self.request_timeout = None
elif request_timeout is not None:
self.request_timeout = request_timeout
else:
self.request_timeout = REQUEST_TIMEOUT
self.api_url = (
"http://localhost:3000" if self.debug else f"https://api.{self.domain}"
)
@staticmethod
def _get_request_timeout(
default_timeout: Optional[float],
request_timeout: Optional[float],
):
if request_timeout == 0:
return None
elif request_timeout is not None:
return request_timeout
else:
return default_timeout
def get_request_timeout(self, request_timeout: Optional[float] = None):
return self._get_request_timeout(self.request_timeout, request_timeout)
Username = Literal["root", "user"]
"""
User used for the operation in the sandbox.
"""
default_username: Username = "user"
"""
Default user used for the operation in the sandbox.
"""