modal 1.4.4.dev2__tar.gz → 1.4.4.dev3__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.dev2 → modal-1.4.4.dev3}/PKG-INFO +1 -1
  2. {modal-1.4.4.dev2 → modal-1.4.4.dev3}/modal/_utils/task_command_router_client.py +16 -9
  3. {modal-1.4.4.dev2 → modal-1.4.4.dev3}/modal/client.pyi +2 -2
  4. {modal-1.4.4.dev2 → modal-1.4.4.dev3}/modal/functions.pyi +6 -6
  5. {modal-1.4.4.dev2 → modal-1.4.4.dev3}/modal.egg-info/PKG-INFO +1 -1
  6. {modal-1.4.4.dev2 → modal-1.4.4.dev3}/modal_proto/api_grpc.py +16 -0
  7. {modal-1.4.4.dev2 → modal-1.4.4.dev3}/modal_proto/api_pb2.py +831 -781
  8. {modal-1.4.4.dev2 → modal-1.4.4.dev3}/modal_proto/api_pb2.pyi +79 -2
  9. {modal-1.4.4.dev2 → modal-1.4.4.dev3}/modal_proto/api_pb2_grpc.py +33 -0
  10. {modal-1.4.4.dev2 → modal-1.4.4.dev3}/modal_proto/api_pb2_grpc.pyi +10 -0
  11. {modal-1.4.4.dev2 → modal-1.4.4.dev3}/modal_proto/modal_api_grpc.py +1 -0
  12. {modal-1.4.4.dev2 → modal-1.4.4.dev3}/modal_version/__init__.py +1 -1
  13. {modal-1.4.4.dev2 → modal-1.4.4.dev3}/LICENSE +0 -0
  14. {modal-1.4.4.dev2 → modal-1.4.4.dev3}/README.md +0 -0
  15. {modal-1.4.4.dev2 → modal-1.4.4.dev3}/modal/__init__.py +0 -0
  16. {modal-1.4.4.dev2 → modal-1.4.4.dev3}/modal/__main__.py +0 -0
  17. {modal-1.4.4.dev2 → modal-1.4.4.dev3}/modal/_billing.py +0 -0
  18. {modal-1.4.4.dev2 → modal-1.4.4.dev3}/modal/_clustered_functions.py +0 -0
  19. {modal-1.4.4.dev2 → modal-1.4.4.dev3}/modal/_clustered_functions.pyi +0 -0
  20. {modal-1.4.4.dev2 → modal-1.4.4.dev3}/modal/_container_entrypoint.py +0 -0
  21. {modal-1.4.4.dev2 → modal-1.4.4.dev3}/modal/_environments.py +0 -0
  22. {modal-1.4.4.dev2 → modal-1.4.4.dev3}/modal/_function_variants.py +0 -0
  23. {modal-1.4.4.dev2 → modal-1.4.4.dev3}/modal/_functions.py +0 -0
  24. {modal-1.4.4.dev2 → modal-1.4.4.dev3}/modal/_grpc_client.py +0 -0
  25. {modal-1.4.4.dev2 → modal-1.4.4.dev3}/modal/_ipython.py +0 -0
  26. {modal-1.4.4.dev2 → modal-1.4.4.dev3}/modal/_load_context.py +0 -0
  27. {modal-1.4.4.dev2 → modal-1.4.4.dev3}/modal/_location.py +0 -0
  28. {modal-1.4.4.dev2 → modal-1.4.4.dev3}/modal/_logs.py +0 -0
  29. {modal-1.4.4.dev2 → modal-1.4.4.dev3}/modal/_object.py +0 -0
  30. {modal-1.4.4.dev2 → modal-1.4.4.dev3}/modal/_output/__init__.py +0 -0
  31. {modal-1.4.4.dev2 → modal-1.4.4.dev3}/modal/_output/manager.py +0 -0
  32. {modal-1.4.4.dev2 → modal-1.4.4.dev3}/modal/_output/pty.py +0 -0
  33. {modal-1.4.4.dev2 → modal-1.4.4.dev3}/modal/_output/rich.py +0 -0
  34. {modal-1.4.4.dev2 → modal-1.4.4.dev3}/modal/_output/status.py +0 -0
  35. {modal-1.4.4.dev2 → modal-1.4.4.dev3}/modal/_partial_function.py +0 -0
  36. {modal-1.4.4.dev2 → modal-1.4.4.dev3}/modal/_resolver.py +0 -0
  37. {modal-1.4.4.dev2 → modal-1.4.4.dev3}/modal/_resources.py +0 -0
  38. {modal-1.4.4.dev2 → modal-1.4.4.dev3}/modal/_runtime/__init__.py +0 -0
  39. {modal-1.4.4.dev2 → modal-1.4.4.dev3}/modal/_runtime/asgi.py +0 -0
  40. {modal-1.4.4.dev2 → modal-1.4.4.dev3}/modal/_runtime/container_io_manager.py +0 -0
  41. {modal-1.4.4.dev2 → modal-1.4.4.dev3}/modal/_runtime/container_io_manager.pyi +0 -0
  42. {modal-1.4.4.dev2 → modal-1.4.4.dev3}/modal/_runtime/execution_context.py +0 -0
  43. {modal-1.4.4.dev2 → modal-1.4.4.dev3}/modal/_runtime/execution_context.pyi +0 -0
  44. {modal-1.4.4.dev2 → modal-1.4.4.dev3}/modal/_runtime/gpu_memory_snapshot.py +0 -0
  45. {modal-1.4.4.dev2 → modal-1.4.4.dev3}/modal/_runtime/telemetry.py +0 -0
  46. {modal-1.4.4.dev2 → modal-1.4.4.dev3}/modal/_runtime/user_code_event_loop.py +0 -0
  47. {modal-1.4.4.dev2 → modal-1.4.4.dev3}/modal/_runtime/user_code_imports.py +0 -0
  48. {modal-1.4.4.dev2 → modal-1.4.4.dev3}/modal/_serialization.py +0 -0
  49. {modal-1.4.4.dev2 → modal-1.4.4.dev3}/modal/_server.py +0 -0
  50. {modal-1.4.4.dev2 → modal-1.4.4.dev3}/modal/_traceback.py +0 -0
  51. {modal-1.4.4.dev2 → modal-1.4.4.dev3}/modal/_tunnel.py +0 -0
  52. {modal-1.4.4.dev2 → modal-1.4.4.dev3}/modal/_tunnel.pyi +0 -0
  53. {modal-1.4.4.dev2 → modal-1.4.4.dev3}/modal/_type_manager.py +0 -0
  54. {modal-1.4.4.dev2 → modal-1.4.4.dev3}/modal/_utils/__init__.py +0 -0
  55. {modal-1.4.4.dev2 → modal-1.4.4.dev3}/modal/_utils/app_utils.py +0 -0
  56. {modal-1.4.4.dev2 → modal-1.4.4.dev3}/modal/_utils/async_utils.py +0 -0
  57. {modal-1.4.4.dev2 → modal-1.4.4.dev3}/modal/_utils/auth_token_manager.py +0 -0
  58. {modal-1.4.4.dev2 → modal-1.4.4.dev3}/modal/_utils/blob_utils.py +0 -0
  59. {modal-1.4.4.dev2 → modal-1.4.4.dev3}/modal/_utils/browser_utils.py +0 -0
  60. {modal-1.4.4.dev2 → modal-1.4.4.dev3}/modal/_utils/bytes_io_segment_payload.py +0 -0
  61. {modal-1.4.4.dev2 → modal-1.4.4.dev3}/modal/_utils/deprecation.py +0 -0
  62. {modal-1.4.4.dev2 → modal-1.4.4.dev3}/modal/_utils/docker_utils.py +0 -0
  63. {modal-1.4.4.dev2 → modal-1.4.4.dev3}/modal/_utils/function_utils.py +0 -0
  64. {modal-1.4.4.dev2 → modal-1.4.4.dev3}/modal/_utils/git_utils.py +0 -0
  65. {modal-1.4.4.dev2 → modal-1.4.4.dev3}/modal/_utils/grpc_testing.py +0 -0
  66. {modal-1.4.4.dev2 → modal-1.4.4.dev3}/modal/_utils/grpc_utils.py +0 -0
  67. {modal-1.4.4.dev2 → modal-1.4.4.dev3}/modal/_utils/hash_utils.py +0 -0
  68. {modal-1.4.4.dev2 → modal-1.4.4.dev3}/modal/_utils/http_utils.py +0 -0
  69. {modal-1.4.4.dev2 → modal-1.4.4.dev3}/modal/_utils/jwt_utils.py +0 -0
  70. {modal-1.4.4.dev2 → modal-1.4.4.dev3}/modal/_utils/logger.py +0 -0
  71. {modal-1.4.4.dev2 → modal-1.4.4.dev3}/modal/_utils/mount_utils.py +0 -0
  72. {modal-1.4.4.dev2 → modal-1.4.4.dev3}/modal/_utils/name_utils.py +0 -0
  73. {modal-1.4.4.dev2 → modal-1.4.4.dev3}/modal/_utils/package_utils.py +0 -0
  74. {modal-1.4.4.dev2 → modal-1.4.4.dev3}/modal/_utils/pattern_utils.py +0 -0
  75. {modal-1.4.4.dev2 → modal-1.4.4.dev3}/modal/_utils/rand_pb_testing.py +0 -0
  76. {modal-1.4.4.dev2 → modal-1.4.4.dev3}/modal/_utils/sandbox_fs_utils.py +0 -0
  77. {modal-1.4.4.dev2 → modal-1.4.4.dev3}/modal/_utils/shell_utils.py +0 -0
  78. {modal-1.4.4.dev2 → modal-1.4.4.dev3}/modal/_utils/time_utils.py +0 -0
  79. {modal-1.4.4.dev2 → modal-1.4.4.dev3}/modal/_vendor/__init__.py +0 -0
  80. {modal-1.4.4.dev2 → modal-1.4.4.dev3}/modal/_vendor/a2wsgi_wsgi.py +0 -0
  81. {modal-1.4.4.dev2 → modal-1.4.4.dev3}/modal/_vendor/cloudpickle.py +0 -0
  82. {modal-1.4.4.dev2 → modal-1.4.4.dev3}/modal/_vendor/tblib.py +0 -0
  83. {modal-1.4.4.dev2 → modal-1.4.4.dev3}/modal/_vendor/version.py +0 -0
  84. {modal-1.4.4.dev2 → modal-1.4.4.dev3}/modal/_watcher.py +0 -0
  85. {modal-1.4.4.dev2 → modal-1.4.4.dev3}/modal/app.py +0 -0
  86. {modal-1.4.4.dev2 → modal-1.4.4.dev3}/modal/app.pyi +0 -0
  87. {modal-1.4.4.dev2 → modal-1.4.4.dev3}/modal/billing.py +0 -0
  88. {modal-1.4.4.dev2 → modal-1.4.4.dev3}/modal/builder/2023.12.312.txt +0 -0
  89. {modal-1.4.4.dev2 → modal-1.4.4.dev3}/modal/builder/2023.12.txt +0 -0
  90. {modal-1.4.4.dev2 → modal-1.4.4.dev3}/modal/builder/2024.04.txt +0 -0
  91. {modal-1.4.4.dev2 → modal-1.4.4.dev3}/modal/builder/2024.10.txt +0 -0
  92. {modal-1.4.4.dev2 → modal-1.4.4.dev3}/modal/builder/2025.06.txt +0 -0
  93. {modal-1.4.4.dev2 → modal-1.4.4.dev3}/modal/builder/PREVIEW.txt +0 -0
  94. {modal-1.4.4.dev2 → modal-1.4.4.dev3}/modal/builder/README.md +0 -0
  95. {modal-1.4.4.dev2 → modal-1.4.4.dev3}/modal/builder/base-images.json +0 -0
  96. {modal-1.4.4.dev2 → modal-1.4.4.dev3}/modal/call_graph.py +0 -0
  97. {modal-1.4.4.dev2 → modal-1.4.4.dev3}/modal/cli/__init__.py +0 -0
  98. {modal-1.4.4.dev2 → modal-1.4.4.dev3}/modal/cli/_download.py +0 -0
  99. {modal-1.4.4.dev2 → modal-1.4.4.dev3}/modal/cli/_help.py +0 -0
  100. {modal-1.4.4.dev2 → modal-1.4.4.dev3}/modal/cli/_traceback.py +0 -0
  101. {modal-1.4.4.dev2 → modal-1.4.4.dev3}/modal/cli/app.py +0 -0
  102. {modal-1.4.4.dev2 → modal-1.4.4.dev3}/modal/cli/billing.py +0 -0
  103. {modal-1.4.4.dev2 → modal-1.4.4.dev3}/modal/cli/bootstrap.py +0 -0
  104. {modal-1.4.4.dev2 → modal-1.4.4.dev3}/modal/cli/changelog.py +0 -0
  105. {modal-1.4.4.dev2 → modal-1.4.4.dev3}/modal/cli/cluster.py +0 -0
  106. {modal-1.4.4.dev2 → modal-1.4.4.dev3}/modal/cli/config.py +0 -0
  107. {modal-1.4.4.dev2 → modal-1.4.4.dev3}/modal/cli/container.py +0 -0
  108. {modal-1.4.4.dev2 → modal-1.4.4.dev3}/modal/cli/dashboard.py +0 -0
  109. {modal-1.4.4.dev2 → modal-1.4.4.dev3}/modal/cli/dict.py +0 -0
  110. {modal-1.4.4.dev2 → modal-1.4.4.dev3}/modal/cli/entry_point.py +0 -0
  111. {modal-1.4.4.dev2 → modal-1.4.4.dev3}/modal/cli/environment.py +0 -0
  112. {modal-1.4.4.dev2 → modal-1.4.4.dev3}/modal/cli/import_refs.py +0 -0
  113. {modal-1.4.4.dev2 → modal-1.4.4.dev3}/modal/cli/launch.py +0 -0
  114. {modal-1.4.4.dev2 → modal-1.4.4.dev3}/modal/cli/logo.py +0 -0
  115. {modal-1.4.4.dev2 → modal-1.4.4.dev3}/modal/cli/network_file_system.py +0 -0
  116. {modal-1.4.4.dev2 → modal-1.4.4.dev3}/modal/cli/profile.py +0 -0
  117. {modal-1.4.4.dev2 → modal-1.4.4.dev3}/modal/cli/programs/__init__.py +0 -0
  118. {modal-1.4.4.dev2 → modal-1.4.4.dev3}/modal/cli/programs/run_jupyter.py +0 -0
  119. {modal-1.4.4.dev2 → modal-1.4.4.dev3}/modal/cli/programs/vscode.py +0 -0
  120. {modal-1.4.4.dev2 → modal-1.4.4.dev3}/modal/cli/queues.py +0 -0
  121. {modal-1.4.4.dev2 → modal-1.4.4.dev3}/modal/cli/run.py +0 -0
  122. {modal-1.4.4.dev2 → modal-1.4.4.dev3}/modal/cli/secret.py +0 -0
  123. {modal-1.4.4.dev2 → modal-1.4.4.dev3}/modal/cli/selector.py +0 -0
  124. {modal-1.4.4.dev2 → modal-1.4.4.dev3}/modal/cli/shell.py +0 -0
  125. {modal-1.4.4.dev2 → modal-1.4.4.dev3}/modal/cli/token.py +0 -0
  126. {modal-1.4.4.dev2 → modal-1.4.4.dev3}/modal/cli/utils.py +0 -0
  127. {modal-1.4.4.dev2 → modal-1.4.4.dev3}/modal/cli/volume.py +0 -0
  128. {modal-1.4.4.dev2 → modal-1.4.4.dev3}/modal/client.py +0 -0
  129. {modal-1.4.4.dev2 → modal-1.4.4.dev3}/modal/cloud_bucket_mount.py +0 -0
  130. {modal-1.4.4.dev2 → modal-1.4.4.dev3}/modal/cloud_bucket_mount.pyi +0 -0
  131. {modal-1.4.4.dev2 → modal-1.4.4.dev3}/modal/cls.py +0 -0
  132. {modal-1.4.4.dev2 → modal-1.4.4.dev3}/modal/cls.pyi +0 -0
  133. {modal-1.4.4.dev2 → modal-1.4.4.dev3}/modal/config.py +0 -0
  134. {modal-1.4.4.dev2 → modal-1.4.4.dev3}/modal/container_process.py +0 -0
  135. {modal-1.4.4.dev2 → modal-1.4.4.dev3}/modal/container_process.pyi +0 -0
  136. {modal-1.4.4.dev2 → modal-1.4.4.dev3}/modal/dict.py +0 -0
  137. {modal-1.4.4.dev2 → modal-1.4.4.dev3}/modal/dict.pyi +0 -0
  138. {modal-1.4.4.dev2 → modal-1.4.4.dev3}/modal/environments.py +0 -0
  139. {modal-1.4.4.dev2 → modal-1.4.4.dev3}/modal/environments.pyi +0 -0
  140. {modal-1.4.4.dev2 → modal-1.4.4.dev3}/modal/exception.py +0 -0
  141. {modal-1.4.4.dev2 → modal-1.4.4.dev3}/modal/experimental/__init__.py +0 -0
  142. {modal-1.4.4.dev2 → modal-1.4.4.dev3}/modal/experimental/flash.py +0 -0
  143. {modal-1.4.4.dev2 → modal-1.4.4.dev3}/modal/experimental/flash.pyi +0 -0
  144. {modal-1.4.4.dev2 → modal-1.4.4.dev3}/modal/experimental/ipython.py +0 -0
  145. {modal-1.4.4.dev2 → modal-1.4.4.dev3}/modal/file_io.py +0 -0
  146. {modal-1.4.4.dev2 → modal-1.4.4.dev3}/modal/file_io.pyi +0 -0
  147. {modal-1.4.4.dev2 → modal-1.4.4.dev3}/modal/file_pattern_matcher.py +0 -0
  148. {modal-1.4.4.dev2 → modal-1.4.4.dev3}/modal/functions.py +0 -0
  149. {modal-1.4.4.dev2 → modal-1.4.4.dev3}/modal/image.py +0 -0
  150. {modal-1.4.4.dev2 → modal-1.4.4.dev3}/modal/image.pyi +0 -0
  151. {modal-1.4.4.dev2 → modal-1.4.4.dev3}/modal/io_streams.py +0 -0
  152. {modal-1.4.4.dev2 → modal-1.4.4.dev3}/modal/io_streams.pyi +0 -0
  153. {modal-1.4.4.dev2 → modal-1.4.4.dev3}/modal/mount.py +0 -0
  154. {modal-1.4.4.dev2 → modal-1.4.4.dev3}/modal/mount.pyi +0 -0
  155. {modal-1.4.4.dev2 → modal-1.4.4.dev3}/modal/network_file_system.py +0 -0
  156. {modal-1.4.4.dev2 → modal-1.4.4.dev3}/modal/network_file_system.pyi +0 -0
  157. {modal-1.4.4.dev2 → modal-1.4.4.dev3}/modal/object.py +0 -0
  158. {modal-1.4.4.dev2 → modal-1.4.4.dev3}/modal/object.pyi +0 -0
  159. {modal-1.4.4.dev2 → modal-1.4.4.dev3}/modal/output.py +0 -0
  160. {modal-1.4.4.dev2 → modal-1.4.4.dev3}/modal/parallel_map.py +0 -0
  161. {modal-1.4.4.dev2 → modal-1.4.4.dev3}/modal/parallel_map.pyi +0 -0
  162. {modal-1.4.4.dev2 → modal-1.4.4.dev3}/modal/partial_function.py +0 -0
  163. {modal-1.4.4.dev2 → modal-1.4.4.dev3}/modal/partial_function.pyi +0 -0
  164. {modal-1.4.4.dev2 → modal-1.4.4.dev3}/modal/proxy.py +0 -0
  165. {modal-1.4.4.dev2 → modal-1.4.4.dev3}/modal/proxy.pyi +0 -0
  166. {modal-1.4.4.dev2 → modal-1.4.4.dev3}/modal/py.typed +0 -0
  167. {modal-1.4.4.dev2 → modal-1.4.4.dev3}/modal/queue.py +0 -0
  168. {modal-1.4.4.dev2 → modal-1.4.4.dev3}/modal/queue.pyi +0 -0
  169. {modal-1.4.4.dev2 → modal-1.4.4.dev3}/modal/retries.py +0 -0
  170. {modal-1.4.4.dev2 → modal-1.4.4.dev3}/modal/runner.py +0 -0
  171. {modal-1.4.4.dev2 → modal-1.4.4.dev3}/modal/runner.pyi +0 -0
  172. {modal-1.4.4.dev2 → modal-1.4.4.dev3}/modal/running_app.py +0 -0
  173. {modal-1.4.4.dev2 → modal-1.4.4.dev3}/modal/sandbox.py +0 -0
  174. {modal-1.4.4.dev2 → modal-1.4.4.dev3}/modal/sandbox.pyi +0 -0
  175. {modal-1.4.4.dev2 → modal-1.4.4.dev3}/modal/sandbox_fs.py +0 -0
  176. {modal-1.4.4.dev2 → modal-1.4.4.dev3}/modal/sandbox_fs.pyi +0 -0
  177. {modal-1.4.4.dev2 → modal-1.4.4.dev3}/modal/schedule.py +0 -0
  178. {modal-1.4.4.dev2 → modal-1.4.4.dev3}/modal/scheduler_placement.py +0 -0
  179. {modal-1.4.4.dev2 → modal-1.4.4.dev3}/modal/secret.py +0 -0
  180. {modal-1.4.4.dev2 → modal-1.4.4.dev3}/modal/secret.pyi +0 -0
  181. {modal-1.4.4.dev2 → modal-1.4.4.dev3}/modal/server.py +0 -0
  182. {modal-1.4.4.dev2 → modal-1.4.4.dev3}/modal/server.pyi +0 -0
  183. {modal-1.4.4.dev2 → modal-1.4.4.dev3}/modal/serving.py +0 -0
  184. {modal-1.4.4.dev2 → modal-1.4.4.dev3}/modal/serving.pyi +0 -0
  185. {modal-1.4.4.dev2 → modal-1.4.4.dev3}/modal/snapshot.py +0 -0
  186. {modal-1.4.4.dev2 → modal-1.4.4.dev3}/modal/snapshot.pyi +0 -0
  187. {modal-1.4.4.dev2 → modal-1.4.4.dev3}/modal/stream_type.py +0 -0
  188. {modal-1.4.4.dev2 → modal-1.4.4.dev3}/modal/token_flow.py +0 -0
  189. {modal-1.4.4.dev2 → modal-1.4.4.dev3}/modal/token_flow.pyi +0 -0
  190. {modal-1.4.4.dev2 → modal-1.4.4.dev3}/modal/volume.py +0 -0
  191. {modal-1.4.4.dev2 → modal-1.4.4.dev3}/modal/volume.pyi +0 -0
  192. {modal-1.4.4.dev2 → modal-1.4.4.dev3}/modal.egg-info/SOURCES.txt +0 -0
  193. {modal-1.4.4.dev2 → modal-1.4.4.dev3}/modal.egg-info/dependency_links.txt +0 -0
  194. {modal-1.4.4.dev2 → modal-1.4.4.dev3}/modal.egg-info/entry_points.txt +0 -0
  195. {modal-1.4.4.dev2 → modal-1.4.4.dev3}/modal.egg-info/requires.txt +0 -0
  196. {modal-1.4.4.dev2 → modal-1.4.4.dev3}/modal.egg-info/top_level.txt +0 -0
  197. {modal-1.4.4.dev2 → modal-1.4.4.dev3}/modal_docs/__init__.py +0 -0
  198. {modal-1.4.4.dev2 → modal-1.4.4.dev3}/modal_docs/gen_cli_docs.py +0 -0
  199. {modal-1.4.4.dev2 → modal-1.4.4.dev3}/modal_docs/gen_cli_docs_main.py +0 -0
  200. {modal-1.4.4.dev2 → modal-1.4.4.dev3}/modal_docs/gen_reference_docs.py +0 -0
  201. {modal-1.4.4.dev2 → modal-1.4.4.dev3}/modal_docs/gen_reference_docs_main.py +0 -0
  202. {modal-1.4.4.dev2 → modal-1.4.4.dev3}/modal_docs/mdmd/__init__.py +0 -0
  203. {modal-1.4.4.dev2 → modal-1.4.4.dev3}/modal_docs/mdmd/mdmd.py +0 -0
  204. {modal-1.4.4.dev2 → modal-1.4.4.dev3}/modal_docs/mdmd/signatures.py +0 -0
  205. {modal-1.4.4.dev2 → modal-1.4.4.dev3}/modal_proto/__init__.py +0 -0
  206. {modal-1.4.4.dev2 → modal-1.4.4.dev3}/modal_proto/py.typed +0 -0
  207. {modal-1.4.4.dev2 → modal-1.4.4.dev3}/modal_proto/task_command_router_grpc.py +0 -0
  208. {modal-1.4.4.dev2 → modal-1.4.4.dev3}/modal_proto/task_command_router_pb2.py +0 -0
  209. {modal-1.4.4.dev2 → modal-1.4.4.dev3}/modal_proto/task_command_router_pb2.pyi +0 -0
  210. {modal-1.4.4.dev2 → modal-1.4.4.dev3}/modal_proto/task_command_router_pb2_grpc.py +0 -0
  211. {modal-1.4.4.dev2 → modal-1.4.4.dev3}/modal_proto/task_command_router_pb2_grpc.pyi +0 -0
  212. {modal-1.4.4.dev2 → modal-1.4.4.dev3}/modal_version/__main__.py +0 -0
  213. {modal-1.4.4.dev2 → modal-1.4.4.dev3}/pyproject.toml +0 -0
  214. {modal-1.4.4.dev2 → modal-1.4.4.dev3}/setup.cfg +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: modal
3
- Version: 1.4.4.dev2
3
+ Version: 1.4.4.dev3
4
4
  Summary: Python client library for Modal
5
5
  Author-email: Modal Labs <support@modal.com>
6
6
  License-Expression: Apache-2.0
@@ -193,18 +193,25 @@ class TaskCommandRouterClient:
193
193
  ) -> "TaskCommandRouterClient":
194
194
  """Build a connected client from a jwt and url."""
195
195
  o = urllib.parse.urlparse(url)
196
- if o.scheme != "https":
196
+ is_localhost_client = server_client._is_localhost
197
+ if o.scheme == "http":
198
+ # plain http serving should only be used for unit tests
199
+ if not is_localhost_client:
200
+ raise ValueError(f"Task router URL must be https, got: {url}")
201
+ ssl_context = None
202
+ elif o.scheme == "https":
203
+ ssl_context = ssl.create_default_context()
204
+ if is_localhost_client:
205
+ # Allow insecure TLS when the Modal server client points to localhost
206
+ # This is typically triggered from local e2e testing
207
+ logger.warning("Using insecure TLS for task command router because server client points to localhost")
208
+ ssl_context.check_hostname = False
209
+ ssl_context.verify_mode = ssl.CERT_NONE
210
+ else:
197
211
  raise ValueError(f"Task router URL must be https, got: {url}")
198
212
 
199
213
  host, _, port_str = o.netloc.partition(":")
200
- port = int(port_str) if port_str else 443
201
- ssl_context = ssl.create_default_context()
202
-
203
- # Allow insecure TLS when explicitly enabled via config.
204
- if server_client._is_localhost:
205
- logger.warning("Using insecure TLS for task command router because server client points to localhost")
206
- ssl_context.check_hostname = False
207
- ssl_context.verify_mode = ssl.CERT_NONE
214
+ port = int(port_str) if port_str else (443 if o.scheme == "https" else 80)
208
215
 
209
216
  channel = PermanentCloseableChannel(
210
217
  host,
@@ -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.dev2",
38
+ version: str = "1.4.4.dev3",
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.dev2",
178
+ version: str = "1.4.4.dev3",
179
179
  ):
180
180
  """mdmd:hidden
181
181
  The Modal client object is not intended to be instantiated directly by users.
@@ -421,7 +421,7 @@ class Function(
421
421
 
422
422
  _call_generator: ___call_generator_spec
423
423
 
424
- class __remote_spec(typing_extensions.Protocol[P_INNER, ReturnType_INNER]):
424
+ class __remote_spec(typing_extensions.Protocol[ReturnType_INNER, P_INNER]):
425
425
  def __call__(self, /, *args: P_INNER.args, **kwargs: P_INNER.kwargs) -> ReturnType_INNER:
426
426
  """Calls the function remotely, executing it with the given arguments and returning the execution's result."""
427
427
  ...
@@ -430,7 +430,7 @@ class Function(
430
430
  """Calls the function remotely, executing it with the given arguments and returning the execution's result."""
431
431
  ...
432
432
 
433
- remote: __remote_spec[modal._functions.P, modal._functions.ReturnType]
433
+ remote: __remote_spec[modal._functions.ReturnType, modal._functions.P]
434
434
 
435
435
  class __remote_gen_spec(typing_extensions.Protocol):
436
436
  def __call__(self, /, *args, **kwargs) -> typing.Generator[typing.Any, None, None]:
@@ -457,7 +457,7 @@ class Function(
457
457
  """
458
458
  ...
459
459
 
460
- class ___experimental_spawn_spec(typing_extensions.Protocol[P_INNER, ReturnType_INNER]):
460
+ class ___experimental_spawn_spec(typing_extensions.Protocol[ReturnType_INNER, P_INNER]):
461
461
  def __call__(self, /, *args: P_INNER.args, **kwargs: P_INNER.kwargs) -> FunctionCall[ReturnType_INNER]:
462
462
  """[Experimental] Calls the function with the given arguments, without waiting for the results.
463
463
 
@@ -480,7 +480,7 @@ class Function(
480
480
  """
481
481
  ...
482
482
 
483
- _experimental_spawn: ___experimental_spawn_spec[modal._functions.P, modal._functions.ReturnType]
483
+ _experimental_spawn: ___experimental_spawn_spec[modal._functions.ReturnType, modal._functions.P]
484
484
 
485
485
  class ___spawn_map_inner_spec(typing_extensions.Protocol[P_INNER]):
486
486
  def __call__(self, /, *args: P_INNER.args, **kwargs: P_INNER.kwargs) -> None: ...
@@ -488,7 +488,7 @@ class Function(
488
488
 
489
489
  _spawn_map_inner: ___spawn_map_inner_spec[modal._functions.P]
490
490
 
491
- class __spawn_spec(typing_extensions.Protocol[P_INNER, ReturnType_INNER]):
491
+ class __spawn_spec(typing_extensions.Protocol[ReturnType_INNER, P_INNER]):
492
492
  def __call__(self, /, *args: P_INNER.args, **kwargs: P_INNER.kwargs) -> FunctionCall[ReturnType_INNER]:
493
493
  """Calls the function with the given arguments, without waiting for the results.
494
494
 
@@ -509,7 +509,7 @@ class Function(
509
509
  """
510
510
  ...
511
511
 
512
- spawn: __spawn_spec[modal._functions.P, modal._functions.ReturnType]
512
+ spawn: __spawn_spec[modal._functions.ReturnType, modal._functions.P]
513
513
 
514
514
  def get_raw_f(self) -> collections.abc.Callable[..., typing.Any]:
515
515
  """Return the inner Python object wrapped by this Modal Function."""
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: modal
3
- Version: 1.4.4.dev2
3
+ Version: 1.4.4.dev3
4
4
  Summary: Python client library for Modal
5
5
  Author-email: Modal Labs <support@modal.com>
6
6
  License-Expression: Apache-2.0
@@ -267,6 +267,10 @@ class ModalClientBase(abc.ABC):
267
267
  async def EndpointList(self, stream: 'grpclib.server.Stream[modal_proto.api_pb2.EndpointListRequest, modal_proto.api_pb2.EndpointListResponse]') -> None:
268
268
  pass
269
269
 
270
+ @abc.abstractmethod
271
+ async def EndpointStop(self, stream: 'grpclib.server.Stream[modal_proto.api_pb2.EndpointStopRequest, modal_proto.api_pb2.EndpointStopResponse]') -> None:
272
+ pass
273
+
270
274
  @abc.abstractmethod
271
275
  async def EnvironmentCreate(self, stream: 'grpclib.server.Stream[modal_proto.api_pb2.EnvironmentCreateRequest, google.protobuf.empty_pb2.Empty]') -> None:
272
276
  pass
@@ -1193,6 +1197,12 @@ class ModalClientBase(abc.ABC):
1193
1197
  modal_proto.api_pb2.EndpointListRequest,
1194
1198
  modal_proto.api_pb2.EndpointListResponse,
1195
1199
  ),
1200
+ '/modal.client.ModalClient/EndpointStop': grpclib.const.Handler(
1201
+ self.EndpointStop,
1202
+ grpclib.const.Cardinality.UNARY_UNARY,
1203
+ modal_proto.api_pb2.EndpointStopRequest,
1204
+ modal_proto.api_pb2.EndpointStopResponse,
1205
+ ),
1196
1206
  '/modal.client.ModalClient/EnvironmentCreate': grpclib.const.Handler(
1197
1207
  self.EnvironmentCreate,
1198
1208
  grpclib.const.Cardinality.UNARY_UNARY,
@@ -2399,6 +2409,12 @@ class ModalClientStub:
2399
2409
  modal_proto.api_pb2.EndpointListRequest,
2400
2410
  modal_proto.api_pb2.EndpointListResponse,
2401
2411
  )
2412
+ self.EndpointStop = grpclib.client.UnaryUnaryMethod(
2413
+ channel,
2414
+ '/modal.client.ModalClient/EndpointStop',
2415
+ modal_proto.api_pb2.EndpointStopRequest,
2416
+ modal_proto.api_pb2.EndpointStopResponse,
2417
+ )
2402
2418
  self.EnvironmentCreate = grpclib.client.UnaryUnaryMethod(
2403
2419
  channel,
2404
2420
  '/modal.client.ModalClient/EnvironmentCreate',