modal 1.1.4.dev26__tar.gz → 1.1.4.dev27__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.dev26 → modal-1.1.4.dev27}/PKG-INFO +1 -1
  2. {modal-1.1.4.dev26 → modal-1.1.4.dev27}/modal/_functions.py +3 -0
  3. {modal-1.1.4.dev26 → modal-1.1.4.dev27}/modal/app.py +6 -2
  4. {modal-1.1.4.dev26 → modal-1.1.4.dev27}/modal/app.pyi +4 -0
  5. {modal-1.1.4.dev26 → modal-1.1.4.dev27}/modal/client.pyi +2 -2
  6. {modal-1.1.4.dev26 → modal-1.1.4.dev27}/modal/functions.pyi +7 -6
  7. {modal-1.1.4.dev26 → modal-1.1.4.dev27}/modal.egg-info/PKG-INFO +1 -1
  8. {modal-1.1.4.dev26 → modal-1.1.4.dev27}/modal_version/__init__.py +1 -1
  9. {modal-1.1.4.dev26 → modal-1.1.4.dev27}/LICENSE +0 -0
  10. {modal-1.1.4.dev26 → modal-1.1.4.dev27}/README.md +0 -0
  11. {modal-1.1.4.dev26 → modal-1.1.4.dev27}/modal/__init__.py +0 -0
  12. {modal-1.1.4.dev26 → modal-1.1.4.dev27}/modal/__main__.py +0 -0
  13. {modal-1.1.4.dev26 → modal-1.1.4.dev27}/modal/_clustered_functions.py +0 -0
  14. {modal-1.1.4.dev26 → modal-1.1.4.dev27}/modal/_clustered_functions.pyi +0 -0
  15. {modal-1.1.4.dev26 → modal-1.1.4.dev27}/modal/_container_entrypoint.py +0 -0
  16. {modal-1.1.4.dev26 → modal-1.1.4.dev27}/modal/_ipython.py +0 -0
  17. {modal-1.1.4.dev26 → modal-1.1.4.dev27}/modal/_location.py +0 -0
  18. {modal-1.1.4.dev26 → modal-1.1.4.dev27}/modal/_object.py +0 -0
  19. {modal-1.1.4.dev26 → modal-1.1.4.dev27}/modal/_output.py +0 -0
  20. {modal-1.1.4.dev26 → modal-1.1.4.dev27}/modal/_partial_function.py +0 -0
  21. {modal-1.1.4.dev26 → modal-1.1.4.dev27}/modal/_pty.py +0 -0
  22. {modal-1.1.4.dev26 → modal-1.1.4.dev27}/modal/_resolver.py +0 -0
  23. {modal-1.1.4.dev26 → modal-1.1.4.dev27}/modal/_resources.py +0 -0
  24. {modal-1.1.4.dev26 → modal-1.1.4.dev27}/modal/_runtime/__init__.py +0 -0
  25. {modal-1.1.4.dev26 → modal-1.1.4.dev27}/modal/_runtime/asgi.py +0 -0
  26. {modal-1.1.4.dev26 → modal-1.1.4.dev27}/modal/_runtime/container_io_manager.py +0 -0
  27. {modal-1.1.4.dev26 → modal-1.1.4.dev27}/modal/_runtime/container_io_manager.pyi +0 -0
  28. {modal-1.1.4.dev26 → modal-1.1.4.dev27}/modal/_runtime/execution_context.py +0 -0
  29. {modal-1.1.4.dev26 → modal-1.1.4.dev27}/modal/_runtime/execution_context.pyi +0 -0
  30. {modal-1.1.4.dev26 → modal-1.1.4.dev27}/modal/_runtime/gpu_memory_snapshot.py +0 -0
  31. {modal-1.1.4.dev26 → modal-1.1.4.dev27}/modal/_runtime/telemetry.py +0 -0
  32. {modal-1.1.4.dev26 → modal-1.1.4.dev27}/modal/_runtime/user_code_imports.py +0 -0
  33. {modal-1.1.4.dev26 → modal-1.1.4.dev27}/modal/_serialization.py +0 -0
  34. {modal-1.1.4.dev26 → modal-1.1.4.dev27}/modal/_traceback.py +0 -0
  35. {modal-1.1.4.dev26 → modal-1.1.4.dev27}/modal/_tunnel.py +0 -0
  36. {modal-1.1.4.dev26 → modal-1.1.4.dev27}/modal/_tunnel.pyi +0 -0
  37. {modal-1.1.4.dev26 → modal-1.1.4.dev27}/modal/_type_manager.py +0 -0
  38. {modal-1.1.4.dev26 → modal-1.1.4.dev27}/modal/_utils/__init__.py +0 -0
  39. {modal-1.1.4.dev26 → modal-1.1.4.dev27}/modal/_utils/app_utils.py +0 -0
  40. {modal-1.1.4.dev26 → modal-1.1.4.dev27}/modal/_utils/async_utils.py +0 -0
  41. {modal-1.1.4.dev26 → modal-1.1.4.dev27}/modal/_utils/auth_token_manager.py +0 -0
  42. {modal-1.1.4.dev26 → modal-1.1.4.dev27}/modal/_utils/blob_utils.py +0 -0
  43. {modal-1.1.4.dev26 → modal-1.1.4.dev27}/modal/_utils/bytes_io_segment_payload.py +0 -0
  44. {modal-1.1.4.dev26 → modal-1.1.4.dev27}/modal/_utils/deprecation.py +0 -0
  45. {modal-1.1.4.dev26 → modal-1.1.4.dev27}/modal/_utils/docker_utils.py +0 -0
  46. {modal-1.1.4.dev26 → modal-1.1.4.dev27}/modal/_utils/function_utils.py +0 -0
  47. {modal-1.1.4.dev26 → modal-1.1.4.dev27}/modal/_utils/git_utils.py +0 -0
  48. {modal-1.1.4.dev26 → modal-1.1.4.dev27}/modal/_utils/grpc_testing.py +0 -0
  49. {modal-1.1.4.dev26 → modal-1.1.4.dev27}/modal/_utils/grpc_utils.py +0 -0
  50. {modal-1.1.4.dev26 → modal-1.1.4.dev27}/modal/_utils/hash_utils.py +0 -0
  51. {modal-1.1.4.dev26 → modal-1.1.4.dev27}/modal/_utils/http_utils.py +0 -0
  52. {modal-1.1.4.dev26 → modal-1.1.4.dev27}/modal/_utils/jwt_utils.py +0 -0
  53. {modal-1.1.4.dev26 → modal-1.1.4.dev27}/modal/_utils/logger.py +0 -0
  54. {modal-1.1.4.dev26 → modal-1.1.4.dev27}/modal/_utils/mount_utils.py +0 -0
  55. {modal-1.1.4.dev26 → modal-1.1.4.dev27}/modal/_utils/name_utils.py +0 -0
  56. {modal-1.1.4.dev26 → modal-1.1.4.dev27}/modal/_utils/package_utils.py +0 -0
  57. {modal-1.1.4.dev26 → modal-1.1.4.dev27}/modal/_utils/pattern_utils.py +0 -0
  58. {modal-1.1.4.dev26 → modal-1.1.4.dev27}/modal/_utils/rand_pb_testing.py +0 -0
  59. {modal-1.1.4.dev26 → modal-1.1.4.dev27}/modal/_utils/shell_utils.py +0 -0
  60. {modal-1.1.4.dev26 → modal-1.1.4.dev27}/modal/_utils/time_utils.py +0 -0
  61. {modal-1.1.4.dev26 → modal-1.1.4.dev27}/modal/_vendor/__init__.py +0 -0
  62. {modal-1.1.4.dev26 → modal-1.1.4.dev27}/modal/_vendor/a2wsgi_wsgi.py +0 -0
  63. {modal-1.1.4.dev26 → modal-1.1.4.dev27}/modal/_vendor/cloudpickle.py +0 -0
  64. {modal-1.1.4.dev26 → modal-1.1.4.dev27}/modal/_vendor/tblib.py +0 -0
  65. {modal-1.1.4.dev26 → modal-1.1.4.dev27}/modal/_watcher.py +0 -0
  66. {modal-1.1.4.dev26 → modal-1.1.4.dev27}/modal/builder/2023.12.312.txt +0 -0
  67. {modal-1.1.4.dev26 → modal-1.1.4.dev27}/modal/builder/2023.12.txt +0 -0
  68. {modal-1.1.4.dev26 → modal-1.1.4.dev27}/modal/builder/2024.04.txt +0 -0
  69. {modal-1.1.4.dev26 → modal-1.1.4.dev27}/modal/builder/2024.10.txt +0 -0
  70. {modal-1.1.4.dev26 → modal-1.1.4.dev27}/modal/builder/2025.06.txt +0 -0
  71. {modal-1.1.4.dev26 → modal-1.1.4.dev27}/modal/builder/PREVIEW.txt +0 -0
  72. {modal-1.1.4.dev26 → modal-1.1.4.dev27}/modal/builder/README.md +0 -0
  73. {modal-1.1.4.dev26 → modal-1.1.4.dev27}/modal/builder/base-images.json +0 -0
  74. {modal-1.1.4.dev26 → modal-1.1.4.dev27}/modal/call_graph.py +0 -0
  75. {modal-1.1.4.dev26 → modal-1.1.4.dev27}/modal/cli/__init__.py +0 -0
  76. {modal-1.1.4.dev26 → modal-1.1.4.dev27}/modal/cli/_download.py +0 -0
  77. {modal-1.1.4.dev26 → modal-1.1.4.dev27}/modal/cli/_traceback.py +0 -0
  78. {modal-1.1.4.dev26 → modal-1.1.4.dev27}/modal/cli/app.py +0 -0
  79. {modal-1.1.4.dev26 → modal-1.1.4.dev27}/modal/cli/cluster.py +0 -0
  80. {modal-1.1.4.dev26 → modal-1.1.4.dev27}/modal/cli/config.py +0 -0
  81. {modal-1.1.4.dev26 → modal-1.1.4.dev27}/modal/cli/container.py +0 -0
  82. {modal-1.1.4.dev26 → modal-1.1.4.dev27}/modal/cli/dict.py +0 -0
  83. {modal-1.1.4.dev26 → modal-1.1.4.dev27}/modal/cli/entry_point.py +0 -0
  84. {modal-1.1.4.dev26 → modal-1.1.4.dev27}/modal/cli/environment.py +0 -0
  85. {modal-1.1.4.dev26 → modal-1.1.4.dev27}/modal/cli/import_refs.py +0 -0
  86. {modal-1.1.4.dev26 → modal-1.1.4.dev27}/modal/cli/launch.py +0 -0
  87. {modal-1.1.4.dev26 → modal-1.1.4.dev27}/modal/cli/network_file_system.py +0 -0
  88. {modal-1.1.4.dev26 → modal-1.1.4.dev27}/modal/cli/profile.py +0 -0
  89. {modal-1.1.4.dev26 → modal-1.1.4.dev27}/modal/cli/programs/__init__.py +0 -0
  90. {modal-1.1.4.dev26 → modal-1.1.4.dev27}/modal/cli/programs/launch_instance_ssh.py +0 -0
  91. {modal-1.1.4.dev26 → modal-1.1.4.dev27}/modal/cli/programs/run_jupyter.py +0 -0
  92. {modal-1.1.4.dev26 → modal-1.1.4.dev27}/modal/cli/programs/run_marimo.py +0 -0
  93. {modal-1.1.4.dev26 → modal-1.1.4.dev27}/modal/cli/programs/vscode.py +0 -0
  94. {modal-1.1.4.dev26 → modal-1.1.4.dev27}/modal/cli/queues.py +0 -0
  95. {modal-1.1.4.dev26 → modal-1.1.4.dev27}/modal/cli/run.py +0 -0
  96. {modal-1.1.4.dev26 → modal-1.1.4.dev27}/modal/cli/secret.py +0 -0
  97. {modal-1.1.4.dev26 → modal-1.1.4.dev27}/modal/cli/token.py +0 -0
  98. {modal-1.1.4.dev26 → modal-1.1.4.dev27}/modal/cli/utils.py +0 -0
  99. {modal-1.1.4.dev26 → modal-1.1.4.dev27}/modal/cli/volume.py +0 -0
  100. {modal-1.1.4.dev26 → modal-1.1.4.dev27}/modal/client.py +0 -0
  101. {modal-1.1.4.dev26 → modal-1.1.4.dev27}/modal/cloud_bucket_mount.py +0 -0
  102. {modal-1.1.4.dev26 → modal-1.1.4.dev27}/modal/cloud_bucket_mount.pyi +0 -0
  103. {modal-1.1.4.dev26 → modal-1.1.4.dev27}/modal/cls.py +0 -0
  104. {modal-1.1.4.dev26 → modal-1.1.4.dev27}/modal/cls.pyi +0 -0
  105. {modal-1.1.4.dev26 → modal-1.1.4.dev27}/modal/config.py +0 -0
  106. {modal-1.1.4.dev26 → modal-1.1.4.dev27}/modal/container_process.py +0 -0
  107. {modal-1.1.4.dev26 → modal-1.1.4.dev27}/modal/container_process.pyi +0 -0
  108. {modal-1.1.4.dev26 → modal-1.1.4.dev27}/modal/dict.py +0 -0
  109. {modal-1.1.4.dev26 → modal-1.1.4.dev27}/modal/dict.pyi +0 -0
  110. {modal-1.1.4.dev26 → modal-1.1.4.dev27}/modal/environments.py +0 -0
  111. {modal-1.1.4.dev26 → modal-1.1.4.dev27}/modal/environments.pyi +0 -0
  112. {modal-1.1.4.dev26 → modal-1.1.4.dev27}/modal/exception.py +0 -0
  113. {modal-1.1.4.dev26 → modal-1.1.4.dev27}/modal/experimental/__init__.py +0 -0
  114. {modal-1.1.4.dev26 → modal-1.1.4.dev27}/modal/experimental/flash.py +0 -0
  115. {modal-1.1.4.dev26 → modal-1.1.4.dev27}/modal/experimental/flash.pyi +0 -0
  116. {modal-1.1.4.dev26 → modal-1.1.4.dev27}/modal/experimental/ipython.py +0 -0
  117. {modal-1.1.4.dev26 → modal-1.1.4.dev27}/modal/file_io.py +0 -0
  118. {modal-1.1.4.dev26 → modal-1.1.4.dev27}/modal/file_io.pyi +0 -0
  119. {modal-1.1.4.dev26 → modal-1.1.4.dev27}/modal/file_pattern_matcher.py +0 -0
  120. {modal-1.1.4.dev26 → modal-1.1.4.dev27}/modal/functions.py +0 -0
  121. {modal-1.1.4.dev26 → modal-1.1.4.dev27}/modal/gpu.py +0 -0
  122. {modal-1.1.4.dev26 → modal-1.1.4.dev27}/modal/image.py +0 -0
  123. {modal-1.1.4.dev26 → modal-1.1.4.dev27}/modal/image.pyi +0 -0
  124. {modal-1.1.4.dev26 → modal-1.1.4.dev27}/modal/io_streams.py +0 -0
  125. {modal-1.1.4.dev26 → modal-1.1.4.dev27}/modal/io_streams.pyi +0 -0
  126. {modal-1.1.4.dev26 → modal-1.1.4.dev27}/modal/mount.py +0 -0
  127. {modal-1.1.4.dev26 → modal-1.1.4.dev27}/modal/mount.pyi +0 -0
  128. {modal-1.1.4.dev26 → modal-1.1.4.dev27}/modal/network_file_system.py +0 -0
  129. {modal-1.1.4.dev26 → modal-1.1.4.dev27}/modal/network_file_system.pyi +0 -0
  130. {modal-1.1.4.dev26 → modal-1.1.4.dev27}/modal/object.py +0 -0
  131. {modal-1.1.4.dev26 → modal-1.1.4.dev27}/modal/object.pyi +0 -0
  132. {modal-1.1.4.dev26 → modal-1.1.4.dev27}/modal/output.py +0 -0
  133. {modal-1.1.4.dev26 → modal-1.1.4.dev27}/modal/parallel_map.py +0 -0
  134. {modal-1.1.4.dev26 → modal-1.1.4.dev27}/modal/parallel_map.pyi +0 -0
  135. {modal-1.1.4.dev26 → modal-1.1.4.dev27}/modal/partial_function.py +0 -0
  136. {modal-1.1.4.dev26 → modal-1.1.4.dev27}/modal/partial_function.pyi +0 -0
  137. {modal-1.1.4.dev26 → modal-1.1.4.dev27}/modal/proxy.py +0 -0
  138. {modal-1.1.4.dev26 → modal-1.1.4.dev27}/modal/proxy.pyi +0 -0
  139. {modal-1.1.4.dev26 → modal-1.1.4.dev27}/modal/py.typed +0 -0
  140. {modal-1.1.4.dev26 → modal-1.1.4.dev27}/modal/queue.py +0 -0
  141. {modal-1.1.4.dev26 → modal-1.1.4.dev27}/modal/queue.pyi +0 -0
  142. {modal-1.1.4.dev26 → modal-1.1.4.dev27}/modal/retries.py +0 -0
  143. {modal-1.1.4.dev26 → modal-1.1.4.dev27}/modal/runner.py +0 -0
  144. {modal-1.1.4.dev26 → modal-1.1.4.dev27}/modal/runner.pyi +0 -0
  145. {modal-1.1.4.dev26 → modal-1.1.4.dev27}/modal/running_app.py +0 -0
  146. {modal-1.1.4.dev26 → modal-1.1.4.dev27}/modal/sandbox.py +0 -0
  147. {modal-1.1.4.dev26 → modal-1.1.4.dev27}/modal/sandbox.pyi +0 -0
  148. {modal-1.1.4.dev26 → modal-1.1.4.dev27}/modal/schedule.py +0 -0
  149. {modal-1.1.4.dev26 → modal-1.1.4.dev27}/modal/scheduler_placement.py +0 -0
  150. {modal-1.1.4.dev26 → modal-1.1.4.dev27}/modal/secret.py +0 -0
  151. {modal-1.1.4.dev26 → modal-1.1.4.dev27}/modal/secret.pyi +0 -0
  152. {modal-1.1.4.dev26 → modal-1.1.4.dev27}/modal/serving.py +0 -0
  153. {modal-1.1.4.dev26 → modal-1.1.4.dev27}/modal/serving.pyi +0 -0
  154. {modal-1.1.4.dev26 → modal-1.1.4.dev27}/modal/snapshot.py +0 -0
  155. {modal-1.1.4.dev26 → modal-1.1.4.dev27}/modal/snapshot.pyi +0 -0
  156. {modal-1.1.4.dev26 → modal-1.1.4.dev27}/modal/stream_type.py +0 -0
  157. {modal-1.1.4.dev26 → modal-1.1.4.dev27}/modal/token_flow.py +0 -0
  158. {modal-1.1.4.dev26 → modal-1.1.4.dev27}/modal/token_flow.pyi +0 -0
  159. {modal-1.1.4.dev26 → modal-1.1.4.dev27}/modal/volume.py +0 -0
  160. {modal-1.1.4.dev26 → modal-1.1.4.dev27}/modal/volume.pyi +0 -0
  161. {modal-1.1.4.dev26 → modal-1.1.4.dev27}/modal.egg-info/SOURCES.txt +0 -0
  162. {modal-1.1.4.dev26 → modal-1.1.4.dev27}/modal.egg-info/dependency_links.txt +0 -0
  163. {modal-1.1.4.dev26 → modal-1.1.4.dev27}/modal.egg-info/entry_points.txt +0 -0
  164. {modal-1.1.4.dev26 → modal-1.1.4.dev27}/modal.egg-info/requires.txt +0 -0
  165. {modal-1.1.4.dev26 → modal-1.1.4.dev27}/modal.egg-info/top_level.txt +0 -0
  166. {modal-1.1.4.dev26 → modal-1.1.4.dev27}/modal_docs/__init__.py +0 -0
  167. {modal-1.1.4.dev26 → modal-1.1.4.dev27}/modal_docs/gen_cli_docs.py +0 -0
  168. {modal-1.1.4.dev26 → modal-1.1.4.dev27}/modal_docs/gen_reference_docs.py +0 -0
  169. {modal-1.1.4.dev26 → modal-1.1.4.dev27}/modal_docs/mdmd/__init__.py +0 -0
  170. {modal-1.1.4.dev26 → modal-1.1.4.dev27}/modal_docs/mdmd/mdmd.py +0 -0
  171. {modal-1.1.4.dev26 → modal-1.1.4.dev27}/modal_docs/mdmd/signatures.py +0 -0
  172. {modal-1.1.4.dev26 → modal-1.1.4.dev27}/modal_proto/__init__.py +0 -0
  173. {modal-1.1.4.dev26 → modal-1.1.4.dev27}/modal_proto/api.proto +0 -0
  174. {modal-1.1.4.dev26 → modal-1.1.4.dev27}/modal_proto/api_grpc.py +0 -0
  175. {modal-1.1.4.dev26 → modal-1.1.4.dev27}/modal_proto/api_pb2.py +0 -0
  176. {modal-1.1.4.dev26 → modal-1.1.4.dev27}/modal_proto/api_pb2.pyi +0 -0
  177. {modal-1.1.4.dev26 → modal-1.1.4.dev27}/modal_proto/api_pb2_grpc.py +0 -0
  178. {modal-1.1.4.dev26 → modal-1.1.4.dev27}/modal_proto/api_pb2_grpc.pyi +0 -0
  179. {modal-1.1.4.dev26 → modal-1.1.4.dev27}/modal_proto/modal_api_grpc.py +0 -0
  180. {modal-1.1.4.dev26 → modal-1.1.4.dev27}/modal_proto/modal_options_grpc.py +0 -0
  181. {modal-1.1.4.dev26 → modal-1.1.4.dev27}/modal_proto/options.proto +0 -0
  182. {modal-1.1.4.dev26 → modal-1.1.4.dev27}/modal_proto/options_grpc.py +0 -0
  183. {modal-1.1.4.dev26 → modal-1.1.4.dev27}/modal_proto/options_pb2.py +0 -0
  184. {modal-1.1.4.dev26 → modal-1.1.4.dev27}/modal_proto/options_pb2.pyi +0 -0
  185. {modal-1.1.4.dev26 → modal-1.1.4.dev27}/modal_proto/options_pb2_grpc.py +0 -0
  186. {modal-1.1.4.dev26 → modal-1.1.4.dev27}/modal_proto/options_pb2_grpc.pyi +0 -0
  187. {modal-1.1.4.dev26 → modal-1.1.4.dev27}/modal_proto/py.typed +0 -0
  188. {modal-1.1.4.dev26 → modal-1.1.4.dev27}/modal_version/__main__.py +0 -0
  189. {modal-1.1.4.dev26 → modal-1.1.4.dev27}/pyproject.toml +0 -0
  190. {modal-1.1.4.dev26 → modal-1.1.4.dev27}/setup.cfg +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: modal
3
- Version: 1.1.4.dev26
3
+ Version: 1.1.4.dev27
4
4
  Summary: Python client library for Modal
5
5
  Author-email: Modal Labs <support@modal.com>
6
6
  License: Apache-2.0
@@ -674,6 +674,7 @@ class _Function(typing.Generic[P, ReturnType, OriginalReturnType], _Object, type
674
674
  proxy: Optional[_Proxy] = None,
675
675
  retries: Optional[Union[int, Retries]] = None,
676
676
  timeout: int = 300,
677
+ startup_timeout: Optional[int] = None,
677
678
  min_containers: Optional[int] = None,
678
679
  max_containers: Optional[int] = None,
679
680
  buffer_containers: Optional[int] = None,
@@ -966,6 +967,7 @@ class _Function(typing.Generic[P, ReturnType, OriginalReturnType], _Object, type
966
967
  proxy_id=(proxy.object_id if proxy else None),
967
968
  retry_policy=retry_policy,
968
969
  timeout_secs=timeout_secs or 0,
970
+ startup_timeout_secs=startup_timeout or timeout_secs,
969
971
  pty_info=pty_info,
970
972
  cloud_provider_str=cloud if cloud else "",
971
973
  runtime=config.get("function_runtime"),
@@ -1019,6 +1021,7 @@ class _Function(typing.Generic[P, ReturnType, OriginalReturnType], _Object, type
1019
1021
  autoscaler_settings=function_definition.autoscaler_settings,
1020
1022
  worker_id=function_definition.worker_id,
1021
1023
  timeout_secs=function_definition.timeout_secs,
1024
+ startup_timeout_secs=function_definition.startup_timeout_secs,
1022
1025
  web_url=function_definition.web_url,
1023
1026
  web_url_info=function_definition.web_url_info,
1024
1027
  webhook_config=function_definition.webhook_config,
@@ -641,7 +641,8 @@ class _App:
641
641
  scaledown_window: Optional[int] = None, # Max time (in seconds) a container can remain idle while scaling down.
642
642
  proxy: Optional[_Proxy] = None, # Reference to a Modal Proxy to use in front of this function.
643
643
  retries: Optional[Union[int, Retries]] = None, # Number of times to retry each input in case of failure.
644
- timeout: int = 300, # Maximum execution time in seconds.
644
+ timeout: int = 300, # Maximum execution time for inputs and startup time in seconds.
645
+ startup_timeout: Optional[int] = None, # Maximum startup time in seconds with higher precedence than `timeout`.
645
646
  name: Optional[str] = None, # Sets the Modal name of the function within the app
646
647
  is_generator: Optional[
647
648
  bool
@@ -816,6 +817,7 @@ class _App:
816
817
  batch_max_size=batch_max_size,
817
818
  batch_wait_ms=batch_wait_ms,
818
819
  timeout=timeout,
820
+ startup_timeout=startup_timeout or timeout,
819
821
  cloud=cloud,
820
822
  webhook_config=webhook_config,
821
823
  enable_memory_snapshot=enable_memory_snapshot,
@@ -869,7 +871,8 @@ class _App:
869
871
  scaledown_window: Optional[int] = None, # Max time (in seconds) a container can remain idle while scaling down.
870
872
  proxy: Optional[_Proxy] = None, # Reference to a Modal Proxy to use in front of this function.
871
873
  retries: Optional[Union[int, Retries]] = None, # Number of times to retry each input in case of failure.
872
- timeout: int = 300, # Maximum execution time in seconds; applies independently to startup and each input.
874
+ timeout: int = 300, # Maximum execution time for inputs and startup time in seconds.
875
+ startup_timeout: Optional[int] = None, # Maximum startup time in seconds with higher precedence than `timeout`.
873
876
  cloud: Optional[str] = None, # Cloud provider to run the function on. Possible values are aws, gcp, oci, auto.
874
877
  region: Optional[Union[str, Sequence[str]]] = None, # Region or regions to run the function on.
875
878
  enable_memory_snapshot: bool = False, # Enable memory checkpointing for faster cold starts.
@@ -1002,6 +1005,7 @@ class _App:
1002
1005
  batch_max_size=batch_max_size,
1003
1006
  batch_wait_ms=batch_wait_ms,
1004
1007
  timeout=timeout,
1008
+ startup_timeout=startup_timeout or timeout,
1005
1009
  cloud=cloud,
1006
1010
  enable_memory_snapshot=enable_memory_snapshot,
1007
1011
  block_network=block_network,
@@ -411,6 +411,7 @@ class _App:
411
411
  proxy: typing.Optional[modal.proxy._Proxy] = None,
412
412
  retries: typing.Union[int, modal.retries.Retries, None] = None,
413
413
  timeout: int = 300,
414
+ startup_timeout: typing.Optional[int] = None,
414
415
  name: typing.Optional[str] = None,
415
416
  is_generator: typing.Optional[bool] = None,
416
417
  cloud: typing.Optional[str] = None,
@@ -464,6 +465,7 @@ class _App:
464
465
  proxy: typing.Optional[modal.proxy._Proxy] = None,
465
466
  retries: typing.Union[int, modal.retries.Retries, None] = None,
466
467
  timeout: int = 300,
468
+ startup_timeout: typing.Optional[int] = None,
467
469
  cloud: typing.Optional[str] = None,
468
470
  region: typing.Union[str, collections.abc.Sequence[str], None] = None,
469
471
  enable_memory_snapshot: bool = False,
@@ -1014,6 +1016,7 @@ class App:
1014
1016
  proxy: typing.Optional[modal.proxy.Proxy] = None,
1015
1017
  retries: typing.Union[int, modal.retries.Retries, None] = None,
1016
1018
  timeout: int = 300,
1019
+ startup_timeout: typing.Optional[int] = None,
1017
1020
  name: typing.Optional[str] = None,
1018
1021
  is_generator: typing.Optional[bool] = None,
1019
1022
  cloud: typing.Optional[str] = None,
@@ -1067,6 +1070,7 @@ class App:
1067
1070
  proxy: typing.Optional[modal.proxy.Proxy] = None,
1068
1071
  retries: typing.Union[int, modal.retries.Retries, None] = None,
1069
1072
  timeout: int = 300,
1073
+ startup_timeout: typing.Optional[int] = None,
1070
1074
  cloud: typing.Optional[str] = None,
1071
1075
  region: typing.Union[str, collections.abc.Sequence[str], None] = None,
1072
1076
  enable_memory_snapshot: bool = False,
@@ -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.dev26",
36
+ version: str = "1.1.4.dev27",
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.dev26",
167
+ version: str = "1.1.4.dev27",
168
168
  ):
169
169
  """mdmd:hidden
170
170
  The Modal client object is not intended to be instantiated directly by users.
@@ -85,6 +85,7 @@ class Function(
85
85
  proxy: typing.Optional[modal.proxy.Proxy] = None,
86
86
  retries: typing.Union[int, modal.retries.Retries, None] = None,
87
87
  timeout: int = 300,
88
+ startup_timeout: typing.Optional[int] = None,
88
89
  min_containers: typing.Optional[int] = None,
89
90
  max_containers: typing.Optional[int] = None,
90
91
  buffer_containers: typing.Optional[int] = None,
@@ -444,7 +445,7 @@ class Function(
444
445
 
445
446
  _call_generator: ___call_generator_spec[typing_extensions.Self]
446
447
 
447
- class __remote_spec(typing_extensions.Protocol[P_INNER, ReturnType_INNER, SUPERSELF]):
448
+ class __remote_spec(typing_extensions.Protocol[ReturnType_INNER, P_INNER, SUPERSELF]):
448
449
  def __call__(self, /, *args: P_INNER.args, **kwargs: P_INNER.kwargs) -> ReturnType_INNER:
449
450
  """Calls the function remotely, executing it with the given arguments and returning the execution's result."""
450
451
  ...
@@ -453,7 +454,7 @@ class Function(
453
454
  """Calls the function remotely, executing it with the given arguments and returning the execution's result."""
454
455
  ...
455
456
 
456
- remote: __remote_spec[modal._functions.P, modal._functions.ReturnType, typing_extensions.Self]
457
+ remote: __remote_spec[modal._functions.ReturnType, modal._functions.P, typing_extensions.Self]
457
458
 
458
459
  class __remote_gen_spec(typing_extensions.Protocol[SUPERSELF]):
459
460
  def __call__(self, /, *args, **kwargs) -> typing.Generator[typing.Any, None, None]:
@@ -480,7 +481,7 @@ class Function(
480
481
  """
481
482
  ...
482
483
 
483
- class ___experimental_spawn_spec(typing_extensions.Protocol[P_INNER, ReturnType_INNER, SUPERSELF]):
484
+ class ___experimental_spawn_spec(typing_extensions.Protocol[ReturnType_INNER, P_INNER, SUPERSELF]):
484
485
  def __call__(self, /, *args: P_INNER.args, **kwargs: P_INNER.kwargs) -> FunctionCall[ReturnType_INNER]:
485
486
  """[Experimental] Calls the function with the given arguments, without waiting for the results.
486
487
 
@@ -504,7 +505,7 @@ class Function(
504
505
  ...
505
506
 
506
507
  _experimental_spawn: ___experimental_spawn_spec[
507
- modal._functions.P, modal._functions.ReturnType, typing_extensions.Self
508
+ modal._functions.ReturnType, modal._functions.P, typing_extensions.Self
508
509
  ]
509
510
 
510
511
  class ___spawn_map_inner_spec(typing_extensions.Protocol[P_INNER, SUPERSELF]):
@@ -513,7 +514,7 @@ class Function(
513
514
 
514
515
  _spawn_map_inner: ___spawn_map_inner_spec[modal._functions.P, typing_extensions.Self]
515
516
 
516
- class __spawn_spec(typing_extensions.Protocol[P_INNER, ReturnType_INNER, SUPERSELF]):
517
+ class __spawn_spec(typing_extensions.Protocol[ReturnType_INNER, P_INNER, SUPERSELF]):
517
518
  def __call__(self, /, *args: P_INNER.args, **kwargs: P_INNER.kwargs) -> FunctionCall[ReturnType_INNER]:
518
519
  """Calls the function with the given arguments, without waiting for the results.
519
520
 
@@ -534,7 +535,7 @@ class Function(
534
535
  """
535
536
  ...
536
537
 
537
- spawn: __spawn_spec[modal._functions.P, modal._functions.ReturnType, typing_extensions.Self]
538
+ spawn: __spawn_spec[modal._functions.ReturnType, modal._functions.P, typing_extensions.Self]
538
539
 
539
540
  def get_raw_f(self) -> collections.abc.Callable[..., typing.Any]:
540
541
  """Return the inner Python object wrapped by this Modal Function."""
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: modal
3
- Version: 1.1.4.dev26
3
+ Version: 1.1.4.dev27
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.dev26"
4
+ __version__ = "1.1.4.dev27"
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