modal 1.1.4.dev4__tar.gz → 1.1.4.dev5__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 (190) hide show
  1. {modal-1.1.4.dev4 → modal-1.1.4.dev5}/PKG-INFO +1 -1
  2. {modal-1.1.4.dev4 → modal-1.1.4.dev5}/modal/client.pyi +2 -2
  3. {modal-1.1.4.dev4 → modal-1.1.4.dev5}/modal/sandbox.py +10 -2
  4. {modal-1.1.4.dev4 → modal-1.1.4.dev5}/modal/sandbox.pyi +8 -0
  5. {modal-1.1.4.dev4 → modal-1.1.4.dev5}/modal.egg-info/PKG-INFO +1 -1
  6. {modal-1.1.4.dev4 → modal-1.1.4.dev5}/modal_version/__init__.py +1 -1
  7. {modal-1.1.4.dev4 → modal-1.1.4.dev5}/LICENSE +0 -0
  8. {modal-1.1.4.dev4 → modal-1.1.4.dev5}/README.md +0 -0
  9. {modal-1.1.4.dev4 → modal-1.1.4.dev5}/modal/__init__.py +0 -0
  10. {modal-1.1.4.dev4 → modal-1.1.4.dev5}/modal/__main__.py +0 -0
  11. {modal-1.1.4.dev4 → modal-1.1.4.dev5}/modal/_clustered_functions.py +0 -0
  12. {modal-1.1.4.dev4 → modal-1.1.4.dev5}/modal/_clustered_functions.pyi +0 -0
  13. {modal-1.1.4.dev4 → modal-1.1.4.dev5}/modal/_container_entrypoint.py +0 -0
  14. {modal-1.1.4.dev4 → modal-1.1.4.dev5}/modal/_functions.py +0 -0
  15. {modal-1.1.4.dev4 → modal-1.1.4.dev5}/modal/_ipython.py +0 -0
  16. {modal-1.1.4.dev4 → modal-1.1.4.dev5}/modal/_location.py +0 -0
  17. {modal-1.1.4.dev4 → modal-1.1.4.dev5}/modal/_object.py +0 -0
  18. {modal-1.1.4.dev4 → modal-1.1.4.dev5}/modal/_output.py +0 -0
  19. {modal-1.1.4.dev4 → modal-1.1.4.dev5}/modal/_partial_function.py +0 -0
  20. {modal-1.1.4.dev4 → modal-1.1.4.dev5}/modal/_pty.py +0 -0
  21. {modal-1.1.4.dev4 → modal-1.1.4.dev5}/modal/_resolver.py +0 -0
  22. {modal-1.1.4.dev4 → modal-1.1.4.dev5}/modal/_resources.py +0 -0
  23. {modal-1.1.4.dev4 → modal-1.1.4.dev5}/modal/_runtime/__init__.py +0 -0
  24. {modal-1.1.4.dev4 → modal-1.1.4.dev5}/modal/_runtime/asgi.py +0 -0
  25. {modal-1.1.4.dev4 → modal-1.1.4.dev5}/modal/_runtime/container_io_manager.py +0 -0
  26. {modal-1.1.4.dev4 → modal-1.1.4.dev5}/modal/_runtime/container_io_manager.pyi +0 -0
  27. {modal-1.1.4.dev4 → modal-1.1.4.dev5}/modal/_runtime/execution_context.py +0 -0
  28. {modal-1.1.4.dev4 → modal-1.1.4.dev5}/modal/_runtime/execution_context.pyi +0 -0
  29. {modal-1.1.4.dev4 → modal-1.1.4.dev5}/modal/_runtime/gpu_memory_snapshot.py +0 -0
  30. {modal-1.1.4.dev4 → modal-1.1.4.dev5}/modal/_runtime/telemetry.py +0 -0
  31. {modal-1.1.4.dev4 → modal-1.1.4.dev5}/modal/_runtime/user_code_imports.py +0 -0
  32. {modal-1.1.4.dev4 → modal-1.1.4.dev5}/modal/_serialization.py +0 -0
  33. {modal-1.1.4.dev4 → modal-1.1.4.dev5}/modal/_traceback.py +0 -0
  34. {modal-1.1.4.dev4 → modal-1.1.4.dev5}/modal/_tunnel.py +0 -0
  35. {modal-1.1.4.dev4 → modal-1.1.4.dev5}/modal/_tunnel.pyi +0 -0
  36. {modal-1.1.4.dev4 → modal-1.1.4.dev5}/modal/_type_manager.py +0 -0
  37. {modal-1.1.4.dev4 → modal-1.1.4.dev5}/modal/_utils/__init__.py +0 -0
  38. {modal-1.1.4.dev4 → modal-1.1.4.dev5}/modal/_utils/app_utils.py +0 -0
  39. {modal-1.1.4.dev4 → modal-1.1.4.dev5}/modal/_utils/async_utils.py +0 -0
  40. {modal-1.1.4.dev4 → modal-1.1.4.dev5}/modal/_utils/auth_token_manager.py +0 -0
  41. {modal-1.1.4.dev4 → modal-1.1.4.dev5}/modal/_utils/blob_utils.py +0 -0
  42. {modal-1.1.4.dev4 → modal-1.1.4.dev5}/modal/_utils/bytes_io_segment_payload.py +0 -0
  43. {modal-1.1.4.dev4 → modal-1.1.4.dev5}/modal/_utils/deprecation.py +0 -0
  44. {modal-1.1.4.dev4 → modal-1.1.4.dev5}/modal/_utils/docker_utils.py +0 -0
  45. {modal-1.1.4.dev4 → modal-1.1.4.dev5}/modal/_utils/function_utils.py +0 -0
  46. {modal-1.1.4.dev4 → modal-1.1.4.dev5}/modal/_utils/git_utils.py +0 -0
  47. {modal-1.1.4.dev4 → modal-1.1.4.dev5}/modal/_utils/grpc_testing.py +0 -0
  48. {modal-1.1.4.dev4 → modal-1.1.4.dev5}/modal/_utils/grpc_utils.py +0 -0
  49. {modal-1.1.4.dev4 → modal-1.1.4.dev5}/modal/_utils/hash_utils.py +0 -0
  50. {modal-1.1.4.dev4 → modal-1.1.4.dev5}/modal/_utils/http_utils.py +0 -0
  51. {modal-1.1.4.dev4 → modal-1.1.4.dev5}/modal/_utils/jwt_utils.py +0 -0
  52. {modal-1.1.4.dev4 → modal-1.1.4.dev5}/modal/_utils/logger.py +0 -0
  53. {modal-1.1.4.dev4 → modal-1.1.4.dev5}/modal/_utils/mount_utils.py +0 -0
  54. {modal-1.1.4.dev4 → modal-1.1.4.dev5}/modal/_utils/name_utils.py +0 -0
  55. {modal-1.1.4.dev4 → modal-1.1.4.dev5}/modal/_utils/package_utils.py +0 -0
  56. {modal-1.1.4.dev4 → modal-1.1.4.dev5}/modal/_utils/pattern_utils.py +0 -0
  57. {modal-1.1.4.dev4 → modal-1.1.4.dev5}/modal/_utils/rand_pb_testing.py +0 -0
  58. {modal-1.1.4.dev4 → modal-1.1.4.dev5}/modal/_utils/shell_utils.py +0 -0
  59. {modal-1.1.4.dev4 → modal-1.1.4.dev5}/modal/_utils/time_utils.py +0 -0
  60. {modal-1.1.4.dev4 → modal-1.1.4.dev5}/modal/_vendor/__init__.py +0 -0
  61. {modal-1.1.4.dev4 → modal-1.1.4.dev5}/modal/_vendor/a2wsgi_wsgi.py +0 -0
  62. {modal-1.1.4.dev4 → modal-1.1.4.dev5}/modal/_vendor/cloudpickle.py +0 -0
  63. {modal-1.1.4.dev4 → modal-1.1.4.dev5}/modal/_vendor/tblib.py +0 -0
  64. {modal-1.1.4.dev4 → modal-1.1.4.dev5}/modal/_watcher.py +0 -0
  65. {modal-1.1.4.dev4 → modal-1.1.4.dev5}/modal/app.py +0 -0
  66. {modal-1.1.4.dev4 → modal-1.1.4.dev5}/modal/app.pyi +0 -0
  67. {modal-1.1.4.dev4 → modal-1.1.4.dev5}/modal/builder/2023.12.312.txt +0 -0
  68. {modal-1.1.4.dev4 → modal-1.1.4.dev5}/modal/builder/2023.12.txt +0 -0
  69. {modal-1.1.4.dev4 → modal-1.1.4.dev5}/modal/builder/2024.04.txt +0 -0
  70. {modal-1.1.4.dev4 → modal-1.1.4.dev5}/modal/builder/2024.10.txt +0 -0
  71. {modal-1.1.4.dev4 → modal-1.1.4.dev5}/modal/builder/2025.06.txt +0 -0
  72. {modal-1.1.4.dev4 → modal-1.1.4.dev5}/modal/builder/PREVIEW.txt +0 -0
  73. {modal-1.1.4.dev4 → modal-1.1.4.dev5}/modal/builder/README.md +0 -0
  74. {modal-1.1.4.dev4 → modal-1.1.4.dev5}/modal/builder/base-images.json +0 -0
  75. {modal-1.1.4.dev4 → modal-1.1.4.dev5}/modal/call_graph.py +0 -0
  76. {modal-1.1.4.dev4 → modal-1.1.4.dev5}/modal/cli/__init__.py +0 -0
  77. {modal-1.1.4.dev4 → modal-1.1.4.dev5}/modal/cli/_download.py +0 -0
  78. {modal-1.1.4.dev4 → modal-1.1.4.dev5}/modal/cli/_traceback.py +0 -0
  79. {modal-1.1.4.dev4 → modal-1.1.4.dev5}/modal/cli/app.py +0 -0
  80. {modal-1.1.4.dev4 → modal-1.1.4.dev5}/modal/cli/cluster.py +0 -0
  81. {modal-1.1.4.dev4 → modal-1.1.4.dev5}/modal/cli/config.py +0 -0
  82. {modal-1.1.4.dev4 → modal-1.1.4.dev5}/modal/cli/container.py +0 -0
  83. {modal-1.1.4.dev4 → modal-1.1.4.dev5}/modal/cli/dict.py +0 -0
  84. {modal-1.1.4.dev4 → modal-1.1.4.dev5}/modal/cli/entry_point.py +0 -0
  85. {modal-1.1.4.dev4 → modal-1.1.4.dev5}/modal/cli/environment.py +0 -0
  86. {modal-1.1.4.dev4 → modal-1.1.4.dev5}/modal/cli/import_refs.py +0 -0
  87. {modal-1.1.4.dev4 → modal-1.1.4.dev5}/modal/cli/launch.py +0 -0
  88. {modal-1.1.4.dev4 → modal-1.1.4.dev5}/modal/cli/network_file_system.py +0 -0
  89. {modal-1.1.4.dev4 → modal-1.1.4.dev5}/modal/cli/profile.py +0 -0
  90. {modal-1.1.4.dev4 → modal-1.1.4.dev5}/modal/cli/programs/__init__.py +0 -0
  91. {modal-1.1.4.dev4 → modal-1.1.4.dev5}/modal/cli/programs/launch_instance_ssh.py +0 -0
  92. {modal-1.1.4.dev4 → modal-1.1.4.dev5}/modal/cli/programs/run_jupyter.py +0 -0
  93. {modal-1.1.4.dev4 → modal-1.1.4.dev5}/modal/cli/programs/run_marimo.py +0 -0
  94. {modal-1.1.4.dev4 → modal-1.1.4.dev5}/modal/cli/programs/vscode.py +0 -0
  95. {modal-1.1.4.dev4 → modal-1.1.4.dev5}/modal/cli/queues.py +0 -0
  96. {modal-1.1.4.dev4 → modal-1.1.4.dev5}/modal/cli/run.py +0 -0
  97. {modal-1.1.4.dev4 → modal-1.1.4.dev5}/modal/cli/secret.py +0 -0
  98. {modal-1.1.4.dev4 → modal-1.1.4.dev5}/modal/cli/token.py +0 -0
  99. {modal-1.1.4.dev4 → modal-1.1.4.dev5}/modal/cli/utils.py +0 -0
  100. {modal-1.1.4.dev4 → modal-1.1.4.dev5}/modal/cli/volume.py +0 -0
  101. {modal-1.1.4.dev4 → modal-1.1.4.dev5}/modal/client.py +0 -0
  102. {modal-1.1.4.dev4 → modal-1.1.4.dev5}/modal/cloud_bucket_mount.py +0 -0
  103. {modal-1.1.4.dev4 → modal-1.1.4.dev5}/modal/cloud_bucket_mount.pyi +0 -0
  104. {modal-1.1.4.dev4 → modal-1.1.4.dev5}/modal/cls.py +0 -0
  105. {modal-1.1.4.dev4 → modal-1.1.4.dev5}/modal/cls.pyi +0 -0
  106. {modal-1.1.4.dev4 → modal-1.1.4.dev5}/modal/config.py +0 -0
  107. {modal-1.1.4.dev4 → modal-1.1.4.dev5}/modal/container_process.py +0 -0
  108. {modal-1.1.4.dev4 → modal-1.1.4.dev5}/modal/container_process.pyi +0 -0
  109. {modal-1.1.4.dev4 → modal-1.1.4.dev5}/modal/dict.py +0 -0
  110. {modal-1.1.4.dev4 → modal-1.1.4.dev5}/modal/dict.pyi +0 -0
  111. {modal-1.1.4.dev4 → modal-1.1.4.dev5}/modal/environments.py +0 -0
  112. {modal-1.1.4.dev4 → modal-1.1.4.dev5}/modal/environments.pyi +0 -0
  113. {modal-1.1.4.dev4 → modal-1.1.4.dev5}/modal/exception.py +0 -0
  114. {modal-1.1.4.dev4 → modal-1.1.4.dev5}/modal/experimental/__init__.py +0 -0
  115. {modal-1.1.4.dev4 → modal-1.1.4.dev5}/modal/experimental/flash.py +0 -0
  116. {modal-1.1.4.dev4 → modal-1.1.4.dev5}/modal/experimental/flash.pyi +0 -0
  117. {modal-1.1.4.dev4 → modal-1.1.4.dev5}/modal/experimental/ipython.py +0 -0
  118. {modal-1.1.4.dev4 → modal-1.1.4.dev5}/modal/file_io.py +0 -0
  119. {modal-1.1.4.dev4 → modal-1.1.4.dev5}/modal/file_io.pyi +0 -0
  120. {modal-1.1.4.dev4 → modal-1.1.4.dev5}/modal/file_pattern_matcher.py +0 -0
  121. {modal-1.1.4.dev4 → modal-1.1.4.dev5}/modal/functions.py +0 -0
  122. {modal-1.1.4.dev4 → modal-1.1.4.dev5}/modal/functions.pyi +0 -0
  123. {modal-1.1.4.dev4 → modal-1.1.4.dev5}/modal/gpu.py +0 -0
  124. {modal-1.1.4.dev4 → modal-1.1.4.dev5}/modal/image.py +0 -0
  125. {modal-1.1.4.dev4 → modal-1.1.4.dev5}/modal/image.pyi +0 -0
  126. {modal-1.1.4.dev4 → modal-1.1.4.dev5}/modal/io_streams.py +0 -0
  127. {modal-1.1.4.dev4 → modal-1.1.4.dev5}/modal/io_streams.pyi +0 -0
  128. {modal-1.1.4.dev4 → modal-1.1.4.dev5}/modal/mount.py +0 -0
  129. {modal-1.1.4.dev4 → modal-1.1.4.dev5}/modal/mount.pyi +0 -0
  130. {modal-1.1.4.dev4 → modal-1.1.4.dev5}/modal/network_file_system.py +0 -0
  131. {modal-1.1.4.dev4 → modal-1.1.4.dev5}/modal/network_file_system.pyi +0 -0
  132. {modal-1.1.4.dev4 → modal-1.1.4.dev5}/modal/object.py +0 -0
  133. {modal-1.1.4.dev4 → modal-1.1.4.dev5}/modal/object.pyi +0 -0
  134. {modal-1.1.4.dev4 → modal-1.1.4.dev5}/modal/output.py +0 -0
  135. {modal-1.1.4.dev4 → modal-1.1.4.dev5}/modal/parallel_map.py +0 -0
  136. {modal-1.1.4.dev4 → modal-1.1.4.dev5}/modal/parallel_map.pyi +0 -0
  137. {modal-1.1.4.dev4 → modal-1.1.4.dev5}/modal/partial_function.py +0 -0
  138. {modal-1.1.4.dev4 → modal-1.1.4.dev5}/modal/partial_function.pyi +0 -0
  139. {modal-1.1.4.dev4 → modal-1.1.4.dev5}/modal/proxy.py +0 -0
  140. {modal-1.1.4.dev4 → modal-1.1.4.dev5}/modal/proxy.pyi +0 -0
  141. {modal-1.1.4.dev4 → modal-1.1.4.dev5}/modal/py.typed +0 -0
  142. {modal-1.1.4.dev4 → modal-1.1.4.dev5}/modal/queue.py +0 -0
  143. {modal-1.1.4.dev4 → modal-1.1.4.dev5}/modal/queue.pyi +0 -0
  144. {modal-1.1.4.dev4 → modal-1.1.4.dev5}/modal/retries.py +0 -0
  145. {modal-1.1.4.dev4 → modal-1.1.4.dev5}/modal/runner.py +0 -0
  146. {modal-1.1.4.dev4 → modal-1.1.4.dev5}/modal/runner.pyi +0 -0
  147. {modal-1.1.4.dev4 → modal-1.1.4.dev5}/modal/running_app.py +0 -0
  148. {modal-1.1.4.dev4 → modal-1.1.4.dev5}/modal/schedule.py +0 -0
  149. {modal-1.1.4.dev4 → modal-1.1.4.dev5}/modal/scheduler_placement.py +0 -0
  150. {modal-1.1.4.dev4 → modal-1.1.4.dev5}/modal/secret.py +0 -0
  151. {modal-1.1.4.dev4 → modal-1.1.4.dev5}/modal/secret.pyi +0 -0
  152. {modal-1.1.4.dev4 → modal-1.1.4.dev5}/modal/serving.py +0 -0
  153. {modal-1.1.4.dev4 → modal-1.1.4.dev5}/modal/serving.pyi +0 -0
  154. {modal-1.1.4.dev4 → modal-1.1.4.dev5}/modal/snapshot.py +0 -0
  155. {modal-1.1.4.dev4 → modal-1.1.4.dev5}/modal/snapshot.pyi +0 -0
  156. {modal-1.1.4.dev4 → modal-1.1.4.dev5}/modal/stream_type.py +0 -0
  157. {modal-1.1.4.dev4 → modal-1.1.4.dev5}/modal/token_flow.py +0 -0
  158. {modal-1.1.4.dev4 → modal-1.1.4.dev5}/modal/token_flow.pyi +0 -0
  159. {modal-1.1.4.dev4 → modal-1.1.4.dev5}/modal/volume.py +0 -0
  160. {modal-1.1.4.dev4 → modal-1.1.4.dev5}/modal/volume.pyi +0 -0
  161. {modal-1.1.4.dev4 → modal-1.1.4.dev5}/modal.egg-info/SOURCES.txt +0 -0
  162. {modal-1.1.4.dev4 → modal-1.1.4.dev5}/modal.egg-info/dependency_links.txt +0 -0
  163. {modal-1.1.4.dev4 → modal-1.1.4.dev5}/modal.egg-info/entry_points.txt +0 -0
  164. {modal-1.1.4.dev4 → modal-1.1.4.dev5}/modal.egg-info/requires.txt +0 -0
  165. {modal-1.1.4.dev4 → modal-1.1.4.dev5}/modal.egg-info/top_level.txt +0 -0
  166. {modal-1.1.4.dev4 → modal-1.1.4.dev5}/modal_docs/__init__.py +0 -0
  167. {modal-1.1.4.dev4 → modal-1.1.4.dev5}/modal_docs/gen_cli_docs.py +0 -0
  168. {modal-1.1.4.dev4 → modal-1.1.4.dev5}/modal_docs/gen_reference_docs.py +0 -0
  169. {modal-1.1.4.dev4 → modal-1.1.4.dev5}/modal_docs/mdmd/__init__.py +0 -0
  170. {modal-1.1.4.dev4 → modal-1.1.4.dev5}/modal_docs/mdmd/mdmd.py +0 -0
  171. {modal-1.1.4.dev4 → modal-1.1.4.dev5}/modal_docs/mdmd/signatures.py +0 -0
  172. {modal-1.1.4.dev4 → modal-1.1.4.dev5}/modal_proto/__init__.py +0 -0
  173. {modal-1.1.4.dev4 → modal-1.1.4.dev5}/modal_proto/api.proto +0 -0
  174. {modal-1.1.4.dev4 → modal-1.1.4.dev5}/modal_proto/api_grpc.py +0 -0
  175. {modal-1.1.4.dev4 → modal-1.1.4.dev5}/modal_proto/api_pb2.py +0 -0
  176. {modal-1.1.4.dev4 → modal-1.1.4.dev5}/modal_proto/api_pb2.pyi +0 -0
  177. {modal-1.1.4.dev4 → modal-1.1.4.dev5}/modal_proto/api_pb2_grpc.py +0 -0
  178. {modal-1.1.4.dev4 → modal-1.1.4.dev5}/modal_proto/api_pb2_grpc.pyi +0 -0
  179. {modal-1.1.4.dev4 → modal-1.1.4.dev5}/modal_proto/modal_api_grpc.py +0 -0
  180. {modal-1.1.4.dev4 → modal-1.1.4.dev5}/modal_proto/modal_options_grpc.py +0 -0
  181. {modal-1.1.4.dev4 → modal-1.1.4.dev5}/modal_proto/options.proto +0 -0
  182. {modal-1.1.4.dev4 → modal-1.1.4.dev5}/modal_proto/options_grpc.py +0 -0
  183. {modal-1.1.4.dev4 → modal-1.1.4.dev5}/modal_proto/options_pb2.py +0 -0
  184. {modal-1.1.4.dev4 → modal-1.1.4.dev5}/modal_proto/options_pb2.pyi +0 -0
  185. {modal-1.1.4.dev4 → modal-1.1.4.dev5}/modal_proto/options_pb2_grpc.py +0 -0
  186. {modal-1.1.4.dev4 → modal-1.1.4.dev5}/modal_proto/options_pb2_grpc.pyi +0 -0
  187. {modal-1.1.4.dev4 → modal-1.1.4.dev5}/modal_proto/py.typed +0 -0
  188. {modal-1.1.4.dev4 → modal-1.1.4.dev5}/modal_version/__main__.py +0 -0
  189. {modal-1.1.4.dev4 → modal-1.1.4.dev5}/pyproject.toml +0 -0
  190. {modal-1.1.4.dev4 → modal-1.1.4.dev5}/setup.cfg +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: modal
3
- Version: 1.1.4.dev4
3
+ Version: 1.1.4.dev5
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.4.dev4",
36
+ version: str = "1.1.4.dev5",
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.4.dev4",
167
+ version: str = "1.1.4.dev5",
168
168
  ):
169
169
  """mdmd:hidden
170
170
  The Modal client object is not intended to be instantiated directly by users.
@@ -109,6 +109,7 @@ class _Sandbox(_Object, type_prefix="sb"):
109
109
  secrets: Sequence[_Secret],
110
110
  name: Optional[str] = None,
111
111
  timeout: int = 300,
112
+ idle_timeout: Optional[int] = None,
112
113
  workdir: Optional[str] = None,
113
114
  gpu: GPU_T = None,
114
115
  cloud: Optional[str] = None,
@@ -213,6 +214,7 @@ class _Sandbox(_Object, type_prefix="sb"):
213
214
  mount_ids=[mount.object_id for mount in mounts] + [mount.object_id for mount in image._mount_layers],
214
215
  secret_ids=[secret.object_id for secret in secrets],
215
216
  timeout_secs=timeout,
217
+ idle_timeout_secs=idle_timeout,
216
218
  workdir=workdir,
217
219
  resources=convert_fn_config_to_resources_config(
218
220
  cpu=cpu, memory=memory, gpu=gpu, ephemeral_disk=ephemeral_disk
@@ -257,7 +259,9 @@ class _Sandbox(_Object, type_prefix="sb"):
257
259
  image: Optional[_Image] = None, # The image to run as the container for the sandbox.
258
260
  secrets: Sequence[_Secret] = (), # Environment variables to inject into the sandbox.
259
261
  network_file_systems: dict[Union[str, os.PathLike], _NetworkFileSystem] = {},
260
- timeout: int = 300, # Maximum execution time of the sandbox in seconds.
262
+ timeout: int = 300, # Maximum lifetime of the sandbox in seconds.
263
+ # The amount of time in seconds that a sandbox can be idle before being terminated.
264
+ idle_timeout: Optional[int] = None,
261
265
  workdir: Optional[str] = None, # Working directory of the sandbox.
262
266
  gpu: GPU_T = None,
263
267
  cloud: Optional[str] = None,
@@ -324,6 +328,7 @@ class _Sandbox(_Object, type_prefix="sb"):
324
328
  secrets=secrets,
325
329
  network_file_systems=network_file_systems,
326
330
  timeout=timeout,
331
+ idle_timeout=idle_timeout,
327
332
  workdir=workdir,
328
333
  gpu=gpu,
329
334
  cloud=cloud,
@@ -355,7 +360,9 @@ class _Sandbox(_Object, type_prefix="sb"):
355
360
  secrets: Sequence[_Secret] = (), # Environment variables to inject into the sandbox.
356
361
  mounts: Sequence[_Mount] = (),
357
362
  network_file_systems: dict[Union[str, os.PathLike], _NetworkFileSystem] = {},
358
- timeout: int = 300, # Maximum execution time of the sandbox in seconds.
363
+ timeout: int = 300, # Maximum lifetime of the sandbox in seconds.
364
+ # The amount of time in seconds that a sandbox can be idle before being terminated.
365
+ idle_timeout: Optional[int] = None,
359
366
  workdir: Optional[str] = None, # Working directory of the sandbox.
360
367
  gpu: GPU_T = None,
361
368
  cloud: Optional[str] = None,
@@ -405,6 +412,7 @@ class _Sandbox(_Object, type_prefix="sb"):
405
412
  secrets=secrets,
406
413
  name=name,
407
414
  timeout=timeout,
415
+ idle_timeout=idle_timeout,
408
416
  workdir=workdir,
409
417
  gpu=gpu,
410
418
  cloud=cloud,
@@ -60,6 +60,7 @@ class _Sandbox(modal._object._Object):
60
60
  secrets: collections.abc.Sequence[modal.secret._Secret],
61
61
  name: typing.Optional[str] = None,
62
62
  timeout: int = 300,
63
+ idle_timeout: typing.Optional[int] = None,
63
64
  workdir: typing.Optional[str] = None,
64
65
  gpu: typing.Union[None, str, modal.gpu._GPUConfig] = None,
65
66
  cloud: typing.Optional[str] = None,
@@ -96,6 +97,7 @@ class _Sandbox(modal._object._Object):
96
97
  secrets: collections.abc.Sequence[modal.secret._Secret] = (),
97
98
  network_file_systems: dict[typing.Union[str, os.PathLike], modal.network_file_system._NetworkFileSystem] = {},
98
99
  timeout: int = 300,
100
+ idle_timeout: typing.Optional[int] = None,
99
101
  workdir: typing.Optional[str] = None,
100
102
  gpu: typing.Union[None, str, modal.gpu._GPUConfig] = None,
101
103
  cloud: typing.Optional[str] = None,
@@ -145,6 +147,7 @@ class _Sandbox(modal._object._Object):
145
147
  mounts: collections.abc.Sequence[modal.mount._Mount] = (),
146
148
  network_file_systems: dict[typing.Union[str, os.PathLike], modal.network_file_system._NetworkFileSystem] = {},
147
149
  timeout: int = 300,
150
+ idle_timeout: typing.Optional[int] = None,
148
151
  workdir: typing.Optional[str] = None,
149
152
  gpu: typing.Union[None, str, modal.gpu._GPUConfig] = None,
150
153
  cloud: typing.Optional[str] = None,
@@ -370,6 +373,7 @@ class Sandbox(modal.object.Object):
370
373
  secrets: collections.abc.Sequence[modal.secret.Secret],
371
374
  name: typing.Optional[str] = None,
372
375
  timeout: int = 300,
376
+ idle_timeout: typing.Optional[int] = None,
373
377
  workdir: typing.Optional[str] = None,
374
378
  gpu: typing.Union[None, str, modal.gpu._GPUConfig] = None,
375
379
  cloud: typing.Optional[str] = None,
@@ -409,6 +413,7 @@ class Sandbox(modal.object.Object):
409
413
  typing.Union[str, os.PathLike], modal.network_file_system.NetworkFileSystem
410
414
  ] = {},
411
415
  timeout: int = 300,
416
+ idle_timeout: typing.Optional[int] = None,
412
417
  workdir: typing.Optional[str] = None,
413
418
  gpu: typing.Union[None, str, modal.gpu._GPUConfig] = None,
414
419
  cloud: typing.Optional[str] = None,
@@ -460,6 +465,7 @@ class Sandbox(modal.object.Object):
460
465
  typing.Union[str, os.PathLike], modal.network_file_system.NetworkFileSystem
461
466
  ] = {},
462
467
  timeout: int = 300,
468
+ idle_timeout: typing.Optional[int] = None,
463
469
  workdir: typing.Optional[str] = None,
464
470
  gpu: typing.Union[None, str, modal.gpu._GPUConfig] = None,
465
471
  cloud: typing.Optional[str] = None,
@@ -515,6 +521,7 @@ class Sandbox(modal.object.Object):
515
521
  typing.Union[str, os.PathLike], modal.network_file_system.NetworkFileSystem
516
522
  ] = {},
517
523
  timeout: int = 300,
524
+ idle_timeout: typing.Optional[int] = None,
518
525
  workdir: typing.Optional[str] = None,
519
526
  gpu: typing.Union[None, str, modal.gpu._GPUConfig] = None,
520
527
  cloud: typing.Optional[str] = None,
@@ -551,6 +558,7 @@ class Sandbox(modal.object.Object):
551
558
  typing.Union[str, os.PathLike], modal.network_file_system.NetworkFileSystem
552
559
  ] = {},
553
560
  timeout: int = 300,
561
+ idle_timeout: typing.Optional[int] = None,
554
562
  workdir: typing.Optional[str] = None,
555
563
  gpu: typing.Union[None, str, modal.gpu._GPUConfig] = None,
556
564
  cloud: typing.Optional[str] = None,
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: modal
3
- Version: 1.1.4.dev4
3
+ Version: 1.1.4.dev5
4
4
  Summary: Python client library for Modal
5
5
  Author-email: Modal Labs <support@modal.com>
6
6
  License: Apache-2.0
@@ -1,4 +1,4 @@
1
1
  # Copyright Modal Labs 2025
2
2
  """Supplies the current version of the modal client library."""
3
3
 
4
- __version__ = "1.1.4.dev4"
4
+ __version__ = "1.1.4.dev5"
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes