modal 1.4.3.dev12__tar.gz → 1.4.3.dev13__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 (212) hide show
  1. {modal-1.4.3.dev12 → modal-1.4.3.dev13}/PKG-INFO +1 -1
  2. {modal-1.4.3.dev12 → modal-1.4.3.dev13}/modal/_serialization.py +3 -1
  3. {modal-1.4.3.dev12 → modal-1.4.3.dev13}/modal/client.pyi +2 -2
  4. {modal-1.4.3.dev12 → modal-1.4.3.dev13}/modal.egg-info/PKG-INFO +1 -1
  5. {modal-1.4.3.dev12 → modal-1.4.3.dev13}/modal_proto/task_command_router_pb2.py +16 -16
  6. {modal-1.4.3.dev12 → modal-1.4.3.dev13}/modal_proto/task_command_router_pb2.pyi +18 -1
  7. {modal-1.4.3.dev12 → modal-1.4.3.dev13}/modal_version/__init__.py +1 -1
  8. {modal-1.4.3.dev12 → modal-1.4.3.dev13}/pyproject.toml +0 -1
  9. {modal-1.4.3.dev12 → modal-1.4.3.dev13}/LICENSE +0 -0
  10. {modal-1.4.3.dev12 → modal-1.4.3.dev13}/README.md +0 -0
  11. {modal-1.4.3.dev12 → modal-1.4.3.dev13}/modal/__init__.py +0 -0
  12. {modal-1.4.3.dev12 → modal-1.4.3.dev13}/modal/__main__.py +0 -0
  13. {modal-1.4.3.dev12 → modal-1.4.3.dev13}/modal/_billing.py +0 -0
  14. {modal-1.4.3.dev12 → modal-1.4.3.dev13}/modal/_clustered_functions.py +0 -0
  15. {modal-1.4.3.dev12 → modal-1.4.3.dev13}/modal/_clustered_functions.pyi +0 -0
  16. {modal-1.4.3.dev12 → modal-1.4.3.dev13}/modal/_container_entrypoint.py +0 -0
  17. {modal-1.4.3.dev12 → modal-1.4.3.dev13}/modal/_functions.py +0 -0
  18. {modal-1.4.3.dev12 → modal-1.4.3.dev13}/modal/_grpc_client.py +0 -0
  19. {modal-1.4.3.dev12 → modal-1.4.3.dev13}/modal/_ipython.py +0 -0
  20. {modal-1.4.3.dev12 → modal-1.4.3.dev13}/modal/_load_context.py +0 -0
  21. {modal-1.4.3.dev12 → modal-1.4.3.dev13}/modal/_location.py +0 -0
  22. {modal-1.4.3.dev12 → modal-1.4.3.dev13}/modal/_logs.py +0 -0
  23. {modal-1.4.3.dev12 → modal-1.4.3.dev13}/modal/_object.py +0 -0
  24. {modal-1.4.3.dev12 → modal-1.4.3.dev13}/modal/_output/__init__.py +0 -0
  25. {modal-1.4.3.dev12 → modal-1.4.3.dev13}/modal/_output/manager.py +0 -0
  26. {modal-1.4.3.dev12 → modal-1.4.3.dev13}/modal/_output/pty.py +0 -0
  27. {modal-1.4.3.dev12 → modal-1.4.3.dev13}/modal/_output/rich.py +0 -0
  28. {modal-1.4.3.dev12 → modal-1.4.3.dev13}/modal/_output/status.py +0 -0
  29. {modal-1.4.3.dev12 → modal-1.4.3.dev13}/modal/_partial_function.py +0 -0
  30. {modal-1.4.3.dev12 → modal-1.4.3.dev13}/modal/_resolver.py +0 -0
  31. {modal-1.4.3.dev12 → modal-1.4.3.dev13}/modal/_resources.py +0 -0
  32. {modal-1.4.3.dev12 → modal-1.4.3.dev13}/modal/_runtime/__init__.py +0 -0
  33. {modal-1.4.3.dev12 → modal-1.4.3.dev13}/modal/_runtime/asgi.py +0 -0
  34. {modal-1.4.3.dev12 → modal-1.4.3.dev13}/modal/_runtime/container_io_manager.py +0 -0
  35. {modal-1.4.3.dev12 → modal-1.4.3.dev13}/modal/_runtime/container_io_manager.pyi +0 -0
  36. {modal-1.4.3.dev12 → modal-1.4.3.dev13}/modal/_runtime/execution_context.py +0 -0
  37. {modal-1.4.3.dev12 → modal-1.4.3.dev13}/modal/_runtime/execution_context.pyi +0 -0
  38. {modal-1.4.3.dev12 → modal-1.4.3.dev13}/modal/_runtime/gpu_memory_snapshot.py +0 -0
  39. {modal-1.4.3.dev12 → modal-1.4.3.dev13}/modal/_runtime/telemetry.py +0 -0
  40. {modal-1.4.3.dev12 → modal-1.4.3.dev13}/modal/_runtime/user_code_event_loop.py +0 -0
  41. {modal-1.4.3.dev12 → modal-1.4.3.dev13}/modal/_runtime/user_code_imports.py +0 -0
  42. {modal-1.4.3.dev12 → modal-1.4.3.dev13}/modal/_server.py +0 -0
  43. {modal-1.4.3.dev12 → modal-1.4.3.dev13}/modal/_traceback.py +0 -0
  44. {modal-1.4.3.dev12 → modal-1.4.3.dev13}/modal/_tunnel.py +0 -0
  45. {modal-1.4.3.dev12 → modal-1.4.3.dev13}/modal/_tunnel.pyi +0 -0
  46. {modal-1.4.3.dev12 → modal-1.4.3.dev13}/modal/_type_manager.py +0 -0
  47. {modal-1.4.3.dev12 → modal-1.4.3.dev13}/modal/_utils/__init__.py +0 -0
  48. {modal-1.4.3.dev12 → modal-1.4.3.dev13}/modal/_utils/app_utils.py +0 -0
  49. {modal-1.4.3.dev12 → modal-1.4.3.dev13}/modal/_utils/async_utils.py +0 -0
  50. {modal-1.4.3.dev12 → modal-1.4.3.dev13}/modal/_utils/auth_token_manager.py +0 -0
  51. {modal-1.4.3.dev12 → modal-1.4.3.dev13}/modal/_utils/blob_utils.py +0 -0
  52. {modal-1.4.3.dev12 → modal-1.4.3.dev13}/modal/_utils/browser_utils.py +0 -0
  53. {modal-1.4.3.dev12 → modal-1.4.3.dev13}/modal/_utils/bytes_io_segment_payload.py +0 -0
  54. {modal-1.4.3.dev12 → modal-1.4.3.dev13}/modal/_utils/deprecation.py +0 -0
  55. {modal-1.4.3.dev12 → modal-1.4.3.dev13}/modal/_utils/docker_utils.py +0 -0
  56. {modal-1.4.3.dev12 → modal-1.4.3.dev13}/modal/_utils/function_utils.py +0 -0
  57. {modal-1.4.3.dev12 → modal-1.4.3.dev13}/modal/_utils/git_utils.py +0 -0
  58. {modal-1.4.3.dev12 → modal-1.4.3.dev13}/modal/_utils/grpc_testing.py +0 -0
  59. {modal-1.4.3.dev12 → modal-1.4.3.dev13}/modal/_utils/grpc_utils.py +0 -0
  60. {modal-1.4.3.dev12 → modal-1.4.3.dev13}/modal/_utils/hash_utils.py +0 -0
  61. {modal-1.4.3.dev12 → modal-1.4.3.dev13}/modal/_utils/http_utils.py +0 -0
  62. {modal-1.4.3.dev12 → modal-1.4.3.dev13}/modal/_utils/jwt_utils.py +0 -0
  63. {modal-1.4.3.dev12 → modal-1.4.3.dev13}/modal/_utils/logger.py +0 -0
  64. {modal-1.4.3.dev12 → modal-1.4.3.dev13}/modal/_utils/mount_utils.py +0 -0
  65. {modal-1.4.3.dev12 → modal-1.4.3.dev13}/modal/_utils/name_utils.py +0 -0
  66. {modal-1.4.3.dev12 → modal-1.4.3.dev13}/modal/_utils/package_utils.py +0 -0
  67. {modal-1.4.3.dev12 → modal-1.4.3.dev13}/modal/_utils/pattern_utils.py +0 -0
  68. {modal-1.4.3.dev12 → modal-1.4.3.dev13}/modal/_utils/rand_pb_testing.py +0 -0
  69. {modal-1.4.3.dev12 → modal-1.4.3.dev13}/modal/_utils/sandbox_fs_utils.py +0 -0
  70. {modal-1.4.3.dev12 → modal-1.4.3.dev13}/modal/_utils/shell_utils.py +0 -0
  71. {modal-1.4.3.dev12 → modal-1.4.3.dev13}/modal/_utils/task_command_router_client.py +0 -0
  72. {modal-1.4.3.dev12 → modal-1.4.3.dev13}/modal/_utils/time_utils.py +0 -0
  73. {modal-1.4.3.dev12 → modal-1.4.3.dev13}/modal/_vendor/__init__.py +0 -0
  74. {modal-1.4.3.dev12 → modal-1.4.3.dev13}/modal/_vendor/a2wsgi_wsgi.py +0 -0
  75. {modal-1.4.3.dev12 → modal-1.4.3.dev13}/modal/_vendor/cloudpickle.py +0 -0
  76. {modal-1.4.3.dev12 → modal-1.4.3.dev13}/modal/_vendor/tblib.py +0 -0
  77. {modal-1.4.3.dev12 → modal-1.4.3.dev13}/modal/_vendor/version.py +0 -0
  78. {modal-1.4.3.dev12 → modal-1.4.3.dev13}/modal/_watcher.py +0 -0
  79. {modal-1.4.3.dev12 → modal-1.4.3.dev13}/modal/app.py +0 -0
  80. {modal-1.4.3.dev12 → modal-1.4.3.dev13}/modal/app.pyi +0 -0
  81. {modal-1.4.3.dev12 → modal-1.4.3.dev13}/modal/billing.py +0 -0
  82. {modal-1.4.3.dev12 → modal-1.4.3.dev13}/modal/builder/2023.12.312.txt +0 -0
  83. {modal-1.4.3.dev12 → modal-1.4.3.dev13}/modal/builder/2023.12.txt +0 -0
  84. {modal-1.4.3.dev12 → modal-1.4.3.dev13}/modal/builder/2024.04.txt +0 -0
  85. {modal-1.4.3.dev12 → modal-1.4.3.dev13}/modal/builder/2024.10.txt +0 -0
  86. {modal-1.4.3.dev12 → modal-1.4.3.dev13}/modal/builder/2025.06.txt +0 -0
  87. {modal-1.4.3.dev12 → modal-1.4.3.dev13}/modal/builder/PREVIEW.txt +0 -0
  88. {modal-1.4.3.dev12 → modal-1.4.3.dev13}/modal/builder/README.md +0 -0
  89. {modal-1.4.3.dev12 → modal-1.4.3.dev13}/modal/builder/base-images.json +0 -0
  90. {modal-1.4.3.dev12 → modal-1.4.3.dev13}/modal/call_graph.py +0 -0
  91. {modal-1.4.3.dev12 → modal-1.4.3.dev13}/modal/cli/__init__.py +0 -0
  92. {modal-1.4.3.dev12 → modal-1.4.3.dev13}/modal/cli/_download.py +0 -0
  93. {modal-1.4.3.dev12 → modal-1.4.3.dev13}/modal/cli/_help.py +0 -0
  94. {modal-1.4.3.dev12 → modal-1.4.3.dev13}/modal/cli/_traceback.py +0 -0
  95. {modal-1.4.3.dev12 → modal-1.4.3.dev13}/modal/cli/app.py +0 -0
  96. {modal-1.4.3.dev12 → modal-1.4.3.dev13}/modal/cli/billing.py +0 -0
  97. {modal-1.4.3.dev12 → modal-1.4.3.dev13}/modal/cli/bootstrap.py +0 -0
  98. {modal-1.4.3.dev12 → modal-1.4.3.dev13}/modal/cli/changelog.py +0 -0
  99. {modal-1.4.3.dev12 → modal-1.4.3.dev13}/modal/cli/cluster.py +0 -0
  100. {modal-1.4.3.dev12 → modal-1.4.3.dev13}/modal/cli/config.py +0 -0
  101. {modal-1.4.3.dev12 → modal-1.4.3.dev13}/modal/cli/container.py +0 -0
  102. {modal-1.4.3.dev12 → modal-1.4.3.dev13}/modal/cli/dashboard.py +0 -0
  103. {modal-1.4.3.dev12 → modal-1.4.3.dev13}/modal/cli/dict.py +0 -0
  104. {modal-1.4.3.dev12 → modal-1.4.3.dev13}/modal/cli/entry_point.py +0 -0
  105. {modal-1.4.3.dev12 → modal-1.4.3.dev13}/modal/cli/environment.py +0 -0
  106. {modal-1.4.3.dev12 → modal-1.4.3.dev13}/modal/cli/import_refs.py +0 -0
  107. {modal-1.4.3.dev12 → modal-1.4.3.dev13}/modal/cli/launch.py +0 -0
  108. {modal-1.4.3.dev12 → modal-1.4.3.dev13}/modal/cli/logo.py +0 -0
  109. {modal-1.4.3.dev12 → modal-1.4.3.dev13}/modal/cli/network_file_system.py +0 -0
  110. {modal-1.4.3.dev12 → modal-1.4.3.dev13}/modal/cli/profile.py +0 -0
  111. {modal-1.4.3.dev12 → modal-1.4.3.dev13}/modal/cli/programs/__init__.py +0 -0
  112. {modal-1.4.3.dev12 → modal-1.4.3.dev13}/modal/cli/programs/run_jupyter.py +0 -0
  113. {modal-1.4.3.dev12 → modal-1.4.3.dev13}/modal/cli/programs/vscode.py +0 -0
  114. {modal-1.4.3.dev12 → modal-1.4.3.dev13}/modal/cli/queues.py +0 -0
  115. {modal-1.4.3.dev12 → modal-1.4.3.dev13}/modal/cli/run.py +0 -0
  116. {modal-1.4.3.dev12 → modal-1.4.3.dev13}/modal/cli/secret.py +0 -0
  117. {modal-1.4.3.dev12 → modal-1.4.3.dev13}/modal/cli/selector.py +0 -0
  118. {modal-1.4.3.dev12 → modal-1.4.3.dev13}/modal/cli/shell.py +0 -0
  119. {modal-1.4.3.dev12 → modal-1.4.3.dev13}/modal/cli/token.py +0 -0
  120. {modal-1.4.3.dev12 → modal-1.4.3.dev13}/modal/cli/utils.py +0 -0
  121. {modal-1.4.3.dev12 → modal-1.4.3.dev13}/modal/cli/volume.py +0 -0
  122. {modal-1.4.3.dev12 → modal-1.4.3.dev13}/modal/client.py +0 -0
  123. {modal-1.4.3.dev12 → modal-1.4.3.dev13}/modal/cloud_bucket_mount.py +0 -0
  124. {modal-1.4.3.dev12 → modal-1.4.3.dev13}/modal/cloud_bucket_mount.pyi +0 -0
  125. {modal-1.4.3.dev12 → modal-1.4.3.dev13}/modal/cls.py +0 -0
  126. {modal-1.4.3.dev12 → modal-1.4.3.dev13}/modal/cls.pyi +0 -0
  127. {modal-1.4.3.dev12 → modal-1.4.3.dev13}/modal/config.py +0 -0
  128. {modal-1.4.3.dev12 → modal-1.4.3.dev13}/modal/container_process.py +0 -0
  129. {modal-1.4.3.dev12 → modal-1.4.3.dev13}/modal/container_process.pyi +0 -0
  130. {modal-1.4.3.dev12 → modal-1.4.3.dev13}/modal/dict.py +0 -0
  131. {modal-1.4.3.dev12 → modal-1.4.3.dev13}/modal/dict.pyi +0 -0
  132. {modal-1.4.3.dev12 → modal-1.4.3.dev13}/modal/environments.py +0 -0
  133. {modal-1.4.3.dev12 → modal-1.4.3.dev13}/modal/environments.pyi +0 -0
  134. {modal-1.4.3.dev12 → modal-1.4.3.dev13}/modal/exception.py +0 -0
  135. {modal-1.4.3.dev12 → modal-1.4.3.dev13}/modal/experimental/__init__.py +0 -0
  136. {modal-1.4.3.dev12 → modal-1.4.3.dev13}/modal/experimental/flash.py +0 -0
  137. {modal-1.4.3.dev12 → modal-1.4.3.dev13}/modal/experimental/flash.pyi +0 -0
  138. {modal-1.4.3.dev12 → modal-1.4.3.dev13}/modal/experimental/ipython.py +0 -0
  139. {modal-1.4.3.dev12 → modal-1.4.3.dev13}/modal/file_io.py +0 -0
  140. {modal-1.4.3.dev12 → modal-1.4.3.dev13}/modal/file_io.pyi +0 -0
  141. {modal-1.4.3.dev12 → modal-1.4.3.dev13}/modal/file_pattern_matcher.py +0 -0
  142. {modal-1.4.3.dev12 → modal-1.4.3.dev13}/modal/functions.py +0 -0
  143. {modal-1.4.3.dev12 → modal-1.4.3.dev13}/modal/functions.pyi +0 -0
  144. {modal-1.4.3.dev12 → modal-1.4.3.dev13}/modal/image.py +0 -0
  145. {modal-1.4.3.dev12 → modal-1.4.3.dev13}/modal/image.pyi +0 -0
  146. {modal-1.4.3.dev12 → modal-1.4.3.dev13}/modal/io_streams.py +0 -0
  147. {modal-1.4.3.dev12 → modal-1.4.3.dev13}/modal/io_streams.pyi +0 -0
  148. {modal-1.4.3.dev12 → modal-1.4.3.dev13}/modal/mount.py +0 -0
  149. {modal-1.4.3.dev12 → modal-1.4.3.dev13}/modal/mount.pyi +0 -0
  150. {modal-1.4.3.dev12 → modal-1.4.3.dev13}/modal/network_file_system.py +0 -0
  151. {modal-1.4.3.dev12 → modal-1.4.3.dev13}/modal/network_file_system.pyi +0 -0
  152. {modal-1.4.3.dev12 → modal-1.4.3.dev13}/modal/object.py +0 -0
  153. {modal-1.4.3.dev12 → modal-1.4.3.dev13}/modal/object.pyi +0 -0
  154. {modal-1.4.3.dev12 → modal-1.4.3.dev13}/modal/output.py +0 -0
  155. {modal-1.4.3.dev12 → modal-1.4.3.dev13}/modal/parallel_map.py +0 -0
  156. {modal-1.4.3.dev12 → modal-1.4.3.dev13}/modal/parallel_map.pyi +0 -0
  157. {modal-1.4.3.dev12 → modal-1.4.3.dev13}/modal/partial_function.py +0 -0
  158. {modal-1.4.3.dev12 → modal-1.4.3.dev13}/modal/partial_function.pyi +0 -0
  159. {modal-1.4.3.dev12 → modal-1.4.3.dev13}/modal/proxy.py +0 -0
  160. {modal-1.4.3.dev12 → modal-1.4.3.dev13}/modal/proxy.pyi +0 -0
  161. {modal-1.4.3.dev12 → modal-1.4.3.dev13}/modal/py.typed +0 -0
  162. {modal-1.4.3.dev12 → modal-1.4.3.dev13}/modal/queue.py +0 -0
  163. {modal-1.4.3.dev12 → modal-1.4.3.dev13}/modal/queue.pyi +0 -0
  164. {modal-1.4.3.dev12 → modal-1.4.3.dev13}/modal/retries.py +0 -0
  165. {modal-1.4.3.dev12 → modal-1.4.3.dev13}/modal/runner.py +0 -0
  166. {modal-1.4.3.dev12 → modal-1.4.3.dev13}/modal/runner.pyi +0 -0
  167. {modal-1.4.3.dev12 → modal-1.4.3.dev13}/modal/running_app.py +0 -0
  168. {modal-1.4.3.dev12 → modal-1.4.3.dev13}/modal/sandbox.py +0 -0
  169. {modal-1.4.3.dev12 → modal-1.4.3.dev13}/modal/sandbox.pyi +0 -0
  170. {modal-1.4.3.dev12 → modal-1.4.3.dev13}/modal/sandbox_fs.py +0 -0
  171. {modal-1.4.3.dev12 → modal-1.4.3.dev13}/modal/sandbox_fs.pyi +0 -0
  172. {modal-1.4.3.dev12 → modal-1.4.3.dev13}/modal/schedule.py +0 -0
  173. {modal-1.4.3.dev12 → modal-1.4.3.dev13}/modal/scheduler_placement.py +0 -0
  174. {modal-1.4.3.dev12 → modal-1.4.3.dev13}/modal/secret.py +0 -0
  175. {modal-1.4.3.dev12 → modal-1.4.3.dev13}/modal/secret.pyi +0 -0
  176. {modal-1.4.3.dev12 → modal-1.4.3.dev13}/modal/server.py +0 -0
  177. {modal-1.4.3.dev12 → modal-1.4.3.dev13}/modal/server.pyi +0 -0
  178. {modal-1.4.3.dev12 → modal-1.4.3.dev13}/modal/serving.py +0 -0
  179. {modal-1.4.3.dev12 → modal-1.4.3.dev13}/modal/serving.pyi +0 -0
  180. {modal-1.4.3.dev12 → modal-1.4.3.dev13}/modal/snapshot.py +0 -0
  181. {modal-1.4.3.dev12 → modal-1.4.3.dev13}/modal/snapshot.pyi +0 -0
  182. {modal-1.4.3.dev12 → modal-1.4.3.dev13}/modal/stream_type.py +0 -0
  183. {modal-1.4.3.dev12 → modal-1.4.3.dev13}/modal/token_flow.py +0 -0
  184. {modal-1.4.3.dev12 → modal-1.4.3.dev13}/modal/token_flow.pyi +0 -0
  185. {modal-1.4.3.dev12 → modal-1.4.3.dev13}/modal/volume.py +0 -0
  186. {modal-1.4.3.dev12 → modal-1.4.3.dev13}/modal/volume.pyi +0 -0
  187. {modal-1.4.3.dev12 → modal-1.4.3.dev13}/modal.egg-info/SOURCES.txt +0 -0
  188. {modal-1.4.3.dev12 → modal-1.4.3.dev13}/modal.egg-info/dependency_links.txt +0 -0
  189. {modal-1.4.3.dev12 → modal-1.4.3.dev13}/modal.egg-info/entry_points.txt +0 -0
  190. {modal-1.4.3.dev12 → modal-1.4.3.dev13}/modal.egg-info/requires.txt +0 -0
  191. {modal-1.4.3.dev12 → modal-1.4.3.dev13}/modal.egg-info/top_level.txt +0 -0
  192. {modal-1.4.3.dev12 → modal-1.4.3.dev13}/modal_docs/__init__.py +0 -0
  193. {modal-1.4.3.dev12 → modal-1.4.3.dev13}/modal_docs/gen_cli_docs.py +0 -0
  194. {modal-1.4.3.dev12 → modal-1.4.3.dev13}/modal_docs/gen_cli_docs_main.py +0 -0
  195. {modal-1.4.3.dev12 → modal-1.4.3.dev13}/modal_docs/gen_reference_docs.py +0 -0
  196. {modal-1.4.3.dev12 → modal-1.4.3.dev13}/modal_docs/gen_reference_docs_main.py +0 -0
  197. {modal-1.4.3.dev12 → modal-1.4.3.dev13}/modal_docs/mdmd/__init__.py +0 -0
  198. {modal-1.4.3.dev12 → modal-1.4.3.dev13}/modal_docs/mdmd/mdmd.py +0 -0
  199. {modal-1.4.3.dev12 → modal-1.4.3.dev13}/modal_docs/mdmd/signatures.py +0 -0
  200. {modal-1.4.3.dev12 → modal-1.4.3.dev13}/modal_proto/__init__.py +0 -0
  201. {modal-1.4.3.dev12 → modal-1.4.3.dev13}/modal_proto/api_grpc.py +0 -0
  202. {modal-1.4.3.dev12 → modal-1.4.3.dev13}/modal_proto/api_pb2.py +0 -0
  203. {modal-1.4.3.dev12 → modal-1.4.3.dev13}/modal_proto/api_pb2.pyi +0 -0
  204. {modal-1.4.3.dev12 → modal-1.4.3.dev13}/modal_proto/api_pb2_grpc.py +0 -0
  205. {modal-1.4.3.dev12 → modal-1.4.3.dev13}/modal_proto/api_pb2_grpc.pyi +0 -0
  206. {modal-1.4.3.dev12 → modal-1.4.3.dev13}/modal_proto/modal_api_grpc.py +0 -0
  207. {modal-1.4.3.dev12 → modal-1.4.3.dev13}/modal_proto/py.typed +0 -0
  208. {modal-1.4.3.dev12 → modal-1.4.3.dev13}/modal_proto/task_command_router_grpc.py +0 -0
  209. {modal-1.4.3.dev12 → modal-1.4.3.dev13}/modal_proto/task_command_router_pb2_grpc.py +0 -0
  210. {modal-1.4.3.dev12 → modal-1.4.3.dev13}/modal_proto/task_command_router_pb2_grpc.pyi +0 -0
  211. {modal-1.4.3.dev12 → modal-1.4.3.dev13}/modal_version/__main__.py +0 -0
  212. {modal-1.4.3.dev12 → modal-1.4.3.dev13}/setup.cfg +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: modal
3
- Version: 1.4.3.dev12
3
+ Version: 1.4.3.dev13
4
4
  Summary: Python client library for Modal
5
5
  Author-email: Modal Labs <support@modal.com>
6
6
  License-Expression: Apache-2.0
@@ -12,6 +12,8 @@ from modal.config import config
12
12
  try:
13
13
  import cbor2 # type: ignore
14
14
  except ImportError: # pragma: no cover - optional dependency
15
+ # cbor2 is a required dependency of modal as a library, but it won't
16
+ # be available in containers using a legacy (pre 2025.06) image builder version
15
17
  cbor2 = None
16
18
 
17
19
  import google.protobuf.message
@@ -374,7 +376,7 @@ def serialize_data_format(obj: Any, data_format: int) -> bytes:
374
376
  raise InvalidError("CBOR support requires the 'cbor2' package to be installed.")
375
377
  try:
376
378
  return cbor2.dumps(obj)
377
- except cbor2.CBOREncodeTypeError:
379
+ except cbor2.CBOREncodeError:
378
380
  try:
379
381
  typename = f"{type(obj).__module__}.{type(obj).__name__}"
380
382
  except Exception:
@@ -35,7 +35,7 @@ class _Client:
35
35
  server_url: str,
36
36
  client_type: int,
37
37
  credentials: typing.Optional[tuple[str, str]],
38
- version: str = "1.4.3.dev12",
38
+ version: str = "1.4.3.dev13",
39
39
  ):
40
40
  """mdmd:hidden
41
41
  The Modal client object is not intended to be instantiated directly by users.
@@ -175,7 +175,7 @@ class Client:
175
175
  server_url: str,
176
176
  client_type: int,
177
177
  credentials: typing.Optional[tuple[str, str]],
178
- version: str = "1.4.3.dev12",
178
+ version: str = "1.4.3.dev13",
179
179
  ):
180
180
  """mdmd:hidden
181
181
  The Modal client object is not intended to be instantiated directly by users.
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: modal
3
- Version: 1.4.3.dev12
3
+ Version: 1.4.3.dev13
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\"*\n\x1aSandboxStdioReadV2Response\x12\x0c\n\x04\x64\x61ta\x18\x01 \x01(\x0c\"\x83\x02\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\x1a*\n\x08\x45nvEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\r\n\x05value\x18\x02 \x01(\t:\x02\x38\x01\"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\"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\"\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\"L\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\"R\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\"1\n\x1dTaskSnapshotDirectoryResponse\x12\x10\n\x08image_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\xea\x0e\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\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\x81\x01\n\x12TaskExecStdinWrite\x12\x34.modal.task_command_router.TaskExecStdinWriteRequest\x1a\x35.modal.task_command_router.TaskExecStdinWriteResponse\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\x8a\x01\n\x15TaskSnapshotDirectory\x12\x37.modal.task_command_router.TaskSnapshotDirectoryRequest\x1a\x38.modal.task_command_router.TaskSnapshotDirectoryResponse\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\"*\n\x1aSandboxStdioReadV2Response\x12\x0c\n\x04\x64\x61ta\x18\x01 \x01(\x0c\"\x83\x02\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\x1a*\n\x08\x45nvEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\r\n\x05value\x18\x02 \x01(\t:\x02\x38\x01\"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\"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\"\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\"L\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\"|\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\x42\x0e\n\x0c_ttl_seconds\"1\n\x1dTaskSnapshotDirectoryResponse\x12\x10\n\x08image_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\xea\x0e\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\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\x81\x01\n\x12TaskExecStdinWrite\x12\x34.modal.task_command_router.TaskExecStdinWriteRequest\x1a\x35.modal.task_command_router.TaskExecStdinWriteResponse\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\x8a\x01\n\x15TaskSnapshotDirectory\x12\x37.modal.task_command_router.TaskSnapshotDirectoryRequest\x1a\x38.modal.task_command_router.TaskSnapshotDirectoryResponse\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)
@@ -297,14 +297,14 @@ if _descriptor._USE_C_DESCRIPTORS == False:
297
297
  _TASKCONTAINERCREATEREQUEST_ENVENTRY._serialized_options = b'8\001'
298
298
  _TASKEXECSTARTREQUEST_ENVENTRY._options = None
299
299
  _TASKEXECSTARTREQUEST_ENVENTRY._serialized_options = b'8\001'
300
- _SANDBOXSTDIOFILEDESCRIPTOR._serialized_start=2957
301
- _SANDBOXSTDIOFILEDESCRIPTOR._serialized_end=3069
302
- _TASKEXECSTDERRCONFIG._serialized_start=3072
303
- _TASKEXECSTDERRCONFIG._serialized_end=3201
304
- _TASKEXECSTDIOFILEDESCRIPTOR._serialized_start=3203
305
- _TASKEXECSTDIOFILEDESCRIPTOR._serialized_end=3320
306
- _TASKEXECSTDOUTCONFIG._serialized_start=3322
307
- _TASKEXECSTDOUTCONFIG._serialized_end=3415
300
+ _SANDBOXSTDIOFILEDESCRIPTOR._serialized_start=2999
301
+ _SANDBOXSTDIOFILEDESCRIPTOR._serialized_end=3111
302
+ _TASKEXECSTDERRCONFIG._serialized_start=3114
303
+ _TASKEXECSTDERRCONFIG._serialized_end=3243
304
+ _TASKEXECSTDIOFILEDESCRIPTOR._serialized_start=3245
305
+ _TASKEXECSTDIOFILEDESCRIPTOR._serialized_end=3362
306
+ _TASKEXECSTDOUTCONFIG._serialized_start=3364
307
+ _TASKEXECSTDOUTCONFIG._serialized_end=3457
308
308
  _SANDBOXSTDINWRITEV2REQUEST._serialized_start=120
309
309
  _SANDBOXSTDINWRITEV2REQUEST._serialized_end=208
310
310
  _SANDBOXSTDINWRITEV2RESPONSE._serialized_start=210
@@ -362,11 +362,11 @@ if _descriptor._USE_C_DESCRIPTORS == False:
362
362
  _TASKMOUNTDIRECTORYREQUEST._serialized_start=2682
363
363
  _TASKMOUNTDIRECTORYREQUEST._serialized_end=2758
364
364
  _TASKSNAPSHOTDIRECTORYREQUEST._serialized_start=2760
365
- _TASKSNAPSHOTDIRECTORYREQUEST._serialized_end=2842
366
- _TASKSNAPSHOTDIRECTORYRESPONSE._serialized_start=2844
367
- _TASKSNAPSHOTDIRECTORYRESPONSE._serialized_end=2893
368
- _TASKUNMOUNTDIRECTORYREQUEST._serialized_start=2895
369
- _TASKUNMOUNTDIRECTORYREQUEST._serialized_end=2955
370
- _TASKCOMMANDROUTER._serialized_start=3418
371
- _TASKCOMMANDROUTER._serialized_end=5316
365
+ _TASKSNAPSHOTDIRECTORYREQUEST._serialized_end=2884
366
+ _TASKSNAPSHOTDIRECTORYRESPONSE._serialized_start=2886
367
+ _TASKSNAPSHOTDIRECTORYRESPONSE._serialized_end=2935
368
+ _TASKUNMOUNTDIRECTORYREQUEST._serialized_start=2937
369
+ _TASKUNMOUNTDIRECTORYREQUEST._serialized_end=2997
370
+ _TASKCOMMANDROUTER._serialized_start=3460
371
+ _TASKCOMMANDROUTER._serialized_end=5358
372
372
  # @@protoc_insertion_point(module_scope)
@@ -691,18 +691,35 @@ class TaskSnapshotDirectoryRequest(google.protobuf.message.Message):
691
691
  TASK_ID_FIELD_NUMBER: builtins.int
692
692
  PATH_FIELD_NUMBER: builtins.int
693
693
  SNAPSHOT_ID_FIELD_NUMBER: builtins.int
694
+ TTL_SECONDS_FIELD_NUMBER: builtins.int
694
695
  task_id: builtins.str
695
696
  path: builtins.bytes
696
697
  snapshot_id: builtins.str
697
698
  """A unique ID to ensure idempotency of directory snapshot requests."""
699
+ ttl_seconds: builtins.int
700
+ """Lifetime for the resulting image, in seconds. When set, the
701
+ image's expires_at is a hard cutoff: it is fixed at creation time
702
+ and is not extended on use.
703
+
704
+ When unset, the resulting image gets the legacy retention policy:
705
+ a 30-day TTL that is bumped forward by 30 days on every use, so
706
+ active images effectively never expire.
707
+
708
+ Sentinel: -1 means "no expiry" (the image never expires).
709
+ 0 and other negative values are invalid and rejected by the
710
+ server.
711
+ """
698
712
  def __init__(
699
713
  self,
700
714
  *,
701
715
  task_id: builtins.str = ...,
702
716
  path: builtins.bytes = ...,
703
717
  snapshot_id: builtins.str = ...,
718
+ ttl_seconds: builtins.int | None = ...,
704
719
  ) -> None: ...
705
- def ClearField(self, field_name: typing_extensions.Literal["path", b"path", "snapshot_id", b"snapshot_id", "task_id", b"task_id"]) -> None: ...
720
+ def HasField(self, field_name: typing_extensions.Literal["_ttl_seconds", b"_ttl_seconds", "ttl_seconds", b"ttl_seconds"]) -> builtins.bool: ...
721
+ def ClearField(self, field_name: typing_extensions.Literal["_ttl_seconds", b"_ttl_seconds", "path", b"path", "snapshot_id", b"snapshot_id", "task_id", b"task_id", "ttl_seconds", b"ttl_seconds"]) -> None: ...
722
+ def WhichOneof(self, oneof_group: typing_extensions.Literal["_ttl_seconds", b"_ttl_seconds"]) -> typing_extensions.Literal["ttl_seconds"] | None: ...
706
723
 
707
724
  global___TaskSnapshotDirectoryRequest = TaskSnapshotDirectoryRequest
708
725
 
@@ -1,4 +1,4 @@
1
1
  # Copyright Modal Labs 2026
2
2
  """Supplies the current version of the modal client library."""
3
3
 
4
- __version__ = "1.4.3.dev12"
4
+ __version__ = "1.4.3.dev13"
@@ -38,7 +38,6 @@ classifiers = [
38
38
 
39
39
  [dependency-groups]
40
40
  dev = [
41
- "cbor2==5.7.0",
42
41
  "fastapi~=0.125",
43
42
  "flaky~=3.8",
44
43
  "grpclib==0.4.9",
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes