modal 1.4.4.dev11__tar.gz → 1.4.4.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 (219) hide show
  1. {modal-1.4.4.dev11 → modal-1.4.4.dev13}/PKG-INFO +1 -1
  2. {modal-1.4.4.dev11 → modal-1.4.4.dev13}/modal/client.pyi +2 -2
  3. {modal-1.4.4.dev11 → modal-1.4.4.dev13}/modal.egg-info/PKG-INFO +1 -1
  4. {modal-1.4.4.dev11 → modal-1.4.4.dev13}/modal_docs/gen_reference_docs.py +11 -22
  5. {modal-1.4.4.dev11 → modal-1.4.4.dev13}/modal_docs/mdmd/mdmd.py +13 -1
  6. {modal-1.4.4.dev11 → modal-1.4.4.dev13}/modal_proto/task_command_router_pb2.py +23 -23
  7. {modal-1.4.4.dev11 → modal-1.4.4.dev13}/modal_proto/task_command_router_pb2.pyi +31 -5
  8. {modal-1.4.4.dev11 → modal-1.4.4.dev13}/modal_version/__init__.py +1 -1
  9. {modal-1.4.4.dev11 → modal-1.4.4.dev13}/LICENSE +0 -0
  10. {modal-1.4.4.dev11 → modal-1.4.4.dev13}/README.md +0 -0
  11. {modal-1.4.4.dev11 → modal-1.4.4.dev13}/modal/__init__.py +0 -0
  12. {modal-1.4.4.dev11 → modal-1.4.4.dev13}/modal/__main__.py +0 -0
  13. {modal-1.4.4.dev11 → modal-1.4.4.dev13}/modal/_billing.py +0 -0
  14. {modal-1.4.4.dev11 → modal-1.4.4.dev13}/modal/_clustered_functions.py +0 -0
  15. {modal-1.4.4.dev11 → modal-1.4.4.dev13}/modal/_clustered_functions.pyi +0 -0
  16. {modal-1.4.4.dev11 → modal-1.4.4.dev13}/modal/_container_entrypoint.py +0 -0
  17. {modal-1.4.4.dev11 → modal-1.4.4.dev13}/modal/_environments.py +0 -0
  18. {modal-1.4.4.dev11 → modal-1.4.4.dev13}/modal/_function_variants.py +0 -0
  19. {modal-1.4.4.dev11 → modal-1.4.4.dev13}/modal/_functions.py +0 -0
  20. {modal-1.4.4.dev11 → modal-1.4.4.dev13}/modal/_grpc_client.py +0 -0
  21. {modal-1.4.4.dev11 → modal-1.4.4.dev13}/modal/_ipython.py +0 -0
  22. {modal-1.4.4.dev11 → modal-1.4.4.dev13}/modal/_load_context.py +0 -0
  23. {modal-1.4.4.dev11 → modal-1.4.4.dev13}/modal/_location.py +0 -0
  24. {modal-1.4.4.dev11 → modal-1.4.4.dev13}/modal/_logs.py +0 -0
  25. {modal-1.4.4.dev11 → modal-1.4.4.dev13}/modal/_object.py +0 -0
  26. {modal-1.4.4.dev11 → modal-1.4.4.dev13}/modal/_output/__init__.py +0 -0
  27. {modal-1.4.4.dev11 → modal-1.4.4.dev13}/modal/_output/manager.py +0 -0
  28. {modal-1.4.4.dev11 → modal-1.4.4.dev13}/modal/_output/pty.py +0 -0
  29. {modal-1.4.4.dev11 → modal-1.4.4.dev13}/modal/_output/rich.py +0 -0
  30. {modal-1.4.4.dev11 → modal-1.4.4.dev13}/modal/_output/status.py +0 -0
  31. {modal-1.4.4.dev11 → modal-1.4.4.dev13}/modal/_partial_function.py +0 -0
  32. {modal-1.4.4.dev11 → modal-1.4.4.dev13}/modal/_resolver.py +0 -0
  33. {modal-1.4.4.dev11 → modal-1.4.4.dev13}/modal/_resources.py +0 -0
  34. {modal-1.4.4.dev11 → modal-1.4.4.dev13}/modal/_runtime/__init__.py +0 -0
  35. {modal-1.4.4.dev11 → modal-1.4.4.dev13}/modal/_runtime/asgi.py +0 -0
  36. {modal-1.4.4.dev11 → modal-1.4.4.dev13}/modal/_runtime/container_io_manager.py +0 -0
  37. {modal-1.4.4.dev11 → modal-1.4.4.dev13}/modal/_runtime/container_io_manager.pyi +0 -0
  38. {modal-1.4.4.dev11 → modal-1.4.4.dev13}/modal/_runtime/execution_context.py +0 -0
  39. {modal-1.4.4.dev11 → modal-1.4.4.dev13}/modal/_runtime/execution_context.pyi +0 -0
  40. {modal-1.4.4.dev11 → modal-1.4.4.dev13}/modal/_runtime/gpu_memory_snapshot.py +0 -0
  41. {modal-1.4.4.dev11 → modal-1.4.4.dev13}/modal/_runtime/task_lifecycle_manager.py +0 -0
  42. {modal-1.4.4.dev11 → modal-1.4.4.dev13}/modal/_runtime/task_lifecycle_manager.pyi +0 -0
  43. {modal-1.4.4.dev11 → modal-1.4.4.dev13}/modal/_runtime/telemetry.py +0 -0
  44. {modal-1.4.4.dev11 → modal-1.4.4.dev13}/modal/_runtime/user_code_event_loop.py +0 -0
  45. {modal-1.4.4.dev11 → modal-1.4.4.dev13}/modal/_runtime/user_code_imports.py +0 -0
  46. {modal-1.4.4.dev11 → modal-1.4.4.dev13}/modal/_serialization.py +0 -0
  47. {modal-1.4.4.dev11 → modal-1.4.4.dev13}/modal/_server.py +0 -0
  48. {modal-1.4.4.dev11 → modal-1.4.4.dev13}/modal/_traceback.py +0 -0
  49. {modal-1.4.4.dev11 → modal-1.4.4.dev13}/modal/_tunnel.py +0 -0
  50. {modal-1.4.4.dev11 → modal-1.4.4.dev13}/modal/_tunnel.pyi +0 -0
  51. {modal-1.4.4.dev11 → modal-1.4.4.dev13}/modal/_type_manager.py +0 -0
  52. {modal-1.4.4.dev11 → modal-1.4.4.dev13}/modal/_utils/__init__.py +0 -0
  53. {modal-1.4.4.dev11 → modal-1.4.4.dev13}/modal/_utils/app_utils.py +0 -0
  54. {modal-1.4.4.dev11 → modal-1.4.4.dev13}/modal/_utils/async_utils.py +0 -0
  55. {modal-1.4.4.dev11 → modal-1.4.4.dev13}/modal/_utils/auth_token_manager.py +0 -0
  56. {modal-1.4.4.dev11 → modal-1.4.4.dev13}/modal/_utils/blob_utils.py +0 -0
  57. {modal-1.4.4.dev11 → modal-1.4.4.dev13}/modal/_utils/browser_utils.py +0 -0
  58. {modal-1.4.4.dev11 → modal-1.4.4.dev13}/modal/_utils/bytes_io_segment_payload.py +0 -0
  59. {modal-1.4.4.dev11 → modal-1.4.4.dev13}/modal/_utils/deprecation.py +0 -0
  60. {modal-1.4.4.dev11 → modal-1.4.4.dev13}/modal/_utils/docker_utils.py +0 -0
  61. {modal-1.4.4.dev11 → modal-1.4.4.dev13}/modal/_utils/function_utils.py +0 -0
  62. {modal-1.4.4.dev11 → modal-1.4.4.dev13}/modal/_utils/git_utils.py +0 -0
  63. {modal-1.4.4.dev11 → modal-1.4.4.dev13}/modal/_utils/grpc_testing.py +0 -0
  64. {modal-1.4.4.dev11 → modal-1.4.4.dev13}/modal/_utils/grpc_utils.py +0 -0
  65. {modal-1.4.4.dev11 → modal-1.4.4.dev13}/modal/_utils/hash_utils.py +0 -0
  66. {modal-1.4.4.dev11 → modal-1.4.4.dev13}/modal/_utils/http_utils.py +0 -0
  67. {modal-1.4.4.dev11 → modal-1.4.4.dev13}/modal/_utils/jwt_utils.py +0 -0
  68. {modal-1.4.4.dev11 → modal-1.4.4.dev13}/modal/_utils/logger.py +0 -0
  69. {modal-1.4.4.dev11 → modal-1.4.4.dev13}/modal/_utils/mount_utils.py +0 -0
  70. {modal-1.4.4.dev11 → modal-1.4.4.dev13}/modal/_utils/name_utils.py +0 -0
  71. {modal-1.4.4.dev11 → modal-1.4.4.dev13}/modal/_utils/package_utils.py +0 -0
  72. {modal-1.4.4.dev11 → modal-1.4.4.dev13}/modal/_utils/pattern_utils.py +0 -0
  73. {modal-1.4.4.dev11 → modal-1.4.4.dev13}/modal/_utils/rand_pb_testing.py +0 -0
  74. {modal-1.4.4.dev11 → modal-1.4.4.dev13}/modal/_utils/sandbox_fs_utils.py +0 -0
  75. {modal-1.4.4.dev11 → modal-1.4.4.dev13}/modal/_utils/shell_utils.py +0 -0
  76. {modal-1.4.4.dev11 → modal-1.4.4.dev13}/modal/_utils/task_command_router_client.py +0 -0
  77. {modal-1.4.4.dev11 → modal-1.4.4.dev13}/modal/_utils/time_utils.py +0 -0
  78. {modal-1.4.4.dev11 → modal-1.4.4.dev13}/modal/_vendor/__init__.py +0 -0
  79. {modal-1.4.4.dev11 → modal-1.4.4.dev13}/modal/_vendor/a2wsgi_wsgi.py +0 -0
  80. {modal-1.4.4.dev11 → modal-1.4.4.dev13}/modal/_vendor/cloudpickle.py +0 -0
  81. {modal-1.4.4.dev11 → modal-1.4.4.dev13}/modal/_vendor/tblib.py +0 -0
  82. {modal-1.4.4.dev11 → modal-1.4.4.dev13}/modal/_vendor/version.py +0 -0
  83. {modal-1.4.4.dev11 → modal-1.4.4.dev13}/modal/_watcher.py +0 -0
  84. {modal-1.4.4.dev11 → modal-1.4.4.dev13}/modal/_workspace.py +0 -0
  85. {modal-1.4.4.dev11 → modal-1.4.4.dev13}/modal/app.py +0 -0
  86. {modal-1.4.4.dev11 → modal-1.4.4.dev13}/modal/app.pyi +0 -0
  87. {modal-1.4.4.dev11 → modal-1.4.4.dev13}/modal/billing.py +0 -0
  88. {modal-1.4.4.dev11 → modal-1.4.4.dev13}/modal/builder/2023.12.312.txt +0 -0
  89. {modal-1.4.4.dev11 → modal-1.4.4.dev13}/modal/builder/2023.12.txt +0 -0
  90. {modal-1.4.4.dev11 → modal-1.4.4.dev13}/modal/builder/2024.04.txt +0 -0
  91. {modal-1.4.4.dev11 → modal-1.4.4.dev13}/modal/builder/2024.10.txt +0 -0
  92. {modal-1.4.4.dev11 → modal-1.4.4.dev13}/modal/builder/2025.06.txt +0 -0
  93. {modal-1.4.4.dev11 → modal-1.4.4.dev13}/modal/builder/PREVIEW.txt +0 -0
  94. {modal-1.4.4.dev11 → modal-1.4.4.dev13}/modal/builder/README.md +0 -0
  95. {modal-1.4.4.dev11 → modal-1.4.4.dev13}/modal/builder/base-images.json +0 -0
  96. {modal-1.4.4.dev11 → modal-1.4.4.dev13}/modal/call_graph.py +0 -0
  97. {modal-1.4.4.dev11 → modal-1.4.4.dev13}/modal/cli/__init__.py +0 -0
  98. {modal-1.4.4.dev11 → modal-1.4.4.dev13}/modal/cli/_download.py +0 -0
  99. {modal-1.4.4.dev11 → modal-1.4.4.dev13}/modal/cli/_help.py +0 -0
  100. {modal-1.4.4.dev11 → modal-1.4.4.dev13}/modal/cli/_traceback.py +0 -0
  101. {modal-1.4.4.dev11 → modal-1.4.4.dev13}/modal/cli/app.py +0 -0
  102. {modal-1.4.4.dev11 → modal-1.4.4.dev13}/modal/cli/billing.py +0 -0
  103. {modal-1.4.4.dev11 → modal-1.4.4.dev13}/modal/cli/bootstrap.py +0 -0
  104. {modal-1.4.4.dev11 → modal-1.4.4.dev13}/modal/cli/changelog.py +0 -0
  105. {modal-1.4.4.dev11 → modal-1.4.4.dev13}/modal/cli/cluster.py +0 -0
  106. {modal-1.4.4.dev11 → modal-1.4.4.dev13}/modal/cli/config.py +0 -0
  107. {modal-1.4.4.dev11 → modal-1.4.4.dev13}/modal/cli/container.py +0 -0
  108. {modal-1.4.4.dev11 → modal-1.4.4.dev13}/modal/cli/dashboard.py +0 -0
  109. {modal-1.4.4.dev11 → modal-1.4.4.dev13}/modal/cli/dict.py +0 -0
  110. {modal-1.4.4.dev11 → modal-1.4.4.dev13}/modal/cli/entry_point.py +0 -0
  111. {modal-1.4.4.dev11 → modal-1.4.4.dev13}/modal/cli/environment.py +0 -0
  112. {modal-1.4.4.dev11 → modal-1.4.4.dev13}/modal/cli/import_refs.py +0 -0
  113. {modal-1.4.4.dev11 → modal-1.4.4.dev13}/modal/cli/launch.py +0 -0
  114. {modal-1.4.4.dev11 → modal-1.4.4.dev13}/modal/cli/logo.py +0 -0
  115. {modal-1.4.4.dev11 → modal-1.4.4.dev13}/modal/cli/network_file_system.py +0 -0
  116. {modal-1.4.4.dev11 → modal-1.4.4.dev13}/modal/cli/profile.py +0 -0
  117. {modal-1.4.4.dev11 → modal-1.4.4.dev13}/modal/cli/programs/__init__.py +0 -0
  118. {modal-1.4.4.dev11 → modal-1.4.4.dev13}/modal/cli/programs/run_jupyter.py +0 -0
  119. {modal-1.4.4.dev11 → modal-1.4.4.dev13}/modal/cli/programs/vscode.py +0 -0
  120. {modal-1.4.4.dev11 → modal-1.4.4.dev13}/modal/cli/queues.py +0 -0
  121. {modal-1.4.4.dev11 → modal-1.4.4.dev13}/modal/cli/run.py +0 -0
  122. {modal-1.4.4.dev11 → modal-1.4.4.dev13}/modal/cli/secret.py +0 -0
  123. {modal-1.4.4.dev11 → modal-1.4.4.dev13}/modal/cli/selector.py +0 -0
  124. {modal-1.4.4.dev11 → modal-1.4.4.dev13}/modal/cli/shell.py +0 -0
  125. {modal-1.4.4.dev11 → modal-1.4.4.dev13}/modal/cli/token.py +0 -0
  126. {modal-1.4.4.dev11 → modal-1.4.4.dev13}/modal/cli/utils.py +0 -0
  127. {modal-1.4.4.dev11 → modal-1.4.4.dev13}/modal/cli/volume.py +0 -0
  128. {modal-1.4.4.dev11 → modal-1.4.4.dev13}/modal/client.py +0 -0
  129. {modal-1.4.4.dev11 → modal-1.4.4.dev13}/modal/cloud_bucket_mount.py +0 -0
  130. {modal-1.4.4.dev11 → modal-1.4.4.dev13}/modal/cloud_bucket_mount.pyi +0 -0
  131. {modal-1.4.4.dev11 → modal-1.4.4.dev13}/modal/cls.py +0 -0
  132. {modal-1.4.4.dev11 → modal-1.4.4.dev13}/modal/cls.pyi +0 -0
  133. {modal-1.4.4.dev11 → modal-1.4.4.dev13}/modal/config.py +0 -0
  134. {modal-1.4.4.dev11 → modal-1.4.4.dev13}/modal/container_process.py +0 -0
  135. {modal-1.4.4.dev11 → modal-1.4.4.dev13}/modal/container_process.pyi +0 -0
  136. {modal-1.4.4.dev11 → modal-1.4.4.dev13}/modal/dict.py +0 -0
  137. {modal-1.4.4.dev11 → modal-1.4.4.dev13}/modal/dict.pyi +0 -0
  138. {modal-1.4.4.dev11 → modal-1.4.4.dev13}/modal/environments.py +0 -0
  139. {modal-1.4.4.dev11 → modal-1.4.4.dev13}/modal/environments.pyi +0 -0
  140. {modal-1.4.4.dev11 → modal-1.4.4.dev13}/modal/exception.py +0 -0
  141. {modal-1.4.4.dev11 → modal-1.4.4.dev13}/modal/experimental/__init__.py +0 -0
  142. {modal-1.4.4.dev11 → modal-1.4.4.dev13}/modal/experimental/flash.py +0 -0
  143. {modal-1.4.4.dev11 → modal-1.4.4.dev13}/modal/experimental/flash.pyi +0 -0
  144. {modal-1.4.4.dev11 → modal-1.4.4.dev13}/modal/experimental/ipython.py +0 -0
  145. {modal-1.4.4.dev11 → modal-1.4.4.dev13}/modal/file_io.py +0 -0
  146. {modal-1.4.4.dev11 → modal-1.4.4.dev13}/modal/file_io.pyi +0 -0
  147. {modal-1.4.4.dev11 → modal-1.4.4.dev13}/modal/file_pattern_matcher.py +0 -0
  148. {modal-1.4.4.dev11 → modal-1.4.4.dev13}/modal/functions.py +0 -0
  149. {modal-1.4.4.dev11 → modal-1.4.4.dev13}/modal/functions.pyi +0 -0
  150. {modal-1.4.4.dev11 → modal-1.4.4.dev13}/modal/image.py +0 -0
  151. {modal-1.4.4.dev11 → modal-1.4.4.dev13}/modal/image.pyi +0 -0
  152. {modal-1.4.4.dev11 → modal-1.4.4.dev13}/modal/io_streams.py +0 -0
  153. {modal-1.4.4.dev11 → modal-1.4.4.dev13}/modal/io_streams.pyi +0 -0
  154. {modal-1.4.4.dev11 → modal-1.4.4.dev13}/modal/mount.py +0 -0
  155. {modal-1.4.4.dev11 → modal-1.4.4.dev13}/modal/mount.pyi +0 -0
  156. {modal-1.4.4.dev11 → modal-1.4.4.dev13}/modal/network_file_system.py +0 -0
  157. {modal-1.4.4.dev11 → modal-1.4.4.dev13}/modal/network_file_system.pyi +0 -0
  158. {modal-1.4.4.dev11 → modal-1.4.4.dev13}/modal/object.py +0 -0
  159. {modal-1.4.4.dev11 → modal-1.4.4.dev13}/modal/object.pyi +0 -0
  160. {modal-1.4.4.dev11 → modal-1.4.4.dev13}/modal/output.py +0 -0
  161. {modal-1.4.4.dev11 → modal-1.4.4.dev13}/modal/parallel_map.py +0 -0
  162. {modal-1.4.4.dev11 → modal-1.4.4.dev13}/modal/parallel_map.pyi +0 -0
  163. {modal-1.4.4.dev11 → modal-1.4.4.dev13}/modal/partial_function.py +0 -0
  164. {modal-1.4.4.dev11 → modal-1.4.4.dev13}/modal/partial_function.pyi +0 -0
  165. {modal-1.4.4.dev11 → modal-1.4.4.dev13}/modal/proxy.py +0 -0
  166. {modal-1.4.4.dev11 → modal-1.4.4.dev13}/modal/proxy.pyi +0 -0
  167. {modal-1.4.4.dev11 → modal-1.4.4.dev13}/modal/py.typed +0 -0
  168. {modal-1.4.4.dev11 → modal-1.4.4.dev13}/modal/queue.py +0 -0
  169. {modal-1.4.4.dev11 → modal-1.4.4.dev13}/modal/queue.pyi +0 -0
  170. {modal-1.4.4.dev11 → modal-1.4.4.dev13}/modal/retries.py +0 -0
  171. {modal-1.4.4.dev11 → modal-1.4.4.dev13}/modal/runner.py +0 -0
  172. {modal-1.4.4.dev11 → modal-1.4.4.dev13}/modal/runner.pyi +0 -0
  173. {modal-1.4.4.dev11 → modal-1.4.4.dev13}/modal/running_app.py +0 -0
  174. {modal-1.4.4.dev11 → modal-1.4.4.dev13}/modal/sandbox.py +0 -0
  175. {modal-1.4.4.dev11 → modal-1.4.4.dev13}/modal/sandbox.pyi +0 -0
  176. {modal-1.4.4.dev11 → modal-1.4.4.dev13}/modal/sandbox_fs.py +0 -0
  177. {modal-1.4.4.dev11 → modal-1.4.4.dev13}/modal/sandbox_fs.pyi +0 -0
  178. {modal-1.4.4.dev11 → modal-1.4.4.dev13}/modal/schedule.py +0 -0
  179. {modal-1.4.4.dev11 → modal-1.4.4.dev13}/modal/scheduler_placement.py +0 -0
  180. {modal-1.4.4.dev11 → modal-1.4.4.dev13}/modal/secret.py +0 -0
  181. {modal-1.4.4.dev11 → modal-1.4.4.dev13}/modal/secret.pyi +0 -0
  182. {modal-1.4.4.dev11 → modal-1.4.4.dev13}/modal/server.py +0 -0
  183. {modal-1.4.4.dev11 → modal-1.4.4.dev13}/modal/server.pyi +0 -0
  184. {modal-1.4.4.dev11 → modal-1.4.4.dev13}/modal/serving.py +0 -0
  185. {modal-1.4.4.dev11 → modal-1.4.4.dev13}/modal/serving.pyi +0 -0
  186. {modal-1.4.4.dev11 → modal-1.4.4.dev13}/modal/snapshot.py +0 -0
  187. {modal-1.4.4.dev11 → modal-1.4.4.dev13}/modal/snapshot.pyi +0 -0
  188. {modal-1.4.4.dev11 → modal-1.4.4.dev13}/modal/stream_type.py +0 -0
  189. {modal-1.4.4.dev11 → modal-1.4.4.dev13}/modal/token_flow.py +0 -0
  190. {modal-1.4.4.dev11 → modal-1.4.4.dev13}/modal/token_flow.pyi +0 -0
  191. {modal-1.4.4.dev11 → modal-1.4.4.dev13}/modal/volume.py +0 -0
  192. {modal-1.4.4.dev11 → modal-1.4.4.dev13}/modal/volume.pyi +0 -0
  193. {modal-1.4.4.dev11 → modal-1.4.4.dev13}/modal/workspace.py +0 -0
  194. {modal-1.4.4.dev11 → modal-1.4.4.dev13}/modal/workspace.pyi +0 -0
  195. {modal-1.4.4.dev11 → modal-1.4.4.dev13}/modal.egg-info/SOURCES.txt +0 -0
  196. {modal-1.4.4.dev11 → modal-1.4.4.dev13}/modal.egg-info/dependency_links.txt +0 -0
  197. {modal-1.4.4.dev11 → modal-1.4.4.dev13}/modal.egg-info/entry_points.txt +0 -0
  198. {modal-1.4.4.dev11 → modal-1.4.4.dev13}/modal.egg-info/requires.txt +0 -0
  199. {modal-1.4.4.dev11 → modal-1.4.4.dev13}/modal.egg-info/top_level.txt +0 -0
  200. {modal-1.4.4.dev11 → modal-1.4.4.dev13}/modal_docs/__init__.py +0 -0
  201. {modal-1.4.4.dev11 → modal-1.4.4.dev13}/modal_docs/gen_cli_docs.py +0 -0
  202. {modal-1.4.4.dev11 → modal-1.4.4.dev13}/modal_docs/gen_cli_docs_main.py +0 -0
  203. {modal-1.4.4.dev11 → modal-1.4.4.dev13}/modal_docs/gen_reference_docs_main.py +0 -0
  204. {modal-1.4.4.dev11 → modal-1.4.4.dev13}/modal_docs/mdmd/__init__.py +0 -0
  205. {modal-1.4.4.dev11 → modal-1.4.4.dev13}/modal_docs/mdmd/signatures.py +0 -0
  206. {modal-1.4.4.dev11 → modal-1.4.4.dev13}/modal_proto/__init__.py +0 -0
  207. {modal-1.4.4.dev11 → modal-1.4.4.dev13}/modal_proto/api_grpc.py +0 -0
  208. {modal-1.4.4.dev11 → modal-1.4.4.dev13}/modal_proto/api_pb2.py +0 -0
  209. {modal-1.4.4.dev11 → modal-1.4.4.dev13}/modal_proto/api_pb2.pyi +0 -0
  210. {modal-1.4.4.dev11 → modal-1.4.4.dev13}/modal_proto/api_pb2_grpc.py +0 -0
  211. {modal-1.4.4.dev11 → modal-1.4.4.dev13}/modal_proto/api_pb2_grpc.pyi +0 -0
  212. {modal-1.4.4.dev11 → modal-1.4.4.dev13}/modal_proto/modal_api_grpc.py +0 -0
  213. {modal-1.4.4.dev11 → modal-1.4.4.dev13}/modal_proto/py.typed +0 -0
  214. {modal-1.4.4.dev11 → modal-1.4.4.dev13}/modal_proto/task_command_router_grpc.py +0 -0
  215. {modal-1.4.4.dev11 → modal-1.4.4.dev13}/modal_proto/task_command_router_pb2_grpc.py +0 -0
  216. {modal-1.4.4.dev11 → modal-1.4.4.dev13}/modal_proto/task_command_router_pb2_grpc.pyi +0 -0
  217. {modal-1.4.4.dev11 → modal-1.4.4.dev13}/modal_version/__main__.py +0 -0
  218. {modal-1.4.4.dev11 → modal-1.4.4.dev13}/pyproject.toml +0 -0
  219. {modal-1.4.4.dev11 → modal-1.4.4.dev13}/setup.cfg +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: modal
3
- Version: 1.4.4.dev11
3
+ Version: 1.4.4.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
@@ -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.4.dev11",
38
+ version: str = "1.4.4.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.4.dev11",
178
+ version: str = "1.4.4.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.4.dev11
3
+ Version: 1.4.4.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
@@ -44,16 +44,13 @@ def validate_doc_item(docitem: DocItem) -> DocItem:
44
44
  return docitem
45
45
 
46
46
 
47
- def run(output_dir: str = None):
47
+ def run(output_dir: str | None = None):
48
48
  """Generate Modal docs."""
49
49
  import modal
50
50
 
51
51
  ordered_doc_items: list[DocItem] = []
52
52
  documented_items = set()
53
53
 
54
- def filter_non_aio(module, name):
55
- return not name.lower().startswith("aio")
56
-
57
54
  def filter_already_documented(module, name):
58
55
  item = getattr(module, name)
59
56
  try:
@@ -65,31 +62,34 @@ def run(output_dir: str = None):
65
62
  documented_items.add(item)
66
63
  return True
67
64
 
68
- def modal_default_filter(module, name):
69
- return default_filter(module, name) and filter_non_aio(module, name) and filter_already_documented(module, name)
65
+ def module_doc_filter(module, name):
66
+ return default_filter(module, name)
70
67
 
71
68
  def top_level_filter(module, name):
72
69
  item = getattr(module, name)
73
70
  if object_is_private(name, item) or inspect.ismodule(item):
74
71
  return False
75
- return package_filter("modal") and filter_already_documented(module, name) and filter_non_aio(module, name)
72
+ return package_filter("modal") and filter_already_documented(module, name)
76
73
 
77
74
  base_title_level = "#"
78
- forced_module_docs = [
75
+ # Standalone module reference pages, sorted into the sidebar with top-level `modal.X` entries.
76
+ module_docs = [
79
77
  ("modal.billing", "modal.billing"),
80
78
  ("modal.call_graph", "modal.call_graph"),
79
+ ("modal.config", "modal.config"),
81
80
  ("modal.container_process", "modal.container_process"),
82
- ("modal.io_streams", "modal.io_streams"),
81
+ ("modal.exception", "modal.exception"),
83
82
  ("modal.file_io", "modal.file_io"),
83
+ ("modal.io_streams", "modal.io_streams"),
84
84
  ]
85
85
  # These aren't defined in `modal`, but should still be documented as top-level entries.
86
86
  forced_members: set[str] = set()
87
87
  # These are excluded from the sidebar, typically to 'soft release' some documentation.
88
88
  sidebar_excluded: set[str] = {"modal.NetworkFileSystem"}
89
89
 
90
- for title, modulepath in forced_module_docs:
90
+ for title, modulepath in module_docs:
91
91
  module = importlib.import_module(modulepath)
92
- document = module_str(modulepath, module, title_level=base_title_level, filter_items=modal_default_filter)
92
+ document = module_str(modulepath, module, title_level=base_title_level, filter_items=module_doc_filter)
93
93
  if document:
94
94
  ordered_doc_items.append(
95
95
  validate_doc_item(
@@ -134,17 +134,6 @@ def run(output_dir: str = None):
134
134
  )
135
135
  ordered_doc_items.sort()
136
136
 
137
- for modulepath in ["modal.exception", "modal.config"]:
138
- module = importlib.import_module(modulepath)
139
- document = module_str(modulepath, module, title_level=base_title_level, filter_items=modal_default_filter)
140
- ordered_doc_items.append(
141
- DocItem(
142
- label=modulepath,
143
- category=Category.MODULE,
144
- document=document,
145
- )
146
- )
147
-
148
137
  # TODO: add some way of documenting our .aio sub-methods
149
138
 
150
139
  make_markdown_docs(
@@ -19,7 +19,11 @@ def format_docstring(docstring: str | None) -> str:
19
19
  else:
20
20
  docstring = inspect.cleandoc(docstring)
21
21
 
22
- docstring = "\n".join(l for l in docstring.split("\n") if "mdmd:line-hidden" not in l and "mdmd:namespace" not in l)
22
+ docstring = "\n".join(
23
+ l
24
+ for l in docstring.split("\n")
25
+ if "mdmd:line-hidden" not in l and "mdmd:namespace" not in l and "mdmd:exported" not in l
26
+ )
23
27
 
24
28
  if docstring and not docstring.endswith("\n"):
25
29
  docstring += "\n"
@@ -238,6 +242,12 @@ def object_is_private(name, obj):
238
242
  return False
239
243
 
240
244
 
245
+ def module_reexports_all(module: ModuleType) -> bool:
246
+ """Use `mdmd:exported` for modules that re-export objects defined elsewhere via __all__."""
247
+ docstring = module.__doc__ or ""
248
+ return any("mdmd:exported" in line for line in docstring.split("\n"))
249
+
250
+
241
251
  def default_filter(module, item_name):
242
252
  """Include non-private objects defined in the module itself or its private counterpart."""
243
253
  item = getattr(module, item_name)
@@ -246,6 +256,8 @@ def default_filter(module, item_name):
246
256
  member_module = getattr(item, "__module__", type(item).__module__)
247
257
  if member_module == module.__name__:
248
258
  return True
259
+ if module_reexports_all(module) and item_name in getattr(module, "__all__", ()):
260
+ return True
249
261
  # Also allow items from the corresponding private module (e.g., modal._foo for modal.foo)
250
262
  parts = module.__name__.rsplit(".", 1)
251
263
  if len(parts) == 2:
@@ -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\"\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\">\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\"\x87\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\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\"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\"o\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\x42\x0e\n\x0c_ttl_seconds\"2\n\x1eTaskSnapshotFilesystemResponse\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\x99\x12\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\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\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\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\"\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\">\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\"\x87\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\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\"\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\"<\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\x99\x12\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\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\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\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)
@@ -353,14 +353,14 @@ if _descriptor._USE_C_DESCRIPTORS == False:
353
353
  _TASKCONTAINERCREATEREQUEST_ENVENTRY._serialized_options = b'8\001'
354
354
  _TASKEXECSTARTREQUEST_ENVENTRY._options = None
355
355
  _TASKEXECSTARTREQUEST_ENVENTRY._serialized_options = b'8\001'
356
- _SANDBOXSTDIOFILEDESCRIPTOR._serialized_start=3584
357
- _SANDBOXSTDIOFILEDESCRIPTOR._serialized_end=3696
358
- _TASKEXECSTDERRCONFIG._serialized_start=3699
359
- _TASKEXECSTDERRCONFIG._serialized_end=3828
360
- _TASKEXECSTDIOFILEDESCRIPTOR._serialized_start=3830
361
- _TASKEXECSTDIOFILEDESCRIPTOR._serialized_end=3947
362
- _TASKEXECSTDOUTCONFIG._serialized_start=3949
363
- _TASKEXECSTDOUTCONFIG._serialized_end=4042
356
+ _SANDBOXSTDIOFILEDESCRIPTOR._serialized_start=3839
357
+ _SANDBOXSTDIOFILEDESCRIPTOR._serialized_end=3951
358
+ _TASKEXECSTDERRCONFIG._serialized_start=3954
359
+ _TASKEXECSTDERRCONFIG._serialized_end=4083
360
+ _TASKEXECSTDIOFILEDESCRIPTOR._serialized_start=4085
361
+ _TASKEXECSTDIOFILEDESCRIPTOR._serialized_end=4202
362
+ _TASKEXECSTDOUTCONFIG._serialized_start=4204
363
+ _TASKEXECSTDOUTCONFIG._serialized_end=4297
364
364
  _SANDBOXSTDINWRITEV2REQUEST._serialized_start=120
365
365
  _SANDBOXSTDINWRITEV2REQUEST._serialized_end=208
366
366
  _SANDBOXSTDINWRITEV2RESPONSE._serialized_start=210
@@ -425,18 +425,18 @@ if _descriptor._USE_C_DESCRIPTORS == False:
425
425
  _TASKEXECWAITREQUEST._serialized_end=3027
426
426
  _TASKEXECWAITRESPONSE._serialized_start=3029
427
427
  _TASKEXECWAITRESPONSE._serialized_end=3100
428
- _TASKMOUNTDIRECTORYREQUEST._serialized_start=3102
429
- _TASKMOUNTDIRECTORYREQUEST._serialized_end=3178
430
- _TASKSNAPSHOTDIRECTORYREQUEST._serialized_start=3180
431
- _TASKSNAPSHOTDIRECTORYREQUEST._serialized_end=3304
432
- _TASKSNAPSHOTDIRECTORYRESPONSE._serialized_start=3306
433
- _TASKSNAPSHOTDIRECTORYRESPONSE._serialized_end=3355
434
- _TASKSNAPSHOTFILESYSTEMREQUEST._serialized_start=3357
435
- _TASKSNAPSHOTFILESYSTEMREQUEST._serialized_end=3468
436
- _TASKSNAPSHOTFILESYSTEMRESPONSE._serialized_start=3470
437
- _TASKSNAPSHOTFILESYSTEMRESPONSE._serialized_end=3520
438
- _TASKUNMOUNTDIRECTORYREQUEST._serialized_start=3522
439
- _TASKUNMOUNTDIRECTORYREQUEST._serialized_end=3582
440
- _TASKCOMMANDROUTER._serialized_start=4045
441
- _TASKCOMMANDROUTER._serialized_end=6374
428
+ _TASKMOUNTDIRECTORYREQUEST._serialized_start=3103
429
+ _TASKMOUNTDIRECTORYREQUEST._serialized_end=3263
430
+ _TASKSNAPSHOTDIRECTORYREQUEST._serialized_start=3266
431
+ _TASKSNAPSHOTDIRECTORYREQUEST._serialized_end=3474
432
+ _TASKSNAPSHOTDIRECTORYRESPONSE._serialized_start=3476
433
+ _TASKSNAPSHOTDIRECTORYRESPONSE._serialized_end=3525
434
+ _TASKSNAPSHOTFILESYSTEMREQUEST._serialized_start=3528
435
+ _TASKSNAPSHOTFILESYSTEMREQUEST._serialized_end=3723
436
+ _TASKSNAPSHOTFILESYSTEMRESPONSE._serialized_start=3725
437
+ _TASKSNAPSHOTFILESYSTEMRESPONSE._serialized_end=3775
438
+ _TASKUNMOUNTDIRECTORYREQUEST._serialized_start=3777
439
+ _TASKUNMOUNTDIRECTORYREQUEST._serialized_end=3837
440
+ _TASKCOMMANDROUTER._serialized_start=4300
441
+ _TASKCOMMANDROUTER._serialized_end=6629
442
442
  # @@protoc_insertion_point(module_scope)
@@ -769,17 +769,25 @@ class TaskMountDirectoryRequest(google.protobuf.message.Message):
769
769
  TASK_ID_FIELD_NUMBER: builtins.int
770
770
  PATH_FIELD_NUMBER: builtins.int
771
771
  IMAGE_ID_FIELD_NUMBER: builtins.int
772
+ CUSTOMER_SUPPLIED_ENCRYPTION_KEY_FIELD_NUMBER: builtins.int
772
773
  task_id: builtins.str
773
774
  path: builtins.bytes
774
775
  image_id: builtins.str
776
+ customer_supplied_encryption_key: builtins.bytes
777
+ """Customer-supplied encryption key used to decrypt CSEK-encrypted image metadata keys.
778
+ This key is not persisted by Modal.
779
+ """
775
780
  def __init__(
776
781
  self,
777
782
  *,
778
783
  task_id: builtins.str = ...,
779
784
  path: builtins.bytes = ...,
780
785
  image_id: builtins.str = ...,
786
+ customer_supplied_encryption_key: builtins.bytes | None = ...,
781
787
  ) -> None: ...
782
- def ClearField(self, field_name: typing_extensions.Literal["image_id", b"image_id", "path", b"path", "task_id", b"task_id"]) -> None: ...
788
+ def HasField(self, field_name: typing_extensions.Literal["_customer_supplied_encryption_key", b"_customer_supplied_encryption_key", "customer_supplied_encryption_key", b"customer_supplied_encryption_key"]) -> builtins.bool: ...
789
+ def ClearField(self, field_name: typing_extensions.Literal["_customer_supplied_encryption_key", b"_customer_supplied_encryption_key", "customer_supplied_encryption_key", b"customer_supplied_encryption_key", "image_id", b"image_id", "path", b"path", "task_id", b"task_id"]) -> None: ...
790
+ def WhichOneof(self, oneof_group: typing_extensions.Literal["_customer_supplied_encryption_key", b"_customer_supplied_encryption_key"]) -> typing_extensions.Literal["customer_supplied_encryption_key"] | None: ...
783
791
 
784
792
  global___TaskMountDirectoryRequest = TaskMountDirectoryRequest
785
793
 
@@ -790,6 +798,7 @@ class TaskSnapshotDirectoryRequest(google.protobuf.message.Message):
790
798
  PATH_FIELD_NUMBER: builtins.int
791
799
  SNAPSHOT_ID_FIELD_NUMBER: builtins.int
792
800
  TTL_SECONDS_FIELD_NUMBER: builtins.int
801
+ CUSTOMER_SUPPLIED_ENCRYPTION_KEY_FIELD_NUMBER: builtins.int
793
802
  task_id: builtins.str
794
803
  path: builtins.bytes
795
804
  snapshot_id: builtins.str
@@ -807,6 +816,10 @@ class TaskSnapshotDirectoryRequest(google.protobuf.message.Message):
807
816
  0 and other negative values are invalid and rejected by the
808
817
  server.
809
818
  """
819
+ customer_supplied_encryption_key: builtins.bytes
820
+ """Customer-supplied encryption key used to encrypt the resulting image's data and tree
821
+ metadata keys. This key is not persisted by Modal.
822
+ """
810
823
  def __init__(
811
824
  self,
812
825
  *,
@@ -814,9 +827,13 @@ class TaskSnapshotDirectoryRequest(google.protobuf.message.Message):
814
827
  path: builtins.bytes = ...,
815
828
  snapshot_id: builtins.str = ...,
816
829
  ttl_seconds: builtins.int | None = ...,
830
+ customer_supplied_encryption_key: builtins.bytes | None = ...,
817
831
  ) -> None: ...
818
- def HasField(self, field_name: typing_extensions.Literal["_ttl_seconds", b"_ttl_seconds", "ttl_seconds", b"ttl_seconds"]) -> builtins.bool: ...
819
- 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: ...
832
+ def HasField(self, field_name: typing_extensions.Literal["_customer_supplied_encryption_key", b"_customer_supplied_encryption_key", "_ttl_seconds", b"_ttl_seconds", "customer_supplied_encryption_key", b"customer_supplied_encryption_key", "ttl_seconds", b"ttl_seconds"]) -> builtins.bool: ...
833
+ def ClearField(self, field_name: typing_extensions.Literal["_customer_supplied_encryption_key", b"_customer_supplied_encryption_key", "_ttl_seconds", b"_ttl_seconds", "customer_supplied_encryption_key", b"customer_supplied_encryption_key", "path", b"path", "snapshot_id", b"snapshot_id", "task_id", b"task_id", "ttl_seconds", b"ttl_seconds"]) -> None: ...
834
+ @typing.overload
835
+ def WhichOneof(self, oneof_group: typing_extensions.Literal["_customer_supplied_encryption_key", b"_customer_supplied_encryption_key"]) -> typing_extensions.Literal["customer_supplied_encryption_key"] | None: ...
836
+ @typing.overload
820
837
  def WhichOneof(self, oneof_group: typing_extensions.Literal["_ttl_seconds", b"_ttl_seconds"]) -> typing_extensions.Literal["ttl_seconds"] | None: ...
821
838
 
822
839
  global___TaskSnapshotDirectoryRequest = TaskSnapshotDirectoryRequest
@@ -841,6 +858,7 @@ class TaskSnapshotFilesystemRequest(google.protobuf.message.Message):
841
858
  TASK_ID_FIELD_NUMBER: builtins.int
842
859
  SNAPSHOT_ID_FIELD_NUMBER: builtins.int
843
860
  TTL_SECONDS_FIELD_NUMBER: builtins.int
861
+ CUSTOMER_SUPPLIED_ENCRYPTION_KEY_FIELD_NUMBER: builtins.int
844
862
  task_id: builtins.str
845
863
  snapshot_id: builtins.str
846
864
  """A unique ID to ensure idempotency of filesystem snapshot requests."""
@@ -853,15 +871,23 @@ class TaskSnapshotFilesystemRequest(google.protobuf.message.Message):
853
871
  0 and other negative values are invalid and rejected by the
854
872
  server.
855
873
  """
874
+ customer_supplied_encryption_key: builtins.bytes
875
+ """Customer-supplied encryption key used to encrypt the resulting image's data and tree
876
+ metadata keys. This key is not persisted by Modal.
877
+ """
856
878
  def __init__(
857
879
  self,
858
880
  *,
859
881
  task_id: builtins.str = ...,
860
882
  snapshot_id: builtins.str = ...,
861
883
  ttl_seconds: builtins.int | None = ...,
884
+ customer_supplied_encryption_key: builtins.bytes | None = ...,
862
885
  ) -> None: ...
863
- def HasField(self, field_name: typing_extensions.Literal["_ttl_seconds", b"_ttl_seconds", "ttl_seconds", b"ttl_seconds"]) -> builtins.bool: ...
864
- def ClearField(self, field_name: typing_extensions.Literal["_ttl_seconds", b"_ttl_seconds", "snapshot_id", b"snapshot_id", "task_id", b"task_id", "ttl_seconds", b"ttl_seconds"]) -> None: ...
886
+ def HasField(self, field_name: typing_extensions.Literal["_customer_supplied_encryption_key", b"_customer_supplied_encryption_key", "_ttl_seconds", b"_ttl_seconds", "customer_supplied_encryption_key", b"customer_supplied_encryption_key", "ttl_seconds", b"ttl_seconds"]) -> builtins.bool: ...
887
+ def ClearField(self, field_name: typing_extensions.Literal["_customer_supplied_encryption_key", b"_customer_supplied_encryption_key", "_ttl_seconds", b"_ttl_seconds", "customer_supplied_encryption_key", b"customer_supplied_encryption_key", "snapshot_id", b"snapshot_id", "task_id", b"task_id", "ttl_seconds", b"ttl_seconds"]) -> None: ...
888
+ @typing.overload
889
+ def WhichOneof(self, oneof_group: typing_extensions.Literal["_customer_supplied_encryption_key", b"_customer_supplied_encryption_key"]) -> typing_extensions.Literal["customer_supplied_encryption_key"] | None: ...
890
+ @typing.overload
865
891
  def WhichOneof(self, oneof_group: typing_extensions.Literal["_ttl_seconds", b"_ttl_seconds"]) -> typing_extensions.Literal["ttl_seconds"] | None: ...
866
892
 
867
893
  global___TaskSnapshotFilesystemRequest = TaskSnapshotFilesystemRequest
@@ -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.4.dev11"
4
+ __version__ = "1.4.4.dev13"
File without changes
File without changes
File without changes
File without changes
File without changes