modal 1.3.1.dev30__tar.gz → 1.3.1.dev32__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 (197) hide show
  1. {modal-1.3.1.dev30 → modal-1.3.1.dev32}/PKG-INFO +1 -1
  2. {modal-1.3.1.dev30 → modal-1.3.1.dev32}/modal/client.pyi +2 -2
  3. {modal-1.3.1.dev30 → modal-1.3.1.dev32}/modal/sandbox.py +9 -0
  4. {modal-1.3.1.dev30 → modal-1.3.1.dev32}/modal/sandbox.pyi +8 -0
  5. {modal-1.3.1.dev30 → modal-1.3.1.dev32}/modal.egg-info/PKG-INFO +1 -1
  6. {modal-1.3.1.dev30 → modal-1.3.1.dev32}/modal_proto/api.proto +5 -0
  7. {modal-1.3.1.dev30 → modal-1.3.1.dev32}/modal_proto/api_pb2.py +346 -346
  8. {modal-1.3.1.dev30 → modal-1.3.1.dev32}/modal_proto/api_pb2.pyi +14 -3
  9. {modal-1.3.1.dev30 → modal-1.3.1.dev32}/modal_version/__init__.py +1 -1
  10. {modal-1.3.1.dev30 → modal-1.3.1.dev32}/LICENSE +0 -0
  11. {modal-1.3.1.dev30 → modal-1.3.1.dev32}/README.md +0 -0
  12. {modal-1.3.1.dev30 → modal-1.3.1.dev32}/modal/__init__.py +0 -0
  13. {modal-1.3.1.dev30 → modal-1.3.1.dev32}/modal/__main__.py +0 -0
  14. {modal-1.3.1.dev30 → modal-1.3.1.dev32}/modal/_billing.py +0 -0
  15. {modal-1.3.1.dev30 → modal-1.3.1.dev32}/modal/_clustered_functions.py +0 -0
  16. {modal-1.3.1.dev30 → modal-1.3.1.dev32}/modal/_clustered_functions.pyi +0 -0
  17. {modal-1.3.1.dev30 → modal-1.3.1.dev32}/modal/_container_entrypoint.py +0 -0
  18. {modal-1.3.1.dev30 → modal-1.3.1.dev32}/modal/_functions.py +0 -0
  19. {modal-1.3.1.dev30 → modal-1.3.1.dev32}/modal/_grpc_client.py +0 -0
  20. {modal-1.3.1.dev30 → modal-1.3.1.dev32}/modal/_ipython.py +0 -0
  21. {modal-1.3.1.dev30 → modal-1.3.1.dev32}/modal/_load_context.py +0 -0
  22. {modal-1.3.1.dev30 → modal-1.3.1.dev32}/modal/_location.py +0 -0
  23. {modal-1.3.1.dev30 → modal-1.3.1.dev32}/modal/_object.py +0 -0
  24. {modal-1.3.1.dev30 → modal-1.3.1.dev32}/modal/_output.py +0 -0
  25. {modal-1.3.1.dev30 → modal-1.3.1.dev32}/modal/_partial_function.py +0 -0
  26. {modal-1.3.1.dev30 → modal-1.3.1.dev32}/modal/_pty.py +0 -0
  27. {modal-1.3.1.dev30 → modal-1.3.1.dev32}/modal/_resolver.py +0 -0
  28. {modal-1.3.1.dev30 → modal-1.3.1.dev32}/modal/_resources.py +0 -0
  29. {modal-1.3.1.dev30 → modal-1.3.1.dev32}/modal/_runtime/__init__.py +0 -0
  30. {modal-1.3.1.dev30 → modal-1.3.1.dev32}/modal/_runtime/asgi.py +0 -0
  31. {modal-1.3.1.dev30 → modal-1.3.1.dev32}/modal/_runtime/container_io_manager.py +0 -0
  32. {modal-1.3.1.dev30 → modal-1.3.1.dev32}/modal/_runtime/container_io_manager.pyi +0 -0
  33. {modal-1.3.1.dev30 → modal-1.3.1.dev32}/modal/_runtime/execution_context.py +0 -0
  34. {modal-1.3.1.dev30 → modal-1.3.1.dev32}/modal/_runtime/execution_context.pyi +0 -0
  35. {modal-1.3.1.dev30 → modal-1.3.1.dev32}/modal/_runtime/gpu_memory_snapshot.py +0 -0
  36. {modal-1.3.1.dev30 → modal-1.3.1.dev32}/modal/_runtime/telemetry.py +0 -0
  37. {modal-1.3.1.dev30 → modal-1.3.1.dev32}/modal/_runtime/user_code_event_loop.py +0 -0
  38. {modal-1.3.1.dev30 → modal-1.3.1.dev32}/modal/_runtime/user_code_imports.py +0 -0
  39. {modal-1.3.1.dev30 → modal-1.3.1.dev32}/modal/_serialization.py +0 -0
  40. {modal-1.3.1.dev30 → modal-1.3.1.dev32}/modal/_server.py +0 -0
  41. {modal-1.3.1.dev30 → modal-1.3.1.dev32}/modal/_traceback.py +0 -0
  42. {modal-1.3.1.dev30 → modal-1.3.1.dev32}/modal/_tunnel.py +0 -0
  43. {modal-1.3.1.dev30 → modal-1.3.1.dev32}/modal/_tunnel.pyi +0 -0
  44. {modal-1.3.1.dev30 → modal-1.3.1.dev32}/modal/_type_manager.py +0 -0
  45. {modal-1.3.1.dev30 → modal-1.3.1.dev32}/modal/_utils/__init__.py +0 -0
  46. {modal-1.3.1.dev30 → modal-1.3.1.dev32}/modal/_utils/app_utils.py +0 -0
  47. {modal-1.3.1.dev30 → modal-1.3.1.dev32}/modal/_utils/async_utils.py +0 -0
  48. {modal-1.3.1.dev30 → modal-1.3.1.dev32}/modal/_utils/auth_token_manager.py +0 -0
  49. {modal-1.3.1.dev30 → modal-1.3.1.dev32}/modal/_utils/blob_utils.py +0 -0
  50. {modal-1.3.1.dev30 → modal-1.3.1.dev32}/modal/_utils/bytes_io_segment_payload.py +0 -0
  51. {modal-1.3.1.dev30 → modal-1.3.1.dev32}/modal/_utils/deprecation.py +0 -0
  52. {modal-1.3.1.dev30 → modal-1.3.1.dev32}/modal/_utils/docker_utils.py +0 -0
  53. {modal-1.3.1.dev30 → modal-1.3.1.dev32}/modal/_utils/function_utils.py +0 -0
  54. {modal-1.3.1.dev30 → modal-1.3.1.dev32}/modal/_utils/git_utils.py +0 -0
  55. {modal-1.3.1.dev30 → modal-1.3.1.dev32}/modal/_utils/grpc_testing.py +0 -0
  56. {modal-1.3.1.dev30 → modal-1.3.1.dev32}/modal/_utils/grpc_utils.py +0 -0
  57. {modal-1.3.1.dev30 → modal-1.3.1.dev32}/modal/_utils/hash_utils.py +0 -0
  58. {modal-1.3.1.dev30 → modal-1.3.1.dev32}/modal/_utils/http_utils.py +0 -0
  59. {modal-1.3.1.dev30 → modal-1.3.1.dev32}/modal/_utils/jwt_utils.py +0 -0
  60. {modal-1.3.1.dev30 → modal-1.3.1.dev32}/modal/_utils/logger.py +0 -0
  61. {modal-1.3.1.dev30 → modal-1.3.1.dev32}/modal/_utils/mount_utils.py +0 -0
  62. {modal-1.3.1.dev30 → modal-1.3.1.dev32}/modal/_utils/name_utils.py +0 -0
  63. {modal-1.3.1.dev30 → modal-1.3.1.dev32}/modal/_utils/package_utils.py +0 -0
  64. {modal-1.3.1.dev30 → modal-1.3.1.dev32}/modal/_utils/pattern_utils.py +0 -0
  65. {modal-1.3.1.dev30 → modal-1.3.1.dev32}/modal/_utils/rand_pb_testing.py +0 -0
  66. {modal-1.3.1.dev30 → modal-1.3.1.dev32}/modal/_utils/shell_utils.py +0 -0
  67. {modal-1.3.1.dev30 → modal-1.3.1.dev32}/modal/_utils/task_command_router_client.py +0 -0
  68. {modal-1.3.1.dev30 → modal-1.3.1.dev32}/modal/_utils/time_utils.py +0 -0
  69. {modal-1.3.1.dev30 → modal-1.3.1.dev32}/modal/_vendor/__init__.py +0 -0
  70. {modal-1.3.1.dev30 → modal-1.3.1.dev32}/modal/_vendor/a2wsgi_wsgi.py +0 -0
  71. {modal-1.3.1.dev30 → modal-1.3.1.dev32}/modal/_vendor/cloudpickle.py +0 -0
  72. {modal-1.3.1.dev30 → modal-1.3.1.dev32}/modal/_vendor/tblib.py +0 -0
  73. {modal-1.3.1.dev30 → modal-1.3.1.dev32}/modal/_watcher.py +0 -0
  74. {modal-1.3.1.dev30 → modal-1.3.1.dev32}/modal/app.py +0 -0
  75. {modal-1.3.1.dev30 → modal-1.3.1.dev32}/modal/app.pyi +0 -0
  76. {modal-1.3.1.dev30 → modal-1.3.1.dev32}/modal/billing.py +0 -0
  77. {modal-1.3.1.dev30 → modal-1.3.1.dev32}/modal/builder/2023.12.312.txt +0 -0
  78. {modal-1.3.1.dev30 → modal-1.3.1.dev32}/modal/builder/2023.12.txt +0 -0
  79. {modal-1.3.1.dev30 → modal-1.3.1.dev32}/modal/builder/2024.04.txt +0 -0
  80. {modal-1.3.1.dev30 → modal-1.3.1.dev32}/modal/builder/2024.10.txt +0 -0
  81. {modal-1.3.1.dev30 → modal-1.3.1.dev32}/modal/builder/2025.06.txt +0 -0
  82. {modal-1.3.1.dev30 → modal-1.3.1.dev32}/modal/builder/PREVIEW.txt +0 -0
  83. {modal-1.3.1.dev30 → modal-1.3.1.dev32}/modal/builder/README.md +0 -0
  84. {modal-1.3.1.dev30 → modal-1.3.1.dev32}/modal/builder/base-images.json +0 -0
  85. {modal-1.3.1.dev30 → modal-1.3.1.dev32}/modal/call_graph.py +0 -0
  86. {modal-1.3.1.dev30 → modal-1.3.1.dev32}/modal/cli/__init__.py +0 -0
  87. {modal-1.3.1.dev30 → modal-1.3.1.dev32}/modal/cli/_download.py +0 -0
  88. {modal-1.3.1.dev30 → modal-1.3.1.dev32}/modal/cli/_traceback.py +0 -0
  89. {modal-1.3.1.dev30 → modal-1.3.1.dev32}/modal/cli/app.py +0 -0
  90. {modal-1.3.1.dev30 → modal-1.3.1.dev32}/modal/cli/cluster.py +0 -0
  91. {modal-1.3.1.dev30 → modal-1.3.1.dev32}/modal/cli/config.py +0 -0
  92. {modal-1.3.1.dev30 → modal-1.3.1.dev32}/modal/cli/container.py +0 -0
  93. {modal-1.3.1.dev30 → modal-1.3.1.dev32}/modal/cli/dict.py +0 -0
  94. {modal-1.3.1.dev30 → modal-1.3.1.dev32}/modal/cli/entry_point.py +0 -0
  95. {modal-1.3.1.dev30 → modal-1.3.1.dev32}/modal/cli/environment.py +0 -0
  96. {modal-1.3.1.dev30 → modal-1.3.1.dev32}/modal/cli/import_refs.py +0 -0
  97. {modal-1.3.1.dev30 → modal-1.3.1.dev32}/modal/cli/launch.py +0 -0
  98. {modal-1.3.1.dev30 → modal-1.3.1.dev32}/modal/cli/network_file_system.py +0 -0
  99. {modal-1.3.1.dev30 → modal-1.3.1.dev32}/modal/cli/profile.py +0 -0
  100. {modal-1.3.1.dev30 → modal-1.3.1.dev32}/modal/cli/programs/__init__.py +0 -0
  101. {modal-1.3.1.dev30 → modal-1.3.1.dev32}/modal/cli/programs/run_jupyter.py +0 -0
  102. {modal-1.3.1.dev30 → modal-1.3.1.dev32}/modal/cli/programs/vscode.py +0 -0
  103. {modal-1.3.1.dev30 → modal-1.3.1.dev32}/modal/cli/queues.py +0 -0
  104. {modal-1.3.1.dev30 → modal-1.3.1.dev32}/modal/cli/run.py +0 -0
  105. {modal-1.3.1.dev30 → modal-1.3.1.dev32}/modal/cli/secret.py +0 -0
  106. {modal-1.3.1.dev30 → modal-1.3.1.dev32}/modal/cli/shell.py +0 -0
  107. {modal-1.3.1.dev30 → modal-1.3.1.dev32}/modal/cli/token.py +0 -0
  108. {modal-1.3.1.dev30 → modal-1.3.1.dev32}/modal/cli/utils.py +0 -0
  109. {modal-1.3.1.dev30 → modal-1.3.1.dev32}/modal/cli/volume.py +0 -0
  110. {modal-1.3.1.dev30 → modal-1.3.1.dev32}/modal/client.py +0 -0
  111. {modal-1.3.1.dev30 → modal-1.3.1.dev32}/modal/cloud_bucket_mount.py +0 -0
  112. {modal-1.3.1.dev30 → modal-1.3.1.dev32}/modal/cloud_bucket_mount.pyi +0 -0
  113. {modal-1.3.1.dev30 → modal-1.3.1.dev32}/modal/cls.py +0 -0
  114. {modal-1.3.1.dev30 → modal-1.3.1.dev32}/modal/cls.pyi +0 -0
  115. {modal-1.3.1.dev30 → modal-1.3.1.dev32}/modal/config.py +0 -0
  116. {modal-1.3.1.dev30 → modal-1.3.1.dev32}/modal/container_process.py +0 -0
  117. {modal-1.3.1.dev30 → modal-1.3.1.dev32}/modal/container_process.pyi +0 -0
  118. {modal-1.3.1.dev30 → modal-1.3.1.dev32}/modal/dict.py +0 -0
  119. {modal-1.3.1.dev30 → modal-1.3.1.dev32}/modal/dict.pyi +0 -0
  120. {modal-1.3.1.dev30 → modal-1.3.1.dev32}/modal/environments.py +0 -0
  121. {modal-1.3.1.dev30 → modal-1.3.1.dev32}/modal/environments.pyi +0 -0
  122. {modal-1.3.1.dev30 → modal-1.3.1.dev32}/modal/exception.py +0 -0
  123. {modal-1.3.1.dev30 → modal-1.3.1.dev32}/modal/experimental/__init__.py +0 -0
  124. {modal-1.3.1.dev30 → modal-1.3.1.dev32}/modal/experimental/flash.py +0 -0
  125. {modal-1.3.1.dev30 → modal-1.3.1.dev32}/modal/experimental/flash.pyi +0 -0
  126. {modal-1.3.1.dev30 → modal-1.3.1.dev32}/modal/experimental/ipython.py +0 -0
  127. {modal-1.3.1.dev30 → modal-1.3.1.dev32}/modal/file_io.py +0 -0
  128. {modal-1.3.1.dev30 → modal-1.3.1.dev32}/modal/file_io.pyi +0 -0
  129. {modal-1.3.1.dev30 → modal-1.3.1.dev32}/modal/file_pattern_matcher.py +0 -0
  130. {modal-1.3.1.dev30 → modal-1.3.1.dev32}/modal/functions.py +0 -0
  131. {modal-1.3.1.dev30 → modal-1.3.1.dev32}/modal/functions.pyi +0 -0
  132. {modal-1.3.1.dev30 → modal-1.3.1.dev32}/modal/gpu.py +0 -0
  133. {modal-1.3.1.dev30 → modal-1.3.1.dev32}/modal/image.py +0 -0
  134. {modal-1.3.1.dev30 → modal-1.3.1.dev32}/modal/image.pyi +0 -0
  135. {modal-1.3.1.dev30 → modal-1.3.1.dev32}/modal/io_streams.py +0 -0
  136. {modal-1.3.1.dev30 → modal-1.3.1.dev32}/modal/io_streams.pyi +0 -0
  137. {modal-1.3.1.dev30 → modal-1.3.1.dev32}/modal/mount.py +0 -0
  138. {modal-1.3.1.dev30 → modal-1.3.1.dev32}/modal/mount.pyi +0 -0
  139. {modal-1.3.1.dev30 → modal-1.3.1.dev32}/modal/network_file_system.py +0 -0
  140. {modal-1.3.1.dev30 → modal-1.3.1.dev32}/modal/network_file_system.pyi +0 -0
  141. {modal-1.3.1.dev30 → modal-1.3.1.dev32}/modal/object.py +0 -0
  142. {modal-1.3.1.dev30 → modal-1.3.1.dev32}/modal/object.pyi +0 -0
  143. {modal-1.3.1.dev30 → modal-1.3.1.dev32}/modal/output.py +0 -0
  144. {modal-1.3.1.dev30 → modal-1.3.1.dev32}/modal/parallel_map.py +0 -0
  145. {modal-1.3.1.dev30 → modal-1.3.1.dev32}/modal/parallel_map.pyi +0 -0
  146. {modal-1.3.1.dev30 → modal-1.3.1.dev32}/modal/partial_function.py +0 -0
  147. {modal-1.3.1.dev30 → modal-1.3.1.dev32}/modal/partial_function.pyi +0 -0
  148. {modal-1.3.1.dev30 → modal-1.3.1.dev32}/modal/proxy.py +0 -0
  149. {modal-1.3.1.dev30 → modal-1.3.1.dev32}/modal/proxy.pyi +0 -0
  150. {modal-1.3.1.dev30 → modal-1.3.1.dev32}/modal/py.typed +0 -0
  151. {modal-1.3.1.dev30 → modal-1.3.1.dev32}/modal/queue.py +0 -0
  152. {modal-1.3.1.dev30 → modal-1.3.1.dev32}/modal/queue.pyi +0 -0
  153. {modal-1.3.1.dev30 → modal-1.3.1.dev32}/modal/retries.py +0 -0
  154. {modal-1.3.1.dev30 → modal-1.3.1.dev32}/modal/runner.py +0 -0
  155. {modal-1.3.1.dev30 → modal-1.3.1.dev32}/modal/runner.pyi +0 -0
  156. {modal-1.3.1.dev30 → modal-1.3.1.dev32}/modal/running_app.py +0 -0
  157. {modal-1.3.1.dev30 → modal-1.3.1.dev32}/modal/schedule.py +0 -0
  158. {modal-1.3.1.dev30 → modal-1.3.1.dev32}/modal/scheduler_placement.py +0 -0
  159. {modal-1.3.1.dev30 → modal-1.3.1.dev32}/modal/secret.py +0 -0
  160. {modal-1.3.1.dev30 → modal-1.3.1.dev32}/modal/secret.pyi +0 -0
  161. {modal-1.3.1.dev30 → modal-1.3.1.dev32}/modal/server.py +0 -0
  162. {modal-1.3.1.dev30 → modal-1.3.1.dev32}/modal/server.pyi +0 -0
  163. {modal-1.3.1.dev30 → modal-1.3.1.dev32}/modal/serving.py +0 -0
  164. {modal-1.3.1.dev30 → modal-1.3.1.dev32}/modal/serving.pyi +0 -0
  165. {modal-1.3.1.dev30 → modal-1.3.1.dev32}/modal/snapshot.py +0 -0
  166. {modal-1.3.1.dev30 → modal-1.3.1.dev32}/modal/snapshot.pyi +0 -0
  167. {modal-1.3.1.dev30 → modal-1.3.1.dev32}/modal/stream_type.py +0 -0
  168. {modal-1.3.1.dev30 → modal-1.3.1.dev32}/modal/token_flow.py +0 -0
  169. {modal-1.3.1.dev30 → modal-1.3.1.dev32}/modal/token_flow.pyi +0 -0
  170. {modal-1.3.1.dev30 → modal-1.3.1.dev32}/modal/volume.py +0 -0
  171. {modal-1.3.1.dev30 → modal-1.3.1.dev32}/modal/volume.pyi +0 -0
  172. {modal-1.3.1.dev30 → modal-1.3.1.dev32}/modal.egg-info/SOURCES.txt +0 -0
  173. {modal-1.3.1.dev30 → modal-1.3.1.dev32}/modal.egg-info/dependency_links.txt +0 -0
  174. {modal-1.3.1.dev30 → modal-1.3.1.dev32}/modal.egg-info/entry_points.txt +0 -0
  175. {modal-1.3.1.dev30 → modal-1.3.1.dev32}/modal.egg-info/requires.txt +0 -0
  176. {modal-1.3.1.dev30 → modal-1.3.1.dev32}/modal.egg-info/top_level.txt +0 -0
  177. {modal-1.3.1.dev30 → modal-1.3.1.dev32}/modal_docs/__init__.py +0 -0
  178. {modal-1.3.1.dev30 → modal-1.3.1.dev32}/modal_docs/gen_cli_docs.py +0 -0
  179. {modal-1.3.1.dev30 → modal-1.3.1.dev32}/modal_docs/gen_reference_docs.py +0 -0
  180. {modal-1.3.1.dev30 → modal-1.3.1.dev32}/modal_docs/mdmd/__init__.py +0 -0
  181. {modal-1.3.1.dev30 → modal-1.3.1.dev32}/modal_docs/mdmd/mdmd.py +0 -0
  182. {modal-1.3.1.dev30 → modal-1.3.1.dev32}/modal_docs/mdmd/signatures.py +0 -0
  183. {modal-1.3.1.dev30 → modal-1.3.1.dev32}/modal_proto/__init__.py +0 -0
  184. {modal-1.3.1.dev30 → modal-1.3.1.dev32}/modal_proto/api_grpc.py +0 -0
  185. {modal-1.3.1.dev30 → modal-1.3.1.dev32}/modal_proto/api_pb2_grpc.py +0 -0
  186. {modal-1.3.1.dev30 → modal-1.3.1.dev32}/modal_proto/api_pb2_grpc.pyi +0 -0
  187. {modal-1.3.1.dev30 → modal-1.3.1.dev32}/modal_proto/modal_api_grpc.py +0 -0
  188. {modal-1.3.1.dev30 → modal-1.3.1.dev32}/modal_proto/py.typed +0 -0
  189. {modal-1.3.1.dev30 → modal-1.3.1.dev32}/modal_proto/task_command_router.proto +0 -0
  190. {modal-1.3.1.dev30 → modal-1.3.1.dev32}/modal_proto/task_command_router_grpc.py +0 -0
  191. {modal-1.3.1.dev30 → modal-1.3.1.dev32}/modal_proto/task_command_router_pb2.py +0 -0
  192. {modal-1.3.1.dev30 → modal-1.3.1.dev32}/modal_proto/task_command_router_pb2.pyi +0 -0
  193. {modal-1.3.1.dev30 → modal-1.3.1.dev32}/modal_proto/task_command_router_pb2_grpc.py +0 -0
  194. {modal-1.3.1.dev30 → modal-1.3.1.dev32}/modal_proto/task_command_router_pb2_grpc.pyi +0 -0
  195. {modal-1.3.1.dev30 → modal-1.3.1.dev32}/modal_version/__main__.py +0 -0
  196. {modal-1.3.1.dev30 → modal-1.3.1.dev32}/pyproject.toml +0 -0
  197. {modal-1.3.1.dev30 → modal-1.3.1.dev32}/setup.cfg +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: modal
3
- Version: 1.3.1.dev30
3
+ Version: 1.3.1.dev32
4
4
  Summary: Python client library for Modal
5
5
  Author-email: Modal Labs <support@modal.com>
6
6
  License: Apache-2.0
@@ -35,7 +35,7 @@ class _Client:
35
35
  server_url: str,
36
36
  client_type: int,
37
37
  credentials: typing.Optional[tuple[str, str]],
38
- version: str = "1.3.1.dev30",
38
+ version: str = "1.3.1.dev32",
39
39
  ):
40
40
  """mdmd:hidden
41
41
  The Modal client object is not intended to be instantiated directly by users.
@@ -166,7 +166,7 @@ class Client:
166
166
  server_url: str,
167
167
  client_type: int,
168
168
  credentials: typing.Optional[tuple[str, str]],
169
- version: str = "1.3.1.dev30",
169
+ version: str = "1.3.1.dev32",
170
170
  ):
171
171
  """mdmd:hidden
172
172
  The Modal client object is not intended to be instantiated directly by users.
@@ -150,6 +150,7 @@ class _Sandbox(_Object, type_prefix="sb"):
150
150
  experimental_options: Optional[dict[str, bool]] = None,
151
151
  enable_snapshot: bool = False,
152
152
  verbose: bool = False,
153
+ custom_domain: Optional[str] = None,
153
154
  ) -> "_Sandbox":
154
155
  """mdmd:hidden"""
155
156
 
@@ -259,6 +260,7 @@ class _Sandbox(_Object, type_prefix="sb"):
259
260
  verbose=verbose,
260
261
  name=name,
261
262
  experimental_options=experimental_options,
263
+ custom_domain=custom_domain,
262
264
  )
263
265
 
264
266
  create_req = api_pb2.SandboxCreateRequest(app_id=load_context.app_id, definition=definition)
@@ -315,6 +317,10 @@ class _Sandbox(_Object, type_prefix="sb"):
315
317
  client: Optional[_Client] = None,
316
318
  environment_name: Optional[str] = None, # *DEPRECATED* Optionally override the default environment
317
319
  pty_info: Optional[api_pb2.PTYInfo] = None, # *DEPRECATED* Use `pty` instead. `pty` will override `pty_info`.
320
+ # If set, connections to this sandbox will be subdomains of this domain rather than the default.
321
+ # Custom domains must be configured manually by Modal. They are different from the custom domains
322
+ # in the Modal dashboard.
323
+ custom_domain: Optional[str] = None,
318
324
  ) -> "_Sandbox":
319
325
  """
320
326
  Create a new Sandbox to run untrusted, arbitrary code.
@@ -376,6 +382,7 @@ class _Sandbox(_Object, type_prefix="sb"):
376
382
  client=client,
377
383
  verbose=verbose,
378
384
  pty_info=pty_info,
385
+ custom_domain=custom_domain,
379
386
  )
380
387
 
381
388
  @staticmethod
@@ -409,6 +416,7 @@ class _Sandbox(_Object, type_prefix="sb"):
409
416
  client: Optional[_Client] = None,
410
417
  verbose: bool = False,
411
418
  pty_info: Optional[api_pb2.PTYInfo] = None,
419
+ custom_domain: Optional[str] = None,
412
420
  ):
413
421
  """Private method used internally.
414
422
 
@@ -457,6 +465,7 @@ class _Sandbox(_Object, type_prefix="sb"):
457
465
  experimental_options=experimental_options,
458
466
  enable_snapshot=_experimental_enable_snapshot,
459
467
  verbose=verbose,
468
+ custom_domain=custom_domain,
460
469
  )
461
470
  obj._enable_snapshot = _experimental_enable_snapshot
462
471
 
@@ -118,6 +118,7 @@ class _Sandbox(modal._object._Object):
118
118
  experimental_options: typing.Optional[dict[str, bool]] = None,
119
119
  enable_snapshot: bool = False,
120
120
  verbose: bool = False,
121
+ custom_domain: typing.Optional[str] = None,
121
122
  ) -> _Sandbox:
122
123
  """mdmd:hidden"""
123
124
  ...
@@ -156,6 +157,7 @@ class _Sandbox(modal._object._Object):
156
157
  client: typing.Optional[modal.client._Client] = None,
157
158
  environment_name: typing.Optional[str] = None,
158
159
  pty_info: typing.Optional[modal_proto.api_pb2.PTYInfo] = None,
160
+ custom_domain: typing.Optional[str] = None,
159
161
  ) -> _Sandbox:
160
162
  """Create a new Sandbox to run untrusted, arbitrary code.
161
163
 
@@ -206,6 +208,7 @@ class _Sandbox(modal._object._Object):
206
208
  client: typing.Optional[modal.client._Client] = None,
207
209
  verbose: bool = False,
208
210
  pty_info: typing.Optional[modal_proto.api_pb2.PTYInfo] = None,
211
+ custom_domain: typing.Optional[str] = None,
209
212
  ):
210
213
  """Private method used internally.
211
214
 
@@ -528,6 +531,7 @@ class Sandbox(modal.object.Object):
528
531
  experimental_options: typing.Optional[dict[str, bool]] = None,
529
532
  enable_snapshot: bool = False,
530
533
  verbose: bool = False,
534
+ custom_domain: typing.Optional[str] = None,
531
535
  ) -> Sandbox:
532
536
  """mdmd:hidden"""
533
537
  ...
@@ -570,6 +574,7 @@ class Sandbox(modal.object.Object):
570
574
  client: typing.Optional[modal.client.Client] = None,
571
575
  environment_name: typing.Optional[str] = None,
572
576
  pty_info: typing.Optional[modal_proto.api_pb2.PTYInfo] = None,
577
+ custom_domain: typing.Optional[str] = None,
573
578
  ) -> Sandbox:
574
579
  """Create a new Sandbox to run untrusted, arbitrary code.
575
580
 
@@ -623,6 +628,7 @@ class Sandbox(modal.object.Object):
623
628
  client: typing.Optional[modal.client.Client] = None,
624
629
  environment_name: typing.Optional[str] = None,
625
630
  pty_info: typing.Optional[modal_proto.api_pb2.PTYInfo] = None,
631
+ custom_domain: typing.Optional[str] = None,
626
632
  ) -> Sandbox:
627
633
  """Create a new Sandbox to run untrusted, arbitrary code.
628
634
 
@@ -679,6 +685,7 @@ class Sandbox(modal.object.Object):
679
685
  client: typing.Optional[modal.client.Client] = None,
680
686
  verbose: bool = False,
681
687
  pty_info: typing.Optional[modal_proto.api_pb2.PTYInfo] = None,
688
+ custom_domain: typing.Optional[str] = None,
682
689
  ):
683
690
  """Private method used internally.
684
691
 
@@ -725,6 +732,7 @@ class Sandbox(modal.object.Object):
725
732
  client: typing.Optional[modal.client.Client] = None,
726
733
  verbose: bool = False,
727
734
  pty_info: typing.Optional[modal_proto.api_pb2.PTYInfo] = None,
735
+ custom_domain: typing.Optional[str] = None,
728
736
  ):
729
737
  """Private method used internally.
730
738
 
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: modal
3
- Version: 1.3.1.dev30
3
+ Version: 1.3.1.dev32
4
4
  Summary: Python client library for Modal
5
5
  Author-email: Modal Labs <support@modal.com>
6
6
  License: Apache-2.0
@@ -2820,6 +2820,9 @@ message Sandbox {
2820
2820
  // Set by server during SandboxRestore to ensure the restored sandbox runs
2821
2821
  // on the same instance type as the original snapshot.
2822
2822
  string _restore_instance_type = 35;
2823
+
2824
+ // If set, connections to this sandbox will be subdomains of this domain rather than the default.
2825
+ string custom_domain = 36;
2823
2826
  }
2824
2827
 
2825
2828
  message SandboxCreateConnectTokenRequest {
@@ -2906,6 +2909,8 @@ message SandboxInfo {
2906
2909
  string image_id = 8;
2907
2910
  ResourceInfo resource_info = 9;
2908
2911
  repeated string regions = 10;
2912
+ uint32 timeout_secs = 11;
2913
+ optional uint32 idle_timeout_secs = 12;
2909
2914
  }
2910
2915
 
2911
2916