modal 1.4.4.dev3__tar.gz → 1.4.4.dev5__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 (214) hide show
  1. {modal-1.4.4.dev3 → modal-1.4.4.dev5}/PKG-INFO +1 -1
  2. {modal-1.4.4.dev3 → modal-1.4.4.dev5}/modal/client.pyi +2 -2
  3. {modal-1.4.4.dev3 → modal-1.4.4.dev5}/modal/sandbox.py +35 -4
  4. {modal-1.4.4.dev3 → modal-1.4.4.dev5}/modal/sandbox.pyi +27 -12
  5. {modal-1.4.4.dev3 → modal-1.4.4.dev5}/modal/volume.py +2 -2
  6. {modal-1.4.4.dev3 → modal-1.4.4.dev5}/modal/volume.pyi +4 -4
  7. {modal-1.4.4.dev3 → modal-1.4.4.dev5}/modal.egg-info/PKG-INFO +1 -1
  8. {modal-1.4.4.dev3 → modal-1.4.4.dev5}/modal_proto/api_pb2.py +986 -986
  9. {modal-1.4.4.dev3 → modal-1.4.4.dev5}/modal_proto/api_pb2.pyi +19 -5
  10. {modal-1.4.4.dev3 → modal-1.4.4.dev5}/modal_version/__init__.py +1 -1
  11. {modal-1.4.4.dev3 → modal-1.4.4.dev5}/pyproject.toml +13 -0
  12. {modal-1.4.4.dev3 → modal-1.4.4.dev5}/LICENSE +0 -0
  13. {modal-1.4.4.dev3 → modal-1.4.4.dev5}/README.md +0 -0
  14. {modal-1.4.4.dev3 → modal-1.4.4.dev5}/modal/__init__.py +0 -0
  15. {modal-1.4.4.dev3 → modal-1.4.4.dev5}/modal/__main__.py +0 -0
  16. {modal-1.4.4.dev3 → modal-1.4.4.dev5}/modal/_billing.py +0 -0
  17. {modal-1.4.4.dev3 → modal-1.4.4.dev5}/modal/_clustered_functions.py +0 -0
  18. {modal-1.4.4.dev3 → modal-1.4.4.dev5}/modal/_clustered_functions.pyi +0 -0
  19. {modal-1.4.4.dev3 → modal-1.4.4.dev5}/modal/_container_entrypoint.py +0 -0
  20. {modal-1.4.4.dev3 → modal-1.4.4.dev5}/modal/_environments.py +0 -0
  21. {modal-1.4.4.dev3 → modal-1.4.4.dev5}/modal/_function_variants.py +0 -0
  22. {modal-1.4.4.dev3 → modal-1.4.4.dev5}/modal/_functions.py +0 -0
  23. {modal-1.4.4.dev3 → modal-1.4.4.dev5}/modal/_grpc_client.py +0 -0
  24. {modal-1.4.4.dev3 → modal-1.4.4.dev5}/modal/_ipython.py +0 -0
  25. {modal-1.4.4.dev3 → modal-1.4.4.dev5}/modal/_load_context.py +0 -0
  26. {modal-1.4.4.dev3 → modal-1.4.4.dev5}/modal/_location.py +0 -0
  27. {modal-1.4.4.dev3 → modal-1.4.4.dev5}/modal/_logs.py +0 -0
  28. {modal-1.4.4.dev3 → modal-1.4.4.dev5}/modal/_object.py +0 -0
  29. {modal-1.4.4.dev3 → modal-1.4.4.dev5}/modal/_output/__init__.py +0 -0
  30. {modal-1.4.4.dev3 → modal-1.4.4.dev5}/modal/_output/manager.py +0 -0
  31. {modal-1.4.4.dev3 → modal-1.4.4.dev5}/modal/_output/pty.py +0 -0
  32. {modal-1.4.4.dev3 → modal-1.4.4.dev5}/modal/_output/rich.py +0 -0
  33. {modal-1.4.4.dev3 → modal-1.4.4.dev5}/modal/_output/status.py +0 -0
  34. {modal-1.4.4.dev3 → modal-1.4.4.dev5}/modal/_partial_function.py +0 -0
  35. {modal-1.4.4.dev3 → modal-1.4.4.dev5}/modal/_resolver.py +0 -0
  36. {modal-1.4.4.dev3 → modal-1.4.4.dev5}/modal/_resources.py +0 -0
  37. {modal-1.4.4.dev3 → modal-1.4.4.dev5}/modal/_runtime/__init__.py +0 -0
  38. {modal-1.4.4.dev3 → modal-1.4.4.dev5}/modal/_runtime/asgi.py +0 -0
  39. {modal-1.4.4.dev3 → modal-1.4.4.dev5}/modal/_runtime/container_io_manager.py +0 -0
  40. {modal-1.4.4.dev3 → modal-1.4.4.dev5}/modal/_runtime/container_io_manager.pyi +0 -0
  41. {modal-1.4.4.dev3 → modal-1.4.4.dev5}/modal/_runtime/execution_context.py +0 -0
  42. {modal-1.4.4.dev3 → modal-1.4.4.dev5}/modal/_runtime/execution_context.pyi +0 -0
  43. {modal-1.4.4.dev3 → modal-1.4.4.dev5}/modal/_runtime/gpu_memory_snapshot.py +0 -0
  44. {modal-1.4.4.dev3 → modal-1.4.4.dev5}/modal/_runtime/telemetry.py +0 -0
  45. {modal-1.4.4.dev3 → modal-1.4.4.dev5}/modal/_runtime/user_code_event_loop.py +0 -0
  46. {modal-1.4.4.dev3 → modal-1.4.4.dev5}/modal/_runtime/user_code_imports.py +0 -0
  47. {modal-1.4.4.dev3 → modal-1.4.4.dev5}/modal/_serialization.py +0 -0
  48. {modal-1.4.4.dev3 → modal-1.4.4.dev5}/modal/_server.py +0 -0
  49. {modal-1.4.4.dev3 → modal-1.4.4.dev5}/modal/_traceback.py +0 -0
  50. {modal-1.4.4.dev3 → modal-1.4.4.dev5}/modal/_tunnel.py +0 -0
  51. {modal-1.4.4.dev3 → modal-1.4.4.dev5}/modal/_tunnel.pyi +0 -0
  52. {modal-1.4.4.dev3 → modal-1.4.4.dev5}/modal/_type_manager.py +0 -0
  53. {modal-1.4.4.dev3 → modal-1.4.4.dev5}/modal/_utils/__init__.py +0 -0
  54. {modal-1.4.4.dev3 → modal-1.4.4.dev5}/modal/_utils/app_utils.py +0 -0
  55. {modal-1.4.4.dev3 → modal-1.4.4.dev5}/modal/_utils/async_utils.py +0 -0
  56. {modal-1.4.4.dev3 → modal-1.4.4.dev5}/modal/_utils/auth_token_manager.py +0 -0
  57. {modal-1.4.4.dev3 → modal-1.4.4.dev5}/modal/_utils/blob_utils.py +0 -0
  58. {modal-1.4.4.dev3 → modal-1.4.4.dev5}/modal/_utils/browser_utils.py +0 -0
  59. {modal-1.4.4.dev3 → modal-1.4.4.dev5}/modal/_utils/bytes_io_segment_payload.py +0 -0
  60. {modal-1.4.4.dev3 → modal-1.4.4.dev5}/modal/_utils/deprecation.py +0 -0
  61. {modal-1.4.4.dev3 → modal-1.4.4.dev5}/modal/_utils/docker_utils.py +0 -0
  62. {modal-1.4.4.dev3 → modal-1.4.4.dev5}/modal/_utils/function_utils.py +0 -0
  63. {modal-1.4.4.dev3 → modal-1.4.4.dev5}/modal/_utils/git_utils.py +0 -0
  64. {modal-1.4.4.dev3 → modal-1.4.4.dev5}/modal/_utils/grpc_testing.py +0 -0
  65. {modal-1.4.4.dev3 → modal-1.4.4.dev5}/modal/_utils/grpc_utils.py +0 -0
  66. {modal-1.4.4.dev3 → modal-1.4.4.dev5}/modal/_utils/hash_utils.py +0 -0
  67. {modal-1.4.4.dev3 → modal-1.4.4.dev5}/modal/_utils/http_utils.py +0 -0
  68. {modal-1.4.4.dev3 → modal-1.4.4.dev5}/modal/_utils/jwt_utils.py +0 -0
  69. {modal-1.4.4.dev3 → modal-1.4.4.dev5}/modal/_utils/logger.py +0 -0
  70. {modal-1.4.4.dev3 → modal-1.4.4.dev5}/modal/_utils/mount_utils.py +0 -0
  71. {modal-1.4.4.dev3 → modal-1.4.4.dev5}/modal/_utils/name_utils.py +0 -0
  72. {modal-1.4.4.dev3 → modal-1.4.4.dev5}/modal/_utils/package_utils.py +0 -0
  73. {modal-1.4.4.dev3 → modal-1.4.4.dev5}/modal/_utils/pattern_utils.py +0 -0
  74. {modal-1.4.4.dev3 → modal-1.4.4.dev5}/modal/_utils/rand_pb_testing.py +0 -0
  75. {modal-1.4.4.dev3 → modal-1.4.4.dev5}/modal/_utils/sandbox_fs_utils.py +0 -0
  76. {modal-1.4.4.dev3 → modal-1.4.4.dev5}/modal/_utils/shell_utils.py +0 -0
  77. {modal-1.4.4.dev3 → modal-1.4.4.dev5}/modal/_utils/task_command_router_client.py +0 -0
  78. {modal-1.4.4.dev3 → modal-1.4.4.dev5}/modal/_utils/time_utils.py +0 -0
  79. {modal-1.4.4.dev3 → modal-1.4.4.dev5}/modal/_vendor/__init__.py +0 -0
  80. {modal-1.4.4.dev3 → modal-1.4.4.dev5}/modal/_vendor/a2wsgi_wsgi.py +0 -0
  81. {modal-1.4.4.dev3 → modal-1.4.4.dev5}/modal/_vendor/cloudpickle.py +0 -0
  82. {modal-1.4.4.dev3 → modal-1.4.4.dev5}/modal/_vendor/tblib.py +0 -0
  83. {modal-1.4.4.dev3 → modal-1.4.4.dev5}/modal/_vendor/version.py +0 -0
  84. {modal-1.4.4.dev3 → modal-1.4.4.dev5}/modal/_watcher.py +0 -0
  85. {modal-1.4.4.dev3 → modal-1.4.4.dev5}/modal/app.py +0 -0
  86. {modal-1.4.4.dev3 → modal-1.4.4.dev5}/modal/app.pyi +0 -0
  87. {modal-1.4.4.dev3 → modal-1.4.4.dev5}/modal/billing.py +0 -0
  88. {modal-1.4.4.dev3 → modal-1.4.4.dev5}/modal/builder/2023.12.312.txt +0 -0
  89. {modal-1.4.4.dev3 → modal-1.4.4.dev5}/modal/builder/2023.12.txt +0 -0
  90. {modal-1.4.4.dev3 → modal-1.4.4.dev5}/modal/builder/2024.04.txt +0 -0
  91. {modal-1.4.4.dev3 → modal-1.4.4.dev5}/modal/builder/2024.10.txt +0 -0
  92. {modal-1.4.4.dev3 → modal-1.4.4.dev5}/modal/builder/2025.06.txt +0 -0
  93. {modal-1.4.4.dev3 → modal-1.4.4.dev5}/modal/builder/PREVIEW.txt +0 -0
  94. {modal-1.4.4.dev3 → modal-1.4.4.dev5}/modal/builder/README.md +0 -0
  95. {modal-1.4.4.dev3 → modal-1.4.4.dev5}/modal/builder/base-images.json +0 -0
  96. {modal-1.4.4.dev3 → modal-1.4.4.dev5}/modal/call_graph.py +0 -0
  97. {modal-1.4.4.dev3 → modal-1.4.4.dev5}/modal/cli/__init__.py +0 -0
  98. {modal-1.4.4.dev3 → modal-1.4.4.dev5}/modal/cli/_download.py +0 -0
  99. {modal-1.4.4.dev3 → modal-1.4.4.dev5}/modal/cli/_help.py +0 -0
  100. {modal-1.4.4.dev3 → modal-1.4.4.dev5}/modal/cli/_traceback.py +0 -0
  101. {modal-1.4.4.dev3 → modal-1.4.4.dev5}/modal/cli/app.py +0 -0
  102. {modal-1.4.4.dev3 → modal-1.4.4.dev5}/modal/cli/billing.py +0 -0
  103. {modal-1.4.4.dev3 → modal-1.4.4.dev5}/modal/cli/bootstrap.py +0 -0
  104. {modal-1.4.4.dev3 → modal-1.4.4.dev5}/modal/cli/changelog.py +0 -0
  105. {modal-1.4.4.dev3 → modal-1.4.4.dev5}/modal/cli/cluster.py +0 -0
  106. {modal-1.4.4.dev3 → modal-1.4.4.dev5}/modal/cli/config.py +0 -0
  107. {modal-1.4.4.dev3 → modal-1.4.4.dev5}/modal/cli/container.py +0 -0
  108. {modal-1.4.4.dev3 → modal-1.4.4.dev5}/modal/cli/dashboard.py +0 -0
  109. {modal-1.4.4.dev3 → modal-1.4.4.dev5}/modal/cli/dict.py +0 -0
  110. {modal-1.4.4.dev3 → modal-1.4.4.dev5}/modal/cli/entry_point.py +0 -0
  111. {modal-1.4.4.dev3 → modal-1.4.4.dev5}/modal/cli/environment.py +0 -0
  112. {modal-1.4.4.dev3 → modal-1.4.4.dev5}/modal/cli/import_refs.py +0 -0
  113. {modal-1.4.4.dev3 → modal-1.4.4.dev5}/modal/cli/launch.py +0 -0
  114. {modal-1.4.4.dev3 → modal-1.4.4.dev5}/modal/cli/logo.py +0 -0
  115. {modal-1.4.4.dev3 → modal-1.4.4.dev5}/modal/cli/network_file_system.py +0 -0
  116. {modal-1.4.4.dev3 → modal-1.4.4.dev5}/modal/cli/profile.py +0 -0
  117. {modal-1.4.4.dev3 → modal-1.4.4.dev5}/modal/cli/programs/__init__.py +0 -0
  118. {modal-1.4.4.dev3 → modal-1.4.4.dev5}/modal/cli/programs/run_jupyter.py +0 -0
  119. {modal-1.4.4.dev3 → modal-1.4.4.dev5}/modal/cli/programs/vscode.py +0 -0
  120. {modal-1.4.4.dev3 → modal-1.4.4.dev5}/modal/cli/queues.py +0 -0
  121. {modal-1.4.4.dev3 → modal-1.4.4.dev5}/modal/cli/run.py +0 -0
  122. {modal-1.4.4.dev3 → modal-1.4.4.dev5}/modal/cli/secret.py +0 -0
  123. {modal-1.4.4.dev3 → modal-1.4.4.dev5}/modal/cli/selector.py +0 -0
  124. {modal-1.4.4.dev3 → modal-1.4.4.dev5}/modal/cli/shell.py +0 -0
  125. {modal-1.4.4.dev3 → modal-1.4.4.dev5}/modal/cli/token.py +0 -0
  126. {modal-1.4.4.dev3 → modal-1.4.4.dev5}/modal/cli/utils.py +0 -0
  127. {modal-1.4.4.dev3 → modal-1.4.4.dev5}/modal/cli/volume.py +0 -0
  128. {modal-1.4.4.dev3 → modal-1.4.4.dev5}/modal/client.py +0 -0
  129. {modal-1.4.4.dev3 → modal-1.4.4.dev5}/modal/cloud_bucket_mount.py +0 -0
  130. {modal-1.4.4.dev3 → modal-1.4.4.dev5}/modal/cloud_bucket_mount.pyi +0 -0
  131. {modal-1.4.4.dev3 → modal-1.4.4.dev5}/modal/cls.py +0 -0
  132. {modal-1.4.4.dev3 → modal-1.4.4.dev5}/modal/cls.pyi +0 -0
  133. {modal-1.4.4.dev3 → modal-1.4.4.dev5}/modal/config.py +0 -0
  134. {modal-1.4.4.dev3 → modal-1.4.4.dev5}/modal/container_process.py +0 -0
  135. {modal-1.4.4.dev3 → modal-1.4.4.dev5}/modal/container_process.pyi +0 -0
  136. {modal-1.4.4.dev3 → modal-1.4.4.dev5}/modal/dict.py +0 -0
  137. {modal-1.4.4.dev3 → modal-1.4.4.dev5}/modal/dict.pyi +0 -0
  138. {modal-1.4.4.dev3 → modal-1.4.4.dev5}/modal/environments.py +0 -0
  139. {modal-1.4.4.dev3 → modal-1.4.4.dev5}/modal/environments.pyi +0 -0
  140. {modal-1.4.4.dev3 → modal-1.4.4.dev5}/modal/exception.py +0 -0
  141. {modal-1.4.4.dev3 → modal-1.4.4.dev5}/modal/experimental/__init__.py +0 -0
  142. {modal-1.4.4.dev3 → modal-1.4.4.dev5}/modal/experimental/flash.py +0 -0
  143. {modal-1.4.4.dev3 → modal-1.4.4.dev5}/modal/experimental/flash.pyi +0 -0
  144. {modal-1.4.4.dev3 → modal-1.4.4.dev5}/modal/experimental/ipython.py +0 -0
  145. {modal-1.4.4.dev3 → modal-1.4.4.dev5}/modal/file_io.py +0 -0
  146. {modal-1.4.4.dev3 → modal-1.4.4.dev5}/modal/file_io.pyi +0 -0
  147. {modal-1.4.4.dev3 → modal-1.4.4.dev5}/modal/file_pattern_matcher.py +0 -0
  148. {modal-1.4.4.dev3 → modal-1.4.4.dev5}/modal/functions.py +0 -0
  149. {modal-1.4.4.dev3 → modal-1.4.4.dev5}/modal/functions.pyi +0 -0
  150. {modal-1.4.4.dev3 → modal-1.4.4.dev5}/modal/image.py +0 -0
  151. {modal-1.4.4.dev3 → modal-1.4.4.dev5}/modal/image.pyi +0 -0
  152. {modal-1.4.4.dev3 → modal-1.4.4.dev5}/modal/io_streams.py +0 -0
  153. {modal-1.4.4.dev3 → modal-1.4.4.dev5}/modal/io_streams.pyi +0 -0
  154. {modal-1.4.4.dev3 → modal-1.4.4.dev5}/modal/mount.py +0 -0
  155. {modal-1.4.4.dev3 → modal-1.4.4.dev5}/modal/mount.pyi +0 -0
  156. {modal-1.4.4.dev3 → modal-1.4.4.dev5}/modal/network_file_system.py +0 -0
  157. {modal-1.4.4.dev3 → modal-1.4.4.dev5}/modal/network_file_system.pyi +0 -0
  158. {modal-1.4.4.dev3 → modal-1.4.4.dev5}/modal/object.py +0 -0
  159. {modal-1.4.4.dev3 → modal-1.4.4.dev5}/modal/object.pyi +0 -0
  160. {modal-1.4.4.dev3 → modal-1.4.4.dev5}/modal/output.py +0 -0
  161. {modal-1.4.4.dev3 → modal-1.4.4.dev5}/modal/parallel_map.py +0 -0
  162. {modal-1.4.4.dev3 → modal-1.4.4.dev5}/modal/parallel_map.pyi +0 -0
  163. {modal-1.4.4.dev3 → modal-1.4.4.dev5}/modal/partial_function.py +0 -0
  164. {modal-1.4.4.dev3 → modal-1.4.4.dev5}/modal/partial_function.pyi +0 -0
  165. {modal-1.4.4.dev3 → modal-1.4.4.dev5}/modal/proxy.py +0 -0
  166. {modal-1.4.4.dev3 → modal-1.4.4.dev5}/modal/proxy.pyi +0 -0
  167. {modal-1.4.4.dev3 → modal-1.4.4.dev5}/modal/py.typed +0 -0
  168. {modal-1.4.4.dev3 → modal-1.4.4.dev5}/modal/queue.py +0 -0
  169. {modal-1.4.4.dev3 → modal-1.4.4.dev5}/modal/queue.pyi +0 -0
  170. {modal-1.4.4.dev3 → modal-1.4.4.dev5}/modal/retries.py +0 -0
  171. {modal-1.4.4.dev3 → modal-1.4.4.dev5}/modal/runner.py +0 -0
  172. {modal-1.4.4.dev3 → modal-1.4.4.dev5}/modal/runner.pyi +0 -0
  173. {modal-1.4.4.dev3 → modal-1.4.4.dev5}/modal/running_app.py +0 -0
  174. {modal-1.4.4.dev3 → modal-1.4.4.dev5}/modal/sandbox_fs.py +0 -0
  175. {modal-1.4.4.dev3 → modal-1.4.4.dev5}/modal/sandbox_fs.pyi +0 -0
  176. {modal-1.4.4.dev3 → modal-1.4.4.dev5}/modal/schedule.py +0 -0
  177. {modal-1.4.4.dev3 → modal-1.4.4.dev5}/modal/scheduler_placement.py +0 -0
  178. {modal-1.4.4.dev3 → modal-1.4.4.dev5}/modal/secret.py +0 -0
  179. {modal-1.4.4.dev3 → modal-1.4.4.dev5}/modal/secret.pyi +0 -0
  180. {modal-1.4.4.dev3 → modal-1.4.4.dev5}/modal/server.py +0 -0
  181. {modal-1.4.4.dev3 → modal-1.4.4.dev5}/modal/server.pyi +0 -0
  182. {modal-1.4.4.dev3 → modal-1.4.4.dev5}/modal/serving.py +0 -0
  183. {modal-1.4.4.dev3 → modal-1.4.4.dev5}/modal/serving.pyi +0 -0
  184. {modal-1.4.4.dev3 → modal-1.4.4.dev5}/modal/snapshot.py +0 -0
  185. {modal-1.4.4.dev3 → modal-1.4.4.dev5}/modal/snapshot.pyi +0 -0
  186. {modal-1.4.4.dev3 → modal-1.4.4.dev5}/modal/stream_type.py +0 -0
  187. {modal-1.4.4.dev3 → modal-1.4.4.dev5}/modal/token_flow.py +0 -0
  188. {modal-1.4.4.dev3 → modal-1.4.4.dev5}/modal/token_flow.pyi +0 -0
  189. {modal-1.4.4.dev3 → modal-1.4.4.dev5}/modal.egg-info/SOURCES.txt +0 -0
  190. {modal-1.4.4.dev3 → modal-1.4.4.dev5}/modal.egg-info/dependency_links.txt +0 -0
  191. {modal-1.4.4.dev3 → modal-1.4.4.dev5}/modal.egg-info/entry_points.txt +0 -0
  192. {modal-1.4.4.dev3 → modal-1.4.4.dev5}/modal.egg-info/requires.txt +0 -0
  193. {modal-1.4.4.dev3 → modal-1.4.4.dev5}/modal.egg-info/top_level.txt +0 -0
  194. {modal-1.4.4.dev3 → modal-1.4.4.dev5}/modal_docs/__init__.py +0 -0
  195. {modal-1.4.4.dev3 → modal-1.4.4.dev5}/modal_docs/gen_cli_docs.py +0 -0
  196. {modal-1.4.4.dev3 → modal-1.4.4.dev5}/modal_docs/gen_cli_docs_main.py +0 -0
  197. {modal-1.4.4.dev3 → modal-1.4.4.dev5}/modal_docs/gen_reference_docs.py +0 -0
  198. {modal-1.4.4.dev3 → modal-1.4.4.dev5}/modal_docs/gen_reference_docs_main.py +0 -0
  199. {modal-1.4.4.dev3 → modal-1.4.4.dev5}/modal_docs/mdmd/__init__.py +0 -0
  200. {modal-1.4.4.dev3 → modal-1.4.4.dev5}/modal_docs/mdmd/mdmd.py +0 -0
  201. {modal-1.4.4.dev3 → modal-1.4.4.dev5}/modal_docs/mdmd/signatures.py +0 -0
  202. {modal-1.4.4.dev3 → modal-1.4.4.dev5}/modal_proto/__init__.py +0 -0
  203. {modal-1.4.4.dev3 → modal-1.4.4.dev5}/modal_proto/api_grpc.py +0 -0
  204. {modal-1.4.4.dev3 → modal-1.4.4.dev5}/modal_proto/api_pb2_grpc.py +0 -0
  205. {modal-1.4.4.dev3 → modal-1.4.4.dev5}/modal_proto/api_pb2_grpc.pyi +0 -0
  206. {modal-1.4.4.dev3 → modal-1.4.4.dev5}/modal_proto/modal_api_grpc.py +0 -0
  207. {modal-1.4.4.dev3 → modal-1.4.4.dev5}/modal_proto/py.typed +0 -0
  208. {modal-1.4.4.dev3 → modal-1.4.4.dev5}/modal_proto/task_command_router_grpc.py +0 -0
  209. {modal-1.4.4.dev3 → modal-1.4.4.dev5}/modal_proto/task_command_router_pb2.py +0 -0
  210. {modal-1.4.4.dev3 → modal-1.4.4.dev5}/modal_proto/task_command_router_pb2.pyi +0 -0
  211. {modal-1.4.4.dev3 → modal-1.4.4.dev5}/modal_proto/task_command_router_pb2_grpc.py +0 -0
  212. {modal-1.4.4.dev3 → modal-1.4.4.dev5}/modal_proto/task_command_router_pb2_grpc.pyi +0 -0
  213. {modal-1.4.4.dev3 → modal-1.4.4.dev5}/modal_version/__main__.py +0 -0
  214. {modal-1.4.4.dev3 → modal-1.4.4.dev5}/setup.cfg +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: modal
3
- Version: 1.4.4.dev3
3
+ Version: 1.4.4.dev5
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.dev3",
38
+ version: str = "1.4.4.dev5",
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.dev3",
178
+ version: str = "1.4.4.dev5",
179
179
  ):
180
180
  """mdmd:hidden
181
181
  The Modal client object is not intended to be instantiated directly by users.
@@ -696,6 +696,7 @@ class _Sandbox(_Object, type_prefix="sb"):
696
696
  block_network: bool = False,
697
697
  cidr_allowlist: Optional[Sequence[str]] = None,
698
698
  inbound_cidr_allowlist: Optional[Sequence[str]] = None,
699
+ volumes: dict[Union[str, os.PathLike], Union[_Volume, _CloudBucketMount]] = {},
699
700
  pty: bool = False,
700
701
  encrypted_ports: Sequence[int] = [],
701
702
  h2_ports: Sequence[int] = [],
@@ -707,11 +708,12 @@ class _Sandbox(_Object, type_prefix="sb"):
707
708
  """Create a sandbox using the V2 backend.
708
709
 
709
710
  Supported features include exec, encrypted tunnels, wait/poll/terminate,
710
- CPU and memory configuration, region placement,
711
- and filesystem snapshots.
711
+ CPU and memory configuration, region placement, volumes, cloud bucket mounts
712
+ (with static credentials via `secret=...`), and filesystem snapshots.
712
713
 
713
- Features like tags, memory snapshots, volumes, network file systems, GPUs,
714
- custom domains, OIDC identity tokens, and proxies are not supported.
714
+ Features like tags, memory snapshots, network file systems, GPUs, custom
715
+ domains, OIDC identity tokens (including `oidc_auth_role_arn` on a
716
+ CloudBucketMount), and proxies are not supported.
715
717
 
716
718
  V2 sandboxes created with this method are not currently returned by
717
719
  `Sandbox.list()` and cannot be looked up with `Sandbox.from_name()`.
@@ -730,6 +732,24 @@ class _Sandbox(_Object, type_prefix="sb"):
730
732
  if block_network and (encrypted_ports or h2_ports or unencrypted_ports):
731
733
  raise InvalidError("Cannot specify open ports when `block_network` is enabled")
732
734
 
735
+ validated_volumes = validate_volumes(volumes)
736
+ cloud_bucket_mounts = [(k, v) for k, v in validated_volumes if isinstance(v, _CloudBucketMount)]
737
+ validated_volumes = [(k, v) for k, v in validated_volumes if isinstance(v, _Volume)]
738
+
739
+ # The V2 backend does not yet propagate `oidc_identity_token` from server to worker - it is silently dropped
740
+ # TODO(akshay) add support for OIDC tokens
741
+ if include_oidc_identity_token:
742
+ raise InvalidError(
743
+ "Sandbox._experimental_create does not support include_oidc_identity_token=True. "
744
+ "Use Sandbox.create instead."
745
+ )
746
+ for path, cbm in cloud_bucket_mounts:
747
+ if cbm.oidc_auth_role_arn:
748
+ raise InvalidError(
749
+ "Sandbox._experimental_create does not support CloudBucketMount with oidc_auth_role_arn "
750
+ f"(at mount path {path!r}). Use static credentials via `secret=...`, or use Sandbox.create."
751
+ )
752
+
733
753
  secrets = secrets or []
734
754
  if env:
735
755
  secrets = [*secrets, _Secret.from_dict(env)]
@@ -777,9 +797,18 @@ class _Sandbox(_Object, type_prefix="sb"):
777
797
  dep_tasks.append(resolver.load(image, load_context))
778
798
  for secret in secrets:
779
799
  dep_tasks.append(resolver.load(secret, load_context))
800
+ for _, vol in validated_volumes:
801
+ dep_tasks.append(resolver.load(vol, load_context))
802
+ for _, cloud_bucket_mount in cloud_bucket_mounts:
803
+ if cloud_bucket_mount.secret:
804
+ dep_tasks.append(resolver.load(cloud_bucket_mount.secret, load_context))
780
805
  if dep_tasks:
781
806
  await asyncio.gather(*dep_tasks)
782
807
 
808
+ validate_volumes_by_object_id(validated_volumes)
809
+
810
+ volume_mounts = [_volume_to_mount_proto(path, volume) for path, volume in validated_volumes]
811
+
783
812
  definition = api_pb2.Sandbox(
784
813
  entrypoint_args=args,
785
814
  image_id=image.object_id,
@@ -801,6 +830,8 @@ class _Sandbox(_Object, type_prefix="sb"):
801
830
  name=name,
802
831
  include_oidc_identity_token=include_oidc_identity_token,
803
832
  inbound_cidr_allowlist=list(inbound_cidr_allowlist) if inbound_cidr_allowlist is not None else [],
833
+ volume_mounts=volume_mounts,
834
+ cloud_bucket_mounts=cloud_bucket_mounts_to_proto(cloud_bucket_mounts),
804
835
  )
805
836
 
806
837
  create_req = api_pb2.SandboxCreateV2Request(app_id=load_context.app_id, definition=definition)
@@ -325,6 +325,10 @@ class _Sandbox(modal._object._Object):
325
325
  block_network: bool = False,
326
326
  cidr_allowlist: typing.Optional[collections.abc.Sequence[str]] = None,
327
327
  inbound_cidr_allowlist: typing.Optional[collections.abc.Sequence[str]] = None,
328
+ volumes: dict[
329
+ typing.Union[str, os.PathLike],
330
+ typing.Union[modal.volume._Volume, modal.cloud_bucket_mount._CloudBucketMount],
331
+ ] = {},
328
332
  pty: bool = False,
329
333
  encrypted_ports: collections.abc.Sequence[int] = [],
330
334
  h2_ports: collections.abc.Sequence[int] = [],
@@ -336,11 +340,12 @@ class _Sandbox(modal._object._Object):
336
340
  """Create a sandbox using the V2 backend.
337
341
 
338
342
  Supported features include exec, encrypted tunnels, wait/poll/terminate,
339
- CPU and memory configuration, region placement,
340
- and filesystem snapshots.
343
+ CPU and memory configuration, region placement, volumes, cloud bucket mounts
344
+ (with static credentials via `secret=...`), and filesystem snapshots.
341
345
 
342
- Features like tags, memory snapshots, volumes, network file systems, GPUs,
343
- custom domains, OIDC identity tokens, and proxies are not supported.
346
+ Features like tags, memory snapshots, network file systems, GPUs, custom
347
+ domains, OIDC identity tokens (including `oidc_auth_role_arn` on a
348
+ CloudBucketMount), and proxies are not supported.
344
349
 
345
350
  V2 sandboxes created with this method are not currently returned by
346
351
  `Sandbox.list()` and cannot be looked up with `Sandbox.from_name()`.
@@ -1216,6 +1221,10 @@ class Sandbox(modal.object.Object):
1216
1221
  block_network: bool = False,
1217
1222
  cidr_allowlist: typing.Optional[collections.abc.Sequence[str]] = None,
1218
1223
  inbound_cidr_allowlist: typing.Optional[collections.abc.Sequence[str]] = None,
1224
+ volumes: dict[
1225
+ typing.Union[str, os.PathLike],
1226
+ typing.Union[modal.volume.Volume, modal.cloud_bucket_mount.CloudBucketMount],
1227
+ ] = {},
1219
1228
  pty: bool = False,
1220
1229
  encrypted_ports: collections.abc.Sequence[int] = [],
1221
1230
  h2_ports: collections.abc.Sequence[int] = [],
@@ -1227,11 +1236,12 @@ class Sandbox(modal.object.Object):
1227
1236
  """Create a sandbox using the V2 backend.
1228
1237
 
1229
1238
  Supported features include exec, encrypted tunnels, wait/poll/terminate,
1230
- CPU and memory configuration, region placement,
1231
- and filesystem snapshots.
1239
+ CPU and memory configuration, region placement, volumes, cloud bucket mounts
1240
+ (with static credentials via `secret=...`), and filesystem snapshots.
1232
1241
 
1233
- Features like tags, memory snapshots, volumes, network file systems, GPUs,
1234
- custom domains, OIDC identity tokens, and proxies are not supported.
1242
+ Features like tags, memory snapshots, network file systems, GPUs, custom
1243
+ domains, OIDC identity tokens (including `oidc_auth_role_arn` on a
1244
+ CloudBucketMount), and proxies are not supported.
1235
1245
 
1236
1246
  V2 sandboxes created with this method are not currently returned by
1237
1247
  `Sandbox.list()` and cannot be looked up with `Sandbox.from_name()`.
@@ -1259,6 +1269,10 @@ class Sandbox(modal.object.Object):
1259
1269
  block_network: bool = False,
1260
1270
  cidr_allowlist: typing.Optional[collections.abc.Sequence[str]] = None,
1261
1271
  inbound_cidr_allowlist: typing.Optional[collections.abc.Sequence[str]] = None,
1272
+ volumes: dict[
1273
+ typing.Union[str, os.PathLike],
1274
+ typing.Union[modal.volume.Volume, modal.cloud_bucket_mount.CloudBucketMount],
1275
+ ] = {},
1262
1276
  pty: bool = False,
1263
1277
  encrypted_ports: collections.abc.Sequence[int] = [],
1264
1278
  h2_ports: collections.abc.Sequence[int] = [],
@@ -1270,11 +1284,12 @@ class Sandbox(modal.object.Object):
1270
1284
  """Create a sandbox using the V2 backend.
1271
1285
 
1272
1286
  Supported features include exec, encrypted tunnels, wait/poll/terminate,
1273
- CPU and memory configuration, region placement,
1274
- and filesystem snapshots.
1287
+ CPU and memory configuration, region placement, volumes, cloud bucket mounts
1288
+ (with static credentials via `secret=...`), and filesystem snapshots.
1275
1289
 
1276
- Features like tags, memory snapshots, volumes, network file systems, GPUs,
1277
- custom domains, OIDC identity tokens, and proxies are not supported.
1290
+ Features like tags, memory snapshots, network file systems, GPUs, custom
1291
+ domains, OIDC identity tokens (including `oidc_auth_role_arn` on a
1292
+ CloudBucketMount), and proxies are not supported.
1278
1293
 
1279
1294
  V2 sandboxes created with this method are not currently returned by
1280
1295
  `Sandbox.list()` and cannot be looked up with `Sandbox.from_name()`.
@@ -471,8 +471,8 @@ class _Volume(_Object, type_prefix="vo"):
471
471
  Note that these options are not properties stored with the Volume itself - they can be individually configured
472
472
  for each Volume - container association.
473
473
 
474
- read_only: bool (optional) - set this to True to make the Volume read only from within containers
475
- sub_path: str | PurePosixPath (optional) - only mount this sub_path directory from the Volume.
474
+ `read_only`: bool (optional) - set this to True to make the Volume read only from within containers
475
+ `sub_path`: str | PurePosixPath (optional) - only mount this sub_path directory from the Volume.
476
476
  If the directory doesn't exist in the Volume, it will be created when the container starts up
477
477
 
478
478
 
@@ -519,8 +519,8 @@ class _Volume(modal._object._Object):
519
519
  Note that these options are not properties stored with the Volume itself - they can be individually configured
520
520
  for each Volume - container association.
521
521
 
522
- read_only: bool (optional) - set this to True to make the Volume read only from within containers
523
- sub_path: str | PurePosixPath (optional) - only mount this sub_path directory from the Volume.
522
+ `read_only`: bool (optional) - set this to True to make the Volume read only from within containers
523
+ `sub_path`: str | PurePosixPath (optional) - only mount this sub_path directory from the Volume.
524
524
  If the directory doesn't exist in the Volume, it will be created when the container starts up
525
525
 
526
526
 
@@ -879,8 +879,8 @@ class Volume(modal.object.Object):
879
879
  Note that these options are not properties stored with the Volume itself - they can be individually configured
880
880
  for each Volume - container association.
881
881
 
882
- read_only: bool (optional) - set this to True to make the Volume read only from within containers
883
- sub_path: str | PurePosixPath (optional) - only mount this sub_path directory from the Volume.
882
+ `read_only`: bool (optional) - set this to True to make the Volume read only from within containers
883
+ `sub_path`: str | PurePosixPath (optional) - only mount this sub_path directory from the Volume.
884
884
  If the directory doesn't exist in the Volume, it will be created when the container starts up
885
885
 
886
886
 
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: modal
3
- Version: 1.4.4.dev3
3
+ Version: 1.4.4.dev5
4
4
  Summary: Python client library for Modal
5
5
  Author-email: Modal Labs <support@modal.com>
6
6
  License-Expression: Apache-2.0