modal 1.6.2.dev0__tar.gz → 1.6.2.dev2__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 (241) hide show
  1. {modal-1.6.2.dev0 → modal-1.6.2.dev2}/PKG-INFO +1 -1
  2. {modal-1.6.2.dev0 → modal-1.6.2.dev2}/modal/_output/status.py +10 -7
  3. {modal-1.6.2.dev0 → modal-1.6.2.dev2}/modal/_workspace.py +3 -2
  4. {modal-1.6.2.dev0 → modal-1.6.2.dev2}/modal/cli/app.py +5 -5
  5. {modal-1.6.2.dev0 → modal-1.6.2.dev2}/modal/client.pyi +2 -2
  6. {modal-1.6.2.dev0 → modal-1.6.2.dev2}/modal/experimental/_flash_container_entry.py +1 -0
  7. {modal-1.6.2.dev0 → modal-1.6.2.dev2}/modal/functions.pyi +6 -6
  8. {modal-1.6.2.dev0 → modal-1.6.2.dev2}/modal/runner.py +1 -1
  9. {modal-1.6.2.dev0 → modal-1.6.2.dev2}/modal/workspace.pyi +3 -1
  10. {modal-1.6.2.dev0 → modal-1.6.2.dev2}/modal.egg-info/PKG-INFO +1 -1
  11. {modal-1.6.2.dev0 → modal-1.6.2.dev2}/modal_proto/api_pb2.py +1080 -1080
  12. {modal-1.6.2.dev0 → modal-1.6.2.dev2}/modal_proto/api_pb2.pyi +17 -3
  13. {modal-1.6.2.dev0 → modal-1.6.2.dev2}/modal_version/__init__.py +1 -1
  14. {modal-1.6.2.dev0 → modal-1.6.2.dev2}/pyproject.toml +2 -2
  15. {modal-1.6.2.dev0 → modal-1.6.2.dev2}/LICENSE +0 -0
  16. {modal-1.6.2.dev0 → modal-1.6.2.dev2}/README.md +0 -0
  17. {modal-1.6.2.dev0 → modal-1.6.2.dev2}/modal/__init__.py +0 -0
  18. {modal-1.6.2.dev0 → modal-1.6.2.dev2}/modal/__main__.py +0 -0
  19. {modal-1.6.2.dev0 → modal-1.6.2.dev2}/modal/_billing.py +0 -0
  20. {modal-1.6.2.dev0 → modal-1.6.2.dev2}/modal/_cluster.py +0 -0
  21. {modal-1.6.2.dev0 → modal-1.6.2.dev2}/modal/_cluster.pyi +0 -0
  22. {modal-1.6.2.dev0 → modal-1.6.2.dev2}/modal/_container_entrypoint.py +0 -0
  23. {modal-1.6.2.dev0 → modal-1.6.2.dev2}/modal/_environments.py +0 -0
  24. {modal-1.6.2.dev0 → modal-1.6.2.dev2}/modal/_function_variants.py +0 -0
  25. {modal-1.6.2.dev0 → modal-1.6.2.dev2}/modal/_functions.py +0 -0
  26. {modal-1.6.2.dev0 → modal-1.6.2.dev2}/modal/_grpc_client.py +0 -0
  27. {modal-1.6.2.dev0 → modal-1.6.2.dev2}/modal/_image.py +0 -0
  28. {modal-1.6.2.dev0 → modal-1.6.2.dev2}/modal/_ipython.py +0 -0
  29. {modal-1.6.2.dev0 → modal-1.6.2.dev2}/modal/_load_context.py +0 -0
  30. {modal-1.6.2.dev0 → modal-1.6.2.dev2}/modal/_location.py +0 -0
  31. {modal-1.6.2.dev0 → modal-1.6.2.dev2}/modal/_logs.py +0 -0
  32. {modal-1.6.2.dev0 → modal-1.6.2.dev2}/modal/_logs_manager.py +0 -0
  33. {modal-1.6.2.dev0 → modal-1.6.2.dev2}/modal/_logs_manager.pyi +0 -0
  34. {modal-1.6.2.dev0 → modal-1.6.2.dev2}/modal/_object.py +0 -0
  35. {modal-1.6.2.dev0 → modal-1.6.2.dev2}/modal/_outbound_policy.py +0 -0
  36. {modal-1.6.2.dev0 → modal-1.6.2.dev2}/modal/_outbound_policy.pyi +0 -0
  37. {modal-1.6.2.dev0 → modal-1.6.2.dev2}/modal/_output/__init__.py +0 -0
  38. {modal-1.6.2.dev0 → modal-1.6.2.dev2}/modal/_output/manager.py +0 -0
  39. {modal-1.6.2.dev0 → modal-1.6.2.dev2}/modal/_output/pty.py +0 -0
  40. {modal-1.6.2.dev0 → modal-1.6.2.dev2}/modal/_output/rich.py +0 -0
  41. {modal-1.6.2.dev0 → modal-1.6.2.dev2}/modal/_partial_function.py +0 -0
  42. {modal-1.6.2.dev0 → modal-1.6.2.dev2}/modal/_resolver.py +0 -0
  43. {modal-1.6.2.dev0 → modal-1.6.2.dev2}/modal/_resources.py +0 -0
  44. {modal-1.6.2.dev0 → modal-1.6.2.dev2}/modal/_runtime/__init__.py +0 -0
  45. {modal-1.6.2.dev0 → modal-1.6.2.dev2}/modal/_runtime/asgi.py +0 -0
  46. {modal-1.6.2.dev0 → modal-1.6.2.dev2}/modal/_runtime/container_io_manager.py +0 -0
  47. {modal-1.6.2.dev0 → modal-1.6.2.dev2}/modal/_runtime/container_io_manager.pyi +0 -0
  48. {modal-1.6.2.dev0 → modal-1.6.2.dev2}/modal/_runtime/execution_context.py +0 -0
  49. {modal-1.6.2.dev0 → modal-1.6.2.dev2}/modal/_runtime/execution_context.pyi +0 -0
  50. {modal-1.6.2.dev0 → modal-1.6.2.dev2}/modal/_runtime/gpu_memory_snapshot.py +0 -0
  51. {modal-1.6.2.dev0 → modal-1.6.2.dev2}/modal/_runtime/task_lifecycle_manager.py +0 -0
  52. {modal-1.6.2.dev0 → modal-1.6.2.dev2}/modal/_runtime/task_lifecycle_manager.pyi +0 -0
  53. {modal-1.6.2.dev0 → modal-1.6.2.dev2}/modal/_runtime/telemetry.py +0 -0
  54. {modal-1.6.2.dev0 → modal-1.6.2.dev2}/modal/_runtime/user_code_event_loop.py +0 -0
  55. {modal-1.6.2.dev0 → modal-1.6.2.dev2}/modal/_runtime/user_code_imports.py +0 -0
  56. {modal-1.6.2.dev0 → modal-1.6.2.dev2}/modal/_serialization.py +0 -0
  57. {modal-1.6.2.dev0 → modal-1.6.2.dev2}/modal/_server.py +0 -0
  58. {modal-1.6.2.dev0 → modal-1.6.2.dev2}/modal/_server.pyi +0 -0
  59. {modal-1.6.2.dev0 → modal-1.6.2.dev2}/modal/_supports_logs.py +0 -0
  60. {modal-1.6.2.dev0 → modal-1.6.2.dev2}/modal/_traceback.py +0 -0
  61. {modal-1.6.2.dev0 → modal-1.6.2.dev2}/modal/_tunnel.py +0 -0
  62. {modal-1.6.2.dev0 → modal-1.6.2.dev2}/modal/_tunnel.pyi +0 -0
  63. {modal-1.6.2.dev0 → modal-1.6.2.dev2}/modal/_type_manager.py +0 -0
  64. {modal-1.6.2.dev0 → modal-1.6.2.dev2}/modal/_utils/__init__.py +0 -0
  65. {modal-1.6.2.dev0 → modal-1.6.2.dev2}/modal/_utils/app_utils.py +0 -0
  66. {modal-1.6.2.dev0 → modal-1.6.2.dev2}/modal/_utils/async_utils.py +0 -0
  67. {modal-1.6.2.dev0 → modal-1.6.2.dev2}/modal/_utils/auth_token_manager.py +0 -0
  68. {modal-1.6.2.dev0 → modal-1.6.2.dev2}/modal/_utils/blob_utils.py +0 -0
  69. {modal-1.6.2.dev0 → modal-1.6.2.dev2}/modal/_utils/browser_utils.py +0 -0
  70. {modal-1.6.2.dev0 → modal-1.6.2.dev2}/modal/_utils/bytes_io_segment_payload.py +0 -0
  71. {modal-1.6.2.dev0 → modal-1.6.2.dev2}/modal/_utils/curl_utils.py +0 -0
  72. {modal-1.6.2.dev0 → modal-1.6.2.dev2}/modal/_utils/deprecation.py +0 -0
  73. {modal-1.6.2.dev0 → modal-1.6.2.dev2}/modal/_utils/display_utils.py +0 -0
  74. {modal-1.6.2.dev0 → modal-1.6.2.dev2}/modal/_utils/docker_utils.py +0 -0
  75. {modal-1.6.2.dev0 → modal-1.6.2.dev2}/modal/_utils/function_utils.py +0 -0
  76. {modal-1.6.2.dev0 → modal-1.6.2.dev2}/modal/_utils/git_utils.py +0 -0
  77. {modal-1.6.2.dev0 → modal-1.6.2.dev2}/modal/_utils/grpc_testing.py +0 -0
  78. {modal-1.6.2.dev0 → modal-1.6.2.dev2}/modal/_utils/grpc_utils.py +0 -0
  79. {modal-1.6.2.dev0 → modal-1.6.2.dev2}/modal/_utils/hash_utils.py +0 -0
  80. {modal-1.6.2.dev0 → modal-1.6.2.dev2}/modal/_utils/http_utils.py +0 -0
  81. {modal-1.6.2.dev0 → modal-1.6.2.dev2}/modal/_utils/idle_countdown.py +0 -0
  82. {modal-1.6.2.dev0 → modal-1.6.2.dev2}/modal/_utils/jwt_utils.py +0 -0
  83. {modal-1.6.2.dev0 → modal-1.6.2.dev2}/modal/_utils/logger.py +0 -0
  84. {modal-1.6.2.dev0 → modal-1.6.2.dev2}/modal/_utils/mount_utils.py +0 -0
  85. {modal-1.6.2.dev0 → modal-1.6.2.dev2}/modal/_utils/name_utils.py +0 -0
  86. {modal-1.6.2.dev0 → modal-1.6.2.dev2}/modal/_utils/package_utils.py +0 -0
  87. {modal-1.6.2.dev0 → modal-1.6.2.dev2}/modal/_utils/pattern_utils.py +0 -0
  88. {modal-1.6.2.dev0 → modal-1.6.2.dev2}/modal/_utils/proxy_support.py +0 -0
  89. {modal-1.6.2.dev0 → modal-1.6.2.dev2}/modal/_utils/rand_pb_testing.py +0 -0
  90. {modal-1.6.2.dev0 → modal-1.6.2.dev2}/modal/_utils/sandbox_fs_utils.py +0 -0
  91. {modal-1.6.2.dev0 → modal-1.6.2.dev2}/modal/_utils/shell_utils.py +0 -0
  92. {modal-1.6.2.dev0 → modal-1.6.2.dev2}/modal/_utils/task_command_router_client.py +0 -0
  93. {modal-1.6.2.dev0 → modal-1.6.2.dev2}/modal/_utils/time_utils.py +0 -0
  94. {modal-1.6.2.dev0 → modal-1.6.2.dev2}/modal/_vendor/__init__.py +0 -0
  95. {modal-1.6.2.dev0 → modal-1.6.2.dev2}/modal/_vendor/a2wsgi_wsgi.py +0 -0
  96. {modal-1.6.2.dev0 → modal-1.6.2.dev2}/modal/_vendor/cloudpickle.py +0 -0
  97. {modal-1.6.2.dev0 → modal-1.6.2.dev2}/modal/_vendor/tblib.py +0 -0
  98. {modal-1.6.2.dev0 → modal-1.6.2.dev2}/modal/_vendor/version.py +0 -0
  99. {modal-1.6.2.dev0 → modal-1.6.2.dev2}/modal/_watcher.py +0 -0
  100. {modal-1.6.2.dev0 → modal-1.6.2.dev2}/modal/app.py +0 -0
  101. {modal-1.6.2.dev0 → modal-1.6.2.dev2}/modal/app.pyi +0 -0
  102. {modal-1.6.2.dev0 → modal-1.6.2.dev2}/modal/billing.py +0 -0
  103. {modal-1.6.2.dev0 → modal-1.6.2.dev2}/modal/billing.pyi +0 -0
  104. {modal-1.6.2.dev0 → modal-1.6.2.dev2}/modal/builder/2023.12.312.txt +0 -0
  105. {modal-1.6.2.dev0 → modal-1.6.2.dev2}/modal/builder/2023.12.txt +0 -0
  106. {modal-1.6.2.dev0 → modal-1.6.2.dev2}/modal/builder/2024.04.txt +0 -0
  107. {modal-1.6.2.dev0 → modal-1.6.2.dev2}/modal/builder/2024.10.txt +0 -0
  108. {modal-1.6.2.dev0 → modal-1.6.2.dev2}/modal/builder/2025.06.txt +0 -0
  109. {modal-1.6.2.dev0 → modal-1.6.2.dev2}/modal/builder/PREVIEW.txt +0 -0
  110. {modal-1.6.2.dev0 → modal-1.6.2.dev2}/modal/builder/README.md +0 -0
  111. {modal-1.6.2.dev0 → modal-1.6.2.dev2}/modal/builder/base-images.json +0 -0
  112. {modal-1.6.2.dev0 → modal-1.6.2.dev2}/modal/call_graph.py +0 -0
  113. {modal-1.6.2.dev0 → modal-1.6.2.dev2}/modal/cli/__init__.py +0 -0
  114. {modal-1.6.2.dev0 → modal-1.6.2.dev2}/modal/cli/_download.py +0 -0
  115. {modal-1.6.2.dev0 → modal-1.6.2.dev2}/modal/cli/_help.py +0 -0
  116. {modal-1.6.2.dev0 → modal-1.6.2.dev2}/modal/cli/_logs.py +0 -0
  117. {modal-1.6.2.dev0 → modal-1.6.2.dev2}/modal/cli/_stats.py +0 -0
  118. {modal-1.6.2.dev0 → modal-1.6.2.dev2}/modal/cli/_traceback.py +0 -0
  119. {modal-1.6.2.dev0 → modal-1.6.2.dev2}/modal/cli/billing.py +0 -0
  120. {modal-1.6.2.dev0 → modal-1.6.2.dev2}/modal/cli/changelog.py +0 -0
  121. {modal-1.6.2.dev0 → modal-1.6.2.dev2}/modal/cli/config.py +0 -0
  122. {modal-1.6.2.dev0 → modal-1.6.2.dev2}/modal/cli/container.py +0 -0
  123. {modal-1.6.2.dev0 → modal-1.6.2.dev2}/modal/cli/curl.py +0 -0
  124. {modal-1.6.2.dev0 → modal-1.6.2.dev2}/modal/cli/dashboard.py +0 -0
  125. {modal-1.6.2.dev0 → modal-1.6.2.dev2}/modal/cli/dict.py +0 -0
  126. {modal-1.6.2.dev0 → modal-1.6.2.dev2}/modal/cli/endpoint.py +0 -0
  127. {modal-1.6.2.dev0 → modal-1.6.2.dev2}/modal/cli/entry_point.py +0 -0
  128. {modal-1.6.2.dev0 → modal-1.6.2.dev2}/modal/cli/environment.py +0 -0
  129. {modal-1.6.2.dev0 → modal-1.6.2.dev2}/modal/cli/function.py +0 -0
  130. {modal-1.6.2.dev0 → modal-1.6.2.dev2}/modal/cli/image.py +0 -0
  131. {modal-1.6.2.dev0 → modal-1.6.2.dev2}/modal/cli/import_refs.py +0 -0
  132. {modal-1.6.2.dev0 → modal-1.6.2.dev2}/modal/cli/logo.py +0 -0
  133. {modal-1.6.2.dev0 → modal-1.6.2.dev2}/modal/cli/network_file_system.py +0 -0
  134. {modal-1.6.2.dev0 → modal-1.6.2.dev2}/modal/cli/profile.py +0 -0
  135. {modal-1.6.2.dev0 → modal-1.6.2.dev2}/modal/cli/queues.py +0 -0
  136. {modal-1.6.2.dev0 → modal-1.6.2.dev2}/modal/cli/run.py +0 -0
  137. {modal-1.6.2.dev0 → modal-1.6.2.dev2}/modal/cli/secret.py +0 -0
  138. {modal-1.6.2.dev0 → modal-1.6.2.dev2}/modal/cli/selector.py +0 -0
  139. {modal-1.6.2.dev0 → modal-1.6.2.dev2}/modal/cli/server.py +0 -0
  140. {modal-1.6.2.dev0 → modal-1.6.2.dev2}/modal/cli/shell.py +0 -0
  141. {modal-1.6.2.dev0 → modal-1.6.2.dev2}/modal/cli/skills.py +0 -0
  142. {modal-1.6.2.dev0 → modal-1.6.2.dev2}/modal/cli/token.py +0 -0
  143. {modal-1.6.2.dev0 → modal-1.6.2.dev2}/modal/cli/utils.py +0 -0
  144. {modal-1.6.2.dev0 → modal-1.6.2.dev2}/modal/cli/volume.py +0 -0
  145. {modal-1.6.2.dev0 → modal-1.6.2.dev2}/modal/cli/workspace.py +0 -0
  146. {modal-1.6.2.dev0 → modal-1.6.2.dev2}/modal/client.py +0 -0
  147. {modal-1.6.2.dev0 → modal-1.6.2.dev2}/modal/cloud_bucket_mount.py +0 -0
  148. {modal-1.6.2.dev0 → modal-1.6.2.dev2}/modal/cloud_bucket_mount.pyi +0 -0
  149. {modal-1.6.2.dev0 → modal-1.6.2.dev2}/modal/cls.py +0 -0
  150. {modal-1.6.2.dev0 → modal-1.6.2.dev2}/modal/cls.pyi +0 -0
  151. {modal-1.6.2.dev0 → modal-1.6.2.dev2}/modal/cluster.py +0 -0
  152. {modal-1.6.2.dev0 → modal-1.6.2.dev2}/modal/cluster.pyi +0 -0
  153. {modal-1.6.2.dev0 → modal-1.6.2.dev2}/modal/config.py +0 -0
  154. {modal-1.6.2.dev0 → modal-1.6.2.dev2}/modal/container_process.py +0 -0
  155. {modal-1.6.2.dev0 → modal-1.6.2.dev2}/modal/container_process.pyi +0 -0
  156. {modal-1.6.2.dev0 → modal-1.6.2.dev2}/modal/dict.py +0 -0
  157. {modal-1.6.2.dev0 → modal-1.6.2.dev2}/modal/dict.pyi +0 -0
  158. {modal-1.6.2.dev0 → modal-1.6.2.dev2}/modal/environments.py +0 -0
  159. {modal-1.6.2.dev0 → modal-1.6.2.dev2}/modal/environments.pyi +0 -0
  160. {modal-1.6.2.dev0 → modal-1.6.2.dev2}/modal/exception.py +0 -0
  161. {modal-1.6.2.dev0 → modal-1.6.2.dev2}/modal/experimental/__init__.py +0 -0
  162. {modal-1.6.2.dev0 → modal-1.6.2.dev2}/modal/experimental/flash.py +0 -0
  163. {modal-1.6.2.dev0 → modal-1.6.2.dev2}/modal/experimental/flash.pyi +0 -0
  164. {modal-1.6.2.dev0 → modal-1.6.2.dev2}/modal/experimental/flash_server.py +0 -0
  165. {modal-1.6.2.dev0 → modal-1.6.2.dev2}/modal/experimental/flash_server.pyi +0 -0
  166. {modal-1.6.2.dev0 → modal-1.6.2.dev2}/modal/experimental/ipython.py +0 -0
  167. {modal-1.6.2.dev0 → modal-1.6.2.dev2}/modal/file_pattern_matcher.py +0 -0
  168. {modal-1.6.2.dev0 → modal-1.6.2.dev2}/modal/functions.py +0 -0
  169. {modal-1.6.2.dev0 → modal-1.6.2.dev2}/modal/image.py +0 -0
  170. {modal-1.6.2.dev0 → modal-1.6.2.dev2}/modal/image.pyi +0 -0
  171. {modal-1.6.2.dev0 → modal-1.6.2.dev2}/modal/io_streams.py +0 -0
  172. {modal-1.6.2.dev0 → modal-1.6.2.dev2}/modal/io_streams.pyi +0 -0
  173. {modal-1.6.2.dev0 → modal-1.6.2.dev2}/modal/mount.py +0 -0
  174. {modal-1.6.2.dev0 → modal-1.6.2.dev2}/modal/mount.pyi +0 -0
  175. {modal-1.6.2.dev0 → modal-1.6.2.dev2}/modal/network_file_system.py +0 -0
  176. {modal-1.6.2.dev0 → modal-1.6.2.dev2}/modal/network_file_system.pyi +0 -0
  177. {modal-1.6.2.dev0 → modal-1.6.2.dev2}/modal/object.py +0 -0
  178. {modal-1.6.2.dev0 → modal-1.6.2.dev2}/modal/object.pyi +0 -0
  179. {modal-1.6.2.dev0 → modal-1.6.2.dev2}/modal/output.py +0 -0
  180. {modal-1.6.2.dev0 → modal-1.6.2.dev2}/modal/parallel_map.py +0 -0
  181. {modal-1.6.2.dev0 → modal-1.6.2.dev2}/modal/parallel_map.pyi +0 -0
  182. {modal-1.6.2.dev0 → modal-1.6.2.dev2}/modal/partial_function.py +0 -0
  183. {modal-1.6.2.dev0 → modal-1.6.2.dev2}/modal/partial_function.pyi +0 -0
  184. {modal-1.6.2.dev0 → modal-1.6.2.dev2}/modal/proxy.py +0 -0
  185. {modal-1.6.2.dev0 → modal-1.6.2.dev2}/modal/proxy.pyi +0 -0
  186. {modal-1.6.2.dev0 → modal-1.6.2.dev2}/modal/py.typed +0 -0
  187. {modal-1.6.2.dev0 → modal-1.6.2.dev2}/modal/queue.py +0 -0
  188. {modal-1.6.2.dev0 → modal-1.6.2.dev2}/modal/queue.pyi +0 -0
  189. {modal-1.6.2.dev0 → modal-1.6.2.dev2}/modal/retries.py +0 -0
  190. {modal-1.6.2.dev0 → modal-1.6.2.dev2}/modal/runner.pyi +0 -0
  191. {modal-1.6.2.dev0 → modal-1.6.2.dev2}/modal/running_app.py +0 -0
  192. {modal-1.6.2.dev0 → modal-1.6.2.dev2}/modal/sandbox.py +0 -0
  193. {modal-1.6.2.dev0 → modal-1.6.2.dev2}/modal/sandbox.pyi +0 -0
  194. {modal-1.6.2.dev0 → modal-1.6.2.dev2}/modal/sandbox_fs.py +0 -0
  195. {modal-1.6.2.dev0 → modal-1.6.2.dev2}/modal/sandbox_fs.pyi +0 -0
  196. {modal-1.6.2.dev0 → modal-1.6.2.dev2}/modal/schedule.py +0 -0
  197. {modal-1.6.2.dev0 → modal-1.6.2.dev2}/modal/scheduler_placement.py +0 -0
  198. {modal-1.6.2.dev0 → modal-1.6.2.dev2}/modal/secret.py +0 -0
  199. {modal-1.6.2.dev0 → modal-1.6.2.dev2}/modal/secret.pyi +0 -0
  200. {modal-1.6.2.dev0 → modal-1.6.2.dev2}/modal/server.py +0 -0
  201. {modal-1.6.2.dev0 → modal-1.6.2.dev2}/modal/server.pyi +0 -0
  202. {modal-1.6.2.dev0 → modal-1.6.2.dev2}/modal/serving.py +0 -0
  203. {modal-1.6.2.dev0 → modal-1.6.2.dev2}/modal/serving.pyi +0 -0
  204. {modal-1.6.2.dev0 → modal-1.6.2.dev2}/modal/skills/modal/SKILL.md +0 -0
  205. {modal-1.6.2.dev0 → modal-1.6.2.dev2}/modal/snapshot.py +0 -0
  206. {modal-1.6.2.dev0 → modal-1.6.2.dev2}/modal/snapshot.pyi +0 -0
  207. {modal-1.6.2.dev0 → modal-1.6.2.dev2}/modal/stream_type.py +0 -0
  208. {modal-1.6.2.dev0 → modal-1.6.2.dev2}/modal/token_flow.py +0 -0
  209. {modal-1.6.2.dev0 → modal-1.6.2.dev2}/modal/token_flow.pyi +0 -0
  210. {modal-1.6.2.dev0 → modal-1.6.2.dev2}/modal/types.py +0 -0
  211. {modal-1.6.2.dev0 → modal-1.6.2.dev2}/modal/volume.py +0 -0
  212. {modal-1.6.2.dev0 → modal-1.6.2.dev2}/modal/volume.pyi +0 -0
  213. {modal-1.6.2.dev0 → modal-1.6.2.dev2}/modal/workspace.py +0 -0
  214. {modal-1.6.2.dev0 → modal-1.6.2.dev2}/modal.egg-info/SOURCES.txt +0 -0
  215. {modal-1.6.2.dev0 → modal-1.6.2.dev2}/modal.egg-info/dependency_links.txt +0 -0
  216. {modal-1.6.2.dev0 → modal-1.6.2.dev2}/modal.egg-info/entry_points.txt +0 -0
  217. {modal-1.6.2.dev0 → modal-1.6.2.dev2}/modal.egg-info/requires.txt +0 -0
  218. {modal-1.6.2.dev0 → modal-1.6.2.dev2}/modal.egg-info/top_level.txt +0 -0
  219. {modal-1.6.2.dev0 → modal-1.6.2.dev2}/modal_docs/__init__.py +0 -0
  220. {modal-1.6.2.dev0 → modal-1.6.2.dev2}/modal_docs/gen_cli_docs.py +0 -0
  221. {modal-1.6.2.dev0 → modal-1.6.2.dev2}/modal_docs/gen_cli_docs_main.py +0 -0
  222. {modal-1.6.2.dev0 → modal-1.6.2.dev2}/modal_docs/gen_reference_docs.py +0 -0
  223. {modal-1.6.2.dev0 → modal-1.6.2.dev2}/modal_docs/gen_reference_docs_main.py +0 -0
  224. {modal-1.6.2.dev0 → modal-1.6.2.dev2}/modal_docs/mdmd/__init__.py +0 -0
  225. {modal-1.6.2.dev0 → modal-1.6.2.dev2}/modal_docs/mdmd/mdmd.py +0 -0
  226. {modal-1.6.2.dev0 → modal-1.6.2.dev2}/modal_docs/mdmd/signatures.py +0 -0
  227. {modal-1.6.2.dev0 → modal-1.6.2.dev2}/modal_docs/mdmd/types.py +0 -0
  228. {modal-1.6.2.dev0 → modal-1.6.2.dev2}/modal_docs/reference_intro.md +0 -0
  229. {modal-1.6.2.dev0 → modal-1.6.2.dev2}/modal_proto/__init__.py +0 -0
  230. {modal-1.6.2.dev0 → modal-1.6.2.dev2}/modal_proto/api_grpc.py +0 -0
  231. {modal-1.6.2.dev0 → modal-1.6.2.dev2}/modal_proto/api_pb2_grpc.py +0 -0
  232. {modal-1.6.2.dev0 → modal-1.6.2.dev2}/modal_proto/api_pb2_grpc.pyi +0 -0
  233. {modal-1.6.2.dev0 → modal-1.6.2.dev2}/modal_proto/modal_api_grpc.py +0 -0
  234. {modal-1.6.2.dev0 → modal-1.6.2.dev2}/modal_proto/py.typed +0 -0
  235. {modal-1.6.2.dev0 → modal-1.6.2.dev2}/modal_proto/task_command_router_grpc.py +0 -0
  236. {modal-1.6.2.dev0 → modal-1.6.2.dev2}/modal_proto/task_command_router_pb2.py +0 -0
  237. {modal-1.6.2.dev0 → modal-1.6.2.dev2}/modal_proto/task_command_router_pb2.pyi +0 -0
  238. {modal-1.6.2.dev0 → modal-1.6.2.dev2}/modal_proto/task_command_router_pb2_grpc.py +0 -0
  239. {modal-1.6.2.dev0 → modal-1.6.2.dev2}/modal_proto/task_command_router_pb2_grpc.pyi +0 -0
  240. {modal-1.6.2.dev0 → modal-1.6.2.dev2}/modal_version/__main__.py +0 -0
  241. {modal-1.6.2.dev0 → modal-1.6.2.dev2}/setup.cfg +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: modal
3
- Version: 1.6.2.dev0
3
+ Version: 1.6.2.dev2
4
4
  Summary: Python client library for Modal
5
5
  Author-email: Modal Labs <support@modal.com>
6
6
  License-Expression: Apache-2.0
@@ -20,6 +20,11 @@ def _get_annotation_for_web_url(url_info: api_pb2.WebUrlInfo) -> str:
20
20
  return suffix
21
21
 
22
22
 
23
+ def _format_url(url: str) -> str:
24
+ # OSC 8 hyperlinks stay clickable when the URL wraps across lines
25
+ return f"[dim underline][link={url}]{url}[/link][/dim underline]"
26
+
27
+
23
28
  class FunctionCreationStatus:
24
29
  """Context manager for tracking and displaying function creation progress."""
25
30
 
@@ -58,9 +63,9 @@ class FunctionCreationStatus:
58
63
  suffix = _get_annotation_for_web_url(url_info)
59
64
 
60
65
  self.status_row.finish(f"Created {self.type} [green]{self.name}[/green]")
61
- self.status_row.details(f"[dim underline]{web_url}[/dim underline]{auth_suffix}{suffix}")
66
+ self.status_row.details(f"{_format_url(web_url)}{auth_suffix}{suffix}")
62
67
  for custom_domain in self.response.function.custom_domain_info:
63
- self.status_row.details(f"Custom domain: [dim underline]{custom_domain.url}[/dim underline]")
68
+ self.status_row.details(f"Custom domain: {_format_url(custom_domain.url)}")
64
69
 
65
70
  elif self.response.function.flash_service_urls:
66
71
  # Despite the gRPC API types, Servers only have one URL
@@ -68,7 +73,7 @@ class FunctionCreationStatus:
68
73
  auth_suffix = " 🔑" if authenticated else " [yellow](unauthenticated)[/yellow]"
69
74
  self.status_row.finish(f"Created {self.type} [green]{self.name}[/green]")
70
75
  url = self.response.function.flash_service_urls[0]
71
- self.status_row.details(f"[dim underline]{url}[/dim underline]{auth_suffix}")
76
+ self.status_row.details(f"{_format_url(url)}{auth_suffix}")
72
77
 
73
78
  else:
74
79
  self.status_row.finish(f"Created {self.type} [green]{self.name}[/green].")
@@ -81,10 +86,8 @@ class FunctionCreationStatus:
81
86
  auth_suffix = " 🔑" if authenticated else " [yellow](unauthenticated)[/yellow]"
82
87
  self.status_row.details(
83
88
  f"{method_definition.function_name} -> "
84
- f"[dim underline]{method_definition.web_url}[/dim underline]{auth_suffix}{suffix}"
89
+ f"{_format_url(method_definition.web_url)}{auth_suffix}{suffix}"
85
90
  )
86
91
  for custom_domain in method_definition.custom_domain_info:
87
92
  indent = len(method_definition.function_name) * " "
88
- self.status_row.details(
89
- f"{indent} -> [dim underline]{custom_domain.url}[/dim underline]{auth_suffix}"
90
- )
93
+ self.status_row.details(f"{indent} -> {_format_url(custom_domain.url)}{auth_suffix}")
@@ -495,7 +495,8 @@ class _WorkspaceSettingsManager:
495
495
  """mdmd:namespace"""
496
496
 
497
497
  @classmethod
498
- def valid_settings(cls):
498
+ def _valid_settings(cls):
499
+ """mdmd:hidden"""
499
500
  return ("default-environment", "image-builder-version")
500
501
 
501
502
  def __init__(self, workspace: _Workspace):
@@ -554,4 +555,4 @@ class _WorkspaceSettingsManager:
554
555
  case "default-environment":
555
556
  await self._set_default_environment(value)
556
557
  case _:
557
- raise ValueError(f"Unknown setting {name!r}. Valid settings: {', '.join(self.valid_settings())}")
558
+ raise ValueError(f"Unknown setting {name!r}. Valid settings: {', '.join(self._valid_settings())}")
@@ -225,12 +225,12 @@ async def rollover(
225
225
  await _stop_and_wait_for_containers(client, app_id, response.deployed_at, env)
226
226
  except Exception as exc:
227
227
  warnings.warn(f"App updated successfully, but containers did not all terminate. {exc}", UserWarning)
228
- output_mgr.print(f"\nView Deployment: [magenta]{response.url}[/magenta]")
228
+ output_mgr.print(f"\nView Deployment: [magenta][link={response.url}]{response.url}[/link][/magenta]")
229
229
  sys.exit(1)
230
230
 
231
231
  duration = time.monotonic() - t0
232
232
  output_mgr.step_completed(f"Rollover completed in {duration:.3f}s with {strategy} strategy! 🎉")
233
- output_mgr.print(f"\nView Deployment: [magenta]{response.url}[/magenta]")
233
+ output_mgr.print(f"\nView Deployment: [magenta][link={response.url}]{response.url}[/link][/magenta]")
234
234
 
235
235
 
236
236
  @app_cli.command("promote", panel="Management", no_args_is_help=True, hidden=True)
@@ -281,7 +281,7 @@ async def promote(
281
281
 
282
282
  output_mgr = OutputManager.get()
283
283
  output_mgr.print(f"[green]✓[/green] Promoted App to v{version_number}!")
284
- output_mgr.print(f"\nView Deployment: [magenta]{resp.url}[/magenta]")
284
+ output_mgr.print(f"\nView Deployment: [magenta][link={resp.url}]{resp.url}[/link][/magenta]")
285
285
 
286
286
 
287
287
  @app_cli.command(
@@ -356,10 +356,10 @@ async def rollback(
356
356
  warnings.warn(
357
357
  f"App rollback executed successfully, but containers did not all terminate. {exc}", UserWarning
358
358
  )
359
- output_mgr.print(f"\nView Deployment: [magenta]{resp.url}[/magenta]")
359
+ output_mgr.print(f"\nView Deployment: [magenta][link={resp.url}]{resp.url}[/link][/magenta]")
360
360
  sys.exit(1)
361
361
  output_mgr.print("[green]✓[/green] Deployment rollback successful!")
362
- output_mgr.print(f"\nView Deployment: [magenta]{resp.url}[/magenta]")
362
+ output_mgr.print(f"\nView Deployment: [magenta][link={resp.url}]{resp.url}[/link][/magenta]")
363
363
 
364
364
 
365
365
  @app_cli.command("stop", panel="Management", no_args_is_help=True)
@@ -80,7 +80,7 @@ class _Client:
80
80
  server_url: str,
81
81
  client_type: int,
82
82
  credentials: typing.Optional[tuple[str, str]],
83
- version: str = "1.6.2.dev0",
83
+ version: str = "1.6.2.dev2",
84
84
  *,
85
85
  oauth_credentials: typing.Optional[_OAuthCredentials] = None,
86
86
  ):
@@ -290,7 +290,7 @@ class Client:
290
290
  server_url: str,
291
291
  client_type: int,
292
292
  credentials: typing.Optional[tuple[str, str]],
293
- version: str = "1.6.2.dev0",
293
+ version: str = "1.6.2.dev2",
294
294
  *,
295
295
  oauth_credentials: typing.Optional[_OAuthCredentials] = None,
296
296
  ):
@@ -41,6 +41,7 @@ class _FlashContainerEntry:
41
41
  self.flash_manager = server_forward()
42
42
  else:
43
43
  try:
44
+ # Only rank 0 of a clustered replica exposes the HTTP endpoint through Flash.
44
45
  rank = get_current_cluster_context().rank
45
46
  if rank != 0:
46
47
  return
@@ -613,7 +613,7 @@ class Function(
613
613
 
614
614
  _call_generator: ___call_generator_spec
615
615
 
616
- class __remote_spec(typing_extensions.Protocol[P_INNER, ReturnType_INNER]):
616
+ class __remote_spec(typing_extensions.Protocol[ReturnType_INNER, P_INNER]):
617
617
  def __call__(self, /, *args: P_INNER.args, **kwargs: P_INNER.kwargs) -> ReturnType_INNER:
618
618
  """Calls the function remotely, executing it with the given arguments and returning the execution's result.
619
619
 
@@ -638,7 +638,7 @@ class Function(
638
638
  """
639
639
  ...
640
640
 
641
- remote: __remote_spec[modal._functions.P, modal._functions.ReturnType]
641
+ remote: __remote_spec[modal._functions.ReturnType, modal._functions.P]
642
642
 
643
643
  class __remote_gen_spec(typing_extensions.Protocol):
644
644
  def __call__(self, /, *args, **kwargs) -> typing.Generator[typing.Any, None, None]:
@@ -688,7 +688,7 @@ class Function(
688
688
  """
689
689
  ...
690
690
 
691
- class ___experimental_spawn_spec(typing_extensions.Protocol[P_INNER, ReturnType_INNER]):
691
+ class ___experimental_spawn_spec(typing_extensions.Protocol[ReturnType_INNER, P_INNER]):
692
692
  def __call__(self, /, *args: P_INNER.args, **kwargs: P_INNER.kwargs) -> FunctionCall[ReturnType_INNER]:
693
693
  """[Experimental] Calls the function with the given arguments, without waiting for the results.
694
694
 
@@ -721,7 +721,7 @@ class Function(
721
721
  """
722
722
  ...
723
723
 
724
- _experimental_spawn: ___experimental_spawn_spec[modal._functions.P, modal._functions.ReturnType]
724
+ _experimental_spawn: ___experimental_spawn_spec[modal._functions.ReturnType, modal._functions.P]
725
725
 
726
726
  class ___spawn_map_inner_spec(typing_extensions.Protocol[P_INNER]):
727
727
  def __call__(self, /, *args: P_INNER.args, **kwargs: P_INNER.kwargs) -> None: ...
@@ -729,7 +729,7 @@ class Function(
729
729
 
730
730
  _spawn_map_inner: ___spawn_map_inner_spec[modal._functions.P]
731
731
 
732
- class __spawn_spec(typing_extensions.Protocol[P_INNER, ReturnType_INNER]):
732
+ class __spawn_spec(typing_extensions.Protocol[ReturnType_INNER, P_INNER]):
733
733
  def __call__(self, /, *args: P_INNER.args, **kwargs: P_INNER.kwargs) -> FunctionCall[ReturnType_INNER]:
734
734
  """Calls the function with the given arguments, without waiting for the results.
735
735
 
@@ -762,7 +762,7 @@ class Function(
762
762
  """
763
763
  ...
764
764
 
765
- spawn: __spawn_spec[modal._functions.P, modal._functions.ReturnType]
765
+ spawn: __spawn_spec[modal._functions.ReturnType, modal._functions.P]
766
766
 
767
767
  @property
768
768
  def _raw_f_(self) -> collections.abc.Callable[..., typing.Any]: ...
@@ -697,7 +697,7 @@ async def _deploy_app(
697
697
  else:
698
698
  output_mgr.step_completed(f"App deployed in {t:.3f}s! 🎉")
699
699
 
700
- output_mgr.print(f"\nView Deployment: [magenta]{app_url}[/magenta]")
700
+ output_mgr.print(f"\nView Deployment: [magenta][link={app_url}]{app_url}[/link][/magenta]")
701
701
  return DeployResult(
702
702
  app_id=running_app.app_id,
703
703
  app_page_url=running_app.app_page_url,
@@ -631,7 +631,9 @@ class WorkspaceSettingsManager:
631
631
  ...
632
632
 
633
633
  @classmethod
634
- def valid_settings(cls): ...
634
+ def _valid_settings(cls):
635
+ """mdmd:hidden"""
636
+ ...
635
637
 
636
638
  class __list_spec(typing_extensions.Protocol):
637
639
  def __call__(self, /):
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: modal
3
- Version: 1.6.2.dev0
3
+ Version: 1.6.2.dev2
4
4
  Summary: Python client library for Modal
5
5
  Author-email: Modal Labs <support@modal.com>
6
6
  License-Expression: Apache-2.0