modal 1.1.1.dev28__tar.gz → 1.1.1.dev30__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.dev30}/PKG-INFO +1 -1
  2. {modal-1.1.1.dev28 → modal-1.1.1.dev30}/modal/_functions.py +0 -3
  3. {modal-1.1.1.dev28 → modal-1.1.1.dev30}/modal/app.py +0 -4
  4. {modal-1.1.1.dev28 → modal-1.1.1.dev30}/modal/app.pyi +0 -4
  5. {modal-1.1.1.dev28 → modal-1.1.1.dev30}/modal/client.pyi +2 -2
  6. {modal-1.1.1.dev28 → modal-1.1.1.dev30}/modal/functions.pyi +0 -1
  7. {modal-1.1.1.dev28 → modal-1.1.1.dev30}/modal.egg-info/PKG-INFO +1 -1
  8. {modal-1.1.1.dev28 → modal-1.1.1.dev30}/modal_proto/api.proto +22 -0
  9. {modal-1.1.1.dev28 → modal-1.1.1.dev30}/modal_proto/api_grpc.py +32 -0
  10. {modal-1.1.1.dev28 → modal-1.1.1.dev30}/modal_proto/api_pb2.py +315 -275
  11. {modal-1.1.1.dev28 → modal-1.1.1.dev30}/modal_proto/api_pb2.pyi +71 -0
  12. {modal-1.1.1.dev28 → modal-1.1.1.dev30}/modal_proto/api_pb2_grpc.py +66 -0
  13. {modal-1.1.1.dev28 → modal-1.1.1.dev30}/modal_proto/api_pb2_grpc.pyi +20 -0
  14. {modal-1.1.1.dev28 → modal-1.1.1.dev30}/modal_proto/modal_api_grpc.py +2 -0
  15. {modal-1.1.1.dev28 → modal-1.1.1.dev30}/modal_version/__init__.py +1 -1
  16. {modal-1.1.1.dev28 → modal-1.1.1.dev30}/LICENSE +0 -0
  17. {modal-1.1.1.dev28 → modal-1.1.1.dev30}/README.md +0 -0
  18. {modal-1.1.1.dev28 → modal-1.1.1.dev30}/modal/__init__.py +0 -0
  19. {modal-1.1.1.dev28 → modal-1.1.1.dev30}/modal/__main__.py +0 -0
  20. {modal-1.1.1.dev28 → modal-1.1.1.dev30}/modal/_clustered_functions.py +0 -0
  21. {modal-1.1.1.dev28 → modal-1.1.1.dev30}/modal/_clustered_functions.pyi +0 -0
  22. {modal-1.1.1.dev28 → modal-1.1.1.dev30}/modal/_container_entrypoint.py +0 -0
  23. {modal-1.1.1.dev28 → modal-1.1.1.dev30}/modal/_ipython.py +0 -0
  24. {modal-1.1.1.dev28 → modal-1.1.1.dev30}/modal/_location.py +0 -0
  25. {modal-1.1.1.dev28 → modal-1.1.1.dev30}/modal/_object.py +0 -0
  26. {modal-1.1.1.dev28 → modal-1.1.1.dev30}/modal/_output.py +0 -0
  27. {modal-1.1.1.dev28 → modal-1.1.1.dev30}/modal/_partial_function.py +0 -0
  28. {modal-1.1.1.dev28 → modal-1.1.1.dev30}/modal/_pty.py +0 -0
  29. {modal-1.1.1.dev28 → modal-1.1.1.dev30}/modal/_resolver.py +0 -0
  30. {modal-1.1.1.dev28 → modal-1.1.1.dev30}/modal/_resources.py +0 -0
  31. {modal-1.1.1.dev28 → modal-1.1.1.dev30}/modal/_runtime/__init__.py +0 -0
  32. {modal-1.1.1.dev28 → modal-1.1.1.dev30}/modal/_runtime/asgi.py +0 -0
  33. {modal-1.1.1.dev28 → modal-1.1.1.dev30}/modal/_runtime/container_io_manager.py +0 -0
  34. {modal-1.1.1.dev28 → modal-1.1.1.dev30}/modal/_runtime/container_io_manager.pyi +0 -0
  35. {modal-1.1.1.dev28 → modal-1.1.1.dev30}/modal/_runtime/execution_context.py +0 -0
  36. {modal-1.1.1.dev28 → modal-1.1.1.dev30}/modal/_runtime/execution_context.pyi +0 -0
  37. {modal-1.1.1.dev28 → modal-1.1.1.dev30}/modal/_runtime/gpu_memory_snapshot.py +0 -0
  38. {modal-1.1.1.dev28 → modal-1.1.1.dev30}/modal/_runtime/telemetry.py +0 -0
  39. {modal-1.1.1.dev28 → modal-1.1.1.dev30}/modal/_runtime/user_code_imports.py +0 -0
  40. {modal-1.1.1.dev28 → modal-1.1.1.dev30}/modal/_serialization.py +0 -0
  41. {modal-1.1.1.dev28 → modal-1.1.1.dev30}/modal/_traceback.py +0 -0
  42. {modal-1.1.1.dev28 → modal-1.1.1.dev30}/modal/_tunnel.py +0 -0
  43. {modal-1.1.1.dev28 → modal-1.1.1.dev30}/modal/_tunnel.pyi +0 -0
  44. {modal-1.1.1.dev28 → modal-1.1.1.dev30}/modal/_type_manager.py +0 -0
  45. {modal-1.1.1.dev28 → modal-1.1.1.dev30}/modal/_utils/__init__.py +0 -0
  46. {modal-1.1.1.dev28 → modal-1.1.1.dev30}/modal/_utils/app_utils.py +0 -0
  47. {modal-1.1.1.dev28 → modal-1.1.1.dev30}/modal/_utils/async_utils.py +0 -0
  48. {modal-1.1.1.dev28 → modal-1.1.1.dev30}/modal/_utils/auth_token_manager.py +0 -0
  49. {modal-1.1.1.dev28 → modal-1.1.1.dev30}/modal/_utils/blob_utils.py +0 -0
  50. {modal-1.1.1.dev28 → modal-1.1.1.dev30}/modal/_utils/bytes_io_segment_payload.py +0 -0
  51. {modal-1.1.1.dev28 → modal-1.1.1.dev30}/modal/_utils/deprecation.py +0 -0
  52. {modal-1.1.1.dev28 → modal-1.1.1.dev30}/modal/_utils/docker_utils.py +0 -0
  53. {modal-1.1.1.dev28 → modal-1.1.1.dev30}/modal/_utils/function_utils.py +0 -0
  54. {modal-1.1.1.dev28 → modal-1.1.1.dev30}/modal/_utils/git_utils.py +0 -0
  55. {modal-1.1.1.dev28 → modal-1.1.1.dev30}/modal/_utils/grpc_testing.py +0 -0
  56. {modal-1.1.1.dev28 → modal-1.1.1.dev30}/modal/_utils/grpc_utils.py +0 -0
  57. {modal-1.1.1.dev28 → modal-1.1.1.dev30}/modal/_utils/hash_utils.py +0 -0
  58. {modal-1.1.1.dev28 → modal-1.1.1.dev30}/modal/_utils/http_utils.py +0 -0
  59. {modal-1.1.1.dev28 → modal-1.1.1.dev30}/modal/_utils/jwt_utils.py +0 -0
  60. {modal-1.1.1.dev28 → modal-1.1.1.dev30}/modal/_utils/logger.py +0 -0
  61. {modal-1.1.1.dev28 → modal-1.1.1.dev30}/modal/_utils/mount_utils.py +0 -0
  62. {modal-1.1.1.dev28 → modal-1.1.1.dev30}/modal/_utils/name_utils.py +0 -0
  63. {modal-1.1.1.dev28 → modal-1.1.1.dev30}/modal/_utils/package_utils.py +0 -0
  64. {modal-1.1.1.dev28 → modal-1.1.1.dev30}/modal/_utils/pattern_utils.py +0 -0
  65. {modal-1.1.1.dev28 → modal-1.1.1.dev30}/modal/_utils/rand_pb_testing.py +0 -0
  66. {modal-1.1.1.dev28 → modal-1.1.1.dev30}/modal/_utils/shell_utils.py +0 -0
  67. {modal-1.1.1.dev28 → modal-1.1.1.dev30}/modal/_utils/time_utils.py +0 -0
  68. {modal-1.1.1.dev28 → modal-1.1.1.dev30}/modal/_vendor/__init__.py +0 -0
  69. {modal-1.1.1.dev28 → modal-1.1.1.dev30}/modal/_vendor/a2wsgi_wsgi.py +0 -0
  70. {modal-1.1.1.dev28 → modal-1.1.1.dev30}/modal/_vendor/cloudpickle.py +0 -0
  71. {modal-1.1.1.dev28 → modal-1.1.1.dev30}/modal/_vendor/tblib.py +0 -0
  72. {modal-1.1.1.dev28 → modal-1.1.1.dev30}/modal/_watcher.py +0 -0
  73. {modal-1.1.1.dev28 → modal-1.1.1.dev30}/modal/builder/2023.12.312.txt +0 -0
  74. {modal-1.1.1.dev28 → modal-1.1.1.dev30}/modal/builder/2023.12.txt +0 -0
  75. {modal-1.1.1.dev28 → modal-1.1.1.dev30}/modal/builder/2024.04.txt +0 -0
  76. {modal-1.1.1.dev28 → modal-1.1.1.dev30}/modal/builder/2024.10.txt +0 -0
  77. {modal-1.1.1.dev28 → modal-1.1.1.dev30}/modal/builder/2025.06.txt +0 -0
  78. {modal-1.1.1.dev28 → modal-1.1.1.dev30}/modal/builder/PREVIEW.txt +0 -0
  79. {modal-1.1.1.dev28 → modal-1.1.1.dev30}/modal/builder/README.md +0 -0
  80. {modal-1.1.1.dev28 → modal-1.1.1.dev30}/modal/builder/base-images.json +0 -0
  81. {modal-1.1.1.dev28 → modal-1.1.1.dev30}/modal/call_graph.py +0 -0
  82. {modal-1.1.1.dev28 → modal-1.1.1.dev30}/modal/cli/__init__.py +0 -0
  83. {modal-1.1.1.dev28 → modal-1.1.1.dev30}/modal/cli/_download.py +0 -0
  84. {modal-1.1.1.dev28 → modal-1.1.1.dev30}/modal/cli/_traceback.py +0 -0
  85. {modal-1.1.1.dev28 → modal-1.1.1.dev30}/modal/cli/app.py +0 -0
  86. {modal-1.1.1.dev28 → modal-1.1.1.dev30}/modal/cli/cluster.py +0 -0
  87. {modal-1.1.1.dev28 → modal-1.1.1.dev30}/modal/cli/config.py +0 -0
  88. {modal-1.1.1.dev28 → modal-1.1.1.dev30}/modal/cli/container.py +0 -0
  89. {modal-1.1.1.dev28 → modal-1.1.1.dev30}/modal/cli/dict.py +0 -0
  90. {modal-1.1.1.dev28 → modal-1.1.1.dev30}/modal/cli/entry_point.py +0 -0
  91. {modal-1.1.1.dev28 → modal-1.1.1.dev30}/modal/cli/environment.py +0 -0
  92. {modal-1.1.1.dev28 → modal-1.1.1.dev30}/modal/cli/import_refs.py +0 -0
  93. {modal-1.1.1.dev28 → modal-1.1.1.dev30}/modal/cli/launch.py +0 -0
  94. {modal-1.1.1.dev28 → modal-1.1.1.dev30}/modal/cli/network_file_system.py +0 -0
  95. {modal-1.1.1.dev28 → modal-1.1.1.dev30}/modal/cli/profile.py +0 -0
  96. {modal-1.1.1.dev28 → modal-1.1.1.dev30}/modal/cli/programs/__init__.py +0 -0
  97. {modal-1.1.1.dev28 → modal-1.1.1.dev30}/modal/cli/programs/run_jupyter.py +0 -0
  98. {modal-1.1.1.dev28 → modal-1.1.1.dev30}/modal/cli/programs/vscode.py +0 -0
  99. {modal-1.1.1.dev28 → modal-1.1.1.dev30}/modal/cli/queues.py +0 -0
  100. {modal-1.1.1.dev28 → modal-1.1.1.dev30}/modal/cli/run.py +0 -0
  101. {modal-1.1.1.dev28 → modal-1.1.1.dev30}/modal/cli/secret.py +0 -0
  102. {modal-1.1.1.dev28 → modal-1.1.1.dev30}/modal/cli/token.py +0 -0
  103. {modal-1.1.1.dev28 → modal-1.1.1.dev30}/modal/cli/utils.py +0 -0
  104. {modal-1.1.1.dev28 → modal-1.1.1.dev30}/modal/cli/volume.py +0 -0
  105. {modal-1.1.1.dev28 → modal-1.1.1.dev30}/modal/client.py +0 -0
  106. {modal-1.1.1.dev28 → modal-1.1.1.dev30}/modal/cloud_bucket_mount.py +0 -0
  107. {modal-1.1.1.dev28 → modal-1.1.1.dev30}/modal/cloud_bucket_mount.pyi +0 -0
  108. {modal-1.1.1.dev28 → modal-1.1.1.dev30}/modal/cls.py +0 -0
  109. {modal-1.1.1.dev28 → modal-1.1.1.dev30}/modal/cls.pyi +0 -0
  110. {modal-1.1.1.dev28 → modal-1.1.1.dev30}/modal/config.py +0 -0
  111. {modal-1.1.1.dev28 → modal-1.1.1.dev30}/modal/container_process.py +0 -0
  112. {modal-1.1.1.dev28 → modal-1.1.1.dev30}/modal/container_process.pyi +0 -0
  113. {modal-1.1.1.dev28 → modal-1.1.1.dev30}/modal/dict.py +0 -0
  114. {modal-1.1.1.dev28 → modal-1.1.1.dev30}/modal/dict.pyi +0 -0
  115. {modal-1.1.1.dev28 → modal-1.1.1.dev30}/modal/environments.py +0 -0
  116. {modal-1.1.1.dev28 → modal-1.1.1.dev30}/modal/environments.pyi +0 -0
  117. {modal-1.1.1.dev28 → modal-1.1.1.dev30}/modal/exception.py +0 -0
  118. {modal-1.1.1.dev28 → modal-1.1.1.dev30}/modal/experimental/__init__.py +0 -0
  119. {modal-1.1.1.dev28 → modal-1.1.1.dev30}/modal/experimental/flash.py +0 -0
  120. {modal-1.1.1.dev28 → modal-1.1.1.dev30}/modal/experimental/flash.pyi +0 -0
  121. {modal-1.1.1.dev28 → modal-1.1.1.dev30}/modal/experimental/ipython.py +0 -0
  122. {modal-1.1.1.dev28 → modal-1.1.1.dev30}/modal/file_io.py +0 -0
  123. {modal-1.1.1.dev28 → modal-1.1.1.dev30}/modal/file_io.pyi +0 -0
  124. {modal-1.1.1.dev28 → modal-1.1.1.dev30}/modal/file_pattern_matcher.py +0 -0
  125. {modal-1.1.1.dev28 → modal-1.1.1.dev30}/modal/functions.py +0 -0
  126. {modal-1.1.1.dev28 → modal-1.1.1.dev30}/modal/gpu.py +0 -0
  127. {modal-1.1.1.dev28 → modal-1.1.1.dev30}/modal/image.py +0 -0
  128. {modal-1.1.1.dev28 → modal-1.1.1.dev30}/modal/image.pyi +0 -0
  129. {modal-1.1.1.dev28 → modal-1.1.1.dev30}/modal/io_streams.py +0 -0
  130. {modal-1.1.1.dev28 → modal-1.1.1.dev30}/modal/io_streams.pyi +0 -0
  131. {modal-1.1.1.dev28 → modal-1.1.1.dev30}/modal/mount.py +0 -0
  132. {modal-1.1.1.dev28 → modal-1.1.1.dev30}/modal/mount.pyi +0 -0
  133. {modal-1.1.1.dev28 → modal-1.1.1.dev30}/modal/network_file_system.py +0 -0
  134. {modal-1.1.1.dev28 → modal-1.1.1.dev30}/modal/network_file_system.pyi +0 -0
  135. {modal-1.1.1.dev28 → modal-1.1.1.dev30}/modal/object.py +0 -0
  136. {modal-1.1.1.dev28 → modal-1.1.1.dev30}/modal/object.pyi +0 -0
  137. {modal-1.1.1.dev28 → modal-1.1.1.dev30}/modal/output.py +0 -0
  138. {modal-1.1.1.dev28 → modal-1.1.1.dev30}/modal/parallel_map.py +0 -0
  139. {modal-1.1.1.dev28 → modal-1.1.1.dev30}/modal/parallel_map.pyi +0 -0
  140. {modal-1.1.1.dev28 → modal-1.1.1.dev30}/modal/partial_function.py +0 -0
  141. {modal-1.1.1.dev28 → modal-1.1.1.dev30}/modal/partial_function.pyi +0 -0
  142. {modal-1.1.1.dev28 → modal-1.1.1.dev30}/modal/proxy.py +0 -0
  143. {modal-1.1.1.dev28 → modal-1.1.1.dev30}/modal/proxy.pyi +0 -0
  144. {modal-1.1.1.dev28 → modal-1.1.1.dev30}/modal/py.typed +0 -0
  145. {modal-1.1.1.dev28 → modal-1.1.1.dev30}/modal/queue.py +0 -0
  146. {modal-1.1.1.dev28 → modal-1.1.1.dev30}/modal/queue.pyi +0 -0
  147. {modal-1.1.1.dev28 → modal-1.1.1.dev30}/modal/retries.py +0 -0
  148. {modal-1.1.1.dev28 → modal-1.1.1.dev30}/modal/runner.py +0 -0
  149. {modal-1.1.1.dev28 → modal-1.1.1.dev30}/modal/runner.pyi +0 -0
  150. {modal-1.1.1.dev28 → modal-1.1.1.dev30}/modal/running_app.py +0 -0
  151. {modal-1.1.1.dev28 → modal-1.1.1.dev30}/modal/sandbox.py +0 -0
  152. {modal-1.1.1.dev28 → modal-1.1.1.dev30}/modal/sandbox.pyi +0 -0
  153. {modal-1.1.1.dev28 → modal-1.1.1.dev30}/modal/schedule.py +0 -0
  154. {modal-1.1.1.dev28 → modal-1.1.1.dev30}/modal/scheduler_placement.py +0 -0
  155. {modal-1.1.1.dev28 → modal-1.1.1.dev30}/modal/secret.py +0 -0
  156. {modal-1.1.1.dev28 → modal-1.1.1.dev30}/modal/secret.pyi +0 -0
  157. {modal-1.1.1.dev28 → modal-1.1.1.dev30}/modal/serving.py +0 -0
  158. {modal-1.1.1.dev28 → modal-1.1.1.dev30}/modal/serving.pyi +0 -0
  159. {modal-1.1.1.dev28 → modal-1.1.1.dev30}/modal/snapshot.py +0 -0
  160. {modal-1.1.1.dev28 → modal-1.1.1.dev30}/modal/snapshot.pyi +0 -0
  161. {modal-1.1.1.dev28 → modal-1.1.1.dev30}/modal/stream_type.py +0 -0
  162. {modal-1.1.1.dev28 → modal-1.1.1.dev30}/modal/token_flow.py +0 -0
  163. {modal-1.1.1.dev28 → modal-1.1.1.dev30}/modal/token_flow.pyi +0 -0
  164. {modal-1.1.1.dev28 → modal-1.1.1.dev30}/modal/volume.py +0 -0
  165. {modal-1.1.1.dev28 → modal-1.1.1.dev30}/modal/volume.pyi +0 -0
  166. {modal-1.1.1.dev28 → modal-1.1.1.dev30}/modal.egg-info/SOURCES.txt +0 -0
  167. {modal-1.1.1.dev28 → modal-1.1.1.dev30}/modal.egg-info/dependency_links.txt +0 -0
  168. {modal-1.1.1.dev28 → modal-1.1.1.dev30}/modal.egg-info/entry_points.txt +0 -0
  169. {modal-1.1.1.dev28 → modal-1.1.1.dev30}/modal.egg-info/requires.txt +0 -0
  170. {modal-1.1.1.dev28 → modal-1.1.1.dev30}/modal.egg-info/top_level.txt +0 -0
  171. {modal-1.1.1.dev28 → modal-1.1.1.dev30}/modal_docs/__init__.py +0 -0
  172. {modal-1.1.1.dev28 → modal-1.1.1.dev30}/modal_docs/gen_cli_docs.py +0 -0
  173. {modal-1.1.1.dev28 → modal-1.1.1.dev30}/modal_docs/gen_reference_docs.py +0 -0
  174. {modal-1.1.1.dev28 → modal-1.1.1.dev30}/modal_docs/mdmd/__init__.py +0 -0
  175. {modal-1.1.1.dev28 → modal-1.1.1.dev30}/modal_docs/mdmd/mdmd.py +0 -0
  176. {modal-1.1.1.dev28 → modal-1.1.1.dev30}/modal_docs/mdmd/signatures.py +0 -0
  177. {modal-1.1.1.dev28 → modal-1.1.1.dev30}/modal_proto/__init__.py +0 -0
  178. {modal-1.1.1.dev28 → modal-1.1.1.dev30}/modal_proto/modal_options_grpc.py +0 -0
  179. {modal-1.1.1.dev28 → modal-1.1.1.dev30}/modal_proto/options.proto +0 -0
  180. {modal-1.1.1.dev28 → modal-1.1.1.dev30}/modal_proto/options_grpc.py +0 -0
  181. {modal-1.1.1.dev28 → modal-1.1.1.dev30}/modal_proto/options_pb2.py +0 -0
  182. {modal-1.1.1.dev28 → modal-1.1.1.dev30}/modal_proto/options_pb2.pyi +0 -0
  183. {modal-1.1.1.dev28 → modal-1.1.1.dev30}/modal_proto/options_pb2_grpc.py +0 -0
  184. {modal-1.1.1.dev28 → modal-1.1.1.dev30}/modal_proto/options_pb2_grpc.pyi +0 -0
  185. {modal-1.1.1.dev28 → modal-1.1.1.dev30}/modal_proto/py.typed +0 -0
  186. {modal-1.1.1.dev28 → modal-1.1.1.dev30}/modal_version/__main__.py +0 -0
  187. {modal-1.1.1.dev28 → modal-1.1.1.dev30}/pyproject.toml +0 -0
  188. {modal-1.1.1.dev28 → modal-1.1.1.dev30}/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.dev30
4
4
  Summary: Python client library for Modal
5
5
  Author-email: Modal Labs <support@modal.com>
6
6
  License: Apache-2.0
@@ -629,7 +629,6 @@ class _Function(typing.Generic[P, ReturnType, OriginalReturnType], _Object, type
629
629
  experimental_options: Optional[dict[str, str]] = None,
630
630
  _experimental_proxy_ip: Optional[str] = None,
631
631
  _experimental_custom_scaling_factor: Optional[float] = None,
632
- _experimental_enable_gpu_snapshot: bool = False,
633
632
  ) -> "_Function":
634
633
  """mdmd:hidden"""
635
634
  # Needed to avoid circular imports
@@ -930,7 +929,6 @@ class _Function(typing.Generic[P, ReturnType, OriginalReturnType], _Object, type
930
929
  _experimental_concurrent_cancellations=True,
931
930
  _experimental_proxy_ip=_experimental_proxy_ip,
932
931
  _experimental_custom_scaling=_experimental_custom_scaling_factor is not None,
933
- _experimental_enable_gpu_snapshot=_experimental_enable_gpu_snapshot,
934
932
  # --- These are deprecated in favor of autoscaler_settings
935
933
  warm_pool_size=min_containers or 0,
936
934
  concurrency_limit=max_containers or 0,
@@ -967,7 +965,6 @@ class _Function(typing.Generic[P, ReturnType, OriginalReturnType], _Object, type
967
965
  _experimental_group_size=function_definition._experimental_group_size,
968
966
  _experimental_buffer_containers=function_definition._experimental_buffer_containers,
969
967
  _experimental_custom_scaling=function_definition._experimental_custom_scaling,
970
- _experimental_enable_gpu_snapshot=_experimental_enable_gpu_snapshot,
971
968
  _experimental_proxy_ip=function_definition._experimental_proxy_ip,
972
969
  snapshot_debug=function_definition.snapshot_debug,
973
970
  runtime_perf_record=function_definition.runtime_perf_record,
@@ -665,7 +665,6 @@ class _App:
665
665
  ] = None, # Experimental controls over fine-grained scheduling (alpha).
666
666
  _experimental_proxy_ip: Optional[str] = None, # IP address of proxy
667
667
  _experimental_custom_scaling_factor: Optional[float] = None, # Custom scaling factor
668
- _experimental_enable_gpu_snapshot: bool = False, # Experimentally enable GPU memory snapshots.
669
668
  # Parameters below here are deprecated. Please update your code as suggested
670
669
  keep_warm: Optional[int] = None, # Replaced with `min_containers`
671
670
  concurrency_limit: Optional[int] = None, # Replaced with `max_containers`
@@ -830,7 +829,6 @@ class _App:
830
829
  include_source=include_source if include_source is not None else self._include_source_default,
831
830
  experimental_options={k: str(v) for k, v in (experimental_options or {}).items()},
832
831
  _experimental_proxy_ip=_experimental_proxy_ip,
833
- _experimental_enable_gpu_snapshot=_experimental_enable_gpu_snapshot,
834
832
  )
835
833
 
836
834
  self._add_function(function, webhook_config is not None)
@@ -889,7 +887,6 @@ class _App:
889
887
  ] = None, # Experimental controls over fine-grained scheduling (alpha).
890
888
  _experimental_proxy_ip: Optional[str] = None, # IP address of proxy
891
889
  _experimental_custom_scaling_factor: Optional[float] = None, # Custom scaling factor
892
- _experimental_enable_gpu_snapshot: bool = False, # Experimentally enable GPU memory snapshots.
893
890
  # Parameters below here are deprecated. Please update your code as suggested
894
891
  keep_warm: Optional[int] = None, # Replaced with `min_containers`
895
892
  concurrency_limit: Optional[int] = None, # Replaced with `max_containers`
@@ -1014,7 +1011,6 @@ class _App:
1014
1011
  experimental_options={k: str(v) for k, v in (experimental_options or {}).items()},
1015
1012
  _experimental_proxy_ip=_experimental_proxy_ip,
1016
1013
  _experimental_custom_scaling_factor=_experimental_custom_scaling_factor,
1017
- _experimental_enable_gpu_snapshot=_experimental_enable_gpu_snapshot,
1018
1014
  )
1019
1015
 
1020
1016
  self._add_function(cls_func, is_web_endpoint=False)
@@ -425,7 +425,6 @@ class _App:
425
425
  _experimental_scheduler_placement: typing.Optional[modal.scheduler_placement.SchedulerPlacement] = None,
426
426
  _experimental_proxy_ip: typing.Optional[str] = None,
427
427
  _experimental_custom_scaling_factor: typing.Optional[float] = None,
428
- _experimental_enable_gpu_snapshot: bool = False,
429
428
  keep_warm: typing.Optional[int] = None,
430
429
  concurrency_limit: typing.Optional[int] = None,
431
430
  container_idle_timeout: typing.Optional[int] = None,
@@ -477,7 +476,6 @@ class _App:
477
476
  _experimental_scheduler_placement: typing.Optional[modal.scheduler_placement.SchedulerPlacement] = None,
478
477
  _experimental_proxy_ip: typing.Optional[str] = None,
479
478
  _experimental_custom_scaling_factor: typing.Optional[float] = None,
480
- _experimental_enable_gpu_snapshot: bool = False,
481
479
  keep_warm: typing.Optional[int] = None,
482
480
  concurrency_limit: typing.Optional[int] = None,
483
481
  container_idle_timeout: typing.Optional[int] = None,
@@ -1030,7 +1028,6 @@ class App:
1030
1028
  _experimental_scheduler_placement: typing.Optional[modal.scheduler_placement.SchedulerPlacement] = None,
1031
1029
  _experimental_proxy_ip: typing.Optional[str] = None,
1032
1030
  _experimental_custom_scaling_factor: typing.Optional[float] = None,
1033
- _experimental_enable_gpu_snapshot: bool = False,
1034
1031
  keep_warm: typing.Optional[int] = None,
1035
1032
  concurrency_limit: typing.Optional[int] = None,
1036
1033
  container_idle_timeout: typing.Optional[int] = None,
@@ -1082,7 +1079,6 @@ class App:
1082
1079
  _experimental_scheduler_placement: typing.Optional[modal.scheduler_placement.SchedulerPlacement] = None,
1083
1080
  _experimental_proxy_ip: typing.Optional[str] = None,
1084
1081
  _experimental_custom_scaling_factor: typing.Optional[float] = None,
1085
- _experimental_enable_gpu_snapshot: bool = False,
1086
1082
  keep_warm: typing.Optional[int] = None,
1087
1083
  concurrency_limit: typing.Optional[int] = None,
1088
1084
  container_idle_timeout: typing.Optional[int] = None,
@@ -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.dev30",
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.dev30",
168
168
  ):
169
169
  """mdmd:hidden
170
170
  The Modal client object is not intended to be instantiated directly by users.
@@ -109,7 +109,6 @@ class Function(
109
109
  experimental_options: typing.Optional[dict[str, str]] = None,
110
110
  _experimental_proxy_ip: typing.Optional[str] = None,
111
111
  _experimental_custom_scaling_factor: typing.Optional[float] = None,
112
- _experimental_enable_gpu_snapshot: bool = False,
113
112
  ) -> Function:
114
113
  """mdmd:hidden"""
115
114
  ...
@@ -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.dev30
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',