modal 1.1.1.dev28__tar.gz → 1.1.1.dev29__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.

Potentially problematic release.


This version of modal might be problematic. Click here for more details.

Files changed (188) hide show
  1. {modal-1.1.1.dev28 → modal-1.1.1.dev29}/PKG-INFO +1 -1
  2. {modal-1.1.1.dev28 → modal-1.1.1.dev29}/modal/client.pyi +2 -2
  3. {modal-1.1.1.dev28 → modal-1.1.1.dev29}/modal.egg-info/PKG-INFO +1 -1
  4. {modal-1.1.1.dev28 → modal-1.1.1.dev29}/modal_proto/api.proto +22 -0
  5. {modal-1.1.1.dev28 → modal-1.1.1.dev29}/modal_proto/api_grpc.py +32 -0
  6. {modal-1.1.1.dev28 → modal-1.1.1.dev29}/modal_proto/api_pb2.py +315 -275
  7. {modal-1.1.1.dev28 → modal-1.1.1.dev29}/modal_proto/api_pb2.pyi +71 -0
  8. {modal-1.1.1.dev28 → modal-1.1.1.dev29}/modal_proto/api_pb2_grpc.py +66 -0
  9. {modal-1.1.1.dev28 → modal-1.1.1.dev29}/modal_proto/api_pb2_grpc.pyi +20 -0
  10. {modal-1.1.1.dev28 → modal-1.1.1.dev29}/modal_proto/modal_api_grpc.py +2 -0
  11. {modal-1.1.1.dev28 → modal-1.1.1.dev29}/modal_version/__init__.py +1 -1
  12. {modal-1.1.1.dev28 → modal-1.1.1.dev29}/LICENSE +0 -0
  13. {modal-1.1.1.dev28 → modal-1.1.1.dev29}/README.md +0 -0
  14. {modal-1.1.1.dev28 → modal-1.1.1.dev29}/modal/__init__.py +0 -0
  15. {modal-1.1.1.dev28 → modal-1.1.1.dev29}/modal/__main__.py +0 -0
  16. {modal-1.1.1.dev28 → modal-1.1.1.dev29}/modal/_clustered_functions.py +0 -0
  17. {modal-1.1.1.dev28 → modal-1.1.1.dev29}/modal/_clustered_functions.pyi +0 -0
  18. {modal-1.1.1.dev28 → modal-1.1.1.dev29}/modal/_container_entrypoint.py +0 -0
  19. {modal-1.1.1.dev28 → modal-1.1.1.dev29}/modal/_functions.py +0 -0
  20. {modal-1.1.1.dev28 → modal-1.1.1.dev29}/modal/_ipython.py +0 -0
  21. {modal-1.1.1.dev28 → modal-1.1.1.dev29}/modal/_location.py +0 -0
  22. {modal-1.1.1.dev28 → modal-1.1.1.dev29}/modal/_object.py +0 -0
  23. {modal-1.1.1.dev28 → modal-1.1.1.dev29}/modal/_output.py +0 -0
  24. {modal-1.1.1.dev28 → modal-1.1.1.dev29}/modal/_partial_function.py +0 -0
  25. {modal-1.1.1.dev28 → modal-1.1.1.dev29}/modal/_pty.py +0 -0
  26. {modal-1.1.1.dev28 → modal-1.1.1.dev29}/modal/_resolver.py +0 -0
  27. {modal-1.1.1.dev28 → modal-1.1.1.dev29}/modal/_resources.py +0 -0
  28. {modal-1.1.1.dev28 → modal-1.1.1.dev29}/modal/_runtime/__init__.py +0 -0
  29. {modal-1.1.1.dev28 → modal-1.1.1.dev29}/modal/_runtime/asgi.py +0 -0
  30. {modal-1.1.1.dev28 → modal-1.1.1.dev29}/modal/_runtime/container_io_manager.py +0 -0
  31. {modal-1.1.1.dev28 → modal-1.1.1.dev29}/modal/_runtime/container_io_manager.pyi +0 -0
  32. {modal-1.1.1.dev28 → modal-1.1.1.dev29}/modal/_runtime/execution_context.py +0 -0
  33. {modal-1.1.1.dev28 → modal-1.1.1.dev29}/modal/_runtime/execution_context.pyi +0 -0
  34. {modal-1.1.1.dev28 → modal-1.1.1.dev29}/modal/_runtime/gpu_memory_snapshot.py +0 -0
  35. {modal-1.1.1.dev28 → modal-1.1.1.dev29}/modal/_runtime/telemetry.py +0 -0
  36. {modal-1.1.1.dev28 → modal-1.1.1.dev29}/modal/_runtime/user_code_imports.py +0 -0
  37. {modal-1.1.1.dev28 → modal-1.1.1.dev29}/modal/_serialization.py +0 -0
  38. {modal-1.1.1.dev28 → modal-1.1.1.dev29}/modal/_traceback.py +0 -0
  39. {modal-1.1.1.dev28 → modal-1.1.1.dev29}/modal/_tunnel.py +0 -0
  40. {modal-1.1.1.dev28 → modal-1.1.1.dev29}/modal/_tunnel.pyi +0 -0
  41. {modal-1.1.1.dev28 → modal-1.1.1.dev29}/modal/_type_manager.py +0 -0
  42. {modal-1.1.1.dev28 → modal-1.1.1.dev29}/modal/_utils/__init__.py +0 -0
  43. {modal-1.1.1.dev28 → modal-1.1.1.dev29}/modal/_utils/app_utils.py +0 -0
  44. {modal-1.1.1.dev28 → modal-1.1.1.dev29}/modal/_utils/async_utils.py +0 -0
  45. {modal-1.1.1.dev28 → modal-1.1.1.dev29}/modal/_utils/auth_token_manager.py +0 -0
  46. {modal-1.1.1.dev28 → modal-1.1.1.dev29}/modal/_utils/blob_utils.py +0 -0
  47. {modal-1.1.1.dev28 → modal-1.1.1.dev29}/modal/_utils/bytes_io_segment_payload.py +0 -0
  48. {modal-1.1.1.dev28 → modal-1.1.1.dev29}/modal/_utils/deprecation.py +0 -0
  49. {modal-1.1.1.dev28 → modal-1.1.1.dev29}/modal/_utils/docker_utils.py +0 -0
  50. {modal-1.1.1.dev28 → modal-1.1.1.dev29}/modal/_utils/function_utils.py +0 -0
  51. {modal-1.1.1.dev28 → modal-1.1.1.dev29}/modal/_utils/git_utils.py +0 -0
  52. {modal-1.1.1.dev28 → modal-1.1.1.dev29}/modal/_utils/grpc_testing.py +0 -0
  53. {modal-1.1.1.dev28 → modal-1.1.1.dev29}/modal/_utils/grpc_utils.py +0 -0
  54. {modal-1.1.1.dev28 → modal-1.1.1.dev29}/modal/_utils/hash_utils.py +0 -0
  55. {modal-1.1.1.dev28 → modal-1.1.1.dev29}/modal/_utils/http_utils.py +0 -0
  56. {modal-1.1.1.dev28 → modal-1.1.1.dev29}/modal/_utils/jwt_utils.py +0 -0
  57. {modal-1.1.1.dev28 → modal-1.1.1.dev29}/modal/_utils/logger.py +0 -0
  58. {modal-1.1.1.dev28 → modal-1.1.1.dev29}/modal/_utils/mount_utils.py +0 -0
  59. {modal-1.1.1.dev28 → modal-1.1.1.dev29}/modal/_utils/name_utils.py +0 -0
  60. {modal-1.1.1.dev28 → modal-1.1.1.dev29}/modal/_utils/package_utils.py +0 -0
  61. {modal-1.1.1.dev28 → modal-1.1.1.dev29}/modal/_utils/pattern_utils.py +0 -0
  62. {modal-1.1.1.dev28 → modal-1.1.1.dev29}/modal/_utils/rand_pb_testing.py +0 -0
  63. {modal-1.1.1.dev28 → modal-1.1.1.dev29}/modal/_utils/shell_utils.py +0 -0
  64. {modal-1.1.1.dev28 → modal-1.1.1.dev29}/modal/_utils/time_utils.py +0 -0
  65. {modal-1.1.1.dev28 → modal-1.1.1.dev29}/modal/_vendor/__init__.py +0 -0
  66. {modal-1.1.1.dev28 → modal-1.1.1.dev29}/modal/_vendor/a2wsgi_wsgi.py +0 -0
  67. {modal-1.1.1.dev28 → modal-1.1.1.dev29}/modal/_vendor/cloudpickle.py +0 -0
  68. {modal-1.1.1.dev28 → modal-1.1.1.dev29}/modal/_vendor/tblib.py +0 -0
  69. {modal-1.1.1.dev28 → modal-1.1.1.dev29}/modal/_watcher.py +0 -0
  70. {modal-1.1.1.dev28 → modal-1.1.1.dev29}/modal/app.py +0 -0
  71. {modal-1.1.1.dev28 → modal-1.1.1.dev29}/modal/app.pyi +0 -0
  72. {modal-1.1.1.dev28 → modal-1.1.1.dev29}/modal/builder/2023.12.312.txt +0 -0
  73. {modal-1.1.1.dev28 → modal-1.1.1.dev29}/modal/builder/2023.12.txt +0 -0
  74. {modal-1.1.1.dev28 → modal-1.1.1.dev29}/modal/builder/2024.04.txt +0 -0
  75. {modal-1.1.1.dev28 → modal-1.1.1.dev29}/modal/builder/2024.10.txt +0 -0
  76. {modal-1.1.1.dev28 → modal-1.1.1.dev29}/modal/builder/2025.06.txt +0 -0
  77. {modal-1.1.1.dev28 → modal-1.1.1.dev29}/modal/builder/PREVIEW.txt +0 -0
  78. {modal-1.1.1.dev28 → modal-1.1.1.dev29}/modal/builder/README.md +0 -0
  79. {modal-1.1.1.dev28 → modal-1.1.1.dev29}/modal/builder/base-images.json +0 -0
  80. {modal-1.1.1.dev28 → modal-1.1.1.dev29}/modal/call_graph.py +0 -0
  81. {modal-1.1.1.dev28 → modal-1.1.1.dev29}/modal/cli/__init__.py +0 -0
  82. {modal-1.1.1.dev28 → modal-1.1.1.dev29}/modal/cli/_download.py +0 -0
  83. {modal-1.1.1.dev28 → modal-1.1.1.dev29}/modal/cli/_traceback.py +0 -0
  84. {modal-1.1.1.dev28 → modal-1.1.1.dev29}/modal/cli/app.py +0 -0
  85. {modal-1.1.1.dev28 → modal-1.1.1.dev29}/modal/cli/cluster.py +0 -0
  86. {modal-1.1.1.dev28 → modal-1.1.1.dev29}/modal/cli/config.py +0 -0
  87. {modal-1.1.1.dev28 → modal-1.1.1.dev29}/modal/cli/container.py +0 -0
  88. {modal-1.1.1.dev28 → modal-1.1.1.dev29}/modal/cli/dict.py +0 -0
  89. {modal-1.1.1.dev28 → modal-1.1.1.dev29}/modal/cli/entry_point.py +0 -0
  90. {modal-1.1.1.dev28 → modal-1.1.1.dev29}/modal/cli/environment.py +0 -0
  91. {modal-1.1.1.dev28 → modal-1.1.1.dev29}/modal/cli/import_refs.py +0 -0
  92. {modal-1.1.1.dev28 → modal-1.1.1.dev29}/modal/cli/launch.py +0 -0
  93. {modal-1.1.1.dev28 → modal-1.1.1.dev29}/modal/cli/network_file_system.py +0 -0
  94. {modal-1.1.1.dev28 → modal-1.1.1.dev29}/modal/cli/profile.py +0 -0
  95. {modal-1.1.1.dev28 → modal-1.1.1.dev29}/modal/cli/programs/__init__.py +0 -0
  96. {modal-1.1.1.dev28 → modal-1.1.1.dev29}/modal/cli/programs/run_jupyter.py +0 -0
  97. {modal-1.1.1.dev28 → modal-1.1.1.dev29}/modal/cli/programs/vscode.py +0 -0
  98. {modal-1.1.1.dev28 → modal-1.1.1.dev29}/modal/cli/queues.py +0 -0
  99. {modal-1.1.1.dev28 → modal-1.1.1.dev29}/modal/cli/run.py +0 -0
  100. {modal-1.1.1.dev28 → modal-1.1.1.dev29}/modal/cli/secret.py +0 -0
  101. {modal-1.1.1.dev28 → modal-1.1.1.dev29}/modal/cli/token.py +0 -0
  102. {modal-1.1.1.dev28 → modal-1.1.1.dev29}/modal/cli/utils.py +0 -0
  103. {modal-1.1.1.dev28 → modal-1.1.1.dev29}/modal/cli/volume.py +0 -0
  104. {modal-1.1.1.dev28 → modal-1.1.1.dev29}/modal/client.py +0 -0
  105. {modal-1.1.1.dev28 → modal-1.1.1.dev29}/modal/cloud_bucket_mount.py +0 -0
  106. {modal-1.1.1.dev28 → modal-1.1.1.dev29}/modal/cloud_bucket_mount.pyi +0 -0
  107. {modal-1.1.1.dev28 → modal-1.1.1.dev29}/modal/cls.py +0 -0
  108. {modal-1.1.1.dev28 → modal-1.1.1.dev29}/modal/cls.pyi +0 -0
  109. {modal-1.1.1.dev28 → modal-1.1.1.dev29}/modal/config.py +0 -0
  110. {modal-1.1.1.dev28 → modal-1.1.1.dev29}/modal/container_process.py +0 -0
  111. {modal-1.1.1.dev28 → modal-1.1.1.dev29}/modal/container_process.pyi +0 -0
  112. {modal-1.1.1.dev28 → modal-1.1.1.dev29}/modal/dict.py +0 -0
  113. {modal-1.1.1.dev28 → modal-1.1.1.dev29}/modal/dict.pyi +0 -0
  114. {modal-1.1.1.dev28 → modal-1.1.1.dev29}/modal/environments.py +0 -0
  115. {modal-1.1.1.dev28 → modal-1.1.1.dev29}/modal/environments.pyi +0 -0
  116. {modal-1.1.1.dev28 → modal-1.1.1.dev29}/modal/exception.py +0 -0
  117. {modal-1.1.1.dev28 → modal-1.1.1.dev29}/modal/experimental/__init__.py +0 -0
  118. {modal-1.1.1.dev28 → modal-1.1.1.dev29}/modal/experimental/flash.py +0 -0
  119. {modal-1.1.1.dev28 → modal-1.1.1.dev29}/modal/experimental/flash.pyi +0 -0
  120. {modal-1.1.1.dev28 → modal-1.1.1.dev29}/modal/experimental/ipython.py +0 -0
  121. {modal-1.1.1.dev28 → modal-1.1.1.dev29}/modal/file_io.py +0 -0
  122. {modal-1.1.1.dev28 → modal-1.1.1.dev29}/modal/file_io.pyi +0 -0
  123. {modal-1.1.1.dev28 → modal-1.1.1.dev29}/modal/file_pattern_matcher.py +0 -0
  124. {modal-1.1.1.dev28 → modal-1.1.1.dev29}/modal/functions.py +0 -0
  125. {modal-1.1.1.dev28 → modal-1.1.1.dev29}/modal/functions.pyi +0 -0
  126. {modal-1.1.1.dev28 → modal-1.1.1.dev29}/modal/gpu.py +0 -0
  127. {modal-1.1.1.dev28 → modal-1.1.1.dev29}/modal/image.py +0 -0
  128. {modal-1.1.1.dev28 → modal-1.1.1.dev29}/modal/image.pyi +0 -0
  129. {modal-1.1.1.dev28 → modal-1.1.1.dev29}/modal/io_streams.py +0 -0
  130. {modal-1.1.1.dev28 → modal-1.1.1.dev29}/modal/io_streams.pyi +0 -0
  131. {modal-1.1.1.dev28 → modal-1.1.1.dev29}/modal/mount.py +0 -0
  132. {modal-1.1.1.dev28 → modal-1.1.1.dev29}/modal/mount.pyi +0 -0
  133. {modal-1.1.1.dev28 → modal-1.1.1.dev29}/modal/network_file_system.py +0 -0
  134. {modal-1.1.1.dev28 → modal-1.1.1.dev29}/modal/network_file_system.pyi +0 -0
  135. {modal-1.1.1.dev28 → modal-1.1.1.dev29}/modal/object.py +0 -0
  136. {modal-1.1.1.dev28 → modal-1.1.1.dev29}/modal/object.pyi +0 -0
  137. {modal-1.1.1.dev28 → modal-1.1.1.dev29}/modal/output.py +0 -0
  138. {modal-1.1.1.dev28 → modal-1.1.1.dev29}/modal/parallel_map.py +0 -0
  139. {modal-1.1.1.dev28 → modal-1.1.1.dev29}/modal/parallel_map.pyi +0 -0
  140. {modal-1.1.1.dev28 → modal-1.1.1.dev29}/modal/partial_function.py +0 -0
  141. {modal-1.1.1.dev28 → modal-1.1.1.dev29}/modal/partial_function.pyi +0 -0
  142. {modal-1.1.1.dev28 → modal-1.1.1.dev29}/modal/proxy.py +0 -0
  143. {modal-1.1.1.dev28 → modal-1.1.1.dev29}/modal/proxy.pyi +0 -0
  144. {modal-1.1.1.dev28 → modal-1.1.1.dev29}/modal/py.typed +0 -0
  145. {modal-1.1.1.dev28 → modal-1.1.1.dev29}/modal/queue.py +0 -0
  146. {modal-1.1.1.dev28 → modal-1.1.1.dev29}/modal/queue.pyi +0 -0
  147. {modal-1.1.1.dev28 → modal-1.1.1.dev29}/modal/retries.py +0 -0
  148. {modal-1.1.1.dev28 → modal-1.1.1.dev29}/modal/runner.py +0 -0
  149. {modal-1.1.1.dev28 → modal-1.1.1.dev29}/modal/runner.pyi +0 -0
  150. {modal-1.1.1.dev28 → modal-1.1.1.dev29}/modal/running_app.py +0 -0
  151. {modal-1.1.1.dev28 → modal-1.1.1.dev29}/modal/sandbox.py +0 -0
  152. {modal-1.1.1.dev28 → modal-1.1.1.dev29}/modal/sandbox.pyi +0 -0
  153. {modal-1.1.1.dev28 → modal-1.1.1.dev29}/modal/schedule.py +0 -0
  154. {modal-1.1.1.dev28 → modal-1.1.1.dev29}/modal/scheduler_placement.py +0 -0
  155. {modal-1.1.1.dev28 → modal-1.1.1.dev29}/modal/secret.py +0 -0
  156. {modal-1.1.1.dev28 → modal-1.1.1.dev29}/modal/secret.pyi +0 -0
  157. {modal-1.1.1.dev28 → modal-1.1.1.dev29}/modal/serving.py +0 -0
  158. {modal-1.1.1.dev28 → modal-1.1.1.dev29}/modal/serving.pyi +0 -0
  159. {modal-1.1.1.dev28 → modal-1.1.1.dev29}/modal/snapshot.py +0 -0
  160. {modal-1.1.1.dev28 → modal-1.1.1.dev29}/modal/snapshot.pyi +0 -0
  161. {modal-1.1.1.dev28 → modal-1.1.1.dev29}/modal/stream_type.py +0 -0
  162. {modal-1.1.1.dev28 → modal-1.1.1.dev29}/modal/token_flow.py +0 -0
  163. {modal-1.1.1.dev28 → modal-1.1.1.dev29}/modal/token_flow.pyi +0 -0
  164. {modal-1.1.1.dev28 → modal-1.1.1.dev29}/modal/volume.py +0 -0
  165. {modal-1.1.1.dev28 → modal-1.1.1.dev29}/modal/volume.pyi +0 -0
  166. {modal-1.1.1.dev28 → modal-1.1.1.dev29}/modal.egg-info/SOURCES.txt +0 -0
  167. {modal-1.1.1.dev28 → modal-1.1.1.dev29}/modal.egg-info/dependency_links.txt +0 -0
  168. {modal-1.1.1.dev28 → modal-1.1.1.dev29}/modal.egg-info/entry_points.txt +0 -0
  169. {modal-1.1.1.dev28 → modal-1.1.1.dev29}/modal.egg-info/requires.txt +0 -0
  170. {modal-1.1.1.dev28 → modal-1.1.1.dev29}/modal.egg-info/top_level.txt +0 -0
  171. {modal-1.1.1.dev28 → modal-1.1.1.dev29}/modal_docs/__init__.py +0 -0
  172. {modal-1.1.1.dev28 → modal-1.1.1.dev29}/modal_docs/gen_cli_docs.py +0 -0
  173. {modal-1.1.1.dev28 → modal-1.1.1.dev29}/modal_docs/gen_reference_docs.py +0 -0
  174. {modal-1.1.1.dev28 → modal-1.1.1.dev29}/modal_docs/mdmd/__init__.py +0 -0
  175. {modal-1.1.1.dev28 → modal-1.1.1.dev29}/modal_docs/mdmd/mdmd.py +0 -0
  176. {modal-1.1.1.dev28 → modal-1.1.1.dev29}/modal_docs/mdmd/signatures.py +0 -0
  177. {modal-1.1.1.dev28 → modal-1.1.1.dev29}/modal_proto/__init__.py +0 -0
  178. {modal-1.1.1.dev28 → modal-1.1.1.dev29}/modal_proto/modal_options_grpc.py +0 -0
  179. {modal-1.1.1.dev28 → modal-1.1.1.dev29}/modal_proto/options.proto +0 -0
  180. {modal-1.1.1.dev28 → modal-1.1.1.dev29}/modal_proto/options_grpc.py +0 -0
  181. {modal-1.1.1.dev28 → modal-1.1.1.dev29}/modal_proto/options_pb2.py +0 -0
  182. {modal-1.1.1.dev28 → modal-1.1.1.dev29}/modal_proto/options_pb2.pyi +0 -0
  183. {modal-1.1.1.dev28 → modal-1.1.1.dev29}/modal_proto/options_pb2_grpc.py +0 -0
  184. {modal-1.1.1.dev28 → modal-1.1.1.dev29}/modal_proto/options_pb2_grpc.pyi +0 -0
  185. {modal-1.1.1.dev28 → modal-1.1.1.dev29}/modal_proto/py.typed +0 -0
  186. {modal-1.1.1.dev28 → modal-1.1.1.dev29}/modal_version/__main__.py +0 -0
  187. {modal-1.1.1.dev28 → modal-1.1.1.dev29}/pyproject.toml +0 -0
  188. {modal-1.1.1.dev28 → modal-1.1.1.dev29}/setup.cfg +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: modal
3
- Version: 1.1.1.dev28
3
+ Version: 1.1.1.dev29
4
4
  Summary: Python client library for Modal
5
5
  Author-email: Modal Labs <support@modal.com>
6
6
  License: Apache-2.0
@@ -33,7 +33,7 @@ class _Client:
33
33
  server_url: str,
34
34
  client_type: int,
35
35
  credentials: typing.Optional[tuple[str, str]],
36
- version: str = "1.1.1.dev28",
36
+ version: str = "1.1.1.dev29",
37
37
  ):
38
38
  """mdmd:hidden
39
39
  The Modal client object is not intended to be instantiated directly by users.
@@ -164,7 +164,7 @@ class Client:
164
164
  server_url: str,
165
165
  client_type: int,
166
166
  credentials: typing.Optional[tuple[str, str]],
167
- version: str = "1.1.1.dev28",
167
+ version: str = "1.1.1.dev29",
168
168
  ):
169
169
  """mdmd:hidden
170
170
  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.1.1.dev28
3
+ Version: 1.1.1.dev29
4
4
  Summary: Python client library for Modal
5
5
  Author-email: Modal Labs <support@modal.com>
6
6
  License: Apache-2.0
@@ -2699,6 +2699,26 @@ message SandboxRestoreResponse {
2699
2699
  string sandbox_id = 1;
2700
2700
  }
2701
2701
 
2702
+ message SandboxSnapshotFsAsyncGetRequest {
2703
+ string image_id = 1;
2704
+ float timeout = 2;
2705
+ }
2706
+
2707
+ message SandboxSnapshotFsAsyncGetResponse {
2708
+ string image_id = 1;
2709
+ GenericResult result = 2;
2710
+ ImageMetadata image_metadata = 3;
2711
+ }
2712
+
2713
+ message SandboxSnapshotFsAsyncRequest {
2714
+ string sandbox_id = 1;
2715
+ float timeout = 2;
2716
+ }
2717
+
2718
+ message SandboxSnapshotFsAsyncResponse {
2719
+ string image_id = 1;
2720
+ }
2721
+
2702
2722
  message SandboxSnapshotFsRequest {
2703
2723
  string sandbox_id = 1;
2704
2724
  float timeout = 2;
@@ -3523,6 +3543,8 @@ service ModalClient {
3523
3543
  rpc SandboxRestore(SandboxRestoreRequest) returns (SandboxRestoreResponse);
3524
3544
  rpc SandboxSnapshot(SandboxSnapshotRequest) returns (SandboxSnapshotResponse);
3525
3545
  rpc SandboxSnapshotFs(SandboxSnapshotFsRequest) returns (SandboxSnapshotFsResponse);
3546
+ rpc SandboxSnapshotFsAsync(SandboxSnapshotFsAsyncRequest) returns (SandboxSnapshotFsAsyncResponse);
3547
+ rpc SandboxSnapshotFsAsyncGet(SandboxSnapshotFsAsyncGetRequest) returns (SandboxSnapshotFsAsyncGetResponse);
3526
3548
  rpc SandboxSnapshotGet(SandboxSnapshotGetRequest) returns (SandboxSnapshotGetResponse);
3527
3549
  rpc SandboxSnapshotWait(SandboxSnapshotWaitRequest) returns (SandboxSnapshotWaitResponse);
3528
3550
  rpc SandboxStdinWrite(SandboxStdinWriteRequest) returns (SandboxStdinWriteResponse);
@@ -490,6 +490,14 @@ class ModalClientBase(abc.ABC):
490
490
  async def SandboxSnapshotFs(self, stream: 'grpclib.server.Stream[modal_proto.api_pb2.SandboxSnapshotFsRequest, modal_proto.api_pb2.SandboxSnapshotFsResponse]') -> None:
491
491
  pass
492
492
 
493
+ @abc.abstractmethod
494
+ async def SandboxSnapshotFsAsync(self, stream: 'grpclib.server.Stream[modal_proto.api_pb2.SandboxSnapshotFsAsyncRequest, modal_proto.api_pb2.SandboxSnapshotFsAsyncResponse]') -> None:
495
+ pass
496
+
497
+ @abc.abstractmethod
498
+ async def SandboxSnapshotFsAsyncGet(self, stream: 'grpclib.server.Stream[modal_proto.api_pb2.SandboxSnapshotFsAsyncGetRequest, modal_proto.api_pb2.SandboxSnapshotFsAsyncGetResponse]') -> None:
499
+ pass
500
+
493
501
  @abc.abstractmethod
494
502
  async def SandboxSnapshotGet(self, stream: 'grpclib.server.Stream[modal_proto.api_pb2.SandboxSnapshotGetRequest, modal_proto.api_pb2.SandboxSnapshotGetResponse]') -> None:
495
503
  pass
@@ -1376,6 +1384,18 @@ class ModalClientBase(abc.ABC):
1376
1384
  modal_proto.api_pb2.SandboxSnapshotFsRequest,
1377
1385
  modal_proto.api_pb2.SandboxSnapshotFsResponse,
1378
1386
  ),
1387
+ '/modal.client.ModalClient/SandboxSnapshotFsAsync': grpclib.const.Handler(
1388
+ self.SandboxSnapshotFsAsync,
1389
+ grpclib.const.Cardinality.UNARY_UNARY,
1390
+ modal_proto.api_pb2.SandboxSnapshotFsAsyncRequest,
1391
+ modal_proto.api_pb2.SandboxSnapshotFsAsyncResponse,
1392
+ ),
1393
+ '/modal.client.ModalClient/SandboxSnapshotFsAsyncGet': grpclib.const.Handler(
1394
+ self.SandboxSnapshotFsAsyncGet,
1395
+ grpclib.const.Cardinality.UNARY_UNARY,
1396
+ modal_proto.api_pb2.SandboxSnapshotFsAsyncGetRequest,
1397
+ modal_proto.api_pb2.SandboxSnapshotFsAsyncGetResponse,
1398
+ ),
1379
1399
  '/modal.client.ModalClient/SandboxSnapshotGet': grpclib.const.Handler(
1380
1400
  self.SandboxSnapshotGet,
1381
1401
  grpclib.const.Cardinality.UNARY_UNARY,
@@ -2354,6 +2374,18 @@ class ModalClientStub:
2354
2374
  modal_proto.api_pb2.SandboxSnapshotFsRequest,
2355
2375
  modal_proto.api_pb2.SandboxSnapshotFsResponse,
2356
2376
  )
2377
+ self.SandboxSnapshotFsAsync = grpclib.client.UnaryUnaryMethod(
2378
+ channel,
2379
+ '/modal.client.ModalClient/SandboxSnapshotFsAsync',
2380
+ modal_proto.api_pb2.SandboxSnapshotFsAsyncRequest,
2381
+ modal_proto.api_pb2.SandboxSnapshotFsAsyncResponse,
2382
+ )
2383
+ self.SandboxSnapshotFsAsyncGet = grpclib.client.UnaryUnaryMethod(
2384
+ channel,
2385
+ '/modal.client.ModalClient/SandboxSnapshotFsAsyncGet',
2386
+ modal_proto.api_pb2.SandboxSnapshotFsAsyncGetRequest,
2387
+ modal_proto.api_pb2.SandboxSnapshotFsAsyncGetResponse,
2388
+ )
2357
2389
  self.SandboxSnapshotGet = grpclib.client.UnaryUnaryMethod(
2358
2390
  channel,
2359
2391
  '/modal.client.ModalClient/SandboxSnapshotGet',