modal 1.6.2.dev2__tar.gz → 1.6.2.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 (241) hide show
  1. {modal-1.6.2.dev2 → modal-1.6.2.dev3}/PKG-INFO +1 -1
  2. {modal-1.6.2.dev2 → modal-1.6.2.dev3}/modal/_environments.py +2 -2
  3. {modal-1.6.2.dev2 → modal-1.6.2.dev3}/modal/_utils/name_utils.py +9 -7
  4. {modal-1.6.2.dev2 → modal-1.6.2.dev3}/modal/cli/endpoint.py +6 -1
  5. {modal-1.6.2.dev2 → modal-1.6.2.dev3}/modal/cli/environment.py +3 -3
  6. {modal-1.6.2.dev2 → modal-1.6.2.dev3}/modal/client.pyi +2 -2
  7. {modal-1.6.2.dev2 → modal-1.6.2.dev3}/modal/functions.pyi +6 -6
  8. {modal-1.6.2.dev2 → modal-1.6.2.dev3}/modal.egg-info/PKG-INFO +1 -1
  9. {modal-1.6.2.dev2 → modal-1.6.2.dev3}/modal_proto/api_pb2.py +1083 -1082
  10. {modal-1.6.2.dev2 → modal-1.6.2.dev3}/modal_proto/api_pb2.pyi +17 -4
  11. {modal-1.6.2.dev2 → modal-1.6.2.dev3}/modal_version/__init__.py +1 -1
  12. {modal-1.6.2.dev2 → modal-1.6.2.dev3}/LICENSE +0 -0
  13. {modal-1.6.2.dev2 → modal-1.6.2.dev3}/README.md +0 -0
  14. {modal-1.6.2.dev2 → modal-1.6.2.dev3}/modal/__init__.py +0 -0
  15. {modal-1.6.2.dev2 → modal-1.6.2.dev3}/modal/__main__.py +0 -0
  16. {modal-1.6.2.dev2 → modal-1.6.2.dev3}/modal/_billing.py +0 -0
  17. {modal-1.6.2.dev2 → modal-1.6.2.dev3}/modal/_cluster.py +0 -0
  18. {modal-1.6.2.dev2 → modal-1.6.2.dev3}/modal/_cluster.pyi +0 -0
  19. {modal-1.6.2.dev2 → modal-1.6.2.dev3}/modal/_container_entrypoint.py +0 -0
  20. {modal-1.6.2.dev2 → modal-1.6.2.dev3}/modal/_function_variants.py +0 -0
  21. {modal-1.6.2.dev2 → modal-1.6.2.dev3}/modal/_functions.py +0 -0
  22. {modal-1.6.2.dev2 → modal-1.6.2.dev3}/modal/_grpc_client.py +0 -0
  23. {modal-1.6.2.dev2 → modal-1.6.2.dev3}/modal/_image.py +0 -0
  24. {modal-1.6.2.dev2 → modal-1.6.2.dev3}/modal/_ipython.py +0 -0
  25. {modal-1.6.2.dev2 → modal-1.6.2.dev3}/modal/_load_context.py +0 -0
  26. {modal-1.6.2.dev2 → modal-1.6.2.dev3}/modal/_location.py +0 -0
  27. {modal-1.6.2.dev2 → modal-1.6.2.dev3}/modal/_logs.py +0 -0
  28. {modal-1.6.2.dev2 → modal-1.6.2.dev3}/modal/_logs_manager.py +0 -0
  29. {modal-1.6.2.dev2 → modal-1.6.2.dev3}/modal/_logs_manager.pyi +0 -0
  30. {modal-1.6.2.dev2 → modal-1.6.2.dev3}/modal/_object.py +0 -0
  31. {modal-1.6.2.dev2 → modal-1.6.2.dev3}/modal/_outbound_policy.py +0 -0
  32. {modal-1.6.2.dev2 → modal-1.6.2.dev3}/modal/_outbound_policy.pyi +0 -0
  33. {modal-1.6.2.dev2 → modal-1.6.2.dev3}/modal/_output/__init__.py +0 -0
  34. {modal-1.6.2.dev2 → modal-1.6.2.dev3}/modal/_output/manager.py +0 -0
  35. {modal-1.6.2.dev2 → modal-1.6.2.dev3}/modal/_output/pty.py +0 -0
  36. {modal-1.6.2.dev2 → modal-1.6.2.dev3}/modal/_output/rich.py +0 -0
  37. {modal-1.6.2.dev2 → modal-1.6.2.dev3}/modal/_output/status.py +0 -0
  38. {modal-1.6.2.dev2 → modal-1.6.2.dev3}/modal/_partial_function.py +0 -0
  39. {modal-1.6.2.dev2 → modal-1.6.2.dev3}/modal/_resolver.py +0 -0
  40. {modal-1.6.2.dev2 → modal-1.6.2.dev3}/modal/_resources.py +0 -0
  41. {modal-1.6.2.dev2 → modal-1.6.2.dev3}/modal/_runtime/__init__.py +0 -0
  42. {modal-1.6.2.dev2 → modal-1.6.2.dev3}/modal/_runtime/asgi.py +0 -0
  43. {modal-1.6.2.dev2 → modal-1.6.2.dev3}/modal/_runtime/container_io_manager.py +0 -0
  44. {modal-1.6.2.dev2 → modal-1.6.2.dev3}/modal/_runtime/container_io_manager.pyi +0 -0
  45. {modal-1.6.2.dev2 → modal-1.6.2.dev3}/modal/_runtime/execution_context.py +0 -0
  46. {modal-1.6.2.dev2 → modal-1.6.2.dev3}/modal/_runtime/execution_context.pyi +0 -0
  47. {modal-1.6.2.dev2 → modal-1.6.2.dev3}/modal/_runtime/gpu_memory_snapshot.py +0 -0
  48. {modal-1.6.2.dev2 → modal-1.6.2.dev3}/modal/_runtime/task_lifecycle_manager.py +0 -0
  49. {modal-1.6.2.dev2 → modal-1.6.2.dev3}/modal/_runtime/task_lifecycle_manager.pyi +0 -0
  50. {modal-1.6.2.dev2 → modal-1.6.2.dev3}/modal/_runtime/telemetry.py +0 -0
  51. {modal-1.6.2.dev2 → modal-1.6.2.dev3}/modal/_runtime/user_code_event_loop.py +0 -0
  52. {modal-1.6.2.dev2 → modal-1.6.2.dev3}/modal/_runtime/user_code_imports.py +0 -0
  53. {modal-1.6.2.dev2 → modal-1.6.2.dev3}/modal/_serialization.py +0 -0
  54. {modal-1.6.2.dev2 → modal-1.6.2.dev3}/modal/_server.py +0 -0
  55. {modal-1.6.2.dev2 → modal-1.6.2.dev3}/modal/_server.pyi +0 -0
  56. {modal-1.6.2.dev2 → modal-1.6.2.dev3}/modal/_supports_logs.py +0 -0
  57. {modal-1.6.2.dev2 → modal-1.6.2.dev3}/modal/_traceback.py +0 -0
  58. {modal-1.6.2.dev2 → modal-1.6.2.dev3}/modal/_tunnel.py +0 -0
  59. {modal-1.6.2.dev2 → modal-1.6.2.dev3}/modal/_tunnel.pyi +0 -0
  60. {modal-1.6.2.dev2 → modal-1.6.2.dev3}/modal/_type_manager.py +0 -0
  61. {modal-1.6.2.dev2 → modal-1.6.2.dev3}/modal/_utils/__init__.py +0 -0
  62. {modal-1.6.2.dev2 → modal-1.6.2.dev3}/modal/_utils/app_utils.py +0 -0
  63. {modal-1.6.2.dev2 → modal-1.6.2.dev3}/modal/_utils/async_utils.py +0 -0
  64. {modal-1.6.2.dev2 → modal-1.6.2.dev3}/modal/_utils/auth_token_manager.py +0 -0
  65. {modal-1.6.2.dev2 → modal-1.6.2.dev3}/modal/_utils/blob_utils.py +0 -0
  66. {modal-1.6.2.dev2 → modal-1.6.2.dev3}/modal/_utils/browser_utils.py +0 -0
  67. {modal-1.6.2.dev2 → modal-1.6.2.dev3}/modal/_utils/bytes_io_segment_payload.py +0 -0
  68. {modal-1.6.2.dev2 → modal-1.6.2.dev3}/modal/_utils/curl_utils.py +0 -0
  69. {modal-1.6.2.dev2 → modal-1.6.2.dev3}/modal/_utils/deprecation.py +0 -0
  70. {modal-1.6.2.dev2 → modal-1.6.2.dev3}/modal/_utils/display_utils.py +0 -0
  71. {modal-1.6.2.dev2 → modal-1.6.2.dev3}/modal/_utils/docker_utils.py +0 -0
  72. {modal-1.6.2.dev2 → modal-1.6.2.dev3}/modal/_utils/function_utils.py +0 -0
  73. {modal-1.6.2.dev2 → modal-1.6.2.dev3}/modal/_utils/git_utils.py +0 -0
  74. {modal-1.6.2.dev2 → modal-1.6.2.dev3}/modal/_utils/grpc_testing.py +0 -0
  75. {modal-1.6.2.dev2 → modal-1.6.2.dev3}/modal/_utils/grpc_utils.py +0 -0
  76. {modal-1.6.2.dev2 → modal-1.6.2.dev3}/modal/_utils/hash_utils.py +0 -0
  77. {modal-1.6.2.dev2 → modal-1.6.2.dev3}/modal/_utils/http_utils.py +0 -0
  78. {modal-1.6.2.dev2 → modal-1.6.2.dev3}/modal/_utils/idle_countdown.py +0 -0
  79. {modal-1.6.2.dev2 → modal-1.6.2.dev3}/modal/_utils/jwt_utils.py +0 -0
  80. {modal-1.6.2.dev2 → modal-1.6.2.dev3}/modal/_utils/logger.py +0 -0
  81. {modal-1.6.2.dev2 → modal-1.6.2.dev3}/modal/_utils/mount_utils.py +0 -0
  82. {modal-1.6.2.dev2 → modal-1.6.2.dev3}/modal/_utils/package_utils.py +0 -0
  83. {modal-1.6.2.dev2 → modal-1.6.2.dev3}/modal/_utils/pattern_utils.py +0 -0
  84. {modal-1.6.2.dev2 → modal-1.6.2.dev3}/modal/_utils/proxy_support.py +0 -0
  85. {modal-1.6.2.dev2 → modal-1.6.2.dev3}/modal/_utils/rand_pb_testing.py +0 -0
  86. {modal-1.6.2.dev2 → modal-1.6.2.dev3}/modal/_utils/sandbox_fs_utils.py +0 -0
  87. {modal-1.6.2.dev2 → modal-1.6.2.dev3}/modal/_utils/shell_utils.py +0 -0
  88. {modal-1.6.2.dev2 → modal-1.6.2.dev3}/modal/_utils/task_command_router_client.py +0 -0
  89. {modal-1.6.2.dev2 → modal-1.6.2.dev3}/modal/_utils/time_utils.py +0 -0
  90. {modal-1.6.2.dev2 → modal-1.6.2.dev3}/modal/_vendor/__init__.py +0 -0
  91. {modal-1.6.2.dev2 → modal-1.6.2.dev3}/modal/_vendor/a2wsgi_wsgi.py +0 -0
  92. {modal-1.6.2.dev2 → modal-1.6.2.dev3}/modal/_vendor/cloudpickle.py +0 -0
  93. {modal-1.6.2.dev2 → modal-1.6.2.dev3}/modal/_vendor/tblib.py +0 -0
  94. {modal-1.6.2.dev2 → modal-1.6.2.dev3}/modal/_vendor/version.py +0 -0
  95. {modal-1.6.2.dev2 → modal-1.6.2.dev3}/modal/_watcher.py +0 -0
  96. {modal-1.6.2.dev2 → modal-1.6.2.dev3}/modal/_workspace.py +0 -0
  97. {modal-1.6.2.dev2 → modal-1.6.2.dev3}/modal/app.py +0 -0
  98. {modal-1.6.2.dev2 → modal-1.6.2.dev3}/modal/app.pyi +0 -0
  99. {modal-1.6.2.dev2 → modal-1.6.2.dev3}/modal/billing.py +0 -0
  100. {modal-1.6.2.dev2 → modal-1.6.2.dev3}/modal/billing.pyi +0 -0
  101. {modal-1.6.2.dev2 → modal-1.6.2.dev3}/modal/builder/2023.12.312.txt +0 -0
  102. {modal-1.6.2.dev2 → modal-1.6.2.dev3}/modal/builder/2023.12.txt +0 -0
  103. {modal-1.6.2.dev2 → modal-1.6.2.dev3}/modal/builder/2024.04.txt +0 -0
  104. {modal-1.6.2.dev2 → modal-1.6.2.dev3}/modal/builder/2024.10.txt +0 -0
  105. {modal-1.6.2.dev2 → modal-1.6.2.dev3}/modal/builder/2025.06.txt +0 -0
  106. {modal-1.6.2.dev2 → modal-1.6.2.dev3}/modal/builder/PREVIEW.txt +0 -0
  107. {modal-1.6.2.dev2 → modal-1.6.2.dev3}/modal/builder/README.md +0 -0
  108. {modal-1.6.2.dev2 → modal-1.6.2.dev3}/modal/builder/base-images.json +0 -0
  109. {modal-1.6.2.dev2 → modal-1.6.2.dev3}/modal/call_graph.py +0 -0
  110. {modal-1.6.2.dev2 → modal-1.6.2.dev3}/modal/cli/__init__.py +0 -0
  111. {modal-1.6.2.dev2 → modal-1.6.2.dev3}/modal/cli/_download.py +0 -0
  112. {modal-1.6.2.dev2 → modal-1.6.2.dev3}/modal/cli/_help.py +0 -0
  113. {modal-1.6.2.dev2 → modal-1.6.2.dev3}/modal/cli/_logs.py +0 -0
  114. {modal-1.6.2.dev2 → modal-1.6.2.dev3}/modal/cli/_stats.py +0 -0
  115. {modal-1.6.2.dev2 → modal-1.6.2.dev3}/modal/cli/_traceback.py +0 -0
  116. {modal-1.6.2.dev2 → modal-1.6.2.dev3}/modal/cli/app.py +0 -0
  117. {modal-1.6.2.dev2 → modal-1.6.2.dev3}/modal/cli/billing.py +0 -0
  118. {modal-1.6.2.dev2 → modal-1.6.2.dev3}/modal/cli/changelog.py +0 -0
  119. {modal-1.6.2.dev2 → modal-1.6.2.dev3}/modal/cli/config.py +0 -0
  120. {modal-1.6.2.dev2 → modal-1.6.2.dev3}/modal/cli/container.py +0 -0
  121. {modal-1.6.2.dev2 → modal-1.6.2.dev3}/modal/cli/curl.py +0 -0
  122. {modal-1.6.2.dev2 → modal-1.6.2.dev3}/modal/cli/dashboard.py +0 -0
  123. {modal-1.6.2.dev2 → modal-1.6.2.dev3}/modal/cli/dict.py +0 -0
  124. {modal-1.6.2.dev2 → modal-1.6.2.dev3}/modal/cli/entry_point.py +0 -0
  125. {modal-1.6.2.dev2 → modal-1.6.2.dev3}/modal/cli/function.py +0 -0
  126. {modal-1.6.2.dev2 → modal-1.6.2.dev3}/modal/cli/image.py +0 -0
  127. {modal-1.6.2.dev2 → modal-1.6.2.dev3}/modal/cli/import_refs.py +0 -0
  128. {modal-1.6.2.dev2 → modal-1.6.2.dev3}/modal/cli/logo.py +0 -0
  129. {modal-1.6.2.dev2 → modal-1.6.2.dev3}/modal/cli/network_file_system.py +0 -0
  130. {modal-1.6.2.dev2 → modal-1.6.2.dev3}/modal/cli/profile.py +0 -0
  131. {modal-1.6.2.dev2 → modal-1.6.2.dev3}/modal/cli/queues.py +0 -0
  132. {modal-1.6.2.dev2 → modal-1.6.2.dev3}/modal/cli/run.py +0 -0
  133. {modal-1.6.2.dev2 → modal-1.6.2.dev3}/modal/cli/secret.py +0 -0
  134. {modal-1.6.2.dev2 → modal-1.6.2.dev3}/modal/cli/selector.py +0 -0
  135. {modal-1.6.2.dev2 → modal-1.6.2.dev3}/modal/cli/server.py +0 -0
  136. {modal-1.6.2.dev2 → modal-1.6.2.dev3}/modal/cli/shell.py +0 -0
  137. {modal-1.6.2.dev2 → modal-1.6.2.dev3}/modal/cli/skills.py +0 -0
  138. {modal-1.6.2.dev2 → modal-1.6.2.dev3}/modal/cli/token.py +0 -0
  139. {modal-1.6.2.dev2 → modal-1.6.2.dev3}/modal/cli/utils.py +0 -0
  140. {modal-1.6.2.dev2 → modal-1.6.2.dev3}/modal/cli/volume.py +0 -0
  141. {modal-1.6.2.dev2 → modal-1.6.2.dev3}/modal/cli/workspace.py +0 -0
  142. {modal-1.6.2.dev2 → modal-1.6.2.dev3}/modal/client.py +0 -0
  143. {modal-1.6.2.dev2 → modal-1.6.2.dev3}/modal/cloud_bucket_mount.py +0 -0
  144. {modal-1.6.2.dev2 → modal-1.6.2.dev3}/modal/cloud_bucket_mount.pyi +0 -0
  145. {modal-1.6.2.dev2 → modal-1.6.2.dev3}/modal/cls.py +0 -0
  146. {modal-1.6.2.dev2 → modal-1.6.2.dev3}/modal/cls.pyi +0 -0
  147. {modal-1.6.2.dev2 → modal-1.6.2.dev3}/modal/cluster.py +0 -0
  148. {modal-1.6.2.dev2 → modal-1.6.2.dev3}/modal/cluster.pyi +0 -0
  149. {modal-1.6.2.dev2 → modal-1.6.2.dev3}/modal/config.py +0 -0
  150. {modal-1.6.2.dev2 → modal-1.6.2.dev3}/modal/container_process.py +0 -0
  151. {modal-1.6.2.dev2 → modal-1.6.2.dev3}/modal/container_process.pyi +0 -0
  152. {modal-1.6.2.dev2 → modal-1.6.2.dev3}/modal/dict.py +0 -0
  153. {modal-1.6.2.dev2 → modal-1.6.2.dev3}/modal/dict.pyi +0 -0
  154. {modal-1.6.2.dev2 → modal-1.6.2.dev3}/modal/environments.py +0 -0
  155. {modal-1.6.2.dev2 → modal-1.6.2.dev3}/modal/environments.pyi +0 -0
  156. {modal-1.6.2.dev2 → modal-1.6.2.dev3}/modal/exception.py +0 -0
  157. {modal-1.6.2.dev2 → modal-1.6.2.dev3}/modal/experimental/__init__.py +0 -0
  158. {modal-1.6.2.dev2 → modal-1.6.2.dev3}/modal/experimental/_flash_container_entry.py +0 -0
  159. {modal-1.6.2.dev2 → modal-1.6.2.dev3}/modal/experimental/flash.py +0 -0
  160. {modal-1.6.2.dev2 → modal-1.6.2.dev3}/modal/experimental/flash.pyi +0 -0
  161. {modal-1.6.2.dev2 → modal-1.6.2.dev3}/modal/experimental/flash_server.py +0 -0
  162. {modal-1.6.2.dev2 → modal-1.6.2.dev3}/modal/experimental/flash_server.pyi +0 -0
  163. {modal-1.6.2.dev2 → modal-1.6.2.dev3}/modal/experimental/ipython.py +0 -0
  164. {modal-1.6.2.dev2 → modal-1.6.2.dev3}/modal/file_pattern_matcher.py +0 -0
  165. {modal-1.6.2.dev2 → modal-1.6.2.dev3}/modal/functions.py +0 -0
  166. {modal-1.6.2.dev2 → modal-1.6.2.dev3}/modal/image.py +0 -0
  167. {modal-1.6.2.dev2 → modal-1.6.2.dev3}/modal/image.pyi +0 -0
  168. {modal-1.6.2.dev2 → modal-1.6.2.dev3}/modal/io_streams.py +0 -0
  169. {modal-1.6.2.dev2 → modal-1.6.2.dev3}/modal/io_streams.pyi +0 -0
  170. {modal-1.6.2.dev2 → modal-1.6.2.dev3}/modal/mount.py +0 -0
  171. {modal-1.6.2.dev2 → modal-1.6.2.dev3}/modal/mount.pyi +0 -0
  172. {modal-1.6.2.dev2 → modal-1.6.2.dev3}/modal/network_file_system.py +0 -0
  173. {modal-1.6.2.dev2 → modal-1.6.2.dev3}/modal/network_file_system.pyi +0 -0
  174. {modal-1.6.2.dev2 → modal-1.6.2.dev3}/modal/object.py +0 -0
  175. {modal-1.6.2.dev2 → modal-1.6.2.dev3}/modal/object.pyi +0 -0
  176. {modal-1.6.2.dev2 → modal-1.6.2.dev3}/modal/output.py +0 -0
  177. {modal-1.6.2.dev2 → modal-1.6.2.dev3}/modal/parallel_map.py +0 -0
  178. {modal-1.6.2.dev2 → modal-1.6.2.dev3}/modal/parallel_map.pyi +0 -0
  179. {modal-1.6.2.dev2 → modal-1.6.2.dev3}/modal/partial_function.py +0 -0
  180. {modal-1.6.2.dev2 → modal-1.6.2.dev3}/modal/partial_function.pyi +0 -0
  181. {modal-1.6.2.dev2 → modal-1.6.2.dev3}/modal/proxy.py +0 -0
  182. {modal-1.6.2.dev2 → modal-1.6.2.dev3}/modal/proxy.pyi +0 -0
  183. {modal-1.6.2.dev2 → modal-1.6.2.dev3}/modal/py.typed +0 -0
  184. {modal-1.6.2.dev2 → modal-1.6.2.dev3}/modal/queue.py +0 -0
  185. {modal-1.6.2.dev2 → modal-1.6.2.dev3}/modal/queue.pyi +0 -0
  186. {modal-1.6.2.dev2 → modal-1.6.2.dev3}/modal/retries.py +0 -0
  187. {modal-1.6.2.dev2 → modal-1.6.2.dev3}/modal/runner.py +0 -0
  188. {modal-1.6.2.dev2 → modal-1.6.2.dev3}/modal/runner.pyi +0 -0
  189. {modal-1.6.2.dev2 → modal-1.6.2.dev3}/modal/running_app.py +0 -0
  190. {modal-1.6.2.dev2 → modal-1.6.2.dev3}/modal/sandbox.py +0 -0
  191. {modal-1.6.2.dev2 → modal-1.6.2.dev3}/modal/sandbox.pyi +0 -0
  192. {modal-1.6.2.dev2 → modal-1.6.2.dev3}/modal/sandbox_fs.py +0 -0
  193. {modal-1.6.2.dev2 → modal-1.6.2.dev3}/modal/sandbox_fs.pyi +0 -0
  194. {modal-1.6.2.dev2 → modal-1.6.2.dev3}/modal/schedule.py +0 -0
  195. {modal-1.6.2.dev2 → modal-1.6.2.dev3}/modal/scheduler_placement.py +0 -0
  196. {modal-1.6.2.dev2 → modal-1.6.2.dev3}/modal/secret.py +0 -0
  197. {modal-1.6.2.dev2 → modal-1.6.2.dev3}/modal/secret.pyi +0 -0
  198. {modal-1.6.2.dev2 → modal-1.6.2.dev3}/modal/server.py +0 -0
  199. {modal-1.6.2.dev2 → modal-1.6.2.dev3}/modal/server.pyi +0 -0
  200. {modal-1.6.2.dev2 → modal-1.6.2.dev3}/modal/serving.py +0 -0
  201. {modal-1.6.2.dev2 → modal-1.6.2.dev3}/modal/serving.pyi +0 -0
  202. {modal-1.6.2.dev2 → modal-1.6.2.dev3}/modal/skills/modal/SKILL.md +0 -0
  203. {modal-1.6.2.dev2 → modal-1.6.2.dev3}/modal/snapshot.py +0 -0
  204. {modal-1.6.2.dev2 → modal-1.6.2.dev3}/modal/snapshot.pyi +0 -0
  205. {modal-1.6.2.dev2 → modal-1.6.2.dev3}/modal/stream_type.py +0 -0
  206. {modal-1.6.2.dev2 → modal-1.6.2.dev3}/modal/token_flow.py +0 -0
  207. {modal-1.6.2.dev2 → modal-1.6.2.dev3}/modal/token_flow.pyi +0 -0
  208. {modal-1.6.2.dev2 → modal-1.6.2.dev3}/modal/types.py +0 -0
  209. {modal-1.6.2.dev2 → modal-1.6.2.dev3}/modal/volume.py +0 -0
  210. {modal-1.6.2.dev2 → modal-1.6.2.dev3}/modal/volume.pyi +0 -0
  211. {modal-1.6.2.dev2 → modal-1.6.2.dev3}/modal/workspace.py +0 -0
  212. {modal-1.6.2.dev2 → modal-1.6.2.dev3}/modal/workspace.pyi +0 -0
  213. {modal-1.6.2.dev2 → modal-1.6.2.dev3}/modal.egg-info/SOURCES.txt +0 -0
  214. {modal-1.6.2.dev2 → modal-1.6.2.dev3}/modal.egg-info/dependency_links.txt +0 -0
  215. {modal-1.6.2.dev2 → modal-1.6.2.dev3}/modal.egg-info/entry_points.txt +0 -0
  216. {modal-1.6.2.dev2 → modal-1.6.2.dev3}/modal.egg-info/requires.txt +0 -0
  217. {modal-1.6.2.dev2 → modal-1.6.2.dev3}/modal.egg-info/top_level.txt +0 -0
  218. {modal-1.6.2.dev2 → modal-1.6.2.dev3}/modal_docs/__init__.py +0 -0
  219. {modal-1.6.2.dev2 → modal-1.6.2.dev3}/modal_docs/gen_cli_docs.py +0 -0
  220. {modal-1.6.2.dev2 → modal-1.6.2.dev3}/modal_docs/gen_cli_docs_main.py +0 -0
  221. {modal-1.6.2.dev2 → modal-1.6.2.dev3}/modal_docs/gen_reference_docs.py +0 -0
  222. {modal-1.6.2.dev2 → modal-1.6.2.dev3}/modal_docs/gen_reference_docs_main.py +0 -0
  223. {modal-1.6.2.dev2 → modal-1.6.2.dev3}/modal_docs/mdmd/__init__.py +0 -0
  224. {modal-1.6.2.dev2 → modal-1.6.2.dev3}/modal_docs/mdmd/mdmd.py +0 -0
  225. {modal-1.6.2.dev2 → modal-1.6.2.dev3}/modal_docs/mdmd/signatures.py +0 -0
  226. {modal-1.6.2.dev2 → modal-1.6.2.dev3}/modal_docs/mdmd/types.py +0 -0
  227. {modal-1.6.2.dev2 → modal-1.6.2.dev3}/modal_docs/reference_intro.md +0 -0
  228. {modal-1.6.2.dev2 → modal-1.6.2.dev3}/modal_proto/__init__.py +0 -0
  229. {modal-1.6.2.dev2 → modal-1.6.2.dev3}/modal_proto/api_grpc.py +0 -0
  230. {modal-1.6.2.dev2 → modal-1.6.2.dev3}/modal_proto/api_pb2_grpc.py +0 -0
  231. {modal-1.6.2.dev2 → modal-1.6.2.dev3}/modal_proto/api_pb2_grpc.pyi +0 -0
  232. {modal-1.6.2.dev2 → modal-1.6.2.dev3}/modal_proto/modal_api_grpc.py +0 -0
  233. {modal-1.6.2.dev2 → modal-1.6.2.dev3}/modal_proto/py.typed +0 -0
  234. {modal-1.6.2.dev2 → modal-1.6.2.dev3}/modal_proto/task_command_router_grpc.py +0 -0
  235. {modal-1.6.2.dev2 → modal-1.6.2.dev3}/modal_proto/task_command_router_pb2.py +0 -0
  236. {modal-1.6.2.dev2 → modal-1.6.2.dev3}/modal_proto/task_command_router_pb2.pyi +0 -0
  237. {modal-1.6.2.dev2 → modal-1.6.2.dev3}/modal_proto/task_command_router_pb2_grpc.py +0 -0
  238. {modal-1.6.2.dev2 → modal-1.6.2.dev3}/modal_proto/task_command_router_pb2_grpc.pyi +0 -0
  239. {modal-1.6.2.dev2 → modal-1.6.2.dev3}/modal_version/__main__.py +0 -0
  240. {modal-1.6.2.dev2 → modal-1.6.2.dev3}/pyproject.toml +0 -0
  241. {modal-1.6.2.dev2 → modal-1.6.2.dev3}/setup.cfg +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: modal
3
- Version: 1.6.2.dev2
3
+ Version: 1.6.2.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
@@ -54,7 +54,7 @@ class _EnvironmentManager:
54
54
  modal.Environment.objects.create("my-environment")
55
55
  ```
56
56
  """
57
- check_environment_name(name)
57
+ check_environment_name(name, allow_periods=False)
58
58
 
59
59
  client = await _Client.from_env() if client is None else client
60
60
  request = api_pb2.EnvironmentCreateRequest(name=name, is_managed=restricted)
@@ -464,7 +464,7 @@ class _Environment(_Object, type_prefix="en"):
464
464
  client: _Client | None = None,
465
465
  ) -> "_Environment":
466
466
  """Look up an Environment object using its name."""
467
- check_environment_name(name)
467
+ check_environment_name(name, allow_periods=True)
468
468
  return _Environment._get_or_create(
469
469
  name=name,
470
470
  repr=f"Environment.from_name({name!r})",
@@ -27,13 +27,15 @@ def is_valid_object_name(name: str) -> bool:
27
27
  )
28
28
 
29
29
 
30
- def is_valid_environment_name(name: str) -> bool:
30
+ def is_valid_environment_name(name: str, *, allow_periods: bool) -> bool:
31
31
  # first char is alnum, the rest allows other chars
32
32
  # The "en-" prefix is reserved for environment IDs, so that references
33
33
  # to environments can be resolved by either name or ID unambiguously.
34
+ # New names cannot contain periods, but some existing Environments have them and must stay resolvable.
35
+ rest_chars = r"a-zA-Z0-9-_." if allow_periods else r"a-zA-Z0-9-_"
34
36
  return (
35
37
  len(name) <= 64
36
- and re.match(r"^[a-zA-Z0-9][a-zA-Z0-9-_.]+$", name) is not None
38
+ and re.match(rf"^[a-zA-Z0-9][{rest_chars}]*$", name) is not None
37
39
  and not name.lower().startswith("en-")
38
40
  )
39
41
 
@@ -67,12 +69,12 @@ def check_object_name(name: str, object_type: str) -> None:
67
69
  raise InvalidError(message)
68
70
 
69
71
 
70
- def check_environment_name(name: str) -> None:
72
+ def check_environment_name(name: str, *, allow_periods: bool) -> None:
71
73
  message = (
72
74
  f"Invalid Environment name: '{name}'."
73
- "\n\nEnvironment names can only start with alphanumeric characters,"
74
- " may contain only alphanumeric characters, dashes, periods, and underscores,"
75
- " must be shorter than 64 characters, and cannot start with 'en-'."
75
+ "\n\nEnvironment names must be 1-64 characters, can only start with alphanumeric characters,"
76
+ " may contain only alphanumeric characters, dashes, and underscores,"
77
+ " and cannot start with 'en-'."
76
78
  )
77
- if not is_valid_environment_name(name):
79
+ if not is_valid_environment_name(name, allow_periods=allow_periods):
78
80
  raise InvalidError(message)
@@ -260,7 +260,7 @@ async def list_(*, json: bool = False, env: Optional[str] = None):
260
260
  @click.option(
261
261
  "--name",
262
262
  default=None,
263
- help="Endpoint name. If not provided, a default will be derived from the model name.",
263
+ help="Endpoint name. Defaults to inference-{number} if not provided.",
264
264
  )
265
265
  @click.option(
266
266
  "--model",
@@ -410,6 +410,8 @@ async def create(
410
410
 
411
411
  output = OutputManager.get()
412
412
  output.print(f"[green]✓[/green] Endpoint '{resp.name}' ({resp.endpoint_id}) was created and started provisioning.")
413
+ if resp.model_name:
414
+ output.print(f' → Send [cyan]"model": "{resp.model_name}"[/cyan] in requests to the Endpoint.')
413
415
  if resp.endpoint_page_url:
414
416
  output.print(f" → View progress at [magenta]{resp.endpoint_page_url}[/magenta].")
415
417
  output.print(" → The Endpoint will also appear in [cyan]modal endpoint list[/cyan].")
@@ -517,6 +519,7 @@ async def info(
517
519
  {
518
520
  "name": endpoint_info.name,
519
521
  "endpoint_id": endpoint_id,
522
+ "model_name": endpoint_info.model_name or None,
520
523
  "repo_id": endpoint_info.repo_id,
521
524
  "revision": endpoint_info.revision or None,
522
525
  "volume_id": endpoint_info.volume_id or None,
@@ -547,6 +550,8 @@ async def info(
547
550
  header.add_row(Text("Endpoint:"), endpoint_text)
548
551
  header.add_row(Text("Endpoint ID:"), Text(endpoint_id))
549
552
  header.add_row(Text("State:"), Text(status))
553
+ if endpoint_info.model_name:
554
+ header.add_row(Text("Model name:"), Text(endpoint_info.model_name))
550
555
  model_text = Text(endpoint_info.repo_id)
551
556
  if endpoint_info.revision:
552
557
  model_text.append(f"@{endpoint_info.revision[:7]}")
@@ -87,7 +87,7 @@ def create(
87
87
  default_role: str | None = None,
88
88
  public: bool = False,
89
89
  ):
90
- check_environment_name(name)
90
+ check_environment_name(name, allow_periods=False)
91
91
  Environment.objects.create(
92
92
  name,
93
93
  restricted=restricted,
@@ -116,8 +116,8 @@ def update(
116
116
  if set_name is None and set_web_suffix is None:
117
117
  raise UsageError("You need to at least one new property (using --set-name or --set-web-suffix)")
118
118
 
119
- if set_name:
120
- check_environment_name(set_name)
119
+ if set_name and set_name != current_name:
120
+ check_environment_name(set_name, allow_periods=False)
121
121
 
122
122
  environments.update_environment(current_name, new_name=set_name, new_web_suffix=set_web_suffix)
123
123
  rich.print("[green]✓[/green] Environment updated")
@@ -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.dev2",
83
+ version: str = "1.6.2.dev3",
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.dev2",
293
+ version: str = "1.6.2.dev3",
294
294
  *,
295
295
  oauth_credentials: typing.Optional[_OAuthCredentials] = None,
296
296
  ):
@@ -613,7 +613,7 @@ class Function(
613
613
 
614
614
  _call_generator: ___call_generator_spec
615
615
 
616
- class __remote_spec(typing_extensions.Protocol[ReturnType_INNER, P_INNER]):
616
+ class __remote_spec(typing_extensions.Protocol[P_INNER, ReturnType_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.ReturnType, modal._functions.P]
641
+ remote: __remote_spec[modal._functions.P, modal._functions.ReturnType]
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[ReturnType_INNER, P_INNER]):
691
+ class ___experimental_spawn_spec(typing_extensions.Protocol[P_INNER, ReturnType_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.ReturnType, modal._functions.P]
724
+ _experimental_spawn: ___experimental_spawn_spec[modal._functions.P, modal._functions.ReturnType]
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[ReturnType_INNER, P_INNER]):
732
+ class __spawn_spec(typing_extensions.Protocol[P_INNER, ReturnType_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.ReturnType, modal._functions.P]
765
+ spawn: __spawn_spec[modal._functions.P, modal._functions.ReturnType]
766
766
 
767
767
  @property
768
768
  def _raw_f_(self) -> collections.abc.Callable[..., typing.Any]: ...
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: modal
3
- Version: 1.6.2.dev2
3
+ Version: 1.6.2.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