modal 1.5.6.dev31__tar.gz → 1.6.0__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.

Potentially problematic release.


This version of modal might be problematic. Click here for more details.

Files changed (241) hide show
  1. {modal-1.5.6.dev31 → modal-1.6.0}/PKG-INFO +1 -1
  2. {modal-1.5.6.dev31 → modal-1.6.0}/modal/_functions.py +2 -2
  3. {modal-1.5.6.dev31 → modal-1.6.0}/modal/_partial_function.py +1 -1
  4. {modal-1.5.6.dev31 → modal-1.6.0}/modal/_server.py +11 -9
  5. {modal-1.5.6.dev31 → modal-1.6.0}/modal/_server.pyi +23 -17
  6. {modal-1.5.6.dev31 → modal-1.6.0}/modal/client.pyi +2 -2
  7. {modal-1.5.6.dev31 → modal-1.6.0}/modal/functions.pyi +6 -6
  8. {modal-1.5.6.dev31 → modal-1.6.0}/modal/partial_function.pyi +1 -1
  9. {modal-1.5.6.dev31 → modal-1.6.0}/modal/server.pyi +1 -1
  10. {modal-1.5.6.dev31 → modal-1.6.0}/modal/types.py +4 -1
  11. {modal-1.5.6.dev31 → modal-1.6.0}/modal.egg-info/PKG-INFO +1 -1
  12. {modal-1.5.6.dev31 → modal-1.6.0}/modal_version/__init__.py +1 -1
  13. {modal-1.5.6.dev31 → modal-1.6.0}/LICENSE +0 -0
  14. {modal-1.5.6.dev31 → modal-1.6.0}/README.md +0 -0
  15. {modal-1.5.6.dev31 → modal-1.6.0}/modal/__init__.py +0 -0
  16. {modal-1.5.6.dev31 → modal-1.6.0}/modal/__main__.py +0 -0
  17. {modal-1.5.6.dev31 → modal-1.6.0}/modal/_billing.py +0 -0
  18. {modal-1.5.6.dev31 → modal-1.6.0}/modal/_cluster.py +0 -0
  19. {modal-1.5.6.dev31 → modal-1.6.0}/modal/_cluster.pyi +0 -0
  20. {modal-1.5.6.dev31 → modal-1.6.0}/modal/_container_entrypoint.py +0 -0
  21. {modal-1.5.6.dev31 → modal-1.6.0}/modal/_environments.py +0 -0
  22. {modal-1.5.6.dev31 → modal-1.6.0}/modal/_function_variants.py +0 -0
  23. {modal-1.5.6.dev31 → modal-1.6.0}/modal/_grpc_client.py +0 -0
  24. {modal-1.5.6.dev31 → modal-1.6.0}/modal/_image.py +0 -0
  25. {modal-1.5.6.dev31 → modal-1.6.0}/modal/_ipython.py +0 -0
  26. {modal-1.5.6.dev31 → modal-1.6.0}/modal/_load_context.py +0 -0
  27. {modal-1.5.6.dev31 → modal-1.6.0}/modal/_location.py +0 -0
  28. {modal-1.5.6.dev31 → modal-1.6.0}/modal/_logs.py +0 -0
  29. {modal-1.5.6.dev31 → modal-1.6.0}/modal/_logs_manager.py +0 -0
  30. {modal-1.5.6.dev31 → modal-1.6.0}/modal/_logs_manager.pyi +0 -0
  31. {modal-1.5.6.dev31 → modal-1.6.0}/modal/_object.py +0 -0
  32. {modal-1.5.6.dev31 → modal-1.6.0}/modal/_outbound_policy.py +0 -0
  33. {modal-1.5.6.dev31 → modal-1.6.0}/modal/_outbound_policy.pyi +0 -0
  34. {modal-1.5.6.dev31 → modal-1.6.0}/modal/_output/__init__.py +0 -0
  35. {modal-1.5.6.dev31 → modal-1.6.0}/modal/_output/manager.py +0 -0
  36. {modal-1.5.6.dev31 → modal-1.6.0}/modal/_output/pty.py +0 -0
  37. {modal-1.5.6.dev31 → modal-1.6.0}/modal/_output/rich.py +0 -0
  38. {modal-1.5.6.dev31 → modal-1.6.0}/modal/_output/status.py +0 -0
  39. {modal-1.5.6.dev31 → modal-1.6.0}/modal/_resolver.py +0 -0
  40. {modal-1.5.6.dev31 → modal-1.6.0}/modal/_resources.py +0 -0
  41. {modal-1.5.6.dev31 → modal-1.6.0}/modal/_runtime/__init__.py +0 -0
  42. {modal-1.5.6.dev31 → modal-1.6.0}/modal/_runtime/asgi.py +0 -0
  43. {modal-1.5.6.dev31 → modal-1.6.0}/modal/_runtime/container_io_manager.py +0 -0
  44. {modal-1.5.6.dev31 → modal-1.6.0}/modal/_runtime/container_io_manager.pyi +0 -0
  45. {modal-1.5.6.dev31 → modal-1.6.0}/modal/_runtime/execution_context.py +0 -0
  46. {modal-1.5.6.dev31 → modal-1.6.0}/modal/_runtime/execution_context.pyi +0 -0
  47. {modal-1.5.6.dev31 → modal-1.6.0}/modal/_runtime/gpu_memory_snapshot.py +0 -0
  48. {modal-1.5.6.dev31 → modal-1.6.0}/modal/_runtime/task_lifecycle_manager.py +0 -0
  49. {modal-1.5.6.dev31 → modal-1.6.0}/modal/_runtime/task_lifecycle_manager.pyi +0 -0
  50. {modal-1.5.6.dev31 → modal-1.6.0}/modal/_runtime/telemetry.py +0 -0
  51. {modal-1.5.6.dev31 → modal-1.6.0}/modal/_runtime/user_code_event_loop.py +0 -0
  52. {modal-1.5.6.dev31 → modal-1.6.0}/modal/_runtime/user_code_imports.py +0 -0
  53. {modal-1.5.6.dev31 → modal-1.6.0}/modal/_serialization.py +0 -0
  54. {modal-1.5.6.dev31 → modal-1.6.0}/modal/_supports_logs.py +0 -0
  55. {modal-1.5.6.dev31 → modal-1.6.0}/modal/_traceback.py +0 -0
  56. {modal-1.5.6.dev31 → modal-1.6.0}/modal/_tunnel.py +0 -0
  57. {modal-1.5.6.dev31 → modal-1.6.0}/modal/_tunnel.pyi +0 -0
  58. {modal-1.5.6.dev31 → modal-1.6.0}/modal/_type_manager.py +0 -0
  59. {modal-1.5.6.dev31 → modal-1.6.0}/modal/_utils/__init__.py +0 -0
  60. {modal-1.5.6.dev31 → modal-1.6.0}/modal/_utils/app_utils.py +0 -0
  61. {modal-1.5.6.dev31 → modal-1.6.0}/modal/_utils/async_utils.py +0 -0
  62. {modal-1.5.6.dev31 → modal-1.6.0}/modal/_utils/auth_token_manager.py +0 -0
  63. {modal-1.5.6.dev31 → modal-1.6.0}/modal/_utils/blob_utils.py +0 -0
  64. {modal-1.5.6.dev31 → modal-1.6.0}/modal/_utils/browser_utils.py +0 -0
  65. {modal-1.5.6.dev31 → modal-1.6.0}/modal/_utils/bytes_io_segment_payload.py +0 -0
  66. {modal-1.5.6.dev31 → modal-1.6.0}/modal/_utils/curl_utils.py +0 -0
  67. {modal-1.5.6.dev31 → modal-1.6.0}/modal/_utils/deprecation.py +0 -0
  68. {modal-1.5.6.dev31 → modal-1.6.0}/modal/_utils/display_utils.py +0 -0
  69. {modal-1.5.6.dev31 → modal-1.6.0}/modal/_utils/docker_utils.py +0 -0
  70. {modal-1.5.6.dev31 → modal-1.6.0}/modal/_utils/function_utils.py +0 -0
  71. {modal-1.5.6.dev31 → modal-1.6.0}/modal/_utils/git_utils.py +0 -0
  72. {modal-1.5.6.dev31 → modal-1.6.0}/modal/_utils/grpc_testing.py +0 -0
  73. {modal-1.5.6.dev31 → modal-1.6.0}/modal/_utils/grpc_utils.py +0 -0
  74. {modal-1.5.6.dev31 → modal-1.6.0}/modal/_utils/hash_utils.py +0 -0
  75. {modal-1.5.6.dev31 → modal-1.6.0}/modal/_utils/http_utils.py +0 -0
  76. {modal-1.5.6.dev31 → modal-1.6.0}/modal/_utils/idle_countdown.py +0 -0
  77. {modal-1.5.6.dev31 → modal-1.6.0}/modal/_utils/jwt_utils.py +0 -0
  78. {modal-1.5.6.dev31 → modal-1.6.0}/modal/_utils/logger.py +0 -0
  79. {modal-1.5.6.dev31 → modal-1.6.0}/modal/_utils/mount_utils.py +0 -0
  80. {modal-1.5.6.dev31 → modal-1.6.0}/modal/_utils/name_utils.py +0 -0
  81. {modal-1.5.6.dev31 → modal-1.6.0}/modal/_utils/package_utils.py +0 -0
  82. {modal-1.5.6.dev31 → modal-1.6.0}/modal/_utils/pattern_utils.py +0 -0
  83. {modal-1.5.6.dev31 → modal-1.6.0}/modal/_utils/proxy_support.py +0 -0
  84. {modal-1.5.6.dev31 → modal-1.6.0}/modal/_utils/rand_pb_testing.py +0 -0
  85. {modal-1.5.6.dev31 → modal-1.6.0}/modal/_utils/sandbox_fs_utils.py +0 -0
  86. {modal-1.5.6.dev31 → modal-1.6.0}/modal/_utils/shell_utils.py +0 -0
  87. {modal-1.5.6.dev31 → modal-1.6.0}/modal/_utils/task_command_router_client.py +0 -0
  88. {modal-1.5.6.dev31 → modal-1.6.0}/modal/_utils/time_utils.py +0 -0
  89. {modal-1.5.6.dev31 → modal-1.6.0}/modal/_vendor/__init__.py +0 -0
  90. {modal-1.5.6.dev31 → modal-1.6.0}/modal/_vendor/a2wsgi_wsgi.py +0 -0
  91. {modal-1.5.6.dev31 → modal-1.6.0}/modal/_vendor/cloudpickle.py +0 -0
  92. {modal-1.5.6.dev31 → modal-1.6.0}/modal/_vendor/tblib.py +0 -0
  93. {modal-1.5.6.dev31 → modal-1.6.0}/modal/_vendor/version.py +0 -0
  94. {modal-1.5.6.dev31 → modal-1.6.0}/modal/_watcher.py +0 -0
  95. {modal-1.5.6.dev31 → modal-1.6.0}/modal/_workspace.py +0 -0
  96. {modal-1.5.6.dev31 → modal-1.6.0}/modal/app.py +0 -0
  97. {modal-1.5.6.dev31 → modal-1.6.0}/modal/app.pyi +0 -0
  98. {modal-1.5.6.dev31 → modal-1.6.0}/modal/billing.py +0 -0
  99. {modal-1.5.6.dev31 → modal-1.6.0}/modal/billing.pyi +0 -0
  100. {modal-1.5.6.dev31 → modal-1.6.0}/modal/builder/2023.12.312.txt +0 -0
  101. {modal-1.5.6.dev31 → modal-1.6.0}/modal/builder/2023.12.txt +0 -0
  102. {modal-1.5.6.dev31 → modal-1.6.0}/modal/builder/2024.04.txt +0 -0
  103. {modal-1.5.6.dev31 → modal-1.6.0}/modal/builder/2024.10.txt +0 -0
  104. {modal-1.5.6.dev31 → modal-1.6.0}/modal/builder/2025.06.txt +0 -0
  105. {modal-1.5.6.dev31 → modal-1.6.0}/modal/builder/PREVIEW.txt +0 -0
  106. {modal-1.5.6.dev31 → modal-1.6.0}/modal/builder/README.md +0 -0
  107. {modal-1.5.6.dev31 → modal-1.6.0}/modal/builder/base-images.json +0 -0
  108. {modal-1.5.6.dev31 → modal-1.6.0}/modal/call_graph.py +0 -0
  109. {modal-1.5.6.dev31 → modal-1.6.0}/modal/cli/__init__.py +0 -0
  110. {modal-1.5.6.dev31 → modal-1.6.0}/modal/cli/_download.py +0 -0
  111. {modal-1.5.6.dev31 → modal-1.6.0}/modal/cli/_help.py +0 -0
  112. {modal-1.5.6.dev31 → modal-1.6.0}/modal/cli/_logs.py +0 -0
  113. {modal-1.5.6.dev31 → modal-1.6.0}/modal/cli/_stats.py +0 -0
  114. {modal-1.5.6.dev31 → modal-1.6.0}/modal/cli/_traceback.py +0 -0
  115. {modal-1.5.6.dev31 → modal-1.6.0}/modal/cli/app.py +0 -0
  116. {modal-1.5.6.dev31 → modal-1.6.0}/modal/cli/billing.py +0 -0
  117. {modal-1.5.6.dev31 → modal-1.6.0}/modal/cli/changelog.py +0 -0
  118. {modal-1.5.6.dev31 → modal-1.6.0}/modal/cli/config.py +0 -0
  119. {modal-1.5.6.dev31 → modal-1.6.0}/modal/cli/container.py +0 -0
  120. {modal-1.5.6.dev31 → modal-1.6.0}/modal/cli/curl.py +0 -0
  121. {modal-1.5.6.dev31 → modal-1.6.0}/modal/cli/dashboard.py +0 -0
  122. {modal-1.5.6.dev31 → modal-1.6.0}/modal/cli/dict.py +0 -0
  123. {modal-1.5.6.dev31 → modal-1.6.0}/modal/cli/endpoint.py +0 -0
  124. {modal-1.5.6.dev31 → modal-1.6.0}/modal/cli/entry_point.py +0 -0
  125. {modal-1.5.6.dev31 → modal-1.6.0}/modal/cli/environment.py +0 -0
  126. {modal-1.5.6.dev31 → modal-1.6.0}/modal/cli/function.py +0 -0
  127. {modal-1.5.6.dev31 → modal-1.6.0}/modal/cli/image.py +0 -0
  128. {modal-1.5.6.dev31 → modal-1.6.0}/modal/cli/import_refs.py +0 -0
  129. {modal-1.5.6.dev31 → modal-1.6.0}/modal/cli/logo.py +0 -0
  130. {modal-1.5.6.dev31 → modal-1.6.0}/modal/cli/network_file_system.py +0 -0
  131. {modal-1.5.6.dev31 → modal-1.6.0}/modal/cli/profile.py +0 -0
  132. {modal-1.5.6.dev31 → modal-1.6.0}/modal/cli/queues.py +0 -0
  133. {modal-1.5.6.dev31 → modal-1.6.0}/modal/cli/run.py +0 -0
  134. {modal-1.5.6.dev31 → modal-1.6.0}/modal/cli/secret.py +0 -0
  135. {modal-1.5.6.dev31 → modal-1.6.0}/modal/cli/selector.py +0 -0
  136. {modal-1.5.6.dev31 → modal-1.6.0}/modal/cli/server.py +0 -0
  137. {modal-1.5.6.dev31 → modal-1.6.0}/modal/cli/shell.py +0 -0
  138. {modal-1.5.6.dev31 → modal-1.6.0}/modal/cli/skills.py +0 -0
  139. {modal-1.5.6.dev31 → modal-1.6.0}/modal/cli/token.py +0 -0
  140. {modal-1.5.6.dev31 → modal-1.6.0}/modal/cli/utils.py +0 -0
  141. {modal-1.5.6.dev31 → modal-1.6.0}/modal/cli/volume.py +0 -0
  142. {modal-1.5.6.dev31 → modal-1.6.0}/modal/cli/workspace.py +0 -0
  143. {modal-1.5.6.dev31 → modal-1.6.0}/modal/client.py +0 -0
  144. {modal-1.5.6.dev31 → modal-1.6.0}/modal/cloud_bucket_mount.py +0 -0
  145. {modal-1.5.6.dev31 → modal-1.6.0}/modal/cloud_bucket_mount.pyi +0 -0
  146. {modal-1.5.6.dev31 → modal-1.6.0}/modal/cls.py +0 -0
  147. {modal-1.5.6.dev31 → modal-1.6.0}/modal/cls.pyi +0 -0
  148. {modal-1.5.6.dev31 → modal-1.6.0}/modal/cluster.py +0 -0
  149. {modal-1.5.6.dev31 → modal-1.6.0}/modal/cluster.pyi +0 -0
  150. {modal-1.5.6.dev31 → modal-1.6.0}/modal/config.py +0 -0
  151. {modal-1.5.6.dev31 → modal-1.6.0}/modal/container_process.py +0 -0
  152. {modal-1.5.6.dev31 → modal-1.6.0}/modal/container_process.pyi +0 -0
  153. {modal-1.5.6.dev31 → modal-1.6.0}/modal/dict.py +0 -0
  154. {modal-1.5.6.dev31 → modal-1.6.0}/modal/dict.pyi +0 -0
  155. {modal-1.5.6.dev31 → modal-1.6.0}/modal/environments.py +0 -0
  156. {modal-1.5.6.dev31 → modal-1.6.0}/modal/environments.pyi +0 -0
  157. {modal-1.5.6.dev31 → modal-1.6.0}/modal/exception.py +0 -0
  158. {modal-1.5.6.dev31 → modal-1.6.0}/modal/experimental/__init__.py +0 -0
  159. {modal-1.5.6.dev31 → modal-1.6.0}/modal/experimental/_flash_container_entry.py +0 -0
  160. {modal-1.5.6.dev31 → modal-1.6.0}/modal/experimental/flash.py +0 -0
  161. {modal-1.5.6.dev31 → modal-1.6.0}/modal/experimental/flash.pyi +0 -0
  162. {modal-1.5.6.dev31 → modal-1.6.0}/modal/experimental/flash_server.py +0 -0
  163. {modal-1.5.6.dev31 → modal-1.6.0}/modal/experimental/flash_server.pyi +0 -0
  164. {modal-1.5.6.dev31 → modal-1.6.0}/modal/experimental/ipython.py +0 -0
  165. {modal-1.5.6.dev31 → modal-1.6.0}/modal/file_pattern_matcher.py +0 -0
  166. {modal-1.5.6.dev31 → modal-1.6.0}/modal/functions.py +0 -0
  167. {modal-1.5.6.dev31 → modal-1.6.0}/modal/image.py +0 -0
  168. {modal-1.5.6.dev31 → modal-1.6.0}/modal/image.pyi +0 -0
  169. {modal-1.5.6.dev31 → modal-1.6.0}/modal/io_streams.py +0 -0
  170. {modal-1.5.6.dev31 → modal-1.6.0}/modal/io_streams.pyi +0 -0
  171. {modal-1.5.6.dev31 → modal-1.6.0}/modal/mount.py +0 -0
  172. {modal-1.5.6.dev31 → modal-1.6.0}/modal/mount.pyi +0 -0
  173. {modal-1.5.6.dev31 → modal-1.6.0}/modal/network_file_system.py +0 -0
  174. {modal-1.5.6.dev31 → modal-1.6.0}/modal/network_file_system.pyi +0 -0
  175. {modal-1.5.6.dev31 → modal-1.6.0}/modal/object.py +0 -0
  176. {modal-1.5.6.dev31 → modal-1.6.0}/modal/object.pyi +0 -0
  177. {modal-1.5.6.dev31 → modal-1.6.0}/modal/output.py +0 -0
  178. {modal-1.5.6.dev31 → modal-1.6.0}/modal/parallel_map.py +0 -0
  179. {modal-1.5.6.dev31 → modal-1.6.0}/modal/parallel_map.pyi +0 -0
  180. {modal-1.5.6.dev31 → modal-1.6.0}/modal/partial_function.py +0 -0
  181. {modal-1.5.6.dev31 → modal-1.6.0}/modal/proxy.py +0 -0
  182. {modal-1.5.6.dev31 → modal-1.6.0}/modal/proxy.pyi +0 -0
  183. {modal-1.5.6.dev31 → modal-1.6.0}/modal/py.typed +0 -0
  184. {modal-1.5.6.dev31 → modal-1.6.0}/modal/queue.py +0 -0
  185. {modal-1.5.6.dev31 → modal-1.6.0}/modal/queue.pyi +0 -0
  186. {modal-1.5.6.dev31 → modal-1.6.0}/modal/retries.py +0 -0
  187. {modal-1.5.6.dev31 → modal-1.6.0}/modal/runner.py +0 -0
  188. {modal-1.5.6.dev31 → modal-1.6.0}/modal/runner.pyi +0 -0
  189. {modal-1.5.6.dev31 → modal-1.6.0}/modal/running_app.py +0 -0
  190. {modal-1.5.6.dev31 → modal-1.6.0}/modal/sandbox.py +0 -0
  191. {modal-1.5.6.dev31 → modal-1.6.0}/modal/sandbox.pyi +0 -0
  192. {modal-1.5.6.dev31 → modal-1.6.0}/modal/sandbox_fs.py +0 -0
  193. {modal-1.5.6.dev31 → modal-1.6.0}/modal/sandbox_fs.pyi +0 -0
  194. {modal-1.5.6.dev31 → modal-1.6.0}/modal/schedule.py +0 -0
  195. {modal-1.5.6.dev31 → modal-1.6.0}/modal/scheduler_placement.py +0 -0
  196. {modal-1.5.6.dev31 → modal-1.6.0}/modal/secret.py +0 -0
  197. {modal-1.5.6.dev31 → modal-1.6.0}/modal/secret.pyi +0 -0
  198. {modal-1.5.6.dev31 → modal-1.6.0}/modal/server.py +0 -0
  199. {modal-1.5.6.dev31 → modal-1.6.0}/modal/serving.py +0 -0
  200. {modal-1.5.6.dev31 → modal-1.6.0}/modal/serving.pyi +0 -0
  201. {modal-1.5.6.dev31 → modal-1.6.0}/modal/skills/modal/SKILL.md +0 -0
  202. {modal-1.5.6.dev31 → modal-1.6.0}/modal/snapshot.py +0 -0
  203. {modal-1.5.6.dev31 → modal-1.6.0}/modal/snapshot.pyi +0 -0
  204. {modal-1.5.6.dev31 → modal-1.6.0}/modal/stream_type.py +0 -0
  205. {modal-1.5.6.dev31 → modal-1.6.0}/modal/token_flow.py +0 -0
  206. {modal-1.5.6.dev31 → modal-1.6.0}/modal/token_flow.pyi +0 -0
  207. {modal-1.5.6.dev31 → modal-1.6.0}/modal/volume.py +0 -0
  208. {modal-1.5.6.dev31 → modal-1.6.0}/modal/volume.pyi +0 -0
  209. {modal-1.5.6.dev31 → modal-1.6.0}/modal/workspace.py +0 -0
  210. {modal-1.5.6.dev31 → modal-1.6.0}/modal/workspace.pyi +0 -0
  211. {modal-1.5.6.dev31 → modal-1.6.0}/modal.egg-info/SOURCES.txt +0 -0
  212. {modal-1.5.6.dev31 → modal-1.6.0}/modal.egg-info/dependency_links.txt +0 -0
  213. {modal-1.5.6.dev31 → modal-1.6.0}/modal.egg-info/entry_points.txt +0 -0
  214. {modal-1.5.6.dev31 → modal-1.6.0}/modal.egg-info/requires.txt +0 -0
  215. {modal-1.5.6.dev31 → modal-1.6.0}/modal.egg-info/top_level.txt +0 -0
  216. {modal-1.5.6.dev31 → modal-1.6.0}/modal_docs/__init__.py +0 -0
  217. {modal-1.5.6.dev31 → modal-1.6.0}/modal_docs/gen_cli_docs.py +0 -0
  218. {modal-1.5.6.dev31 → modal-1.6.0}/modal_docs/gen_cli_docs_main.py +0 -0
  219. {modal-1.5.6.dev31 → modal-1.6.0}/modal_docs/gen_reference_docs.py +0 -0
  220. {modal-1.5.6.dev31 → modal-1.6.0}/modal_docs/gen_reference_docs_main.py +0 -0
  221. {modal-1.5.6.dev31 → modal-1.6.0}/modal_docs/mdmd/__init__.py +0 -0
  222. {modal-1.5.6.dev31 → modal-1.6.0}/modal_docs/mdmd/mdmd.py +0 -0
  223. {modal-1.5.6.dev31 → modal-1.6.0}/modal_docs/mdmd/signatures.py +0 -0
  224. {modal-1.5.6.dev31 → modal-1.6.0}/modal_docs/mdmd/types.py +0 -0
  225. {modal-1.5.6.dev31 → modal-1.6.0}/modal_docs/reference_intro.md +0 -0
  226. {modal-1.5.6.dev31 → modal-1.6.0}/modal_proto/__init__.py +0 -0
  227. {modal-1.5.6.dev31 → modal-1.6.0}/modal_proto/api_grpc.py +0 -0
  228. {modal-1.5.6.dev31 → modal-1.6.0}/modal_proto/api_pb2.py +0 -0
  229. {modal-1.5.6.dev31 → modal-1.6.0}/modal_proto/api_pb2.pyi +0 -0
  230. {modal-1.5.6.dev31 → modal-1.6.0}/modal_proto/api_pb2_grpc.py +0 -0
  231. {modal-1.5.6.dev31 → modal-1.6.0}/modal_proto/api_pb2_grpc.pyi +0 -0
  232. {modal-1.5.6.dev31 → modal-1.6.0}/modal_proto/modal_api_grpc.py +0 -0
  233. {modal-1.5.6.dev31 → modal-1.6.0}/modal_proto/py.typed +0 -0
  234. {modal-1.5.6.dev31 → modal-1.6.0}/modal_proto/task_command_router_grpc.py +0 -0
  235. {modal-1.5.6.dev31 → modal-1.6.0}/modal_proto/task_command_router_pb2.py +0 -0
  236. {modal-1.5.6.dev31 → modal-1.6.0}/modal_proto/task_command_router_pb2.pyi +0 -0
  237. {modal-1.5.6.dev31 → modal-1.6.0}/modal_proto/task_command_router_pb2_grpc.py +0 -0
  238. {modal-1.5.6.dev31 → modal-1.6.0}/modal_proto/task_command_router_pb2_grpc.pyi +0 -0
  239. {modal-1.5.6.dev31 → modal-1.6.0}/modal_version/__main__.py +0 -0
  240. {modal-1.5.6.dev31 → modal-1.6.0}/pyproject.toml +0 -0
  241. {modal-1.5.6.dev31 → modal-1.6.0}/setup.cfg +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: modal
3
- Version: 1.5.6.dev31
3
+ Version: 1.6.0
4
4
  Summary: Python client library for Modal
5
5
  Author-email: Modal Labs <support@modal.com>
6
6
  License-Expression: Apache-2.0
@@ -1749,14 +1749,14 @@ class _Function(typing.Generic[P, ReturnType, OriginalReturnType], _Object, type
1749
1749
  return list(self._experimental_flash_urls) if self._experimental_flash_urls else None
1750
1750
 
1751
1751
  async def _fetch_flash_auth_token(self, retry: Retry) -> str:
1752
- resp = await self.client.stub.FunctionGetFlashAuthToken(
1752
+ resp = await self.client._stub.FunctionGetFlashAuthToken(
1753
1753
  api_pb2.FunctionGetFlashAuthTokenRequest(function_id=self.object_id), retry=retry
1754
1754
  )
1755
1755
  return resp.token
1756
1756
 
1757
1757
  async def _get_flash_auth_token(self) -> str:
1758
1758
  if self._flash_token_manager is None:
1759
- self._flash_token_manager = _AuthTokenManager(self.client.stub, fetch=self._fetch_flash_auth_token)
1759
+ self._flash_token_manager = _AuthTokenManager(self.client._stub, fetch=self._fetch_flash_auth_token)
1760
1760
  return await self._flash_token_manager.get_token()
1761
1761
 
1762
1762
  def _apply_dynamic_config(
@@ -732,7 +732,7 @@ def _sessioned() -> Callable[
732
732
  [Callable[P, ReturnType] | _PartialFunction[P, ReturnType, ReturnType]],
733
733
  _PartialFunction[P, ReturnType, ReturnType],
734
734
  ]:
735
- """Decorator that enables sessions on a Server.
735
+ """Decorator that enables sticky sessions on a Server.
736
736
 
737
737
  Every request must carry a session token obtained from a session start request; requests with the same token are
738
738
  routed to the same container until the session is idle for `idle_timeout` seconds or explicitly terminated. A
@@ -113,7 +113,7 @@ class _Server:
113
113
 
114
114
  @property
115
115
  def sessions(self) -> "_ServerSessionsManager":
116
- """Start and terminate sessions on a Server decorated with `@modal.sessioned()`."""
116
+ """Start and terminate sticky sessions on a Server decorated with `@modal.sessioned()`."""
117
117
  return _ServerSessionsManager(self)
118
118
 
119
119
  async def info(self, *, refresh: bool = False) -> ServerInfo:
@@ -160,7 +160,7 @@ class _Server:
160
160
  This interface is experimental and may change or be removed without warning.
161
161
  """
162
162
  service_function = self._get_service_function()
163
- response = await service_function.client.stub.FlashContainerList(
163
+ response = await service_function.client._stub.FlashContainerList(
164
164
  api_pb2.FlashContainerListRequest(function_id=service_function.object_id)
165
165
  )
166
166
  return [
@@ -473,13 +473,13 @@ class _Server:
473
473
  request.until.FromDatetime(until)
474
474
  if container:
475
475
  request.container_id = container
476
- stats = await self._get_service_function().client.stub.ServerGetTimeRangeStats(request)
476
+ stats = await self._get_service_function().client._stub.ServerGetTimeRangeStats(request)
477
477
  return ServerStats._from_proto(stats)
478
478
 
479
479
 
480
480
  @retry(n_attempts=5, base_delay=0.5, attempt_timeout=65, total_timeout=200)
481
481
  async def _post_session_control(url: str, headers: dict[str, str]) -> tuple[int, str, str]:
482
- """POST to a session control endpoint, retrying connection errors and 5xx. Returns (status, reason, body)."""
482
+ """POST to a sticky session control endpoint, retrying connection errors and 5xx. Returns (status, reason, body)."""
483
483
  async with ClientSessionRegistry.get_session().post(url, headers=headers) as resp:
484
484
  body = await resp.text()
485
485
  if resp.status >= 400:
@@ -501,11 +501,11 @@ class _ServerSessionsManager:
501
501
  raise InvalidError("`sessions` requires `@modal.sessioned()` on the Server.")
502
502
 
503
503
  async def start(self, idle_timeout: int = 600) -> ServerSessionCredentials:
504
- """Start a session and return its ID and token.
504
+ """Start a sticky session and return its ID and token.
505
505
 
506
- Requests to the server URL that carry the returned token are routed to the same container until the session
507
- has had no connections for `idle_timeout` seconds or is terminated. A container won't be scaled down for as long
508
- as it holds a live session.
506
+ Requests to the server URL that carry the returned token are routed to the same container until the
507
+ session has had no connections for `idle_timeout` seconds or is terminated. A container won't be scaled down
508
+ for as long as it holds a live session.
509
509
 
510
510
  Args:
511
511
  idle_timeout: Seconds without an in-flight request before the session ends.
@@ -550,7 +550,9 @@ class _ServerSessionsManager:
550
550
  raise ExecutionError("Failed to start session: unexpected response from server") from None
551
551
 
552
552
  async def terminate(self, token: str) -> None:
553
- """Terminate a session. New requests to it will be rejected. Container will continue serving other sessions.
553
+ """Terminate a sticky session.
554
+
555
+ New requests to it will be rejected. The container continues serving other sessions.
554
556
 
555
557
  Args:
556
558
  token: The `token` of the `ServerSessionCredentials` to terminate.
@@ -67,7 +67,7 @@ class _Server:
67
67
 
68
68
  @property
69
69
  def sessions(self) -> _ServerSessionsManager:
70
- """Start and terminate sessions on a Server decorated with `@modal.sessioned()`."""
70
+ """Start and terminate sticky sessions on a Server decorated with `@modal.sessioned()`."""
71
71
  ...
72
72
 
73
73
  async def info(self, *, refresh: bool = False) -> modal.types.ServerInfo:
@@ -272,7 +272,7 @@ class _Server:
272
272
  ...
273
273
 
274
274
  async def _post_session_control(url: str, headers: dict[str, str]) -> tuple[int, str, str]:
275
- """POST to a session control endpoint, retrying connection errors and 5xx. Returns (status, reason, body)."""
275
+ """POST to a sticky session control endpoint, retrying connection errors and 5xx. Returns (status, reason, body)."""
276
276
  ...
277
277
 
278
278
  class _ServerSessionsManager:
@@ -283,11 +283,11 @@ class _ServerSessionsManager:
283
283
 
284
284
  def _validate(self) -> None: ...
285
285
  async def start(self, idle_timeout: int = 600) -> modal.types.ServerSessionCredentials:
286
- """Start a session and return its ID and token.
286
+ """Start a sticky session and return its ID and token.
287
287
 
288
- Requests to the server URL that carry the returned token are routed to the same container until the session
289
- has had no connections for `idle_timeout` seconds or is terminated. A container won't be scaled down for as long
290
- as it holds a live session.
288
+ Requests to the server URL that carry the returned token are routed to the same container until the
289
+ session has had no connections for `idle_timeout` seconds or is terminated. A container won't be scaled down
290
+ for as long as it holds a live session.
291
291
 
292
292
  Args:
293
293
  idle_timeout: Seconds without an in-flight request before the session ends.
@@ -308,7 +308,9 @@ class _ServerSessionsManager:
308
308
  ...
309
309
 
310
310
  async def terminate(self, token: str) -> None:
311
- """Terminate a session. New requests to it will be rejected. Container will continue serving other sessions.
311
+ """Terminate a sticky session.
312
+
313
+ New requests to it will be rejected. The container continues serving other sessions.
312
314
 
313
315
  Args:
314
316
  token: The `token` of the `ServerSessionCredentials` to terminate.
@@ -334,11 +336,11 @@ class ServerSessionsManager:
334
336
 
335
337
  class __start_spec(typing_extensions.Protocol):
336
338
  def __call__(self, /, idle_timeout: int = 600) -> modal.types.ServerSessionCredentials:
337
- """Start a session and return its ID and token.
339
+ """Start a sticky session and return its ID and token.
338
340
 
339
- Requests to the server URL that carry the returned token are routed to the same container until the session
340
- has had no connections for `idle_timeout` seconds or is terminated. A container won't be scaled down for as long
341
- as it holds a live session.
341
+ Requests to the server URL that carry the returned token are routed to the same container until the
342
+ session has had no connections for `idle_timeout` seconds or is terminated. A container won't be scaled down
343
+ for as long as it holds a live session.
342
344
 
343
345
  Args:
344
346
  idle_timeout: Seconds without an in-flight request before the session ends.
@@ -359,11 +361,11 @@ class ServerSessionsManager:
359
361
  ...
360
362
 
361
363
  async def aio(self, /, idle_timeout: int = 600) -> modal.types.ServerSessionCredentials:
362
- """Start a session and return its ID and token.
364
+ """Start a sticky session and return its ID and token.
363
365
 
364
- Requests to the server URL that carry the returned token are routed to the same container until the session
365
- has had no connections for `idle_timeout` seconds or is terminated. A container won't be scaled down for as long
366
- as it holds a live session.
366
+ Requests to the server URL that carry the returned token are routed to the same container until the
367
+ session has had no connections for `idle_timeout` seconds or is terminated. A container won't be scaled down
368
+ for as long as it holds a live session.
367
369
 
368
370
  Args:
369
371
  idle_timeout: Seconds without an in-flight request before the session ends.
@@ -387,7 +389,9 @@ class ServerSessionsManager:
387
389
 
388
390
  class __terminate_spec(typing_extensions.Protocol):
389
391
  def __call__(self, /, token: str) -> None:
390
- """Terminate a session. New requests to it will be rejected. Container will continue serving other sessions.
392
+ """Terminate a sticky session.
393
+
394
+ New requests to it will be rejected. The container continues serving other sessions.
391
395
 
392
396
  Args:
393
397
  token: The `token` of the `ServerSessionCredentials` to terminate.
@@ -404,7 +408,9 @@ class ServerSessionsManager:
404
408
  ...
405
409
 
406
410
  async def aio(self, /, token: str) -> None:
407
- """Terminate a session. New requests to it will be rejected. Container will continue serving other sessions.
411
+ """Terminate a sticky session.
412
+
413
+ New requests to it will be rejected. The container continues serving other sessions.
408
414
 
409
415
  Args:
410
416
  token: The `token` of the `ServerSessionCredentials` to terminate.
@@ -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.5.6.dev31",
83
+ version: str = "1.6.0",
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.5.6.dev31",
293
+ version: str = "1.6.0",
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[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]: ...
@@ -384,7 +384,7 @@ def sessioned() -> collections.abc.Callable[
384
384
  ],
385
385
  PartialFunction[modal._partial_function.P, modal._partial_function.ReturnType, modal._partial_function.ReturnType],
386
386
  ]:
387
- """Decorator that enables sessions on a Server.
387
+ """Decorator that enables sticky sessions on a Server.
388
388
 
389
389
  Every request must carry a session token obtained from a session start request; requests with the same token are
390
390
  routed to the same container until the session is idle for `idle_timeout` seconds or explicitly terminated. A
@@ -68,7 +68,7 @@ class Server:
68
68
 
69
69
  @property
70
70
  def sessions(self) -> modal._server.ServerSessionsManager:
71
- """Start and terminate sessions on a Server decorated with `@modal.sessioned()`."""
71
+ """Start and terminate sticky sessions on a Server decorated with `@modal.sessioned()`."""
72
72
  ...
73
73
 
74
74
  class __info_spec(typing_extensions.Protocol):
@@ -947,7 +947,10 @@ class ServerInfo:
947
947
 
948
948
  @dataclass(frozen=True)
949
949
  class ServerSessionCredentials:
950
- """Credentials for a session on a Server. Requests carrying `token` are routed to the same container."""
950
+ """Credentials for a sticky session on a Server.
951
+
952
+ Requests carrying `token` are routed to the same container.
953
+ """
951
954
 
952
955
  session_id: str # Identifier of this session, for display and logging
953
956
  token: str # Session token to send with every request
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: modal
3
- Version: 1.5.6.dev31
3
+ Version: 1.6.0
4
4
  Summary: Python client library for Modal
5
5
  Author-email: Modal Labs <support@modal.com>
6
6
  License-Expression: Apache-2.0
@@ -1,4 +1,4 @@
1
1
  # Copyright Modal Labs 2026
2
2
  """Supplies the current version of the modal client library."""
3
3
 
4
- __version__ = "1.5.6.dev31"
4
+ __version__ = "1.6.0"
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes