modal 1.1.5.dev54__tar.gz → 1.1.5.dev56__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 (196) hide show
  1. {modal-1.1.5.dev54 → modal-1.1.5.dev56}/PKG-INFO +1 -1
  2. {modal-1.1.5.dev54 → modal-1.1.5.dev56}/modal/client.pyi +2 -2
  3. {modal-1.1.5.dev54 → modal-1.1.5.dev56}/modal/experimental/__init__.py +25 -0
  4. {modal-1.1.5.dev54 → modal-1.1.5.dev56}/modal/runner.py +3 -4
  5. {modal-1.1.5.dev54 → modal-1.1.5.dev56}/modal.egg-info/PKG-INFO +1 -1
  6. {modal-1.1.5.dev54 → modal-1.1.5.dev56}/modal_version/__init__.py +1 -1
  7. {modal-1.1.5.dev54 → modal-1.1.5.dev56}/LICENSE +0 -0
  8. {modal-1.1.5.dev54 → modal-1.1.5.dev56}/README.md +0 -0
  9. {modal-1.1.5.dev54 → modal-1.1.5.dev56}/modal/__init__.py +0 -0
  10. {modal-1.1.5.dev54 → modal-1.1.5.dev56}/modal/__main__.py +0 -0
  11. {modal-1.1.5.dev54 → modal-1.1.5.dev56}/modal/_clustered_functions.py +0 -0
  12. {modal-1.1.5.dev54 → modal-1.1.5.dev56}/modal/_clustered_functions.pyi +0 -0
  13. {modal-1.1.5.dev54 → modal-1.1.5.dev56}/modal/_container_entrypoint.py +0 -0
  14. {modal-1.1.5.dev54 → modal-1.1.5.dev56}/modal/_functions.py +0 -0
  15. {modal-1.1.5.dev54 → modal-1.1.5.dev56}/modal/_ipython.py +0 -0
  16. {modal-1.1.5.dev54 → modal-1.1.5.dev56}/modal/_location.py +0 -0
  17. {modal-1.1.5.dev54 → modal-1.1.5.dev56}/modal/_object.py +0 -0
  18. {modal-1.1.5.dev54 → modal-1.1.5.dev56}/modal/_output.py +0 -0
  19. {modal-1.1.5.dev54 → modal-1.1.5.dev56}/modal/_partial_function.py +0 -0
  20. {modal-1.1.5.dev54 → modal-1.1.5.dev56}/modal/_pty.py +0 -0
  21. {modal-1.1.5.dev54 → modal-1.1.5.dev56}/modal/_resolver.py +0 -0
  22. {modal-1.1.5.dev54 → modal-1.1.5.dev56}/modal/_resources.py +0 -0
  23. {modal-1.1.5.dev54 → modal-1.1.5.dev56}/modal/_runtime/__init__.py +0 -0
  24. {modal-1.1.5.dev54 → modal-1.1.5.dev56}/modal/_runtime/asgi.py +0 -0
  25. {modal-1.1.5.dev54 → modal-1.1.5.dev56}/modal/_runtime/container_io_manager.py +0 -0
  26. {modal-1.1.5.dev54 → modal-1.1.5.dev56}/modal/_runtime/container_io_manager.pyi +0 -0
  27. {modal-1.1.5.dev54 → modal-1.1.5.dev56}/modal/_runtime/execution_context.py +0 -0
  28. {modal-1.1.5.dev54 → modal-1.1.5.dev56}/modal/_runtime/execution_context.pyi +0 -0
  29. {modal-1.1.5.dev54 → modal-1.1.5.dev56}/modal/_runtime/gpu_memory_snapshot.py +0 -0
  30. {modal-1.1.5.dev54 → modal-1.1.5.dev56}/modal/_runtime/telemetry.py +0 -0
  31. {modal-1.1.5.dev54 → modal-1.1.5.dev56}/modal/_runtime/user_code_imports.py +0 -0
  32. {modal-1.1.5.dev54 → modal-1.1.5.dev56}/modal/_serialization.py +0 -0
  33. {modal-1.1.5.dev54 → modal-1.1.5.dev56}/modal/_traceback.py +0 -0
  34. {modal-1.1.5.dev54 → modal-1.1.5.dev56}/modal/_tunnel.py +0 -0
  35. {modal-1.1.5.dev54 → modal-1.1.5.dev56}/modal/_tunnel.pyi +0 -0
  36. {modal-1.1.5.dev54 → modal-1.1.5.dev56}/modal/_type_manager.py +0 -0
  37. {modal-1.1.5.dev54 → modal-1.1.5.dev56}/modal/_utils/__init__.py +0 -0
  38. {modal-1.1.5.dev54 → modal-1.1.5.dev56}/modal/_utils/app_utils.py +0 -0
  39. {modal-1.1.5.dev54 → modal-1.1.5.dev56}/modal/_utils/async_utils.py +0 -0
  40. {modal-1.1.5.dev54 → modal-1.1.5.dev56}/modal/_utils/auth_token_manager.py +0 -0
  41. {modal-1.1.5.dev54 → modal-1.1.5.dev56}/modal/_utils/blob_utils.py +0 -0
  42. {modal-1.1.5.dev54 → modal-1.1.5.dev56}/modal/_utils/bytes_io_segment_payload.py +0 -0
  43. {modal-1.1.5.dev54 → modal-1.1.5.dev56}/modal/_utils/deprecation.py +0 -0
  44. {modal-1.1.5.dev54 → modal-1.1.5.dev56}/modal/_utils/docker_utils.py +0 -0
  45. {modal-1.1.5.dev54 → modal-1.1.5.dev56}/modal/_utils/function_utils.py +0 -0
  46. {modal-1.1.5.dev54 → modal-1.1.5.dev56}/modal/_utils/git_utils.py +0 -0
  47. {modal-1.1.5.dev54 → modal-1.1.5.dev56}/modal/_utils/grpc_testing.py +0 -0
  48. {modal-1.1.5.dev54 → modal-1.1.5.dev56}/modal/_utils/grpc_utils.py +0 -0
  49. {modal-1.1.5.dev54 → modal-1.1.5.dev56}/modal/_utils/hash_utils.py +0 -0
  50. {modal-1.1.5.dev54 → modal-1.1.5.dev56}/modal/_utils/http_utils.py +0 -0
  51. {modal-1.1.5.dev54 → modal-1.1.5.dev56}/modal/_utils/jwt_utils.py +0 -0
  52. {modal-1.1.5.dev54 → modal-1.1.5.dev56}/modal/_utils/logger.py +0 -0
  53. {modal-1.1.5.dev54 → modal-1.1.5.dev56}/modal/_utils/mount_utils.py +0 -0
  54. {modal-1.1.5.dev54 → modal-1.1.5.dev56}/modal/_utils/name_utils.py +0 -0
  55. {modal-1.1.5.dev54 → modal-1.1.5.dev56}/modal/_utils/package_utils.py +0 -0
  56. {modal-1.1.5.dev54 → modal-1.1.5.dev56}/modal/_utils/pattern_utils.py +0 -0
  57. {modal-1.1.5.dev54 → modal-1.1.5.dev56}/modal/_utils/rand_pb_testing.py +0 -0
  58. {modal-1.1.5.dev54 → modal-1.1.5.dev56}/modal/_utils/shell_utils.py +0 -0
  59. {modal-1.1.5.dev54 → modal-1.1.5.dev56}/modal/_utils/time_utils.py +0 -0
  60. {modal-1.1.5.dev54 → modal-1.1.5.dev56}/modal/_vendor/__init__.py +0 -0
  61. {modal-1.1.5.dev54 → modal-1.1.5.dev56}/modal/_vendor/a2wsgi_wsgi.py +0 -0
  62. {modal-1.1.5.dev54 → modal-1.1.5.dev56}/modal/_vendor/cloudpickle.py +0 -0
  63. {modal-1.1.5.dev54 → modal-1.1.5.dev56}/modal/_vendor/tblib.py +0 -0
  64. {modal-1.1.5.dev54 → modal-1.1.5.dev56}/modal/_watcher.py +0 -0
  65. {modal-1.1.5.dev54 → modal-1.1.5.dev56}/modal/app.py +0 -0
  66. {modal-1.1.5.dev54 → modal-1.1.5.dev56}/modal/app.pyi +0 -0
  67. {modal-1.1.5.dev54 → modal-1.1.5.dev56}/modal/builder/2023.12.312.txt +0 -0
  68. {modal-1.1.5.dev54 → modal-1.1.5.dev56}/modal/builder/2023.12.txt +0 -0
  69. {modal-1.1.5.dev54 → modal-1.1.5.dev56}/modal/builder/2024.04.txt +0 -0
  70. {modal-1.1.5.dev54 → modal-1.1.5.dev56}/modal/builder/2024.10.txt +0 -0
  71. {modal-1.1.5.dev54 → modal-1.1.5.dev56}/modal/builder/2025.06.txt +0 -0
  72. {modal-1.1.5.dev54 → modal-1.1.5.dev56}/modal/builder/PREVIEW.txt +0 -0
  73. {modal-1.1.5.dev54 → modal-1.1.5.dev56}/modal/builder/README.md +0 -0
  74. {modal-1.1.5.dev54 → modal-1.1.5.dev56}/modal/builder/base-images.json +0 -0
  75. {modal-1.1.5.dev54 → modal-1.1.5.dev56}/modal/call_graph.py +0 -0
  76. {modal-1.1.5.dev54 → modal-1.1.5.dev56}/modal/cli/__init__.py +0 -0
  77. {modal-1.1.5.dev54 → modal-1.1.5.dev56}/modal/cli/_download.py +0 -0
  78. {modal-1.1.5.dev54 → modal-1.1.5.dev56}/modal/cli/_traceback.py +0 -0
  79. {modal-1.1.5.dev54 → modal-1.1.5.dev56}/modal/cli/app.py +0 -0
  80. {modal-1.1.5.dev54 → modal-1.1.5.dev56}/modal/cli/cluster.py +0 -0
  81. {modal-1.1.5.dev54 → modal-1.1.5.dev56}/modal/cli/config.py +0 -0
  82. {modal-1.1.5.dev54 → modal-1.1.5.dev56}/modal/cli/container.py +0 -0
  83. {modal-1.1.5.dev54 → modal-1.1.5.dev56}/modal/cli/dict.py +0 -0
  84. {modal-1.1.5.dev54 → modal-1.1.5.dev56}/modal/cli/entry_point.py +0 -0
  85. {modal-1.1.5.dev54 → modal-1.1.5.dev56}/modal/cli/environment.py +0 -0
  86. {modal-1.1.5.dev54 → modal-1.1.5.dev56}/modal/cli/import_refs.py +0 -0
  87. {modal-1.1.5.dev54 → modal-1.1.5.dev56}/modal/cli/launch.py +0 -0
  88. {modal-1.1.5.dev54 → modal-1.1.5.dev56}/modal/cli/network_file_system.py +0 -0
  89. {modal-1.1.5.dev54 → modal-1.1.5.dev56}/modal/cli/profile.py +0 -0
  90. {modal-1.1.5.dev54 → modal-1.1.5.dev56}/modal/cli/programs/__init__.py +0 -0
  91. {modal-1.1.5.dev54 → modal-1.1.5.dev56}/modal/cli/programs/launch_instance_ssh.py +0 -0
  92. {modal-1.1.5.dev54 → modal-1.1.5.dev56}/modal/cli/programs/run_jupyter.py +0 -0
  93. {modal-1.1.5.dev54 → modal-1.1.5.dev56}/modal/cli/programs/run_marimo.py +0 -0
  94. {modal-1.1.5.dev54 → modal-1.1.5.dev56}/modal/cli/programs/vscode.py +0 -0
  95. {modal-1.1.5.dev54 → modal-1.1.5.dev56}/modal/cli/queues.py +0 -0
  96. {modal-1.1.5.dev54 → modal-1.1.5.dev56}/modal/cli/run.py +0 -0
  97. {modal-1.1.5.dev54 → modal-1.1.5.dev56}/modal/cli/secret.py +0 -0
  98. {modal-1.1.5.dev54 → modal-1.1.5.dev56}/modal/cli/token.py +0 -0
  99. {modal-1.1.5.dev54 → modal-1.1.5.dev56}/modal/cli/utils.py +0 -0
  100. {modal-1.1.5.dev54 → modal-1.1.5.dev56}/modal/cli/volume.py +0 -0
  101. {modal-1.1.5.dev54 → modal-1.1.5.dev56}/modal/client.py +0 -0
  102. {modal-1.1.5.dev54 → modal-1.1.5.dev56}/modal/cloud_bucket_mount.py +0 -0
  103. {modal-1.1.5.dev54 → modal-1.1.5.dev56}/modal/cloud_bucket_mount.pyi +0 -0
  104. {modal-1.1.5.dev54 → modal-1.1.5.dev56}/modal/cls.py +0 -0
  105. {modal-1.1.5.dev54 → modal-1.1.5.dev56}/modal/cls.pyi +0 -0
  106. {modal-1.1.5.dev54 → modal-1.1.5.dev56}/modal/config.py +0 -0
  107. {modal-1.1.5.dev54 → modal-1.1.5.dev56}/modal/container_process.py +0 -0
  108. {modal-1.1.5.dev54 → modal-1.1.5.dev56}/modal/container_process.pyi +0 -0
  109. {modal-1.1.5.dev54 → modal-1.1.5.dev56}/modal/dict.py +0 -0
  110. {modal-1.1.5.dev54 → modal-1.1.5.dev56}/modal/dict.pyi +0 -0
  111. {modal-1.1.5.dev54 → modal-1.1.5.dev56}/modal/environments.py +0 -0
  112. {modal-1.1.5.dev54 → modal-1.1.5.dev56}/modal/environments.pyi +0 -0
  113. {modal-1.1.5.dev54 → modal-1.1.5.dev56}/modal/exception.py +0 -0
  114. {modal-1.1.5.dev54 → modal-1.1.5.dev56}/modal/experimental/flash.py +0 -0
  115. {modal-1.1.5.dev54 → modal-1.1.5.dev56}/modal/experimental/flash.pyi +0 -0
  116. {modal-1.1.5.dev54 → modal-1.1.5.dev56}/modal/experimental/ipython.py +0 -0
  117. {modal-1.1.5.dev54 → modal-1.1.5.dev56}/modal/file_io.py +0 -0
  118. {modal-1.1.5.dev54 → modal-1.1.5.dev56}/modal/file_io.pyi +0 -0
  119. {modal-1.1.5.dev54 → modal-1.1.5.dev56}/modal/file_pattern_matcher.py +0 -0
  120. {modal-1.1.5.dev54 → modal-1.1.5.dev56}/modal/functions.py +0 -0
  121. {modal-1.1.5.dev54 → modal-1.1.5.dev56}/modal/functions.pyi +0 -0
  122. {modal-1.1.5.dev54 → modal-1.1.5.dev56}/modal/gpu.py +0 -0
  123. {modal-1.1.5.dev54 → modal-1.1.5.dev56}/modal/image.py +0 -0
  124. {modal-1.1.5.dev54 → modal-1.1.5.dev56}/modal/image.pyi +0 -0
  125. {modal-1.1.5.dev54 → modal-1.1.5.dev56}/modal/io_streams.py +0 -0
  126. {modal-1.1.5.dev54 → modal-1.1.5.dev56}/modal/io_streams.pyi +0 -0
  127. {modal-1.1.5.dev54 → modal-1.1.5.dev56}/modal/mount.py +0 -0
  128. {modal-1.1.5.dev54 → modal-1.1.5.dev56}/modal/mount.pyi +0 -0
  129. {modal-1.1.5.dev54 → modal-1.1.5.dev56}/modal/network_file_system.py +0 -0
  130. {modal-1.1.5.dev54 → modal-1.1.5.dev56}/modal/network_file_system.pyi +0 -0
  131. {modal-1.1.5.dev54 → modal-1.1.5.dev56}/modal/object.py +0 -0
  132. {modal-1.1.5.dev54 → modal-1.1.5.dev56}/modal/object.pyi +0 -0
  133. {modal-1.1.5.dev54 → modal-1.1.5.dev56}/modal/output.py +0 -0
  134. {modal-1.1.5.dev54 → modal-1.1.5.dev56}/modal/parallel_map.py +0 -0
  135. {modal-1.1.5.dev54 → modal-1.1.5.dev56}/modal/parallel_map.pyi +0 -0
  136. {modal-1.1.5.dev54 → modal-1.1.5.dev56}/modal/partial_function.py +0 -0
  137. {modal-1.1.5.dev54 → modal-1.1.5.dev56}/modal/partial_function.pyi +0 -0
  138. {modal-1.1.5.dev54 → modal-1.1.5.dev56}/modal/proxy.py +0 -0
  139. {modal-1.1.5.dev54 → modal-1.1.5.dev56}/modal/proxy.pyi +0 -0
  140. {modal-1.1.5.dev54 → modal-1.1.5.dev56}/modal/py.typed +0 -0
  141. {modal-1.1.5.dev54 → modal-1.1.5.dev56}/modal/queue.py +0 -0
  142. {modal-1.1.5.dev54 → modal-1.1.5.dev56}/modal/queue.pyi +0 -0
  143. {modal-1.1.5.dev54 → modal-1.1.5.dev56}/modal/retries.py +0 -0
  144. {modal-1.1.5.dev54 → modal-1.1.5.dev56}/modal/runner.pyi +0 -0
  145. {modal-1.1.5.dev54 → modal-1.1.5.dev56}/modal/running_app.py +0 -0
  146. {modal-1.1.5.dev54 → modal-1.1.5.dev56}/modal/sandbox.py +0 -0
  147. {modal-1.1.5.dev54 → modal-1.1.5.dev56}/modal/sandbox.pyi +0 -0
  148. {modal-1.1.5.dev54 → modal-1.1.5.dev56}/modal/schedule.py +0 -0
  149. {modal-1.1.5.dev54 → modal-1.1.5.dev56}/modal/scheduler_placement.py +0 -0
  150. {modal-1.1.5.dev54 → modal-1.1.5.dev56}/modal/secret.py +0 -0
  151. {modal-1.1.5.dev54 → modal-1.1.5.dev56}/modal/secret.pyi +0 -0
  152. {modal-1.1.5.dev54 → modal-1.1.5.dev56}/modal/serving.py +0 -0
  153. {modal-1.1.5.dev54 → modal-1.1.5.dev56}/modal/serving.pyi +0 -0
  154. {modal-1.1.5.dev54 → modal-1.1.5.dev56}/modal/snapshot.py +0 -0
  155. {modal-1.1.5.dev54 → modal-1.1.5.dev56}/modal/snapshot.pyi +0 -0
  156. {modal-1.1.5.dev54 → modal-1.1.5.dev56}/modal/stream_type.py +0 -0
  157. {modal-1.1.5.dev54 → modal-1.1.5.dev56}/modal/token_flow.py +0 -0
  158. {modal-1.1.5.dev54 → modal-1.1.5.dev56}/modal/token_flow.pyi +0 -0
  159. {modal-1.1.5.dev54 → modal-1.1.5.dev56}/modal/volume.py +0 -0
  160. {modal-1.1.5.dev54 → modal-1.1.5.dev56}/modal/volume.pyi +0 -0
  161. {modal-1.1.5.dev54 → modal-1.1.5.dev56}/modal.egg-info/SOURCES.txt +0 -0
  162. {modal-1.1.5.dev54 → modal-1.1.5.dev56}/modal.egg-info/dependency_links.txt +0 -0
  163. {modal-1.1.5.dev54 → modal-1.1.5.dev56}/modal.egg-info/entry_points.txt +0 -0
  164. {modal-1.1.5.dev54 → modal-1.1.5.dev56}/modal.egg-info/requires.txt +0 -0
  165. {modal-1.1.5.dev54 → modal-1.1.5.dev56}/modal.egg-info/top_level.txt +0 -0
  166. {modal-1.1.5.dev54 → modal-1.1.5.dev56}/modal_docs/__init__.py +0 -0
  167. {modal-1.1.5.dev54 → modal-1.1.5.dev56}/modal_docs/gen_cli_docs.py +0 -0
  168. {modal-1.1.5.dev54 → modal-1.1.5.dev56}/modal_docs/gen_reference_docs.py +0 -0
  169. {modal-1.1.5.dev54 → modal-1.1.5.dev56}/modal_docs/mdmd/__init__.py +0 -0
  170. {modal-1.1.5.dev54 → modal-1.1.5.dev56}/modal_docs/mdmd/mdmd.py +0 -0
  171. {modal-1.1.5.dev54 → modal-1.1.5.dev56}/modal_docs/mdmd/signatures.py +0 -0
  172. {modal-1.1.5.dev54 → modal-1.1.5.dev56}/modal_proto/__init__.py +0 -0
  173. {modal-1.1.5.dev54 → modal-1.1.5.dev56}/modal_proto/api.proto +0 -0
  174. {modal-1.1.5.dev54 → modal-1.1.5.dev56}/modal_proto/api_grpc.py +0 -0
  175. {modal-1.1.5.dev54 → modal-1.1.5.dev56}/modal_proto/api_pb2.py +0 -0
  176. {modal-1.1.5.dev54 → modal-1.1.5.dev56}/modal_proto/api_pb2.pyi +0 -0
  177. {modal-1.1.5.dev54 → modal-1.1.5.dev56}/modal_proto/api_pb2_grpc.py +0 -0
  178. {modal-1.1.5.dev54 → modal-1.1.5.dev56}/modal_proto/api_pb2_grpc.pyi +0 -0
  179. {modal-1.1.5.dev54 → modal-1.1.5.dev56}/modal_proto/modal_api_grpc.py +0 -0
  180. {modal-1.1.5.dev54 → modal-1.1.5.dev56}/modal_proto/modal_options_grpc.py +0 -0
  181. {modal-1.1.5.dev54 → modal-1.1.5.dev56}/modal_proto/options.proto +0 -0
  182. {modal-1.1.5.dev54 → modal-1.1.5.dev56}/modal_proto/options_grpc.py +0 -0
  183. {modal-1.1.5.dev54 → modal-1.1.5.dev56}/modal_proto/options_pb2.py +0 -0
  184. {modal-1.1.5.dev54 → modal-1.1.5.dev56}/modal_proto/options_pb2.pyi +0 -0
  185. {modal-1.1.5.dev54 → modal-1.1.5.dev56}/modal_proto/options_pb2_grpc.py +0 -0
  186. {modal-1.1.5.dev54 → modal-1.1.5.dev56}/modal_proto/options_pb2_grpc.pyi +0 -0
  187. {modal-1.1.5.dev54 → modal-1.1.5.dev56}/modal_proto/py.typed +0 -0
  188. {modal-1.1.5.dev54 → modal-1.1.5.dev56}/modal_proto/sandbox_router.proto +0 -0
  189. {modal-1.1.5.dev54 → modal-1.1.5.dev56}/modal_proto/sandbox_router_grpc.py +0 -0
  190. {modal-1.1.5.dev54 → modal-1.1.5.dev56}/modal_proto/sandbox_router_pb2.py +0 -0
  191. {modal-1.1.5.dev54 → modal-1.1.5.dev56}/modal_proto/sandbox_router_pb2.pyi +0 -0
  192. {modal-1.1.5.dev54 → modal-1.1.5.dev56}/modal_proto/sandbox_router_pb2_grpc.py +0 -0
  193. {modal-1.1.5.dev54 → modal-1.1.5.dev56}/modal_proto/sandbox_router_pb2_grpc.pyi +0 -0
  194. {modal-1.1.5.dev54 → modal-1.1.5.dev56}/modal_version/__main__.py +0 -0
  195. {modal-1.1.5.dev54 → modal-1.1.5.dev56}/pyproject.toml +0 -0
  196. {modal-1.1.5.dev54 → modal-1.1.5.dev56}/setup.cfg +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: modal
3
- Version: 1.1.5.dev54
3
+ Version: 1.1.5.dev56
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.5.dev54",
36
+ version: str = "1.1.5.dev56",
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.5.dev54",
167
+ version: str = "1.1.5.dev56",
168
168
  ):
169
169
  """mdmd:hidden
170
170
  The Modal client object is not intended to be instantiated directly by users.
@@ -384,3 +384,28 @@ async def update_autoscaler(
384
384
 
385
385
  request = api_pb2.FunctionUpdateSchedulingParamsRequest(function_id=f.object_id, settings=settings)
386
386
  await retry_transient_errors(client.stub.FunctionUpdateSchedulingParams, request)
387
+
388
+
389
+ @synchronizer.create_blocking
390
+ async def image_delete(
391
+ image_id: str,
392
+ *,
393
+ client: Optional[_Client] = None,
394
+ ) -> None:
395
+ """Delete an Image by its ID.
396
+
397
+ Deletion is irreversible and will prevent Apps from using the Image.
398
+
399
+ This is an experimental interface for a feature that we will be adding to
400
+ the main Image class. The stable form of this interface may look different.
401
+
402
+ Note: When building an Image, each chained method call will create an
403
+ intermediate Image layer, each with its own ID. Deleting an Image will not
404
+ delete any of its intermediate layers, only the image identified by the
405
+ provided ID.
406
+ """
407
+ if client is None:
408
+ client = await _Client.from_env()
409
+
410
+ req = api_pb2.ImageDeleteRequest(image_id=image_id)
411
+ await retry_transient_errors(client.stub.ImageDelete, req)
@@ -10,6 +10,7 @@ import os
10
10
  import time
11
11
  import typing
12
12
  from collections.abc import AsyncGenerator
13
+ from contextlib import nullcontext
13
14
  from multiprocessing.synchronize import Event
14
15
  from typing import TYPE_CHECKING, Any, Optional, TypeVar
15
16
 
@@ -363,11 +364,9 @@ async def _run_app(
363
364
  # Yield to context
364
365
  if output_mgr := _get_output_manager():
365
366
  # Don't show status spinner in interactive mode to avoid interfering with breakpoints
366
- if interactive:
367
+ spinner_ctx = nullcontext() if interactive else output_mgr.show_status_spinner()
368
+ with spinner_ctx:
367
369
  yield app
368
- else:
369
- with output_mgr.show_status_spinner():
370
- yield app
371
370
  else:
372
371
  yield app
373
372
  # successful completion!
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: modal
3
- Version: 1.1.5.dev54
3
+ Version: 1.1.5.dev56
4
4
  Summary: Python client library for Modal
5
5
  Author-email: Modal Labs <support@modal.com>
6
6
  License: Apache-2.0
@@ -1,4 +1,4 @@
1
1
  # Copyright Modal Labs 2025
2
2
  """Supplies the current version of the modal client library."""
3
3
 
4
- __version__ = "1.1.5.dev54"
4
+ __version__ = "1.1.5.dev56"
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes