opensandbox 0.1.8.dev0__tar.gz → 0.1.8.dev1__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 (211) hide show
  1. {opensandbox-0.1.8.dev0 → opensandbox-0.1.8.dev1}/PKG-INFO +4 -4
  2. {opensandbox-0.1.8.dev0 → opensandbox-0.1.8.dev1}/README.md +3 -3
  3. {opensandbox-0.1.8.dev0 → opensandbox-0.1.8.dev1}/src/opensandbox/adapters/converter/exception_converter.py +4 -1
  4. {opensandbox-0.1.8.dev0 → opensandbox-0.1.8.dev1}/src/opensandbox/adapters/converter/response_handler.py +16 -6
  5. {opensandbox-0.1.8.dev0 → opensandbox-0.1.8.dev1}/src/opensandbox/pool_async.py +3 -9
  6. {opensandbox-0.1.8.dev0 → opensandbox-0.1.8.dev1}/src/opensandbox/sync/pool.py +3 -10
  7. {opensandbox-0.1.8.dev0 → opensandbox-0.1.8.dev1}/.gitignore +0 -0
  8. {opensandbox-0.1.8.dev0 → opensandbox-0.1.8.dev1}/LICENSE +0 -0
  9. {opensandbox-0.1.8.dev0 → opensandbox-0.1.8.dev1}/pyproject.toml +0 -0
  10. {opensandbox-0.1.8.dev0 → opensandbox-0.1.8.dev1}/src/opensandbox/__init__.py +0 -0
  11. {opensandbox-0.1.8.dev0 → opensandbox-0.1.8.dev1}/src/opensandbox/_async_pool_reconciler.py +0 -0
  12. {opensandbox-0.1.8.dev0 → opensandbox-0.1.8.dev1}/src/opensandbox/_async_pool_store.py +0 -0
  13. {opensandbox-0.1.8.dev0 → opensandbox-0.1.8.dev1}/src/opensandbox/_pool_reconciler.py +0 -0
  14. {opensandbox-0.1.8.dev0 → opensandbox-0.1.8.dev1}/src/opensandbox/_pool_store.py +0 -0
  15. {opensandbox-0.1.8.dev0 → opensandbox-0.1.8.dev1}/src/opensandbox/adapters/__init__.py +0 -0
  16. {opensandbox-0.1.8.dev0 → opensandbox-0.1.8.dev1}/src/opensandbox/adapters/command_adapter.py +0 -0
  17. {opensandbox-0.1.8.dev0 → opensandbox-0.1.8.dev1}/src/opensandbox/adapters/converter/__init__.py +0 -0
  18. {opensandbox-0.1.8.dev0 → opensandbox-0.1.8.dev1}/src/opensandbox/adapters/converter/command_model_converter.py +0 -0
  19. {opensandbox-0.1.8.dev0 → opensandbox-0.1.8.dev1}/src/opensandbox/adapters/converter/event_node.py +0 -0
  20. {opensandbox-0.1.8.dev0 → opensandbox-0.1.8.dev1}/src/opensandbox/adapters/converter/execution_converter.py +0 -0
  21. {opensandbox-0.1.8.dev0 → opensandbox-0.1.8.dev1}/src/opensandbox/adapters/converter/execution_event_dispatcher.py +0 -0
  22. {opensandbox-0.1.8.dev0 → opensandbox-0.1.8.dev1}/src/opensandbox/adapters/converter/filesystem_model_converter.py +0 -0
  23. {opensandbox-0.1.8.dev0 → opensandbox-0.1.8.dev1}/src/opensandbox/adapters/converter/metrics_model_converter.py +0 -0
  24. {opensandbox-0.1.8.dev0 → opensandbox-0.1.8.dev1}/src/opensandbox/adapters/converter/sandbox_model_converter.py +0 -0
  25. {opensandbox-0.1.8.dev0 → opensandbox-0.1.8.dev1}/src/opensandbox/adapters/egress_adapter.py +0 -0
  26. {opensandbox-0.1.8.dev0 → opensandbox-0.1.8.dev1}/src/opensandbox/adapters/factory.py +0 -0
  27. {opensandbox-0.1.8.dev0 → opensandbox-0.1.8.dev1}/src/opensandbox/adapters/filesystem_adapter.py +0 -0
  28. {opensandbox-0.1.8.dev0 → opensandbox-0.1.8.dev1}/src/opensandbox/adapters/health_adapter.py +0 -0
  29. {opensandbox-0.1.8.dev0 → opensandbox-0.1.8.dev1}/src/opensandbox/adapters/metrics_adapter.py +0 -0
  30. {opensandbox-0.1.8.dev0 → opensandbox-0.1.8.dev1}/src/opensandbox/adapters/sandboxes_adapter.py +0 -0
  31. {opensandbox-0.1.8.dev0 → opensandbox-0.1.8.dev1}/src/opensandbox/api/__init__.py +0 -0
  32. {opensandbox-0.1.8.dev0 → opensandbox-0.1.8.dev1}/src/opensandbox/api/egress/__init__.py +0 -0
  33. {opensandbox-0.1.8.dev0 → opensandbox-0.1.8.dev1}/src/opensandbox/api/egress/api/__init__.py +0 -0
  34. {opensandbox-0.1.8.dev0 → opensandbox-0.1.8.dev1}/src/opensandbox/api/egress/api/policy/__init__.py +0 -0
  35. {opensandbox-0.1.8.dev0 → opensandbox-0.1.8.dev1}/src/opensandbox/api/egress/api/policy/get_policy.py +0 -0
  36. {opensandbox-0.1.8.dev0 → opensandbox-0.1.8.dev1}/src/opensandbox/api/egress/api/policy/patch_policy.py +0 -0
  37. {opensandbox-0.1.8.dev0 → opensandbox-0.1.8.dev1}/src/opensandbox/api/egress/client.py +0 -0
  38. {opensandbox-0.1.8.dev0 → opensandbox-0.1.8.dev1}/src/opensandbox/api/egress/errors.py +0 -0
  39. {opensandbox-0.1.8.dev0 → opensandbox-0.1.8.dev1}/src/opensandbox/api/egress/models/__init__.py +0 -0
  40. {opensandbox-0.1.8.dev0 → opensandbox-0.1.8.dev1}/src/opensandbox/api/egress/models/network_policy.py +0 -0
  41. {opensandbox-0.1.8.dev0 → opensandbox-0.1.8.dev1}/src/opensandbox/api/egress/models/network_policy_default_action.py +0 -0
  42. {opensandbox-0.1.8.dev0 → opensandbox-0.1.8.dev1}/src/opensandbox/api/egress/models/network_rule.py +0 -0
  43. {opensandbox-0.1.8.dev0 → opensandbox-0.1.8.dev1}/src/opensandbox/api/egress/models/network_rule_action.py +0 -0
  44. {opensandbox-0.1.8.dev0 → opensandbox-0.1.8.dev1}/src/opensandbox/api/egress/models/policy_status_response.py +0 -0
  45. {opensandbox-0.1.8.dev0 → opensandbox-0.1.8.dev1}/src/opensandbox/api/egress/py.typed +0 -0
  46. {opensandbox-0.1.8.dev0 → opensandbox-0.1.8.dev1}/src/opensandbox/api/egress/types.py +0 -0
  47. {opensandbox-0.1.8.dev0 → opensandbox-0.1.8.dev1}/src/opensandbox/api/execd/__init__.py +0 -0
  48. {opensandbox-0.1.8.dev0 → opensandbox-0.1.8.dev1}/src/opensandbox/api/execd/api/__init__.py +0 -0
  49. {opensandbox-0.1.8.dev0 → opensandbox-0.1.8.dev1}/src/opensandbox/api/execd/api/code_interpreting/__init__.py +0 -0
  50. {opensandbox-0.1.8.dev0 → opensandbox-0.1.8.dev1}/src/opensandbox/api/execd/api/code_interpreting/create_code_context.py +0 -0
  51. {opensandbox-0.1.8.dev0 → opensandbox-0.1.8.dev1}/src/opensandbox/api/execd/api/code_interpreting/delete_context.py +0 -0
  52. {opensandbox-0.1.8.dev0 → opensandbox-0.1.8.dev1}/src/opensandbox/api/execd/api/code_interpreting/delete_contexts_by_language.py +0 -0
  53. {opensandbox-0.1.8.dev0 → opensandbox-0.1.8.dev1}/src/opensandbox/api/execd/api/code_interpreting/get_context.py +0 -0
  54. {opensandbox-0.1.8.dev0 → opensandbox-0.1.8.dev1}/src/opensandbox/api/execd/api/code_interpreting/interrupt_code.py +0 -0
  55. {opensandbox-0.1.8.dev0 → opensandbox-0.1.8.dev1}/src/opensandbox/api/execd/api/code_interpreting/list_contexts.py +0 -0
  56. {opensandbox-0.1.8.dev0 → opensandbox-0.1.8.dev1}/src/opensandbox/api/execd/api/code_interpreting/run_code.py +0 -0
  57. {opensandbox-0.1.8.dev0 → opensandbox-0.1.8.dev1}/src/opensandbox/api/execd/api/command/__init__.py +0 -0
  58. {opensandbox-0.1.8.dev0 → opensandbox-0.1.8.dev1}/src/opensandbox/api/execd/api/command/create_session.py +0 -0
  59. {opensandbox-0.1.8.dev0 → opensandbox-0.1.8.dev1}/src/opensandbox/api/execd/api/command/delete_session.py +0 -0
  60. {opensandbox-0.1.8.dev0 → opensandbox-0.1.8.dev1}/src/opensandbox/api/execd/api/command/get_background_command_logs.py +0 -0
  61. {opensandbox-0.1.8.dev0 → opensandbox-0.1.8.dev1}/src/opensandbox/api/execd/api/command/get_command_status.py +0 -0
  62. {opensandbox-0.1.8.dev0 → opensandbox-0.1.8.dev1}/src/opensandbox/api/execd/api/command/interrupt_command.py +0 -0
  63. {opensandbox-0.1.8.dev0 → opensandbox-0.1.8.dev1}/src/opensandbox/api/execd/api/command/run_command.py +0 -0
  64. {opensandbox-0.1.8.dev0 → opensandbox-0.1.8.dev1}/src/opensandbox/api/execd/api/command/run_in_session.py +0 -0
  65. {opensandbox-0.1.8.dev0 → opensandbox-0.1.8.dev1}/src/opensandbox/api/execd/api/filesystem/__init__.py +0 -0
  66. {opensandbox-0.1.8.dev0 → opensandbox-0.1.8.dev1}/src/opensandbox/api/execd/api/filesystem/chmod_files.py +0 -0
  67. {opensandbox-0.1.8.dev0 → opensandbox-0.1.8.dev1}/src/opensandbox/api/execd/api/filesystem/download_file.py +0 -0
  68. {opensandbox-0.1.8.dev0 → opensandbox-0.1.8.dev1}/src/opensandbox/api/execd/api/filesystem/get_files_info.py +0 -0
  69. {opensandbox-0.1.8.dev0 → opensandbox-0.1.8.dev1}/src/opensandbox/api/execd/api/filesystem/make_dirs.py +0 -0
  70. {opensandbox-0.1.8.dev0 → opensandbox-0.1.8.dev1}/src/opensandbox/api/execd/api/filesystem/remove_dirs.py +0 -0
  71. {opensandbox-0.1.8.dev0 → opensandbox-0.1.8.dev1}/src/opensandbox/api/execd/api/filesystem/remove_files.py +0 -0
  72. {opensandbox-0.1.8.dev0 → opensandbox-0.1.8.dev1}/src/opensandbox/api/execd/api/filesystem/rename_files.py +0 -0
  73. {opensandbox-0.1.8.dev0 → opensandbox-0.1.8.dev1}/src/opensandbox/api/execd/api/filesystem/replace_content.py +0 -0
  74. {opensandbox-0.1.8.dev0 → opensandbox-0.1.8.dev1}/src/opensandbox/api/execd/api/filesystem/search_files.py +0 -0
  75. {opensandbox-0.1.8.dev0 → opensandbox-0.1.8.dev1}/src/opensandbox/api/execd/api/filesystem/upload_file.py +0 -0
  76. {opensandbox-0.1.8.dev0 → opensandbox-0.1.8.dev1}/src/opensandbox/api/execd/api/health/__init__.py +0 -0
  77. {opensandbox-0.1.8.dev0 → opensandbox-0.1.8.dev1}/src/opensandbox/api/execd/api/health/ping.py +0 -0
  78. {opensandbox-0.1.8.dev0 → opensandbox-0.1.8.dev1}/src/opensandbox/api/execd/api/metric/__init__.py +0 -0
  79. {opensandbox-0.1.8.dev0 → opensandbox-0.1.8.dev1}/src/opensandbox/api/execd/api/metric/get_metrics.py +0 -0
  80. {opensandbox-0.1.8.dev0 → opensandbox-0.1.8.dev1}/src/opensandbox/api/execd/api/metric/watch_metrics.py +0 -0
  81. {opensandbox-0.1.8.dev0 → opensandbox-0.1.8.dev1}/src/opensandbox/api/execd/client.py +0 -0
  82. {opensandbox-0.1.8.dev0 → opensandbox-0.1.8.dev1}/src/opensandbox/api/execd/errors.py +0 -0
  83. {opensandbox-0.1.8.dev0 → opensandbox-0.1.8.dev1}/src/opensandbox/api/execd/models/__init__.py +0 -0
  84. {opensandbox-0.1.8.dev0 → opensandbox-0.1.8.dev1}/src/opensandbox/api/execd/models/chmod_files_body.py +0 -0
  85. {opensandbox-0.1.8.dev0 → opensandbox-0.1.8.dev1}/src/opensandbox/api/execd/models/code_context.py +0 -0
  86. {opensandbox-0.1.8.dev0 → opensandbox-0.1.8.dev1}/src/opensandbox/api/execd/models/code_context_request.py +0 -0
  87. {opensandbox-0.1.8.dev0 → opensandbox-0.1.8.dev1}/src/opensandbox/api/execd/models/command_status_response.py +0 -0
  88. {opensandbox-0.1.8.dev0 → opensandbox-0.1.8.dev1}/src/opensandbox/api/execd/models/create_session_request.py +0 -0
  89. {opensandbox-0.1.8.dev0 → opensandbox-0.1.8.dev1}/src/opensandbox/api/execd/models/create_session_response.py +0 -0
  90. {opensandbox-0.1.8.dev0 → opensandbox-0.1.8.dev1}/src/opensandbox/api/execd/models/error_response.py +0 -0
  91. {opensandbox-0.1.8.dev0 → opensandbox-0.1.8.dev1}/src/opensandbox/api/execd/models/file_info.py +0 -0
  92. {opensandbox-0.1.8.dev0 → opensandbox-0.1.8.dev1}/src/opensandbox/api/execd/models/file_metadata.py +0 -0
  93. {opensandbox-0.1.8.dev0 → opensandbox-0.1.8.dev1}/src/opensandbox/api/execd/models/get_files_info_response_200.py +0 -0
  94. {opensandbox-0.1.8.dev0 → opensandbox-0.1.8.dev1}/src/opensandbox/api/execd/models/make_dirs_body.py +0 -0
  95. {opensandbox-0.1.8.dev0 → opensandbox-0.1.8.dev1}/src/opensandbox/api/execd/models/metrics.py +0 -0
  96. {opensandbox-0.1.8.dev0 → opensandbox-0.1.8.dev1}/src/opensandbox/api/execd/models/permission.py +0 -0
  97. {opensandbox-0.1.8.dev0 → opensandbox-0.1.8.dev1}/src/opensandbox/api/execd/models/rename_file_item.py +0 -0
  98. {opensandbox-0.1.8.dev0 → opensandbox-0.1.8.dev1}/src/opensandbox/api/execd/models/replace_content_body.py +0 -0
  99. {opensandbox-0.1.8.dev0 → opensandbox-0.1.8.dev1}/src/opensandbox/api/execd/models/replace_file_content_item.py +0 -0
  100. {opensandbox-0.1.8.dev0 → opensandbox-0.1.8.dev1}/src/opensandbox/api/execd/models/run_code_request.py +0 -0
  101. {opensandbox-0.1.8.dev0 → opensandbox-0.1.8.dev1}/src/opensandbox/api/execd/models/run_command_request.py +0 -0
  102. {opensandbox-0.1.8.dev0 → opensandbox-0.1.8.dev1}/src/opensandbox/api/execd/models/run_command_request_envs.py +0 -0
  103. {opensandbox-0.1.8.dev0 → opensandbox-0.1.8.dev1}/src/opensandbox/api/execd/models/run_in_session_request.py +0 -0
  104. {opensandbox-0.1.8.dev0 → opensandbox-0.1.8.dev1}/src/opensandbox/api/execd/models/server_stream_event.py +0 -0
  105. {opensandbox-0.1.8.dev0 → opensandbox-0.1.8.dev1}/src/opensandbox/api/execd/models/server_stream_event_error.py +0 -0
  106. {opensandbox-0.1.8.dev0 → opensandbox-0.1.8.dev1}/src/opensandbox/api/execd/models/server_stream_event_results.py +0 -0
  107. {opensandbox-0.1.8.dev0 → opensandbox-0.1.8.dev1}/src/opensandbox/api/execd/models/server_stream_event_type.py +0 -0
  108. {opensandbox-0.1.8.dev0 → opensandbox-0.1.8.dev1}/src/opensandbox/api/execd/models/upload_file_body.py +0 -0
  109. {opensandbox-0.1.8.dev0 → opensandbox-0.1.8.dev1}/src/opensandbox/api/execd/py.typed +0 -0
  110. {opensandbox-0.1.8.dev0 → opensandbox-0.1.8.dev1}/src/opensandbox/api/execd/types.py +0 -0
  111. {opensandbox-0.1.8.dev0 → opensandbox-0.1.8.dev1}/src/opensandbox/api/lifecycle/__init__.py +0 -0
  112. {opensandbox-0.1.8.dev0 → opensandbox-0.1.8.dev1}/src/opensandbox/api/lifecycle/api/__init__.py +0 -0
  113. {opensandbox-0.1.8.dev0 → opensandbox-0.1.8.dev1}/src/opensandbox/api/lifecycle/api/sandboxes/__init__.py +0 -0
  114. {opensandbox-0.1.8.dev0 → opensandbox-0.1.8.dev1}/src/opensandbox/api/lifecycle/api/sandboxes/delete_sandboxes_sandbox_id.py +0 -0
  115. {opensandbox-0.1.8.dev0 → opensandbox-0.1.8.dev1}/src/opensandbox/api/lifecycle/api/sandboxes/get_sandboxes.py +0 -0
  116. {opensandbox-0.1.8.dev0 → opensandbox-0.1.8.dev1}/src/opensandbox/api/lifecycle/api/sandboxes/get_sandboxes_sandbox_id.py +0 -0
  117. {opensandbox-0.1.8.dev0 → opensandbox-0.1.8.dev1}/src/opensandbox/api/lifecycle/api/sandboxes/get_sandboxes_sandbox_id_endpoints_port.py +0 -0
  118. {opensandbox-0.1.8.dev0 → opensandbox-0.1.8.dev1}/src/opensandbox/api/lifecycle/api/sandboxes/post_sandboxes.py +0 -0
  119. {opensandbox-0.1.8.dev0 → opensandbox-0.1.8.dev1}/src/opensandbox/api/lifecycle/api/sandboxes/post_sandboxes_sandbox_id_pause.py +0 -0
  120. {opensandbox-0.1.8.dev0 → opensandbox-0.1.8.dev1}/src/opensandbox/api/lifecycle/api/sandboxes/post_sandboxes_sandbox_id_renew_expiration.py +0 -0
  121. {opensandbox-0.1.8.dev0 → opensandbox-0.1.8.dev1}/src/opensandbox/api/lifecycle/api/sandboxes/post_sandboxes_sandbox_id_resume.py +0 -0
  122. {opensandbox-0.1.8.dev0 → opensandbox-0.1.8.dev1}/src/opensandbox/api/lifecycle/api/snapshots/__init__.py +0 -0
  123. {opensandbox-0.1.8.dev0 → opensandbox-0.1.8.dev1}/src/opensandbox/api/lifecycle/api/snapshots/delete_snapshots_snapshot_id.py +0 -0
  124. {opensandbox-0.1.8.dev0 → opensandbox-0.1.8.dev1}/src/opensandbox/api/lifecycle/api/snapshots/get_snapshots.py +0 -0
  125. {opensandbox-0.1.8.dev0 → opensandbox-0.1.8.dev1}/src/opensandbox/api/lifecycle/api/snapshots/get_snapshots_snapshot_id.py +0 -0
  126. {opensandbox-0.1.8.dev0 → opensandbox-0.1.8.dev1}/src/opensandbox/api/lifecycle/api/snapshots/post_sandboxes_sandbox_id_snapshots.py +0 -0
  127. {opensandbox-0.1.8.dev0 → opensandbox-0.1.8.dev1}/src/opensandbox/api/lifecycle/client.py +0 -0
  128. {opensandbox-0.1.8.dev0 → opensandbox-0.1.8.dev1}/src/opensandbox/api/lifecycle/errors.py +0 -0
  129. {opensandbox-0.1.8.dev0 → opensandbox-0.1.8.dev1}/src/opensandbox/api/lifecycle/models/__init__.py +0 -0
  130. {opensandbox-0.1.8.dev0 → opensandbox-0.1.8.dev1}/src/opensandbox/api/lifecycle/models/create_sandbox_request.py +0 -0
  131. {opensandbox-0.1.8.dev0 → opensandbox-0.1.8.dev1}/src/opensandbox/api/lifecycle/models/create_sandbox_request_env.py +0 -0
  132. {opensandbox-0.1.8.dev0 → opensandbox-0.1.8.dev1}/src/opensandbox/api/lifecycle/models/create_sandbox_request_extensions.py +0 -0
  133. {opensandbox-0.1.8.dev0 → opensandbox-0.1.8.dev1}/src/opensandbox/api/lifecycle/models/create_sandbox_request_metadata.py +0 -0
  134. {opensandbox-0.1.8.dev0 → opensandbox-0.1.8.dev1}/src/opensandbox/api/lifecycle/models/create_sandbox_response.py +0 -0
  135. {opensandbox-0.1.8.dev0 → opensandbox-0.1.8.dev1}/src/opensandbox/api/lifecycle/models/create_sandbox_response_metadata.py +0 -0
  136. {opensandbox-0.1.8.dev0 → opensandbox-0.1.8.dev1}/src/opensandbox/api/lifecycle/models/create_snapshot_request.py +0 -0
  137. {opensandbox-0.1.8.dev0 → opensandbox-0.1.8.dev1}/src/opensandbox/api/lifecycle/models/endpoint.py +0 -0
  138. {opensandbox-0.1.8.dev0 → opensandbox-0.1.8.dev1}/src/opensandbox/api/lifecycle/models/endpoint_headers.py +0 -0
  139. {opensandbox-0.1.8.dev0 → opensandbox-0.1.8.dev1}/src/opensandbox/api/lifecycle/models/error_response.py +0 -0
  140. {opensandbox-0.1.8.dev0 → opensandbox-0.1.8.dev1}/src/opensandbox/api/lifecycle/models/host.py +0 -0
  141. {opensandbox-0.1.8.dev0 → opensandbox-0.1.8.dev1}/src/opensandbox/api/lifecycle/models/image_spec.py +0 -0
  142. {opensandbox-0.1.8.dev0 → opensandbox-0.1.8.dev1}/src/opensandbox/api/lifecycle/models/image_spec_auth.py +0 -0
  143. {opensandbox-0.1.8.dev0 → opensandbox-0.1.8.dev1}/src/opensandbox/api/lifecycle/models/list_sandboxes_response.py +0 -0
  144. {opensandbox-0.1.8.dev0 → opensandbox-0.1.8.dev1}/src/opensandbox/api/lifecycle/models/list_snapshots_response.py +0 -0
  145. {opensandbox-0.1.8.dev0 → opensandbox-0.1.8.dev1}/src/opensandbox/api/lifecycle/models/network_policy.py +0 -0
  146. {opensandbox-0.1.8.dev0 → opensandbox-0.1.8.dev1}/src/opensandbox/api/lifecycle/models/network_policy_default_action.py +0 -0
  147. {opensandbox-0.1.8.dev0 → opensandbox-0.1.8.dev1}/src/opensandbox/api/lifecycle/models/network_rule.py +0 -0
  148. {opensandbox-0.1.8.dev0 → opensandbox-0.1.8.dev1}/src/opensandbox/api/lifecycle/models/network_rule_action.py +0 -0
  149. {opensandbox-0.1.8.dev0 → opensandbox-0.1.8.dev1}/src/opensandbox/api/lifecycle/models/ossfs.py +0 -0
  150. {opensandbox-0.1.8.dev0 → opensandbox-0.1.8.dev1}/src/opensandbox/api/lifecycle/models/ossfs_version.py +0 -0
  151. {opensandbox-0.1.8.dev0 → opensandbox-0.1.8.dev1}/src/opensandbox/api/lifecycle/models/pagination_info.py +0 -0
  152. {opensandbox-0.1.8.dev0 → opensandbox-0.1.8.dev1}/src/opensandbox/api/lifecycle/models/platform_spec.py +0 -0
  153. {opensandbox-0.1.8.dev0 → opensandbox-0.1.8.dev1}/src/opensandbox/api/lifecycle/models/platform_spec_arch.py +0 -0
  154. {opensandbox-0.1.8.dev0 → opensandbox-0.1.8.dev1}/src/opensandbox/api/lifecycle/models/platform_spec_os.py +0 -0
  155. {opensandbox-0.1.8.dev0 → opensandbox-0.1.8.dev1}/src/opensandbox/api/lifecycle/models/pvc.py +0 -0
  156. {opensandbox-0.1.8.dev0 → opensandbox-0.1.8.dev1}/src/opensandbox/api/lifecycle/models/renew_sandbox_expiration_request.py +0 -0
  157. {opensandbox-0.1.8.dev0 → opensandbox-0.1.8.dev1}/src/opensandbox/api/lifecycle/models/renew_sandbox_expiration_response.py +0 -0
  158. {opensandbox-0.1.8.dev0 → opensandbox-0.1.8.dev1}/src/opensandbox/api/lifecycle/models/resource_limits.py +0 -0
  159. {opensandbox-0.1.8.dev0 → opensandbox-0.1.8.dev1}/src/opensandbox/api/lifecycle/models/sandbox.py +0 -0
  160. {opensandbox-0.1.8.dev0 → opensandbox-0.1.8.dev1}/src/opensandbox/api/lifecycle/models/sandbox_metadata.py +0 -0
  161. {opensandbox-0.1.8.dev0 → opensandbox-0.1.8.dev1}/src/opensandbox/api/lifecycle/models/sandbox_status.py +0 -0
  162. {opensandbox-0.1.8.dev0 → opensandbox-0.1.8.dev1}/src/opensandbox/api/lifecycle/models/snapshot.py +0 -0
  163. {opensandbox-0.1.8.dev0 → opensandbox-0.1.8.dev1}/src/opensandbox/api/lifecycle/models/snapshot_status.py +0 -0
  164. {opensandbox-0.1.8.dev0 → opensandbox-0.1.8.dev1}/src/opensandbox/api/lifecycle/models/volume.py +0 -0
  165. {opensandbox-0.1.8.dev0 → opensandbox-0.1.8.dev1}/src/opensandbox/api/lifecycle/py.typed +0 -0
  166. {opensandbox-0.1.8.dev0 → opensandbox-0.1.8.dev1}/src/opensandbox/api/lifecycle/types.py +0 -0
  167. {opensandbox-0.1.8.dev0 → opensandbox-0.1.8.dev1}/src/opensandbox/async_redis_pool_store.py +0 -0
  168. {opensandbox-0.1.8.dev0 → opensandbox-0.1.8.dev1}/src/opensandbox/config/__init__.py +0 -0
  169. {opensandbox-0.1.8.dev0 → opensandbox-0.1.8.dev1}/src/opensandbox/config/connection.py +0 -0
  170. {opensandbox-0.1.8.dev0 → opensandbox-0.1.8.dev1}/src/opensandbox/config/connection_sync.py +0 -0
  171. {opensandbox-0.1.8.dev0 → opensandbox-0.1.8.dev1}/src/opensandbox/constants.py +0 -0
  172. {opensandbox-0.1.8.dev0 → opensandbox-0.1.8.dev1}/src/opensandbox/exceptions/__init__.py +0 -0
  173. {opensandbox-0.1.8.dev0 → opensandbox-0.1.8.dev1}/src/opensandbox/exceptions/sandbox.py +0 -0
  174. {opensandbox-0.1.8.dev0 → opensandbox-0.1.8.dev1}/src/opensandbox/manager.py +0 -0
  175. {opensandbox-0.1.8.dev0 → opensandbox-0.1.8.dev1}/src/opensandbox/models/__init__.py +0 -0
  176. {opensandbox-0.1.8.dev0 → opensandbox-0.1.8.dev1}/src/opensandbox/models/execd.py +0 -0
  177. {opensandbox-0.1.8.dev0 → opensandbox-0.1.8.dev1}/src/opensandbox/models/execd_sync.py +0 -0
  178. {opensandbox-0.1.8.dev0 → opensandbox-0.1.8.dev1}/src/opensandbox/models/filesystem.py +0 -0
  179. {opensandbox-0.1.8.dev0 → opensandbox-0.1.8.dev1}/src/opensandbox/models/sandboxes.py +0 -0
  180. {opensandbox-0.1.8.dev0 → opensandbox-0.1.8.dev1}/src/opensandbox/pool.py +0 -0
  181. {opensandbox-0.1.8.dev0 → opensandbox-0.1.8.dev1}/src/opensandbox/pool_types.py +0 -0
  182. {opensandbox-0.1.8.dev0 → opensandbox-0.1.8.dev1}/src/opensandbox/py.typed +0 -0
  183. {opensandbox-0.1.8.dev0 → opensandbox-0.1.8.dev1}/src/opensandbox/redis_pool_store.py +0 -0
  184. {opensandbox-0.1.8.dev0 → opensandbox-0.1.8.dev1}/src/opensandbox/sandbox.py +0 -0
  185. {opensandbox-0.1.8.dev0 → opensandbox-0.1.8.dev1}/src/opensandbox/services/__init__.py +0 -0
  186. {opensandbox-0.1.8.dev0 → opensandbox-0.1.8.dev1}/src/opensandbox/services/command.py +0 -0
  187. {opensandbox-0.1.8.dev0 → opensandbox-0.1.8.dev1}/src/opensandbox/services/egress.py +0 -0
  188. {opensandbox-0.1.8.dev0 → opensandbox-0.1.8.dev1}/src/opensandbox/services/filesystem.py +0 -0
  189. {opensandbox-0.1.8.dev0 → opensandbox-0.1.8.dev1}/src/opensandbox/services/health.py +0 -0
  190. {opensandbox-0.1.8.dev0 → opensandbox-0.1.8.dev1}/src/opensandbox/services/metrics.py +0 -0
  191. {opensandbox-0.1.8.dev0 → opensandbox-0.1.8.dev1}/src/opensandbox/services/sandbox.py +0 -0
  192. {opensandbox-0.1.8.dev0 → opensandbox-0.1.8.dev1}/src/opensandbox/sync/__init__.py +0 -0
  193. {opensandbox-0.1.8.dev0 → opensandbox-0.1.8.dev1}/src/opensandbox/sync/adapters/__init__.py +0 -0
  194. {opensandbox-0.1.8.dev0 → opensandbox-0.1.8.dev1}/src/opensandbox/sync/adapters/command_adapter.py +0 -0
  195. {opensandbox-0.1.8.dev0 → opensandbox-0.1.8.dev1}/src/opensandbox/sync/adapters/converter/__init__.py +0 -0
  196. {opensandbox-0.1.8.dev0 → opensandbox-0.1.8.dev1}/src/opensandbox/sync/adapters/converter/execution_event_dispatcher.py +0 -0
  197. {opensandbox-0.1.8.dev0 → opensandbox-0.1.8.dev1}/src/opensandbox/sync/adapters/egress_adapter.py +0 -0
  198. {opensandbox-0.1.8.dev0 → opensandbox-0.1.8.dev1}/src/opensandbox/sync/adapters/factory.py +0 -0
  199. {opensandbox-0.1.8.dev0 → opensandbox-0.1.8.dev1}/src/opensandbox/sync/adapters/filesystem_adapter.py +0 -0
  200. {opensandbox-0.1.8.dev0 → opensandbox-0.1.8.dev1}/src/opensandbox/sync/adapters/health_adapter.py +0 -0
  201. {opensandbox-0.1.8.dev0 → opensandbox-0.1.8.dev1}/src/opensandbox/sync/adapters/metrics_adapter.py +0 -0
  202. {opensandbox-0.1.8.dev0 → opensandbox-0.1.8.dev1}/src/opensandbox/sync/adapters/sandboxes_adapter.py +0 -0
  203. {opensandbox-0.1.8.dev0 → opensandbox-0.1.8.dev1}/src/opensandbox/sync/manager.py +0 -0
  204. {opensandbox-0.1.8.dev0 → opensandbox-0.1.8.dev1}/src/opensandbox/sync/sandbox.py +0 -0
  205. {opensandbox-0.1.8.dev0 → opensandbox-0.1.8.dev1}/src/opensandbox/sync/services/__init__.py +0 -0
  206. {opensandbox-0.1.8.dev0 → opensandbox-0.1.8.dev1}/src/opensandbox/sync/services/command.py +0 -0
  207. {opensandbox-0.1.8.dev0 → opensandbox-0.1.8.dev1}/src/opensandbox/sync/services/egress.py +0 -0
  208. {opensandbox-0.1.8.dev0 → opensandbox-0.1.8.dev1}/src/opensandbox/sync/services/filesystem.py +0 -0
  209. {opensandbox-0.1.8.dev0 → opensandbox-0.1.8.dev1}/src/opensandbox/sync/services/health.py +0 -0
  210. {opensandbox-0.1.8.dev0 → opensandbox-0.1.8.dev1}/src/opensandbox/sync/services/metrics.py +0 -0
  211. {opensandbox-0.1.8.dev0 → opensandbox-0.1.8.dev1}/src/opensandbox/sync/services/sandbox.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: opensandbox
3
- Version: 0.1.8.dev0
3
+ Version: 0.1.8.dev1
4
4
  Summary: OpenSandbox Python SDK - Secure, isolated execution environments
5
5
  Project-URL: Homepage, https://open-sandbox.ai
6
6
  Project-URL: Repository, https://github.com/alibaba/OpenSandbox
@@ -453,9 +453,9 @@ Notes:
453
453
  lock owner and is not the pool identifier.
454
454
  - All nodes sharing one pool must use the same creation and warmup definition. If
455
455
  that definition changes, use a new `pool_name` or `key_prefix` and drain the old pool.
456
- - `resize(max_idle)` can be called from any node. The new idle target is stored in
457
- the shared state store and the current primary applies replenish or shrink work
458
- during reconcile.
456
+ - `resize(max_idle)` can be called from any node. The call returns after the new
457
+ idle target is stored in the shared state store; the current primary applies
458
+ replenish or shrink work during periodic reconcile.
459
459
  - Use `resize(0)` and wait for `snapshot().idle_count == 0` to drain a distributed
460
460
  idle buffer. `release_all_idle()` is only a best-effort cleanup pass in distributed
461
461
  mode because another primary may put new idle sandboxes concurrently unless the
@@ -220,9 +220,9 @@ Notes:
220
220
  lock owner and is not the pool identifier.
221
221
  - All nodes sharing one pool must use the same creation and warmup definition. If
222
222
  that definition changes, use a new `pool_name` or `key_prefix` and drain the old pool.
223
- - `resize(max_idle)` can be called from any node. The new idle target is stored in
224
- the shared state store and the current primary applies replenish or shrink work
225
- during reconcile.
223
+ - `resize(max_idle)` can be called from any node. The call returns after the new
224
+ idle target is stored in the shared state store; the current primary applies
225
+ replenish or shrink work during periodic reconcile.
226
226
  - Use `resize(0)` and wait for `snapshot().idle_count == 0` to drain a distributed
227
227
  idle buffer. `release_all_idle()` is only a best-effort cleanup pass in distributed
228
228
  mode because another primary may put new idle sandboxes concurrently unless the
@@ -234,8 +234,11 @@ def _parse_error_body(body: Any) -> SandboxError | None:
234
234
  message=body,
235
235
  )
236
236
 
237
- # Extract code and message from dict
237
+ # FastAPI HTTPException bodies are commonly wrapped as {"detail": {"code": ..., "message": ...}}.
238
238
  if isinstance(body, dict):
239
+ if isinstance(body.get("detail"), dict):
240
+ body = body["detail"]
241
+
239
242
  code: str | None = body.get("code")
240
243
  message: str | None = body.get("message")
241
244
 
@@ -28,7 +28,7 @@ import logging
28
28
  from http import HTTPStatus
29
29
  from typing import Any, TypeVar
30
30
 
31
- from opensandbox.exceptions import SandboxApiException
31
+ from opensandbox.exceptions import SandboxApiException, SandboxError
32
32
 
33
33
  logger = logging.getLogger(__name__)
34
34
 
@@ -118,17 +118,27 @@ def handle_api_error(response_obj: Any, operation_name: str = "API call") -> Non
118
118
 
119
119
  if status_code >= 300:
120
120
  error_message = f"{operation_name} failed: HTTP {status_code}"
121
+ sandbox_error: SandboxError | None = None
121
122
 
122
123
  if hasattr(response_obj, "parsed") and response_obj.parsed is not None:
123
- if hasattr(response_obj.parsed, "message"):
124
- error_message = (
125
- f"{operation_name} failed: {response_obj.parsed.message}"
124
+ parsed = response_obj.parsed
125
+ parsed_code = getattr(parsed, "code", None)
126
+ parsed_message = getattr(parsed, "message", None)
127
+
128
+ if parsed_message:
129
+ error_message = f"{operation_name} failed: {parsed_message}"
130
+ elif parsed_code:
131
+ error_message = f"{operation_name} failed: {parsed_code}"
132
+
133
+ if parsed_code:
134
+ sandbox_error = SandboxError(
135
+ code=str(parsed_code),
136
+ message=str(parsed_message or ""),
126
137
  )
127
- elif hasattr(response_obj.parsed, "code"):
128
- error_message = f"{operation_name} failed: {response_obj.parsed.code}"
129
138
 
130
139
  raise SandboxApiException(
131
140
  message=error_message,
132
141
  status_code=status_code,
133
142
  request_id=request_id,
143
+ error=sandbox_error,
134
144
  )
@@ -135,10 +135,9 @@ class SandboxPoolAsync:
135
135
  await self._state_store.set_idle_entry_ttl(
136
136
  self._config.pool_name, self._config.idle_timeout
137
137
  )
138
- if await self._state_store.get_max_idle(self._config.pool_name) is None:
139
- await self._state_store.set_max_idle(
140
- self._config.pool_name, self._config.max_idle
141
- )
138
+ await self._state_store.set_max_idle(
139
+ self._config.pool_name, self._config.max_idle
140
+ )
142
141
  stop_event = asyncio.Event()
143
142
  self._stop_event = stop_event
144
143
  self._lifecycle_state = PoolLifecycleState.RUNNING
@@ -220,11 +219,6 @@ class SandboxPoolAsync:
220
219
  raise ValueError("max_idle must be >= 0")
221
220
  await self._state_store.set_max_idle(self._config.pool_name, max_idle)
222
221
  self._current_max_idle = max_idle
223
- if self._lifecycle_state == PoolLifecycleState.RUNNING:
224
- asyncio.create_task(
225
- self._run_reconcile_tick(),
226
- name=f"sandbox-pool-resize-{self._config.pool_name}",
227
- )
228
222
 
229
223
  async def release_all_idle(self) -> int:
230
224
  pool_name = self._config.pool_name
@@ -134,10 +134,9 @@ class SandboxPoolSync:
134
134
  self._state_store.set_idle_entry_ttl(
135
135
  self._config.pool_name, self._config.idle_timeout
136
136
  )
137
- if self._state_store.get_max_idle(self._config.pool_name) is None:
138
- self._state_store.set_max_idle(
139
- self._config.pool_name, self._config.max_idle
140
- )
137
+ self._state_store.set_max_idle(
138
+ self._config.pool_name, self._config.max_idle
139
+ )
141
140
  self._warmup_executor = ThreadPoolExecutor(
142
141
  max_workers=max(1, int(self._config.warmup_concurrency or 1)),
143
142
  thread_name_prefix=f"sandbox-pool-warmup-{self._config.pool_name}",
@@ -226,12 +225,6 @@ class SandboxPoolSync:
226
225
  raise ValueError("max_idle must be >= 0")
227
226
  self._state_store.set_max_idle(self._config.pool_name, max_idle)
228
227
  self._current_max_idle = max_idle
229
- if self._lifecycle_state == PoolLifecycleState.RUNNING:
230
- threading.Thread(
231
- target=self._run_reconcile_tick,
232
- name=f"sandbox-pool-resize-{self._config.pool_name}",
233
- daemon=True,
234
- ).start()
235
228
 
236
229
  def release_all_idle(self) -> int:
237
230
  pool_name = self._config.pool_name