modal 1.1.4.dev14__tar.gz → 1.1.4.dev16__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.dev14 → modal-1.1.4.dev16}/PKG-INFO +1 -1
  2. {modal-1.1.4.dev14 → modal-1.1.4.dev16}/modal/client.pyi +2 -2
  3. {modal-1.1.4.dev14 → modal-1.1.4.dev16}/modal/experimental/flash.py +5 -2
  4. {modal-1.1.4.dev14 → modal-1.1.4.dev16}/modal/functions.pyi +6 -6
  5. {modal-1.1.4.dev14 → modal-1.1.4.dev16}/modal.egg-info/PKG-INFO +1 -1
  6. {modal-1.1.4.dev14 → modal-1.1.4.dev16}/modal_proto/api.proto +1 -0
  7. {modal-1.1.4.dev14 → modal-1.1.4.dev16}/modal_proto/api_pb2.py +546 -546
  8. {modal-1.1.4.dev14 → modal-1.1.4.dev16}/modal_proto/api_pb2.pyi +6 -1
  9. {modal-1.1.4.dev14 → modal-1.1.4.dev16}/modal_version/__init__.py +1 -1
  10. {modal-1.1.4.dev14 → modal-1.1.4.dev16}/LICENSE +0 -0
  11. {modal-1.1.4.dev14 → modal-1.1.4.dev16}/README.md +0 -0
  12. {modal-1.1.4.dev14 → modal-1.1.4.dev16}/modal/__init__.py +0 -0
  13. {modal-1.1.4.dev14 → modal-1.1.4.dev16}/modal/__main__.py +0 -0
  14. {modal-1.1.4.dev14 → modal-1.1.4.dev16}/modal/_clustered_functions.py +0 -0
  15. {modal-1.1.4.dev14 → modal-1.1.4.dev16}/modal/_clustered_functions.pyi +0 -0
  16. {modal-1.1.4.dev14 → modal-1.1.4.dev16}/modal/_container_entrypoint.py +0 -0
  17. {modal-1.1.4.dev14 → modal-1.1.4.dev16}/modal/_functions.py +0 -0
  18. {modal-1.1.4.dev14 → modal-1.1.4.dev16}/modal/_ipython.py +0 -0
  19. {modal-1.1.4.dev14 → modal-1.1.4.dev16}/modal/_location.py +0 -0
  20. {modal-1.1.4.dev14 → modal-1.1.4.dev16}/modal/_object.py +0 -0
  21. {modal-1.1.4.dev14 → modal-1.1.4.dev16}/modal/_output.py +0 -0
  22. {modal-1.1.4.dev14 → modal-1.1.4.dev16}/modal/_partial_function.py +0 -0
  23. {modal-1.1.4.dev14 → modal-1.1.4.dev16}/modal/_pty.py +0 -0
  24. {modal-1.1.4.dev14 → modal-1.1.4.dev16}/modal/_resolver.py +0 -0
  25. {modal-1.1.4.dev14 → modal-1.1.4.dev16}/modal/_resources.py +0 -0
  26. {modal-1.1.4.dev14 → modal-1.1.4.dev16}/modal/_runtime/__init__.py +0 -0
  27. {modal-1.1.4.dev14 → modal-1.1.4.dev16}/modal/_runtime/asgi.py +0 -0
  28. {modal-1.1.4.dev14 → modal-1.1.4.dev16}/modal/_runtime/container_io_manager.py +0 -0
  29. {modal-1.1.4.dev14 → modal-1.1.4.dev16}/modal/_runtime/container_io_manager.pyi +0 -0
  30. {modal-1.1.4.dev14 → modal-1.1.4.dev16}/modal/_runtime/execution_context.py +0 -0
  31. {modal-1.1.4.dev14 → modal-1.1.4.dev16}/modal/_runtime/execution_context.pyi +0 -0
  32. {modal-1.1.4.dev14 → modal-1.1.4.dev16}/modal/_runtime/gpu_memory_snapshot.py +0 -0
  33. {modal-1.1.4.dev14 → modal-1.1.4.dev16}/modal/_runtime/telemetry.py +0 -0
  34. {modal-1.1.4.dev14 → modal-1.1.4.dev16}/modal/_runtime/user_code_imports.py +0 -0
  35. {modal-1.1.4.dev14 → modal-1.1.4.dev16}/modal/_serialization.py +0 -0
  36. {modal-1.1.4.dev14 → modal-1.1.4.dev16}/modal/_traceback.py +0 -0
  37. {modal-1.1.4.dev14 → modal-1.1.4.dev16}/modal/_tunnel.py +0 -0
  38. {modal-1.1.4.dev14 → modal-1.1.4.dev16}/modal/_tunnel.pyi +0 -0
  39. {modal-1.1.4.dev14 → modal-1.1.4.dev16}/modal/_type_manager.py +0 -0
  40. {modal-1.1.4.dev14 → modal-1.1.4.dev16}/modal/_utils/__init__.py +0 -0
  41. {modal-1.1.4.dev14 → modal-1.1.4.dev16}/modal/_utils/app_utils.py +0 -0
  42. {modal-1.1.4.dev14 → modal-1.1.4.dev16}/modal/_utils/async_utils.py +0 -0
  43. {modal-1.1.4.dev14 → modal-1.1.4.dev16}/modal/_utils/auth_token_manager.py +0 -0
  44. {modal-1.1.4.dev14 → modal-1.1.4.dev16}/modal/_utils/blob_utils.py +0 -0
  45. {modal-1.1.4.dev14 → modal-1.1.4.dev16}/modal/_utils/bytes_io_segment_payload.py +0 -0
  46. {modal-1.1.4.dev14 → modal-1.1.4.dev16}/modal/_utils/deprecation.py +0 -0
  47. {modal-1.1.4.dev14 → modal-1.1.4.dev16}/modal/_utils/docker_utils.py +0 -0
  48. {modal-1.1.4.dev14 → modal-1.1.4.dev16}/modal/_utils/function_utils.py +0 -0
  49. {modal-1.1.4.dev14 → modal-1.1.4.dev16}/modal/_utils/git_utils.py +0 -0
  50. {modal-1.1.4.dev14 → modal-1.1.4.dev16}/modal/_utils/grpc_testing.py +0 -0
  51. {modal-1.1.4.dev14 → modal-1.1.4.dev16}/modal/_utils/grpc_utils.py +0 -0
  52. {modal-1.1.4.dev14 → modal-1.1.4.dev16}/modal/_utils/hash_utils.py +0 -0
  53. {modal-1.1.4.dev14 → modal-1.1.4.dev16}/modal/_utils/http_utils.py +0 -0
  54. {modal-1.1.4.dev14 → modal-1.1.4.dev16}/modal/_utils/jwt_utils.py +0 -0
  55. {modal-1.1.4.dev14 → modal-1.1.4.dev16}/modal/_utils/logger.py +0 -0
  56. {modal-1.1.4.dev14 → modal-1.1.4.dev16}/modal/_utils/mount_utils.py +0 -0
  57. {modal-1.1.4.dev14 → modal-1.1.4.dev16}/modal/_utils/name_utils.py +0 -0
  58. {modal-1.1.4.dev14 → modal-1.1.4.dev16}/modal/_utils/package_utils.py +0 -0
  59. {modal-1.1.4.dev14 → modal-1.1.4.dev16}/modal/_utils/pattern_utils.py +0 -0
  60. {modal-1.1.4.dev14 → modal-1.1.4.dev16}/modal/_utils/rand_pb_testing.py +0 -0
  61. {modal-1.1.4.dev14 → modal-1.1.4.dev16}/modal/_utils/shell_utils.py +0 -0
  62. {modal-1.1.4.dev14 → modal-1.1.4.dev16}/modal/_utils/time_utils.py +0 -0
  63. {modal-1.1.4.dev14 → modal-1.1.4.dev16}/modal/_vendor/__init__.py +0 -0
  64. {modal-1.1.4.dev14 → modal-1.1.4.dev16}/modal/_vendor/a2wsgi_wsgi.py +0 -0
  65. {modal-1.1.4.dev14 → modal-1.1.4.dev16}/modal/_vendor/cloudpickle.py +0 -0
  66. {modal-1.1.4.dev14 → modal-1.1.4.dev16}/modal/_vendor/tblib.py +0 -0
  67. {modal-1.1.4.dev14 → modal-1.1.4.dev16}/modal/_watcher.py +0 -0
  68. {modal-1.1.4.dev14 → modal-1.1.4.dev16}/modal/app.py +0 -0
  69. {modal-1.1.4.dev14 → modal-1.1.4.dev16}/modal/app.pyi +0 -0
  70. {modal-1.1.4.dev14 → modal-1.1.4.dev16}/modal/builder/2023.12.312.txt +0 -0
  71. {modal-1.1.4.dev14 → modal-1.1.4.dev16}/modal/builder/2023.12.txt +0 -0
  72. {modal-1.1.4.dev14 → modal-1.1.4.dev16}/modal/builder/2024.04.txt +0 -0
  73. {modal-1.1.4.dev14 → modal-1.1.4.dev16}/modal/builder/2024.10.txt +0 -0
  74. {modal-1.1.4.dev14 → modal-1.1.4.dev16}/modal/builder/2025.06.txt +0 -0
  75. {modal-1.1.4.dev14 → modal-1.1.4.dev16}/modal/builder/PREVIEW.txt +0 -0
  76. {modal-1.1.4.dev14 → modal-1.1.4.dev16}/modal/builder/README.md +0 -0
  77. {modal-1.1.4.dev14 → modal-1.1.4.dev16}/modal/builder/base-images.json +0 -0
  78. {modal-1.1.4.dev14 → modal-1.1.4.dev16}/modal/call_graph.py +0 -0
  79. {modal-1.1.4.dev14 → modal-1.1.4.dev16}/modal/cli/__init__.py +0 -0
  80. {modal-1.1.4.dev14 → modal-1.1.4.dev16}/modal/cli/_download.py +0 -0
  81. {modal-1.1.4.dev14 → modal-1.1.4.dev16}/modal/cli/_traceback.py +0 -0
  82. {modal-1.1.4.dev14 → modal-1.1.4.dev16}/modal/cli/app.py +0 -0
  83. {modal-1.1.4.dev14 → modal-1.1.4.dev16}/modal/cli/cluster.py +0 -0
  84. {modal-1.1.4.dev14 → modal-1.1.4.dev16}/modal/cli/config.py +0 -0
  85. {modal-1.1.4.dev14 → modal-1.1.4.dev16}/modal/cli/container.py +0 -0
  86. {modal-1.1.4.dev14 → modal-1.1.4.dev16}/modal/cli/dict.py +0 -0
  87. {modal-1.1.4.dev14 → modal-1.1.4.dev16}/modal/cli/entry_point.py +0 -0
  88. {modal-1.1.4.dev14 → modal-1.1.4.dev16}/modal/cli/environment.py +0 -0
  89. {modal-1.1.4.dev14 → modal-1.1.4.dev16}/modal/cli/import_refs.py +0 -0
  90. {modal-1.1.4.dev14 → modal-1.1.4.dev16}/modal/cli/launch.py +0 -0
  91. {modal-1.1.4.dev14 → modal-1.1.4.dev16}/modal/cli/network_file_system.py +0 -0
  92. {modal-1.1.4.dev14 → modal-1.1.4.dev16}/modal/cli/profile.py +0 -0
  93. {modal-1.1.4.dev14 → modal-1.1.4.dev16}/modal/cli/programs/__init__.py +0 -0
  94. {modal-1.1.4.dev14 → modal-1.1.4.dev16}/modal/cli/programs/launch_instance_ssh.py +0 -0
  95. {modal-1.1.4.dev14 → modal-1.1.4.dev16}/modal/cli/programs/run_jupyter.py +0 -0
  96. {modal-1.1.4.dev14 → modal-1.1.4.dev16}/modal/cli/programs/run_marimo.py +0 -0
  97. {modal-1.1.4.dev14 → modal-1.1.4.dev16}/modal/cli/programs/vscode.py +0 -0
  98. {modal-1.1.4.dev14 → modal-1.1.4.dev16}/modal/cli/queues.py +0 -0
  99. {modal-1.1.4.dev14 → modal-1.1.4.dev16}/modal/cli/run.py +0 -0
  100. {modal-1.1.4.dev14 → modal-1.1.4.dev16}/modal/cli/secret.py +0 -0
  101. {modal-1.1.4.dev14 → modal-1.1.4.dev16}/modal/cli/token.py +0 -0
  102. {modal-1.1.4.dev14 → modal-1.1.4.dev16}/modal/cli/utils.py +0 -0
  103. {modal-1.1.4.dev14 → modal-1.1.4.dev16}/modal/cli/volume.py +0 -0
  104. {modal-1.1.4.dev14 → modal-1.1.4.dev16}/modal/client.py +0 -0
  105. {modal-1.1.4.dev14 → modal-1.1.4.dev16}/modal/cloud_bucket_mount.py +0 -0
  106. {modal-1.1.4.dev14 → modal-1.1.4.dev16}/modal/cloud_bucket_mount.pyi +0 -0
  107. {modal-1.1.4.dev14 → modal-1.1.4.dev16}/modal/cls.py +0 -0
  108. {modal-1.1.4.dev14 → modal-1.1.4.dev16}/modal/cls.pyi +0 -0
  109. {modal-1.1.4.dev14 → modal-1.1.4.dev16}/modal/config.py +0 -0
  110. {modal-1.1.4.dev14 → modal-1.1.4.dev16}/modal/container_process.py +0 -0
  111. {modal-1.1.4.dev14 → modal-1.1.4.dev16}/modal/container_process.pyi +0 -0
  112. {modal-1.1.4.dev14 → modal-1.1.4.dev16}/modal/dict.py +0 -0
  113. {modal-1.1.4.dev14 → modal-1.1.4.dev16}/modal/dict.pyi +0 -0
  114. {modal-1.1.4.dev14 → modal-1.1.4.dev16}/modal/environments.py +0 -0
  115. {modal-1.1.4.dev14 → modal-1.1.4.dev16}/modal/environments.pyi +0 -0
  116. {modal-1.1.4.dev14 → modal-1.1.4.dev16}/modal/exception.py +0 -0
  117. {modal-1.1.4.dev14 → modal-1.1.4.dev16}/modal/experimental/__init__.py +0 -0
  118. {modal-1.1.4.dev14 → modal-1.1.4.dev16}/modal/experimental/flash.pyi +0 -0
  119. {modal-1.1.4.dev14 → modal-1.1.4.dev16}/modal/experimental/ipython.py +0 -0
  120. {modal-1.1.4.dev14 → modal-1.1.4.dev16}/modal/file_io.py +0 -0
  121. {modal-1.1.4.dev14 → modal-1.1.4.dev16}/modal/file_io.pyi +0 -0
  122. {modal-1.1.4.dev14 → modal-1.1.4.dev16}/modal/file_pattern_matcher.py +0 -0
  123. {modal-1.1.4.dev14 → modal-1.1.4.dev16}/modal/functions.py +0 -0
  124. {modal-1.1.4.dev14 → modal-1.1.4.dev16}/modal/gpu.py +0 -0
  125. {modal-1.1.4.dev14 → modal-1.1.4.dev16}/modal/image.py +0 -0
  126. {modal-1.1.4.dev14 → modal-1.1.4.dev16}/modal/image.pyi +0 -0
  127. {modal-1.1.4.dev14 → modal-1.1.4.dev16}/modal/io_streams.py +0 -0
  128. {modal-1.1.4.dev14 → modal-1.1.4.dev16}/modal/io_streams.pyi +0 -0
  129. {modal-1.1.4.dev14 → modal-1.1.4.dev16}/modal/mount.py +0 -0
  130. {modal-1.1.4.dev14 → modal-1.1.4.dev16}/modal/mount.pyi +0 -0
  131. {modal-1.1.4.dev14 → modal-1.1.4.dev16}/modal/network_file_system.py +0 -0
  132. {modal-1.1.4.dev14 → modal-1.1.4.dev16}/modal/network_file_system.pyi +0 -0
  133. {modal-1.1.4.dev14 → modal-1.1.4.dev16}/modal/object.py +0 -0
  134. {modal-1.1.4.dev14 → modal-1.1.4.dev16}/modal/object.pyi +0 -0
  135. {modal-1.1.4.dev14 → modal-1.1.4.dev16}/modal/output.py +0 -0
  136. {modal-1.1.4.dev14 → modal-1.1.4.dev16}/modal/parallel_map.py +0 -0
  137. {modal-1.1.4.dev14 → modal-1.1.4.dev16}/modal/parallel_map.pyi +0 -0
  138. {modal-1.1.4.dev14 → modal-1.1.4.dev16}/modal/partial_function.py +0 -0
  139. {modal-1.1.4.dev14 → modal-1.1.4.dev16}/modal/partial_function.pyi +0 -0
  140. {modal-1.1.4.dev14 → modal-1.1.4.dev16}/modal/proxy.py +0 -0
  141. {modal-1.1.4.dev14 → modal-1.1.4.dev16}/modal/proxy.pyi +0 -0
  142. {modal-1.1.4.dev14 → modal-1.1.4.dev16}/modal/py.typed +0 -0
  143. {modal-1.1.4.dev14 → modal-1.1.4.dev16}/modal/queue.py +0 -0
  144. {modal-1.1.4.dev14 → modal-1.1.4.dev16}/modal/queue.pyi +0 -0
  145. {modal-1.1.4.dev14 → modal-1.1.4.dev16}/modal/retries.py +0 -0
  146. {modal-1.1.4.dev14 → modal-1.1.4.dev16}/modal/runner.py +0 -0
  147. {modal-1.1.4.dev14 → modal-1.1.4.dev16}/modal/runner.pyi +0 -0
  148. {modal-1.1.4.dev14 → modal-1.1.4.dev16}/modal/running_app.py +0 -0
  149. {modal-1.1.4.dev14 → modal-1.1.4.dev16}/modal/sandbox.py +0 -0
  150. {modal-1.1.4.dev14 → modal-1.1.4.dev16}/modal/sandbox.pyi +0 -0
  151. {modal-1.1.4.dev14 → modal-1.1.4.dev16}/modal/schedule.py +0 -0
  152. {modal-1.1.4.dev14 → modal-1.1.4.dev16}/modal/scheduler_placement.py +0 -0
  153. {modal-1.1.4.dev14 → modal-1.1.4.dev16}/modal/secret.py +0 -0
  154. {modal-1.1.4.dev14 → modal-1.1.4.dev16}/modal/secret.pyi +0 -0
  155. {modal-1.1.4.dev14 → modal-1.1.4.dev16}/modal/serving.py +0 -0
  156. {modal-1.1.4.dev14 → modal-1.1.4.dev16}/modal/serving.pyi +0 -0
  157. {modal-1.1.4.dev14 → modal-1.1.4.dev16}/modal/snapshot.py +0 -0
  158. {modal-1.1.4.dev14 → modal-1.1.4.dev16}/modal/snapshot.pyi +0 -0
  159. {modal-1.1.4.dev14 → modal-1.1.4.dev16}/modal/stream_type.py +0 -0
  160. {modal-1.1.4.dev14 → modal-1.1.4.dev16}/modal/token_flow.py +0 -0
  161. {modal-1.1.4.dev14 → modal-1.1.4.dev16}/modal/token_flow.pyi +0 -0
  162. {modal-1.1.4.dev14 → modal-1.1.4.dev16}/modal/volume.py +0 -0
  163. {modal-1.1.4.dev14 → modal-1.1.4.dev16}/modal/volume.pyi +0 -0
  164. {modal-1.1.4.dev14 → modal-1.1.4.dev16}/modal.egg-info/SOURCES.txt +0 -0
  165. {modal-1.1.4.dev14 → modal-1.1.4.dev16}/modal.egg-info/dependency_links.txt +0 -0
  166. {modal-1.1.4.dev14 → modal-1.1.4.dev16}/modal.egg-info/entry_points.txt +0 -0
  167. {modal-1.1.4.dev14 → modal-1.1.4.dev16}/modal.egg-info/requires.txt +0 -0
  168. {modal-1.1.4.dev14 → modal-1.1.4.dev16}/modal.egg-info/top_level.txt +0 -0
  169. {modal-1.1.4.dev14 → modal-1.1.4.dev16}/modal_docs/__init__.py +0 -0
  170. {modal-1.1.4.dev14 → modal-1.1.4.dev16}/modal_docs/gen_cli_docs.py +0 -0
  171. {modal-1.1.4.dev14 → modal-1.1.4.dev16}/modal_docs/gen_reference_docs.py +0 -0
  172. {modal-1.1.4.dev14 → modal-1.1.4.dev16}/modal_docs/mdmd/__init__.py +0 -0
  173. {modal-1.1.4.dev14 → modal-1.1.4.dev16}/modal_docs/mdmd/mdmd.py +0 -0
  174. {modal-1.1.4.dev14 → modal-1.1.4.dev16}/modal_docs/mdmd/signatures.py +0 -0
  175. {modal-1.1.4.dev14 → modal-1.1.4.dev16}/modal_proto/__init__.py +0 -0
  176. {modal-1.1.4.dev14 → modal-1.1.4.dev16}/modal_proto/api_grpc.py +0 -0
  177. {modal-1.1.4.dev14 → modal-1.1.4.dev16}/modal_proto/api_pb2_grpc.py +0 -0
  178. {modal-1.1.4.dev14 → modal-1.1.4.dev16}/modal_proto/api_pb2_grpc.pyi +0 -0
  179. {modal-1.1.4.dev14 → modal-1.1.4.dev16}/modal_proto/modal_api_grpc.py +0 -0
  180. {modal-1.1.4.dev14 → modal-1.1.4.dev16}/modal_proto/modal_options_grpc.py +0 -0
  181. {modal-1.1.4.dev14 → modal-1.1.4.dev16}/modal_proto/options.proto +0 -0
  182. {modal-1.1.4.dev14 → modal-1.1.4.dev16}/modal_proto/options_grpc.py +0 -0
  183. {modal-1.1.4.dev14 → modal-1.1.4.dev16}/modal_proto/options_pb2.py +0 -0
  184. {modal-1.1.4.dev14 → modal-1.1.4.dev16}/modal_proto/options_pb2.pyi +0 -0
  185. {modal-1.1.4.dev14 → modal-1.1.4.dev16}/modal_proto/options_pb2_grpc.py +0 -0
  186. {modal-1.1.4.dev14 → modal-1.1.4.dev16}/modal_proto/options_pb2_grpc.pyi +0 -0
  187. {modal-1.1.4.dev14 → modal-1.1.4.dev16}/modal_proto/py.typed +0 -0
  188. {modal-1.1.4.dev14 → modal-1.1.4.dev16}/modal_version/__main__.py +0 -0
  189. {modal-1.1.4.dev14 → modal-1.1.4.dev16}/pyproject.toml +0 -0
  190. {modal-1.1.4.dev14 → modal-1.1.4.dev16}/setup.cfg +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: modal
3
- Version: 1.1.4.dev14
3
+ Version: 1.1.4.dev16
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.dev14",
36
+ version: str = "1.1.4.dev16",
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.dev14",
167
+ version: str = "1.1.4.dev16",
168
168
  ):
169
169
  """mdmd:hidden
170
170
  The Modal client object is not intended to be instantiated directly by users.
@@ -275,7 +275,7 @@ class _FlashPrometheusAutoscaler:
275
275
 
276
276
  # Scale up / down conservatively: Any container that is missing the metric is assumed to be at the minimum
277
277
  # value of the metric when scaling up and the maximum value of the metric when scaling down.
278
- scale_up_target_metric_value = sum_metric / current_replicas
278
+ scale_up_target_metric_value = sum_metric / (containers_with_metrics or 1)
279
279
  scale_down_target_metric_value = (
280
280
  sum_metric + n_containers_missing_metric * target_metric_value
281
281
  ) / current_replicas
@@ -303,8 +303,11 @@ class _FlashPrometheusAutoscaler:
303
303
 
304
304
  # Fetch the metrics from the endpoint
305
305
  try:
306
- response = await self.http_client.get(url)
306
+ response = await self.http_client.get(url, timeout=3)
307
307
  response.raise_for_status()
308
+ except asyncio.TimeoutError:
309
+ logger.warning(f"[Modal Flash] Timeout getting metrics from {url}")
310
+ return None
308
311
  except Exception as e:
309
312
  logger.warning(f"[Modal Flash] Error getting metrics from {url}: {e}")
310
313
  return None
@@ -433,7 +433,7 @@ class Function(
433
433
 
434
434
  _call_generator: ___call_generator_spec[typing_extensions.Self]
435
435
 
436
- class __remote_spec(typing_extensions.Protocol[P_INNER, ReturnType_INNER, SUPERSELF]):
436
+ class __remote_spec(typing_extensions.Protocol[ReturnType_INNER, P_INNER, SUPERSELF]):
437
437
  def __call__(self, /, *args: P_INNER.args, **kwargs: P_INNER.kwargs) -> ReturnType_INNER:
438
438
  """Calls the function remotely, executing it with the given arguments and returning the execution's result."""
439
439
  ...
@@ -442,7 +442,7 @@ class Function(
442
442
  """Calls the function remotely, executing it with the given arguments and returning the execution's result."""
443
443
  ...
444
444
 
445
- remote: __remote_spec[modal._functions.P, modal._functions.ReturnType, typing_extensions.Self]
445
+ remote: __remote_spec[modal._functions.ReturnType, modal._functions.P, typing_extensions.Self]
446
446
 
447
447
  class __remote_gen_spec(typing_extensions.Protocol[SUPERSELF]):
448
448
  def __call__(self, /, *args, **kwargs) -> typing.Generator[typing.Any, None, None]:
@@ -469,7 +469,7 @@ class Function(
469
469
  """
470
470
  ...
471
471
 
472
- class ___experimental_spawn_spec(typing_extensions.Protocol[P_INNER, ReturnType_INNER, SUPERSELF]):
472
+ class ___experimental_spawn_spec(typing_extensions.Protocol[ReturnType_INNER, P_INNER, SUPERSELF]):
473
473
  def __call__(self, /, *args: P_INNER.args, **kwargs: P_INNER.kwargs) -> FunctionCall[ReturnType_INNER]:
474
474
  """[Experimental] Calls the function with the given arguments, without waiting for the results.
475
475
 
@@ -493,7 +493,7 @@ class Function(
493
493
  ...
494
494
 
495
495
  _experimental_spawn: ___experimental_spawn_spec[
496
- modal._functions.P, modal._functions.ReturnType, typing_extensions.Self
496
+ modal._functions.ReturnType, modal._functions.P, typing_extensions.Self
497
497
  ]
498
498
 
499
499
  class ___spawn_map_inner_spec(typing_extensions.Protocol[P_INNER, SUPERSELF]):
@@ -502,7 +502,7 @@ class Function(
502
502
 
503
503
  _spawn_map_inner: ___spawn_map_inner_spec[modal._functions.P, typing_extensions.Self]
504
504
 
505
- class __spawn_spec(typing_extensions.Protocol[P_INNER, ReturnType_INNER, SUPERSELF]):
505
+ class __spawn_spec(typing_extensions.Protocol[ReturnType_INNER, P_INNER, SUPERSELF]):
506
506
  def __call__(self, /, *args: P_INNER.args, **kwargs: P_INNER.kwargs) -> FunctionCall[ReturnType_INNER]:
507
507
  """Calls the function with the given arguments, without waiting for the results.
508
508
 
@@ -523,7 +523,7 @@ class Function(
523
523
  """
524
524
  ...
525
525
 
526
- spawn: __spawn_spec[modal._functions.P, modal._functions.ReturnType, typing_extensions.Self]
526
+ spawn: __spawn_spec[modal._functions.ReturnType, modal._functions.P, typing_extensions.Self]
527
527
 
528
528
  def get_raw_f(self) -> collections.abc.Callable[..., typing.Any]:
529
529
  """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.dev14
3
+ Version: 1.1.4.dev16
4
4
  Summary: Python client library for Modal
5
5
  Author-email: Modal Labs <support@modal.com>
6
6
  License: Apache-2.0
@@ -1798,6 +1798,7 @@ message FunctionHandleMetadata {
1798
1798
  optional string input_plane_region = 47;
1799
1799
  // Use optional to ensure unset values default to None instead of 0
1800
1800
  optional uint64 max_object_size_bytes = 48;
1801
+ repeated string _experimental_flash_urls = 49; // (Optional) urls for flash services
1801
1802
  }
1802
1803
 
1803
1804
  message FunctionInput {