modal 1.6.0__tar.gz → 1.6.1.dev0__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 (242) hide show
  1. {modal-1.6.0 → modal-1.6.1.dev0}/PKG-INFO +1 -1
  2. {modal-1.6.0 → modal-1.6.1.dev0}/modal/_functions.py +2 -2
  3. {modal-1.6.0 → modal-1.6.1.dev0}/modal/_object.py +17 -9
  4. modal-1.6.1.dev0/modal/cli/endpoint.py +779 -0
  5. {modal-1.6.0 → modal-1.6.1.dev0}/modal/cli/server.py +170 -107
  6. {modal-1.6.0 → modal-1.6.1.dev0}/modal/client.pyi +2 -2
  7. {modal-1.6.0 → modal-1.6.1.dev0}/modal/dict.py +4 -4
  8. {modal-1.6.0 → modal-1.6.1.dev0}/modal/dict.pyi +9 -9
  9. {modal-1.6.0 → modal-1.6.1.dev0}/modal/functions.pyi +6 -4
  10. {modal-1.6.0 → modal-1.6.1.dev0}/modal/network_file_system.py +3 -3
  11. {modal-1.6.0 → modal-1.6.1.dev0}/modal/network_file_system.pyi +6 -6
  12. {modal-1.6.0 → modal-1.6.1.dev0}/modal/object.pyi +1 -1
  13. {modal-1.6.0 → modal-1.6.1.dev0}/modal/parallel_map.py +4 -4
  14. {modal-1.6.0 → modal-1.6.1.dev0}/modal/parallel_map.pyi +3 -3
  15. {modal-1.6.0 → modal-1.6.1.dev0}/modal/sandbox.py +15 -0
  16. {modal-1.6.0 → modal-1.6.1.dev0}/modal/sandbox.pyi +12 -0
  17. {modal-1.6.0 → modal-1.6.1.dev0}/modal/token_flow.py +2 -1
  18. {modal-1.6.0 → modal-1.6.1.dev0}/modal/volume.py +2 -2
  19. {modal-1.6.0 → modal-1.6.1.dev0}/modal/volume.pyi +9 -3
  20. {modal-1.6.0 → modal-1.6.1.dev0}/modal.egg-info/PKG-INFO +1 -1
  21. {modal-1.6.0 → modal-1.6.1.dev0}/modal_version/__init__.py +1 -1
  22. modal-1.6.0/modal/cli/endpoint.py +0 -372
  23. {modal-1.6.0 → modal-1.6.1.dev0}/LICENSE +0 -0
  24. {modal-1.6.0 → modal-1.6.1.dev0}/README.md +0 -0
  25. {modal-1.6.0 → modal-1.6.1.dev0}/modal/__init__.py +0 -0
  26. {modal-1.6.0 → modal-1.6.1.dev0}/modal/__main__.py +0 -0
  27. {modal-1.6.0 → modal-1.6.1.dev0}/modal/_billing.py +0 -0
  28. {modal-1.6.0 → modal-1.6.1.dev0}/modal/_cluster.py +0 -0
  29. {modal-1.6.0 → modal-1.6.1.dev0}/modal/_cluster.pyi +0 -0
  30. {modal-1.6.0 → modal-1.6.1.dev0}/modal/_container_entrypoint.py +0 -0
  31. {modal-1.6.0 → modal-1.6.1.dev0}/modal/_environments.py +0 -0
  32. {modal-1.6.0 → modal-1.6.1.dev0}/modal/_function_variants.py +0 -0
  33. {modal-1.6.0 → modal-1.6.1.dev0}/modal/_grpc_client.py +0 -0
  34. {modal-1.6.0 → modal-1.6.1.dev0}/modal/_image.py +0 -0
  35. {modal-1.6.0 → modal-1.6.1.dev0}/modal/_ipython.py +0 -0
  36. {modal-1.6.0 → modal-1.6.1.dev0}/modal/_load_context.py +0 -0
  37. {modal-1.6.0 → modal-1.6.1.dev0}/modal/_location.py +0 -0
  38. {modal-1.6.0 → modal-1.6.1.dev0}/modal/_logs.py +0 -0
  39. {modal-1.6.0 → modal-1.6.1.dev0}/modal/_logs_manager.py +0 -0
  40. {modal-1.6.0 → modal-1.6.1.dev0}/modal/_logs_manager.pyi +0 -0
  41. {modal-1.6.0 → modal-1.6.1.dev0}/modal/_outbound_policy.py +0 -0
  42. {modal-1.6.0 → modal-1.6.1.dev0}/modal/_outbound_policy.pyi +0 -0
  43. {modal-1.6.0 → modal-1.6.1.dev0}/modal/_output/__init__.py +0 -0
  44. {modal-1.6.0 → modal-1.6.1.dev0}/modal/_output/manager.py +0 -0
  45. {modal-1.6.0 → modal-1.6.1.dev0}/modal/_output/pty.py +0 -0
  46. {modal-1.6.0 → modal-1.6.1.dev0}/modal/_output/rich.py +0 -0
  47. {modal-1.6.0 → modal-1.6.1.dev0}/modal/_output/status.py +0 -0
  48. {modal-1.6.0 → modal-1.6.1.dev0}/modal/_partial_function.py +0 -0
  49. {modal-1.6.0 → modal-1.6.1.dev0}/modal/_resolver.py +0 -0
  50. {modal-1.6.0 → modal-1.6.1.dev0}/modal/_resources.py +0 -0
  51. {modal-1.6.0 → modal-1.6.1.dev0}/modal/_runtime/__init__.py +0 -0
  52. {modal-1.6.0 → modal-1.6.1.dev0}/modal/_runtime/asgi.py +0 -0
  53. {modal-1.6.0 → modal-1.6.1.dev0}/modal/_runtime/container_io_manager.py +0 -0
  54. {modal-1.6.0 → modal-1.6.1.dev0}/modal/_runtime/container_io_manager.pyi +0 -0
  55. {modal-1.6.0 → modal-1.6.1.dev0}/modal/_runtime/execution_context.py +0 -0
  56. {modal-1.6.0 → modal-1.6.1.dev0}/modal/_runtime/execution_context.pyi +0 -0
  57. {modal-1.6.0 → modal-1.6.1.dev0}/modal/_runtime/gpu_memory_snapshot.py +0 -0
  58. {modal-1.6.0 → modal-1.6.1.dev0}/modal/_runtime/task_lifecycle_manager.py +0 -0
  59. {modal-1.6.0 → modal-1.6.1.dev0}/modal/_runtime/task_lifecycle_manager.pyi +0 -0
  60. {modal-1.6.0 → modal-1.6.1.dev0}/modal/_runtime/telemetry.py +0 -0
  61. {modal-1.6.0 → modal-1.6.1.dev0}/modal/_runtime/user_code_event_loop.py +0 -0
  62. {modal-1.6.0 → modal-1.6.1.dev0}/modal/_runtime/user_code_imports.py +0 -0
  63. {modal-1.6.0 → modal-1.6.1.dev0}/modal/_serialization.py +0 -0
  64. {modal-1.6.0 → modal-1.6.1.dev0}/modal/_server.py +0 -0
  65. {modal-1.6.0 → modal-1.6.1.dev0}/modal/_server.pyi +0 -0
  66. {modal-1.6.0 → modal-1.6.1.dev0}/modal/_supports_logs.py +0 -0
  67. {modal-1.6.0 → modal-1.6.1.dev0}/modal/_traceback.py +0 -0
  68. {modal-1.6.0 → modal-1.6.1.dev0}/modal/_tunnel.py +0 -0
  69. {modal-1.6.0 → modal-1.6.1.dev0}/modal/_tunnel.pyi +0 -0
  70. {modal-1.6.0 → modal-1.6.1.dev0}/modal/_type_manager.py +0 -0
  71. {modal-1.6.0 → modal-1.6.1.dev0}/modal/_utils/__init__.py +0 -0
  72. {modal-1.6.0 → modal-1.6.1.dev0}/modal/_utils/app_utils.py +0 -0
  73. {modal-1.6.0 → modal-1.6.1.dev0}/modal/_utils/async_utils.py +0 -0
  74. {modal-1.6.0 → modal-1.6.1.dev0}/modal/_utils/auth_token_manager.py +0 -0
  75. {modal-1.6.0 → modal-1.6.1.dev0}/modal/_utils/blob_utils.py +0 -0
  76. {modal-1.6.0 → modal-1.6.1.dev0}/modal/_utils/browser_utils.py +0 -0
  77. {modal-1.6.0 → modal-1.6.1.dev0}/modal/_utils/bytes_io_segment_payload.py +0 -0
  78. {modal-1.6.0 → modal-1.6.1.dev0}/modal/_utils/curl_utils.py +0 -0
  79. {modal-1.6.0 → modal-1.6.1.dev0}/modal/_utils/deprecation.py +0 -0
  80. {modal-1.6.0 → modal-1.6.1.dev0}/modal/_utils/display_utils.py +0 -0
  81. {modal-1.6.0 → modal-1.6.1.dev0}/modal/_utils/docker_utils.py +0 -0
  82. {modal-1.6.0 → modal-1.6.1.dev0}/modal/_utils/function_utils.py +0 -0
  83. {modal-1.6.0 → modal-1.6.1.dev0}/modal/_utils/git_utils.py +0 -0
  84. {modal-1.6.0 → modal-1.6.1.dev0}/modal/_utils/grpc_testing.py +0 -0
  85. {modal-1.6.0 → modal-1.6.1.dev0}/modal/_utils/grpc_utils.py +0 -0
  86. {modal-1.6.0 → modal-1.6.1.dev0}/modal/_utils/hash_utils.py +0 -0
  87. {modal-1.6.0 → modal-1.6.1.dev0}/modal/_utils/http_utils.py +0 -0
  88. {modal-1.6.0 → modal-1.6.1.dev0}/modal/_utils/idle_countdown.py +0 -0
  89. {modal-1.6.0 → modal-1.6.1.dev0}/modal/_utils/jwt_utils.py +0 -0
  90. {modal-1.6.0 → modal-1.6.1.dev0}/modal/_utils/logger.py +0 -0
  91. {modal-1.6.0 → modal-1.6.1.dev0}/modal/_utils/mount_utils.py +0 -0
  92. {modal-1.6.0 → modal-1.6.1.dev0}/modal/_utils/name_utils.py +0 -0
  93. {modal-1.6.0 → modal-1.6.1.dev0}/modal/_utils/package_utils.py +0 -0
  94. {modal-1.6.0 → modal-1.6.1.dev0}/modal/_utils/pattern_utils.py +0 -0
  95. {modal-1.6.0 → modal-1.6.1.dev0}/modal/_utils/proxy_support.py +0 -0
  96. {modal-1.6.0 → modal-1.6.1.dev0}/modal/_utils/rand_pb_testing.py +0 -0
  97. {modal-1.6.0 → modal-1.6.1.dev0}/modal/_utils/sandbox_fs_utils.py +0 -0
  98. {modal-1.6.0 → modal-1.6.1.dev0}/modal/_utils/shell_utils.py +0 -0
  99. {modal-1.6.0 → modal-1.6.1.dev0}/modal/_utils/task_command_router_client.py +0 -0
  100. {modal-1.6.0 → modal-1.6.1.dev0}/modal/_utils/time_utils.py +0 -0
  101. {modal-1.6.0 → modal-1.6.1.dev0}/modal/_vendor/__init__.py +0 -0
  102. {modal-1.6.0 → modal-1.6.1.dev0}/modal/_vendor/a2wsgi_wsgi.py +0 -0
  103. {modal-1.6.0 → modal-1.6.1.dev0}/modal/_vendor/cloudpickle.py +0 -0
  104. {modal-1.6.0 → modal-1.6.1.dev0}/modal/_vendor/tblib.py +0 -0
  105. {modal-1.6.0 → modal-1.6.1.dev0}/modal/_vendor/version.py +0 -0
  106. {modal-1.6.0 → modal-1.6.1.dev0}/modal/_watcher.py +0 -0
  107. {modal-1.6.0 → modal-1.6.1.dev0}/modal/_workspace.py +0 -0
  108. {modal-1.6.0 → modal-1.6.1.dev0}/modal/app.py +0 -0
  109. {modal-1.6.0 → modal-1.6.1.dev0}/modal/app.pyi +0 -0
  110. {modal-1.6.0 → modal-1.6.1.dev0}/modal/billing.py +0 -0
  111. {modal-1.6.0 → modal-1.6.1.dev0}/modal/billing.pyi +0 -0
  112. {modal-1.6.0 → modal-1.6.1.dev0}/modal/builder/2023.12.312.txt +0 -0
  113. {modal-1.6.0 → modal-1.6.1.dev0}/modal/builder/2023.12.txt +0 -0
  114. {modal-1.6.0 → modal-1.6.1.dev0}/modal/builder/2024.04.txt +0 -0
  115. {modal-1.6.0 → modal-1.6.1.dev0}/modal/builder/2024.10.txt +0 -0
  116. {modal-1.6.0 → modal-1.6.1.dev0}/modal/builder/2025.06.txt +0 -0
  117. {modal-1.6.0 → modal-1.6.1.dev0}/modal/builder/PREVIEW.txt +0 -0
  118. {modal-1.6.0 → modal-1.6.1.dev0}/modal/builder/README.md +0 -0
  119. {modal-1.6.0 → modal-1.6.1.dev0}/modal/builder/base-images.json +0 -0
  120. {modal-1.6.0 → modal-1.6.1.dev0}/modal/call_graph.py +0 -0
  121. {modal-1.6.0 → modal-1.6.1.dev0}/modal/cli/__init__.py +0 -0
  122. {modal-1.6.0 → modal-1.6.1.dev0}/modal/cli/_download.py +0 -0
  123. {modal-1.6.0 → modal-1.6.1.dev0}/modal/cli/_help.py +0 -0
  124. {modal-1.6.0 → modal-1.6.1.dev0}/modal/cli/_logs.py +0 -0
  125. {modal-1.6.0 → modal-1.6.1.dev0}/modal/cli/_stats.py +0 -0
  126. {modal-1.6.0 → modal-1.6.1.dev0}/modal/cli/_traceback.py +0 -0
  127. {modal-1.6.0 → modal-1.6.1.dev0}/modal/cli/app.py +0 -0
  128. {modal-1.6.0 → modal-1.6.1.dev0}/modal/cli/billing.py +0 -0
  129. {modal-1.6.0 → modal-1.6.1.dev0}/modal/cli/changelog.py +0 -0
  130. {modal-1.6.0 → modal-1.6.1.dev0}/modal/cli/config.py +0 -0
  131. {modal-1.6.0 → modal-1.6.1.dev0}/modal/cli/container.py +0 -0
  132. {modal-1.6.0 → modal-1.6.1.dev0}/modal/cli/curl.py +0 -0
  133. {modal-1.6.0 → modal-1.6.1.dev0}/modal/cli/dashboard.py +0 -0
  134. {modal-1.6.0 → modal-1.6.1.dev0}/modal/cli/dict.py +0 -0
  135. {modal-1.6.0 → modal-1.6.1.dev0}/modal/cli/entry_point.py +0 -0
  136. {modal-1.6.0 → modal-1.6.1.dev0}/modal/cli/environment.py +0 -0
  137. {modal-1.6.0 → modal-1.6.1.dev0}/modal/cli/function.py +0 -0
  138. {modal-1.6.0 → modal-1.6.1.dev0}/modal/cli/image.py +0 -0
  139. {modal-1.6.0 → modal-1.6.1.dev0}/modal/cli/import_refs.py +0 -0
  140. {modal-1.6.0 → modal-1.6.1.dev0}/modal/cli/logo.py +0 -0
  141. {modal-1.6.0 → modal-1.6.1.dev0}/modal/cli/network_file_system.py +0 -0
  142. {modal-1.6.0 → modal-1.6.1.dev0}/modal/cli/profile.py +0 -0
  143. {modal-1.6.0 → modal-1.6.1.dev0}/modal/cli/queues.py +0 -0
  144. {modal-1.6.0 → modal-1.6.1.dev0}/modal/cli/run.py +0 -0
  145. {modal-1.6.0 → modal-1.6.1.dev0}/modal/cli/secret.py +0 -0
  146. {modal-1.6.0 → modal-1.6.1.dev0}/modal/cli/selector.py +0 -0
  147. {modal-1.6.0 → modal-1.6.1.dev0}/modal/cli/shell.py +0 -0
  148. {modal-1.6.0 → modal-1.6.1.dev0}/modal/cli/skills.py +0 -0
  149. {modal-1.6.0 → modal-1.6.1.dev0}/modal/cli/token.py +0 -0
  150. {modal-1.6.0 → modal-1.6.1.dev0}/modal/cli/utils.py +0 -0
  151. {modal-1.6.0 → modal-1.6.1.dev0}/modal/cli/volume.py +0 -0
  152. {modal-1.6.0 → modal-1.6.1.dev0}/modal/cli/workspace.py +0 -0
  153. {modal-1.6.0 → modal-1.6.1.dev0}/modal/client.py +0 -0
  154. {modal-1.6.0 → modal-1.6.1.dev0}/modal/cloud_bucket_mount.py +0 -0
  155. {modal-1.6.0 → modal-1.6.1.dev0}/modal/cloud_bucket_mount.pyi +0 -0
  156. {modal-1.6.0 → modal-1.6.1.dev0}/modal/cls.py +0 -0
  157. {modal-1.6.0 → modal-1.6.1.dev0}/modal/cls.pyi +0 -0
  158. {modal-1.6.0 → modal-1.6.1.dev0}/modal/cluster.py +0 -0
  159. {modal-1.6.0 → modal-1.6.1.dev0}/modal/cluster.pyi +0 -0
  160. {modal-1.6.0 → modal-1.6.1.dev0}/modal/config.py +0 -0
  161. {modal-1.6.0 → modal-1.6.1.dev0}/modal/container_process.py +0 -0
  162. {modal-1.6.0 → modal-1.6.1.dev0}/modal/container_process.pyi +0 -0
  163. {modal-1.6.0 → modal-1.6.1.dev0}/modal/environments.py +0 -0
  164. {modal-1.6.0 → modal-1.6.1.dev0}/modal/environments.pyi +0 -0
  165. {modal-1.6.0 → modal-1.6.1.dev0}/modal/exception.py +0 -0
  166. {modal-1.6.0 → modal-1.6.1.dev0}/modal/experimental/__init__.py +0 -0
  167. {modal-1.6.0 → modal-1.6.1.dev0}/modal/experimental/_flash_container_entry.py +0 -0
  168. {modal-1.6.0 → modal-1.6.1.dev0}/modal/experimental/flash.py +0 -0
  169. {modal-1.6.0 → modal-1.6.1.dev0}/modal/experimental/flash.pyi +0 -0
  170. {modal-1.6.0 → modal-1.6.1.dev0}/modal/experimental/flash_server.py +0 -0
  171. {modal-1.6.0 → modal-1.6.1.dev0}/modal/experimental/flash_server.pyi +0 -0
  172. {modal-1.6.0 → modal-1.6.1.dev0}/modal/experimental/ipython.py +0 -0
  173. {modal-1.6.0 → modal-1.6.1.dev0}/modal/file_pattern_matcher.py +0 -0
  174. {modal-1.6.0 → modal-1.6.1.dev0}/modal/functions.py +0 -0
  175. {modal-1.6.0 → modal-1.6.1.dev0}/modal/image.py +0 -0
  176. {modal-1.6.0 → modal-1.6.1.dev0}/modal/image.pyi +0 -0
  177. {modal-1.6.0 → modal-1.6.1.dev0}/modal/io_streams.py +0 -0
  178. {modal-1.6.0 → modal-1.6.1.dev0}/modal/io_streams.pyi +0 -0
  179. {modal-1.6.0 → modal-1.6.1.dev0}/modal/mount.py +0 -0
  180. {modal-1.6.0 → modal-1.6.1.dev0}/modal/mount.pyi +0 -0
  181. {modal-1.6.0 → modal-1.6.1.dev0}/modal/object.py +0 -0
  182. {modal-1.6.0 → modal-1.6.1.dev0}/modal/output.py +0 -0
  183. {modal-1.6.0 → modal-1.6.1.dev0}/modal/partial_function.py +0 -0
  184. {modal-1.6.0 → modal-1.6.1.dev0}/modal/partial_function.pyi +0 -0
  185. {modal-1.6.0 → modal-1.6.1.dev0}/modal/proxy.py +0 -0
  186. {modal-1.6.0 → modal-1.6.1.dev0}/modal/proxy.pyi +0 -0
  187. {modal-1.6.0 → modal-1.6.1.dev0}/modal/py.typed +0 -0
  188. {modal-1.6.0 → modal-1.6.1.dev0}/modal/queue.py +0 -0
  189. {modal-1.6.0 → modal-1.6.1.dev0}/modal/queue.pyi +0 -0
  190. {modal-1.6.0 → modal-1.6.1.dev0}/modal/retries.py +0 -0
  191. {modal-1.6.0 → modal-1.6.1.dev0}/modal/runner.py +0 -0
  192. {modal-1.6.0 → modal-1.6.1.dev0}/modal/runner.pyi +0 -0
  193. {modal-1.6.0 → modal-1.6.1.dev0}/modal/running_app.py +0 -0
  194. {modal-1.6.0 → modal-1.6.1.dev0}/modal/sandbox_fs.py +0 -0
  195. {modal-1.6.0 → modal-1.6.1.dev0}/modal/sandbox_fs.pyi +0 -0
  196. {modal-1.6.0 → modal-1.6.1.dev0}/modal/schedule.py +0 -0
  197. {modal-1.6.0 → modal-1.6.1.dev0}/modal/scheduler_placement.py +0 -0
  198. {modal-1.6.0 → modal-1.6.1.dev0}/modal/secret.py +0 -0
  199. {modal-1.6.0 → modal-1.6.1.dev0}/modal/secret.pyi +0 -0
  200. {modal-1.6.0 → modal-1.6.1.dev0}/modal/server.py +0 -0
  201. {modal-1.6.0 → modal-1.6.1.dev0}/modal/server.pyi +0 -0
  202. {modal-1.6.0 → modal-1.6.1.dev0}/modal/serving.py +0 -0
  203. {modal-1.6.0 → modal-1.6.1.dev0}/modal/serving.pyi +0 -0
  204. {modal-1.6.0 → modal-1.6.1.dev0}/modal/skills/modal/SKILL.md +0 -0
  205. {modal-1.6.0 → modal-1.6.1.dev0}/modal/snapshot.py +0 -0
  206. {modal-1.6.0 → modal-1.6.1.dev0}/modal/snapshot.pyi +0 -0
  207. {modal-1.6.0 → modal-1.6.1.dev0}/modal/stream_type.py +0 -0
  208. {modal-1.6.0 → modal-1.6.1.dev0}/modal/token_flow.pyi +0 -0
  209. {modal-1.6.0 → modal-1.6.1.dev0}/modal/types.py +0 -0
  210. {modal-1.6.0 → modal-1.6.1.dev0}/modal/workspace.py +0 -0
  211. {modal-1.6.0 → modal-1.6.1.dev0}/modal/workspace.pyi +0 -0
  212. {modal-1.6.0 → modal-1.6.1.dev0}/modal.egg-info/SOURCES.txt +0 -0
  213. {modal-1.6.0 → modal-1.6.1.dev0}/modal.egg-info/dependency_links.txt +0 -0
  214. {modal-1.6.0 → modal-1.6.1.dev0}/modal.egg-info/entry_points.txt +0 -0
  215. {modal-1.6.0 → modal-1.6.1.dev0}/modal.egg-info/requires.txt +0 -0
  216. {modal-1.6.0 → modal-1.6.1.dev0}/modal.egg-info/top_level.txt +0 -0
  217. {modal-1.6.0 → modal-1.6.1.dev0}/modal_docs/__init__.py +0 -0
  218. {modal-1.6.0 → modal-1.6.1.dev0}/modal_docs/gen_cli_docs.py +0 -0
  219. {modal-1.6.0 → modal-1.6.1.dev0}/modal_docs/gen_cli_docs_main.py +0 -0
  220. {modal-1.6.0 → modal-1.6.1.dev0}/modal_docs/gen_reference_docs.py +0 -0
  221. {modal-1.6.0 → modal-1.6.1.dev0}/modal_docs/gen_reference_docs_main.py +0 -0
  222. {modal-1.6.0 → modal-1.6.1.dev0}/modal_docs/mdmd/__init__.py +0 -0
  223. {modal-1.6.0 → modal-1.6.1.dev0}/modal_docs/mdmd/mdmd.py +0 -0
  224. {modal-1.6.0 → modal-1.6.1.dev0}/modal_docs/mdmd/signatures.py +0 -0
  225. {modal-1.6.0 → modal-1.6.1.dev0}/modal_docs/mdmd/types.py +0 -0
  226. {modal-1.6.0 → modal-1.6.1.dev0}/modal_docs/reference_intro.md +0 -0
  227. {modal-1.6.0 → modal-1.6.1.dev0}/modal_proto/__init__.py +0 -0
  228. {modal-1.6.0 → modal-1.6.1.dev0}/modal_proto/api_grpc.py +0 -0
  229. {modal-1.6.0 → modal-1.6.1.dev0}/modal_proto/api_pb2.py +0 -0
  230. {modal-1.6.0 → modal-1.6.1.dev0}/modal_proto/api_pb2.pyi +0 -0
  231. {modal-1.6.0 → modal-1.6.1.dev0}/modal_proto/api_pb2_grpc.py +0 -0
  232. {modal-1.6.0 → modal-1.6.1.dev0}/modal_proto/api_pb2_grpc.pyi +0 -0
  233. {modal-1.6.0 → modal-1.6.1.dev0}/modal_proto/modal_api_grpc.py +0 -0
  234. {modal-1.6.0 → modal-1.6.1.dev0}/modal_proto/py.typed +0 -0
  235. {modal-1.6.0 → modal-1.6.1.dev0}/modal_proto/task_command_router_grpc.py +0 -0
  236. {modal-1.6.0 → modal-1.6.1.dev0}/modal_proto/task_command_router_pb2.py +0 -0
  237. {modal-1.6.0 → modal-1.6.1.dev0}/modal_proto/task_command_router_pb2.pyi +0 -0
  238. {modal-1.6.0 → modal-1.6.1.dev0}/modal_proto/task_command_router_pb2_grpc.py +0 -0
  239. {modal-1.6.0 → modal-1.6.1.dev0}/modal_proto/task_command_router_pb2_grpc.pyi +0 -0
  240. {modal-1.6.0 → modal-1.6.1.dev0}/modal_version/__main__.py +0 -0
  241. {modal-1.6.0 → modal-1.6.1.dev0}/pyproject.toml +0 -0
  242. {modal-1.6.0 → modal-1.6.1.dev0}/setup.cfg +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: modal
3
- Version: 1.6.0
3
+ Version: 1.6.1.dev0
4
4
  Summary: Python client library for Modal
5
5
  Author-email: Modal Labs <support@modal.com>
6
6
  License-Expression: Apache-2.0
@@ -7,7 +7,7 @@ import time
7
7
  import typing
8
8
  import warnings
9
9
  from collections import OrderedDict
10
- from collections.abc import AsyncGenerator, AsyncIterator, Callable, Collection, Sequence
10
+ from collections.abc import AsyncGenerator, Callable, Collection, Sequence
11
11
  from dataclasses import dataclass
12
12
  from datetime import datetime, timedelta, timezone
13
13
  from pathlib import PurePosixPath
@@ -2405,7 +2405,7 @@ class _FunctionCall(typing.Generic[ReturnType], _Object, type_prefix="fc"):
2405
2405
  return await self._invocation().poll_function(timeout=timeout, index=index)
2406
2406
 
2407
2407
  @live_method_gen
2408
- async def iter(self, *, start: int = 0, end: int | None = None) -> AsyncIterator[ReturnType]:
2408
+ async def iter(self, *, start: int = 0, end: int | None = None) -> AsyncGenerator[ReturnType, None]:
2409
2409
  """Iterate in-order over the results of the function call.
2410
2410
 
2411
2411
  Optionally, specify a range [start, end) to iterate over.
@@ -4,10 +4,10 @@ import typing
4
4
  import uuid
5
5
  from collections.abc import Awaitable, Callable, Hashable, Sequence
6
6
  from functools import wraps
7
- from typing import ClassVar
7
+ from typing import Any, AsyncContextManager, AsyncGenerator, AsyncIterator, ClassVar, ParamSpec, TypeVar
8
8
 
9
9
  from google.protobuf.message import Message
10
- from typing_extensions import Self
10
+ from typing_extensions import Concatenate, Self
11
11
 
12
12
  from ._load_context import LoadContext
13
13
  from ._resolver import Resolver
@@ -38,18 +38,24 @@ def _get_environment_name(
38
38
  return config.get("environment") or ""
39
39
 
40
40
 
41
- def live_method(method):
41
+ P = ParamSpec("P")
42
+ T = TypeVar("T")
43
+
44
+
45
+ def live_method(method: Callable[Concatenate[Any, P], Awaitable[T]]) -> Callable[Concatenate[Any, P], Awaitable[T]]:
42
46
  @wraps(method)
43
- async def wrapped(self, *args, **kwargs):
47
+ async def wrapped(self, *args: P.args, **kwargs: P.kwargs) -> T:
44
48
  await self.hydrate()
45
49
  return await method(self, *args, **kwargs)
46
50
 
47
51
  return wrapped
48
52
 
49
53
 
50
- def live_method_gen(method):
54
+ def live_method_gen(
55
+ method: Callable[Concatenate[Any, P], AsyncGenerator[T, None]],
56
+ ) -> Callable[Concatenate[Any, P], AsyncIterator[T]]:
51
57
  @wraps(method)
52
- async def wrapped(self, *args, **kwargs):
58
+ async def wrapped(self, *args: P.args, **kwargs: P.kwargs) -> AsyncIterator[T]:
53
59
  await self.hydrate()
54
60
  async with aclosing(method(self, *args, **kwargs)) as stream:
55
61
  async for item in stream:
@@ -58,14 +64,16 @@ def live_method_gen(method):
58
64
  return wrapped
59
65
 
60
66
 
61
- def live_method_contextmanager(method):
67
+ def live_method_contextmanager(
68
+ method: Callable[Concatenate[Any, P], AsyncContextManager[T]],
69
+ ) -> Callable[Concatenate[Any, P], AsyncContextManager[T]]:
62
70
  # make sure a wrapped function returning an async context manager
63
71
  # will not require both an `await func.aio()` and `async with`
64
72
  # which would have been the case if it was wrapped in live_method
65
73
 
66
74
  @wraps(method)
67
75
  @contextlib.asynccontextmanager
68
- async def wrapped(self, *args, **kwargs):
76
+ async def wrapped(self, *args: P.args, **kwargs: P.kwargs):
69
77
  await self.hydrate()
70
78
  async with method(self, *args, **kwargs) as ctx:
71
79
  yield ctx
@@ -75,7 +83,7 @@ def live_method_contextmanager(method):
75
83
 
76
84
  class _Object:
77
85
  _type_prefix: ClassVar[str | None] = None
78
- _prefix_to_type: ClassVar[dict[str, type]] = {}
86
+ _prefix_to_type: ClassVar[dict[str, type["_Object"]]] = {}
79
87
 
80
88
  # For constructors
81
89
  _load: Callable[[Self, Resolver, LoadContext, str | None], Awaitable[None]] | None = None