modal 1.1.5.dev73__tar.gz → 1.1.5.dev75__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.dev73 → modal-1.1.5.dev75}/PKG-INFO +1 -1
  2. {modal-1.1.5.dev73 → modal-1.1.5.dev75}/modal/_runtime/container_io_manager.py +4 -0
  3. {modal-1.1.5.dev73 → modal-1.1.5.dev75}/modal/app.py +0 -6
  4. {modal-1.1.5.dev73 → modal-1.1.5.dev75}/modal/app.pyi +0 -4
  5. {modal-1.1.5.dev73 → modal-1.1.5.dev75}/modal/client.pyi +2 -2
  6. {modal-1.1.5.dev73 → modal-1.1.5.dev75}/modal/functions.pyi +6 -6
  7. {modal-1.1.5.dev73 → modal-1.1.5.dev75}/modal.egg-info/PKG-INFO +1 -1
  8. {modal-1.1.5.dev73 → modal-1.1.5.dev75}/modal_proto/api.proto +1 -1
  9. {modal-1.1.5.dev73 → modal-1.1.5.dev75}/modal_proto/api_pb2.py +201 -201
  10. {modal-1.1.5.dev73 → modal-1.1.5.dev75}/modal_proto/api_pb2.pyi +1 -4
  11. {modal-1.1.5.dev73 → modal-1.1.5.dev75}/modal_version/__init__.py +1 -1
  12. {modal-1.1.5.dev73 → modal-1.1.5.dev75}/LICENSE +0 -0
  13. {modal-1.1.5.dev73 → modal-1.1.5.dev75}/README.md +0 -0
  14. {modal-1.1.5.dev73 → modal-1.1.5.dev75}/modal/__init__.py +0 -0
  15. {modal-1.1.5.dev73 → modal-1.1.5.dev75}/modal/__main__.py +0 -0
  16. {modal-1.1.5.dev73 → modal-1.1.5.dev75}/modal/_clustered_functions.py +0 -0
  17. {modal-1.1.5.dev73 → modal-1.1.5.dev75}/modal/_clustered_functions.pyi +0 -0
  18. {modal-1.1.5.dev73 → modal-1.1.5.dev75}/modal/_container_entrypoint.py +0 -0
  19. {modal-1.1.5.dev73 → modal-1.1.5.dev75}/modal/_functions.py +0 -0
  20. {modal-1.1.5.dev73 → modal-1.1.5.dev75}/modal/_ipython.py +0 -0
  21. {modal-1.1.5.dev73 → modal-1.1.5.dev75}/modal/_location.py +0 -0
  22. {modal-1.1.5.dev73 → modal-1.1.5.dev75}/modal/_object.py +0 -0
  23. {modal-1.1.5.dev73 → modal-1.1.5.dev75}/modal/_output.py +0 -0
  24. {modal-1.1.5.dev73 → modal-1.1.5.dev75}/modal/_partial_function.py +0 -0
  25. {modal-1.1.5.dev73 → modal-1.1.5.dev75}/modal/_pty.py +0 -0
  26. {modal-1.1.5.dev73 → modal-1.1.5.dev75}/modal/_resolver.py +0 -0
  27. {modal-1.1.5.dev73 → modal-1.1.5.dev75}/modal/_resources.py +0 -0
  28. {modal-1.1.5.dev73 → modal-1.1.5.dev75}/modal/_runtime/__init__.py +0 -0
  29. {modal-1.1.5.dev73 → modal-1.1.5.dev75}/modal/_runtime/asgi.py +0 -0
  30. {modal-1.1.5.dev73 → modal-1.1.5.dev75}/modal/_runtime/container_io_manager.pyi +0 -0
  31. {modal-1.1.5.dev73 → modal-1.1.5.dev75}/modal/_runtime/execution_context.py +0 -0
  32. {modal-1.1.5.dev73 → modal-1.1.5.dev75}/modal/_runtime/execution_context.pyi +0 -0
  33. {modal-1.1.5.dev73 → modal-1.1.5.dev75}/modal/_runtime/gpu_memory_snapshot.py +0 -0
  34. {modal-1.1.5.dev73 → modal-1.1.5.dev75}/modal/_runtime/telemetry.py +0 -0
  35. {modal-1.1.5.dev73 → modal-1.1.5.dev75}/modal/_runtime/user_code_imports.py +0 -0
  36. {modal-1.1.5.dev73 → modal-1.1.5.dev75}/modal/_serialization.py +0 -0
  37. {modal-1.1.5.dev73 → modal-1.1.5.dev75}/modal/_traceback.py +0 -0
  38. {modal-1.1.5.dev73 → modal-1.1.5.dev75}/modal/_tunnel.py +0 -0
  39. {modal-1.1.5.dev73 → modal-1.1.5.dev75}/modal/_tunnel.pyi +0 -0
  40. {modal-1.1.5.dev73 → modal-1.1.5.dev75}/modal/_type_manager.py +0 -0
  41. {modal-1.1.5.dev73 → modal-1.1.5.dev75}/modal/_utils/__init__.py +0 -0
  42. {modal-1.1.5.dev73 → modal-1.1.5.dev75}/modal/_utils/app_utils.py +0 -0
  43. {modal-1.1.5.dev73 → modal-1.1.5.dev75}/modal/_utils/async_utils.py +0 -0
  44. {modal-1.1.5.dev73 → modal-1.1.5.dev75}/modal/_utils/auth_token_manager.py +0 -0
  45. {modal-1.1.5.dev73 → modal-1.1.5.dev75}/modal/_utils/blob_utils.py +0 -0
  46. {modal-1.1.5.dev73 → modal-1.1.5.dev75}/modal/_utils/bytes_io_segment_payload.py +0 -0
  47. {modal-1.1.5.dev73 → modal-1.1.5.dev75}/modal/_utils/deprecation.py +0 -0
  48. {modal-1.1.5.dev73 → modal-1.1.5.dev75}/modal/_utils/docker_utils.py +0 -0
  49. {modal-1.1.5.dev73 → modal-1.1.5.dev75}/modal/_utils/function_utils.py +0 -0
  50. {modal-1.1.5.dev73 → modal-1.1.5.dev75}/modal/_utils/git_utils.py +0 -0
  51. {modal-1.1.5.dev73 → modal-1.1.5.dev75}/modal/_utils/grpc_testing.py +0 -0
  52. {modal-1.1.5.dev73 → modal-1.1.5.dev75}/modal/_utils/grpc_utils.py +0 -0
  53. {modal-1.1.5.dev73 → modal-1.1.5.dev75}/modal/_utils/hash_utils.py +0 -0
  54. {modal-1.1.5.dev73 → modal-1.1.5.dev75}/modal/_utils/http_utils.py +0 -0
  55. {modal-1.1.5.dev73 → modal-1.1.5.dev75}/modal/_utils/jwt_utils.py +0 -0
  56. {modal-1.1.5.dev73 → modal-1.1.5.dev75}/modal/_utils/logger.py +0 -0
  57. {modal-1.1.5.dev73 → modal-1.1.5.dev75}/modal/_utils/mount_utils.py +0 -0
  58. {modal-1.1.5.dev73 → modal-1.1.5.dev75}/modal/_utils/name_utils.py +0 -0
  59. {modal-1.1.5.dev73 → modal-1.1.5.dev75}/modal/_utils/package_utils.py +0 -0
  60. {modal-1.1.5.dev73 → modal-1.1.5.dev75}/modal/_utils/pattern_utils.py +0 -0
  61. {modal-1.1.5.dev73 → modal-1.1.5.dev75}/modal/_utils/rand_pb_testing.py +0 -0
  62. {modal-1.1.5.dev73 → modal-1.1.5.dev75}/modal/_utils/shell_utils.py +0 -0
  63. {modal-1.1.5.dev73 → modal-1.1.5.dev75}/modal/_utils/time_utils.py +0 -0
  64. {modal-1.1.5.dev73 → modal-1.1.5.dev75}/modal/_vendor/__init__.py +0 -0
  65. {modal-1.1.5.dev73 → modal-1.1.5.dev75}/modal/_vendor/a2wsgi_wsgi.py +0 -0
  66. {modal-1.1.5.dev73 → modal-1.1.5.dev75}/modal/_vendor/cloudpickle.py +0 -0
  67. {modal-1.1.5.dev73 → modal-1.1.5.dev75}/modal/_vendor/tblib.py +0 -0
  68. {modal-1.1.5.dev73 → modal-1.1.5.dev75}/modal/_watcher.py +0 -0
  69. {modal-1.1.5.dev73 → modal-1.1.5.dev75}/modal/builder/2023.12.312.txt +0 -0
  70. {modal-1.1.5.dev73 → modal-1.1.5.dev75}/modal/builder/2023.12.txt +0 -0
  71. {modal-1.1.5.dev73 → modal-1.1.5.dev75}/modal/builder/2024.04.txt +0 -0
  72. {modal-1.1.5.dev73 → modal-1.1.5.dev75}/modal/builder/2024.10.txt +0 -0
  73. {modal-1.1.5.dev73 → modal-1.1.5.dev75}/modal/builder/2025.06.txt +0 -0
  74. {modal-1.1.5.dev73 → modal-1.1.5.dev75}/modal/builder/PREVIEW.txt +0 -0
  75. {modal-1.1.5.dev73 → modal-1.1.5.dev75}/modal/builder/README.md +0 -0
  76. {modal-1.1.5.dev73 → modal-1.1.5.dev75}/modal/builder/base-images.json +0 -0
  77. {modal-1.1.5.dev73 → modal-1.1.5.dev75}/modal/call_graph.py +0 -0
  78. {modal-1.1.5.dev73 → modal-1.1.5.dev75}/modal/cli/__init__.py +0 -0
  79. {modal-1.1.5.dev73 → modal-1.1.5.dev75}/modal/cli/_download.py +0 -0
  80. {modal-1.1.5.dev73 → modal-1.1.5.dev75}/modal/cli/_traceback.py +0 -0
  81. {modal-1.1.5.dev73 → modal-1.1.5.dev75}/modal/cli/app.py +0 -0
  82. {modal-1.1.5.dev73 → modal-1.1.5.dev75}/modal/cli/cluster.py +0 -0
  83. {modal-1.1.5.dev73 → modal-1.1.5.dev75}/modal/cli/config.py +0 -0
  84. {modal-1.1.5.dev73 → modal-1.1.5.dev75}/modal/cli/container.py +0 -0
  85. {modal-1.1.5.dev73 → modal-1.1.5.dev75}/modal/cli/dict.py +0 -0
  86. {modal-1.1.5.dev73 → modal-1.1.5.dev75}/modal/cli/entry_point.py +0 -0
  87. {modal-1.1.5.dev73 → modal-1.1.5.dev75}/modal/cli/environment.py +0 -0
  88. {modal-1.1.5.dev73 → modal-1.1.5.dev75}/modal/cli/import_refs.py +0 -0
  89. {modal-1.1.5.dev73 → modal-1.1.5.dev75}/modal/cli/launch.py +0 -0
  90. {modal-1.1.5.dev73 → modal-1.1.5.dev75}/modal/cli/network_file_system.py +0 -0
  91. {modal-1.1.5.dev73 → modal-1.1.5.dev75}/modal/cli/profile.py +0 -0
  92. {modal-1.1.5.dev73 → modal-1.1.5.dev75}/modal/cli/programs/__init__.py +0 -0
  93. {modal-1.1.5.dev73 → modal-1.1.5.dev75}/modal/cli/programs/launch_instance_ssh.py +0 -0
  94. {modal-1.1.5.dev73 → modal-1.1.5.dev75}/modal/cli/programs/run_jupyter.py +0 -0
  95. {modal-1.1.5.dev73 → modal-1.1.5.dev75}/modal/cli/programs/run_marimo.py +0 -0
  96. {modal-1.1.5.dev73 → modal-1.1.5.dev75}/modal/cli/programs/vscode.py +0 -0
  97. {modal-1.1.5.dev73 → modal-1.1.5.dev75}/modal/cli/queues.py +0 -0
  98. {modal-1.1.5.dev73 → modal-1.1.5.dev75}/modal/cli/run.py +0 -0
  99. {modal-1.1.5.dev73 → modal-1.1.5.dev75}/modal/cli/secret.py +0 -0
  100. {modal-1.1.5.dev73 → modal-1.1.5.dev75}/modal/cli/token.py +0 -0
  101. {modal-1.1.5.dev73 → modal-1.1.5.dev75}/modal/cli/utils.py +0 -0
  102. {modal-1.1.5.dev73 → modal-1.1.5.dev75}/modal/cli/volume.py +0 -0
  103. {modal-1.1.5.dev73 → modal-1.1.5.dev75}/modal/client.py +0 -0
  104. {modal-1.1.5.dev73 → modal-1.1.5.dev75}/modal/cloud_bucket_mount.py +0 -0
  105. {modal-1.1.5.dev73 → modal-1.1.5.dev75}/modal/cloud_bucket_mount.pyi +0 -0
  106. {modal-1.1.5.dev73 → modal-1.1.5.dev75}/modal/cls.py +0 -0
  107. {modal-1.1.5.dev73 → modal-1.1.5.dev75}/modal/cls.pyi +0 -0
  108. {modal-1.1.5.dev73 → modal-1.1.5.dev75}/modal/config.py +0 -0
  109. {modal-1.1.5.dev73 → modal-1.1.5.dev75}/modal/container_process.py +0 -0
  110. {modal-1.1.5.dev73 → modal-1.1.5.dev75}/modal/container_process.pyi +0 -0
  111. {modal-1.1.5.dev73 → modal-1.1.5.dev75}/modal/dict.py +0 -0
  112. {modal-1.1.5.dev73 → modal-1.1.5.dev75}/modal/dict.pyi +0 -0
  113. {modal-1.1.5.dev73 → modal-1.1.5.dev75}/modal/environments.py +0 -0
  114. {modal-1.1.5.dev73 → modal-1.1.5.dev75}/modal/environments.pyi +0 -0
  115. {modal-1.1.5.dev73 → modal-1.1.5.dev75}/modal/exception.py +0 -0
  116. {modal-1.1.5.dev73 → modal-1.1.5.dev75}/modal/experimental/__init__.py +0 -0
  117. {modal-1.1.5.dev73 → modal-1.1.5.dev75}/modal/experimental/flash.py +0 -0
  118. {modal-1.1.5.dev73 → modal-1.1.5.dev75}/modal/experimental/flash.pyi +0 -0
  119. {modal-1.1.5.dev73 → modal-1.1.5.dev75}/modal/experimental/ipython.py +0 -0
  120. {modal-1.1.5.dev73 → modal-1.1.5.dev75}/modal/file_io.py +0 -0
  121. {modal-1.1.5.dev73 → modal-1.1.5.dev75}/modal/file_io.pyi +0 -0
  122. {modal-1.1.5.dev73 → modal-1.1.5.dev75}/modal/file_pattern_matcher.py +0 -0
  123. {modal-1.1.5.dev73 → modal-1.1.5.dev75}/modal/functions.py +0 -0
  124. {modal-1.1.5.dev73 → modal-1.1.5.dev75}/modal/gpu.py +0 -0
  125. {modal-1.1.5.dev73 → modal-1.1.5.dev75}/modal/image.py +0 -0
  126. {modal-1.1.5.dev73 → modal-1.1.5.dev75}/modal/image.pyi +0 -0
  127. {modal-1.1.5.dev73 → modal-1.1.5.dev75}/modal/io_streams.py +0 -0
  128. {modal-1.1.5.dev73 → modal-1.1.5.dev75}/modal/io_streams.pyi +0 -0
  129. {modal-1.1.5.dev73 → modal-1.1.5.dev75}/modal/mount.py +0 -0
  130. {modal-1.1.5.dev73 → modal-1.1.5.dev75}/modal/mount.pyi +0 -0
  131. {modal-1.1.5.dev73 → modal-1.1.5.dev75}/modal/network_file_system.py +0 -0
  132. {modal-1.1.5.dev73 → modal-1.1.5.dev75}/modal/network_file_system.pyi +0 -0
  133. {modal-1.1.5.dev73 → modal-1.1.5.dev75}/modal/object.py +0 -0
  134. {modal-1.1.5.dev73 → modal-1.1.5.dev75}/modal/object.pyi +0 -0
  135. {modal-1.1.5.dev73 → modal-1.1.5.dev75}/modal/output.py +0 -0
  136. {modal-1.1.5.dev73 → modal-1.1.5.dev75}/modal/parallel_map.py +0 -0
  137. {modal-1.1.5.dev73 → modal-1.1.5.dev75}/modal/parallel_map.pyi +0 -0
  138. {modal-1.1.5.dev73 → modal-1.1.5.dev75}/modal/partial_function.py +0 -0
  139. {modal-1.1.5.dev73 → modal-1.1.5.dev75}/modal/partial_function.pyi +0 -0
  140. {modal-1.1.5.dev73 → modal-1.1.5.dev75}/modal/proxy.py +0 -0
  141. {modal-1.1.5.dev73 → modal-1.1.5.dev75}/modal/proxy.pyi +0 -0
  142. {modal-1.1.5.dev73 → modal-1.1.5.dev75}/modal/py.typed +0 -0
  143. {modal-1.1.5.dev73 → modal-1.1.5.dev75}/modal/queue.py +0 -0
  144. {modal-1.1.5.dev73 → modal-1.1.5.dev75}/modal/queue.pyi +0 -0
  145. {modal-1.1.5.dev73 → modal-1.1.5.dev75}/modal/retries.py +0 -0
  146. {modal-1.1.5.dev73 → modal-1.1.5.dev75}/modal/runner.py +0 -0
  147. {modal-1.1.5.dev73 → modal-1.1.5.dev75}/modal/runner.pyi +0 -0
  148. {modal-1.1.5.dev73 → modal-1.1.5.dev75}/modal/running_app.py +0 -0
  149. {modal-1.1.5.dev73 → modal-1.1.5.dev75}/modal/sandbox.py +0 -0
  150. {modal-1.1.5.dev73 → modal-1.1.5.dev75}/modal/sandbox.pyi +0 -0
  151. {modal-1.1.5.dev73 → modal-1.1.5.dev75}/modal/schedule.py +0 -0
  152. {modal-1.1.5.dev73 → modal-1.1.5.dev75}/modal/scheduler_placement.py +0 -0
  153. {modal-1.1.5.dev73 → modal-1.1.5.dev75}/modal/secret.py +0 -0
  154. {modal-1.1.5.dev73 → modal-1.1.5.dev75}/modal/secret.pyi +0 -0
  155. {modal-1.1.5.dev73 → modal-1.1.5.dev75}/modal/serving.py +0 -0
  156. {modal-1.1.5.dev73 → modal-1.1.5.dev75}/modal/serving.pyi +0 -0
  157. {modal-1.1.5.dev73 → modal-1.1.5.dev75}/modal/snapshot.py +0 -0
  158. {modal-1.1.5.dev73 → modal-1.1.5.dev75}/modal/snapshot.pyi +0 -0
  159. {modal-1.1.5.dev73 → modal-1.1.5.dev75}/modal/stream_type.py +0 -0
  160. {modal-1.1.5.dev73 → modal-1.1.5.dev75}/modal/token_flow.py +0 -0
  161. {modal-1.1.5.dev73 → modal-1.1.5.dev75}/modal/token_flow.pyi +0 -0
  162. {modal-1.1.5.dev73 → modal-1.1.5.dev75}/modal/volume.py +0 -0
  163. {modal-1.1.5.dev73 → modal-1.1.5.dev75}/modal/volume.pyi +0 -0
  164. {modal-1.1.5.dev73 → modal-1.1.5.dev75}/modal.egg-info/SOURCES.txt +0 -0
  165. {modal-1.1.5.dev73 → modal-1.1.5.dev75}/modal.egg-info/dependency_links.txt +0 -0
  166. {modal-1.1.5.dev73 → modal-1.1.5.dev75}/modal.egg-info/entry_points.txt +0 -0
  167. {modal-1.1.5.dev73 → modal-1.1.5.dev75}/modal.egg-info/requires.txt +0 -0
  168. {modal-1.1.5.dev73 → modal-1.1.5.dev75}/modal.egg-info/top_level.txt +0 -0
  169. {modal-1.1.5.dev73 → modal-1.1.5.dev75}/modal_docs/__init__.py +0 -0
  170. {modal-1.1.5.dev73 → modal-1.1.5.dev75}/modal_docs/gen_cli_docs.py +0 -0
  171. {modal-1.1.5.dev73 → modal-1.1.5.dev75}/modal_docs/gen_reference_docs.py +0 -0
  172. {modal-1.1.5.dev73 → modal-1.1.5.dev75}/modal_docs/mdmd/__init__.py +0 -0
  173. {modal-1.1.5.dev73 → modal-1.1.5.dev75}/modal_docs/mdmd/mdmd.py +0 -0
  174. {modal-1.1.5.dev73 → modal-1.1.5.dev75}/modal_docs/mdmd/signatures.py +0 -0
  175. {modal-1.1.5.dev73 → modal-1.1.5.dev75}/modal_proto/__init__.py +0 -0
  176. {modal-1.1.5.dev73 → modal-1.1.5.dev75}/modal_proto/api_grpc.py +0 -0
  177. {modal-1.1.5.dev73 → modal-1.1.5.dev75}/modal_proto/api_pb2_grpc.py +0 -0
  178. {modal-1.1.5.dev73 → modal-1.1.5.dev75}/modal_proto/api_pb2_grpc.pyi +0 -0
  179. {modal-1.1.5.dev73 → modal-1.1.5.dev75}/modal_proto/modal_api_grpc.py +0 -0
  180. {modal-1.1.5.dev73 → modal-1.1.5.dev75}/modal_proto/modal_options_grpc.py +0 -0
  181. {modal-1.1.5.dev73 → modal-1.1.5.dev75}/modal_proto/options.proto +0 -0
  182. {modal-1.1.5.dev73 → modal-1.1.5.dev75}/modal_proto/options_grpc.py +0 -0
  183. {modal-1.1.5.dev73 → modal-1.1.5.dev75}/modal_proto/options_pb2.py +0 -0
  184. {modal-1.1.5.dev73 → modal-1.1.5.dev75}/modal_proto/options_pb2.pyi +0 -0
  185. {modal-1.1.5.dev73 → modal-1.1.5.dev75}/modal_proto/options_pb2_grpc.py +0 -0
  186. {modal-1.1.5.dev73 → modal-1.1.5.dev75}/modal_proto/options_pb2_grpc.pyi +0 -0
  187. {modal-1.1.5.dev73 → modal-1.1.5.dev75}/modal_proto/py.typed +0 -0
  188. {modal-1.1.5.dev73 → modal-1.1.5.dev75}/modal_proto/sandbox_router.proto +0 -0
  189. {modal-1.1.5.dev73 → modal-1.1.5.dev75}/modal_proto/sandbox_router_grpc.py +0 -0
  190. {modal-1.1.5.dev73 → modal-1.1.5.dev75}/modal_proto/sandbox_router_pb2.py +0 -0
  191. {modal-1.1.5.dev73 → modal-1.1.5.dev75}/modal_proto/sandbox_router_pb2.pyi +0 -0
  192. {modal-1.1.5.dev73 → modal-1.1.5.dev75}/modal_proto/sandbox_router_pb2_grpc.py +0 -0
  193. {modal-1.1.5.dev73 → modal-1.1.5.dev75}/modal_proto/sandbox_router_pb2_grpc.pyi +0 -0
  194. {modal-1.1.5.dev73 → modal-1.1.5.dev75}/modal_version/__main__.py +0 -0
  195. {modal-1.1.5.dev73 → modal-1.1.5.dev75}/pyproject.toml +0 -0
  196. {modal-1.1.5.dev73 → modal-1.1.5.dev75}/setup.cfg +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: modal
3
- Version: 1.1.5.dev73
3
+ Version: 1.1.5.dev75
4
4
  Summary: Python client library for Modal
5
5
  Author-email: Modal Labs <support@modal.com>
6
6
  License: Apache-2.0
@@ -278,11 +278,13 @@ class IOContext:
278
278
  logger.debug(f"Finished generator input {self.input_ids}")
279
279
 
280
280
  async def output_items_cancellation(self, started_at: float):
281
+ output_created_at = time.time()
281
282
  # Create terminated outputs for these inputs to signal that the cancellations have been completed.
282
283
  return [
283
284
  api_pb2.FunctionPutOutputsItem(
284
285
  input_id=input_id,
285
286
  input_started_at=started_at,
287
+ output_created_at=output_created_at,
286
288
  result=api_pb2.GenericResult(status=api_pb2.GenericResult.GENERIC_STATUS_TERMINATED),
287
289
  retry_count=retry_count,
288
290
  )
@@ -354,10 +356,12 @@ class IOContext:
354
356
  }
355
357
 
356
358
  # all inputs in the batch get the same failure:
359
+ output_created_at = time.time()
357
360
  return [
358
361
  api_pb2.FunctionPutOutputsItem(
359
362
  input_id=input_id,
360
363
  input_started_at=started_at,
364
+ output_created_at=output_created_at,
361
365
  retry_count=retry_count,
362
366
  **data_format_specific_output(function_input.data_format),
363
367
  )
@@ -677,7 +677,6 @@ class _App:
677
677
  concurrency_limit: Optional[int] = None, # Replaced with `max_containers`
678
678
  container_idle_timeout: Optional[int] = None, # Replaced with `scaledown_window`
679
679
  allow_concurrent_inputs: Optional[int] = None, # Replaced with the `@modal.concurrent` decorator
680
- allow_cross_region_volumes: Optional[bool] = None, # Always True on the Modal backend now
681
680
  _experimental_buffer_containers: Optional[int] = None, # Now stable API with `buffer_containers`
682
681
  ) -> _FunctionDecoratorType:
683
682
  """Decorator to register a new Modal Function with this App."""
@@ -697,8 +696,6 @@ class _App:
697
696
  " Please use the `@modal.concurrent` decorator instead."
698
697
  "\n\nSee https://modal.com/docs/guide/modal-1-0-migration for more information.",
699
698
  )
700
- if allow_cross_region_volumes is not None:
701
- deprecation_warning((2025, 4, 23), "The `allow_cross_region_volumes` parameter no longer has any effect.")
702
699
 
703
700
  secrets = secrets or []
704
701
  if env:
@@ -908,7 +905,6 @@ class _App:
908
905
  container_idle_timeout: Optional[int] = None, # Replaced with `scaledown_window`
909
906
  allow_concurrent_inputs: Optional[int] = None, # Replaced with the `@modal.concurrent` decorator
910
907
  _experimental_buffer_containers: Optional[int] = None, # Now stable API with `buffer_containers`
911
- allow_cross_region_volumes: Optional[bool] = None, # Always True on the Modal backend now
912
908
  ) -> Callable[[Union[CLS_T, _PartialFunction]], CLS_T]:
913
909
  """
914
910
  Decorator to register a new Modal [Cls](https://modal.com/docs/reference/modal.Cls) with this App.
@@ -929,8 +925,6 @@ class _App:
929
925
  " Please use the `@modal.concurrent` decorator instead."
930
926
  "\n\nSee https://modal.com/docs/guide/modal-1-0-migration for more information.",
931
927
  )
932
- if allow_cross_region_volumes is not None:
933
- deprecation_warning((2025, 4, 23), "The `allow_cross_region_volumes` parameter no longer has any effect.")
934
928
 
935
929
  secrets = secrets or []
936
930
  if env:
@@ -434,7 +434,6 @@ class _App:
434
434
  concurrency_limit: typing.Optional[int] = None,
435
435
  container_idle_timeout: typing.Optional[int] = None,
436
436
  allow_concurrent_inputs: typing.Optional[int] = None,
437
- allow_cross_region_volumes: typing.Optional[bool] = None,
438
437
  _experimental_buffer_containers: typing.Optional[int] = None,
439
438
  ) -> _FunctionDecoratorType:
440
439
  """Decorator to register a new Modal Function with this App."""
@@ -489,7 +488,6 @@ class _App:
489
488
  container_idle_timeout: typing.Optional[int] = None,
490
489
  allow_concurrent_inputs: typing.Optional[int] = None,
491
490
  _experimental_buffer_containers: typing.Optional[int] = None,
492
- allow_cross_region_volumes: typing.Optional[bool] = None,
493
491
  ) -> collections.abc.Callable[[typing.Union[CLS_T, modal._partial_function._PartialFunction]], CLS_T]:
494
492
  """Decorator to register a new Modal [Cls](https://modal.com/docs/reference/modal.Cls) with this App."""
495
493
  ...
@@ -1048,7 +1046,6 @@ class App:
1048
1046
  concurrency_limit: typing.Optional[int] = None,
1049
1047
  container_idle_timeout: typing.Optional[int] = None,
1050
1048
  allow_concurrent_inputs: typing.Optional[int] = None,
1051
- allow_cross_region_volumes: typing.Optional[bool] = None,
1052
1049
  _experimental_buffer_containers: typing.Optional[int] = None,
1053
1050
  ) -> _FunctionDecoratorType:
1054
1051
  """Decorator to register a new Modal Function with this App."""
@@ -1103,7 +1100,6 @@ class App:
1103
1100
  container_idle_timeout: typing.Optional[int] = None,
1104
1101
  allow_concurrent_inputs: typing.Optional[int] = None,
1105
1102
  _experimental_buffer_containers: typing.Optional[int] = None,
1106
- allow_cross_region_volumes: typing.Optional[bool] = None,
1107
1103
  ) -> collections.abc.Callable[[typing.Union[CLS_T, modal.partial_function.PartialFunction]], CLS_T]:
1108
1104
  """Decorator to register a new Modal [Cls](https://modal.com/docs/reference/modal.Cls) with this App."""
1109
1105
  ...
@@ -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.dev73",
36
+ version: str = "1.1.5.dev75",
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.dev73",
167
+ version: str = "1.1.5.dev75",
168
168
  ):
169
169
  """mdmd:hidden
170
170
  The Modal client object is not intended to be instantiated directly by users.
@@ -401,7 +401,7 @@ class Function(
401
401
 
402
402
  _call_generator: ___call_generator_spec[typing_extensions.Self]
403
403
 
404
- class __remote_spec(typing_extensions.Protocol[P_INNER, ReturnType_INNER, SUPERSELF]):
404
+ class __remote_spec(typing_extensions.Protocol[ReturnType_INNER, P_INNER, SUPERSELF]):
405
405
  def __call__(self, /, *args: P_INNER.args, **kwargs: P_INNER.kwargs) -> ReturnType_INNER:
406
406
  """Calls the function remotely, executing it with the given arguments and returning the execution's result."""
407
407
  ...
@@ -410,7 +410,7 @@ class Function(
410
410
  """Calls the function remotely, executing it with the given arguments and returning the execution's result."""
411
411
  ...
412
412
 
413
- remote: __remote_spec[modal._functions.P, modal._functions.ReturnType, typing_extensions.Self]
413
+ remote: __remote_spec[modal._functions.ReturnType, modal._functions.P, typing_extensions.Self]
414
414
 
415
415
  class __remote_gen_spec(typing_extensions.Protocol[SUPERSELF]):
416
416
  def __call__(self, /, *args, **kwargs) -> typing.Generator[typing.Any, None, None]:
@@ -437,7 +437,7 @@ class Function(
437
437
  """
438
438
  ...
439
439
 
440
- class ___experimental_spawn_spec(typing_extensions.Protocol[P_INNER, ReturnType_INNER, SUPERSELF]):
440
+ class ___experimental_spawn_spec(typing_extensions.Protocol[ReturnType_INNER, P_INNER, SUPERSELF]):
441
441
  def __call__(self, /, *args: P_INNER.args, **kwargs: P_INNER.kwargs) -> FunctionCall[ReturnType_INNER]:
442
442
  """[Experimental] Calls the function with the given arguments, without waiting for the results.
443
443
 
@@ -461,7 +461,7 @@ class Function(
461
461
  ...
462
462
 
463
463
  _experimental_spawn: ___experimental_spawn_spec[
464
- modal._functions.P, modal._functions.ReturnType, typing_extensions.Self
464
+ modal._functions.ReturnType, modal._functions.P, typing_extensions.Self
465
465
  ]
466
466
 
467
467
  class ___spawn_map_inner_spec(typing_extensions.Protocol[P_INNER, SUPERSELF]):
@@ -470,7 +470,7 @@ class Function(
470
470
 
471
471
  _spawn_map_inner: ___spawn_map_inner_spec[modal._functions.P, typing_extensions.Self]
472
472
 
473
- class __spawn_spec(typing_extensions.Protocol[P_INNER, ReturnType_INNER, SUPERSELF]):
473
+ class __spawn_spec(typing_extensions.Protocol[ReturnType_INNER, P_INNER, SUPERSELF]):
474
474
  def __call__(self, /, *args: P_INNER.args, **kwargs: P_INNER.kwargs) -> FunctionCall[ReturnType_INNER]:
475
475
  """Calls the function with the given arguments, without waiting for the results.
476
476
 
@@ -491,7 +491,7 @@ class Function(
491
491
  """
492
492
  ...
493
493
 
494
- spawn: __spawn_spec[modal._functions.P, modal._functions.ReturnType, typing_extensions.Self]
494
+ spawn: __spawn_spec[modal._functions.ReturnType, modal._functions.P, typing_extensions.Self]
495
495
 
496
496
  def get_raw_f(self) -> collections.abc.Callable[..., typing.Any]:
497
497
  """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.5.dev73
3
+ Version: 1.1.5.dev75
4
4
  Summary: Python client library for Modal
5
5
  Author-email: Modal Labs <support@modal.com>
6
6
  License: Apache-2.0
@@ -3096,7 +3096,7 @@ message SharedVolumeMount {
3096
3096
  string mount_path = 1;
3097
3097
  string shared_volume_id = 2;
3098
3098
  CloudProvider cloud_provider = 3;
3099
- bool allow_cross_region = 4;
3099
+ reserved 4; // allow_cross_region
3100
3100
  }
3101
3101
 
3102
3102
  message SharedVolumePutFileRequest {