modal 1.1.5.dev37__tar.gz → 1.1.5.dev39__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.

Potentially problematic release.


This version of modal might be problematic. Click here for more details.

Files changed (196) hide show
  1. {modal-1.1.5.dev37 → modal-1.1.5.dev39}/PKG-INFO +1 -1
  2. {modal-1.1.5.dev37 → modal-1.1.5.dev39}/modal/client.pyi +2 -2
  3. {modal-1.1.5.dev37 → modal-1.1.5.dev39}/modal.egg-info/PKG-INFO +1 -1
  4. {modal-1.1.5.dev37 → modal-1.1.5.dev39}/modal.egg-info/SOURCES.txt +6 -0
  5. modal-1.1.5.dev39/modal_proto/sandbox_router.proto +125 -0
  6. modal-1.1.5.dev39/modal_proto/sandbox_router_grpc.py +89 -0
  7. modal-1.1.5.dev39/modal_proto/sandbox_router_pb2.py +128 -0
  8. modal-1.1.5.dev39/modal_proto/sandbox_router_pb2.pyi +293 -0
  9. modal-1.1.5.dev39/modal_proto/sandbox_router_pb2_grpc.py +169 -0
  10. modal-1.1.5.dev39/modal_proto/sandbox_router_pb2_grpc.pyi +63 -0
  11. {modal-1.1.5.dev37 → modal-1.1.5.dev39}/modal_version/__init__.py +1 -1
  12. {modal-1.1.5.dev37 → modal-1.1.5.dev39}/LICENSE +0 -0
  13. {modal-1.1.5.dev37 → modal-1.1.5.dev39}/README.md +0 -0
  14. {modal-1.1.5.dev37 → modal-1.1.5.dev39}/modal/__init__.py +0 -0
  15. {modal-1.1.5.dev37 → modal-1.1.5.dev39}/modal/__main__.py +0 -0
  16. {modal-1.1.5.dev37 → modal-1.1.5.dev39}/modal/_clustered_functions.py +0 -0
  17. {modal-1.1.5.dev37 → modal-1.1.5.dev39}/modal/_clustered_functions.pyi +0 -0
  18. {modal-1.1.5.dev37 → modal-1.1.5.dev39}/modal/_container_entrypoint.py +0 -0
  19. {modal-1.1.5.dev37 → modal-1.1.5.dev39}/modal/_functions.py +0 -0
  20. {modal-1.1.5.dev37 → modal-1.1.5.dev39}/modal/_ipython.py +0 -0
  21. {modal-1.1.5.dev37 → modal-1.1.5.dev39}/modal/_location.py +0 -0
  22. {modal-1.1.5.dev37 → modal-1.1.5.dev39}/modal/_object.py +0 -0
  23. {modal-1.1.5.dev37 → modal-1.1.5.dev39}/modal/_output.py +0 -0
  24. {modal-1.1.5.dev37 → modal-1.1.5.dev39}/modal/_partial_function.py +0 -0
  25. {modal-1.1.5.dev37 → modal-1.1.5.dev39}/modal/_pty.py +0 -0
  26. {modal-1.1.5.dev37 → modal-1.1.5.dev39}/modal/_resolver.py +0 -0
  27. {modal-1.1.5.dev37 → modal-1.1.5.dev39}/modal/_resources.py +0 -0
  28. {modal-1.1.5.dev37 → modal-1.1.5.dev39}/modal/_runtime/__init__.py +0 -0
  29. {modal-1.1.5.dev37 → modal-1.1.5.dev39}/modal/_runtime/asgi.py +0 -0
  30. {modal-1.1.5.dev37 → modal-1.1.5.dev39}/modal/_runtime/container_io_manager.py +0 -0
  31. {modal-1.1.5.dev37 → modal-1.1.5.dev39}/modal/_runtime/container_io_manager.pyi +0 -0
  32. {modal-1.1.5.dev37 → modal-1.1.5.dev39}/modal/_runtime/execution_context.py +0 -0
  33. {modal-1.1.5.dev37 → modal-1.1.5.dev39}/modal/_runtime/execution_context.pyi +0 -0
  34. {modal-1.1.5.dev37 → modal-1.1.5.dev39}/modal/_runtime/gpu_memory_snapshot.py +0 -0
  35. {modal-1.1.5.dev37 → modal-1.1.5.dev39}/modal/_runtime/telemetry.py +0 -0
  36. {modal-1.1.5.dev37 → modal-1.1.5.dev39}/modal/_runtime/user_code_imports.py +0 -0
  37. {modal-1.1.5.dev37 → modal-1.1.5.dev39}/modal/_serialization.py +0 -0
  38. {modal-1.1.5.dev37 → modal-1.1.5.dev39}/modal/_traceback.py +0 -0
  39. {modal-1.1.5.dev37 → modal-1.1.5.dev39}/modal/_tunnel.py +0 -0
  40. {modal-1.1.5.dev37 → modal-1.1.5.dev39}/modal/_tunnel.pyi +0 -0
  41. {modal-1.1.5.dev37 → modal-1.1.5.dev39}/modal/_type_manager.py +0 -0
  42. {modal-1.1.5.dev37 → modal-1.1.5.dev39}/modal/_utils/__init__.py +0 -0
  43. {modal-1.1.5.dev37 → modal-1.1.5.dev39}/modal/_utils/app_utils.py +0 -0
  44. {modal-1.1.5.dev37 → modal-1.1.5.dev39}/modal/_utils/async_utils.py +0 -0
  45. {modal-1.1.5.dev37 → modal-1.1.5.dev39}/modal/_utils/auth_token_manager.py +0 -0
  46. {modal-1.1.5.dev37 → modal-1.1.5.dev39}/modal/_utils/blob_utils.py +0 -0
  47. {modal-1.1.5.dev37 → modal-1.1.5.dev39}/modal/_utils/bytes_io_segment_payload.py +0 -0
  48. {modal-1.1.5.dev37 → modal-1.1.5.dev39}/modal/_utils/deprecation.py +0 -0
  49. {modal-1.1.5.dev37 → modal-1.1.5.dev39}/modal/_utils/docker_utils.py +0 -0
  50. {modal-1.1.5.dev37 → modal-1.1.5.dev39}/modal/_utils/function_utils.py +0 -0
  51. {modal-1.1.5.dev37 → modal-1.1.5.dev39}/modal/_utils/git_utils.py +0 -0
  52. {modal-1.1.5.dev37 → modal-1.1.5.dev39}/modal/_utils/grpc_testing.py +0 -0
  53. {modal-1.1.5.dev37 → modal-1.1.5.dev39}/modal/_utils/grpc_utils.py +0 -0
  54. {modal-1.1.5.dev37 → modal-1.1.5.dev39}/modal/_utils/hash_utils.py +0 -0
  55. {modal-1.1.5.dev37 → modal-1.1.5.dev39}/modal/_utils/http_utils.py +0 -0
  56. {modal-1.1.5.dev37 → modal-1.1.5.dev39}/modal/_utils/jwt_utils.py +0 -0
  57. {modal-1.1.5.dev37 → modal-1.1.5.dev39}/modal/_utils/logger.py +0 -0
  58. {modal-1.1.5.dev37 → modal-1.1.5.dev39}/modal/_utils/mount_utils.py +0 -0
  59. {modal-1.1.5.dev37 → modal-1.1.5.dev39}/modal/_utils/name_utils.py +0 -0
  60. {modal-1.1.5.dev37 → modal-1.1.5.dev39}/modal/_utils/package_utils.py +0 -0
  61. {modal-1.1.5.dev37 → modal-1.1.5.dev39}/modal/_utils/pattern_utils.py +0 -0
  62. {modal-1.1.5.dev37 → modal-1.1.5.dev39}/modal/_utils/rand_pb_testing.py +0 -0
  63. {modal-1.1.5.dev37 → modal-1.1.5.dev39}/modal/_utils/shell_utils.py +0 -0
  64. {modal-1.1.5.dev37 → modal-1.1.5.dev39}/modal/_utils/time_utils.py +0 -0
  65. {modal-1.1.5.dev37 → modal-1.1.5.dev39}/modal/_vendor/__init__.py +0 -0
  66. {modal-1.1.5.dev37 → modal-1.1.5.dev39}/modal/_vendor/a2wsgi_wsgi.py +0 -0
  67. {modal-1.1.5.dev37 → modal-1.1.5.dev39}/modal/_vendor/cloudpickle.py +0 -0
  68. {modal-1.1.5.dev37 → modal-1.1.5.dev39}/modal/_vendor/tblib.py +0 -0
  69. {modal-1.1.5.dev37 → modal-1.1.5.dev39}/modal/_watcher.py +0 -0
  70. {modal-1.1.5.dev37 → modal-1.1.5.dev39}/modal/app.py +0 -0
  71. {modal-1.1.5.dev37 → modal-1.1.5.dev39}/modal/app.pyi +0 -0
  72. {modal-1.1.5.dev37 → modal-1.1.5.dev39}/modal/builder/2023.12.312.txt +0 -0
  73. {modal-1.1.5.dev37 → modal-1.1.5.dev39}/modal/builder/2023.12.txt +0 -0
  74. {modal-1.1.5.dev37 → modal-1.1.5.dev39}/modal/builder/2024.04.txt +0 -0
  75. {modal-1.1.5.dev37 → modal-1.1.5.dev39}/modal/builder/2024.10.txt +0 -0
  76. {modal-1.1.5.dev37 → modal-1.1.5.dev39}/modal/builder/2025.06.txt +0 -0
  77. {modal-1.1.5.dev37 → modal-1.1.5.dev39}/modal/builder/PREVIEW.txt +0 -0
  78. {modal-1.1.5.dev37 → modal-1.1.5.dev39}/modal/builder/README.md +0 -0
  79. {modal-1.1.5.dev37 → modal-1.1.5.dev39}/modal/builder/base-images.json +0 -0
  80. {modal-1.1.5.dev37 → modal-1.1.5.dev39}/modal/call_graph.py +0 -0
  81. {modal-1.1.5.dev37 → modal-1.1.5.dev39}/modal/cli/__init__.py +0 -0
  82. {modal-1.1.5.dev37 → modal-1.1.5.dev39}/modal/cli/_download.py +0 -0
  83. {modal-1.1.5.dev37 → modal-1.1.5.dev39}/modal/cli/_traceback.py +0 -0
  84. {modal-1.1.5.dev37 → modal-1.1.5.dev39}/modal/cli/app.py +0 -0
  85. {modal-1.1.5.dev37 → modal-1.1.5.dev39}/modal/cli/cluster.py +0 -0
  86. {modal-1.1.5.dev37 → modal-1.1.5.dev39}/modal/cli/config.py +0 -0
  87. {modal-1.1.5.dev37 → modal-1.1.5.dev39}/modal/cli/container.py +0 -0
  88. {modal-1.1.5.dev37 → modal-1.1.5.dev39}/modal/cli/dict.py +0 -0
  89. {modal-1.1.5.dev37 → modal-1.1.5.dev39}/modal/cli/entry_point.py +0 -0
  90. {modal-1.1.5.dev37 → modal-1.1.5.dev39}/modal/cli/environment.py +0 -0
  91. {modal-1.1.5.dev37 → modal-1.1.5.dev39}/modal/cli/import_refs.py +0 -0
  92. {modal-1.1.5.dev37 → modal-1.1.5.dev39}/modal/cli/launch.py +0 -0
  93. {modal-1.1.5.dev37 → modal-1.1.5.dev39}/modal/cli/network_file_system.py +0 -0
  94. {modal-1.1.5.dev37 → modal-1.1.5.dev39}/modal/cli/profile.py +0 -0
  95. {modal-1.1.5.dev37 → modal-1.1.5.dev39}/modal/cli/programs/__init__.py +0 -0
  96. {modal-1.1.5.dev37 → modal-1.1.5.dev39}/modal/cli/programs/launch_instance_ssh.py +0 -0
  97. {modal-1.1.5.dev37 → modal-1.1.5.dev39}/modal/cli/programs/run_jupyter.py +0 -0
  98. {modal-1.1.5.dev37 → modal-1.1.5.dev39}/modal/cli/programs/run_marimo.py +0 -0
  99. {modal-1.1.5.dev37 → modal-1.1.5.dev39}/modal/cli/programs/vscode.py +0 -0
  100. {modal-1.1.5.dev37 → modal-1.1.5.dev39}/modal/cli/queues.py +0 -0
  101. {modal-1.1.5.dev37 → modal-1.1.5.dev39}/modal/cli/run.py +0 -0
  102. {modal-1.1.5.dev37 → modal-1.1.5.dev39}/modal/cli/secret.py +0 -0
  103. {modal-1.1.5.dev37 → modal-1.1.5.dev39}/modal/cli/token.py +0 -0
  104. {modal-1.1.5.dev37 → modal-1.1.5.dev39}/modal/cli/utils.py +0 -0
  105. {modal-1.1.5.dev37 → modal-1.1.5.dev39}/modal/cli/volume.py +0 -0
  106. {modal-1.1.5.dev37 → modal-1.1.5.dev39}/modal/client.py +0 -0
  107. {modal-1.1.5.dev37 → modal-1.1.5.dev39}/modal/cloud_bucket_mount.py +0 -0
  108. {modal-1.1.5.dev37 → modal-1.1.5.dev39}/modal/cloud_bucket_mount.pyi +0 -0
  109. {modal-1.1.5.dev37 → modal-1.1.5.dev39}/modal/cls.py +0 -0
  110. {modal-1.1.5.dev37 → modal-1.1.5.dev39}/modal/cls.pyi +0 -0
  111. {modal-1.1.5.dev37 → modal-1.1.5.dev39}/modal/config.py +0 -0
  112. {modal-1.1.5.dev37 → modal-1.1.5.dev39}/modal/container_process.py +0 -0
  113. {modal-1.1.5.dev37 → modal-1.1.5.dev39}/modal/container_process.pyi +0 -0
  114. {modal-1.1.5.dev37 → modal-1.1.5.dev39}/modal/dict.py +0 -0
  115. {modal-1.1.5.dev37 → modal-1.1.5.dev39}/modal/dict.pyi +0 -0
  116. {modal-1.1.5.dev37 → modal-1.1.5.dev39}/modal/environments.py +0 -0
  117. {modal-1.1.5.dev37 → modal-1.1.5.dev39}/modal/environments.pyi +0 -0
  118. {modal-1.1.5.dev37 → modal-1.1.5.dev39}/modal/exception.py +0 -0
  119. {modal-1.1.5.dev37 → modal-1.1.5.dev39}/modal/experimental/__init__.py +0 -0
  120. {modal-1.1.5.dev37 → modal-1.1.5.dev39}/modal/experimental/flash.py +0 -0
  121. {modal-1.1.5.dev37 → modal-1.1.5.dev39}/modal/experimental/flash.pyi +0 -0
  122. {modal-1.1.5.dev37 → modal-1.1.5.dev39}/modal/experimental/ipython.py +0 -0
  123. {modal-1.1.5.dev37 → modal-1.1.5.dev39}/modal/file_io.py +0 -0
  124. {modal-1.1.5.dev37 → modal-1.1.5.dev39}/modal/file_io.pyi +0 -0
  125. {modal-1.1.5.dev37 → modal-1.1.5.dev39}/modal/file_pattern_matcher.py +0 -0
  126. {modal-1.1.5.dev37 → modal-1.1.5.dev39}/modal/functions.py +0 -0
  127. {modal-1.1.5.dev37 → modal-1.1.5.dev39}/modal/functions.pyi +0 -0
  128. {modal-1.1.5.dev37 → modal-1.1.5.dev39}/modal/gpu.py +0 -0
  129. {modal-1.1.5.dev37 → modal-1.1.5.dev39}/modal/image.py +0 -0
  130. {modal-1.1.5.dev37 → modal-1.1.5.dev39}/modal/image.pyi +0 -0
  131. {modal-1.1.5.dev37 → modal-1.1.5.dev39}/modal/io_streams.py +0 -0
  132. {modal-1.1.5.dev37 → modal-1.1.5.dev39}/modal/io_streams.pyi +0 -0
  133. {modal-1.1.5.dev37 → modal-1.1.5.dev39}/modal/mount.py +0 -0
  134. {modal-1.1.5.dev37 → modal-1.1.5.dev39}/modal/mount.pyi +0 -0
  135. {modal-1.1.5.dev37 → modal-1.1.5.dev39}/modal/network_file_system.py +0 -0
  136. {modal-1.1.5.dev37 → modal-1.1.5.dev39}/modal/network_file_system.pyi +0 -0
  137. {modal-1.1.5.dev37 → modal-1.1.5.dev39}/modal/object.py +0 -0
  138. {modal-1.1.5.dev37 → modal-1.1.5.dev39}/modal/object.pyi +0 -0
  139. {modal-1.1.5.dev37 → modal-1.1.5.dev39}/modal/output.py +0 -0
  140. {modal-1.1.5.dev37 → modal-1.1.5.dev39}/modal/parallel_map.py +0 -0
  141. {modal-1.1.5.dev37 → modal-1.1.5.dev39}/modal/parallel_map.pyi +0 -0
  142. {modal-1.1.5.dev37 → modal-1.1.5.dev39}/modal/partial_function.py +0 -0
  143. {modal-1.1.5.dev37 → modal-1.1.5.dev39}/modal/partial_function.pyi +0 -0
  144. {modal-1.1.5.dev37 → modal-1.1.5.dev39}/modal/proxy.py +0 -0
  145. {modal-1.1.5.dev37 → modal-1.1.5.dev39}/modal/proxy.pyi +0 -0
  146. {modal-1.1.5.dev37 → modal-1.1.5.dev39}/modal/py.typed +0 -0
  147. {modal-1.1.5.dev37 → modal-1.1.5.dev39}/modal/queue.py +0 -0
  148. {modal-1.1.5.dev37 → modal-1.1.5.dev39}/modal/queue.pyi +0 -0
  149. {modal-1.1.5.dev37 → modal-1.1.5.dev39}/modal/retries.py +0 -0
  150. {modal-1.1.5.dev37 → modal-1.1.5.dev39}/modal/runner.py +0 -0
  151. {modal-1.1.5.dev37 → modal-1.1.5.dev39}/modal/runner.pyi +0 -0
  152. {modal-1.1.5.dev37 → modal-1.1.5.dev39}/modal/running_app.py +0 -0
  153. {modal-1.1.5.dev37 → modal-1.1.5.dev39}/modal/sandbox.py +0 -0
  154. {modal-1.1.5.dev37 → modal-1.1.5.dev39}/modal/sandbox.pyi +0 -0
  155. {modal-1.1.5.dev37 → modal-1.1.5.dev39}/modal/schedule.py +0 -0
  156. {modal-1.1.5.dev37 → modal-1.1.5.dev39}/modal/scheduler_placement.py +0 -0
  157. {modal-1.1.5.dev37 → modal-1.1.5.dev39}/modal/secret.py +0 -0
  158. {modal-1.1.5.dev37 → modal-1.1.5.dev39}/modal/secret.pyi +0 -0
  159. {modal-1.1.5.dev37 → modal-1.1.5.dev39}/modal/serving.py +0 -0
  160. {modal-1.1.5.dev37 → modal-1.1.5.dev39}/modal/serving.pyi +0 -0
  161. {modal-1.1.5.dev37 → modal-1.1.5.dev39}/modal/snapshot.py +0 -0
  162. {modal-1.1.5.dev37 → modal-1.1.5.dev39}/modal/snapshot.pyi +0 -0
  163. {modal-1.1.5.dev37 → modal-1.1.5.dev39}/modal/stream_type.py +0 -0
  164. {modal-1.1.5.dev37 → modal-1.1.5.dev39}/modal/token_flow.py +0 -0
  165. {modal-1.1.5.dev37 → modal-1.1.5.dev39}/modal/token_flow.pyi +0 -0
  166. {modal-1.1.5.dev37 → modal-1.1.5.dev39}/modal/volume.py +0 -0
  167. {modal-1.1.5.dev37 → modal-1.1.5.dev39}/modal/volume.pyi +0 -0
  168. {modal-1.1.5.dev37 → modal-1.1.5.dev39}/modal.egg-info/dependency_links.txt +0 -0
  169. {modal-1.1.5.dev37 → modal-1.1.5.dev39}/modal.egg-info/entry_points.txt +0 -0
  170. {modal-1.1.5.dev37 → modal-1.1.5.dev39}/modal.egg-info/requires.txt +0 -0
  171. {modal-1.1.5.dev37 → modal-1.1.5.dev39}/modal.egg-info/top_level.txt +0 -0
  172. {modal-1.1.5.dev37 → modal-1.1.5.dev39}/modal_docs/__init__.py +0 -0
  173. {modal-1.1.5.dev37 → modal-1.1.5.dev39}/modal_docs/gen_cli_docs.py +0 -0
  174. {modal-1.1.5.dev37 → modal-1.1.5.dev39}/modal_docs/gen_reference_docs.py +0 -0
  175. {modal-1.1.5.dev37 → modal-1.1.5.dev39}/modal_docs/mdmd/__init__.py +0 -0
  176. {modal-1.1.5.dev37 → modal-1.1.5.dev39}/modal_docs/mdmd/mdmd.py +0 -0
  177. {modal-1.1.5.dev37 → modal-1.1.5.dev39}/modal_docs/mdmd/signatures.py +0 -0
  178. {modal-1.1.5.dev37 → modal-1.1.5.dev39}/modal_proto/__init__.py +0 -0
  179. {modal-1.1.5.dev37 → modal-1.1.5.dev39}/modal_proto/api.proto +0 -0
  180. {modal-1.1.5.dev37 → modal-1.1.5.dev39}/modal_proto/api_grpc.py +0 -0
  181. {modal-1.1.5.dev37 → modal-1.1.5.dev39}/modal_proto/api_pb2.py +0 -0
  182. {modal-1.1.5.dev37 → modal-1.1.5.dev39}/modal_proto/api_pb2.pyi +0 -0
  183. {modal-1.1.5.dev37 → modal-1.1.5.dev39}/modal_proto/api_pb2_grpc.py +0 -0
  184. {modal-1.1.5.dev37 → modal-1.1.5.dev39}/modal_proto/api_pb2_grpc.pyi +0 -0
  185. {modal-1.1.5.dev37 → modal-1.1.5.dev39}/modal_proto/modal_api_grpc.py +0 -0
  186. {modal-1.1.5.dev37 → modal-1.1.5.dev39}/modal_proto/modal_options_grpc.py +0 -0
  187. {modal-1.1.5.dev37 → modal-1.1.5.dev39}/modal_proto/options.proto +0 -0
  188. {modal-1.1.5.dev37 → modal-1.1.5.dev39}/modal_proto/options_grpc.py +0 -0
  189. {modal-1.1.5.dev37 → modal-1.1.5.dev39}/modal_proto/options_pb2.py +0 -0
  190. {modal-1.1.5.dev37 → modal-1.1.5.dev39}/modal_proto/options_pb2.pyi +0 -0
  191. {modal-1.1.5.dev37 → modal-1.1.5.dev39}/modal_proto/options_pb2_grpc.py +0 -0
  192. {modal-1.1.5.dev37 → modal-1.1.5.dev39}/modal_proto/options_pb2_grpc.pyi +0 -0
  193. {modal-1.1.5.dev37 → modal-1.1.5.dev39}/modal_proto/py.typed +0 -0
  194. {modal-1.1.5.dev37 → modal-1.1.5.dev39}/modal_version/__main__.py +0 -0
  195. {modal-1.1.5.dev37 → modal-1.1.5.dev39}/pyproject.toml +0 -0
  196. {modal-1.1.5.dev37 → modal-1.1.5.dev39}/setup.cfg +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: modal
3
- Version: 1.1.5.dev37
3
+ Version: 1.1.5.dev39
4
4
  Summary: Python client library for Modal
5
5
  Author-email: Modal Labs <support@modal.com>
6
6
  License: Apache-2.0
@@ -33,7 +33,7 @@ class _Client:
33
33
  server_url: str,
34
34
  client_type: int,
35
35
  credentials: typing.Optional[tuple[str, str]],
36
- version: str = "1.1.5.dev37",
36
+ version: str = "1.1.5.dev39",
37
37
  ):
38
38
  """mdmd:hidden
39
39
  The Modal client object is not intended to be instantiated directly by users.
@@ -164,7 +164,7 @@ class Client:
164
164
  server_url: str,
165
165
  client_type: int,
166
166
  credentials: typing.Optional[tuple[str, str]],
167
- version: str = "1.1.5.dev37",
167
+ version: str = "1.1.5.dev39",
168
168
  ):
169
169
  """mdmd:hidden
170
170
  The Modal client object is not intended to be instantiated directly by users.
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: modal
3
- Version: 1.1.5.dev37
3
+ Version: 1.1.5.dev39
4
4
  Summary: Python client library for Modal
5
5
  Author-email: Modal Labs <support@modal.com>
6
6
  License: Apache-2.0
@@ -184,5 +184,11 @@ modal_proto/options_pb2.pyi
184
184
  modal_proto/options_pb2_grpc.py
185
185
  modal_proto/options_pb2_grpc.pyi
186
186
  modal_proto/py.typed
187
+ modal_proto/sandbox_router.proto
188
+ modal_proto/sandbox_router_grpc.py
189
+ modal_proto/sandbox_router_pb2.py
190
+ modal_proto/sandbox_router_pb2.pyi
191
+ modal_proto/sandbox_router_pb2_grpc.py
192
+ modal_proto/sandbox_router_pb2_grpc.pyi
187
193
  modal_version/__init__.py
188
194
  modal_version/__main__.py
@@ -0,0 +1,125 @@
1
+ syntax = "proto3";
2
+
3
+ import "modal_proto/api.proto";
4
+
5
+ package modal.sandbox_router;
6
+
7
+ enum SandboxExecStderrConfig {
8
+ // The output will be discarded.
9
+ SANDBOX_EXEC_STDERR_CONFIG_DEVNULL = 0;
10
+ // The output will be streamed to the client.
11
+ SANDBOX_EXEC_STDERR_CONFIG_PIPE = 1;
12
+ // A special value that can be used to indicate that the stderr stream should
13
+ // be merged with the stdout stream.
14
+ SANDBOX_EXEC_STDERR_CONFIG_STDOUT = 2;
15
+ }
16
+
17
+ enum SandboxExecStdioFileDescriptor {
18
+ // Read from stdout.
19
+ SANDBOX_EXEC_STDIO_FILE_DESCRIPTOR_STDOUT = 0;
20
+ // Read from stderr.
21
+ SANDBOX_EXEC_STDIO_FILE_DESCRIPTOR_STDERR = 1;
22
+ }
23
+
24
+ enum SandboxExecStdoutConfig {
25
+ // The output will be discarded.
26
+ SANDBOX_EXEC_STDOUT_CONFIG_DEVNULL = 0;
27
+ // The output will be streamed to the client.
28
+ SANDBOX_EXEC_STDOUT_CONFIG_PIPE = 1;
29
+ }
30
+
31
+ message SandboxExecStartRequest {
32
+ // The task ID of the sandbox to execute the command in.
33
+ string task_id = 1;
34
+ // Execution ID. This ID will be used to identify the execution for other
35
+ // requests and ensure exec commands are idempotent.
36
+ //
37
+ // TODO(saltzm): Could instead have a separate idempotency key from the exec_id
38
+ // like present day, and have the server generate the exec_id and return it in
39
+ // the ExecStartResponse.
40
+ string exec_id = 2;
41
+ // Command arguments to execute.
42
+ repeated string command_args= 3;
43
+ // Configures how the stdout of the command will be handled.
44
+ SandboxExecStdoutConfig stdout_config = 4;
45
+ // Configures how the stderr of the command will be handled.
46
+ SandboxExecStderrConfig stderr_config = 5;
47
+ // Timeout in seconds for the exec'd command to exit. If the command does not
48
+ // exit within this duration, the command will be killed. This is NOT the
49
+ // timeout for the ExecStartRequest RPC to complete.
50
+ optional uint32 timeout_secs = 6;
51
+ // Working directory for the command.
52
+ optional string workdir = 7;
53
+ // Secret IDs to mount into the sandbox.
54
+ repeated string secret_ids = 8;
55
+ // PTY info for the command.
56
+ optional modal.client.PTYInfo pty_info = 9;
57
+ // Enable debugging capabilities on the container runtime. Used only for
58
+ // internal debugging.
59
+ bool runtime_debug = 10;
60
+ }
61
+
62
+ message SandboxExecStartResponse { }
63
+
64
+ message SandboxExecStdinWriteRequest {
65
+ // The task ID of the sandbox running the exec'd command.
66
+ string task_id = 1;
67
+ // The execution ID of the command to write to.
68
+ string exec_id = 2;
69
+ // The offset to start writing to. This is used to resume writing from the
70
+ // last write position if the connection is closed and reopened.
71
+ uint64 offset = 3;
72
+ bytes data = 4;
73
+ // If true, close the stdin stream after writing any provided data.
74
+ // This signals EOF to the exec'd process.
75
+ bool eof = 5;
76
+ }
77
+
78
+ message SandboxExecStdinWriteResponse { }
79
+
80
+
81
+ message SandboxExecStdioReadRequest {
82
+ // The task ID of the sandbox running the exec'd command.
83
+ string task_id = 1;
84
+ // The execution ID of the command to read from.
85
+ string exec_id = 2;
86
+ // The offset to start reading from. This is used to resume reading from the
87
+ // last read position if the connection is closed and reopened.
88
+ uint64 offset = 3;
89
+ // Which file descriptor to read from.
90
+ SandboxExecStdioFileDescriptor file_descriptor = 4;
91
+ }
92
+
93
+ message SandboxExecStdioReadResponse {
94
+ // The data read from the file descriptor.
95
+ bytes data = 1;
96
+ }
97
+
98
+ message SandboxExecWaitRequest {
99
+ // The task ID of the sandbox running the exec'd command.
100
+ string task_id = 1;
101
+ // The execution ID of the command to wait on.
102
+ string exec_id = 2;
103
+ }
104
+
105
+ message SandboxExecWaitResponse {
106
+ oneof exit_status {
107
+ // The exit code of the command.
108
+ int32 code = 3;
109
+ // The signal that terminated the command.
110
+ int32 signal = 4;
111
+ }
112
+ // TODO(saltzm): Give a way for the user to distinguish between normal exit
113
+ // and termination by Modal (due to sandbox timeout, exec exceeded deadline, etc.)
114
+ }
115
+
116
+ service SandboxRouter {
117
+ // Execute a command in the sandbox.
118
+ rpc SandboxExecStart(SandboxExecStartRequest) returns (SandboxExecStartResponse);
119
+ // Write to the stdin stream of an exec'd command.
120
+ rpc SandboxExecStdinWrite(SandboxExecStdinWriteRequest) returns (SandboxExecStdinWriteResponse);
121
+ // Get a stream of output from the stdout or stderr stream of an exec'd command.
122
+ rpc SandboxExecStdioRead(SandboxExecStdioReadRequest) returns (stream SandboxExecStdioReadResponse);
123
+ // Wait for an exec'd command to exit and return the exit code.
124
+ rpc SandboxExecWait(SandboxExecWaitRequest) returns (SandboxExecWaitResponse);
125
+ }
@@ -0,0 +1,89 @@
1
+ # Generated by the Protocol Buffers compiler. DO NOT EDIT!
2
+ # source: modal_proto/sandbox_router.proto
3
+ # plugin: grpclib.plugin.main
4
+ import abc
5
+ import typing
6
+
7
+ import grpclib.const
8
+ import grpclib.client
9
+ if typing.TYPE_CHECKING:
10
+ import grpclib.server
11
+
12
+ import modal_proto.api_pb2
13
+ import modal_proto.sandbox_router_pb2
14
+
15
+
16
+ class SandboxRouterBase(abc.ABC):
17
+
18
+ @abc.abstractmethod
19
+ async def SandboxExecStart(self, stream: 'grpclib.server.Stream[modal_proto.sandbox_router_pb2.SandboxExecStartRequest, modal_proto.sandbox_router_pb2.SandboxExecStartResponse]') -> None:
20
+ pass
21
+
22
+ @abc.abstractmethod
23
+ async def SandboxExecStdinWrite(self, stream: 'grpclib.server.Stream[modal_proto.sandbox_router_pb2.SandboxExecStdinWriteRequest, modal_proto.sandbox_router_pb2.SandboxExecStdinWriteResponse]') -> None:
24
+ pass
25
+
26
+ @abc.abstractmethod
27
+ async def SandboxExecStdioRead(self, stream: 'grpclib.server.Stream[modal_proto.sandbox_router_pb2.SandboxExecStdioReadRequest, modal_proto.sandbox_router_pb2.SandboxExecStdioReadResponse]') -> None:
28
+ pass
29
+
30
+ @abc.abstractmethod
31
+ async def SandboxExecWait(self, stream: 'grpclib.server.Stream[modal_proto.sandbox_router_pb2.SandboxExecWaitRequest, modal_proto.sandbox_router_pb2.SandboxExecWaitResponse]') -> None:
32
+ pass
33
+
34
+ def __mapping__(self) -> typing.Dict[str, grpclib.const.Handler]:
35
+ return {
36
+ '/modal.sandbox_router.SandboxRouter/SandboxExecStart': grpclib.const.Handler(
37
+ self.SandboxExecStart,
38
+ grpclib.const.Cardinality.UNARY_UNARY,
39
+ modal_proto.sandbox_router_pb2.SandboxExecStartRequest,
40
+ modal_proto.sandbox_router_pb2.SandboxExecStartResponse,
41
+ ),
42
+ '/modal.sandbox_router.SandboxRouter/SandboxExecStdinWrite': grpclib.const.Handler(
43
+ self.SandboxExecStdinWrite,
44
+ grpclib.const.Cardinality.UNARY_UNARY,
45
+ modal_proto.sandbox_router_pb2.SandboxExecStdinWriteRequest,
46
+ modal_proto.sandbox_router_pb2.SandboxExecStdinWriteResponse,
47
+ ),
48
+ '/modal.sandbox_router.SandboxRouter/SandboxExecStdioRead': grpclib.const.Handler(
49
+ self.SandboxExecStdioRead,
50
+ grpclib.const.Cardinality.UNARY_STREAM,
51
+ modal_proto.sandbox_router_pb2.SandboxExecStdioReadRequest,
52
+ modal_proto.sandbox_router_pb2.SandboxExecStdioReadResponse,
53
+ ),
54
+ '/modal.sandbox_router.SandboxRouter/SandboxExecWait': grpclib.const.Handler(
55
+ self.SandboxExecWait,
56
+ grpclib.const.Cardinality.UNARY_UNARY,
57
+ modal_proto.sandbox_router_pb2.SandboxExecWaitRequest,
58
+ modal_proto.sandbox_router_pb2.SandboxExecWaitResponse,
59
+ ),
60
+ }
61
+
62
+
63
+ class SandboxRouterStub:
64
+
65
+ def __init__(self, channel: grpclib.client.Channel) -> None:
66
+ self.SandboxExecStart = grpclib.client.UnaryUnaryMethod(
67
+ channel,
68
+ '/modal.sandbox_router.SandboxRouter/SandboxExecStart',
69
+ modal_proto.sandbox_router_pb2.SandboxExecStartRequest,
70
+ modal_proto.sandbox_router_pb2.SandboxExecStartResponse,
71
+ )
72
+ self.SandboxExecStdinWrite = grpclib.client.UnaryUnaryMethod(
73
+ channel,
74
+ '/modal.sandbox_router.SandboxRouter/SandboxExecStdinWrite',
75
+ modal_proto.sandbox_router_pb2.SandboxExecStdinWriteRequest,
76
+ modal_proto.sandbox_router_pb2.SandboxExecStdinWriteResponse,
77
+ )
78
+ self.SandboxExecStdioRead = grpclib.client.UnaryStreamMethod(
79
+ channel,
80
+ '/modal.sandbox_router.SandboxRouter/SandboxExecStdioRead',
81
+ modal_proto.sandbox_router_pb2.SandboxExecStdioReadRequest,
82
+ modal_proto.sandbox_router_pb2.SandboxExecStdioReadResponse,
83
+ )
84
+ self.SandboxExecWait = grpclib.client.UnaryUnaryMethod(
85
+ channel,
86
+ '/modal.sandbox_router.SandboxRouter/SandboxExecWait',
87
+ modal_proto.sandbox_router_pb2.SandboxExecWaitRequest,
88
+ modal_proto.sandbox_router_pb2.SandboxExecWaitResponse,
89
+ )
@@ -0,0 +1,128 @@
1
+ # -*- coding: utf-8 -*-
2
+ # Generated by the protocol buffer compiler. DO NOT EDIT!
3
+ # source: modal_proto/sandbox_router.proto
4
+ """Generated protocol buffer code."""
5
+ from google.protobuf.internal import enum_type_wrapper
6
+ from google.protobuf import descriptor as _descriptor
7
+ from google.protobuf import descriptor_pool as _descriptor_pool
8
+ from google.protobuf import message as _message
9
+ from google.protobuf import reflection as _reflection
10
+ from google.protobuf import symbol_database as _symbol_database
11
+ # @@protoc_insertion_point(imports)
12
+
13
+ _sym_db = _symbol_database.Default()
14
+
15
+
16
+ from modal_proto import api_pb2 as modal__proto_dot_api__pb2
17
+
18
+
19
+ DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n modal_proto/sandbox_router.proto\x12\x14modal.sandbox_router\x1a\x15modal_proto/api.proto\"\x91\x03\n\x17SandboxExecStartRequest\x12\x0f\n\x07task_id\x18\x01 \x01(\t\x12\x0f\n\x07\x65xec_id\x18\x02 \x01(\t\x12\x14\n\x0c\x63ommand_args\x18\x03 \x03(\t\x12\x44\n\rstdout_config\x18\x04 \x01(\x0e\x32-.modal.sandbox_router.SandboxExecStdoutConfig\x12\x44\n\rstderr_config\x18\x05 \x01(\x0e\x32-.modal.sandbox_router.SandboxExecStderrConfig\x12\x19\n\x0ctimeout_secs\x18\x06 \x01(\rH\x00\x88\x01\x01\x12\x14\n\x07workdir\x18\x07 \x01(\tH\x01\x88\x01\x01\x12\x12\n\nsecret_ids\x18\x08 \x03(\t\x12,\n\x08pty_info\x18\t \x01(\x0b\x32\x15.modal.client.PTYInfoH\x02\x88\x01\x01\x12\x15\n\rruntime_debug\x18\n \x01(\x08\x42\x0f\n\r_timeout_secsB\n\n\x08_workdirB\x0b\n\t_pty_info\"\x1a\n\x18SandboxExecStartResponse\"k\n\x1cSandboxExecStdinWriteRequest\x12\x0f\n\x07task_id\x18\x01 \x01(\t\x12\x0f\n\x07\x65xec_id\x18\x02 \x01(\t\x12\x0e\n\x06offset\x18\x03 \x01(\x04\x12\x0c\n\x04\x64\x61ta\x18\x04 \x01(\x0c\x12\x0b\n\x03\x65of\x18\x05 \x01(\x08\"\x1f\n\x1dSandboxExecStdinWriteResponse\"\x9e\x01\n\x1bSandboxExecStdioReadRequest\x12\x0f\n\x07task_id\x18\x01 \x01(\t\x12\x0f\n\x07\x65xec_id\x18\x02 \x01(\t\x12\x0e\n\x06offset\x18\x03 \x01(\x04\x12M\n\x0f\x66ile_descriptor\x18\x04 \x01(\x0e\x32\x34.modal.sandbox_router.SandboxExecStdioFileDescriptor\",\n\x1cSandboxExecStdioReadResponse\x12\x0c\n\x04\x64\x61ta\x18\x01 \x01(\x0c\":\n\x16SandboxExecWaitRequest\x12\x0f\n\x07task_id\x18\x01 \x01(\t\x12\x0f\n\x07\x65xec_id\x18\x02 \x01(\t\"J\n\x17SandboxExecWaitResponse\x12\x0e\n\x04\x63ode\x18\x03 \x01(\x05H\x00\x12\x10\n\x06signal\x18\x04 \x01(\x05H\x00\x42\r\n\x0b\x65xit_status*\x8d\x01\n\x17SandboxExecStderrConfig\x12&\n\"SANDBOX_EXEC_STDERR_CONFIG_DEVNULL\x10\x00\x12#\n\x1fSANDBOX_EXEC_STDERR_CONFIG_PIPE\x10\x01\x12%\n!SANDBOX_EXEC_STDERR_CONFIG_STDOUT\x10\x02*~\n\x1eSandboxExecStdioFileDescriptor\x12-\n)SANDBOX_EXEC_STDIO_FILE_DESCRIPTOR_STDOUT\x10\x00\x12-\n)SANDBOX_EXEC_STDIO_FILE_DESCRIPTOR_STDERR\x10\x01*f\n\x17SandboxExecStdoutConfig\x12&\n\"SANDBOX_EXEC_STDOUT_CONFIG_DEVNULL\x10\x00\x12#\n\x1fSANDBOX_EXEC_STDOUT_CONFIG_PIPE\x10\x01\x32\xf6\x03\n\rSandboxRouter\x12q\n\x10SandboxExecStart\x12-.modal.sandbox_router.SandboxExecStartRequest\x1a..modal.sandbox_router.SandboxExecStartResponse\x12\x80\x01\n\x15SandboxExecStdinWrite\x12\x32.modal.sandbox_router.SandboxExecStdinWriteRequest\x1a\x33.modal.sandbox_router.SandboxExecStdinWriteResponse\x12\x7f\n\x14SandboxExecStdioRead\x12\x31.modal.sandbox_router.SandboxExecStdioReadRequest\x1a\x32.modal.sandbox_router.SandboxExecStdioReadResponse0\x01\x12n\n\x0fSandboxExecWait\x12,.modal.sandbox_router.SandboxExecWaitRequest\x1a-.modal.sandbox_router.SandboxExecWaitResponseb\x06proto3')
20
+
21
+ _SANDBOXEXECSTDERRCONFIG = DESCRIPTOR.enum_types_by_name['SandboxExecStderrConfig']
22
+ SandboxExecStderrConfig = enum_type_wrapper.EnumTypeWrapper(_SANDBOXEXECSTDERRCONFIG)
23
+ _SANDBOXEXECSTDIOFILEDESCRIPTOR = DESCRIPTOR.enum_types_by_name['SandboxExecStdioFileDescriptor']
24
+ SandboxExecStdioFileDescriptor = enum_type_wrapper.EnumTypeWrapper(_SANDBOXEXECSTDIOFILEDESCRIPTOR)
25
+ _SANDBOXEXECSTDOUTCONFIG = DESCRIPTOR.enum_types_by_name['SandboxExecStdoutConfig']
26
+ SandboxExecStdoutConfig = enum_type_wrapper.EnumTypeWrapper(_SANDBOXEXECSTDOUTCONFIG)
27
+ SANDBOX_EXEC_STDERR_CONFIG_DEVNULL = 0
28
+ SANDBOX_EXEC_STDERR_CONFIG_PIPE = 1
29
+ SANDBOX_EXEC_STDERR_CONFIG_STDOUT = 2
30
+ SANDBOX_EXEC_STDIO_FILE_DESCRIPTOR_STDOUT = 0
31
+ SANDBOX_EXEC_STDIO_FILE_DESCRIPTOR_STDERR = 1
32
+ SANDBOX_EXEC_STDOUT_CONFIG_DEVNULL = 0
33
+ SANDBOX_EXEC_STDOUT_CONFIG_PIPE = 1
34
+
35
+
36
+ _SANDBOXEXECSTARTREQUEST = DESCRIPTOR.message_types_by_name['SandboxExecStartRequest']
37
+ _SANDBOXEXECSTARTRESPONSE = DESCRIPTOR.message_types_by_name['SandboxExecStartResponse']
38
+ _SANDBOXEXECSTDINWRITEREQUEST = DESCRIPTOR.message_types_by_name['SandboxExecStdinWriteRequest']
39
+ _SANDBOXEXECSTDINWRITERESPONSE = DESCRIPTOR.message_types_by_name['SandboxExecStdinWriteResponse']
40
+ _SANDBOXEXECSTDIOREADREQUEST = DESCRIPTOR.message_types_by_name['SandboxExecStdioReadRequest']
41
+ _SANDBOXEXECSTDIOREADRESPONSE = DESCRIPTOR.message_types_by_name['SandboxExecStdioReadResponse']
42
+ _SANDBOXEXECWAITREQUEST = DESCRIPTOR.message_types_by_name['SandboxExecWaitRequest']
43
+ _SANDBOXEXECWAITRESPONSE = DESCRIPTOR.message_types_by_name['SandboxExecWaitResponse']
44
+ SandboxExecStartRequest = _reflection.GeneratedProtocolMessageType('SandboxExecStartRequest', (_message.Message,), {
45
+ 'DESCRIPTOR' : _SANDBOXEXECSTARTREQUEST,
46
+ '__module__' : 'modal_proto.sandbox_router_pb2'
47
+ # @@protoc_insertion_point(class_scope:modal.sandbox_router.SandboxExecStartRequest)
48
+ })
49
+ _sym_db.RegisterMessage(SandboxExecStartRequest)
50
+
51
+ SandboxExecStartResponse = _reflection.GeneratedProtocolMessageType('SandboxExecStartResponse', (_message.Message,), {
52
+ 'DESCRIPTOR' : _SANDBOXEXECSTARTRESPONSE,
53
+ '__module__' : 'modal_proto.sandbox_router_pb2'
54
+ # @@protoc_insertion_point(class_scope:modal.sandbox_router.SandboxExecStartResponse)
55
+ })
56
+ _sym_db.RegisterMessage(SandboxExecStartResponse)
57
+
58
+ SandboxExecStdinWriteRequest = _reflection.GeneratedProtocolMessageType('SandboxExecStdinWriteRequest', (_message.Message,), {
59
+ 'DESCRIPTOR' : _SANDBOXEXECSTDINWRITEREQUEST,
60
+ '__module__' : 'modal_proto.sandbox_router_pb2'
61
+ # @@protoc_insertion_point(class_scope:modal.sandbox_router.SandboxExecStdinWriteRequest)
62
+ })
63
+ _sym_db.RegisterMessage(SandboxExecStdinWriteRequest)
64
+
65
+ SandboxExecStdinWriteResponse = _reflection.GeneratedProtocolMessageType('SandboxExecStdinWriteResponse', (_message.Message,), {
66
+ 'DESCRIPTOR' : _SANDBOXEXECSTDINWRITERESPONSE,
67
+ '__module__' : 'modal_proto.sandbox_router_pb2'
68
+ # @@protoc_insertion_point(class_scope:modal.sandbox_router.SandboxExecStdinWriteResponse)
69
+ })
70
+ _sym_db.RegisterMessage(SandboxExecStdinWriteResponse)
71
+
72
+ SandboxExecStdioReadRequest = _reflection.GeneratedProtocolMessageType('SandboxExecStdioReadRequest', (_message.Message,), {
73
+ 'DESCRIPTOR' : _SANDBOXEXECSTDIOREADREQUEST,
74
+ '__module__' : 'modal_proto.sandbox_router_pb2'
75
+ # @@protoc_insertion_point(class_scope:modal.sandbox_router.SandboxExecStdioReadRequest)
76
+ })
77
+ _sym_db.RegisterMessage(SandboxExecStdioReadRequest)
78
+
79
+ SandboxExecStdioReadResponse = _reflection.GeneratedProtocolMessageType('SandboxExecStdioReadResponse', (_message.Message,), {
80
+ 'DESCRIPTOR' : _SANDBOXEXECSTDIOREADRESPONSE,
81
+ '__module__' : 'modal_proto.sandbox_router_pb2'
82
+ # @@protoc_insertion_point(class_scope:modal.sandbox_router.SandboxExecStdioReadResponse)
83
+ })
84
+ _sym_db.RegisterMessage(SandboxExecStdioReadResponse)
85
+
86
+ SandboxExecWaitRequest = _reflection.GeneratedProtocolMessageType('SandboxExecWaitRequest', (_message.Message,), {
87
+ 'DESCRIPTOR' : _SANDBOXEXECWAITREQUEST,
88
+ '__module__' : 'modal_proto.sandbox_router_pb2'
89
+ # @@protoc_insertion_point(class_scope:modal.sandbox_router.SandboxExecWaitRequest)
90
+ })
91
+ _sym_db.RegisterMessage(SandboxExecWaitRequest)
92
+
93
+ SandboxExecWaitResponse = _reflection.GeneratedProtocolMessageType('SandboxExecWaitResponse', (_message.Message,), {
94
+ 'DESCRIPTOR' : _SANDBOXEXECWAITRESPONSE,
95
+ '__module__' : 'modal_proto.sandbox_router_pb2'
96
+ # @@protoc_insertion_point(class_scope:modal.sandbox_router.SandboxExecWaitResponse)
97
+ })
98
+ _sym_db.RegisterMessage(SandboxExecWaitResponse)
99
+
100
+ _SANDBOXROUTER = DESCRIPTOR.services_by_name['SandboxRouter']
101
+ if _descriptor._USE_C_DESCRIPTORS == False:
102
+
103
+ DESCRIPTOR._options = None
104
+ _SANDBOXEXECSTDERRCONFIG._serialized_start=999
105
+ _SANDBOXEXECSTDERRCONFIG._serialized_end=1140
106
+ _SANDBOXEXECSTDIOFILEDESCRIPTOR._serialized_start=1142
107
+ _SANDBOXEXECSTDIOFILEDESCRIPTOR._serialized_end=1268
108
+ _SANDBOXEXECSTDOUTCONFIG._serialized_start=1270
109
+ _SANDBOXEXECSTDOUTCONFIG._serialized_end=1372
110
+ _SANDBOXEXECSTARTREQUEST._serialized_start=82
111
+ _SANDBOXEXECSTARTREQUEST._serialized_end=483
112
+ _SANDBOXEXECSTARTRESPONSE._serialized_start=485
113
+ _SANDBOXEXECSTARTRESPONSE._serialized_end=511
114
+ _SANDBOXEXECSTDINWRITEREQUEST._serialized_start=513
115
+ _SANDBOXEXECSTDINWRITEREQUEST._serialized_end=620
116
+ _SANDBOXEXECSTDINWRITERESPONSE._serialized_start=622
117
+ _SANDBOXEXECSTDINWRITERESPONSE._serialized_end=653
118
+ _SANDBOXEXECSTDIOREADREQUEST._serialized_start=656
119
+ _SANDBOXEXECSTDIOREADREQUEST._serialized_end=814
120
+ _SANDBOXEXECSTDIOREADRESPONSE._serialized_start=816
121
+ _SANDBOXEXECSTDIOREADRESPONSE._serialized_end=860
122
+ _SANDBOXEXECWAITREQUEST._serialized_start=862
123
+ _SANDBOXEXECWAITREQUEST._serialized_end=920
124
+ _SANDBOXEXECWAITRESPONSE._serialized_start=922
125
+ _SANDBOXEXECWAITRESPONSE._serialized_end=996
126
+ _SANDBOXROUTER._serialized_start=1375
127
+ _SANDBOXROUTER._serialized_end=1877
128
+ # @@protoc_insertion_point(module_scope)