modal 1.5.5.dev13__tar.gz → 1.5.5.dev15__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 (236) hide show
  1. {modal-1.5.5.dev13 → modal-1.5.5.dev15}/PKG-INFO +1 -1
  2. {modal-1.5.5.dev13 → modal-1.5.5.dev15}/modal/_functions.py +31 -3
  3. {modal-1.5.5.dev13 → modal-1.5.5.dev15}/modal/_object.py +4 -1
  4. {modal-1.5.5.dev13 → modal-1.5.5.dev15}/modal/app.py +11 -1
  5. {modal-1.5.5.dev13 → modal-1.5.5.dev15}/modal/app.pyi +20 -0
  6. {modal-1.5.5.dev13 → modal-1.5.5.dev15}/modal/client.pyi +2 -2
  7. {modal-1.5.5.dev13 → modal-1.5.5.dev15}/modal/cls.py +8 -2
  8. {modal-1.5.5.dev13 → modal-1.5.5.dev15}/modal/cls.pyi +20 -0
  9. {modal-1.5.5.dev13 → modal-1.5.5.dev15}/modal/functions.pyi +76 -0
  10. {modal-1.5.5.dev13 → modal-1.5.5.dev15}/modal/object.pyi +11 -30
  11. {modal-1.5.5.dev13 → modal-1.5.5.dev15}/modal/sandbox.py +8 -3
  12. {modal-1.5.5.dev13 → modal-1.5.5.dev15}/modal.egg-info/PKG-INFO +1 -1
  13. {modal-1.5.5.dev13 → modal-1.5.5.dev15}/modal_proto/task_command_router_pb2.py +20 -20
  14. {modal-1.5.5.dev13 → modal-1.5.5.dev15}/modal_proto/task_command_router_pb2.pyi +5 -1
  15. {modal-1.5.5.dev13 → modal-1.5.5.dev15}/modal_version/__init__.py +1 -1
  16. {modal-1.5.5.dev13 → modal-1.5.5.dev15}/LICENSE +0 -0
  17. {modal-1.5.5.dev13 → modal-1.5.5.dev15}/README.md +0 -0
  18. {modal-1.5.5.dev13 → modal-1.5.5.dev15}/modal/__init__.py +0 -0
  19. {modal-1.5.5.dev13 → modal-1.5.5.dev15}/modal/__main__.py +0 -0
  20. {modal-1.5.5.dev13 → modal-1.5.5.dev15}/modal/_billing.py +0 -0
  21. {modal-1.5.5.dev13 → modal-1.5.5.dev15}/modal/_clustered_functions.py +0 -0
  22. {modal-1.5.5.dev13 → modal-1.5.5.dev15}/modal/_clustered_functions.pyi +0 -0
  23. {modal-1.5.5.dev13 → modal-1.5.5.dev15}/modal/_container_entrypoint.py +0 -0
  24. {modal-1.5.5.dev13 → modal-1.5.5.dev15}/modal/_environments.py +0 -0
  25. {modal-1.5.5.dev13 → modal-1.5.5.dev15}/modal/_function_variants.py +0 -0
  26. {modal-1.5.5.dev13 → modal-1.5.5.dev15}/modal/_grpc_client.py +0 -0
  27. {modal-1.5.5.dev13 → modal-1.5.5.dev15}/modal/_image.py +0 -0
  28. {modal-1.5.5.dev13 → modal-1.5.5.dev15}/modal/_ipython.py +0 -0
  29. {modal-1.5.5.dev13 → modal-1.5.5.dev15}/modal/_load_context.py +0 -0
  30. {modal-1.5.5.dev13 → modal-1.5.5.dev15}/modal/_location.py +0 -0
  31. {modal-1.5.5.dev13 → modal-1.5.5.dev15}/modal/_logs.py +0 -0
  32. {modal-1.5.5.dev13 → modal-1.5.5.dev15}/modal/_logs_manager.py +0 -0
  33. {modal-1.5.5.dev13 → modal-1.5.5.dev15}/modal/_logs_manager.pyi +0 -0
  34. {modal-1.5.5.dev13 → modal-1.5.5.dev15}/modal/_output/__init__.py +0 -0
  35. {modal-1.5.5.dev13 → modal-1.5.5.dev15}/modal/_output/manager.py +0 -0
  36. {modal-1.5.5.dev13 → modal-1.5.5.dev15}/modal/_output/pty.py +0 -0
  37. {modal-1.5.5.dev13 → modal-1.5.5.dev15}/modal/_output/rich.py +0 -0
  38. {modal-1.5.5.dev13 → modal-1.5.5.dev15}/modal/_output/status.py +0 -0
  39. {modal-1.5.5.dev13 → modal-1.5.5.dev15}/modal/_partial_function.py +0 -0
  40. {modal-1.5.5.dev13 → modal-1.5.5.dev15}/modal/_resolver.py +0 -0
  41. {modal-1.5.5.dev13 → modal-1.5.5.dev15}/modal/_resources.py +0 -0
  42. {modal-1.5.5.dev13 → modal-1.5.5.dev15}/modal/_runtime/__init__.py +0 -0
  43. {modal-1.5.5.dev13 → modal-1.5.5.dev15}/modal/_runtime/asgi.py +0 -0
  44. {modal-1.5.5.dev13 → modal-1.5.5.dev15}/modal/_runtime/container_io_manager.py +0 -0
  45. {modal-1.5.5.dev13 → modal-1.5.5.dev15}/modal/_runtime/container_io_manager.pyi +0 -0
  46. {modal-1.5.5.dev13 → modal-1.5.5.dev15}/modal/_runtime/execution_context.py +0 -0
  47. {modal-1.5.5.dev13 → modal-1.5.5.dev15}/modal/_runtime/execution_context.pyi +0 -0
  48. {modal-1.5.5.dev13 → modal-1.5.5.dev15}/modal/_runtime/gpu_memory_snapshot.py +0 -0
  49. {modal-1.5.5.dev13 → modal-1.5.5.dev15}/modal/_runtime/task_lifecycle_manager.py +0 -0
  50. {modal-1.5.5.dev13 → modal-1.5.5.dev15}/modal/_runtime/task_lifecycle_manager.pyi +0 -0
  51. {modal-1.5.5.dev13 → modal-1.5.5.dev15}/modal/_runtime/telemetry.py +0 -0
  52. {modal-1.5.5.dev13 → modal-1.5.5.dev15}/modal/_runtime/user_code_event_loop.py +0 -0
  53. {modal-1.5.5.dev13 → modal-1.5.5.dev15}/modal/_runtime/user_code_imports.py +0 -0
  54. {modal-1.5.5.dev13 → modal-1.5.5.dev15}/modal/_serialization.py +0 -0
  55. {modal-1.5.5.dev13 → modal-1.5.5.dev15}/modal/_server.py +0 -0
  56. {modal-1.5.5.dev13 → modal-1.5.5.dev15}/modal/_supports_logs.py +0 -0
  57. {modal-1.5.5.dev13 → modal-1.5.5.dev15}/modal/_traceback.py +0 -0
  58. {modal-1.5.5.dev13 → modal-1.5.5.dev15}/modal/_tunnel.py +0 -0
  59. {modal-1.5.5.dev13 → modal-1.5.5.dev15}/modal/_tunnel.pyi +0 -0
  60. {modal-1.5.5.dev13 → modal-1.5.5.dev15}/modal/_type_manager.py +0 -0
  61. {modal-1.5.5.dev13 → modal-1.5.5.dev15}/modal/_utils/__init__.py +0 -0
  62. {modal-1.5.5.dev13 → modal-1.5.5.dev15}/modal/_utils/app_utils.py +0 -0
  63. {modal-1.5.5.dev13 → modal-1.5.5.dev15}/modal/_utils/async_utils.py +0 -0
  64. {modal-1.5.5.dev13 → modal-1.5.5.dev15}/modal/_utils/auth_token_manager.py +0 -0
  65. {modal-1.5.5.dev13 → modal-1.5.5.dev15}/modal/_utils/blob_utils.py +0 -0
  66. {modal-1.5.5.dev13 → modal-1.5.5.dev15}/modal/_utils/browser_utils.py +0 -0
  67. {modal-1.5.5.dev13 → modal-1.5.5.dev15}/modal/_utils/bytes_io_segment_payload.py +0 -0
  68. {modal-1.5.5.dev13 → modal-1.5.5.dev15}/modal/_utils/curl_utils.py +0 -0
  69. {modal-1.5.5.dev13 → modal-1.5.5.dev15}/modal/_utils/deprecation.py +0 -0
  70. {modal-1.5.5.dev13 → modal-1.5.5.dev15}/modal/_utils/display_utils.py +0 -0
  71. {modal-1.5.5.dev13 → modal-1.5.5.dev15}/modal/_utils/docker_utils.py +0 -0
  72. {modal-1.5.5.dev13 → modal-1.5.5.dev15}/modal/_utils/function_utils.py +0 -0
  73. {modal-1.5.5.dev13 → modal-1.5.5.dev15}/modal/_utils/git_utils.py +0 -0
  74. {modal-1.5.5.dev13 → modal-1.5.5.dev15}/modal/_utils/grpc_testing.py +0 -0
  75. {modal-1.5.5.dev13 → modal-1.5.5.dev15}/modal/_utils/grpc_utils.py +0 -0
  76. {modal-1.5.5.dev13 → modal-1.5.5.dev15}/modal/_utils/hash_utils.py +0 -0
  77. {modal-1.5.5.dev13 → modal-1.5.5.dev15}/modal/_utils/http_utils.py +0 -0
  78. {modal-1.5.5.dev13 → modal-1.5.5.dev15}/modal/_utils/jwt_utils.py +0 -0
  79. {modal-1.5.5.dev13 → modal-1.5.5.dev15}/modal/_utils/logger.py +0 -0
  80. {modal-1.5.5.dev13 → modal-1.5.5.dev15}/modal/_utils/mount_utils.py +0 -0
  81. {modal-1.5.5.dev13 → modal-1.5.5.dev15}/modal/_utils/name_utils.py +0 -0
  82. {modal-1.5.5.dev13 → modal-1.5.5.dev15}/modal/_utils/package_utils.py +0 -0
  83. {modal-1.5.5.dev13 → modal-1.5.5.dev15}/modal/_utils/pattern_utils.py +0 -0
  84. {modal-1.5.5.dev13 → modal-1.5.5.dev15}/modal/_utils/proxy_support.py +0 -0
  85. {modal-1.5.5.dev13 → modal-1.5.5.dev15}/modal/_utils/rand_pb_testing.py +0 -0
  86. {modal-1.5.5.dev13 → modal-1.5.5.dev15}/modal/_utils/sandbox_fs_utils.py +0 -0
  87. {modal-1.5.5.dev13 → modal-1.5.5.dev15}/modal/_utils/shell_utils.py +0 -0
  88. {modal-1.5.5.dev13 → modal-1.5.5.dev15}/modal/_utils/task_command_router_client.py +0 -0
  89. {modal-1.5.5.dev13 → modal-1.5.5.dev15}/modal/_utils/time_utils.py +0 -0
  90. {modal-1.5.5.dev13 → modal-1.5.5.dev15}/modal/_vendor/__init__.py +0 -0
  91. {modal-1.5.5.dev13 → modal-1.5.5.dev15}/modal/_vendor/a2wsgi_wsgi.py +0 -0
  92. {modal-1.5.5.dev13 → modal-1.5.5.dev15}/modal/_vendor/cloudpickle.py +0 -0
  93. {modal-1.5.5.dev13 → modal-1.5.5.dev15}/modal/_vendor/tblib.py +0 -0
  94. {modal-1.5.5.dev13 → modal-1.5.5.dev15}/modal/_vendor/version.py +0 -0
  95. {modal-1.5.5.dev13 → modal-1.5.5.dev15}/modal/_watcher.py +0 -0
  96. {modal-1.5.5.dev13 → modal-1.5.5.dev15}/modal/_workspace.py +0 -0
  97. {modal-1.5.5.dev13 → modal-1.5.5.dev15}/modal/billing.py +0 -0
  98. {modal-1.5.5.dev13 → modal-1.5.5.dev15}/modal/billing.pyi +0 -0
  99. {modal-1.5.5.dev13 → modal-1.5.5.dev15}/modal/builder/2023.12.312.txt +0 -0
  100. {modal-1.5.5.dev13 → modal-1.5.5.dev15}/modal/builder/2023.12.txt +0 -0
  101. {modal-1.5.5.dev13 → modal-1.5.5.dev15}/modal/builder/2024.04.txt +0 -0
  102. {modal-1.5.5.dev13 → modal-1.5.5.dev15}/modal/builder/2024.10.txt +0 -0
  103. {modal-1.5.5.dev13 → modal-1.5.5.dev15}/modal/builder/2025.06.txt +0 -0
  104. {modal-1.5.5.dev13 → modal-1.5.5.dev15}/modal/builder/PREVIEW.txt +0 -0
  105. {modal-1.5.5.dev13 → modal-1.5.5.dev15}/modal/builder/README.md +0 -0
  106. {modal-1.5.5.dev13 → modal-1.5.5.dev15}/modal/builder/base-images.json +0 -0
  107. {modal-1.5.5.dev13 → modal-1.5.5.dev15}/modal/call_graph.py +0 -0
  108. {modal-1.5.5.dev13 → modal-1.5.5.dev15}/modal/cli/__init__.py +0 -0
  109. {modal-1.5.5.dev13 → modal-1.5.5.dev15}/modal/cli/_download.py +0 -0
  110. {modal-1.5.5.dev13 → modal-1.5.5.dev15}/modal/cli/_help.py +0 -0
  111. {modal-1.5.5.dev13 → modal-1.5.5.dev15}/modal/cli/_traceback.py +0 -0
  112. {modal-1.5.5.dev13 → modal-1.5.5.dev15}/modal/cli/app.py +0 -0
  113. {modal-1.5.5.dev13 → modal-1.5.5.dev15}/modal/cli/billing.py +0 -0
  114. {modal-1.5.5.dev13 → modal-1.5.5.dev15}/modal/cli/bootstrap.py +0 -0
  115. {modal-1.5.5.dev13 → modal-1.5.5.dev15}/modal/cli/changelog.py +0 -0
  116. {modal-1.5.5.dev13 → modal-1.5.5.dev15}/modal/cli/cluster.py +0 -0
  117. {modal-1.5.5.dev13 → modal-1.5.5.dev15}/modal/cli/config.py +0 -0
  118. {modal-1.5.5.dev13 → modal-1.5.5.dev15}/modal/cli/container.py +0 -0
  119. {modal-1.5.5.dev13 → modal-1.5.5.dev15}/modal/cli/curl.py +0 -0
  120. {modal-1.5.5.dev13 → modal-1.5.5.dev15}/modal/cli/dashboard.py +0 -0
  121. {modal-1.5.5.dev13 → modal-1.5.5.dev15}/modal/cli/dict.py +0 -0
  122. {modal-1.5.5.dev13 → modal-1.5.5.dev15}/modal/cli/endpoint.py +0 -0
  123. {modal-1.5.5.dev13 → modal-1.5.5.dev15}/modal/cli/entry_point.py +0 -0
  124. {modal-1.5.5.dev13 → modal-1.5.5.dev15}/modal/cli/environment.py +0 -0
  125. {modal-1.5.5.dev13 → modal-1.5.5.dev15}/modal/cli/image.py +0 -0
  126. {modal-1.5.5.dev13 → modal-1.5.5.dev15}/modal/cli/import_refs.py +0 -0
  127. {modal-1.5.5.dev13 → modal-1.5.5.dev15}/modal/cli/launch.py +0 -0
  128. {modal-1.5.5.dev13 → modal-1.5.5.dev15}/modal/cli/logo.py +0 -0
  129. {modal-1.5.5.dev13 → modal-1.5.5.dev15}/modal/cli/network_file_system.py +0 -0
  130. {modal-1.5.5.dev13 → modal-1.5.5.dev15}/modal/cli/profile.py +0 -0
  131. {modal-1.5.5.dev13 → modal-1.5.5.dev15}/modal/cli/programs/__init__.py +0 -0
  132. {modal-1.5.5.dev13 → modal-1.5.5.dev15}/modal/cli/programs/run_jupyter.py +0 -0
  133. {modal-1.5.5.dev13 → modal-1.5.5.dev15}/modal/cli/programs/vscode.py +0 -0
  134. {modal-1.5.5.dev13 → modal-1.5.5.dev15}/modal/cli/queues.py +0 -0
  135. {modal-1.5.5.dev13 → modal-1.5.5.dev15}/modal/cli/run.py +0 -0
  136. {modal-1.5.5.dev13 → modal-1.5.5.dev15}/modal/cli/secret.py +0 -0
  137. {modal-1.5.5.dev13 → modal-1.5.5.dev15}/modal/cli/selector.py +0 -0
  138. {modal-1.5.5.dev13 → modal-1.5.5.dev15}/modal/cli/shell.py +0 -0
  139. {modal-1.5.5.dev13 → modal-1.5.5.dev15}/modal/cli/skills.py +0 -0
  140. {modal-1.5.5.dev13 → modal-1.5.5.dev15}/modal/cli/token.py +0 -0
  141. {modal-1.5.5.dev13 → modal-1.5.5.dev15}/modal/cli/utils.py +0 -0
  142. {modal-1.5.5.dev13 → modal-1.5.5.dev15}/modal/cli/volume.py +0 -0
  143. {modal-1.5.5.dev13 → modal-1.5.5.dev15}/modal/cli/workspace.py +0 -0
  144. {modal-1.5.5.dev13 → modal-1.5.5.dev15}/modal/client.py +0 -0
  145. {modal-1.5.5.dev13 → modal-1.5.5.dev15}/modal/cloud_bucket_mount.py +0 -0
  146. {modal-1.5.5.dev13 → modal-1.5.5.dev15}/modal/cloud_bucket_mount.pyi +0 -0
  147. {modal-1.5.5.dev13 → modal-1.5.5.dev15}/modal/config.py +0 -0
  148. {modal-1.5.5.dev13 → modal-1.5.5.dev15}/modal/container_process.py +0 -0
  149. {modal-1.5.5.dev13 → modal-1.5.5.dev15}/modal/container_process.pyi +0 -0
  150. {modal-1.5.5.dev13 → modal-1.5.5.dev15}/modal/dict.py +0 -0
  151. {modal-1.5.5.dev13 → modal-1.5.5.dev15}/modal/dict.pyi +0 -0
  152. {modal-1.5.5.dev13 → modal-1.5.5.dev15}/modal/environments.py +0 -0
  153. {modal-1.5.5.dev13 → modal-1.5.5.dev15}/modal/environments.pyi +0 -0
  154. {modal-1.5.5.dev13 → modal-1.5.5.dev15}/modal/exception.py +0 -0
  155. {modal-1.5.5.dev13 → modal-1.5.5.dev15}/modal/experimental/__init__.py +0 -0
  156. {modal-1.5.5.dev13 → modal-1.5.5.dev15}/modal/experimental/flash.py +0 -0
  157. {modal-1.5.5.dev13 → modal-1.5.5.dev15}/modal/experimental/flash.pyi +0 -0
  158. {modal-1.5.5.dev13 → modal-1.5.5.dev15}/modal/experimental/ipython.py +0 -0
  159. {modal-1.5.5.dev13 → modal-1.5.5.dev15}/modal/file_io.py +0 -0
  160. {modal-1.5.5.dev13 → modal-1.5.5.dev15}/modal/file_io.pyi +0 -0
  161. {modal-1.5.5.dev13 → modal-1.5.5.dev15}/modal/file_pattern_matcher.py +0 -0
  162. {modal-1.5.5.dev13 → modal-1.5.5.dev15}/modal/functions.py +0 -0
  163. {modal-1.5.5.dev13 → modal-1.5.5.dev15}/modal/image.py +0 -0
  164. {modal-1.5.5.dev13 → modal-1.5.5.dev15}/modal/image.pyi +0 -0
  165. {modal-1.5.5.dev13 → modal-1.5.5.dev15}/modal/io_streams.py +0 -0
  166. {modal-1.5.5.dev13 → modal-1.5.5.dev15}/modal/io_streams.pyi +0 -0
  167. {modal-1.5.5.dev13 → modal-1.5.5.dev15}/modal/mount.py +0 -0
  168. {modal-1.5.5.dev13 → modal-1.5.5.dev15}/modal/mount.pyi +0 -0
  169. {modal-1.5.5.dev13 → modal-1.5.5.dev15}/modal/network_file_system.py +0 -0
  170. {modal-1.5.5.dev13 → modal-1.5.5.dev15}/modal/network_file_system.pyi +0 -0
  171. {modal-1.5.5.dev13 → modal-1.5.5.dev15}/modal/object.py +0 -0
  172. {modal-1.5.5.dev13 → modal-1.5.5.dev15}/modal/output.py +0 -0
  173. {modal-1.5.5.dev13 → modal-1.5.5.dev15}/modal/parallel_map.py +0 -0
  174. {modal-1.5.5.dev13 → modal-1.5.5.dev15}/modal/parallel_map.pyi +0 -0
  175. {modal-1.5.5.dev13 → modal-1.5.5.dev15}/modal/partial_function.py +0 -0
  176. {modal-1.5.5.dev13 → modal-1.5.5.dev15}/modal/partial_function.pyi +0 -0
  177. {modal-1.5.5.dev13 → modal-1.5.5.dev15}/modal/proxy.py +0 -0
  178. {modal-1.5.5.dev13 → modal-1.5.5.dev15}/modal/proxy.pyi +0 -0
  179. {modal-1.5.5.dev13 → modal-1.5.5.dev15}/modal/py.typed +0 -0
  180. {modal-1.5.5.dev13 → modal-1.5.5.dev15}/modal/queue.py +0 -0
  181. {modal-1.5.5.dev13 → modal-1.5.5.dev15}/modal/queue.pyi +0 -0
  182. {modal-1.5.5.dev13 → modal-1.5.5.dev15}/modal/retries.py +0 -0
  183. {modal-1.5.5.dev13 → modal-1.5.5.dev15}/modal/runner.py +0 -0
  184. {modal-1.5.5.dev13 → modal-1.5.5.dev15}/modal/runner.pyi +0 -0
  185. {modal-1.5.5.dev13 → modal-1.5.5.dev15}/modal/running_app.py +0 -0
  186. {modal-1.5.5.dev13 → modal-1.5.5.dev15}/modal/sandbox.pyi +0 -0
  187. {modal-1.5.5.dev13 → modal-1.5.5.dev15}/modal/sandbox_fs.py +0 -0
  188. {modal-1.5.5.dev13 → modal-1.5.5.dev15}/modal/sandbox_fs.pyi +0 -0
  189. {modal-1.5.5.dev13 → modal-1.5.5.dev15}/modal/schedule.py +0 -0
  190. {modal-1.5.5.dev13 → modal-1.5.5.dev15}/modal/scheduler_placement.py +0 -0
  191. {modal-1.5.5.dev13 → modal-1.5.5.dev15}/modal/secret.py +0 -0
  192. {modal-1.5.5.dev13 → modal-1.5.5.dev15}/modal/secret.pyi +0 -0
  193. {modal-1.5.5.dev13 → modal-1.5.5.dev15}/modal/server.py +0 -0
  194. {modal-1.5.5.dev13 → modal-1.5.5.dev15}/modal/server.pyi +0 -0
  195. {modal-1.5.5.dev13 → modal-1.5.5.dev15}/modal/serving.py +0 -0
  196. {modal-1.5.5.dev13 → modal-1.5.5.dev15}/modal/serving.pyi +0 -0
  197. {modal-1.5.5.dev13 → modal-1.5.5.dev15}/modal/skills/modal/SKILL.md +0 -0
  198. {modal-1.5.5.dev13 → modal-1.5.5.dev15}/modal/snapshot.py +0 -0
  199. {modal-1.5.5.dev13 → modal-1.5.5.dev15}/modal/snapshot.pyi +0 -0
  200. {modal-1.5.5.dev13 → modal-1.5.5.dev15}/modal/stream_type.py +0 -0
  201. {modal-1.5.5.dev13 → modal-1.5.5.dev15}/modal/token_flow.py +0 -0
  202. {modal-1.5.5.dev13 → modal-1.5.5.dev15}/modal/token_flow.pyi +0 -0
  203. {modal-1.5.5.dev13 → modal-1.5.5.dev15}/modal/types.py +0 -0
  204. {modal-1.5.5.dev13 → modal-1.5.5.dev15}/modal/volume.py +0 -0
  205. {modal-1.5.5.dev13 → modal-1.5.5.dev15}/modal/volume.pyi +0 -0
  206. {modal-1.5.5.dev13 → modal-1.5.5.dev15}/modal/workspace.py +0 -0
  207. {modal-1.5.5.dev13 → modal-1.5.5.dev15}/modal/workspace.pyi +0 -0
  208. {modal-1.5.5.dev13 → modal-1.5.5.dev15}/modal.egg-info/SOURCES.txt +0 -0
  209. {modal-1.5.5.dev13 → modal-1.5.5.dev15}/modal.egg-info/dependency_links.txt +0 -0
  210. {modal-1.5.5.dev13 → modal-1.5.5.dev15}/modal.egg-info/entry_points.txt +0 -0
  211. {modal-1.5.5.dev13 → modal-1.5.5.dev15}/modal.egg-info/requires.txt +0 -0
  212. {modal-1.5.5.dev13 → modal-1.5.5.dev15}/modal.egg-info/top_level.txt +0 -0
  213. {modal-1.5.5.dev13 → modal-1.5.5.dev15}/modal_docs/__init__.py +0 -0
  214. {modal-1.5.5.dev13 → modal-1.5.5.dev15}/modal_docs/gen_cli_docs.py +0 -0
  215. {modal-1.5.5.dev13 → modal-1.5.5.dev15}/modal_docs/gen_cli_docs_main.py +0 -0
  216. {modal-1.5.5.dev13 → modal-1.5.5.dev15}/modal_docs/gen_reference_docs.py +0 -0
  217. {modal-1.5.5.dev13 → modal-1.5.5.dev15}/modal_docs/gen_reference_docs_main.py +0 -0
  218. {modal-1.5.5.dev13 → modal-1.5.5.dev15}/modal_docs/mdmd/__init__.py +0 -0
  219. {modal-1.5.5.dev13 → modal-1.5.5.dev15}/modal_docs/mdmd/mdmd.py +0 -0
  220. {modal-1.5.5.dev13 → modal-1.5.5.dev15}/modal_docs/mdmd/signatures.py +0 -0
  221. {modal-1.5.5.dev13 → modal-1.5.5.dev15}/modal_docs/mdmd/types.py +0 -0
  222. {modal-1.5.5.dev13 → modal-1.5.5.dev15}/modal_docs/reference_intro.md +0 -0
  223. {modal-1.5.5.dev13 → modal-1.5.5.dev15}/modal_proto/__init__.py +0 -0
  224. {modal-1.5.5.dev13 → modal-1.5.5.dev15}/modal_proto/api_grpc.py +0 -0
  225. {modal-1.5.5.dev13 → modal-1.5.5.dev15}/modal_proto/api_pb2.py +0 -0
  226. {modal-1.5.5.dev13 → modal-1.5.5.dev15}/modal_proto/api_pb2.pyi +0 -0
  227. {modal-1.5.5.dev13 → modal-1.5.5.dev15}/modal_proto/api_pb2_grpc.py +0 -0
  228. {modal-1.5.5.dev13 → modal-1.5.5.dev15}/modal_proto/api_pb2_grpc.pyi +0 -0
  229. {modal-1.5.5.dev13 → modal-1.5.5.dev15}/modal_proto/modal_api_grpc.py +0 -0
  230. {modal-1.5.5.dev13 → modal-1.5.5.dev15}/modal_proto/py.typed +0 -0
  231. {modal-1.5.5.dev13 → modal-1.5.5.dev15}/modal_proto/task_command_router_grpc.py +0 -0
  232. {modal-1.5.5.dev13 → modal-1.5.5.dev15}/modal_proto/task_command_router_pb2_grpc.py +0 -0
  233. {modal-1.5.5.dev13 → modal-1.5.5.dev15}/modal_proto/task_command_router_pb2_grpc.pyi +0 -0
  234. {modal-1.5.5.dev13 → modal-1.5.5.dev15}/modal_version/__main__.py +0 -0
  235. {modal-1.5.5.dev13 → modal-1.5.5.dev15}/pyproject.toml +0 -0
  236. {modal-1.5.5.dev13 → modal-1.5.5.dev15}/setup.cfg +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: modal
3
- Version: 1.5.5.dev13
3
+ Version: 1.5.5.dev15
4
4
  Summary: Python client library for Modal
5
5
  Author-email: Modal Labs <support@modal.com>
6
6
  License-Expression: Apache-2.0
@@ -663,7 +663,7 @@ class _Function(typing.Generic[P, ReturnType, OriginalReturnType], _Object, type
663
663
  return _FunctionLogsManager(self)
664
664
 
665
665
  @staticmethod
666
- def from_local(
666
+ def _from_local(
667
667
  info: FunctionInfo,
668
668
  app: "modal.app._App | None", # App here should only be None in case of Image.run_function
669
669
  image: _Image,
@@ -1164,7 +1164,9 @@ class _Function(typing.Generic[P, ReturnType, OriginalReturnType], _Object, type
1164
1164
  # the only way to infer a LoadContext for an `@app.function`, and the App doesn't
1165
1165
  # get its client until *after* the Function is created.
1166
1166
  load_context = app._root_load_context if app else LoadContext.empty()
1167
- obj = _Function._from_loader(_load, rep, preload=_preload, deps=_deps, load_context_overrides=load_context)
1167
+ obj: _Function = _Function._from_loader(
1168
+ _load, rep, preload=_preload, deps=_deps, load_context_overrides=load_context
1169
+ )
1168
1170
 
1169
1171
  obj._raw_f = info.raw_f
1170
1172
  obj._info = info
@@ -1192,6 +1194,9 @@ class _Function(typing.Generic[P, ReturnType, OriginalReturnType], _Object, type
1192
1194
 
1193
1195
  return obj
1194
1196
 
1197
+ from_local = _from_local
1198
+ """mdmd:hidden"""
1199
+
1195
1200
  async def _update_autoscaler(
1196
1201
  self,
1197
1202
  *,
@@ -1386,6 +1391,10 @@ class _Function(typing.Generic[P, ReturnType, OriginalReturnType], _Object, type
1386
1391
  @property
1387
1392
  def tag(self) -> str:
1388
1393
  """mdmd:hidden"""
1394
+ return self._tag_
1395
+
1396
+ @property
1397
+ def _tag_(self) -> str:
1389
1398
  assert self._tag
1390
1399
  return self._tag
1391
1400
 
@@ -1406,12 +1415,20 @@ class _Function(typing.Generic[P, ReturnType, OriginalReturnType], _Object, type
1406
1415
  @property
1407
1416
  def info(self) -> FunctionInfo:
1408
1417
  """mdmd:hidden"""
1418
+ return self._info_
1419
+
1420
+ @property
1421
+ def _info_(self) -> FunctionInfo:
1409
1422
  assert self._info
1410
1423
  return self._info
1411
1424
 
1412
1425
  @property
1413
1426
  def spec(self) -> _FunctionSpec:
1414
1427
  """mdmd:hidden"""
1428
+ return self._spec_
1429
+
1430
+ @property
1431
+ def _spec_(self) -> _FunctionSpec:
1415
1432
  assert self._spec
1416
1433
  return self._spec
1417
1434
 
@@ -1419,13 +1436,16 @@ class _Function(typing.Generic[P, ReturnType, OriginalReturnType], _Object, type
1419
1436
  # only defined in definition scope/locally, and not for class methods at the moment
1420
1437
  return bool(self._webhook_config and self._webhook_config.type != api_pb2.WEBHOOK_TYPE_UNSPECIFIED)
1421
1438
 
1422
- def get_build_def(self) -> str:
1439
+ def _get_build_def(self) -> str:
1423
1440
  """mdmd:hidden"""
1424
1441
  # Plaintext source and arg definition for the function, so it's part of the image
1425
1442
  # hash. We can't use the cloudpickle hash because it's not very stable.
1426
1443
  assert hasattr(self, "_raw_f") and hasattr(self, "_build_args") and self._raw_f is not None
1427
1444
  return f"{inspect.getsource(self._raw_f)}\n{repr(self._build_args)}"
1428
1445
 
1446
+ get_build_def = _get_build_def
1447
+ """mdmd:hidden"""
1448
+
1429
1449
  # Live handle methods
1430
1450
 
1431
1451
  def _initialize_from_empty(self):
@@ -1675,6 +1695,10 @@ class _Function(typing.Generic[P, ReturnType, OriginalReturnType], _Object, type
1675
1695
  @property
1676
1696
  async def is_generator(self) -> bool:
1677
1697
  """mdmd:hidden"""
1698
+ return await self._is_generator_
1699
+
1700
+ @property
1701
+ async def _is_generator_(self) -> bool:
1678
1702
  # hacky: kind of like @live_method, but not hydrating if we have the value already from local source
1679
1703
  # TODO(michael) use a common / lightweight method for handling unhydrated metadata properties
1680
1704
  if self._is_generator is not None:
@@ -2014,6 +2038,10 @@ class _Function(typing.Generic[P, ReturnType, OriginalReturnType], _Object, type
2014
2038
  Returns:
2015
2039
  The original function object registered with Modal.
2016
2040
  """
2041
+ return self._raw_f_
2042
+
2043
+ @property
2044
+ def _raw_f_(self) -> Callable[..., Any]:
2017
2045
  assert self._raw_f is not None
2018
2046
  return self._raw_f
2019
2047
 
@@ -209,7 +209,7 @@ class _Object:
209
209
  name: str | None = None,
210
210
  *,
211
211
  load_context_overrides: LoadContext,
212
- ):
212
+ ) -> Self:
213
213
  # TODO(erikbern): flip the order of the two first arguments
214
214
  obj = _Object.__new__(cls)
215
215
  obj._init(
@@ -313,7 +313,10 @@ class _Object:
313
313
  @property
314
314
  def deps(self) -> Callable[..., Sequence["_Object"]]:
315
315
  """mdmd:hidden"""
316
+ return self._deps_
316
317
 
318
+ @property
319
+ def _deps_(self) -> Callable[..., Sequence["_Object"]]:
317
320
  def default_deps(*args, **kwargs) -> Sequence["_Object"]:
318
321
  return []
319
322
 
@@ -275,6 +275,11 @@ class _App:
275
275
 
276
276
  @property
277
277
  def is_interactive(self) -> bool:
278
+ """mdmd:hidden"""
279
+ return self._is_interactive_
280
+
281
+ @property
282
+ def _is_interactive_(self) -> bool:
278
283
  """mdmd:hidden
279
284
  Whether the current app for the app is running in interactive mode.
280
285
 
@@ -305,6 +310,11 @@ class _App:
305
310
  """
306
311
  return self._description
307
312
 
313
+ @description.setter
314
+ def description(self, value):
315
+ """mdmd:hidden"""
316
+ self._description = value
317
+
308
318
  @staticmethod
309
319
  async def lookup(
310
320
  name: str,
@@ -379,7 +389,7 @@ class _App:
379
389
 
380
390
  Note: we don't recommend using the method and may deprecate it in the future.
381
391
  """
382
- self._description = description
392
+ self.description = description
383
393
 
384
394
  def _validate_blueprint_value(self, key: str, value: Any):
385
395
  if not isinstance(value, _Object):
@@ -205,6 +205,11 @@ class _App:
205
205
 
206
206
  @property
207
207
  def is_interactive(self) -> bool:
208
+ """mdmd:hidden"""
209
+ ...
210
+
211
+ @property
212
+ def _is_interactive_(self) -> bool:
208
213
  """mdmd:hidden
209
214
  Whether the current app for the app is running in interactive mode.
210
215
 
@@ -230,6 +235,11 @@ class _App:
230
235
  """
231
236
  ...
232
237
 
238
+ @description.setter
239
+ def description(self, value):
240
+ """mdmd:hidden"""
241
+ ...
242
+
233
243
  @staticmethod
234
244
  async def lookup(
235
245
  name: str,
@@ -1023,6 +1033,11 @@ class App:
1023
1033
 
1024
1034
  @property
1025
1035
  def is_interactive(self) -> bool:
1036
+ """mdmd:hidden"""
1037
+ ...
1038
+
1039
+ @property
1040
+ def _is_interactive_(self) -> bool:
1026
1041
  """mdmd:hidden
1027
1042
  Whether the current app for the app is running in interactive mode.
1028
1043
 
@@ -1048,6 +1063,11 @@ class App:
1048
1063
  """
1049
1064
  ...
1050
1065
 
1066
+ @description.setter
1067
+ def description(self, value):
1068
+ """mdmd:hidden"""
1069
+ ...
1070
+
1051
1071
  class __lookup_spec(typing_extensions.Protocol):
1052
1072
  def __call__(
1053
1073
  self,
@@ -38,7 +38,7 @@ class _Client:
38
38
  server_url: str,
39
39
  client_type: int,
40
40
  credentials: typing.Optional[tuple[str, str]],
41
- version: str = "1.5.5.dev13",
41
+ version: str = "1.5.5.dev15",
42
42
  ):
43
43
  """mdmd:hidden
44
44
  The Modal client object is not intended to be instantiated directly by users.
@@ -209,7 +209,7 @@ class Client:
209
209
  server_url: str,
210
210
  client_type: int,
211
211
  credentials: typing.Optional[tuple[str, str]],
212
- version: str = "1.5.5.dev13",
212
+ version: str = "1.5.5.dev15",
213
213
  ):
214
214
  """mdmd:hidden
215
215
  The Modal client object is not intended to be instantiated directly by users.
@@ -563,7 +563,7 @@ class _Cls(_Object, type_prefix="cs"):
563
563
  self._method_metadata = method_metadata
564
564
 
565
565
  @staticmethod
566
- def validate_construction_mechanism(user_cls):
566
+ def _validate_construction_mechanism(user_cls):
567
567
  """mdmd:hidden"""
568
568
  params = {k: v for k, v in user_cls.__dict__.items() if is_parameter(v)}
569
569
  has_custom_constructor = user_cls.__init__ != object.__init__
@@ -600,8 +600,11 @@ More information on class parameterization can be found here: https://modal.com/
600
600
  except TypeError as exc:
601
601
  raise InvalidError(f"Class parameter '{k}': {exc}")
602
602
 
603
+ validate_construction_mechanism = _validate_construction_mechanism
604
+ """mdmd:hidden"""
605
+
603
606
  @staticmethod
604
- def from_local(user_cls, app: "modal.app._App", class_service_function: _Function) -> "_Cls":
607
+ def _from_local(user_cls, app: "modal.app._App", class_service_function: _Function) -> "_Cls":
605
608
  """mdmd:hidden"""
606
609
  # validate signature
607
610
  _Cls.validate_construction_mechanism(user_cls)
@@ -642,6 +645,9 @@ More information on class parameterization can be found here: https://modal.com/
642
645
  cls._name = user_cls.__name__
643
646
  return cls
644
647
 
648
+ from_local = _from_local
649
+ """mdmd:hidden"""
650
+
645
651
  @classmethod
646
652
  def from_name(
647
653
  cls: type["_Cls"],
@@ -288,11 +288,21 @@ class _Cls(modal._object._Object):
288
288
  ...
289
289
 
290
290
  def _hydrate_metadata(self, metadata: google.protobuf.message.Message): ...
291
+ @staticmethod
292
+ def _validate_construction_mechanism(user_cls):
293
+ """mdmd:hidden"""
294
+ ...
295
+
291
296
  @staticmethod
292
297
  def validate_construction_mechanism(user_cls):
293
298
  """mdmd:hidden"""
294
299
  ...
295
300
 
301
+ @staticmethod
302
+ def _from_local(user_cls, app: modal.app._App, class_service_function: modal._functions._Function) -> _Cls:
303
+ """mdmd:hidden"""
304
+ ...
305
+
296
306
  @staticmethod
297
307
  def from_local(user_cls, app: modal.app._App, class_service_function: modal._functions._Function) -> _Cls:
298
308
  """mdmd:hidden"""
@@ -504,11 +514,21 @@ class Cls(modal.object.Object):
504
514
  _experimental_get_flash_urls: ___experimental_get_flash_urls_spec
505
515
 
506
516
  def _hydrate_metadata(self, metadata: google.protobuf.message.Message): ...
517
+ @staticmethod
518
+ def _validate_construction_mechanism(user_cls):
519
+ """mdmd:hidden"""
520
+ ...
521
+
507
522
  @staticmethod
508
523
  def validate_construction_mechanism(user_cls):
509
524
  """mdmd:hidden"""
510
525
  ...
511
526
 
527
+ @staticmethod
528
+ def _from_local(user_cls, app: modal.app.App, class_service_function: modal.functions.Function) -> Cls:
529
+ """mdmd:hidden"""
530
+ ...
531
+
512
532
  @staticmethod
513
533
  def from_local(user_cls, app: modal.app.App, class_service_function: modal.functions.Function) -> Cls:
514
534
  """mdmd:hidden"""
@@ -87,6 +87,66 @@ class Function(
87
87
  """
88
88
  ...
89
89
 
90
+ @staticmethod
91
+ def _from_local(
92
+ info: modal._utils.function_utils.FunctionInfo,
93
+ app: typing.Optional[modal.app.App],
94
+ image: modal.image.Image,
95
+ env: typing.Optional[dict[str, typing.Optional[str]]] = None,
96
+ secrets: typing.Optional[collections.abc.Collection[modal.secret.Secret]] = None,
97
+ schedule: typing.Optional[modal.schedule.Schedule] = None,
98
+ is_generator: bool = False,
99
+ gpu: typing.Union[str, list[str], None] = None,
100
+ network_file_systems: dict[
101
+ typing.Union[str, pathlib.PurePosixPath], modal.network_file_system.NetworkFileSystem
102
+ ] = {},
103
+ volumes: dict[
104
+ typing.Union[str, pathlib.PurePosixPath],
105
+ typing.Union[modal.volume.Volume, modal.cloud_bucket_mount.CloudBucketMount],
106
+ ] = {},
107
+ webhook_config: typing.Optional[modal_proto.api_pb2.WebhookConfig] = None,
108
+ cpu: typing.Union[float, tuple[float, float], None] = None,
109
+ memory: typing.Union[int, tuple[int, int], None] = None,
110
+ proxy: typing.Optional[modal.proxy.Proxy] = None,
111
+ retries: typing.Union[int, modal.retries.Retries, None] = None,
112
+ timeout: int = 300,
113
+ startup_timeout: typing.Optional[int] = None,
114
+ min_containers: typing.Optional[int] = None,
115
+ max_containers: typing.Optional[int] = None,
116
+ buffer_containers: typing.Optional[int] = None,
117
+ scaleup_window: typing.Optional[int] = None,
118
+ scaledown_window: typing.Optional[int] = None,
119
+ max_concurrent_inputs: typing.Optional[int] = None,
120
+ target_concurrent_inputs: typing.Optional[float] = None,
121
+ batch_max_size: typing.Optional[int] = None,
122
+ batch_wait_ms: typing.Optional[int] = None,
123
+ cloud: typing.Optional[str] = None,
124
+ region: typing.Union[str, collections.abc.Sequence[str], None] = None,
125
+ routing_region: typing.Optional[str] = None,
126
+ nonpreemptible: bool = False,
127
+ is_builder_function: bool = False,
128
+ is_auto_snapshot: bool = False,
129
+ is_server: bool = False,
130
+ enable_memory_snapshot: bool = False,
131
+ block_network: bool = False,
132
+ restrict_modal_access: bool = False,
133
+ i6pn_enabled: bool = False,
134
+ cluster_size: typing.Optional[int] = None,
135
+ rdma: typing.Optional[bool] = None,
136
+ fabric_size: typing.Optional[int] = None,
137
+ single_use_containers: bool = False,
138
+ ephemeral_disk: typing.Optional[int] = None,
139
+ include_source: bool = True,
140
+ experimental_options: typing.Optional[dict[str, str]] = None,
141
+ restrict_output: bool = False,
142
+ http_config: typing.Optional[modal_proto.api_pb2.HTTPConfig] = None,
143
+ ) -> Function:
144
+ """mdmd:hidden
145
+
146
+ Note: This is not intended to be public API.
147
+ """
148
+ ...
149
+
90
150
  @staticmethod
91
151
  def from_local(
92
152
  info: modal._utils.function_utils.FunctionInfo,
@@ -336,6 +396,8 @@ class Function(
336
396
  """mdmd:hidden"""
337
397
  ...
338
398
 
399
+ @property
400
+ def _tag_(self) -> str: ...
339
401
  @property
340
402
  def app(self) -> modal.app.App:
341
403
  """mdmd:hidden"""
@@ -351,12 +413,20 @@ class Function(
351
413
  """mdmd:hidden"""
352
414
  ...
353
415
 
416
+ @property
417
+ def _info_(self) -> modal._utils.function_utils.FunctionInfo: ...
354
418
  @property
355
419
  def spec(self) -> modal._functions._FunctionSpec:
356
420
  """mdmd:hidden"""
357
421
  ...
358
422
 
423
+ @property
424
+ def _spec_(self) -> modal._functions._FunctionSpec: ...
359
425
  def _is_web_endpoint(self) -> bool: ...
426
+ def _get_build_def(self) -> str:
427
+ """mdmd:hidden"""
428
+ ...
429
+
360
430
  def get_build_def(self) -> str:
361
431
  """mdmd:hidden"""
362
432
  ...
@@ -487,6 +557,9 @@ class Function(
487
557
  """mdmd:hidden"""
488
558
  ...
489
559
 
560
+ @property
561
+ def _is_generator_(self) -> bool: ...
562
+
490
563
  class ___map_spec(typing_extensions.Protocol):
491
564
  def __call__(
492
565
  self, /, input_queue: modal.parallel_map.SynchronizedQueue, order_outputs: bool, return_exceptions: bool
@@ -705,6 +778,9 @@ class Function(
705
778
  """
706
779
  ...
707
780
 
781
+ @property
782
+ def _raw_f_(self) -> collections.abc.Callable[..., typing.Any]: ...
783
+
708
784
  class __get_current_stats_spec(typing_extensions.Protocol):
709
785
  def __call__(self, /) -> modal.types.FunctionStats:
710
786
  """Return a `FunctionStats` object describing the current function's queue and runner counts.
@@ -86,30 +86,18 @@ class Object:
86
86
  def _get_metadata(self) -> typing.Optional[google.protobuf.message.Message]: ...
87
87
  def _validate_is_hydrated(self): ...
88
88
 
89
- class ___from_loader_spec(typing_extensions.Protocol):
89
+ class ___from_loader_spec(typing_extensions.Protocol[SUPERSELF]):
90
90
  def __call__(
91
91
  self,
92
92
  /,
93
93
  load: collections.abc.Callable[
94
- [
95
- typing_extensions.Self,
96
- modal._resolver.Resolver,
97
- modal._load_context.LoadContext,
98
- typing.Optional[str],
99
- ],
100
- None,
94
+ [SUPERSELF, modal._resolver.Resolver, modal._load_context.LoadContext, typing.Optional[str]], None
101
95
  ],
102
96
  rep: str,
103
97
  skip_reload: bool = False,
104
98
  preload: typing.Optional[
105
99
  collections.abc.Callable[
106
- [
107
- typing_extensions.Self,
108
- modal._resolver.Resolver,
109
- modal._load_context.LoadContext,
110
- typing.Optional[str],
111
- ],
112
- None,
100
+ [SUPERSELF, modal._resolver.Resolver, modal._load_context.LoadContext, typing.Optional[str]], None
113
101
  ]
114
102
  ] = None,
115
103
  hydrate_lazily: bool = False,
@@ -118,29 +106,19 @@ class Object:
118
106
  name: typing.Optional[str] = None,
119
107
  *,
120
108
  load_context_overrides: modal._load_context.LoadContext,
121
- ): ...
109
+ ) -> SUPERSELF: ...
122
110
  def aio(
123
111
  self,
124
112
  /,
125
113
  load: collections.abc.Callable[
126
- [
127
- typing_extensions.Self,
128
- modal._resolver.Resolver,
129
- modal._load_context.LoadContext,
130
- typing.Optional[str],
131
- ],
114
+ [SUPERSELF, modal._resolver.Resolver, modal._load_context.LoadContext, typing.Optional[str]],
132
115
  collections.abc.Awaitable[None],
133
116
  ],
134
117
  rep: str,
135
118
  skip_reload: bool = False,
136
119
  preload: typing.Optional[
137
120
  collections.abc.Callable[
138
- [
139
- typing_extensions.Self,
140
- modal._resolver.Resolver,
141
- modal._load_context.LoadContext,
142
- typing.Optional[str],
143
- ],
121
+ [SUPERSELF, modal._resolver.Resolver, modal._load_context.LoadContext, typing.Optional[str]],
144
122
  collections.abc.Awaitable[None],
145
123
  ]
146
124
  ] = None,
@@ -152,9 +130,9 @@ class Object:
152
130
  name: typing.Optional[str] = None,
153
131
  *,
154
132
  load_context_overrides: modal._load_context.LoadContext,
155
- ): ...
133
+ ) -> SUPERSELF: ...
156
134
 
157
- _from_loader: typing.ClassVar[___from_loader_spec]
135
+ _from_loader: typing.ClassVar[___from_loader_spec[typing_extensions.Self]]
158
136
 
159
137
  @staticmethod
160
138
  def _get_type_from_id(object_id: str) -> type[Object]: ...
@@ -209,6 +187,9 @@ class Object:
209
187
  """mdmd:hidden"""
210
188
  ...
211
189
 
190
+ @property
191
+ def _deps_(self) -> collections.abc.Callable[..., collections.abc.Sequence[Object]]: ...
192
+
212
193
  class __hydrate_spec(typing_extensions.Protocol[SUPERSELF]):
213
194
  def __call__(self, /, client: typing.Optional[modal.client.Client] = None) -> SUPERSELF:
214
195
  """Synchronize the local object with its identity on the Modal server.
@@ -1473,9 +1473,14 @@ class _Sandbox(_Object, type_prefix="sb"):
1473
1473
 
1474
1474
  while True:
1475
1475
  request_timeout = 10.0 if deadline is None else min(10.0, max(0.0, deadline - time.monotonic()))
1476
- resp: api_pb2.SandboxGetExitSnapshotResponse = await client.stub.SandboxGetExitSnapshot(
1477
- api_pb2.SandboxGetExitSnapshotRequest(sandbox_id=self.object_id, timeout=request_timeout)
1478
- )
1476
+ req = api_pb2.SandboxGetExitSnapshotRequest(sandbox_id=self.object_id, timeout=request_timeout)
1477
+ resp: api_pb2.SandboxGetExitSnapshotResponse
1478
+ if self._is_v2:
1479
+ assert client._auth_token_manager
1480
+ auth_token = await client._auth_token_manager.get_token()
1481
+ resp = await client.stub.SandboxGetExitSnapshotV2(req, metadata=[("x-modal-auth-token", auth_token)])
1482
+ else:
1483
+ resp = await client.stub.SandboxGetExitSnapshot(req)
1479
1484
  outcome = resp.WhichOneof("outcome")
1480
1485
 
1481
1486
  if outcome == "success":
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: modal
3
- Version: 1.5.5.dev13
3
+ Version: 1.5.5.dev15
4
4
  Summary: Python client library for Modal
5
5
  Author-email: Modal Labs <support@modal.com>
6
6
  License-Expression: Apache-2.0
@@ -17,7 +17,7 @@ from google.protobuf import empty_pb2 as google_dot_protobuf_dot_empty__pb2
17
17
  from modal_proto import api_pb2 as modal__proto_dot_api__pb2
18
18
 
19
19
 
20
- DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n%modal_proto/task_command_router.proto\x12\x19modal.task_command_router\x1a\x1bgoogle/protobuf/empty.proto\x1a\x15modal_proto/api.proto\"X\n\x1aSandboxStdinWriteV2Request\x12\x0f\n\x07task_id\x18\x01 \x01(\t\x12\x0e\n\x06offset\x18\x02 \x01(\x04\x12\x0c\n\x04\x64\x61ta\x18\x03 \x01(\x0c\x12\x0b\n\x03\x65of\x18\x04 \x01(\x08\"\x1d\n\x1bSandboxStdinWriteV2Response\"\x8c\x01\n\x19SandboxStdioReadV2Request\x12\x0f\n\x07task_id\x18\x01 \x01(\t\x12\x0e\n\x06offset\x18\x02 \x01(\x04\x12N\n\x0f\x66ile_descriptor\x18\x03 \x01(\x0e\x32\x35.modal.task_command_router.SandboxStdioFileDescriptor\"C\n\x1aSandboxStdioReadV2Response\x12\x0c\n\x04\x64\x61ta\x18\x01 \x01(\x0c\x12\x17\n\x0fstarting_offset\x18\x02 \x01(\x04\"C\n\x1fSandboxWaitUntilReadyTcrRequest\x12\x0f\n\x07task_id\x18\x01 \x01(\t\x12\x0f\n\x07timeout\x18\x02 \x01(\x02\"4\n SandboxWaitUntilReadyTcrResponse\x12\x10\n\x08ready_at\x18\x01 \x01(\x01\"\xbd\x03\n\x1aTaskContainerCreateRequest\x12\x0f\n\x07task_id\x18\x01 \x01(\t\x12\x16\n\x0e\x63ontainer_name\x18\x02 \x01(\t\x12\x10\n\x08image_id\x18\x03 \x01(\t\x12\x0c\n\x04\x61rgs\x18\x05 \x03(\t\x12K\n\x03\x65nv\x18\x06 \x03(\x0b\x32>.modal.task_command_router.TaskContainerCreateRequest.EnvEntry\x12\x0f\n\x07workdir\x18\x07 \x01(\t\x12\x12\n\nsecret_ids\x18\x08 \x03(\t\x12\x30\n\rvolume_mounts\x18\t \x03(\x0b\x32\x19.modal.client.VolumeMount\x12\x38\n\x0enetwork_access\x18\n \x01(\x0b\x32\x1b.modal.client.NetworkAccessH\x00\x88\x01\x01\x12,\n\x08pty_info\x18\x0b \x01(\x0b\x32\x15.modal.client.PTYInfoH\x01\x88\x01\x01\x1a*\n\x08\x45nvEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\r\n\x05value\x18\x02 \x01(\t:\x02\x38\x01\x42\x11\n\x0f_network_accessB\x0b\n\t_pty_info\"K\n\x1bTaskContainerCreateResponse\x12\x14\n\x0c\x63ontainer_id\x18\x01 \x01(\t\x12\x16\n\x0e\x63ontainer_name\x18\x02 \x01(\t\"^\n\x17TaskContainerGetRequest\x12\x0f\n\x07task_id\x18\x01 \x01(\t\x12\x16\n\x0e\x63ontainer_name\x18\x02 \x01(\t\x12\x1a\n\x12include_terminated\x18\x03 \x01(\x08\"[\n\x18TaskContainerGetResponse\x12?\n\tcontainer\x18\x01 \x01(\x0b\x32,.modal.task_command_router.TaskContainerInfo\"~\n\x11TaskContainerInfo\x12\x14\n\x0c\x63ontainer_id\x18\x01 \x01(\t\x12\x16\n\x0e\x63ontainer_name\x18\x02 \x01(\t\x12\x0e\n\x06status\x18\x03 \x01(\t\x12+\n\x06result\x18\x04 \x01(\x0b\x32\x1b.modal.client.GenericResult\"G\n\x18TaskContainerListRequest\x12\x0f\n\x07task_id\x18\x01 \x01(\t\x12\x1a\n\x12include_terminated\x18\x02 \x01(\x08\"]\n\x19TaskContainerListResponse\x12@\n\ncontainers\x18\x01 \x03(\x0b\x32,.modal.task_command_router.TaskContainerInfo\"F\n\x1dTaskContainerTerminateRequest\x12\x0f\n\x07task_id\x18\x01 \x01(\t\x12\x14\n\x0c\x63ontainer_id\x18\x02 \x01(\t\" \n\x1eTaskContainerTerminateResponse\"R\n\x18TaskContainerWaitRequest\x12\x0f\n\x07task_id\x18\x01 \x01(\t\x12\x14\n\x0c\x63ontainer_id\x18\x02 \x01(\t\x12\x0f\n\x07timeout\x18\x03 \x01(\x02\"H\n\x19TaskContainerWaitResponse\x12+\n\x06result\x18\x01 \x01(\x0b\x32\x1b.modal.client.GenericResult\"7\n\x13TaskExecPollRequest\x12\x0f\n\x07task_id\x18\x01 \x01(\t\x12\x0f\n\x07\x65xec_id\x18\x02 \x01(\t\"G\n\x14TaskExecPollResponse\x12\x0e\n\x04\x63ode\x18\x01 \x01(\x05H\x00\x12\x10\n\x06signal\x18\x02 \x01(\x05H\x00\x42\r\n\x0b\x65xit_status\"\x9b\x04\n\x14TaskExecStartRequest\x12\x0f\n\x07task_id\x18\x01 \x01(\t\x12\x0f\n\x07\x65xec_id\x18\x02 \x01(\t\x12\x14\n\x0c\x63ommand_args\x18\x03 \x03(\t\x12\x46\n\rstdout_config\x18\x04 \x01(\x0e\x32/.modal.task_command_router.TaskExecStdoutConfig\x12\x46\n\rstderr_config\x18\x05 \x01(\x0e\x32/.modal.task_command_router.TaskExecStderrConfig\x12\x19\n\x0ctimeout_secs\x18\x06 \x01(\rH\x00\x88\x01\x01\x12\x14\n\x07workdir\x18\x07 \x01(\tH\x01\x88\x01\x01\x12\x12\n\nsecret_ids\x18\x08 \x03(\t\x12,\n\x08pty_info\x18\t \x01(\x0b\x32\x15.modal.client.PTYInfoH\x02\x88\x01\x01\x12\x15\n\rruntime_debug\x18\n \x01(\x08\x12\x14\n\x0c\x63ontainer_id\x18\x0b \x01(\t\x12\x45\n\x03\x65nv\x18\x0c \x03(\x0b\x32\x38.modal.task_command_router.TaskExecStartRequest.EnvEntry\x1a*\n\x08\x45nvEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\r\n\x05value\x18\x02 \x01(\t:\x02\x38\x01\x42\x0f\n\r_timeout_secsB\n\n\x08_workdirB\x0b\n\t_pty_info\"\x17\n\x15TaskExecStartResponse\">\n\x1aTaskExecStdinStatusRequest\x12\x0f\n\x07task_id\x18\x01 \x01(\t\x12\x0f\n\x07\x65xec_id\x18\x02 \x01(\t\"H\n\x1bTaskExecStdinStatusResponse\x12\x19\n\x11num_bytes_written\x18\x01 \x01(\x04\x12\x0e\n\x06\x63losed\x18\x02 \x01(\x08\"h\n\x19TaskExecStdinWriteRequest\x12\x0f\n\x07task_id\x18\x01 \x01(\t\x12\x0f\n\x07\x65xec_id\x18\x02 \x01(\t\x12\x0e\n\x06offset\x18\x03 \x01(\x04\x12\x0c\n\x04\x64\x61ta\x18\x04 \x01(\x0c\x12\x0b\n\x03\x65of\x18\x05 \x01(\x08\"\x1c\n\x1aTaskExecStdinWriteResponse\"\x1d\n\x1bTaskExecStdinWriteStreamEnd\"\xce\x01\n\x1fTaskExecStdinWriteStreamRequest\x12I\n\x05start\x18\x01 \x01(\x0b\x32\x38.modal.task_command_router.TaskExecStdinWriteStreamStartH\x00\x12\x0e\n\x04\x64\x61ta\x18\x02 \x01(\x0cH\x00\x12\x45\n\x03\x65nd\x18\x03 \x01(\x0b\x32\x36.modal.task_command_router.TaskExecStdinWriteStreamEndH\x00\x42\t\n\x07payload\"\"\n TaskExecStdinWriteStreamResponse\"Q\n\x1dTaskExecStdinWriteStreamStart\x12\x0f\n\x07task_id\x18\x01 \x01(\t\x12\x0f\n\x07\x65xec_id\x18\x02 \x01(\t\x12\x0e\n\x06offset\x18\x03 \x01(\x04\"\x9d\x01\n\x18TaskExecStdioReadRequest\x12\x0f\n\x07task_id\x18\x01 \x01(\t\x12\x0f\n\x07\x65xec_id\x18\x02 \x01(\t\x12\x0e\n\x06offset\x18\x03 \x01(\x04\x12O\n\x0f\x66ile_descriptor\x18\x04 \x01(\x0e\x32\x36.modal.task_command_router.TaskExecStdioFileDescriptor\")\n\x19TaskExecStdioReadResponse\x12\x0c\n\x04\x64\x61ta\x18\x01 \x01(\x0c\"7\n\x13TaskExecWaitRequest\x12\x0f\n\x07task_id\x18\x01 \x01(\t\x12\x0f\n\x07\x65xec_id\x18\x02 \x01(\t\"G\n\x14TaskExecWaitResponse\x12\x0e\n\x04\x63ode\x18\x01 \x01(\x05H\x00\x12\x10\n\x06signal\x18\x02 \x01(\x05H\x00\x42\r\n\x0b\x65xit_status\"\xa0\x01\n\x19TaskMountDirectoryRequest\x12\x0f\n\x07task_id\x18\x01 \x01(\t\x12\x0c\n\x04path\x18\x02 \x01(\x0c\x12\x10\n\x08image_id\x18\x03 \x01(\t\x12-\n customer_supplied_encryption_key\x18\x04 \x01(\x0cH\x00\x88\x01\x01\x42#\n!_customer_supplied_encryption_key\"A\n\x18TaskReloadVolumesRequest\x12\x0f\n\x07task_id\x18\x01 \x01(\t\x12\x14\n\x0c\x63ontainer_id\x18\x02 \x01(\t\"\x1b\n\x19TaskReloadVolumesResponse\"c\n\x1bTaskSetNetworkAccessRequest\x12\x0f\n\x07task_id\x18\x01 \x01(\t\x12\x33\n\x0enetwork_access\x18\x02 \x01(\x0b\x32\x1b.modal.client.NetworkAccess\"\x1e\n\x1cTaskSetNetworkAccessResponse\"\xd0\x01\n\x1cTaskSnapshotDirectoryRequest\x12\x0f\n\x07task_id\x18\x01 \x01(\t\x12\x0c\n\x04path\x18\x02 \x01(\x0c\x12\x13\n\x0bsnapshot_id\x18\x03 \x01(\t\x12\x18\n\x0bttl_seconds\x18\x04 \x01(\x03H\x00\x88\x01\x01\x12-\n customer_supplied_encryption_key\x18\x05 \x01(\x0cH\x01\x88\x01\x01\x42\x0e\n\x0c_ttl_secondsB#\n!_customer_supplied_encryption_key\"1\n\x1dTaskSnapshotDirectoryResponse\x12\x10\n\x08image_id\x18\x01 \x01(\t\"\xc3\x01\n\x1dTaskSnapshotFilesystemRequest\x12\x0f\n\x07task_id\x18\x01 \x01(\t\x12\x13\n\x0bsnapshot_id\x18\x02 \x01(\t\x12\x18\n\x0bttl_seconds\x18\x03 \x01(\x03H\x00\x88\x01\x01\x12-\n customer_supplied_encryption_key\x18\x04 \x01(\x0cH\x01\x88\x01\x01\x42\x0e\n\x0c_ttl_secondsB#\n!_customer_supplied_encryption_key\"2\n\x1eTaskSnapshotFilesystemResponse\x12\x10\n\x08image_id\x18\x01 \x01(\t\"E\n\x19TaskSnapshotMemoryRequest\x12\x0f\n\x07task_id\x18\x01 \x01(\t\x12\x17\n\x0fidempotency_key\x18\x02 \x01(\t\"1\n\x1aTaskSnapshotMemoryResponse\x12\x13\n\x0bsnapshot_id\x18\x01 \x01(\t\"<\n\x1bTaskUnmountDirectoryRequest\x12\x0f\n\x07task_id\x18\x01 \x01(\t\x12\x0c\n\x04path\x18\x02 \x01(\x0c*p\n\x1aSandboxStdioFileDescriptor\x12(\n$SANDBOX_STDIO_FILE_DESCRIPTOR_STDOUT\x10\x00\x12(\n$SANDBOX_STDIO_FILE_DESCRIPTOR_STDERR\x10\x01*\x81\x01\n\x14TaskExecStderrConfig\x12#\n\x1fTASK_EXEC_STDERR_CONFIG_DEVNULL\x10\x00\x12 \n\x1cTASK_EXEC_STDERR_CONFIG_PIPE\x10\x01\x12\"\n\x1eTASK_EXEC_STDERR_CONFIG_STDOUT\x10\x02*u\n\x1bTaskExecStdioFileDescriptor\x12*\n&TASK_EXEC_STDIO_FILE_DESCRIPTOR_STDOUT\x10\x00\x12*\n&TASK_EXEC_STDIO_FILE_DESCRIPTOR_STDERR\x10\x01*]\n\x14TaskExecStdoutConfig\x12#\n\x1fTASK_EXEC_STDOUT_CONFIG_DEVNULL\x10\x00\x12 \n\x1cTASK_EXEC_STDOUT_CONFIG_PIPE\x10\x01\x32\xba\x16\n\x11TaskCommandRouter\x12\x84\x01\n\x13SandboxStdinWriteV2\x12\x35.modal.task_command_router.SandboxStdinWriteV2Request\x1a\x36.modal.task_command_router.SandboxStdinWriteV2Response\x12\x83\x01\n\x12SandboxStdioReadV2\x12\x34.modal.task_command_router.SandboxStdioReadV2Request\x1a\x35.modal.task_command_router.SandboxStdioReadV2Response0\x01\x12\x90\x01\n\x15SandboxWaitUntilReady\x12:.modal.task_command_router.SandboxWaitUntilReadyTcrRequest\x1a;.modal.task_command_router.SandboxWaitUntilReadyTcrResponse\x12\x84\x01\n\x13TaskContainerCreate\x12\x35.modal.task_command_router.TaskContainerCreateRequest\x1a\x36.modal.task_command_router.TaskContainerCreateResponse\x12{\n\x10TaskContainerGet\x12\x32.modal.task_command_router.TaskContainerGetRequest\x1a\x33.modal.task_command_router.TaskContainerGetResponse\x12~\n\x11TaskContainerList\x12\x33.modal.task_command_router.TaskContainerListRequest\x1a\x34.modal.task_command_router.TaskContainerListResponse\x12\x8d\x01\n\x16TaskContainerTerminate\x12\x38.modal.task_command_router.TaskContainerTerminateRequest\x1a\x39.modal.task_command_router.TaskContainerTerminateResponse\x12~\n\x11TaskContainerWait\x12\x33.modal.task_command_router.TaskContainerWaitRequest\x1a\x34.modal.task_command_router.TaskContainerWaitResponse\x12o\n\x0cTaskExecPoll\x12..modal.task_command_router.TaskExecPollRequest\x1a/.modal.task_command_router.TaskExecPollResponse\x12r\n\rTaskExecStart\x12/.modal.task_command_router.TaskExecStartRequest\x1a\x30.modal.task_command_router.TaskExecStartResponse\x12\x84\x01\n\x13TaskExecStdinStatus\x12\x35.modal.task_command_router.TaskExecStdinStatusRequest\x1a\x36.modal.task_command_router.TaskExecStdinStatusResponse\x12\x81\x01\n\x12TaskExecStdinWrite\x12\x34.modal.task_command_router.TaskExecStdinWriteRequest\x1a\x35.modal.task_command_router.TaskExecStdinWriteResponse\x12\x95\x01\n\x18TaskExecStdinWriteStream\x12:.modal.task_command_router.TaskExecStdinWriteStreamRequest\x1a;.modal.task_command_router.TaskExecStdinWriteStreamResponse(\x01\x12\x80\x01\n\x11TaskExecStdioRead\x12\x33.modal.task_command_router.TaskExecStdioReadRequest\x1a\x34.modal.task_command_router.TaskExecStdioReadResponse0\x01\x12o\n\x0cTaskExecWait\x12..modal.task_command_router.TaskExecWaitRequest\x1a/.modal.task_command_router.TaskExecWaitResponse\x12\x62\n\x12TaskMountDirectory\x12\x34.modal.task_command_router.TaskMountDirectoryRequest\x1a\x16.google.protobuf.Empty\x12~\n\x11TaskReloadVolumes\x12\x33.modal.task_command_router.TaskReloadVolumesRequest\x1a\x34.modal.task_command_router.TaskReloadVolumesResponse\x12\x87\x01\n\x14TaskSetNetworkAccess\x12\x36.modal.task_command_router.TaskSetNetworkAccessRequest\x1a\x37.modal.task_command_router.TaskSetNetworkAccessResponse\x12\x8a\x01\n\x15TaskSnapshotDirectory\x12\x37.modal.task_command_router.TaskSnapshotDirectoryRequest\x1a\x38.modal.task_command_router.TaskSnapshotDirectoryResponse\x12\x8d\x01\n\x16TaskSnapshotFilesystem\x12\x38.modal.task_command_router.TaskSnapshotFilesystemRequest\x1a\x39.modal.task_command_router.TaskSnapshotFilesystemResponse\x12\x81\x01\n\x12TaskSnapshotMemory\x12\x34.modal.task_command_router.TaskSnapshotMemoryRequest\x1a\x35.modal.task_command_router.TaskSnapshotMemoryResponse\x12\x66\n\x14TaskUnmountDirectory\x12\x36.modal.task_command_router.TaskUnmountDirectoryRequest\x1a\x16.google.protobuf.EmptyB&Z$github.com/modal-labs/modal/go/protob\x06proto3')
20
+ DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n%modal_proto/task_command_router.proto\x12\x19modal.task_command_router\x1a\x1bgoogle/protobuf/empty.proto\x1a\x15modal_proto/api.proto\"X\n\x1aSandboxStdinWriteV2Request\x12\x0f\n\x07task_id\x18\x01 \x01(\t\x12\x0e\n\x06offset\x18\x02 \x01(\x04\x12\x0c\n\x04\x64\x61ta\x18\x03 \x01(\x0c\x12\x0b\n\x03\x65of\x18\x04 \x01(\x08\"\x1d\n\x1bSandboxStdinWriteV2Response\"\x8c\x01\n\x19SandboxStdioReadV2Request\x12\x0f\n\x07task_id\x18\x01 \x01(\t\x12\x0e\n\x06offset\x18\x02 \x01(\x04\x12N\n\x0f\x66ile_descriptor\x18\x03 \x01(\x0e\x32\x35.modal.task_command_router.SandboxStdioFileDescriptor\"C\n\x1aSandboxStdioReadV2Response\x12\x0c\n\x04\x64\x61ta\x18\x01 \x01(\x0c\x12\x17\n\x0fstarting_offset\x18\x02 \x01(\x04\"C\n\x1fSandboxWaitUntilReadyTcrRequest\x12\x0f\n\x07task_id\x18\x01 \x01(\t\x12\x0f\n\x07timeout\x18\x02 \x01(\x02\"4\n SandboxWaitUntilReadyTcrResponse\x12\x10\n\x08ready_at\x18\x01 \x01(\x01\"\xbd\x03\n\x1aTaskContainerCreateRequest\x12\x0f\n\x07task_id\x18\x01 \x01(\t\x12\x16\n\x0e\x63ontainer_name\x18\x02 \x01(\t\x12\x10\n\x08image_id\x18\x03 \x01(\t\x12\x0c\n\x04\x61rgs\x18\x05 \x03(\t\x12K\n\x03\x65nv\x18\x06 \x03(\x0b\x32>.modal.task_command_router.TaskContainerCreateRequest.EnvEntry\x12\x0f\n\x07workdir\x18\x07 \x01(\t\x12\x12\n\nsecret_ids\x18\x08 \x03(\t\x12\x30\n\rvolume_mounts\x18\t \x03(\x0b\x32\x19.modal.client.VolumeMount\x12\x38\n\x0enetwork_access\x18\n \x01(\x0b\x32\x1b.modal.client.NetworkAccessH\x00\x88\x01\x01\x12,\n\x08pty_info\x18\x0b \x01(\x0b\x32\x15.modal.client.PTYInfoH\x01\x88\x01\x01\x1a*\n\x08\x45nvEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\r\n\x05value\x18\x02 \x01(\t:\x02\x38\x01\x42\x11\n\x0f_network_accessB\x0b\n\t_pty_info\"K\n\x1bTaskContainerCreateResponse\x12\x14\n\x0c\x63ontainer_id\x18\x01 \x01(\t\x12\x16\n\x0e\x63ontainer_name\x18\x02 \x01(\t\"^\n\x17TaskContainerGetRequest\x12\x0f\n\x07task_id\x18\x01 \x01(\t\x12\x16\n\x0e\x63ontainer_name\x18\x02 \x01(\t\x12\x1a\n\x12include_terminated\x18\x03 \x01(\x08\"[\n\x18TaskContainerGetResponse\x12?\n\tcontainer\x18\x01 \x01(\x0b\x32,.modal.task_command_router.TaskContainerInfo\"~\n\x11TaskContainerInfo\x12\x14\n\x0c\x63ontainer_id\x18\x01 \x01(\t\x12\x16\n\x0e\x63ontainer_name\x18\x02 \x01(\t\x12\x0e\n\x06status\x18\x03 \x01(\t\x12+\n\x06result\x18\x04 \x01(\x0b\x32\x1b.modal.client.GenericResult\"G\n\x18TaskContainerListRequest\x12\x0f\n\x07task_id\x18\x01 \x01(\t\x12\x1a\n\x12include_terminated\x18\x02 \x01(\x08\"]\n\x19TaskContainerListResponse\x12@\n\ncontainers\x18\x01 \x03(\x0b\x32,.modal.task_command_router.TaskContainerInfo\"F\n\x1dTaskContainerTerminateRequest\x12\x0f\n\x07task_id\x18\x01 \x01(\t\x12\x14\n\x0c\x63ontainer_id\x18\x02 \x01(\t\" \n\x1eTaskContainerTerminateResponse\"R\n\x18TaskContainerWaitRequest\x12\x0f\n\x07task_id\x18\x01 \x01(\t\x12\x14\n\x0c\x63ontainer_id\x18\x02 \x01(\t\x12\x0f\n\x07timeout\x18\x03 \x01(\x02\"H\n\x19TaskContainerWaitResponse\x12+\n\x06result\x18\x01 \x01(\x0b\x32\x1b.modal.client.GenericResult\"7\n\x13TaskExecPollRequest\x12\x0f\n\x07task_id\x18\x01 \x01(\t\x12\x0f\n\x07\x65xec_id\x18\x02 \x01(\t\"G\n\x14TaskExecPollResponse\x12\x0e\n\x04\x63ode\x18\x01 \x01(\x05H\x00\x12\x10\n\x06signal\x18\x02 \x01(\x05H\x00\x42\r\n\x0b\x65xit_status\"\x9b\x04\n\x14TaskExecStartRequest\x12\x0f\n\x07task_id\x18\x01 \x01(\t\x12\x0f\n\x07\x65xec_id\x18\x02 \x01(\t\x12\x14\n\x0c\x63ommand_args\x18\x03 \x03(\t\x12\x46\n\rstdout_config\x18\x04 \x01(\x0e\x32/.modal.task_command_router.TaskExecStdoutConfig\x12\x46\n\rstderr_config\x18\x05 \x01(\x0e\x32/.modal.task_command_router.TaskExecStderrConfig\x12\x19\n\x0ctimeout_secs\x18\x06 \x01(\rH\x00\x88\x01\x01\x12\x14\n\x07workdir\x18\x07 \x01(\tH\x01\x88\x01\x01\x12\x12\n\nsecret_ids\x18\x08 \x03(\t\x12,\n\x08pty_info\x18\t \x01(\x0b\x32\x15.modal.client.PTYInfoH\x02\x88\x01\x01\x12\x15\n\rruntime_debug\x18\n \x01(\x08\x12\x14\n\x0c\x63ontainer_id\x18\x0b \x01(\t\x12\x45\n\x03\x65nv\x18\x0c \x03(\x0b\x32\x38.modal.task_command_router.TaskExecStartRequest.EnvEntry\x1a*\n\x08\x45nvEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\r\n\x05value\x18\x02 \x01(\t:\x02\x38\x01\x42\x0f\n\r_timeout_secsB\n\n\x08_workdirB\x0b\n\t_pty_info\"\x17\n\x15TaskExecStartResponse\">\n\x1aTaskExecStdinStatusRequest\x12\x0f\n\x07task_id\x18\x01 \x01(\t\x12\x0f\n\x07\x65xec_id\x18\x02 \x01(\t\"H\n\x1bTaskExecStdinStatusResponse\x12\x19\n\x11num_bytes_written\x18\x01 \x01(\x04\x12\x0e\n\x06\x63losed\x18\x02 \x01(\x08\"h\n\x19TaskExecStdinWriteRequest\x12\x0f\n\x07task_id\x18\x01 \x01(\t\x12\x0f\n\x07\x65xec_id\x18\x02 \x01(\t\x12\x0e\n\x06offset\x18\x03 \x01(\x04\x12\x0c\n\x04\x64\x61ta\x18\x04 \x01(\x0c\x12\x0b\n\x03\x65of\x18\x05 \x01(\x08\"\x1c\n\x1aTaskExecStdinWriteResponse\"\x1d\n\x1bTaskExecStdinWriteStreamEnd\"\xce\x01\n\x1fTaskExecStdinWriteStreamRequest\x12I\n\x05start\x18\x01 \x01(\x0b\x32\x38.modal.task_command_router.TaskExecStdinWriteStreamStartH\x00\x12\x0e\n\x04\x64\x61ta\x18\x02 \x01(\x0cH\x00\x12\x45\n\x03\x65nd\x18\x03 \x01(\x0b\x32\x36.modal.task_command_router.TaskExecStdinWriteStreamEndH\x00\x42\t\n\x07payload\"\"\n TaskExecStdinWriteStreamResponse\"Q\n\x1dTaskExecStdinWriteStreamStart\x12\x0f\n\x07task_id\x18\x01 \x01(\t\x12\x0f\n\x07\x65xec_id\x18\x02 \x01(\t\x12\x0e\n\x06offset\x18\x03 \x01(\x04\"\x9d\x01\n\x18TaskExecStdioReadRequest\x12\x0f\n\x07task_id\x18\x01 \x01(\t\x12\x0f\n\x07\x65xec_id\x18\x02 \x01(\t\x12\x0e\n\x06offset\x18\x03 \x01(\x04\x12O\n\x0f\x66ile_descriptor\x18\x04 \x01(\x0e\x32\x36.modal.task_command_router.TaskExecStdioFileDescriptor\")\n\x19TaskExecStdioReadResponse\x12\x0c\n\x04\x64\x61ta\x18\x01 \x01(\x0c\"7\n\x13TaskExecWaitRequest\x12\x0f\n\x07task_id\x18\x01 \x01(\t\x12\x0f\n\x07\x65xec_id\x18\x02 \x01(\t\"G\n\x14TaskExecWaitResponse\x12\x0e\n\x04\x63ode\x18\x01 \x01(\x05H\x00\x12\x10\n\x06signal\x18\x02 \x01(\x05H\x00\x42\r\n\x0b\x65xit_status\"\xa0\x01\n\x19TaskMountDirectoryRequest\x12\x0f\n\x07task_id\x18\x01 \x01(\t\x12\x0c\n\x04path\x18\x02 \x01(\x0c\x12\x10\n\x08image_id\x18\x03 \x01(\t\x12-\n customer_supplied_encryption_key\x18\x04 \x01(\x0cH\x00\x88\x01\x01\x42#\n!_customer_supplied_encryption_key\"A\n\x18TaskReloadVolumesRequest\x12\x0f\n\x07task_id\x18\x01 \x01(\t\x12\x14\n\x0c\x63ontainer_id\x18\x02 \x01(\t\"\x1b\n\x19TaskReloadVolumesResponse\"c\n\x1bTaskSetNetworkAccessRequest\x12\x0f\n\x07task_id\x18\x01 \x01(\t\x12\x33\n\x0enetwork_access\x18\x02 \x01(\x0b\x32\x1b.modal.client.NetworkAccess\"\x1e\n\x1cTaskSetNetworkAccessResponse\"\xd0\x01\n\x1cTaskSnapshotDirectoryRequest\x12\x0f\n\x07task_id\x18\x01 \x01(\t\x12\x0c\n\x04path\x18\x02 \x01(\x0c\x12\x13\n\x0bsnapshot_id\x18\x03 \x01(\t\x12\x18\n\x0bttl_seconds\x18\x04 \x01(\x03H\x00\x88\x01\x01\x12-\n customer_supplied_encryption_key\x18\x05 \x01(\x0cH\x01\x88\x01\x01\x42\x0e\n\x0c_ttl_secondsB#\n!_customer_supplied_encryption_key\"1\n\x1dTaskSnapshotDirectoryResponse\x12\x10\n\x08image_id\x18\x01 \x01(\t\"\xd9\x01\n\x1dTaskSnapshotFilesystemRequest\x12\x0f\n\x07task_id\x18\x01 \x01(\t\x12\x13\n\x0bsnapshot_id\x18\x02 \x01(\t\x12\x18\n\x0bttl_seconds\x18\x03 \x01(\x03H\x00\x88\x01\x01\x12-\n customer_supplied_encryption_key\x18\x04 \x01(\x0cH\x01\x88\x01\x01\x12\x14\n\x0c\x63ontainer_id\x18\x05 \x01(\tB\x0e\n\x0c_ttl_secondsB#\n!_customer_supplied_encryption_key\"2\n\x1eTaskSnapshotFilesystemResponse\x12\x10\n\x08image_id\x18\x01 \x01(\t\"E\n\x19TaskSnapshotMemoryRequest\x12\x0f\n\x07task_id\x18\x01 \x01(\t\x12\x17\n\x0fidempotency_key\x18\x02 \x01(\t\"1\n\x1aTaskSnapshotMemoryResponse\x12\x13\n\x0bsnapshot_id\x18\x01 \x01(\t\"<\n\x1bTaskUnmountDirectoryRequest\x12\x0f\n\x07task_id\x18\x01 \x01(\t\x12\x0c\n\x04path\x18\x02 \x01(\x0c*p\n\x1aSandboxStdioFileDescriptor\x12(\n$SANDBOX_STDIO_FILE_DESCRIPTOR_STDOUT\x10\x00\x12(\n$SANDBOX_STDIO_FILE_DESCRIPTOR_STDERR\x10\x01*\x81\x01\n\x14TaskExecStderrConfig\x12#\n\x1fTASK_EXEC_STDERR_CONFIG_DEVNULL\x10\x00\x12 \n\x1cTASK_EXEC_STDERR_CONFIG_PIPE\x10\x01\x12\"\n\x1eTASK_EXEC_STDERR_CONFIG_STDOUT\x10\x02*u\n\x1bTaskExecStdioFileDescriptor\x12*\n&TASK_EXEC_STDIO_FILE_DESCRIPTOR_STDOUT\x10\x00\x12*\n&TASK_EXEC_STDIO_FILE_DESCRIPTOR_STDERR\x10\x01*]\n\x14TaskExecStdoutConfig\x12#\n\x1fTASK_EXEC_STDOUT_CONFIG_DEVNULL\x10\x00\x12 \n\x1cTASK_EXEC_STDOUT_CONFIG_PIPE\x10\x01\x32\xba\x16\n\x11TaskCommandRouter\x12\x84\x01\n\x13SandboxStdinWriteV2\x12\x35.modal.task_command_router.SandboxStdinWriteV2Request\x1a\x36.modal.task_command_router.SandboxStdinWriteV2Response\x12\x83\x01\n\x12SandboxStdioReadV2\x12\x34.modal.task_command_router.SandboxStdioReadV2Request\x1a\x35.modal.task_command_router.SandboxStdioReadV2Response0\x01\x12\x90\x01\n\x15SandboxWaitUntilReady\x12:.modal.task_command_router.SandboxWaitUntilReadyTcrRequest\x1a;.modal.task_command_router.SandboxWaitUntilReadyTcrResponse\x12\x84\x01\n\x13TaskContainerCreate\x12\x35.modal.task_command_router.TaskContainerCreateRequest\x1a\x36.modal.task_command_router.TaskContainerCreateResponse\x12{\n\x10TaskContainerGet\x12\x32.modal.task_command_router.TaskContainerGetRequest\x1a\x33.modal.task_command_router.TaskContainerGetResponse\x12~\n\x11TaskContainerList\x12\x33.modal.task_command_router.TaskContainerListRequest\x1a\x34.modal.task_command_router.TaskContainerListResponse\x12\x8d\x01\n\x16TaskContainerTerminate\x12\x38.modal.task_command_router.TaskContainerTerminateRequest\x1a\x39.modal.task_command_router.TaskContainerTerminateResponse\x12~\n\x11TaskContainerWait\x12\x33.modal.task_command_router.TaskContainerWaitRequest\x1a\x34.modal.task_command_router.TaskContainerWaitResponse\x12o\n\x0cTaskExecPoll\x12..modal.task_command_router.TaskExecPollRequest\x1a/.modal.task_command_router.TaskExecPollResponse\x12r\n\rTaskExecStart\x12/.modal.task_command_router.TaskExecStartRequest\x1a\x30.modal.task_command_router.TaskExecStartResponse\x12\x84\x01\n\x13TaskExecStdinStatus\x12\x35.modal.task_command_router.TaskExecStdinStatusRequest\x1a\x36.modal.task_command_router.TaskExecStdinStatusResponse\x12\x81\x01\n\x12TaskExecStdinWrite\x12\x34.modal.task_command_router.TaskExecStdinWriteRequest\x1a\x35.modal.task_command_router.TaskExecStdinWriteResponse\x12\x95\x01\n\x18TaskExecStdinWriteStream\x12:.modal.task_command_router.TaskExecStdinWriteStreamRequest\x1a;.modal.task_command_router.TaskExecStdinWriteStreamResponse(\x01\x12\x80\x01\n\x11TaskExecStdioRead\x12\x33.modal.task_command_router.TaskExecStdioReadRequest\x1a\x34.modal.task_command_router.TaskExecStdioReadResponse0\x01\x12o\n\x0cTaskExecWait\x12..modal.task_command_router.TaskExecWaitRequest\x1a/.modal.task_command_router.TaskExecWaitResponse\x12\x62\n\x12TaskMountDirectory\x12\x34.modal.task_command_router.TaskMountDirectoryRequest\x1a\x16.google.protobuf.Empty\x12~\n\x11TaskReloadVolumes\x12\x33.modal.task_command_router.TaskReloadVolumesRequest\x1a\x34.modal.task_command_router.TaskReloadVolumesResponse\x12\x87\x01\n\x14TaskSetNetworkAccess\x12\x36.modal.task_command_router.TaskSetNetworkAccessRequest\x1a\x37.modal.task_command_router.TaskSetNetworkAccessResponse\x12\x8a\x01\n\x15TaskSnapshotDirectory\x12\x37.modal.task_command_router.TaskSnapshotDirectoryRequest\x1a\x38.modal.task_command_router.TaskSnapshotDirectoryResponse\x12\x8d\x01\n\x16TaskSnapshotFilesystem\x12\x38.modal.task_command_router.TaskSnapshotFilesystemRequest\x1a\x39.modal.task_command_router.TaskSnapshotFilesystemResponse\x12\x81\x01\n\x12TaskSnapshotMemory\x12\x34.modal.task_command_router.TaskSnapshotMemoryRequest\x1a\x35.modal.task_command_router.TaskSnapshotMemoryResponse\x12\x66\n\x14TaskUnmountDirectory\x12\x36.modal.task_command_router.TaskUnmountDirectoryRequest\x1a\x16.google.protobuf.EmptyB&Z$github.com/modal-labs/modal/go/protob\x06proto3')
21
21
 
22
22
  _SANDBOXSTDIOFILEDESCRIPTOR = DESCRIPTOR.enum_types_by_name['SandboxStdioFileDescriptor']
23
23
  SandboxStdioFileDescriptor = enum_type_wrapper.EnumTypeWrapper(_SANDBOXSTDIOFILEDESCRIPTOR)
@@ -425,14 +425,14 @@ if _descriptor._USE_C_DESCRIPTORS == False:
425
425
  _TASKCONTAINERCREATEREQUEST_ENVENTRY._serialized_options = b'8\001'
426
426
  _TASKEXECSTARTREQUEST_ENVENTRY._options = None
427
427
  _TASKEXECSTARTREQUEST_ENVENTRY._serialized_options = b'8\001'
428
- _SANDBOXSTDIOFILEDESCRIPTOR._serialized_start=4601
429
- _SANDBOXSTDIOFILEDESCRIPTOR._serialized_end=4713
430
- _TASKEXECSTDERRCONFIG._serialized_start=4716
431
- _TASKEXECSTDERRCONFIG._serialized_end=4845
432
- _TASKEXECSTDIOFILEDESCRIPTOR._serialized_start=4847
433
- _TASKEXECSTDIOFILEDESCRIPTOR._serialized_end=4964
434
- _TASKEXECSTDOUTCONFIG._serialized_start=4966
435
- _TASKEXECSTDOUTCONFIG._serialized_end=5059
428
+ _SANDBOXSTDIOFILEDESCRIPTOR._serialized_start=4623
429
+ _SANDBOXSTDIOFILEDESCRIPTOR._serialized_end=4735
430
+ _TASKEXECSTDERRCONFIG._serialized_start=4738
431
+ _TASKEXECSTDERRCONFIG._serialized_end=4867
432
+ _TASKEXECSTDIOFILEDESCRIPTOR._serialized_start=4869
433
+ _TASKEXECSTDIOFILEDESCRIPTOR._serialized_end=4986
434
+ _TASKEXECSTDOUTCONFIG._serialized_start=4988
435
+ _TASKEXECSTDOUTCONFIG._serialized_end=5081
436
436
  _SANDBOXSTDINWRITEV2REQUEST._serialized_start=120
437
437
  _SANDBOXSTDINWRITEV2REQUEST._serialized_end=208
438
438
  _SANDBOXSTDINWRITEV2RESPONSE._serialized_start=210
@@ -518,15 +518,15 @@ if _descriptor._USE_C_DESCRIPTORS == False:
518
518
  _TASKSNAPSHOTDIRECTORYRESPONSE._serialized_start=4116
519
519
  _TASKSNAPSHOTDIRECTORYRESPONSE._serialized_end=4165
520
520
  _TASKSNAPSHOTFILESYSTEMREQUEST._serialized_start=4168
521
- _TASKSNAPSHOTFILESYSTEMREQUEST._serialized_end=4363
522
- _TASKSNAPSHOTFILESYSTEMRESPONSE._serialized_start=4365
523
- _TASKSNAPSHOTFILESYSTEMRESPONSE._serialized_end=4415
524
- _TASKSNAPSHOTMEMORYREQUEST._serialized_start=4417
525
- _TASKSNAPSHOTMEMORYREQUEST._serialized_end=4486
526
- _TASKSNAPSHOTMEMORYRESPONSE._serialized_start=4488
527
- _TASKSNAPSHOTMEMORYRESPONSE._serialized_end=4537
528
- _TASKUNMOUNTDIRECTORYREQUEST._serialized_start=4539
529
- _TASKUNMOUNTDIRECTORYREQUEST._serialized_end=4599
530
- _TASKCOMMANDROUTER._serialized_start=5062
531
- _TASKCOMMANDROUTER._serialized_end=7936
521
+ _TASKSNAPSHOTFILESYSTEMREQUEST._serialized_end=4385
522
+ _TASKSNAPSHOTFILESYSTEMRESPONSE._serialized_start=4387
523
+ _TASKSNAPSHOTFILESYSTEMRESPONSE._serialized_end=4437
524
+ _TASKSNAPSHOTMEMORYREQUEST._serialized_start=4439
525
+ _TASKSNAPSHOTMEMORYREQUEST._serialized_end=4508
526
+ _TASKSNAPSHOTMEMORYRESPONSE._serialized_start=4510
527
+ _TASKSNAPSHOTMEMORYRESPONSE._serialized_end=4559
528
+ _TASKUNMOUNTDIRECTORYREQUEST._serialized_start=4561
529
+ _TASKUNMOUNTDIRECTORYREQUEST._serialized_end=4621
530
+ _TASKCOMMANDROUTER._serialized_start=5084
531
+ _TASKCOMMANDROUTER._serialized_end=7958
532
532
  # @@protoc_insertion_point(module_scope)