modal 1.4.3.dev24__tar.gz → 1.4.3.dev25__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 (213) hide show
  1. {modal-1.4.3.dev24 → modal-1.4.3.dev25}/PKG-INFO +1 -1
  2. {modal-1.4.3.dev24 → modal-1.4.3.dev25}/modal/client.pyi +2 -2
  3. {modal-1.4.3.dev24 → modal-1.4.3.dev25}/modal/functions.pyi +6 -6
  4. {modal-1.4.3.dev24 → modal-1.4.3.dev25}/modal/sandbox.py +11 -6
  5. {modal-1.4.3.dev24 → modal-1.4.3.dev25}/modal/sandbox_fs.py +2 -2
  6. {modal-1.4.3.dev24 → modal-1.4.3.dev25}/modal/sandbox_fs.pyi +6 -6
  7. {modal-1.4.3.dev24 → modal-1.4.3.dev25}/modal.egg-info/PKG-INFO +1 -1
  8. {modal-1.4.3.dev24 → modal-1.4.3.dev25}/modal_proto/api_grpc.py +16 -0
  9. {modal-1.4.3.dev24 → modal-1.4.3.dev25}/modal_proto/api_pb2.py +874 -777
  10. {modal-1.4.3.dev24 → modal-1.4.3.dev25}/modal_proto/api_pb2.pyi +213 -0
  11. {modal-1.4.3.dev24 → modal-1.4.3.dev25}/modal_proto/api_pb2_grpc.py +34 -0
  12. {modal-1.4.3.dev24 → modal-1.4.3.dev25}/modal_proto/api_pb2_grpc.pyi +12 -0
  13. {modal-1.4.3.dev24 → modal-1.4.3.dev25}/modal_proto/modal_api_grpc.py +1 -0
  14. {modal-1.4.3.dev24 → modal-1.4.3.dev25}/modal_version/__init__.py +1 -1
  15. {modal-1.4.3.dev24 → modal-1.4.3.dev25}/LICENSE +0 -0
  16. {modal-1.4.3.dev24 → modal-1.4.3.dev25}/README.md +0 -0
  17. {modal-1.4.3.dev24 → modal-1.4.3.dev25}/modal/__init__.py +0 -0
  18. {modal-1.4.3.dev24 → modal-1.4.3.dev25}/modal/__main__.py +0 -0
  19. {modal-1.4.3.dev24 → modal-1.4.3.dev25}/modal/_billing.py +0 -0
  20. {modal-1.4.3.dev24 → modal-1.4.3.dev25}/modal/_clustered_functions.py +0 -0
  21. {modal-1.4.3.dev24 → modal-1.4.3.dev25}/modal/_clustered_functions.pyi +0 -0
  22. {modal-1.4.3.dev24 → modal-1.4.3.dev25}/modal/_container_entrypoint.py +0 -0
  23. {modal-1.4.3.dev24 → modal-1.4.3.dev25}/modal/_environments.py +0 -0
  24. {modal-1.4.3.dev24 → modal-1.4.3.dev25}/modal/_functions.py +0 -0
  25. {modal-1.4.3.dev24 → modal-1.4.3.dev25}/modal/_grpc_client.py +0 -0
  26. {modal-1.4.3.dev24 → modal-1.4.3.dev25}/modal/_ipython.py +0 -0
  27. {modal-1.4.3.dev24 → modal-1.4.3.dev25}/modal/_load_context.py +0 -0
  28. {modal-1.4.3.dev24 → modal-1.4.3.dev25}/modal/_location.py +0 -0
  29. {modal-1.4.3.dev24 → modal-1.4.3.dev25}/modal/_logs.py +0 -0
  30. {modal-1.4.3.dev24 → modal-1.4.3.dev25}/modal/_object.py +0 -0
  31. {modal-1.4.3.dev24 → modal-1.4.3.dev25}/modal/_output/__init__.py +0 -0
  32. {modal-1.4.3.dev24 → modal-1.4.3.dev25}/modal/_output/manager.py +0 -0
  33. {modal-1.4.3.dev24 → modal-1.4.3.dev25}/modal/_output/pty.py +0 -0
  34. {modal-1.4.3.dev24 → modal-1.4.3.dev25}/modal/_output/rich.py +0 -0
  35. {modal-1.4.3.dev24 → modal-1.4.3.dev25}/modal/_output/status.py +0 -0
  36. {modal-1.4.3.dev24 → modal-1.4.3.dev25}/modal/_partial_function.py +0 -0
  37. {modal-1.4.3.dev24 → modal-1.4.3.dev25}/modal/_resolver.py +0 -0
  38. {modal-1.4.3.dev24 → modal-1.4.3.dev25}/modal/_resources.py +0 -0
  39. {modal-1.4.3.dev24 → modal-1.4.3.dev25}/modal/_runtime/__init__.py +0 -0
  40. {modal-1.4.3.dev24 → modal-1.4.3.dev25}/modal/_runtime/asgi.py +0 -0
  41. {modal-1.4.3.dev24 → modal-1.4.3.dev25}/modal/_runtime/container_io_manager.py +0 -0
  42. {modal-1.4.3.dev24 → modal-1.4.3.dev25}/modal/_runtime/container_io_manager.pyi +0 -0
  43. {modal-1.4.3.dev24 → modal-1.4.3.dev25}/modal/_runtime/execution_context.py +0 -0
  44. {modal-1.4.3.dev24 → modal-1.4.3.dev25}/modal/_runtime/execution_context.pyi +0 -0
  45. {modal-1.4.3.dev24 → modal-1.4.3.dev25}/modal/_runtime/gpu_memory_snapshot.py +0 -0
  46. {modal-1.4.3.dev24 → modal-1.4.3.dev25}/modal/_runtime/telemetry.py +0 -0
  47. {modal-1.4.3.dev24 → modal-1.4.3.dev25}/modal/_runtime/user_code_event_loop.py +0 -0
  48. {modal-1.4.3.dev24 → modal-1.4.3.dev25}/modal/_runtime/user_code_imports.py +0 -0
  49. {modal-1.4.3.dev24 → modal-1.4.3.dev25}/modal/_serialization.py +0 -0
  50. {modal-1.4.3.dev24 → modal-1.4.3.dev25}/modal/_server.py +0 -0
  51. {modal-1.4.3.dev24 → modal-1.4.3.dev25}/modal/_traceback.py +0 -0
  52. {modal-1.4.3.dev24 → modal-1.4.3.dev25}/modal/_tunnel.py +0 -0
  53. {modal-1.4.3.dev24 → modal-1.4.3.dev25}/modal/_tunnel.pyi +0 -0
  54. {modal-1.4.3.dev24 → modal-1.4.3.dev25}/modal/_type_manager.py +0 -0
  55. {modal-1.4.3.dev24 → modal-1.4.3.dev25}/modal/_utils/__init__.py +0 -0
  56. {modal-1.4.3.dev24 → modal-1.4.3.dev25}/modal/_utils/app_utils.py +0 -0
  57. {modal-1.4.3.dev24 → modal-1.4.3.dev25}/modal/_utils/async_utils.py +0 -0
  58. {modal-1.4.3.dev24 → modal-1.4.3.dev25}/modal/_utils/auth_token_manager.py +0 -0
  59. {modal-1.4.3.dev24 → modal-1.4.3.dev25}/modal/_utils/blob_utils.py +0 -0
  60. {modal-1.4.3.dev24 → modal-1.4.3.dev25}/modal/_utils/browser_utils.py +0 -0
  61. {modal-1.4.3.dev24 → modal-1.4.3.dev25}/modal/_utils/bytes_io_segment_payload.py +0 -0
  62. {modal-1.4.3.dev24 → modal-1.4.3.dev25}/modal/_utils/deprecation.py +0 -0
  63. {modal-1.4.3.dev24 → modal-1.4.3.dev25}/modal/_utils/docker_utils.py +0 -0
  64. {modal-1.4.3.dev24 → modal-1.4.3.dev25}/modal/_utils/function_utils.py +0 -0
  65. {modal-1.4.3.dev24 → modal-1.4.3.dev25}/modal/_utils/git_utils.py +0 -0
  66. {modal-1.4.3.dev24 → modal-1.4.3.dev25}/modal/_utils/grpc_testing.py +0 -0
  67. {modal-1.4.3.dev24 → modal-1.4.3.dev25}/modal/_utils/grpc_utils.py +0 -0
  68. {modal-1.4.3.dev24 → modal-1.4.3.dev25}/modal/_utils/hash_utils.py +0 -0
  69. {modal-1.4.3.dev24 → modal-1.4.3.dev25}/modal/_utils/http_utils.py +0 -0
  70. {modal-1.4.3.dev24 → modal-1.4.3.dev25}/modal/_utils/jwt_utils.py +0 -0
  71. {modal-1.4.3.dev24 → modal-1.4.3.dev25}/modal/_utils/logger.py +0 -0
  72. {modal-1.4.3.dev24 → modal-1.4.3.dev25}/modal/_utils/mount_utils.py +0 -0
  73. {modal-1.4.3.dev24 → modal-1.4.3.dev25}/modal/_utils/name_utils.py +0 -0
  74. {modal-1.4.3.dev24 → modal-1.4.3.dev25}/modal/_utils/package_utils.py +0 -0
  75. {modal-1.4.3.dev24 → modal-1.4.3.dev25}/modal/_utils/pattern_utils.py +0 -0
  76. {modal-1.4.3.dev24 → modal-1.4.3.dev25}/modal/_utils/rand_pb_testing.py +0 -0
  77. {modal-1.4.3.dev24 → modal-1.4.3.dev25}/modal/_utils/sandbox_fs_utils.py +0 -0
  78. {modal-1.4.3.dev24 → modal-1.4.3.dev25}/modal/_utils/shell_utils.py +0 -0
  79. {modal-1.4.3.dev24 → modal-1.4.3.dev25}/modal/_utils/task_command_router_client.py +0 -0
  80. {modal-1.4.3.dev24 → modal-1.4.3.dev25}/modal/_utils/time_utils.py +0 -0
  81. {modal-1.4.3.dev24 → modal-1.4.3.dev25}/modal/_vendor/__init__.py +0 -0
  82. {modal-1.4.3.dev24 → modal-1.4.3.dev25}/modal/_vendor/a2wsgi_wsgi.py +0 -0
  83. {modal-1.4.3.dev24 → modal-1.4.3.dev25}/modal/_vendor/cloudpickle.py +0 -0
  84. {modal-1.4.3.dev24 → modal-1.4.3.dev25}/modal/_vendor/tblib.py +0 -0
  85. {modal-1.4.3.dev24 → modal-1.4.3.dev25}/modal/_vendor/version.py +0 -0
  86. {modal-1.4.3.dev24 → modal-1.4.3.dev25}/modal/_watcher.py +0 -0
  87. {modal-1.4.3.dev24 → modal-1.4.3.dev25}/modal/app.py +0 -0
  88. {modal-1.4.3.dev24 → modal-1.4.3.dev25}/modal/app.pyi +0 -0
  89. {modal-1.4.3.dev24 → modal-1.4.3.dev25}/modal/billing.py +0 -0
  90. {modal-1.4.3.dev24 → modal-1.4.3.dev25}/modal/builder/2023.12.312.txt +0 -0
  91. {modal-1.4.3.dev24 → modal-1.4.3.dev25}/modal/builder/2023.12.txt +0 -0
  92. {modal-1.4.3.dev24 → modal-1.4.3.dev25}/modal/builder/2024.04.txt +0 -0
  93. {modal-1.4.3.dev24 → modal-1.4.3.dev25}/modal/builder/2024.10.txt +0 -0
  94. {modal-1.4.3.dev24 → modal-1.4.3.dev25}/modal/builder/2025.06.txt +0 -0
  95. {modal-1.4.3.dev24 → modal-1.4.3.dev25}/modal/builder/PREVIEW.txt +0 -0
  96. {modal-1.4.3.dev24 → modal-1.4.3.dev25}/modal/builder/README.md +0 -0
  97. {modal-1.4.3.dev24 → modal-1.4.3.dev25}/modal/builder/base-images.json +0 -0
  98. {modal-1.4.3.dev24 → modal-1.4.3.dev25}/modal/call_graph.py +0 -0
  99. {modal-1.4.3.dev24 → modal-1.4.3.dev25}/modal/cli/__init__.py +0 -0
  100. {modal-1.4.3.dev24 → modal-1.4.3.dev25}/modal/cli/_download.py +0 -0
  101. {modal-1.4.3.dev24 → modal-1.4.3.dev25}/modal/cli/_help.py +0 -0
  102. {modal-1.4.3.dev24 → modal-1.4.3.dev25}/modal/cli/_traceback.py +0 -0
  103. {modal-1.4.3.dev24 → modal-1.4.3.dev25}/modal/cli/app.py +0 -0
  104. {modal-1.4.3.dev24 → modal-1.4.3.dev25}/modal/cli/billing.py +0 -0
  105. {modal-1.4.3.dev24 → modal-1.4.3.dev25}/modal/cli/bootstrap.py +0 -0
  106. {modal-1.4.3.dev24 → modal-1.4.3.dev25}/modal/cli/changelog.py +0 -0
  107. {modal-1.4.3.dev24 → modal-1.4.3.dev25}/modal/cli/cluster.py +0 -0
  108. {modal-1.4.3.dev24 → modal-1.4.3.dev25}/modal/cli/config.py +0 -0
  109. {modal-1.4.3.dev24 → modal-1.4.3.dev25}/modal/cli/container.py +0 -0
  110. {modal-1.4.3.dev24 → modal-1.4.3.dev25}/modal/cli/dashboard.py +0 -0
  111. {modal-1.4.3.dev24 → modal-1.4.3.dev25}/modal/cli/dict.py +0 -0
  112. {modal-1.4.3.dev24 → modal-1.4.3.dev25}/modal/cli/entry_point.py +0 -0
  113. {modal-1.4.3.dev24 → modal-1.4.3.dev25}/modal/cli/environment.py +0 -0
  114. {modal-1.4.3.dev24 → modal-1.4.3.dev25}/modal/cli/import_refs.py +0 -0
  115. {modal-1.4.3.dev24 → modal-1.4.3.dev25}/modal/cli/launch.py +0 -0
  116. {modal-1.4.3.dev24 → modal-1.4.3.dev25}/modal/cli/logo.py +0 -0
  117. {modal-1.4.3.dev24 → modal-1.4.3.dev25}/modal/cli/network_file_system.py +0 -0
  118. {modal-1.4.3.dev24 → modal-1.4.3.dev25}/modal/cli/profile.py +0 -0
  119. {modal-1.4.3.dev24 → modal-1.4.3.dev25}/modal/cli/programs/__init__.py +0 -0
  120. {modal-1.4.3.dev24 → modal-1.4.3.dev25}/modal/cli/programs/run_jupyter.py +0 -0
  121. {modal-1.4.3.dev24 → modal-1.4.3.dev25}/modal/cli/programs/vscode.py +0 -0
  122. {modal-1.4.3.dev24 → modal-1.4.3.dev25}/modal/cli/queues.py +0 -0
  123. {modal-1.4.3.dev24 → modal-1.4.3.dev25}/modal/cli/run.py +0 -0
  124. {modal-1.4.3.dev24 → modal-1.4.3.dev25}/modal/cli/secret.py +0 -0
  125. {modal-1.4.3.dev24 → modal-1.4.3.dev25}/modal/cli/selector.py +0 -0
  126. {modal-1.4.3.dev24 → modal-1.4.3.dev25}/modal/cli/shell.py +0 -0
  127. {modal-1.4.3.dev24 → modal-1.4.3.dev25}/modal/cli/token.py +0 -0
  128. {modal-1.4.3.dev24 → modal-1.4.3.dev25}/modal/cli/utils.py +0 -0
  129. {modal-1.4.3.dev24 → modal-1.4.3.dev25}/modal/cli/volume.py +0 -0
  130. {modal-1.4.3.dev24 → modal-1.4.3.dev25}/modal/client.py +0 -0
  131. {modal-1.4.3.dev24 → modal-1.4.3.dev25}/modal/cloud_bucket_mount.py +0 -0
  132. {modal-1.4.3.dev24 → modal-1.4.3.dev25}/modal/cloud_bucket_mount.pyi +0 -0
  133. {modal-1.4.3.dev24 → modal-1.4.3.dev25}/modal/cls.py +0 -0
  134. {modal-1.4.3.dev24 → modal-1.4.3.dev25}/modal/cls.pyi +0 -0
  135. {modal-1.4.3.dev24 → modal-1.4.3.dev25}/modal/config.py +0 -0
  136. {modal-1.4.3.dev24 → modal-1.4.3.dev25}/modal/container_process.py +0 -0
  137. {modal-1.4.3.dev24 → modal-1.4.3.dev25}/modal/container_process.pyi +0 -0
  138. {modal-1.4.3.dev24 → modal-1.4.3.dev25}/modal/dict.py +0 -0
  139. {modal-1.4.3.dev24 → modal-1.4.3.dev25}/modal/dict.pyi +0 -0
  140. {modal-1.4.3.dev24 → modal-1.4.3.dev25}/modal/environments.py +0 -0
  141. {modal-1.4.3.dev24 → modal-1.4.3.dev25}/modal/environments.pyi +0 -0
  142. {modal-1.4.3.dev24 → modal-1.4.3.dev25}/modal/exception.py +0 -0
  143. {modal-1.4.3.dev24 → modal-1.4.3.dev25}/modal/experimental/__init__.py +0 -0
  144. {modal-1.4.3.dev24 → modal-1.4.3.dev25}/modal/experimental/flash.py +0 -0
  145. {modal-1.4.3.dev24 → modal-1.4.3.dev25}/modal/experimental/flash.pyi +0 -0
  146. {modal-1.4.3.dev24 → modal-1.4.3.dev25}/modal/experimental/ipython.py +0 -0
  147. {modal-1.4.3.dev24 → modal-1.4.3.dev25}/modal/file_io.py +0 -0
  148. {modal-1.4.3.dev24 → modal-1.4.3.dev25}/modal/file_io.pyi +0 -0
  149. {modal-1.4.3.dev24 → modal-1.4.3.dev25}/modal/file_pattern_matcher.py +0 -0
  150. {modal-1.4.3.dev24 → modal-1.4.3.dev25}/modal/functions.py +0 -0
  151. {modal-1.4.3.dev24 → modal-1.4.3.dev25}/modal/image.py +0 -0
  152. {modal-1.4.3.dev24 → modal-1.4.3.dev25}/modal/image.pyi +0 -0
  153. {modal-1.4.3.dev24 → modal-1.4.3.dev25}/modal/io_streams.py +0 -0
  154. {modal-1.4.3.dev24 → modal-1.4.3.dev25}/modal/io_streams.pyi +0 -0
  155. {modal-1.4.3.dev24 → modal-1.4.3.dev25}/modal/mount.py +0 -0
  156. {modal-1.4.3.dev24 → modal-1.4.3.dev25}/modal/mount.pyi +0 -0
  157. {modal-1.4.3.dev24 → modal-1.4.3.dev25}/modal/network_file_system.py +0 -0
  158. {modal-1.4.3.dev24 → modal-1.4.3.dev25}/modal/network_file_system.pyi +0 -0
  159. {modal-1.4.3.dev24 → modal-1.4.3.dev25}/modal/object.py +0 -0
  160. {modal-1.4.3.dev24 → modal-1.4.3.dev25}/modal/object.pyi +0 -0
  161. {modal-1.4.3.dev24 → modal-1.4.3.dev25}/modal/output.py +0 -0
  162. {modal-1.4.3.dev24 → modal-1.4.3.dev25}/modal/parallel_map.py +0 -0
  163. {modal-1.4.3.dev24 → modal-1.4.3.dev25}/modal/parallel_map.pyi +0 -0
  164. {modal-1.4.3.dev24 → modal-1.4.3.dev25}/modal/partial_function.py +0 -0
  165. {modal-1.4.3.dev24 → modal-1.4.3.dev25}/modal/partial_function.pyi +0 -0
  166. {modal-1.4.3.dev24 → modal-1.4.3.dev25}/modal/proxy.py +0 -0
  167. {modal-1.4.3.dev24 → modal-1.4.3.dev25}/modal/proxy.pyi +0 -0
  168. {modal-1.4.3.dev24 → modal-1.4.3.dev25}/modal/py.typed +0 -0
  169. {modal-1.4.3.dev24 → modal-1.4.3.dev25}/modal/queue.py +0 -0
  170. {modal-1.4.3.dev24 → modal-1.4.3.dev25}/modal/queue.pyi +0 -0
  171. {modal-1.4.3.dev24 → modal-1.4.3.dev25}/modal/retries.py +0 -0
  172. {modal-1.4.3.dev24 → modal-1.4.3.dev25}/modal/runner.py +0 -0
  173. {modal-1.4.3.dev24 → modal-1.4.3.dev25}/modal/runner.pyi +0 -0
  174. {modal-1.4.3.dev24 → modal-1.4.3.dev25}/modal/running_app.py +0 -0
  175. {modal-1.4.3.dev24 → modal-1.4.3.dev25}/modal/sandbox.pyi +0 -0
  176. {modal-1.4.3.dev24 → modal-1.4.3.dev25}/modal/schedule.py +0 -0
  177. {modal-1.4.3.dev24 → modal-1.4.3.dev25}/modal/scheduler_placement.py +0 -0
  178. {modal-1.4.3.dev24 → modal-1.4.3.dev25}/modal/secret.py +0 -0
  179. {modal-1.4.3.dev24 → modal-1.4.3.dev25}/modal/secret.pyi +0 -0
  180. {modal-1.4.3.dev24 → modal-1.4.3.dev25}/modal/server.py +0 -0
  181. {modal-1.4.3.dev24 → modal-1.4.3.dev25}/modal/server.pyi +0 -0
  182. {modal-1.4.3.dev24 → modal-1.4.3.dev25}/modal/serving.py +0 -0
  183. {modal-1.4.3.dev24 → modal-1.4.3.dev25}/modal/serving.pyi +0 -0
  184. {modal-1.4.3.dev24 → modal-1.4.3.dev25}/modal/snapshot.py +0 -0
  185. {modal-1.4.3.dev24 → modal-1.4.3.dev25}/modal/snapshot.pyi +0 -0
  186. {modal-1.4.3.dev24 → modal-1.4.3.dev25}/modal/stream_type.py +0 -0
  187. {modal-1.4.3.dev24 → modal-1.4.3.dev25}/modal/token_flow.py +0 -0
  188. {modal-1.4.3.dev24 → modal-1.4.3.dev25}/modal/token_flow.pyi +0 -0
  189. {modal-1.4.3.dev24 → modal-1.4.3.dev25}/modal/volume.py +0 -0
  190. {modal-1.4.3.dev24 → modal-1.4.3.dev25}/modal/volume.pyi +0 -0
  191. {modal-1.4.3.dev24 → modal-1.4.3.dev25}/modal.egg-info/SOURCES.txt +0 -0
  192. {modal-1.4.3.dev24 → modal-1.4.3.dev25}/modal.egg-info/dependency_links.txt +0 -0
  193. {modal-1.4.3.dev24 → modal-1.4.3.dev25}/modal.egg-info/entry_points.txt +0 -0
  194. {modal-1.4.3.dev24 → modal-1.4.3.dev25}/modal.egg-info/requires.txt +0 -0
  195. {modal-1.4.3.dev24 → modal-1.4.3.dev25}/modal.egg-info/top_level.txt +0 -0
  196. {modal-1.4.3.dev24 → modal-1.4.3.dev25}/modal_docs/__init__.py +0 -0
  197. {modal-1.4.3.dev24 → modal-1.4.3.dev25}/modal_docs/gen_cli_docs.py +0 -0
  198. {modal-1.4.3.dev24 → modal-1.4.3.dev25}/modal_docs/gen_cli_docs_main.py +0 -0
  199. {modal-1.4.3.dev24 → modal-1.4.3.dev25}/modal_docs/gen_reference_docs.py +0 -0
  200. {modal-1.4.3.dev24 → modal-1.4.3.dev25}/modal_docs/gen_reference_docs_main.py +0 -0
  201. {modal-1.4.3.dev24 → modal-1.4.3.dev25}/modal_docs/mdmd/__init__.py +0 -0
  202. {modal-1.4.3.dev24 → modal-1.4.3.dev25}/modal_docs/mdmd/mdmd.py +0 -0
  203. {modal-1.4.3.dev24 → modal-1.4.3.dev25}/modal_docs/mdmd/signatures.py +0 -0
  204. {modal-1.4.3.dev24 → modal-1.4.3.dev25}/modal_proto/__init__.py +0 -0
  205. {modal-1.4.3.dev24 → modal-1.4.3.dev25}/modal_proto/py.typed +0 -0
  206. {modal-1.4.3.dev24 → modal-1.4.3.dev25}/modal_proto/task_command_router_grpc.py +0 -0
  207. {modal-1.4.3.dev24 → modal-1.4.3.dev25}/modal_proto/task_command_router_pb2.py +0 -0
  208. {modal-1.4.3.dev24 → modal-1.4.3.dev25}/modal_proto/task_command_router_pb2.pyi +0 -0
  209. {modal-1.4.3.dev24 → modal-1.4.3.dev25}/modal_proto/task_command_router_pb2_grpc.py +0 -0
  210. {modal-1.4.3.dev24 → modal-1.4.3.dev25}/modal_proto/task_command_router_pb2_grpc.pyi +0 -0
  211. {modal-1.4.3.dev24 → modal-1.4.3.dev25}/modal_version/__main__.py +0 -0
  212. {modal-1.4.3.dev24 → modal-1.4.3.dev25}/pyproject.toml +0 -0
  213. {modal-1.4.3.dev24 → modal-1.4.3.dev25}/setup.cfg +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: modal
3
- Version: 1.4.3.dev24
3
+ Version: 1.4.3.dev25
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.3.dev24",
38
+ version: str = "1.4.3.dev25",
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.3.dev24",
178
+ version: str = "1.4.3.dev25",
179
179
  ):
180
180
  """mdmd:hidden
181
181
  The Modal client object is not intended to be instantiated directly by users.
@@ -347,7 +347,7 @@ class Function(
347
347
 
348
348
  _call_generator: ___call_generator_spec
349
349
 
350
- class __remote_spec(typing_extensions.Protocol[ReturnType_INNER, P_INNER]):
350
+ class __remote_spec(typing_extensions.Protocol[P_INNER, ReturnType_INNER]):
351
351
  def __call__(self, /, *args: P_INNER.args, **kwargs: P_INNER.kwargs) -> ReturnType_INNER:
352
352
  """Calls the function remotely, executing it with the given arguments and returning the execution's result."""
353
353
  ...
@@ -356,7 +356,7 @@ class Function(
356
356
  """Calls the function remotely, executing it with the given arguments and returning the execution's result."""
357
357
  ...
358
358
 
359
- remote: __remote_spec[modal._functions.ReturnType, modal._functions.P]
359
+ remote: __remote_spec[modal._functions.P, modal._functions.ReturnType]
360
360
 
361
361
  class __remote_gen_spec(typing_extensions.Protocol):
362
362
  def __call__(self, /, *args, **kwargs) -> typing.Generator[typing.Any, None, None]:
@@ -383,7 +383,7 @@ class Function(
383
383
  """
384
384
  ...
385
385
 
386
- class ___experimental_spawn_spec(typing_extensions.Protocol[ReturnType_INNER, P_INNER]):
386
+ class ___experimental_spawn_spec(typing_extensions.Protocol[P_INNER, ReturnType_INNER]):
387
387
  def __call__(self, /, *args: P_INNER.args, **kwargs: P_INNER.kwargs) -> FunctionCall[ReturnType_INNER]:
388
388
  """[Experimental] Calls the function with the given arguments, without waiting for the results.
389
389
 
@@ -406,7 +406,7 @@ class Function(
406
406
  """
407
407
  ...
408
408
 
409
- _experimental_spawn: ___experimental_spawn_spec[modal._functions.ReturnType, modal._functions.P]
409
+ _experimental_spawn: ___experimental_spawn_spec[modal._functions.P, modal._functions.ReturnType]
410
410
 
411
411
  class ___spawn_map_inner_spec(typing_extensions.Protocol[P_INNER]):
412
412
  def __call__(self, /, *args: P_INNER.args, **kwargs: P_INNER.kwargs) -> None: ...
@@ -414,7 +414,7 @@ class Function(
414
414
 
415
415
  _spawn_map_inner: ___spawn_map_inner_spec[modal._functions.P]
416
416
 
417
- class __spawn_spec(typing_extensions.Protocol[ReturnType_INNER, P_INNER]):
417
+ class __spawn_spec(typing_extensions.Protocol[P_INNER, ReturnType_INNER]):
418
418
  def __call__(self, /, *args: P_INNER.args, **kwargs: P_INNER.kwargs) -> FunctionCall[ReturnType_INNER]:
419
419
  """Calls the function with the given arguments, without waiting for the results.
420
420
 
@@ -435,7 +435,7 @@ class Function(
435
435
  """
436
436
  ...
437
437
 
438
- spawn: __spawn_spec[modal._functions.ReturnType, modal._functions.P]
438
+ spawn: __spawn_spec[modal._functions.P, modal._functions.ReturnType]
439
439
 
440
440
  def get_raw_f(self) -> collections.abc.Callable[..., typing.Any]:
441
441
  """Return the inner Python object wrapped by this Modal Function."""
@@ -37,9 +37,11 @@ from .client import _Client
37
37
  from .container_process import _ContainerProcess
38
38
  from .exception import (
39
39
  ClientClosed,
40
+ ConflictError,
40
41
  Error,
41
42
  ExecutionError,
42
43
  InvalidError,
44
+ NotFoundError,
43
45
  SandboxTerminatedError,
44
46
  SandboxTimeoutError,
45
47
  TimeoutError,
@@ -1261,12 +1263,15 @@ class _Sandbox(_Object, type_prefix="sb"):
1261
1263
 
1262
1264
  async def _get_command_router_client(self, task_id: str) -> TaskCommandRouterClient:
1263
1265
  if self._command_router_client is None:
1264
- if self._is_v2:
1265
- self._command_router_client = await TaskCommandRouterClient.init_v2(
1266
- self._client, self.object_id, task_id
1267
- )
1268
- else:
1269
- self._command_router_client = await TaskCommandRouterClient.init(self._client, task_id)
1266
+ try:
1267
+ if self._is_v2:
1268
+ self._command_router_client = await TaskCommandRouterClient.init_v2(
1269
+ self._client, self.object_id, task_id
1270
+ )
1271
+ else:
1272
+ self._command_router_client = await TaskCommandRouterClient.init(self._client, task_id)
1273
+ except (ConflictError, NotFoundError):
1274
+ raise NotFoundError("Sandbox already finished")
1270
1275
  return self._command_router_client
1271
1276
 
1272
1277
  @property
@@ -112,7 +112,7 @@ class _SandboxFilesystem:
112
112
 
113
113
  **Usage**
114
114
 
115
- ```python fixture:sandbox
115
+ ```python fixture:sandbox fixture:tmpdir
116
116
  import tempfile
117
117
  from pathlib import Path
118
118
 
@@ -173,7 +173,7 @@ class _SandboxFilesystem:
173
173
 
174
174
  **Usage**
175
175
 
176
- ```python fixture:sandbox
176
+ ```python fixture:sandbox fixture:tmpdir
177
177
  sandbox.filesystem.write_text("Hello, world!\\n", "/tmp/hello.txt")
178
178
  sandbox.filesystem.copy_to_local("/tmp/hello.txt", "/tmp/local-hello.txt")
179
179
  ```
@@ -101,7 +101,7 @@ class _SandboxFilesystem:
101
101
 
102
102
  **Usage**
103
103
 
104
- ```python fixture:sandbox
104
+ ```python fixture:sandbox fixture:tmpdir
105
105
  import tempfile
106
106
  from pathlib import Path
107
107
 
@@ -131,7 +131,7 @@ class _SandboxFilesystem:
131
131
 
132
132
  **Usage**
133
133
 
134
- ```python fixture:sandbox
134
+ ```python fixture:sandbox fixture:tmpdir
135
135
  sandbox.filesystem.write_text("Hello, world!\n", "/tmp/hello.txt")
136
136
  sandbox.filesystem.copy_to_local("/tmp/hello.txt", "/tmp/local-hello.txt")
137
137
  ```
@@ -365,7 +365,7 @@ class SandboxFilesystem:
365
365
 
366
366
  **Usage**
367
367
 
368
- ```python fixture:sandbox
368
+ ```python fixture:sandbox fixture:tmpdir
369
369
  import tempfile
370
370
  from pathlib import Path
371
371
 
@@ -395,7 +395,7 @@ class SandboxFilesystem:
395
395
 
396
396
  **Usage**
397
397
 
398
- ```python fixture:sandbox
398
+ ```python fixture:sandbox fixture:tmpdir
399
399
  import tempfile
400
400
  from pathlib import Path
401
401
 
@@ -428,7 +428,7 @@ class SandboxFilesystem:
428
428
 
429
429
  **Usage**
430
430
 
431
- ```python fixture:sandbox
431
+ ```python fixture:sandbox fixture:tmpdir
432
432
  sandbox.filesystem.write_text("Hello, world!\n", "/tmp/hello.txt")
433
433
  sandbox.filesystem.copy_to_local("/tmp/hello.txt", "/tmp/local-hello.txt")
434
434
  ```
@@ -454,7 +454,7 @@ class SandboxFilesystem:
454
454
 
455
455
  **Usage**
456
456
 
457
- ```python fixture:sandbox
457
+ ```python fixture:sandbox fixture:tmpdir
458
458
  sandbox.filesystem.write_text("Hello, world!\n", "/tmp/hello.txt")
459
459
  sandbox.filesystem.copy_to_local("/tmp/hello.txt", "/tmp/local-hello.txt")
460
460
  ```
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: modal
3
- Version: 1.4.3.dev24
3
+ Version: 1.4.3.dev25
4
4
  Summary: Python client library for Modal
5
5
  Author-email: Modal Labs <support@modal.com>
6
6
  License-Expression: Apache-2.0
@@ -259,6 +259,10 @@ class ModalClientBase(abc.ABC):
259
259
  async def DomainList(self, stream: 'grpclib.server.Stream[modal_proto.api_pb2.DomainListRequest, modal_proto.api_pb2.DomainListResponse]') -> None:
260
260
  pass
261
261
 
262
+ @abc.abstractmethod
263
+ async def EndpointCreate(self, stream: 'grpclib.server.Stream[modal_proto.api_pb2.EndpointCreateRequest, modal_proto.api_pb2.EndpointCreateResponse]') -> None:
264
+ pass
265
+
262
266
  @abc.abstractmethod
263
267
  async def EnvironmentCreate(self, stream: 'grpclib.server.Stream[modal_proto.api_pb2.EnvironmentCreateRequest, google.protobuf.empty_pb2.Empty]') -> None:
264
268
  pass
@@ -1173,6 +1177,12 @@ class ModalClientBase(abc.ABC):
1173
1177
  modal_proto.api_pb2.DomainListRequest,
1174
1178
  modal_proto.api_pb2.DomainListResponse,
1175
1179
  ),
1180
+ '/modal.client.ModalClient/EndpointCreate': grpclib.const.Handler(
1181
+ self.EndpointCreate,
1182
+ grpclib.const.Cardinality.UNARY_UNARY,
1183
+ modal_proto.api_pb2.EndpointCreateRequest,
1184
+ modal_proto.api_pb2.EndpointCreateResponse,
1185
+ ),
1176
1186
  '/modal.client.ModalClient/EnvironmentCreate': grpclib.const.Handler(
1177
1187
  self.EnvironmentCreate,
1178
1188
  grpclib.const.Cardinality.UNARY_UNARY,
@@ -2367,6 +2377,12 @@ class ModalClientStub:
2367
2377
  modal_proto.api_pb2.DomainListRequest,
2368
2378
  modal_proto.api_pb2.DomainListResponse,
2369
2379
  )
2380
+ self.EndpointCreate = grpclib.client.UnaryUnaryMethod(
2381
+ channel,
2382
+ '/modal.client.ModalClient/EndpointCreate',
2383
+ modal_proto.api_pb2.EndpointCreateRequest,
2384
+ modal_proto.api_pb2.EndpointCreateResponse,
2385
+ )
2370
2386
  self.EnvironmentCreate = grpclib.client.UnaryUnaryMethod(
2371
2387
  channel,
2372
2388
  '/modal.client.ModalClient/EnvironmentCreate',