scalebox-sdk 0.1.0__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- scalebox/__init__.py +80 -0
- scalebox/api/__init__.py +128 -0
- scalebox/api/client/__init__.py +8 -0
- scalebox/api/client/api/__init__.py +1 -0
- scalebox/api/client/api/sandboxes/__init__.py +0 -0
- scalebox/api/client/api/sandboxes/delete_sandboxes_sandbox_id.py +161 -0
- scalebox/api/client/api/sandboxes/get_sandboxes.py +176 -0
- scalebox/api/client/api/sandboxes/get_sandboxes_metrics.py +173 -0
- scalebox/api/client/api/sandboxes/get_sandboxes_sandbox_id.py +163 -0
- scalebox/api/client/api/sandboxes/get_sandboxes_sandbox_id_logs.py +199 -0
- scalebox/api/client/api/sandboxes/get_sandboxes_sandbox_id_metrics.py +214 -0
- scalebox/api/client/api/sandboxes/get_v2_sandboxes.py +229 -0
- scalebox/api/client/api/sandboxes/post_sandboxes.py +174 -0
- scalebox/api/client/api/sandboxes/post_sandboxes_sandbox_id_pause.py +165 -0
- scalebox/api/client/api/sandboxes/post_sandboxes_sandbox_id_refreshes.py +182 -0
- scalebox/api/client/api/sandboxes/post_sandboxes_sandbox_id_resume.py +190 -0
- scalebox/api/client/api/sandboxes/post_sandboxes_sandbox_id_timeout.py +194 -0
- scalebox/api/client/client.py +288 -0
- scalebox/api/client/errors.py +16 -0
- scalebox/api/client/models/__init__.py +81 -0
- scalebox/api/client/models/build_log_entry.py +79 -0
- scalebox/api/client/models/created_access_token.py +100 -0
- scalebox/api/client/models/created_team_api_key.py +166 -0
- scalebox/api/client/models/error.py +67 -0
- scalebox/api/client/models/identifier_masking_details.py +83 -0
- scalebox/api/client/models/listed_sandbox.py +138 -0
- scalebox/api/client/models/log_level.py +11 -0
- scalebox/api/client/models/new_access_token.py +59 -0
- scalebox/api/client/models/new_sandbox.py +125 -0
- scalebox/api/client/models/new_team_api_key.py +59 -0
- scalebox/api/client/models/node.py +154 -0
- scalebox/api/client/models/node_detail.py +152 -0
- scalebox/api/client/models/node_status.py +11 -0
- scalebox/api/client/models/node_status_change.py +61 -0
- scalebox/api/client/models/post_sandboxes_sandbox_id_refreshes_body.py +59 -0
- scalebox/api/client/models/post_sandboxes_sandbox_id_timeout_body.py +59 -0
- scalebox/api/client/models/resumed_sandbox.py +68 -0
- scalebox/api/client/models/sandbox.py +125 -0
- scalebox/api/client/models/sandbox_detail.py +178 -0
- scalebox/api/client/models/sandbox_log.py +70 -0
- scalebox/api/client/models/sandbox_logs.py +73 -0
- scalebox/api/client/models/sandbox_metric.py +110 -0
- scalebox/api/client/models/sandbox_state.py +9 -0
- scalebox/api/client/models/sandboxes_with_metrics.py +59 -0
- scalebox/api/client/models/team.py +83 -0
- scalebox/api/client/models/team_api_key.py +158 -0
- scalebox/api/client/models/team_user.py +68 -0
- scalebox/api/client/models/template.py +179 -0
- scalebox/api/client/models/template_build.py +117 -0
- scalebox/api/client/models/template_build_file_upload.py +70 -0
- scalebox/api/client/models/template_build_request.py +115 -0
- scalebox/api/client/models/template_build_request_v2.py +88 -0
- scalebox/api/client/models/template_build_start_v2.py +114 -0
- scalebox/api/client/models/template_build_status.py +11 -0
- scalebox/api/client/models/template_step.py +91 -0
- scalebox/api/client/models/template_update_request.py +59 -0
- scalebox/api/client/models/update_team_api_key.py +59 -0
- scalebox/api/client/py.typed +1 -0
- scalebox/api/client/types.py +46 -0
- scalebox/api/metadata.py +19 -0
- scalebox/cli.py +125 -0
- scalebox/client/__init__.py +0 -0
- scalebox/client/aclient.py +57 -0
- scalebox/client/api.proto +460 -0
- scalebox/client/buf.gen.yaml +8 -0
- scalebox/client/client.py +102 -0
- scalebox/client/requirements.txt +5 -0
- scalebox/code_interpreter/__init__.py +12 -0
- scalebox/code_interpreter/charts.py +230 -0
- scalebox/code_interpreter/code_interpreter_async.py +369 -0
- scalebox/code_interpreter/code_interpreter_sync.py +317 -0
- scalebox/code_interpreter/constants.py +3 -0
- scalebox/code_interpreter/exceptions.py +13 -0
- scalebox/code_interpreter/models.py +485 -0
- scalebox/connection_config.py +92 -0
- scalebox/csx_connect/__init__.py +1 -0
- scalebox/csx_connect/client.py +485 -0
- scalebox/csx_desktop/__init__.py +0 -0
- scalebox/csx_desktop/main.py +651 -0
- scalebox/exceptions.py +83 -0
- scalebox/generated/__init__.py +0 -0
- scalebox/generated/api.py +61 -0
- scalebox/generated/api_pb2.py +203 -0
- scalebox/generated/api_pb2.pyi +956 -0
- scalebox/generated/api_pb2_connect.py +1456 -0
- scalebox/generated/rpc.py +50 -0
- scalebox/generated/versions.py +3 -0
- scalebox/requirements.txt +36 -0
- scalebox/sandbox/__init__.py +0 -0
- scalebox/sandbox/commands/__init__.py +0 -0
- scalebox/sandbox/commands/command_handle.py +69 -0
- scalebox/sandbox/commands/main.py +39 -0
- scalebox/sandbox/filesystem/__init__.py +0 -0
- scalebox/sandbox/filesystem/filesystem.py +95 -0
- scalebox/sandbox/filesystem/watch_handle.py +60 -0
- scalebox/sandbox/main.py +139 -0
- scalebox/sandbox/sandbox_api.py +91 -0
- scalebox/sandbox/signature.py +40 -0
- scalebox/sandbox/utils.py +34 -0
- scalebox/sandbox_async/__init__.py +1 -0
- scalebox/sandbox_async/commands/command.py +307 -0
- scalebox/sandbox_async/commands/command_handle.py +187 -0
- scalebox/sandbox_async/commands/pty.py +187 -0
- scalebox/sandbox_async/filesystem/filesystem.py +557 -0
- scalebox/sandbox_async/filesystem/watch_handle.py +61 -0
- scalebox/sandbox_async/main.py +646 -0
- scalebox/sandbox_async/sandbox_api.py +365 -0
- scalebox/sandbox_async/utils.py +7 -0
- scalebox/sandbox_sync/__init__.py +2 -0
- scalebox/sandbox_sync/commands/__init__.py +0 -0
- scalebox/sandbox_sync/commands/command.py +300 -0
- scalebox/sandbox_sync/commands/command_handle.py +150 -0
- scalebox/sandbox_sync/commands/pty.py +181 -0
- scalebox/sandbox_sync/filesystem/__init__.py +0 -0
- scalebox/sandbox_sync/filesystem/filesystem.py +543 -0
- scalebox/sandbox_sync/filesystem/watch_handle.py +66 -0
- scalebox/sandbox_sync/main.py +790 -0
- scalebox/sandbox_sync/sandbox_api.py +356 -0
- scalebox/test/CODE_INTERPRETER_TESTS_READY.md +323 -0
- scalebox/test/README.md +329 -0
- scalebox/test/__init__.py +0 -0
- scalebox/test/aclient.py +72 -0
- scalebox/test/code_interpreter_centext.py +21 -0
- scalebox/test/code_interpreter_centext_sync.py +21 -0
- scalebox/test/code_interpreter_test.py +34 -0
- scalebox/test/code_interpreter_test_sync.py +34 -0
- scalebox/test/run_all_validation_tests.py +334 -0
- scalebox/test/run_code_interpreter_tests.sh +67 -0
- scalebox/test/run_tests.sh +230 -0
- scalebox/test/test_basic.py +78 -0
- scalebox/test/test_code_interpreter_async_comprehensive.py +2653 -0
- scalebox/test/test_code_interpreter_e2basync_comprehensive.py +2655 -0
- scalebox/test/test_code_interpreter_e2bsync_comprehensive.py +3416 -0
- scalebox/test/test_code_interpreter_sync_comprehensive.py +3412 -0
- scalebox/test/test_e2b_first.py +11 -0
- scalebox/test/test_sandbox_async_comprehensive.py +738 -0
- scalebox/test/test_sandbox_stress_and_edge_cases.py +778 -0
- scalebox/test/test_sandbox_sync_comprehensive.py +770 -0
- scalebox/test/test_sandbox_usage_examples.py +987 -0
- scalebox/test/testacreate.py +24 -0
- scalebox/test/testagetinfo.py +18 -0
- scalebox/test/testcodeinterpreter_async.py +508 -0
- scalebox/test/testcodeinterpreter_sync.py +239 -0
- scalebox/test/testcomputeuse.py +243 -0
- scalebox/test/testnovnc.py +12 -0
- scalebox/test/testsandbox_async.py +118 -0
- scalebox/test/testsandbox_sync.py +38 -0
- scalebox/utils/__init__.py +0 -0
- scalebox/utils/httpcoreclient.py +297 -0
- scalebox/utils/httpxclient.py +403 -0
- scalebox/version.py +16 -0
- scalebox_sdk-0.1.0.dist-info/METADATA +292 -0
- scalebox_sdk-0.1.0.dist-info/RECORD +157 -0
- scalebox_sdk-0.1.0.dist-info/WHEEL +5 -0
- scalebox_sdk-0.1.0.dist-info/entry_points.txt +2 -0
- scalebox_sdk-0.1.0.dist-info/licenses/LICENSE +21 -0
- scalebox_sdk-0.1.0.dist-info/top_level.txt +1 -0
scalebox/version.py
ADDED
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
"""
|
|
2
|
+
Version information for ScaleBox Python SDK
|
|
3
|
+
"""
|
|
4
|
+
|
|
5
|
+
__version__ = "0.1.0"
|
|
6
|
+
__version_info__ = (0, 1, 0)
|
|
7
|
+
|
|
8
|
+
|
|
9
|
+
def get_version() -> str:
|
|
10
|
+
"""Get the current version string."""
|
|
11
|
+
return __version__
|
|
12
|
+
|
|
13
|
+
|
|
14
|
+
def get_version_info() -> tuple[int, int, int]:
|
|
15
|
+
"""Get the current version info tuple."""
|
|
16
|
+
return __version_info__
|
|
@@ -0,0 +1,292 @@
|
|
|
1
|
+
Metadata-Version: 2.4
|
|
2
|
+
Name: scalebox-sdk
|
|
3
|
+
Version: 0.1.0
|
|
4
|
+
Summary: ScaleBox Python SDK - A multi-language code execution sandbox with Python, R, Node.js, Deno/TypeScript, Java, and Bash support
|
|
5
|
+
Author-email: ScaleBox Team <dev@scalebox.dev>
|
|
6
|
+
Maintainer-email: ScaleBox Team <dev@scalebox.dev>
|
|
7
|
+
License: MIT
|
|
8
|
+
Project-URL: Homepage, https://github.com/scalebox-dev/scalebox-sdk-python
|
|
9
|
+
Project-URL: Documentation, https://docs.scalebox.dev/python-sdk
|
|
10
|
+
Project-URL: Repository, https://github.com/scalebox-dev/scalebox-sdk-python
|
|
11
|
+
Project-URL: Issues, https://github.com/scalebox-dev/scalebox-sdk-python/issues
|
|
12
|
+
Project-URL: Changelog, https://github.com/scalebox-dev/scalebox-sdk-python/blob/main/CHANGELOG.md
|
|
13
|
+
Keywords: sandbox,code-execution,multi-language,python,r,nodejs,typescript,java,bash
|
|
14
|
+
Classifier: Development Status :: 4 - Beta
|
|
15
|
+
Classifier: Intended Audience :: Developers
|
|
16
|
+
Classifier: Operating System :: OS Independent
|
|
17
|
+
Classifier: Programming Language :: Python :: 3
|
|
18
|
+
Classifier: Programming Language :: Python :: 3.9
|
|
19
|
+
Classifier: Programming Language :: Python :: 3.10
|
|
20
|
+
Classifier: Programming Language :: Python :: 3.11
|
|
21
|
+
Classifier: Programming Language :: Python :: 3.12
|
|
22
|
+
Classifier: Programming Language :: Python :: 3.13
|
|
23
|
+
Classifier: Topic :: Software Development :: Libraries :: Python Modules
|
|
24
|
+
Classifier: Topic :: Software Development :: Testing
|
|
25
|
+
Classifier: Topic :: System :: Distributed Computing
|
|
26
|
+
Requires-Python: >=3.9
|
|
27
|
+
Description-Content-Type: text/markdown
|
|
28
|
+
License-File: LICENSE
|
|
29
|
+
Requires-Dist: httpx>=0.24
|
|
30
|
+
Requires-Dist: aiohttp>=3.8.0
|
|
31
|
+
Requires-Dist: urllib3>=1.26.0
|
|
32
|
+
Requires-Dist: httpcore>=0.15.0
|
|
33
|
+
Requires-Dist: grpcio>=1.70.0
|
|
34
|
+
Requires-Dist: grpcio-tools>=1.70.0
|
|
35
|
+
Requires-Dist: protobuf>=4.0.0
|
|
36
|
+
Requires-Dist: attrs>=21.4.0
|
|
37
|
+
Requires-Dist: dataclasses-json>=0.5.0
|
|
38
|
+
Requires-Dist: python-dateutil>=2.8.0
|
|
39
|
+
Requires-Dist: tenacity>=8.0.0
|
|
40
|
+
Requires-Dist: packaging>=21.0
|
|
41
|
+
Requires-Dist: typing-extensions>=4.0.0
|
|
42
|
+
Provides-Extra: dev
|
|
43
|
+
Requires-Dist: pytest>=7.0.0; extra == "dev"
|
|
44
|
+
Requires-Dist: pytest-asyncio>=0.21.0; extra == "dev"
|
|
45
|
+
Requires-Dist: pytest-cov>=4.0.0; extra == "dev"
|
|
46
|
+
Requires-Dist: black>=22.0.0; extra == "dev"
|
|
47
|
+
Requires-Dist: isort>=5.0.0; extra == "dev"
|
|
48
|
+
Requires-Dist: flake8>=4.0.0; extra == "dev"
|
|
49
|
+
Requires-Dist: mypy>=0.950; extra == "dev"
|
|
50
|
+
Requires-Dist: pre-commit>=2.17.0; extra == "dev"
|
|
51
|
+
Requires-Dist: python-dotenv>=0.19.0; extra == "dev"
|
|
52
|
+
Provides-Extra: connect
|
|
53
|
+
Requires-Dist: connectrpc>=0.0.1; python_version >= "3.13" and extra == "connect"
|
|
54
|
+
Provides-Extra: docs
|
|
55
|
+
Requires-Dist: sphinx>=4.0.0; extra == "docs"
|
|
56
|
+
Requires-Dist: sphinx-rtd-theme>=1.0.0; extra == "docs"
|
|
57
|
+
Requires-Dist: myst-parser>=0.18.0; extra == "docs"
|
|
58
|
+
Dynamic: license-file
|
|
59
|
+
|
|
60
|
+
# Scalebox Python SDK
|
|
61
|
+
|
|
62
|
+
一个用于在可控沙箱中执行多语言代码的 Python SDK,支持同步与异步模式,以及多语言 Kernel(Python、R、Node.js、Deno/TypeScript、Java/IJAVA、Bash)。已提供全面的真实环境测试用例与脚本。
|
|
63
|
+
|
|
64
|
+
## 功能特性
|
|
65
|
+
- 多语言内核:Python、R、Node.js、Deno/TypeScript、Java/IJAVA、Bash
|
|
66
|
+
- 同步 `Sandbox` 与异步 `AsyncSandbox` 执行
|
|
67
|
+
- 持久上下文:跨多次执行保留变量/状态
|
|
68
|
+
- 回调订阅:stdout、stderr、结果与错误
|
|
69
|
+
- 丰富结果格式:text、html、markdown、svg、png、jpeg、pdf、latex、json、javascript、chart、data 等
|
|
70
|
+
- 真实环境测试:覆盖同步/异步与多语言示例
|
|
71
|
+
|
|
72
|
+
## 环境要求
|
|
73
|
+
- Python 3.12+
|
|
74
|
+
- 可访问的 Scalebox 环境或本地服务
|
|
75
|
+
|
|
76
|
+
## 安装
|
|
77
|
+
|
|
78
|
+
```bash
|
|
79
|
+
# 克隆项目
|
|
80
|
+
git clone https://github.com/scalebox-dev/scalebox-sdk-python.git
|
|
81
|
+
cd scalebox-sdk-python
|
|
82
|
+
|
|
83
|
+
# 建议使用虚拟环境
|
|
84
|
+
python3 -m venv venv
|
|
85
|
+
source venv/bin/activate
|
|
86
|
+
|
|
87
|
+
# 安装依赖
|
|
88
|
+
pip install -r scalebox/requirements.txt
|
|
89
|
+
```
|
|
90
|
+
|
|
91
|
+
如果你以源码方式直接使用包(非 pip 安装),请将 `scalebox` 目录加入 Python 路径或复制到 venv 的 site-packages:
|
|
92
|
+
```bash
|
|
93
|
+
cp -r scalebox venv/lib/python3.12/site-packages/
|
|
94
|
+
```
|
|
95
|
+
|
|
96
|
+
## 配置
|
|
97
|
+
支持从环境变量或 `.env` 文件读取凭据:
|
|
98
|
+
|
|
99
|
+
- `SBX_API_KEY` 或 `E2B_API_KEY`
|
|
100
|
+
|
|
101
|
+
示例:
|
|
102
|
+
```env
|
|
103
|
+
# .env
|
|
104
|
+
SBX_API_KEY=***
|
|
105
|
+
```
|
|
106
|
+
或:
|
|
107
|
+
```bash
|
|
108
|
+
export SBX_API_KEY=***
|
|
109
|
+
```
|
|
110
|
+
|
|
111
|
+
可选:使用 `python-dotenv` 自动加载 `.env`:
|
|
112
|
+
```bash
|
|
113
|
+
pip install python-dotenv
|
|
114
|
+
```
|
|
115
|
+
|
|
116
|
+
## 快速开始(同步)
|
|
117
|
+
```python
|
|
118
|
+
from dotenv import load_dotenv; load_dotenv()
|
|
119
|
+
from scalebox.code_interpreter import Sandbox
|
|
120
|
+
|
|
121
|
+
sandbox = Sandbox.create() # 默认生存期 5 分钟
|
|
122
|
+
execution = sandbox.run_code("print('hello world')", language="python")
|
|
123
|
+
print(execution.logs.stdout)
|
|
124
|
+
|
|
125
|
+
files = sandbox.files.list("/")
|
|
126
|
+
print(files)
|
|
127
|
+
```
|
|
128
|
+
|
|
129
|
+
## 快速开始(异步)
|
|
130
|
+
```python
|
|
131
|
+
import asyncio
|
|
132
|
+
from dotenv import load_dotenv; load_dotenv()
|
|
133
|
+
from scalebox.code_interpreter import AsyncSandbox
|
|
134
|
+
|
|
135
|
+
async def main():
|
|
136
|
+
sandbox = await AsyncSandbox.create()
|
|
137
|
+
exec_ = await sandbox.run_code("print('async hello')", language="python")
|
|
138
|
+
print(exec_.logs.stdout)
|
|
139
|
+
|
|
140
|
+
asyncio.run(main())
|
|
141
|
+
```
|
|
142
|
+
|
|
143
|
+
## 多语言示例
|
|
144
|
+
- Python:`language="python"`
|
|
145
|
+
- R:`language="r"`
|
|
146
|
+
- Node.js:`language="nodejs"`
|
|
147
|
+
- Deno/TypeScript:`language="typescript"`
|
|
148
|
+
- Java(IJAVA/纯Java):`language="ijava"` 或 `language="java"`
|
|
149
|
+
- Bash:`language="bash"`
|
|
150
|
+
|
|
151
|
+
示例(Node.js):
|
|
152
|
+
```python
|
|
153
|
+
from scalebox.code_interpreter import Sandbox
|
|
154
|
+
sbx = Sandbox.create()
|
|
155
|
+
code = """
|
|
156
|
+
console.log("Hello from Node.js!");
|
|
157
|
+
const x = 1 + 2; console.log(`x=${x}`);
|
|
158
|
+
"""
|
|
159
|
+
result = sbx.run_code(code, language="nodejs")
|
|
160
|
+
print(result.logs.stdout)
|
|
161
|
+
```
|
|
162
|
+
|
|
163
|
+
示例(R):
|
|
164
|
+
```python
|
|
165
|
+
from scalebox.code_interpreter import Sandbox
|
|
166
|
+
sbx = Sandbox.create()
|
|
167
|
+
code = """
|
|
168
|
+
print("Hello from R!")
|
|
169
|
+
x <- mean(c(1,2,3,4,5))
|
|
170
|
+
print(paste("mean:", x))
|
|
171
|
+
"""
|
|
172
|
+
res = sbx.run_code(code, language="r")
|
|
173
|
+
print(res.logs.stdout)
|
|
174
|
+
```
|
|
175
|
+
|
|
176
|
+
示例(Deno/TypeScript):
|
|
177
|
+
```python
|
|
178
|
+
from scalebox.code_interpreter import Sandbox
|
|
179
|
+
sbx = Sandbox.create()
|
|
180
|
+
ts = """
|
|
181
|
+
console.log("Hello from Deno/TypeScript!")
|
|
182
|
+
const nums: number[] = [1,2,3]
|
|
183
|
+
console.log(nums.reduce((a,b)=>a+b, 0))
|
|
184
|
+
"""
|
|
185
|
+
res = sbx.run_code(ts, language="typescript")
|
|
186
|
+
print(res.logs.stdout)
|
|
187
|
+
```
|
|
188
|
+
|
|
189
|
+
示例(Java/IJAVA):
|
|
190
|
+
```python
|
|
191
|
+
from scalebox.code_interpreter import Sandbox
|
|
192
|
+
sbx = Sandbox.create()
|
|
193
|
+
code = """
|
|
194
|
+
System.out.println("Hello from IJAVA!");
|
|
195
|
+
int a = 10, b = 20; System.out.println(a + b);
|
|
196
|
+
"""
|
|
197
|
+
res = sbx.run_code(code, language="java")
|
|
198
|
+
print(res.logs.stdout)
|
|
199
|
+
```
|
|
200
|
+
|
|
201
|
+
示例(Bash):
|
|
202
|
+
```python
|
|
203
|
+
from scalebox.code_interpreter import Sandbox
|
|
204
|
+
sbx = Sandbox.create()
|
|
205
|
+
res = sbx.run_code("echo 'Hello from Bash'", language="bash")
|
|
206
|
+
print(res.logs.stdout)
|
|
207
|
+
```
|
|
208
|
+
|
|
209
|
+
## 上下文管理(Context)
|
|
210
|
+
上下文允许跨多次执行复用变量/状态:
|
|
211
|
+
```python
|
|
212
|
+
from scalebox.code_interpreter import Sandbox
|
|
213
|
+
sbx = Sandbox.create()
|
|
214
|
+
ctx = sbx.create_code_context(language="python", cwd="/tmp")
|
|
215
|
+
|
|
216
|
+
sbx.run_code("counter = 0", context=ctx)
|
|
217
|
+
sbx.run_code("counter += 1; print(counter)", context=ctx)
|
|
218
|
+
# 使用完必须清理
|
|
219
|
+
sbx.destroy_context(ctx)
|
|
220
|
+
```
|
|
221
|
+
异步 API:
|
|
222
|
+
```python
|
|
223
|
+
from scalebox.code_interpreter import AsyncSandbox
|
|
224
|
+
|
|
225
|
+
async def demo():
|
|
226
|
+
sbx = await AsyncSandbox.create()
|
|
227
|
+
ctx = await sbx.create_code_context(language="python", cwd="/tmp")
|
|
228
|
+
await sbx.run_code("counter = 0", context=ctx)
|
|
229
|
+
await sbx.run_code("counter += 1; print(counter)", context=ctx)
|
|
230
|
+
await sbx.destroy_context(ctx)
|
|
231
|
+
```
|
|
232
|
+
|
|
233
|
+
## 回调(可选)
|
|
234
|
+
```python
|
|
235
|
+
from scalebox.code_interpreter import Sandbox
|
|
236
|
+
from scalebox.code_interpreter import OutputMessage, Result, ExecutionError
|
|
237
|
+
|
|
238
|
+
sbx = Sandbox.create()
|
|
239
|
+
|
|
240
|
+
def on_stdout(msg: OutputMessage):
|
|
241
|
+
print("STDOUT:", msg.content)
|
|
242
|
+
|
|
243
|
+
def on_stderr(msg: OutputMessage):
|
|
244
|
+
print("STDERR:", msg.content)
|
|
245
|
+
|
|
246
|
+
def on_result(res: Result):
|
|
247
|
+
print("RESULT formats:", list(res.formats()))
|
|
248
|
+
|
|
249
|
+
def on_error(err: ExecutionError):
|
|
250
|
+
print("ERROR:", err.name, err.value)
|
|
251
|
+
|
|
252
|
+
sbx.run_code(
|
|
253
|
+
"print('with callbacks')",
|
|
254
|
+
language="python",
|
|
255
|
+
on_stdout=on_stdout,
|
|
256
|
+
on_stderr=on_stderr,
|
|
257
|
+
on_result=on_result,
|
|
258
|
+
on_error=on_error,
|
|
259
|
+
)
|
|
260
|
+
```
|
|
261
|
+
|
|
262
|
+
## 结果格式(Result)
|
|
263
|
+
`Result` 可能包含如下数据字段:
|
|
264
|
+
- `text`, `html`, `markdown`, `svg`, `png`, `jpeg`, `pdf`, `latex`
|
|
265
|
+
- `json_data`, `javascript`, `data`, `chart`
|
|
266
|
+
- `execution_count`, `is_main_result`, `extra`
|
|
267
|
+
|
|
268
|
+
可以通过 `list(result.formats())` 查看可用格式。
|
|
269
|
+
|
|
270
|
+
## 运行测试
|
|
271
|
+
项目 `test/` 目录包含全面的真实环境用例(非 unittest,直接脚本风格),覆盖:
|
|
272
|
+
- 同步与异步综合用例
|
|
273
|
+
- 多语言内核(Python、R、Node.js、Deno/TypeScript、Java/IJAVA、Bash)
|
|
274
|
+
- 上下文管理、回调与结果格式
|
|
275
|
+
|
|
276
|
+
运行语法检查:
|
|
277
|
+
```bash
|
|
278
|
+
cd test
|
|
279
|
+
python3 -m py_compile test_code_interpreter_sync_comprehensive.py
|
|
280
|
+
python3 -m py_compile test_code_interpreter_async_comprehensive.py
|
|
281
|
+
```
|
|
282
|
+
|
|
283
|
+
建议在虚拟环境中准备依赖并按需安装语言运行时(如 R、Node、Deno、JDK/IJAVA 等),确保各内核能够被后端执行。
|
|
284
|
+
|
|
285
|
+
## 常见问题(Troubleshooting)
|
|
286
|
+
- Import/依赖错误:请确认已激活 venv 并正确安装 `scalebox/requirements.txt` 所需依赖
|
|
287
|
+
- `ModuleNotFoundError`:在测试脚本中添加项目根路径到 `sys.path`,或从项目根目录运行
|
|
288
|
+
- 外部内核不可用:确保环境已安装对应语言运行时(R/Node/Deno/JDK)与后端已启用该内核
|
|
289
|
+
- 超时/网络:检查网络与后端服务可达性,必要时增大 `timeout`/`request_timeout`
|
|
290
|
+
|
|
291
|
+
## 许可证
|
|
292
|
+
本项目遵循项目仓库所附许可证(LICENSE)条款。
|
|
@@ -0,0 +1,157 @@
|
|
|
1
|
+
scalebox/__init__.py,sha256=bB3P_-Xg5SK0cwCydngpHb1symF3_zg-leYA-E5HAOg,1811
|
|
2
|
+
scalebox/cli.py,sha256=HWIyGuhbP1WZm839CwTysauL78xMBOoatFychxzloxQ,3904
|
|
3
|
+
scalebox/connection_config.py,sha256=J49-3tYaaoRDpa1l2dbnW3T8XmLrqEZBPXlraFvPp7I,2563
|
|
4
|
+
scalebox/exceptions.py,sha256=10R9VXfvgO4XJJnxyzyrzkxliyeEBX0ZC36izXa8R5k,2053
|
|
5
|
+
scalebox/requirements.txt,sha256=LEYsk2VzoxKR-V44Y6qJuJ3vKdTYS79f1Gv1Ajleifo,567
|
|
6
|
+
scalebox/version.py,sha256=U2FpgRwdTajMkXOS6kDAZMik0-pkcviapKI8FEQnxB8,321
|
|
7
|
+
scalebox/api/__init__.py,sha256=4Ci1HcIcKfSdloTw1BNwneudeqo1yC_MUZgwGdl9Mb8,4167
|
|
8
|
+
scalebox/api/metadata.py,sha256=lg5ekfnFZYZoCoJxIPo961HEGVg_rLLRJBbw4ZApM_Y,512
|
|
9
|
+
scalebox/api/client/__init__.py,sha256=0s784iDWjy52HOxrCdQVVeF8Fqrc9gzh1cLpMd9sOA8,150
|
|
10
|
+
scalebox/api/client/client.py,sha256=E94FDmiAORzuukaUQopFX0TXoj-LDtPeRDLfvtwdu0Q,12623
|
|
11
|
+
scalebox/api/client/errors.py,sha256=gO8GBmKqmSNgAg-E5oT-oOyxztvp7V_6XG7OUTT15q0,546
|
|
12
|
+
scalebox/api/client/py.typed,sha256=8ZJUsxZiuOy1oJeVhsTWQhTG_6pTVHVXk5hJL79ebTk,25
|
|
13
|
+
scalebox/api/client/types.py,sha256=E1hhDh_zXfsSQ0NCt9-uw90_Mr5iIlsdfnfvxv5HarU,1005
|
|
14
|
+
scalebox/api/client/api/__init__.py,sha256=zTSiG_ujSjAqWPyc435YXaX9XTlpMjiJWBbV-f-YtdA,45
|
|
15
|
+
scalebox/api/client/api/sandboxes/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
16
|
+
scalebox/api/client/api/sandboxes/delete_sandboxes_sandbox_id.py,sha256=exBkD4FP0t730uuuKvNPWwm9PMOE68BDeaKmt98gPlg,3945
|
|
17
|
+
scalebox/api/client/api/sandboxes/get_sandboxes.py,sha256=cte-9oyXExgevw28JmoYcFF_GiCeCr0vkCf47LGtLxA,4745
|
|
18
|
+
scalebox/api/client/api/sandboxes/get_sandboxes_metrics.py,sha256=7vchRZZhVqT2TJDq_P1PZ6xcb6A-bvYmfq8swCEuVw4,4581
|
|
19
|
+
scalebox/api/client/api/sandboxes/get_sandboxes_sandbox_id.py,sha256=M4a8lrM0NgaIF4G6rMw2LcoLs2FK6b4Dfc15JoroSkc,4133
|
|
20
|
+
scalebox/api/client/api/sandboxes/get_sandboxes_sandbox_id_logs.py,sha256=EQmwi1HGcadWZOCSQ3UrtrT3quNHnJkPnanvd-gW0sM,5217
|
|
21
|
+
scalebox/api/client/api/sandboxes/get_sandboxes_sandbox_id_metrics.py,sha256=mDFBCAp3vLRMGzSe_CpZH4m80q5KOXOR7qFtUOh2Oac,5975
|
|
22
|
+
scalebox/api/client/api/sandboxes/get_v2_sandboxes.py,sha256=ii49JFUa5-GtnIXiV73oqc4NgoArEq-zpTln3n-JENs,6636
|
|
23
|
+
scalebox/api/client/api/sandboxes/post_sandboxes.py,sha256=mlJdVKKFlWvzNDUVyTIUJky9Ufvj7xqZ5NS0jUJzjEw,4335
|
|
24
|
+
scalebox/api/client/api/sandboxes/post_sandboxes_sandbox_id_pause.py,sha256=dD0M7vx5MV-tCw4o2by1csKnIDVmO2YxaPkKDxNpEJc,4082
|
|
25
|
+
scalebox/api/client/api/sandboxes/post_sandboxes_sandbox_id_refreshes.py,sha256=bREqFIngMmP3nj1eT4OcQROW7ZlLZ2Se8wMVtMjq15o,4771
|
|
26
|
+
scalebox/api/client/api/sandboxes/post_sandboxes_sandbox_id_resume.py,sha256=G0BdobeV2WiHmZ-d9yODiPA4eBuclm0xe5at6aSR-Lo,4746
|
|
27
|
+
scalebox/api/client/api/sandboxes/post_sandboxes_sandbox_id_timeout.py,sha256=-c5-UZf_X93maGH5pls85ivm1MUtEb0TwHIuzT6ByQc,5692
|
|
28
|
+
scalebox/api/client/models/__init__.py,sha256=2XS-2Est0r3dhQU97TxyZ-rlBv8iCFqa1P3_XSnye5A,2613
|
|
29
|
+
scalebox/api/client/models/build_log_entry.py,sha256=eCLxmK8cWMYo0RAfQjWT0zcN2a2wcu8ZfYJCboVJ7XU,2064
|
|
30
|
+
scalebox/api/client/models/created_access_token.py,sha256=VjU_tuW67zrtc3V1po-MVtPo8J1dtRkwy-6uTe2AEf0,2639
|
|
31
|
+
scalebox/api/client/models/created_team_api_key.py,sha256=QO2jAIR8u1Xxn26jnftkDNYCI1mEqDMt-ZUIQS1y1NU,5040
|
|
32
|
+
scalebox/api/client/models/error.py,sha256=xGvyYQQHv0ZrxvhrVvFlXPaosmt24ivIh3U4gItpBKY,1594
|
|
33
|
+
scalebox/api/client/models/identifier_masking_details.py,sha256=97xSg4Nr3D5xbjGDuZ16doEMOlck0EtyjMxtHQR9TKk,2496
|
|
34
|
+
scalebox/api/client/models/listed_sandbox.py,sha256=WP-U0lZ7plU1FG1Qz5Z0dWLdSIR3D9YJ0LkoPG3qT3U,3865
|
|
35
|
+
scalebox/api/client/models/log_level.py,sha256=uv6u1nkqfzdxTjJAxLZdWuH5goVI_g-ULLhh6TU5dw8,189
|
|
36
|
+
scalebox/api/client/models/new_access_token.py,sha256=sjlQ7dEj4ByCgwud750SbxwyjggAKB1s-o_N7dRCo7s,1480
|
|
37
|
+
scalebox/api/client/models/new_sandbox.py,sha256=z_LaZ0RS6qI95IVGklKgQZ301zSah9HerzND78QAP80,3934
|
|
38
|
+
scalebox/api/client/models/new_team_api_key.py,sha256=neYLvvvzyPcpXYV5gDHVkv_ovjKdIBKUTX04cD5QKGA,1473
|
|
39
|
+
scalebox/api/client/models/node.py,sha256=nuEZij7z7iXzBQYTFwardHlSixWrepztFmMIIqd8Ek4,4653
|
|
40
|
+
scalebox/api/client/models/node_detail.py,sha256=ywP1oDzyxi7hIJAMTvINQQ8CwMsd1PlH1R5bEw716Ig,4511
|
|
41
|
+
scalebox/api/client/models/node_status.py,sha256=bZkWsNgKncRmFxatPdKlJTu9H4GTBbgQ2XF9JNvW16I,219
|
|
42
|
+
scalebox/api/client/models/node_status_change.py,sha256=gJJWj3-8AaHkjli_KMcBLu4VRQlOuVwPpmdsBd_UNtM,1581
|
|
43
|
+
scalebox/api/client/models/post_sandboxes_sandbox_id_refreshes_body.py,sha256=VwMoBB9y2vFP7kcLDJ0Q9kVGOBqD2W3VvAEKv_XHd2Y,1763
|
|
44
|
+
scalebox/api/client/models/post_sandboxes_sandbox_id_timeout_body.py,sha256=iay4pLjwIryb6J8fjx3UjThsNJ5AvqArzAwr5K8LnNs,1668
|
|
45
|
+
scalebox/api/client/models/resumed_sandbox.py,sha256=2xD811-BnABH7M9vceACDucdASx0pwpxxoBGzTtxMns,1980
|
|
46
|
+
scalebox/api/client/models/sandbox.py,sha256=OpIViVmzEsLfdajbfhR60MTQDr31IWAv1dAZEYyetQk,3768
|
|
47
|
+
scalebox/api/client/models/sandbox_detail.py,sha256=_9PfVC6PA4aHfOwm8lxlZl3K-UKnrayT7ZdmAFhfwSM,5471
|
|
48
|
+
scalebox/api/client/models/sandbox_log.py,sha256=tXw35j3poz7DMJrLeoxr4oYdbcYJV5ep3E0bVdQsS2o,1806
|
|
49
|
+
scalebox/api/client/models/sandbox_logs.py,sha256=zpQbPAmdrQoUexnwobzljOYcairMmK6sUHVyM1n2Ix0,1894
|
|
50
|
+
scalebox/api/client/models/sandbox_metric.py,sha256=plMdU99nWQnFyd9qBXfF8vbfwAQXZWJ4p-S8HVErswI,2981
|
|
51
|
+
scalebox/api/client/models/sandbox_state.py,sha256=iztDupSF2SrYQGV2UTcnZRH_U3GxSmHYKHMMUksO_7M,163
|
|
52
|
+
scalebox/api/client/models/sandboxes_with_metrics.py,sha256=CuOZ1ismyjPLrxPcKaDqLKZL5Iun0njN70Qqhubc1Ps,1535
|
|
53
|
+
scalebox/api/client/models/team.py,sha256=rGLOfphzsP7VA9SLmQn8vnUfxB9KILfMwNfh4hVy3IE,2042
|
|
54
|
+
scalebox/api/client/models/team_api_key.py,sha256=4aqRT8gF32WJwuteq6h7ag2wdpZuVCpaOEZuj1j3Dx4,4844
|
|
55
|
+
scalebox/api/client/models/team_user.py,sha256=UCF9Ajj0QOrE_RxFusWnDM9N4PI0DOZHZaksMILLdS4,1631
|
|
56
|
+
scalebox/api/client/models/template.py,sha256=4xyS2u8ftGZjGu90CuhEUctTObeXy-1FyBlSpQokKLo,5390
|
|
57
|
+
scalebox/api/client/models/template_build.py,sha256=cTokFGLMsoX_G9B72G03b8w6jNZ8bqpH1FmX90Aiu_0,3382
|
|
58
|
+
scalebox/api/client/models/template_build_file_upload.py,sha256=iqgQEKVJxWD8ezd_w44NoYmFCVDyTSUcH474KRCaXDY,1879
|
|
59
|
+
scalebox/api/client/models/template_build_request.py,sha256=N2QBAoU-2MfYW63ZVArKDFafcxFPQsdadKC9MTe4CxI,3432
|
|
60
|
+
scalebox/api/client/models/template_build_request_v2.py,sha256=3jNNPJCy1IVER83daHGhBgD_TNFMg8k5n8abcQyJsh0,2458
|
|
61
|
+
scalebox/api/client/models/template_build_start_v2.py,sha256=Yk-FGOMNKE5flTmkvo_fif5AU__ASLq89nvQAXdnaD8,3515
|
|
62
|
+
scalebox/api/client/models/template_build_status.py,sha256=MpTZ_bM8-_WvttJg1Q08_ZGHdrJ6JTEl_6pv8NFETyM,214
|
|
63
|
+
scalebox/api/client/models/template_step.py,sha256=qmCseK5OJXN2Ffirl0A0J4neqyfDqA-a-mYZbmwKOyM,2561
|
|
64
|
+
scalebox/api/client/models/template_update_request.py,sha256=KMlSyGf7hX75GqXxEP-OiExnABql4MKdLBfHPd02gFo,1663
|
|
65
|
+
scalebox/api/client/models/update_team_api_key.py,sha256=UEHHUJxwHWTOd-AuDE-Z26E4lX2Ck9SPq8MO-Trc9Uc,1493
|
|
66
|
+
scalebox/client/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
67
|
+
scalebox/client/aclient.py,sha256=5c1RzZ0E7yKlcv6mM1OgCGPm4mm0PXenfiOozBV3nG0,1790
|
|
68
|
+
scalebox/client/api.proto,sha256=J2TyyJuf9sl9iKCVeHGB61eu4rYFNJrSi-Hfh6MAGbI,9012
|
|
69
|
+
scalebox/client/buf.gen.yaml,sha256=qp54hHH0NTNGNQwJ9lpTvwZn7uRc8BMymznI-5yqhIs,208
|
|
70
|
+
scalebox/client/client.py,sha256=lPh2y8788bkYH_re9CxfMTO5reOtKyfzFhJ4vMtShPc,3419
|
|
71
|
+
scalebox/client/requirements.txt,sha256=wKvAVEljSzYT7t1PFWlsWHR9I47sAYjx97xU51NvAPw,94
|
|
72
|
+
scalebox/code_interpreter/__init__.py,sha256=DKvHYgCOofNzPCgxK9HRyVpb8l1F1Uc2_DUL9BkcsSs,238
|
|
73
|
+
scalebox/code_interpreter/charts.py,sha256=tYo53XlaWyjsMRb5tG32PaeGapaG0GQW3826wuXARfo,5511
|
|
74
|
+
scalebox/code_interpreter/code_interpreter_async.py,sha256=RPzNAqQ7qIINnOJOm5X9BUb-_uy-ow92gNJqmHCXZSg,12891
|
|
75
|
+
scalebox/code_interpreter/code_interpreter_sync.py,sha256=_CLIWD5eIML5m6mSkeaOAT1zMnwDrxu7APkDH_5LAmE,11407
|
|
76
|
+
scalebox/code_interpreter/constants.py,sha256=MmEu7Uw2rjIZAayX9gQSC-iFmUaaijNSZ0ADnL1L_EM,81
|
|
77
|
+
scalebox/code_interpreter/exceptions.py,sha256=9YfZk6EMa_RtfZ8K-BHvbRr2lcFRl6I5FY5WrA5gNqI,410
|
|
78
|
+
scalebox/code_interpreter/models.py,sha256=so4_kPkouB9ET0MN2LkeTaPWXAXJNQIaz0IEYQMGtbs,14019
|
|
79
|
+
scalebox/csx_connect/__init__.py,sha256=LpNSDgIjJbOyeddLRyTVLsY0UqRWYAvlAn0itEDhuao,81
|
|
80
|
+
scalebox/csx_connect/client.py,sha256=fmlND6h2iiTaeWcccf6aukvQ_6SCblr1RylArGN3k78,13151
|
|
81
|
+
scalebox/csx_desktop/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
82
|
+
scalebox/csx_desktop/main.py,sha256=ubSVY0lcXA1mcO64xeRn-WCtKYPNZy6KkhAMmZVWn_k,21827
|
|
83
|
+
scalebox/generated/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
84
|
+
scalebox/generated/api.py,sha256=SjK64GhgaWFMkktn4ekb5p8zBZXvA88GZ4legCT27Jo,1558
|
|
85
|
+
scalebox/generated/api_pb2.py,sha256=n6SmPlDl4Fx6vQl3kiw6oXUb9eTLK07_WNHjoPOhtLI,25941
|
|
86
|
+
scalebox/generated/api_pb2.pyi,sha256=qdmTkmfGyLevV8hmT67DDNK8DPKh0qkIGyObPD2bvZo,30158
|
|
87
|
+
scalebox/generated/api_pb2_connect.py,sha256=TaCrcR6jmpLQbk_2UFHH9r9xH8zCs0P56hlxP_awRaE,52547
|
|
88
|
+
scalebox/generated/rpc.py,sha256=-rbzeXz60kJFiik5tPOkQ6whK9ZOzJbHS-SDJ2w8cm0,1998
|
|
89
|
+
scalebox/generated/versions.py,sha256=rBZ4T4ZxsrP7LVnWU-E9r_yN-x8qJXyR2q-EU-bFEMo,87
|
|
90
|
+
scalebox/sandbox/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
91
|
+
scalebox/sandbox/main.py,sha256=R5LikhCLi_yMR6Kq61BSYLPqDP4Fw0LnyRGYxbITwwU,4086
|
|
92
|
+
scalebox/sandbox/sandbox_api.py,sha256=L6zIM5outNAEgVVVyeWJKoyyL4QMJLkZ0B4fHVwgwN0,2035
|
|
93
|
+
scalebox/sandbox/signature.py,sha256=PAaIxWx3bEFnZ_rdWuKJ5vDcq111n2DssMuewFp7RcI,1083
|
|
94
|
+
scalebox/sandbox/utils.py,sha256=rCaDYVxhgQV9BTaMVXnNPx-KVK45CI54ANNqDFJI7QU,1300
|
|
95
|
+
scalebox/sandbox/commands/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
96
|
+
scalebox/sandbox/commands/command_handle.py,sha256=owqcxW7aD3MnN7zsvDck6URNhND53lEpHC2NirBByRA,1076
|
|
97
|
+
scalebox/sandbox/commands/main.py,sha256=t8hk44wZX27OqRrYHo_FhvhzfOvIVK-6NO4HpfiOhpo,692
|
|
98
|
+
scalebox/sandbox/filesystem/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
99
|
+
scalebox/sandbox/filesystem/filesystem.py,sha256=d3R6jp1Gn3cEdKpzB3I2P3ECQCkktBa2AfRCZZwzA08,1833
|
|
100
|
+
scalebox/sandbox/filesystem/watch_handle.py,sha256=vLVy366IIQaNKqlGIWyURou3OCSSJb9m-NpfP8kqXGw,1372
|
|
101
|
+
scalebox/sandbox_async/__init__.py,sha256=D8A0Asb6TNwtm9vdGx-hHCMxEUUHq_Iosi7iaaO9pmc,30
|
|
102
|
+
scalebox/sandbox_async/main.py,sha256=x1Q0Ir8MH_MYC3CPbHuON75GVXEI0yAxmKdJnsVZ4D8,22272
|
|
103
|
+
scalebox/sandbox_async/sandbox_api.py,sha256=_Fz1Kl7ec7FtCc6aRyqXCa88jBWvYXHVxqmMwv9vNp4,12411
|
|
104
|
+
scalebox/sandbox_async/utils.py,sha256=VRt3FalFcvDIzfLLLEruovt8IOC2yC19wH04u5I5bxY,159
|
|
105
|
+
scalebox/sandbox_async/commands/command.py,sha256=sPlZzGLHBqiCz72V1mZeBgFvKwHEWudJ1yojs17coaA,11029
|
|
106
|
+
scalebox/sandbox_async/commands/command_handle.py,sha256=AMVTEzJlKJdtg4pW2r_WV5uUeUjMnjmZ1AM0Rv8Lnfc,5698
|
|
107
|
+
scalebox/sandbox_async/commands/pty.py,sha256=vq3MrpS8JMrTTW-MNsApNEr0HWrJxTbn897zccSbvdI,5833
|
|
108
|
+
scalebox/sandbox_async/filesystem/filesystem.py,sha256=Ao_Z7eUSn8FmmjRj23GD1N_JaWNR3Qa7dZemAFq2K80,19067
|
|
109
|
+
scalebox/sandbox_async/filesystem/watch_handle.py,sha256=F2geFVkUyhOWYWEzu80ksB5Jrslt897Xwhc8PntN6oc,1952
|
|
110
|
+
scalebox/sandbox_sync/__init__.py,sha256=8A7x4t-n5k9LOyaq_vyN1EYOT397FHJjslrAStUqYP4,114
|
|
111
|
+
scalebox/sandbox_sync/main.py,sha256=rsYbyNtRoorT4qk_Yy5DUjk0dl5XxeOnBGGf3V4k8yU,28518
|
|
112
|
+
scalebox/sandbox_sync/sandbox_api.py,sha256=s6Gs5KEbU_BngtlbwsBSseor56LHKK4mOlVSM8Wjvig,12109
|
|
113
|
+
scalebox/sandbox_sync/commands/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
114
|
+
scalebox/sandbox_sync/commands/command.py,sha256=308RgsexBQaLVbUc2ui6oKOLh6xUFDMIzTpyScHLgKI,10177
|
|
115
|
+
scalebox/sandbox_sync/commands/command_handle.py,sha256=XPN1SpW00NqHxTuyceh4MLik-YQPEKfu4FOtf8pIC7Y,4615
|
|
116
|
+
scalebox/sandbox_sync/commands/pty.py,sha256=KQStIe-ts_sSWjE_zD01AMqMCGbq9wGeXzbN-i4js9Q,5629
|
|
117
|
+
scalebox/sandbox_sync/filesystem/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
118
|
+
scalebox/sandbox_sync/filesystem/filesystem.py,sha256=ajZgv3VyBfFtO8o4BIx6w7z1vhFugnLXysRfLBsa_ms,18193
|
|
119
|
+
scalebox/sandbox_sync/filesystem/watch_handle.py,sha256=dC9p74AHMv-3mQ1tudmOPjrpjvcJ7wFmCduNdity6os,2027
|
|
120
|
+
scalebox/test/CODE_INTERPRETER_TESTS_READY.md,sha256=cU9aOccv6BWllsz4aIIHokMW9QPxsPlJEJKR_oXr69o,9695
|
|
121
|
+
scalebox/test/README.md,sha256=YwFmc4kjgZN9uRVrN2qCPUDC6RfeAXFJ-syeRS9mdiE,8182
|
|
122
|
+
scalebox/test/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
123
|
+
scalebox/test/aclient.py,sha256=eEJT_CJFnbRhZYS0QRJmquJP58_iMJQuJOim2gHhZvY,2263
|
|
124
|
+
scalebox/test/code_interpreter_centext.py,sha256=i8gns4JBsxDBXqRchdvygQgKl_2vpAprFleSZ4yvqBE,447
|
|
125
|
+
scalebox/test/code_interpreter_centext_sync.py,sha256=cCPh09h-pLGrLEKFhDuCzttadHDbCR4pZ_-BJ0Z6328,412
|
|
126
|
+
scalebox/test/code_interpreter_test.py,sha256=070pvnscolbgItbtFIgJXQUv27yZ9Ik0UIj3pAlF8pM,699
|
|
127
|
+
scalebox/test/code_interpreter_test_sync.py,sha256=jAGWmvFfXNfAkbWDh6KJyedJRBo_2MeHYjLsT-doQ9s,642
|
|
128
|
+
scalebox/test/run_all_validation_tests.py,sha256=MgzzPD__22wFt3ZZYyJv7AMKy5jmUmJlRr2LIrPzAD8,12395
|
|
129
|
+
scalebox/test/run_code_interpreter_tests.sh,sha256=L5sBr5jsFhZxtqfq98yhOA8FK8-bOvYUSVeft8hb1LI,1973
|
|
130
|
+
scalebox/test/run_tests.sh,sha256=1gWoC_RhemlmtqKfBCw2_fRI20saDJ8iCTRtPUiuUE8,6091
|
|
131
|
+
scalebox/test/test_basic.py,sha256=c1mKY1KfIrjGosR5D2xRMTxUb5U2bK1hUJHnxp-Bdx8,2297
|
|
132
|
+
scalebox/test/test_code_interpreter_async_comprehensive.py,sha256=3dyqR3dadZYyQoDrFCzR-T-a7P9eeoeo-YhGnETHk9U,81809
|
|
133
|
+
scalebox/test/test_code_interpreter_e2basync_comprehensive.py,sha256=CoTGb4oXji9q5jra3r1xgUDfDXtaDs5iz7uDi_0XMic,81851
|
|
134
|
+
scalebox/test/test_code_interpreter_e2bsync_comprehensive.py,sha256=dYp1Z5v_45N-rhsYNdgfbPUWIZMVccMsSVEN_OLgwRA,102242
|
|
135
|
+
scalebox/test/test_code_interpreter_sync_comprehensive.py,sha256=2-gaHhQx_qST03femyxCeB8VJ3_Qfm94jA_JDH-GeAM,102091
|
|
136
|
+
scalebox/test/test_e2b_first.py,sha256=1yg4XtEo8bCUUMNHU2HCLlQokQrFhBwfFZ1d2FOxEm8,305
|
|
137
|
+
scalebox/test/test_sandbox_async_comprehensive.py,sha256=BUoQ25vRH-lLbWP0VU1JcZ33NxqnhED7iN-RJhaY_W8,26533
|
|
138
|
+
scalebox/test/test_sandbox_stress_and_edge_cases.py,sha256=_E29LXmVH_nA0oaEr2Fji5zbX5FKM7lsGuqzwULIsnw,26824
|
|
139
|
+
scalebox/test/test_sandbox_sync_comprehensive.py,sha256=eqR8MvTfxdPkAvbNPqcPKzDNtyPOcAyAk4RwQnyooIs,26733
|
|
140
|
+
scalebox/test/test_sandbox_usage_examples.py,sha256=qJ_dnqHP4VzHq9vgMxcSobe8SKe3HwFO77OafMp2wCo,33704
|
|
141
|
+
scalebox/test/testacreate.py,sha256=RKoot4pbarBcbtY_PO9mXq8DaNOehTO_KdNf-oEGxok,741
|
|
142
|
+
scalebox/test/testagetinfo.py,sha256=5S2t5mC_KR2CM5WXPRLGcN-KPtIqHJBiOfe-nyHokLA,537
|
|
143
|
+
scalebox/test/testcodeinterpreter_async.py,sha256=NYdq-dLs8hWLWxOfmwxcVAqrqwC_na63MlYxQqIkyxw,13750
|
|
144
|
+
scalebox/test/testcodeinterpreter_sync.py,sha256=jk2TcJh-8sFpWIbKgBgv5I1fbm75KUdoOAGJIdCvxdI,5474
|
|
145
|
+
scalebox/test/testcomputeuse.py,sha256=8Zt3IpAGchObXvqLYund0cODWaq1_Nq0kGEuLPkmT7s,7065
|
|
146
|
+
scalebox/test/testnovnc.py,sha256=puvVErCPVm5rK4IzwDwfMFBUh7PQfVJzz3IWQhGxzVA,298
|
|
147
|
+
scalebox/test/testsandbox_async.py,sha256=h1VGsEtxAmaT-4zFtRyfChkId84UqMc_3zdO6qPn9lU,3579
|
|
148
|
+
scalebox/test/testsandbox_sync.py,sha256=l0iYqML1ci2jp-SaQ8-hZuRL7XZhgiMUwtJgJx6-A1c,1446
|
|
149
|
+
scalebox/utils/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
150
|
+
scalebox/utils/httpcoreclient.py,sha256=kjTndd-YECPe3n_G1HfGgitzRwntC21tqtIqZ62V6Lg,9868
|
|
151
|
+
scalebox/utils/httpxclient.py,sha256=oLpCP2RChvnspS6Unl6ngmpY72yPokTfSqMm9m-7k38,13442
|
|
152
|
+
scalebox_sdk-0.1.0.dist-info/licenses/LICENSE,sha256=9zP32kHlBovkfji1R6ptx3H7WjJJvnf4UuwTpfogmsY,1069
|
|
153
|
+
scalebox_sdk-0.1.0.dist-info/METADATA,sha256=iQR5ZdUQbjMfA6gN44GVnPePJytU8V_ZebXoAJNhZ4E,9243
|
|
154
|
+
scalebox_sdk-0.1.0.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
|
|
155
|
+
scalebox_sdk-0.1.0.dist-info/entry_points.txt,sha256=g7C1Trcg8EyvAGMnHpJ3alqtZzQuMypYUQVFK13kOFM,47
|
|
156
|
+
scalebox_sdk-0.1.0.dist-info/top_level.txt,sha256=CDjlibkbOG-MT-s1TRxs4Xe_iN1m11ii48spB6DOMj4,9
|
|
157
|
+
scalebox_sdk-0.1.0.dist-info/RECORD,,
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
MIT License
|
|
2
|
+
|
|
3
|
+
Copyright (c) 2025 scalebox-dev
|
|
4
|
+
|
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
6
|
+
of this software and associated documentation files (the "Software"), to deal
|
|
7
|
+
in the Software without restriction, including without limitation the rights
|
|
8
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
9
|
+
copies of the Software, and to permit persons to whom the Software is
|
|
10
|
+
furnished to do so, subject to the following conditions:
|
|
11
|
+
|
|
12
|
+
The above copyright notice and this permission notice shall be included in all
|
|
13
|
+
copies or substantial portions of the Software.
|
|
14
|
+
|
|
15
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
16
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
17
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
18
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
19
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
20
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
21
|
+
SOFTWARE.
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
scalebox
|