scalebox-sdk 0.1.12__tar.gz → 0.1.13__tar.gz

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.
Files changed (167) hide show
  1. {scalebox_sdk-0.1.12 → scalebox_sdk-0.1.13}/CHANGELOG.md +12 -0
  2. {scalebox_sdk-0.1.12/scalebox_sdk.egg-info → scalebox_sdk-0.1.13}/PKG-INFO +1 -1
  3. {scalebox_sdk-0.1.12 → scalebox_sdk-0.1.13}/pyproject.toml +2 -2
  4. {scalebox_sdk-0.1.12 → scalebox_sdk-0.1.13}/scalebox/__init__.py +1 -1
  5. {scalebox_sdk-0.1.12 → scalebox_sdk-0.1.13}/scalebox/test/aclient.py +72 -72
  6. {scalebox_sdk-0.1.12 → scalebox_sdk-0.1.13}/scalebox/test/code_interpreter_centext.py +21 -21
  7. {scalebox_sdk-0.1.12 → scalebox_sdk-0.1.13}/scalebox/test/code_interpreter_centext_sync.py +21 -21
  8. {scalebox_sdk-0.1.12 → scalebox_sdk-0.1.13}/scalebox/test/code_interpreter_test.py +34 -34
  9. {scalebox_sdk-0.1.12 → scalebox_sdk-0.1.13}/scalebox/test/code_interpreter_test_sync.py +34 -34
  10. {scalebox_sdk-0.1.12 → scalebox_sdk-0.1.13}/scalebox/test/run_all_validation_tests.py +334 -334
  11. {scalebox_sdk-0.1.12 → scalebox_sdk-0.1.13}/scalebox/test/test_basic.py +78 -78
  12. {scalebox_sdk-0.1.12 → scalebox_sdk-0.1.13}/scalebox/test/test_code_interpreter_async_comprehensive.py +2653 -2653
  13. {scalebox_sdk-0.1.12 → scalebox_sdk-0.1.13}/scalebox/test/test_code_interpreter_e2basync_comprehensive.py +2655 -2655
  14. {scalebox_sdk-0.1.12 → scalebox_sdk-0.1.13}/scalebox/test/test_code_interpreter_e2bsync_comprehensive.py +3416 -3416
  15. scalebox_sdk-0.1.13/scalebox/test/test_code_interpreter_execcode.py +3352 -0
  16. {scalebox_sdk-0.1.12 → scalebox_sdk-0.1.13}/scalebox/test/test_code_interpreter_sync_comprehensive.py +3416 -3412
  17. scalebox_sdk-0.1.13/scalebox/test/test_csx_desktop_examples.py +130 -0
  18. {scalebox_sdk-0.1.12 → scalebox_sdk-0.1.13}/scalebox/test/test_e2b_first.py +11 -11
  19. {scalebox_sdk-0.1.12 → scalebox_sdk-0.1.13}/scalebox/test/test_sandbox_async_comprehensive.py +736 -738
  20. {scalebox_sdk-0.1.12 → scalebox_sdk-0.1.13}/scalebox/test/test_sandbox_stress_and_edge_cases.py +778 -778
  21. {scalebox_sdk-0.1.12 → scalebox_sdk-0.1.13}/scalebox/test/test_sandbox_sync_comprehensive.py +779 -770
  22. {scalebox_sdk-0.1.12 → scalebox_sdk-0.1.13}/scalebox/test/test_sandbox_usage_examples.py +987 -987
  23. {scalebox_sdk-0.1.12 → scalebox_sdk-0.1.13}/scalebox/test/testacreate.py +24 -24
  24. {scalebox_sdk-0.1.12 → scalebox_sdk-0.1.13}/scalebox/test/testagetinfo.py +18 -18
  25. {scalebox_sdk-0.1.12 → scalebox_sdk-0.1.13}/scalebox/test/testcodeinterpreter_async.py +508 -508
  26. {scalebox_sdk-0.1.12 → scalebox_sdk-0.1.13}/scalebox/test/testcodeinterpreter_sync.py +239 -239
  27. {scalebox_sdk-0.1.12 → scalebox_sdk-0.1.13}/scalebox/test/testcomputeuse.py +245 -243
  28. {scalebox_sdk-0.1.12 → scalebox_sdk-0.1.13}/scalebox/test/testnovnc.py +12 -12
  29. {scalebox_sdk-0.1.12 → scalebox_sdk-0.1.13}/scalebox/test/testsandbox_async.py +202 -118
  30. scalebox_sdk-0.1.13/scalebox/test/testsandbox_sync.py +71 -0
  31. {scalebox_sdk-0.1.12 → scalebox_sdk-0.1.13}/scalebox/version.py +2 -2
  32. {scalebox_sdk-0.1.12 → scalebox_sdk-0.1.13/scalebox_sdk.egg-info}/PKG-INFO +1 -1
  33. {scalebox_sdk-0.1.12 → scalebox_sdk-0.1.13}/scalebox_sdk.egg-info/SOURCES.txt +2 -0
  34. scalebox_sdk-0.1.12/scalebox/test/testsandbox_sync.py +0 -38
  35. {scalebox_sdk-0.1.12 → scalebox_sdk-0.1.13}/LICENSE +0 -0
  36. {scalebox_sdk-0.1.12 → scalebox_sdk-0.1.13}/MANIFEST.in +0 -0
  37. {scalebox_sdk-0.1.12 → scalebox_sdk-0.1.13}/README.md +0 -0
  38. {scalebox_sdk-0.1.12 → scalebox_sdk-0.1.13}/scalebox/api/__init__.py +0 -0
  39. {scalebox_sdk-0.1.12 → scalebox_sdk-0.1.13}/scalebox/api/client/__init__.py +0 -0
  40. {scalebox_sdk-0.1.12 → scalebox_sdk-0.1.13}/scalebox/api/client/api/__init__.py +0 -0
  41. {scalebox_sdk-0.1.12 → scalebox_sdk-0.1.13}/scalebox/api/client/api/sandboxes/__init__.py +0 -0
  42. {scalebox_sdk-0.1.12 → scalebox_sdk-0.1.13}/scalebox/api/client/api/sandboxes/delete_sandboxes_sandbox_id.py +0 -0
  43. {scalebox_sdk-0.1.12 → scalebox_sdk-0.1.13}/scalebox/api/client/api/sandboxes/get_sandboxes.py +0 -0
  44. {scalebox_sdk-0.1.12 → scalebox_sdk-0.1.13}/scalebox/api/client/api/sandboxes/get_sandboxes_metrics.py +0 -0
  45. {scalebox_sdk-0.1.12 → scalebox_sdk-0.1.13}/scalebox/api/client/api/sandboxes/get_sandboxes_sandbox_id.py +0 -0
  46. {scalebox_sdk-0.1.12 → scalebox_sdk-0.1.13}/scalebox/api/client/api/sandboxes/get_sandboxes_sandbox_id_logs.py +0 -0
  47. {scalebox_sdk-0.1.12 → scalebox_sdk-0.1.13}/scalebox/api/client/api/sandboxes/get_sandboxes_sandbox_id_metrics.py +0 -0
  48. {scalebox_sdk-0.1.12 → scalebox_sdk-0.1.13}/scalebox/api/client/api/sandboxes/get_v2_sandboxes.py +0 -0
  49. {scalebox_sdk-0.1.12 → scalebox_sdk-0.1.13}/scalebox/api/client/api/sandboxes/post_sandboxes.py +0 -0
  50. {scalebox_sdk-0.1.12 → scalebox_sdk-0.1.13}/scalebox/api/client/api/sandboxes/post_sandboxes_sandbox_id_pause.py +0 -0
  51. {scalebox_sdk-0.1.12 → scalebox_sdk-0.1.13}/scalebox/api/client/api/sandboxes/post_sandboxes_sandbox_id_refreshes.py +0 -0
  52. {scalebox_sdk-0.1.12 → scalebox_sdk-0.1.13}/scalebox/api/client/api/sandboxes/post_sandboxes_sandbox_id_resume.py +0 -0
  53. {scalebox_sdk-0.1.12 → scalebox_sdk-0.1.13}/scalebox/api/client/api/sandboxes/post_sandboxes_sandbox_id_timeout.py +0 -0
  54. {scalebox_sdk-0.1.12 → scalebox_sdk-0.1.13}/scalebox/api/client/client.py +0 -0
  55. {scalebox_sdk-0.1.12 → scalebox_sdk-0.1.13}/scalebox/api/client/errors.py +0 -0
  56. {scalebox_sdk-0.1.12 → scalebox_sdk-0.1.13}/scalebox/api/client/models/__init__.py +0 -0
  57. {scalebox_sdk-0.1.12 → scalebox_sdk-0.1.13}/scalebox/api/client/models/build_log_entry.py +0 -0
  58. {scalebox_sdk-0.1.12 → scalebox_sdk-0.1.13}/scalebox/api/client/models/created_access_token.py +0 -0
  59. {scalebox_sdk-0.1.12 → scalebox_sdk-0.1.13}/scalebox/api/client/models/created_team_api_key.py +0 -0
  60. {scalebox_sdk-0.1.12 → scalebox_sdk-0.1.13}/scalebox/api/client/models/error.py +0 -0
  61. {scalebox_sdk-0.1.12 → scalebox_sdk-0.1.13}/scalebox/api/client/models/identifier_masking_details.py +0 -0
  62. {scalebox_sdk-0.1.12 → scalebox_sdk-0.1.13}/scalebox/api/client/models/listed_sandbox.py +0 -0
  63. {scalebox_sdk-0.1.12 → scalebox_sdk-0.1.13}/scalebox/api/client/models/log_level.py +0 -0
  64. {scalebox_sdk-0.1.12 → scalebox_sdk-0.1.13}/scalebox/api/client/models/new_access_token.py +0 -0
  65. {scalebox_sdk-0.1.12 → scalebox_sdk-0.1.13}/scalebox/api/client/models/new_sandbox.py +0 -0
  66. {scalebox_sdk-0.1.12 → scalebox_sdk-0.1.13}/scalebox/api/client/models/new_team_api_key.py +0 -0
  67. {scalebox_sdk-0.1.12 → scalebox_sdk-0.1.13}/scalebox/api/client/models/node.py +0 -0
  68. {scalebox_sdk-0.1.12 → scalebox_sdk-0.1.13}/scalebox/api/client/models/node_detail.py +0 -0
  69. {scalebox_sdk-0.1.12 → scalebox_sdk-0.1.13}/scalebox/api/client/models/node_status.py +0 -0
  70. {scalebox_sdk-0.1.12 → scalebox_sdk-0.1.13}/scalebox/api/client/models/node_status_change.py +0 -0
  71. {scalebox_sdk-0.1.12 → scalebox_sdk-0.1.13}/scalebox/api/client/models/post_sandboxes_sandbox_id_refreshes_body.py +0 -0
  72. {scalebox_sdk-0.1.12 → scalebox_sdk-0.1.13}/scalebox/api/client/models/post_sandboxes_sandbox_id_timeout_body.py +0 -0
  73. {scalebox_sdk-0.1.12 → scalebox_sdk-0.1.13}/scalebox/api/client/models/resumed_sandbox.py +0 -0
  74. {scalebox_sdk-0.1.12 → scalebox_sdk-0.1.13}/scalebox/api/client/models/sandbox.py +0 -0
  75. {scalebox_sdk-0.1.12 → scalebox_sdk-0.1.13}/scalebox/api/client/models/sandbox_detail.py +0 -0
  76. {scalebox_sdk-0.1.12 → scalebox_sdk-0.1.13}/scalebox/api/client/models/sandbox_log.py +0 -0
  77. {scalebox_sdk-0.1.12 → scalebox_sdk-0.1.13}/scalebox/api/client/models/sandbox_logs.py +0 -0
  78. {scalebox_sdk-0.1.12 → scalebox_sdk-0.1.13}/scalebox/api/client/models/sandbox_metric.py +0 -0
  79. {scalebox_sdk-0.1.12 → scalebox_sdk-0.1.13}/scalebox/api/client/models/sandbox_state.py +0 -0
  80. {scalebox_sdk-0.1.12 → scalebox_sdk-0.1.13}/scalebox/api/client/models/sandboxes_with_metrics.py +0 -0
  81. {scalebox_sdk-0.1.12 → scalebox_sdk-0.1.13}/scalebox/api/client/models/team.py +0 -0
  82. {scalebox_sdk-0.1.12 → scalebox_sdk-0.1.13}/scalebox/api/client/models/team_api_key.py +0 -0
  83. {scalebox_sdk-0.1.12 → scalebox_sdk-0.1.13}/scalebox/api/client/models/team_user.py +0 -0
  84. {scalebox_sdk-0.1.12 → scalebox_sdk-0.1.13}/scalebox/api/client/models/template.py +0 -0
  85. {scalebox_sdk-0.1.12 → scalebox_sdk-0.1.13}/scalebox/api/client/models/template_build.py +0 -0
  86. {scalebox_sdk-0.1.12 → scalebox_sdk-0.1.13}/scalebox/api/client/models/template_build_file_upload.py +0 -0
  87. {scalebox_sdk-0.1.12 → scalebox_sdk-0.1.13}/scalebox/api/client/models/template_build_request.py +0 -0
  88. {scalebox_sdk-0.1.12 → scalebox_sdk-0.1.13}/scalebox/api/client/models/template_build_request_v2.py +0 -0
  89. {scalebox_sdk-0.1.12 → scalebox_sdk-0.1.13}/scalebox/api/client/models/template_build_start_v2.py +0 -0
  90. {scalebox_sdk-0.1.12 → scalebox_sdk-0.1.13}/scalebox/api/client/models/template_build_status.py +0 -0
  91. {scalebox_sdk-0.1.12 → scalebox_sdk-0.1.13}/scalebox/api/client/models/template_step.py +0 -0
  92. {scalebox_sdk-0.1.12 → scalebox_sdk-0.1.13}/scalebox/api/client/models/template_update_request.py +0 -0
  93. {scalebox_sdk-0.1.12 → scalebox_sdk-0.1.13}/scalebox/api/client/models/update_team_api_key.py +0 -0
  94. {scalebox_sdk-0.1.12 → scalebox_sdk-0.1.13}/scalebox/api/client/py.typed +0 -0
  95. {scalebox_sdk-0.1.12 → scalebox_sdk-0.1.13}/scalebox/api/client/types.py +0 -0
  96. {scalebox_sdk-0.1.12 → scalebox_sdk-0.1.13}/scalebox/api/metadata.py +0 -0
  97. {scalebox_sdk-0.1.12 → scalebox_sdk-0.1.13}/scalebox/cli.py +0 -0
  98. {scalebox_sdk-0.1.12 → scalebox_sdk-0.1.13}/scalebox/client/__init__.py +0 -0
  99. {scalebox_sdk-0.1.12 → scalebox_sdk-0.1.13}/scalebox/client/aclient.py +0 -0
  100. {scalebox_sdk-0.1.12 → scalebox_sdk-0.1.13}/scalebox/client/api.proto +0 -0
  101. {scalebox_sdk-0.1.12 → scalebox_sdk-0.1.13}/scalebox/client/buf.gen.yaml +0 -0
  102. {scalebox_sdk-0.1.12 → scalebox_sdk-0.1.13}/scalebox/client/client.py +0 -0
  103. {scalebox_sdk-0.1.12 → scalebox_sdk-0.1.13}/scalebox/client/requirements.txt +0 -0
  104. {scalebox_sdk-0.1.12 → scalebox_sdk-0.1.13}/scalebox/code_interpreter/__init__.py +0 -0
  105. {scalebox_sdk-0.1.12 → scalebox_sdk-0.1.13}/scalebox/code_interpreter/charts.py +0 -0
  106. {scalebox_sdk-0.1.12 → scalebox_sdk-0.1.13}/scalebox/code_interpreter/code_interpreter_async.py +0 -0
  107. {scalebox_sdk-0.1.12 → scalebox_sdk-0.1.13}/scalebox/code_interpreter/code_interpreter_sync.py +0 -0
  108. {scalebox_sdk-0.1.12 → scalebox_sdk-0.1.13}/scalebox/code_interpreter/constants.py +0 -0
  109. {scalebox_sdk-0.1.12 → scalebox_sdk-0.1.13}/scalebox/code_interpreter/exceptions.py +0 -0
  110. {scalebox_sdk-0.1.12 → scalebox_sdk-0.1.13}/scalebox/code_interpreter/models.py +0 -0
  111. {scalebox_sdk-0.1.12 → scalebox_sdk-0.1.13}/scalebox/connection_config.py +0 -0
  112. {scalebox_sdk-0.1.12 → scalebox_sdk-0.1.13}/scalebox/csx_connect/__init__.py +0 -0
  113. {scalebox_sdk-0.1.12 → scalebox_sdk-0.1.13}/scalebox/csx_connect/client.py +0 -0
  114. {scalebox_sdk-0.1.12 → scalebox_sdk-0.1.13}/scalebox/csx_desktop/__init__.py +0 -0
  115. {scalebox_sdk-0.1.12 → scalebox_sdk-0.1.13}/scalebox/csx_desktop/main.py +0 -0
  116. {scalebox_sdk-0.1.12 → scalebox_sdk-0.1.13}/scalebox/exceptions.py +0 -0
  117. {scalebox_sdk-0.1.12 → scalebox_sdk-0.1.13}/scalebox/generated/__init__.py +0 -0
  118. {scalebox_sdk-0.1.12 → scalebox_sdk-0.1.13}/scalebox/generated/api.py +0 -0
  119. {scalebox_sdk-0.1.12 → scalebox_sdk-0.1.13}/scalebox/generated/api_pb2.py +0 -0
  120. {scalebox_sdk-0.1.12 → scalebox_sdk-0.1.13}/scalebox/generated/api_pb2.pyi +0 -0
  121. {scalebox_sdk-0.1.12 → scalebox_sdk-0.1.13}/scalebox/generated/api_pb2_connect.py +0 -0
  122. {scalebox_sdk-0.1.12 → scalebox_sdk-0.1.13}/scalebox/generated/rpc.py +0 -0
  123. {scalebox_sdk-0.1.12 → scalebox_sdk-0.1.13}/scalebox/generated/versions.py +0 -0
  124. {scalebox_sdk-0.1.12 → scalebox_sdk-0.1.13}/scalebox/requirements.txt +0 -0
  125. {scalebox_sdk-0.1.12 → scalebox_sdk-0.1.13}/scalebox/sandbox/__init__.py +0 -0
  126. {scalebox_sdk-0.1.12 → scalebox_sdk-0.1.13}/scalebox/sandbox/commands/__init__.py +0 -0
  127. {scalebox_sdk-0.1.12 → scalebox_sdk-0.1.13}/scalebox/sandbox/commands/command_handle.py +0 -0
  128. {scalebox_sdk-0.1.12 → scalebox_sdk-0.1.13}/scalebox/sandbox/commands/main.py +0 -0
  129. {scalebox_sdk-0.1.12 → scalebox_sdk-0.1.13}/scalebox/sandbox/filesystem/__init__.py +0 -0
  130. {scalebox_sdk-0.1.12 → scalebox_sdk-0.1.13}/scalebox/sandbox/filesystem/filesystem.py +0 -0
  131. {scalebox_sdk-0.1.12 → scalebox_sdk-0.1.13}/scalebox/sandbox/filesystem/watch_handle.py +0 -0
  132. {scalebox_sdk-0.1.12 → scalebox_sdk-0.1.13}/scalebox/sandbox/main.py +0 -0
  133. {scalebox_sdk-0.1.12 → scalebox_sdk-0.1.13}/scalebox/sandbox/sandbox_api.py +0 -0
  134. {scalebox_sdk-0.1.12 → scalebox_sdk-0.1.13}/scalebox/sandbox/signature.py +0 -0
  135. {scalebox_sdk-0.1.12 → scalebox_sdk-0.1.13}/scalebox/sandbox/utils.py +0 -0
  136. {scalebox_sdk-0.1.12 → scalebox_sdk-0.1.13}/scalebox/sandbox_async/__init__.py +0 -0
  137. {scalebox_sdk-0.1.12 → scalebox_sdk-0.1.13}/scalebox/sandbox_async/commands/command.py +0 -0
  138. {scalebox_sdk-0.1.12 → scalebox_sdk-0.1.13}/scalebox/sandbox_async/commands/command_handle.py +0 -0
  139. {scalebox_sdk-0.1.12 → scalebox_sdk-0.1.13}/scalebox/sandbox_async/commands/pty.py +0 -0
  140. {scalebox_sdk-0.1.12 → scalebox_sdk-0.1.13}/scalebox/sandbox_async/filesystem/filesystem.py +0 -0
  141. {scalebox_sdk-0.1.12 → scalebox_sdk-0.1.13}/scalebox/sandbox_async/filesystem/watch_handle.py +0 -0
  142. {scalebox_sdk-0.1.12 → scalebox_sdk-0.1.13}/scalebox/sandbox_async/main.py +0 -0
  143. {scalebox_sdk-0.1.12 → scalebox_sdk-0.1.13}/scalebox/sandbox_async/sandbox_api.py +0 -0
  144. {scalebox_sdk-0.1.12 → scalebox_sdk-0.1.13}/scalebox/sandbox_async/utils.py +0 -0
  145. {scalebox_sdk-0.1.12 → scalebox_sdk-0.1.13}/scalebox/sandbox_sync/__init__.py +0 -0
  146. {scalebox_sdk-0.1.12 → scalebox_sdk-0.1.13}/scalebox/sandbox_sync/commands/__init__.py +0 -0
  147. {scalebox_sdk-0.1.12 → scalebox_sdk-0.1.13}/scalebox/sandbox_sync/commands/command.py +0 -0
  148. {scalebox_sdk-0.1.12 → scalebox_sdk-0.1.13}/scalebox/sandbox_sync/commands/command_handle.py +0 -0
  149. {scalebox_sdk-0.1.12 → scalebox_sdk-0.1.13}/scalebox/sandbox_sync/commands/pty.py +0 -0
  150. {scalebox_sdk-0.1.12 → scalebox_sdk-0.1.13}/scalebox/sandbox_sync/filesystem/__init__.py +0 -0
  151. {scalebox_sdk-0.1.12 → scalebox_sdk-0.1.13}/scalebox/sandbox_sync/filesystem/filesystem.py +0 -0
  152. {scalebox_sdk-0.1.12 → scalebox_sdk-0.1.13}/scalebox/sandbox_sync/filesystem/watch_handle.py +0 -0
  153. {scalebox_sdk-0.1.12 → scalebox_sdk-0.1.13}/scalebox/sandbox_sync/main.py +0 -0
  154. {scalebox_sdk-0.1.12 → scalebox_sdk-0.1.13}/scalebox/sandbox_sync/sandbox_api.py +0 -0
  155. {scalebox_sdk-0.1.12 → scalebox_sdk-0.1.13}/scalebox/test/CODE_INTERPRETER_TESTS_READY.md +0 -0
  156. {scalebox_sdk-0.1.12 → scalebox_sdk-0.1.13}/scalebox/test/README.md +0 -0
  157. {scalebox_sdk-0.1.12 → scalebox_sdk-0.1.13}/scalebox/test/__init__.py +0 -0
  158. {scalebox_sdk-0.1.12 → scalebox_sdk-0.1.13}/scalebox/test/run_code_interpreter_tests.sh +0 -0
  159. {scalebox_sdk-0.1.12 → scalebox_sdk-0.1.13}/scalebox/test/run_tests.sh +0 -0
  160. {scalebox_sdk-0.1.12 → scalebox_sdk-0.1.13}/scalebox/utils/__init__.py +0 -0
  161. {scalebox_sdk-0.1.12 → scalebox_sdk-0.1.13}/scalebox/utils/httpcoreclient.py +0 -0
  162. {scalebox_sdk-0.1.12 → scalebox_sdk-0.1.13}/scalebox/utils/httpxclient.py +0 -0
  163. {scalebox_sdk-0.1.12 → scalebox_sdk-0.1.13}/scalebox_sdk.egg-info/dependency_links.txt +0 -0
  164. {scalebox_sdk-0.1.12 → scalebox_sdk-0.1.13}/scalebox_sdk.egg-info/entry_points.txt +0 -0
  165. {scalebox_sdk-0.1.12 → scalebox_sdk-0.1.13}/scalebox_sdk.egg-info/requires.txt +0 -0
  166. {scalebox_sdk-0.1.12 → scalebox_sdk-0.1.13}/scalebox_sdk.egg-info/top_level.txt +0 -0
  167. {scalebox_sdk-0.1.12 → scalebox_sdk-0.1.13}/setup.cfg +0 -0
@@ -1,4 +1,16 @@
1
1
  # Changelog
2
+ ## [0.1.13] - 2025-10-13
3
+
4
+ ### Added
5
+ - Version 0.1.13 release
6
+
7
+ ### Changed
8
+ - Automated version bump (patch)
9
+
10
+ ### Fixed
11
+ - Minor improvements and bug fixes
12
+
13
+
2
14
  ## [0.1.12] - 2025-10-11
3
15
 
4
16
  ### Added
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: scalebox-sdk
3
- Version: 0.1.12
3
+ Version: 0.1.13
4
4
  Summary: ScaleBox Python SDK - A multi-language code execution sandbox with Python, R, Node.js, Deno/TypeScript, Java, and Bash support
5
5
  Author-email: ScaleBox Team <dev@scalebox.dev>
6
6
  Maintainer-email: ScaleBox Team <dev@scalebox.dev>
@@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta"
4
4
 
5
5
  [project]
6
6
  name = "scalebox-sdk"
7
- version = "0.1.12"
7
+ version = "0.1.13"
8
8
  description = "ScaleBox Python SDK - A multi-language code execution sandbox with Python, R, Node.js, Deno/TypeScript, Java, and Bash support"
9
9
  readme = "README.md"
10
10
  requires-python = ">=3.10"
@@ -114,7 +114,7 @@ line_length = 88
114
114
  known_first_party = ["scalebox"]
115
115
 
116
116
  [tool.mypy]
117
- python_version = "0.1.12"
117
+ python_version = "0.1.13"
118
118
  ignore_missing_imports = true
119
119
  ignore_errors = true
120
120
 
@@ -9,7 +9,7 @@ A multi-language code execution sandbox with support for:
9
9
  - Real-time callbacks and monitoring
10
10
  """
11
11
 
12
- __version__ = "0.1.12"
12
+ __version__ = "0.1.13"
13
13
  __author__ = "ScaleBox Team"
14
14
  __email__ = "dev@scalebox.dev"
15
15
 
@@ -1,72 +1,72 @@
1
- # import sys, os
2
- # sys.path.insert(0, os.path.join(os.path.dirname(__file__), 'generated'))
3
- import asyncio
4
-
5
- import aiohttp
6
- from generated import api_pb2
7
- from generated.api_pb2_connect import AsyncFilesystemClient
8
- from tenacity import (
9
- retry,
10
- retry_if_exception_type,
11
- stop_after_attempt,
12
- wait_exponential,
13
- )
14
-
15
-
16
- @retry(
17
- stop=stop_after_attempt(5), # 最大重试5次
18
- wait=wait_exponential(multiplier=1, min=4, max=10), # 指数退避等待
19
- retry=retry_if_exception_type(
20
- (aiohttp.ClientError, asyncio.TimeoutError)
21
- ), # 针对这些异常重试
22
- )
23
- async def watch_directory_example():
24
- # 创建 aiohttp 客户端会话
25
- async with aiohttp.ClientSession(
26
- timeout=aiohttp.ClientTimeout(total=None)
27
- ) as session:
28
- # 创建文件系统客户端
29
- client = AsyncFilesystemClient(
30
- base_url="http://localhost:8080",
31
- http_client=session,
32
- # protocol=ConnectProtocol.CONNECT_PROTOBUF # 如果需要指定协议
33
- )
34
- # extra = {"authorization": "Bearer root"}
35
- # 创建监视请求
36
- request = api_pb2.WatchDirRequest(path="/root")
37
-
38
- # 可选:添加额外的请求头
39
- extra_headers = {
40
- "Authorization": "Bearer root",
41
- "X-Custom-Header": "custom-value",
42
- }
43
-
44
- try:
45
- # 使用 async for 循环处理流式响应
46
- async for response in client.watch_dir(
47
- request, extra_headers=extra_headers
48
- ):
49
- print(f"Received event: {response}")
50
- # 在这里处理每个事件
51
- # 例如,根据事件类型执行不同的操作
52
-
53
- # 如果收到特定事件,可以中断循环
54
- # if response.event_type == api_pb2.WatchDirResponse.EVENT_TYPE_STOP:
55
- # break
56
-
57
- except Exception as e:
58
- print(f"Error during directory watching: {e}")
59
-
60
- finally:
61
- # 关闭会话(在 with 语句中会自动关闭,但这里为了清晰展示)
62
- await session.close()
63
-
64
-
65
- async def main():
66
- # 运行监视示例
67
- await watch_directory_example()
68
-
69
-
70
- if __name__ == "__main__":
71
- # 运行异步主函数
72
- asyncio.run(main())
1
+ # import sys, os
2
+ # sys.path.insert(0, os.path.join(os.path.dirname(__file__), 'generated'))
3
+ import asyncio
4
+
5
+ import aiohttp
6
+ from generated import api_pb2
7
+ from generated.api_pb2_connect import AsyncFilesystemClient
8
+ from tenacity import (
9
+ retry,
10
+ retry_if_exception_type,
11
+ stop_after_attempt,
12
+ wait_exponential,
13
+ )
14
+
15
+
16
+ @retry(
17
+ stop=stop_after_attempt(5), # 最大重试5次
18
+ wait=wait_exponential(multiplier=1, min=4, max=10), # 指数退避等待
19
+ retry=retry_if_exception_type(
20
+ (aiohttp.ClientError, asyncio.TimeoutError)
21
+ ), # 针对这些异常重试
22
+ )
23
+ async def watch_directory_example():
24
+ # 创建 aiohttp 客户端会话
25
+ async with aiohttp.ClientSession(
26
+ timeout=aiohttp.ClientTimeout(total=None)
27
+ ) as session:
28
+ # 创建文件系统客户端
29
+ client = AsyncFilesystemClient(
30
+ base_url="http://localhost:8080",
31
+ http_client=session,
32
+ # protocol=ConnectProtocol.CONNECT_PROTOBUF # 如果需要指定协议
33
+ )
34
+ # extra = {"authorization": "Bearer root"}
35
+ # 创建监视请求
36
+ request = api_pb2.WatchDirRequest(path="/root")
37
+
38
+ # 可选:添加额外的请求头
39
+ extra_headers = {
40
+ "Authorization": "Bearer root",
41
+ "X-Custom-Header": "custom-value",
42
+ }
43
+
44
+ try:
45
+ # 使用 async for 循环处理流式响应
46
+ async for response in client.watch_dir(
47
+ request, extra_headers=extra_headers
48
+ ):
49
+ print(f"Received event: {response}")
50
+ # 在这里处理每个事件
51
+ # 例如,根据事件类型执行不同的操作
52
+
53
+ # 如果收到特定事件,可以中断循环
54
+ # if response.event_type == api_pb2.WatchDirResponse.EVENT_TYPE_STOP:
55
+ # break
56
+
57
+ except Exception as e:
58
+ print(f"Error during directory watching: {e}")
59
+
60
+ finally:
61
+ # 关闭会话(在 with 语句中会自动关闭,但这里为了清晰展示)
62
+ await session.close()
63
+
64
+
65
+ async def main():
66
+ # 运行监视示例
67
+ await watch_directory_example()
68
+
69
+
70
+ if __name__ == "__main__":
71
+ # 运行异步主函数
72
+ asyncio.run(main())
@@ -1,21 +1,21 @@
1
- import asyncio
2
- import time
3
-
4
- from scalebox.code_interpreter import AsyncSandbox
5
-
6
- # from scalebox.sandbox_async.main import AsyncSandbox
7
-
8
-
9
- async def pty_output_handler(output):
10
- """处理 PTY 输出的回调函数"""
11
- print(f"输出: {output}")
12
-
13
-
14
- async def main():
15
- sandbox = AsyncSandbox()
16
- context = await sandbox.create_code_context(language="python3")
17
- print(context.__dict__)
18
-
19
-
20
- if __name__ == "__main__":
21
- asyncio.run(main())
1
+ import asyncio
2
+ import time
3
+
4
+ from scalebox.code_interpreter import AsyncSandbox
5
+
6
+ # from scalebox.sandbox_async.main import AsyncSandbox
7
+
8
+
9
+ async def pty_output_handler(output):
10
+ """处理 PTY 输出的回调函数"""
11
+ print(f"输出: {output}")
12
+
13
+
14
+ async def main():
15
+ sandbox = AsyncSandbox()
16
+ context = await sandbox.create_code_context(language="python3")
17
+ print(context.__dict__)
18
+
19
+
20
+ if __name__ == "__main__":
21
+ asyncio.run(main())
@@ -1,21 +1,21 @@
1
- import asyncio
2
- import time
3
-
4
- from scalebox.code_interpreter import Sandbox
5
-
6
- # from scalebox.sandbox_async.main import AsyncSandbox
7
-
8
-
9
- async def pty_output_handler(output):
10
- """处理 PTY 输出的回调函数"""
11
- print(f"输出: {output}")
12
-
13
-
14
- def main():
15
- sandbox = Sandbox()
16
- context = sandbox.create_code_context(language="python3")
17
- print(context.__dict__)
18
-
19
-
20
- if __name__ == "__main__":
21
- main()
1
+ import asyncio
2
+ import time
3
+
4
+ from scalebox.code_interpreter import Sandbox
5
+
6
+ # from scalebox.sandbox_async.main import AsyncSandbox
7
+
8
+
9
+ async def pty_output_handler(output):
10
+ """处理 PTY 输出的回调函数"""
11
+ print(f"输出: {output}")
12
+
13
+
14
+ def main():
15
+ sandbox = Sandbox()
16
+ context = sandbox.create_code_context(language="python3")
17
+ print(context.__dict__)
18
+
19
+
20
+ if __name__ == "__main__":
21
+ main()
@@ -1,34 +1,34 @@
1
- import asyncio
2
- import time
3
-
4
- from scalebox.code_interpreter import AsyncSandbox
5
-
6
- # from scalebox.sandbox_async.main import AsyncSandbox
7
-
8
-
9
- async def pty_output_handler(output):
10
- """处理 PTY 输出的回调函数"""
11
- print(f"输出: {output}")
12
-
13
-
14
- async def main():
15
- sandbox = AsyncSandbox.create()
16
- proc = await sandbox.run_code(
17
- """
18
- import time
19
- for i in range(3):
20
- print("Hello E2B", i)
21
- time.sleep(50)
22
- """,
23
- language="python3",
24
- request_timeout=3600,
25
- on_stdout=pty_output_handler,
26
- on_stderr=pty_output_handler,
27
- on_result=pty_output_handler,
28
- )
29
- print(proc)
30
- time.sleep(10)
31
-
32
-
33
- if __name__ == "__main__":
34
- asyncio.run(main())
1
+ import asyncio
2
+ import time
3
+
4
+ from scalebox.code_interpreter import AsyncSandbox
5
+
6
+ # from scalebox.sandbox_async.main import AsyncSandbox
7
+
8
+
9
+ async def pty_output_handler(output):
10
+ """处理 PTY 输出的回调函数"""
11
+ print(f"输出: {output}")
12
+
13
+
14
+ async def main():
15
+ sandbox = AsyncSandbox.create()
16
+ proc = await sandbox.run_code(
17
+ """
18
+ import time
19
+ for i in range(3):
20
+ print("Hello E2B", i)
21
+ time.sleep(50)
22
+ """,
23
+ language="python3",
24
+ request_timeout=3600,
25
+ on_stdout=pty_output_handler,
26
+ on_stderr=pty_output_handler,
27
+ on_result=pty_output_handler,
28
+ )
29
+ print(proc)
30
+ time.sleep(10)
31
+
32
+
33
+ if __name__ == "__main__":
34
+ asyncio.run(main())
@@ -1,34 +1,34 @@
1
- import asyncio
2
- import time
3
-
4
- from code_interpreter import Sandbox
5
-
6
- # from scalebox.sandbox_async.main import AsyncSandbox
7
-
8
-
9
- def pty_output_handler(output):
10
- """处理 PTY 输出的回调函数"""
11
- print(f"输出: {output}")
12
-
13
-
14
- def main():
15
- sandbox = Sandbox()
16
- proc = sandbox.run_code(
17
- """
18
- import time
19
- for i in range(3):
20
- print("Hello E2B", i)
21
- time.sleep(50)
22
- """,
23
- language="python3",
24
- request_timeout=3600,
25
- on_stdout=pty_output_handler,
26
- on_stderr=pty_output_handler,
27
- on_result=pty_output_handler,
28
- )
29
- print(proc)
30
- time.sleep(10)
31
-
32
-
33
- if __name__ == "__main__":
34
- main()
1
+ import asyncio
2
+ import time
3
+
4
+ from code_interpreter import Sandbox
5
+
6
+ # from scalebox.sandbox_async.main import AsyncSandbox
7
+
8
+
9
+ def pty_output_handler(output):
10
+ """处理 PTY 输出的回调函数"""
11
+ print(f"输出: {output}")
12
+
13
+
14
+ def main():
15
+ sandbox = Sandbox()
16
+ proc = sandbox.run_code(
17
+ """
18
+ import time
19
+ for i in range(3):
20
+ print("Hello E2B", i)
21
+ time.sleep(50)
22
+ """,
23
+ language="python3",
24
+ request_timeout=3600,
25
+ on_stdout=pty_output_handler,
26
+ on_stderr=pty_output_handler,
27
+ on_result=pty_output_handler,
28
+ )
29
+ print(proc)
30
+ time.sleep(10)
31
+
32
+
33
+ if __name__ == "__main__":
34
+ main()