modal 1.5.3.dev7__tar.gz → 1.5.3.dev11__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 (233) hide show
  1. {modal-1.5.3.dev7 → modal-1.5.3.dev11}/PKG-INFO +1 -1
  2. {modal-1.5.3.dev7 → modal-1.5.3.dev11}/modal/_environments.py +1 -1
  3. {modal-1.5.3.dev7 → modal-1.5.3.dev11}/modal/_function_variants.py +1 -1
  4. {modal-1.5.3.dev7 → modal-1.5.3.dev11}/modal/_functions.py +4 -4
  5. {modal-1.5.3.dev7 → modal-1.5.3.dev11}/modal/_partial_function.py +1 -1
  6. {modal-1.5.3.dev7 → modal-1.5.3.dev11}/modal/_server.py +1 -1
  7. {modal-1.5.3.dev7 → modal-1.5.3.dev11}/modal/_utils/task_command_router_client.py +5 -0
  8. {modal-1.5.3.dev7 → modal-1.5.3.dev11}/modal/_workspace.py +1 -1
  9. {modal-1.5.3.dev7 → modal-1.5.3.dev11}/modal/app.py +2 -2
  10. {modal-1.5.3.dev7 → modal-1.5.3.dev11}/modal/app.pyi +4 -4
  11. {modal-1.5.3.dev7 → modal-1.5.3.dev11}/modal/cli/billing.py +1 -1
  12. {modal-1.5.3.dev7 → modal-1.5.3.dev11}/modal/cli/config.py +1 -1
  13. {modal-1.5.3.dev7 → modal-1.5.3.dev11}/modal/cli/environment.py +1 -1
  14. {modal-1.5.3.dev7 → modal-1.5.3.dev11}/modal/cli/shell.py +1 -1
  15. {modal-1.5.3.dev7 → modal-1.5.3.dev11}/modal/client.py +1 -1
  16. {modal-1.5.3.dev7 → modal-1.5.3.dev11}/modal/client.pyi +2 -2
  17. {modal-1.5.3.dev7 → modal-1.5.3.dev11}/modal/cloud_bucket_mount.py +15 -3
  18. {modal-1.5.3.dev7 → modal-1.5.3.dev11}/modal/cloud_bucket_mount.pyi +2 -2
  19. {modal-1.5.3.dev7 → modal-1.5.3.dev11}/modal/cls.py +2 -2
  20. {modal-1.5.3.dev7 → modal-1.5.3.dev11}/modal/cls.pyi +4 -4
  21. {modal-1.5.3.dev7 → modal-1.5.3.dev11}/modal/environments.pyi +2 -2
  22. {modal-1.5.3.dev7 → modal-1.5.3.dev11}/modal/exception.py +5 -1
  23. {modal-1.5.3.dev7 → modal-1.5.3.dev11}/modal/functions.pyi +6 -6
  24. {modal-1.5.3.dev7 → modal-1.5.3.dev11}/modal/partial_function.pyi +1 -1
  25. {modal-1.5.3.dev7 → modal-1.5.3.dev11}/modal/sandbox.py +162 -36
  26. {modal-1.5.3.dev7 → modal-1.5.3.dev11}/modal/sandbox.pyi +152 -18
  27. {modal-1.5.3.dev7 → modal-1.5.3.dev11}/modal/schedule.py +1 -1
  28. {modal-1.5.3.dev7 → modal-1.5.3.dev11}/modal/secret.py +9 -0
  29. {modal-1.5.3.dev7 → modal-1.5.3.dev11}/modal/secret.pyi +18 -0
  30. {modal-1.5.3.dev7 → modal-1.5.3.dev11}/modal/server.pyi +1 -1
  31. {modal-1.5.3.dev7 → modal-1.5.3.dev11}/modal/snapshot.py +17 -1
  32. {modal-1.5.3.dev7 → modal-1.5.3.dev11}/modal/snapshot.pyi +22 -0
  33. {modal-1.5.3.dev7 → modal-1.5.3.dev11}/modal/workspace.pyi +2 -2
  34. {modal-1.5.3.dev7 → modal-1.5.3.dev11}/modal.egg-info/PKG-INFO +1 -1
  35. {modal-1.5.3.dev7 → modal-1.5.3.dev11}/modal.egg-info/SOURCES.txt +1 -0
  36. modal-1.5.3.dev11/modal_docs/gen_reference_docs.py +167 -0
  37. {modal-1.5.3.dev7 → modal-1.5.3.dev11}/modal_docs/mdmd/mdmd.py +46 -42
  38. modal-1.5.3.dev11/modal_docs/reference_intro.md +115 -0
  39. {modal-1.5.3.dev7 → modal-1.5.3.dev11}/modal_proto/api_grpc.py +16 -0
  40. {modal-1.5.3.dev7 → modal-1.5.3.dev11}/modal_proto/api_pb2.py +507 -439
  41. {modal-1.5.3.dev7 → modal-1.5.3.dev11}/modal_proto/api_pb2.pyi +108 -1
  42. {modal-1.5.3.dev7 → modal-1.5.3.dev11}/modal_proto/api_pb2_grpc.py +33 -0
  43. {modal-1.5.3.dev7 → modal-1.5.3.dev11}/modal_proto/api_pb2_grpc.pyi +10 -0
  44. {modal-1.5.3.dev7 → modal-1.5.3.dev11}/modal_proto/modal_api_grpc.py +1 -0
  45. {modal-1.5.3.dev7 → modal-1.5.3.dev11}/modal_version/__init__.py +1 -1
  46. {modal-1.5.3.dev7 → modal-1.5.3.dev11}/pyproject.toml +1 -1
  47. modal-1.5.3.dev7/modal_docs/gen_reference_docs.py +0 -360
  48. {modal-1.5.3.dev7 → modal-1.5.3.dev11}/LICENSE +0 -0
  49. {modal-1.5.3.dev7 → modal-1.5.3.dev11}/README.md +0 -0
  50. {modal-1.5.3.dev7 → modal-1.5.3.dev11}/modal/__init__.py +0 -0
  51. {modal-1.5.3.dev7 → modal-1.5.3.dev11}/modal/__main__.py +0 -0
  52. {modal-1.5.3.dev7 → modal-1.5.3.dev11}/modal/_billing.py +0 -0
  53. {modal-1.5.3.dev7 → modal-1.5.3.dev11}/modal/_clustered_functions.py +0 -0
  54. {modal-1.5.3.dev7 → modal-1.5.3.dev11}/modal/_clustered_functions.pyi +0 -0
  55. {modal-1.5.3.dev7 → modal-1.5.3.dev11}/modal/_container_entrypoint.py +0 -0
  56. {modal-1.5.3.dev7 → modal-1.5.3.dev11}/modal/_grpc_client.py +0 -0
  57. {modal-1.5.3.dev7 → modal-1.5.3.dev11}/modal/_image.py +0 -0
  58. {modal-1.5.3.dev7 → modal-1.5.3.dev11}/modal/_ipython.py +0 -0
  59. {modal-1.5.3.dev7 → modal-1.5.3.dev11}/modal/_load_context.py +0 -0
  60. {modal-1.5.3.dev7 → modal-1.5.3.dev11}/modal/_location.py +0 -0
  61. {modal-1.5.3.dev7 → modal-1.5.3.dev11}/modal/_logs.py +0 -0
  62. {modal-1.5.3.dev7 → modal-1.5.3.dev11}/modal/_object.py +0 -0
  63. {modal-1.5.3.dev7 → modal-1.5.3.dev11}/modal/_output/__init__.py +0 -0
  64. {modal-1.5.3.dev7 → modal-1.5.3.dev11}/modal/_output/manager.py +0 -0
  65. {modal-1.5.3.dev7 → modal-1.5.3.dev11}/modal/_output/pty.py +0 -0
  66. {modal-1.5.3.dev7 → modal-1.5.3.dev11}/modal/_output/rich.py +0 -0
  67. {modal-1.5.3.dev7 → modal-1.5.3.dev11}/modal/_output/status.py +0 -0
  68. {modal-1.5.3.dev7 → modal-1.5.3.dev11}/modal/_resolver.py +0 -0
  69. {modal-1.5.3.dev7 → modal-1.5.3.dev11}/modal/_resources.py +0 -0
  70. {modal-1.5.3.dev7 → modal-1.5.3.dev11}/modal/_runtime/__init__.py +0 -0
  71. {modal-1.5.3.dev7 → modal-1.5.3.dev11}/modal/_runtime/asgi.py +0 -0
  72. {modal-1.5.3.dev7 → modal-1.5.3.dev11}/modal/_runtime/container_io_manager.py +0 -0
  73. {modal-1.5.3.dev7 → modal-1.5.3.dev11}/modal/_runtime/container_io_manager.pyi +0 -0
  74. {modal-1.5.3.dev7 → modal-1.5.3.dev11}/modal/_runtime/execution_context.py +0 -0
  75. {modal-1.5.3.dev7 → modal-1.5.3.dev11}/modal/_runtime/execution_context.pyi +0 -0
  76. {modal-1.5.3.dev7 → modal-1.5.3.dev11}/modal/_runtime/gpu_memory_snapshot.py +0 -0
  77. {modal-1.5.3.dev7 → modal-1.5.3.dev11}/modal/_runtime/task_lifecycle_manager.py +0 -0
  78. {modal-1.5.3.dev7 → modal-1.5.3.dev11}/modal/_runtime/task_lifecycle_manager.pyi +0 -0
  79. {modal-1.5.3.dev7 → modal-1.5.3.dev11}/modal/_runtime/telemetry.py +0 -0
  80. {modal-1.5.3.dev7 → modal-1.5.3.dev11}/modal/_runtime/user_code_event_loop.py +0 -0
  81. {modal-1.5.3.dev7 → modal-1.5.3.dev11}/modal/_runtime/user_code_imports.py +0 -0
  82. {modal-1.5.3.dev7 → modal-1.5.3.dev11}/modal/_serialization.py +0 -0
  83. {modal-1.5.3.dev7 → modal-1.5.3.dev11}/modal/_traceback.py +0 -0
  84. {modal-1.5.3.dev7 → modal-1.5.3.dev11}/modal/_tunnel.py +0 -0
  85. {modal-1.5.3.dev7 → modal-1.5.3.dev11}/modal/_tunnel.pyi +0 -0
  86. {modal-1.5.3.dev7 → modal-1.5.3.dev11}/modal/_type_manager.py +0 -0
  87. {modal-1.5.3.dev7 → modal-1.5.3.dev11}/modal/_utils/__init__.py +0 -0
  88. {modal-1.5.3.dev7 → modal-1.5.3.dev11}/modal/_utils/app_utils.py +0 -0
  89. {modal-1.5.3.dev7 → modal-1.5.3.dev11}/modal/_utils/async_utils.py +0 -0
  90. {modal-1.5.3.dev7 → modal-1.5.3.dev11}/modal/_utils/auth_token_manager.py +0 -0
  91. {modal-1.5.3.dev7 → modal-1.5.3.dev11}/modal/_utils/blob_utils.py +0 -0
  92. {modal-1.5.3.dev7 → modal-1.5.3.dev11}/modal/_utils/browser_utils.py +0 -0
  93. {modal-1.5.3.dev7 → modal-1.5.3.dev11}/modal/_utils/bytes_io_segment_payload.py +0 -0
  94. {modal-1.5.3.dev7 → modal-1.5.3.dev11}/modal/_utils/curl_utils.py +0 -0
  95. {modal-1.5.3.dev7 → modal-1.5.3.dev11}/modal/_utils/deprecation.py +0 -0
  96. {modal-1.5.3.dev7 → modal-1.5.3.dev11}/modal/_utils/docker_utils.py +0 -0
  97. {modal-1.5.3.dev7 → modal-1.5.3.dev11}/modal/_utils/function_utils.py +0 -0
  98. {modal-1.5.3.dev7 → modal-1.5.3.dev11}/modal/_utils/git_utils.py +0 -0
  99. {modal-1.5.3.dev7 → modal-1.5.3.dev11}/modal/_utils/grpc_testing.py +0 -0
  100. {modal-1.5.3.dev7 → modal-1.5.3.dev11}/modal/_utils/grpc_utils.py +0 -0
  101. {modal-1.5.3.dev7 → modal-1.5.3.dev11}/modal/_utils/hash_utils.py +0 -0
  102. {modal-1.5.3.dev7 → modal-1.5.3.dev11}/modal/_utils/http_utils.py +0 -0
  103. {modal-1.5.3.dev7 → modal-1.5.3.dev11}/modal/_utils/jwt_utils.py +0 -0
  104. {modal-1.5.3.dev7 → modal-1.5.3.dev11}/modal/_utils/logger.py +0 -0
  105. {modal-1.5.3.dev7 → modal-1.5.3.dev11}/modal/_utils/mount_utils.py +0 -0
  106. {modal-1.5.3.dev7 → modal-1.5.3.dev11}/modal/_utils/name_utils.py +0 -0
  107. {modal-1.5.3.dev7 → modal-1.5.3.dev11}/modal/_utils/package_utils.py +0 -0
  108. {modal-1.5.3.dev7 → modal-1.5.3.dev11}/modal/_utils/pattern_utils.py +0 -0
  109. {modal-1.5.3.dev7 → modal-1.5.3.dev11}/modal/_utils/proxy_support.py +0 -0
  110. {modal-1.5.3.dev7 → modal-1.5.3.dev11}/modal/_utils/rand_pb_testing.py +0 -0
  111. {modal-1.5.3.dev7 → modal-1.5.3.dev11}/modal/_utils/sandbox_fs_utils.py +0 -0
  112. {modal-1.5.3.dev7 → modal-1.5.3.dev11}/modal/_utils/shell_utils.py +0 -0
  113. {modal-1.5.3.dev7 → modal-1.5.3.dev11}/modal/_utils/time_utils.py +0 -0
  114. {modal-1.5.3.dev7 → modal-1.5.3.dev11}/modal/_vendor/__init__.py +0 -0
  115. {modal-1.5.3.dev7 → modal-1.5.3.dev11}/modal/_vendor/a2wsgi_wsgi.py +0 -0
  116. {modal-1.5.3.dev7 → modal-1.5.3.dev11}/modal/_vendor/cloudpickle.py +0 -0
  117. {modal-1.5.3.dev7 → modal-1.5.3.dev11}/modal/_vendor/tblib.py +0 -0
  118. {modal-1.5.3.dev7 → modal-1.5.3.dev11}/modal/_vendor/version.py +0 -0
  119. {modal-1.5.3.dev7 → modal-1.5.3.dev11}/modal/_watcher.py +0 -0
  120. {modal-1.5.3.dev7 → modal-1.5.3.dev11}/modal/billing.py +0 -0
  121. {modal-1.5.3.dev7 → modal-1.5.3.dev11}/modal/billing.pyi +0 -0
  122. {modal-1.5.3.dev7 → modal-1.5.3.dev11}/modal/builder/2023.12.312.txt +0 -0
  123. {modal-1.5.3.dev7 → modal-1.5.3.dev11}/modal/builder/2023.12.txt +0 -0
  124. {modal-1.5.3.dev7 → modal-1.5.3.dev11}/modal/builder/2024.04.txt +0 -0
  125. {modal-1.5.3.dev7 → modal-1.5.3.dev11}/modal/builder/2024.10.txt +0 -0
  126. {modal-1.5.3.dev7 → modal-1.5.3.dev11}/modal/builder/2025.06.txt +0 -0
  127. {modal-1.5.3.dev7 → modal-1.5.3.dev11}/modal/builder/PREVIEW.txt +0 -0
  128. {modal-1.5.3.dev7 → modal-1.5.3.dev11}/modal/builder/README.md +0 -0
  129. {modal-1.5.3.dev7 → modal-1.5.3.dev11}/modal/builder/base-images.json +0 -0
  130. {modal-1.5.3.dev7 → modal-1.5.3.dev11}/modal/call_graph.py +0 -0
  131. {modal-1.5.3.dev7 → modal-1.5.3.dev11}/modal/cli/__init__.py +0 -0
  132. {modal-1.5.3.dev7 → modal-1.5.3.dev11}/modal/cli/_download.py +0 -0
  133. {modal-1.5.3.dev7 → modal-1.5.3.dev11}/modal/cli/_help.py +0 -0
  134. {modal-1.5.3.dev7 → modal-1.5.3.dev11}/modal/cli/_traceback.py +0 -0
  135. {modal-1.5.3.dev7 → modal-1.5.3.dev11}/modal/cli/app.py +0 -0
  136. {modal-1.5.3.dev7 → modal-1.5.3.dev11}/modal/cli/bootstrap.py +0 -0
  137. {modal-1.5.3.dev7 → modal-1.5.3.dev11}/modal/cli/changelog.py +0 -0
  138. {modal-1.5.3.dev7 → modal-1.5.3.dev11}/modal/cli/cluster.py +0 -0
  139. {modal-1.5.3.dev7 → modal-1.5.3.dev11}/modal/cli/container.py +0 -0
  140. {modal-1.5.3.dev7 → modal-1.5.3.dev11}/modal/cli/curl.py +0 -0
  141. {modal-1.5.3.dev7 → modal-1.5.3.dev11}/modal/cli/dashboard.py +0 -0
  142. {modal-1.5.3.dev7 → modal-1.5.3.dev11}/modal/cli/dict.py +0 -0
  143. {modal-1.5.3.dev7 → modal-1.5.3.dev11}/modal/cli/endpoint.py +0 -0
  144. {modal-1.5.3.dev7 → modal-1.5.3.dev11}/modal/cli/entry_point.py +0 -0
  145. {modal-1.5.3.dev7 → modal-1.5.3.dev11}/modal/cli/image.py +0 -0
  146. {modal-1.5.3.dev7 → modal-1.5.3.dev11}/modal/cli/import_refs.py +0 -0
  147. {modal-1.5.3.dev7 → modal-1.5.3.dev11}/modal/cli/launch.py +0 -0
  148. {modal-1.5.3.dev7 → modal-1.5.3.dev11}/modal/cli/logo.py +0 -0
  149. {modal-1.5.3.dev7 → modal-1.5.3.dev11}/modal/cli/network_file_system.py +0 -0
  150. {modal-1.5.3.dev7 → modal-1.5.3.dev11}/modal/cli/profile.py +0 -0
  151. {modal-1.5.3.dev7 → modal-1.5.3.dev11}/modal/cli/programs/__init__.py +0 -0
  152. {modal-1.5.3.dev7 → modal-1.5.3.dev11}/modal/cli/programs/run_jupyter.py +0 -0
  153. {modal-1.5.3.dev7 → modal-1.5.3.dev11}/modal/cli/programs/vscode.py +0 -0
  154. {modal-1.5.3.dev7 → modal-1.5.3.dev11}/modal/cli/queues.py +0 -0
  155. {modal-1.5.3.dev7 → modal-1.5.3.dev11}/modal/cli/run.py +0 -0
  156. {modal-1.5.3.dev7 → modal-1.5.3.dev11}/modal/cli/secret.py +0 -0
  157. {modal-1.5.3.dev7 → modal-1.5.3.dev11}/modal/cli/selector.py +0 -0
  158. {modal-1.5.3.dev7 → modal-1.5.3.dev11}/modal/cli/skills.py +0 -0
  159. {modal-1.5.3.dev7 → modal-1.5.3.dev11}/modal/cli/token.py +0 -0
  160. {modal-1.5.3.dev7 → modal-1.5.3.dev11}/modal/cli/utils.py +0 -0
  161. {modal-1.5.3.dev7 → modal-1.5.3.dev11}/modal/cli/volume.py +0 -0
  162. {modal-1.5.3.dev7 → modal-1.5.3.dev11}/modal/cli/workspace.py +0 -0
  163. {modal-1.5.3.dev7 → modal-1.5.3.dev11}/modal/config.py +0 -0
  164. {modal-1.5.3.dev7 → modal-1.5.3.dev11}/modal/container_process.py +0 -0
  165. {modal-1.5.3.dev7 → modal-1.5.3.dev11}/modal/container_process.pyi +0 -0
  166. {modal-1.5.3.dev7 → modal-1.5.3.dev11}/modal/dict.py +0 -0
  167. {modal-1.5.3.dev7 → modal-1.5.3.dev11}/modal/dict.pyi +0 -0
  168. {modal-1.5.3.dev7 → modal-1.5.3.dev11}/modal/environments.py +0 -0
  169. {modal-1.5.3.dev7 → modal-1.5.3.dev11}/modal/experimental/__init__.py +0 -0
  170. {modal-1.5.3.dev7 → modal-1.5.3.dev11}/modal/experimental/flash.py +0 -0
  171. {modal-1.5.3.dev7 → modal-1.5.3.dev11}/modal/experimental/flash.pyi +0 -0
  172. {modal-1.5.3.dev7 → modal-1.5.3.dev11}/modal/experimental/ipython.py +0 -0
  173. {modal-1.5.3.dev7 → modal-1.5.3.dev11}/modal/file_io.py +0 -0
  174. {modal-1.5.3.dev7 → modal-1.5.3.dev11}/modal/file_io.pyi +0 -0
  175. {modal-1.5.3.dev7 → modal-1.5.3.dev11}/modal/file_pattern_matcher.py +0 -0
  176. {modal-1.5.3.dev7 → modal-1.5.3.dev11}/modal/functions.py +0 -0
  177. {modal-1.5.3.dev7 → modal-1.5.3.dev11}/modal/image.py +0 -0
  178. {modal-1.5.3.dev7 → modal-1.5.3.dev11}/modal/image.pyi +0 -0
  179. {modal-1.5.3.dev7 → modal-1.5.3.dev11}/modal/io_streams.py +0 -0
  180. {modal-1.5.3.dev7 → modal-1.5.3.dev11}/modal/io_streams.pyi +0 -0
  181. {modal-1.5.3.dev7 → modal-1.5.3.dev11}/modal/mount.py +0 -0
  182. {modal-1.5.3.dev7 → modal-1.5.3.dev11}/modal/mount.pyi +0 -0
  183. {modal-1.5.3.dev7 → modal-1.5.3.dev11}/modal/network_file_system.py +0 -0
  184. {modal-1.5.3.dev7 → modal-1.5.3.dev11}/modal/network_file_system.pyi +0 -0
  185. {modal-1.5.3.dev7 → modal-1.5.3.dev11}/modal/object.py +0 -0
  186. {modal-1.5.3.dev7 → modal-1.5.3.dev11}/modal/object.pyi +0 -0
  187. {modal-1.5.3.dev7 → modal-1.5.3.dev11}/modal/output.py +0 -0
  188. {modal-1.5.3.dev7 → modal-1.5.3.dev11}/modal/parallel_map.py +0 -0
  189. {modal-1.5.3.dev7 → modal-1.5.3.dev11}/modal/parallel_map.pyi +0 -0
  190. {modal-1.5.3.dev7 → modal-1.5.3.dev11}/modal/partial_function.py +0 -0
  191. {modal-1.5.3.dev7 → modal-1.5.3.dev11}/modal/proxy.py +0 -0
  192. {modal-1.5.3.dev7 → modal-1.5.3.dev11}/modal/proxy.pyi +0 -0
  193. {modal-1.5.3.dev7 → modal-1.5.3.dev11}/modal/py.typed +0 -0
  194. {modal-1.5.3.dev7 → modal-1.5.3.dev11}/modal/queue.py +0 -0
  195. {modal-1.5.3.dev7 → modal-1.5.3.dev11}/modal/queue.pyi +0 -0
  196. {modal-1.5.3.dev7 → modal-1.5.3.dev11}/modal/retries.py +0 -0
  197. {modal-1.5.3.dev7 → modal-1.5.3.dev11}/modal/runner.py +0 -0
  198. {modal-1.5.3.dev7 → modal-1.5.3.dev11}/modal/runner.pyi +0 -0
  199. {modal-1.5.3.dev7 → modal-1.5.3.dev11}/modal/running_app.py +0 -0
  200. {modal-1.5.3.dev7 → modal-1.5.3.dev11}/modal/sandbox_fs.py +0 -0
  201. {modal-1.5.3.dev7 → modal-1.5.3.dev11}/modal/sandbox_fs.pyi +0 -0
  202. {modal-1.5.3.dev7 → modal-1.5.3.dev11}/modal/scheduler_placement.py +0 -0
  203. {modal-1.5.3.dev7 → modal-1.5.3.dev11}/modal/server.py +0 -0
  204. {modal-1.5.3.dev7 → modal-1.5.3.dev11}/modal/serving.py +0 -0
  205. {modal-1.5.3.dev7 → modal-1.5.3.dev11}/modal/serving.pyi +0 -0
  206. {modal-1.5.3.dev7 → modal-1.5.3.dev11}/modal/skills/modal/SKILL.md +0 -0
  207. {modal-1.5.3.dev7 → modal-1.5.3.dev11}/modal/stream_type.py +0 -0
  208. {modal-1.5.3.dev7 → modal-1.5.3.dev11}/modal/token_flow.py +0 -0
  209. {modal-1.5.3.dev7 → modal-1.5.3.dev11}/modal/token_flow.pyi +0 -0
  210. {modal-1.5.3.dev7 → modal-1.5.3.dev11}/modal/types.py +0 -0
  211. {modal-1.5.3.dev7 → modal-1.5.3.dev11}/modal/volume.py +0 -0
  212. {modal-1.5.3.dev7 → modal-1.5.3.dev11}/modal/volume.pyi +0 -0
  213. {modal-1.5.3.dev7 → modal-1.5.3.dev11}/modal/workspace.py +0 -0
  214. {modal-1.5.3.dev7 → modal-1.5.3.dev11}/modal.egg-info/dependency_links.txt +0 -0
  215. {modal-1.5.3.dev7 → modal-1.5.3.dev11}/modal.egg-info/entry_points.txt +0 -0
  216. {modal-1.5.3.dev7 → modal-1.5.3.dev11}/modal.egg-info/requires.txt +0 -0
  217. {modal-1.5.3.dev7 → modal-1.5.3.dev11}/modal.egg-info/top_level.txt +0 -0
  218. {modal-1.5.3.dev7 → modal-1.5.3.dev11}/modal_docs/__init__.py +0 -0
  219. {modal-1.5.3.dev7 → modal-1.5.3.dev11}/modal_docs/gen_cli_docs.py +0 -0
  220. {modal-1.5.3.dev7 → modal-1.5.3.dev11}/modal_docs/gen_cli_docs_main.py +0 -0
  221. {modal-1.5.3.dev7 → modal-1.5.3.dev11}/modal_docs/gen_reference_docs_main.py +0 -0
  222. {modal-1.5.3.dev7 → modal-1.5.3.dev11}/modal_docs/mdmd/__init__.py +0 -0
  223. {modal-1.5.3.dev7 → modal-1.5.3.dev11}/modal_docs/mdmd/signatures.py +0 -0
  224. {modal-1.5.3.dev7 → modal-1.5.3.dev11}/modal_docs/mdmd/types.py +0 -0
  225. {modal-1.5.3.dev7 → modal-1.5.3.dev11}/modal_proto/__init__.py +0 -0
  226. {modal-1.5.3.dev7 → modal-1.5.3.dev11}/modal_proto/py.typed +0 -0
  227. {modal-1.5.3.dev7 → modal-1.5.3.dev11}/modal_proto/task_command_router_grpc.py +0 -0
  228. {modal-1.5.3.dev7 → modal-1.5.3.dev11}/modal_proto/task_command_router_pb2.py +0 -0
  229. {modal-1.5.3.dev7 → modal-1.5.3.dev11}/modal_proto/task_command_router_pb2.pyi +0 -0
  230. {modal-1.5.3.dev7 → modal-1.5.3.dev11}/modal_proto/task_command_router_pb2_grpc.py +0 -0
  231. {modal-1.5.3.dev7 → modal-1.5.3.dev11}/modal_proto/task_command_router_pb2_grpc.pyi +0 -0
  232. {modal-1.5.3.dev7 → modal-1.5.3.dev11}/modal_version/__main__.py +0 -0
  233. {modal-1.5.3.dev7 → modal-1.5.3.dev11}/setup.cfg +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: modal
3
- Version: 1.5.3.dev7
3
+ Version: 1.5.3.dev11
4
4
  Summary: Python client library for Modal
5
5
  Author-email: Modal Labs <support@modal.com>
6
6
  License-Expression: Apache-2.0
@@ -414,7 +414,7 @@ class _EnvironmentBillingManager:
414
414
  - [`modal environment billing report`](https://modal.com/docs/cli/latest/environment#modal-environment-billing-report):
415
415
  An environment report CLI that has convenience features around relative time range queries
416
416
  and JSON/CSV output.
417
- - [`Workspace.billing.report()`](https://modal.com/docs/sdk/py/latest/modal.Workspace#billingreport):
417
+ - [`Workspace.billing.report()`](https://modal.com/docs/sdk/py/latest/Workspace#billingreport):
418
418
  An analogous report API for the entire Workspace.
419
419
 
420
420
  """
@@ -171,7 +171,7 @@ class _FunctionOptions:
171
171
  replace_secret_ids=bool(self.secrets),
172
172
  replace_volume_mounts=len(volume_mounts) > 0,
173
173
  volume_mounts=volume_mounts,
174
- cloud_bucket_mounts=cloud_bucket_mounts_to_proto(self.cloud_bucket_mounts),
174
+ cloud_bucket_mounts=cloud_bucket_mounts_to_proto(self.cloud_bucket_mounts)[0],
175
175
  replace_cloud_bucket_mounts=bool(self.cloud_bucket_mounts),
176
176
  resources=self.resources,
177
177
  retry_policy=self.retry_policy,
@@ -1000,7 +1000,7 @@ class _Function(typing.Generic[P, ReturnType, OriginalReturnType], _Object, type
1000
1000
  untrusted=restrict_modal_access,
1001
1001
  single_use_containers=single_use_containers,
1002
1002
  max_inputs=int(single_use_containers), # TODO(michael) remove after worker rollover
1003
- cloud_bucket_mounts=cloud_bucket_mounts_to_proto(cloud_bucket_mounts),
1003
+ cloud_bucket_mounts=cloud_bucket_mounts_to_proto(cloud_bucket_mounts)[0],
1004
1004
  scheduler_placement=scheduler_placement,
1005
1005
  is_class=info.is_service_class(),
1006
1006
  class_parameter_info=info.class_parameter_info(),
@@ -1914,9 +1914,9 @@ class _Function(typing.Generic[P, ReturnType, OriginalReturnType], _Object, type
1914
1914
  **kwargs: Keyword arguments forwarded to the remote function.
1915
1915
 
1916
1916
  Returns:
1917
- A [`modal.FunctionCall`](https://modal.com/docs/sdk/py/latest/modal.FunctionCall) object
1917
+ A [`modal.FunctionCall`](https://modal.com/docs/sdk/py/latest/FunctionCall) object
1918
1918
  that can later be polled or waited for using
1919
- [`.get(timeout=...)`](https://modal.com/docs/sdk/py/latest/modal.FunctionCall#get).
1919
+ [`.get(timeout=...)`](https://modal.com/docs/sdk/py/latest/FunctionCall#get).
1920
1920
  """
1921
1921
  self._check_no_web_url("spawn")
1922
1922
  if self._is_generator:
@@ -2078,7 +2078,7 @@ class _FunctionCall(typing.Generic[ReturnType], _Object, type_prefix="fc"):
2078
2078
  Note: the call graph data is not populated in real-time, and its capture is best-effort.
2079
2079
  We do not recommend relying on this method for critical use cases.
2080
2080
 
2081
- See the [`modal.types`](/docs/sdk/py/latest/modal.types) reference for information
2081
+ See the [`modal.types`](/docs/sdk/py/latest/types) reference for information
2082
2082
  on the return values.
2083
2083
 
2084
2084
  Returns:
@@ -478,7 +478,7 @@ def _wsgi_app(
478
478
  Web Server Gateway Interface (WSGI) is a standard for synchronous Python web apps.
479
479
  It has been [succeeded by the ASGI interface](https://asgi.readthedocs.io/en/latest/introduction.html#wsgi-compatibility)
480
480
  which is compatible with ASGI and supports additional functionality such as web sockets.
481
- Modal supports ASGI via [`asgi_app`](https://modal.com/docs/sdk/py/latest/modal.asgi_app).
481
+ Modal supports ASGI via [`asgi_app`](https://modal.com/docs/sdk/py/latest/asgi_app).
482
482
 
483
483
  Examples:
484
484
  ```python
@@ -49,7 +49,7 @@ class _Server:
49
49
  See the [guide](https://modal.com/docs/guide/servers) for more information.
50
50
 
51
51
  Generally, you will not construct a Server directly.
52
- Instead, use the [`@app.server()`](https://modal.com/docs/sdk/py/latest/modal.App#server) decorator.
52
+ Instead, use the [`@app.server()`](https://modal.com/docs/sdk/py/latest/App#server) decorator.
53
53
 
54
54
  ```python notest
55
55
  @app.server(port=8080, routing_region="us-east")
@@ -974,3 +974,8 @@ class TaskCommandRouterClient:
974
974
  return await self._unary_call_with_deadline(
975
975
  self._stub.TaskSnapshotFilesystem, request, timeout=timeout, **kwargs
976
976
  )
977
+
978
+ async def snapshot_memory(
979
+ self, request: sr_pb2.TaskSnapshotMemoryRequest, *, timeout: float, **kwargs
980
+ ) -> sr_pb2.TaskSnapshotMemoryResponse:
981
+ return await self._unary_call_with_deadline(self._stub.TaskSnapshotMemory, request, timeout=timeout, **kwargs)
@@ -283,7 +283,7 @@ class _WorkspaceBillingManager:
283
283
  - [`modal billing report`](https://modal.com/docs/cli/latest/billing#modal-billing-report):
284
284
  A workspace report CLI that has convenience features around relative time range queries
285
285
  and JSON/CSV output.
286
- - [`Environment.billing.report()`](https://modal.com/docs/sdk/py/latest/modal.Environment#billingreport):
286
+ - [`Environment.billing.report()`](https://modal.com/docs/sdk/py/latest/Environment#billingreport):
287
287
  An analogous report API that is scoped to a specific Environment.
288
288
 
289
289
  """
@@ -710,7 +710,7 @@ class _App:
710
710
  Modal functions can also be used as CLI entrypoints, but unlike `local_entrypoint`,
711
711
  those functions are executed remotely directly.
712
712
 
713
- Note that an explicit [`app.run()`](https://modal.com/docs/sdk/py/latest/modal.App#run) is not needed, as an
713
+ Note that an explicit [`app.run()`](https://modal.com/docs/sdk/py/latest/App#run) is not needed, as an
714
714
  [app](https://modal.com/docs/guide/apps) is automatically created for you.
715
715
 
716
716
  Args:
@@ -1069,7 +1069,7 @@ class _App:
1069
1069
  max_inputs: int | None = None,
1070
1070
  ) -> Callable[[CLS_T | _PartialFunction], CLS_T]:
1071
1071
  """
1072
- Decorator to register a new Modal [Cls](https://modal.com/docs/sdk/py/latest/modal.Cls) with this App.
1072
+ Decorator to register a new Modal [Cls](https://modal.com/docs/sdk/py/latest/Cls) with this App.
1073
1073
 
1074
1074
  Args:
1075
1075
  image: The image to run as the container for the class service.
@@ -494,7 +494,7 @@ class _App:
494
494
  Modal functions can also be used as CLI entrypoints, but unlike `local_entrypoint`,
495
495
  those functions are executed remotely directly.
496
496
 
497
- Note that an explicit [`app.run()`](https://modal.com/docs/sdk/py/latest/modal.App#run) is not needed, as an
497
+ Note that an explicit [`app.run()`](https://modal.com/docs/sdk/py/latest/App#run) is not needed, as an
498
498
  [app](https://modal.com/docs/guide/apps) is automatically created for you.
499
499
 
500
500
  Args:
@@ -683,7 +683,7 @@ class _App:
683
683
  _experimental_restrict_output: bool = False,
684
684
  max_inputs: typing.Optional[int] = None,
685
685
  ) -> collections.abc.Callable[[typing.Union[CLS_T, modal._partial_function._PartialFunction]], CLS_T]:
686
- """Decorator to register a new Modal [Cls](https://modal.com/docs/sdk/py/latest/modal.Cls) with this App.
686
+ """Decorator to register a new Modal [Cls](https://modal.com/docs/sdk/py/latest/Cls) with this App.
687
687
 
688
688
  Args:
689
689
  image: The image to run as the container for the class service.
@@ -1498,7 +1498,7 @@ class App:
1498
1498
  Modal functions can also be used as CLI entrypoints, but unlike `local_entrypoint`,
1499
1499
  those functions are executed remotely directly.
1500
1500
 
1501
- Note that an explicit [`app.run()`](https://modal.com/docs/sdk/py/latest/modal.App#run) is not needed, as an
1501
+ Note that an explicit [`app.run()`](https://modal.com/docs/sdk/py/latest/App#run) is not needed, as an
1502
1502
  [app](https://modal.com/docs/guide/apps) is automatically created for you.
1503
1503
 
1504
1504
  Args:
@@ -1687,7 +1687,7 @@ class App:
1687
1687
  _experimental_restrict_output: bool = False,
1688
1688
  max_inputs: typing.Optional[int] = None,
1689
1689
  ) -> collections.abc.Callable[[typing.Union[CLS_T, modal.partial_function.PartialFunction]], CLS_T]:
1690
- """Decorator to register a new Modal [Cls](https://modal.com/docs/sdk/py/latest/modal.Cls) with this App.
1690
+ """Decorator to register a new Modal [Cls](https://modal.com/docs/sdk/py/latest/Cls) with this App.
1691
1691
 
1692
1692
  Args:
1693
1693
  image: The image to run as the container for the class service.
@@ -107,7 +107,7 @@ async def report(
107
107
  or by requesting a date range using `--for` (e.g., `--for today`, `--for 'last month'`).
108
108
 
109
109
  This command provides a CLI frontend for the
110
- [`Workspace.billing.report`](https://modal.com/docs/sdk/py/latest/modal.Workspace#billingreport) API.
110
+ [`Workspace.billing.report`](https://modal.com/docs/sdk/py/latest/Workspace#billingreport) API.
111
111
 
112
112
  Note that, as with the API, the start date is inclusive and the end date is exclusive.
113
113
  Data will be reported for full intervals only. Using `--for` is a convenient way to define a
@@ -14,7 +14,7 @@ config_cli = ModalGroup(
14
14
  help="""
15
15
  Manage client configuration for the current profile.
16
16
 
17
- Refer to https://modal.com/docs/sdk/py/latest/modal.config for a full explanation
17
+ Refer to https://modal.com/docs/sdk/py/latest/config for a full explanation
18
18
  of what these options mean, and how to set them.
19
19
  """,
20
20
  )
@@ -229,7 +229,7 @@ async def environment_billing(
229
229
  or by requesting a date range using `--for` (e.g., `--for today`, `--for 'last month'`).
230
230
 
231
231
  This command provides a CLI frontend for the
232
- [`Environment.billing.report`](https://modal.com/docs/sdk/py/latest/modal.Environment#billingreport)
232
+ [`Environment.billing.report`](https://modal.com/docs/sdk/py/latest/Environment#billingreport)
233
233
  API.
234
234
 
235
235
  Note that, as with the API, the start date is inclusive and the end date is exclusive.
@@ -373,7 +373,7 @@ def shell(
373
373
  modal shell hello_world.py::my_function
374
374
  ```
375
375
 
376
- Or, if you're using a [modal.Cls](https://modal.com/docs/sdk/py/latest/modal.Cls)
376
+ Or, if you're using a [modal.Cls](https://modal.com/docs/sdk/py/latest/Cls)
377
377
  you can refer to a `@modal.method` directly:
378
378
 
379
379
  ```
@@ -241,7 +241,7 @@ class _Client:
241
241
  else:
242
242
  raise AuthError(
243
243
  "Token missing. Could not authenticate client."
244
- " If you have token credentials, see modal.com/docs/sdk/py/latest/modal.config for setup help."
244
+ " If you have token credentials, see modal.com/docs/sdk/py/latest/config for setup help."
245
245
  " If you are a new user, register an account at modal.com, then run `modal token new`."
246
246
  )
247
247
 
@@ -37,7 +37,7 @@ class _Client:
37
37
  server_url: str,
38
38
  client_type: int,
39
39
  credentials: typing.Optional[tuple[str, str]],
40
- version: str = "1.5.3.dev7",
40
+ version: str = "1.5.3.dev11",
41
41
  ):
42
42
  """mdmd:hidden
43
43
  The Modal client object is not intended to be instantiated directly by users.
@@ -207,7 +207,7 @@ class Client:
207
207
  server_url: str,
208
208
  client_type: int,
209
209
  credentials: typing.Optional[tuple[str, str]],
210
- version: str = "1.5.3.dev7",
210
+ version: str = "1.5.3.dev11",
211
211
  ):
212
212
  """mdmd:hidden
213
213
  The Modal client object is not intended to be instantiated directly by users.
@@ -121,11 +121,14 @@ class _CloudBucketMount:
121
121
  force_path_style: bool = False
122
122
 
123
123
 
124
- def cloud_bucket_mounts_to_proto(mounts: Sequence[tuple[str, _CloudBucketMount]]) -> list[api_pb2.CloudBucketMount]:
124
+ def cloud_bucket_mounts_to_proto(
125
+ mounts: Sequence[tuple[str, _CloudBucketMount]], split_ephemeral_credentials: bool = False
126
+ ) -> tuple[list[api_pb2.CloudBucketMount], dict[str, api_pb2.StringMap]]:
125
127
  """mdmd:hidden
126
128
  Helper function to convert `CloudBucketMount` to a list of protobufs that can be passed to the server.
127
129
  """
128
130
  cloud_bucket_mounts: list[api_pb2.CloudBucketMount] = []
131
+ cloud_bucket_credentials: dict[str, api_pb2.StringMap] = {}
129
132
 
130
133
  for path, mount in mounts:
131
134
  # crude mapping from mount arguments to type.
@@ -153,11 +156,20 @@ def cloud_bucket_mounts_to_proto(mounts: Sequence[tuple[str, _CloudBucketMount]]
153
156
  else:
154
157
  key_prefix = mount.key_prefix
155
158
 
159
+ credentials_secret_id = ""
160
+ if secret := mount.secret:
161
+ if split_ephemeral_credentials and secret._load_env_dict:
162
+ env_dict = secret._load_env_dict()
163
+ credientials = api_pb2.StringMap(contents=env_dict)
164
+ cloud_bucket_credentials[path] = credientials
165
+ else:
166
+ credentials_secret_id = secret.object_id
167
+
156
168
  cloud_bucket_mount = api_pb2.CloudBucketMount(
157
169
  bucket_name=mount.bucket_name,
158
170
  bucket_endpoint_url=mount.bucket_endpoint_url,
159
171
  mount_path=path,
160
- credentials_secret_id=mount.secret.object_id if mount.secret else "",
172
+ credentials_secret_id=credentials_secret_id,
161
173
  read_only=mount.read_only,
162
174
  bucket_type=bucket_type,
163
175
  requester_pays=mount.requester_pays,
@@ -167,7 +179,7 @@ def cloud_bucket_mounts_to_proto(mounts: Sequence[tuple[str, _CloudBucketMount]]
167
179
  )
168
180
  cloud_bucket_mounts.append(cloud_bucket_mount)
169
181
 
170
- return cloud_bucket_mounts
182
+ return cloud_bucket_mounts, cloud_bucket_credentials
171
183
 
172
184
 
173
185
  CloudBucketMount = synchronize_api(_CloudBucketMount)
@@ -126,8 +126,8 @@ class _CloudBucketMount:
126
126
  ...
127
127
 
128
128
  def cloud_bucket_mounts_to_proto(
129
- mounts: collections.abc.Sequence[tuple[str, _CloudBucketMount]],
130
- ) -> list[modal_proto.api_pb2.CloudBucketMount]:
129
+ mounts: collections.abc.Sequence[tuple[str, _CloudBucketMount]], split_ephemeral_credentials: bool = False
130
+ ) -> tuple[list[modal_proto.api_pb2.CloudBucketMount], dict[str, modal_proto.api_pb2.StringMap]]:
131
131
  """mdmd:hidden
132
132
  Helper function to convert `CloudBucketMount` to a list of protobufs that can be passed to the server.
133
133
  """
@@ -447,10 +447,10 @@ Obj = synchronize_api(_Obj)
447
447
  class _Cls(_Object, type_prefix="cs"):
448
448
  """
449
449
  Cls adds method pooling and [lifecycle hook](https://modal.com/docs/guide/lifecycle-functions) behavior
450
- to [modal.Function](https://modal.com/docs/sdk/py/latest/modal.Function).
450
+ to [modal.Function](https://modal.com/docs/sdk/py/latest/Function).
451
451
 
452
452
  Generally, you will not construct a Cls directly.
453
- Instead, use the [`@app.cls()`](https://modal.com/docs/sdk/py/latest/modal.App#cls) decorator on the App object.
453
+ Instead, use the [`@app.cls()`](https://modal.com/docs/sdk/py/latest/App#cls) decorator on the App object.
454
454
  """
455
455
 
456
456
  _class_service_function: _Function | None # The _Function (read "service") serving *all* methods of the class
@@ -241,10 +241,10 @@ class Obj:
241
241
 
242
242
  class _Cls(modal._object._Object):
243
243
  """Cls adds method pooling and [lifecycle hook](https://modal.com/docs/guide/lifecycle-functions) behavior
244
- to [modal.Function](https://modal.com/docs/sdk/py/latest/modal.Function).
244
+ to [modal.Function](https://modal.com/docs/sdk/py/latest/Function).
245
245
 
246
246
  Generally, you will not construct a Cls directly.
247
- Instead, use the [`@app.cls()`](https://modal.com/docs/sdk/py/latest/modal.App#cls) decorator on the App object.
247
+ Instead, use the [`@app.cls()`](https://modal.com/docs/sdk/py/latest/App#cls) decorator on the App object.
248
248
  """
249
249
 
250
250
  _class_service_function: typing.Optional[modal._functions._Function]
@@ -446,10 +446,10 @@ class _Cls(modal._object._Object):
446
446
 
447
447
  class Cls(modal.object.Object):
448
448
  """Cls adds method pooling and [lifecycle hook](https://modal.com/docs/guide/lifecycle-functions) behavior
449
- to [modal.Function](https://modal.com/docs/sdk/py/latest/modal.Function).
449
+ to [modal.Function](https://modal.com/docs/sdk/py/latest/Function).
450
450
 
451
451
  Generally, you will not construct a Cls directly.
452
- Instead, use the [`@app.cls()`](https://modal.com/docs/sdk/py/latest/modal.App#cls) decorator on the App object.
452
+ Instead, use the [`@app.cls()`](https://modal.com/docs/sdk/py/latest/App#cls) decorator on the App object.
453
453
  """
454
454
 
455
455
  _class_service_function: typing.Optional[modal.functions.Function]
@@ -288,7 +288,7 @@ class EnvironmentBillingManager:
288
288
  - [`modal environment billing report`](https://modal.com/docs/cli/latest/environment#modal-environment-billing-report):
289
289
  An environment report CLI that has convenience features around relative time range queries
290
290
  and JSON/CSV output.
291
- - [`Workspace.billing.report()`](https://modal.com/docs/sdk/py/latest/modal.Workspace#billingreport):
291
+ - [`Workspace.billing.report()`](https://modal.com/docs/sdk/py/latest/Workspace#billingreport):
292
292
  An analogous report API for the entire Workspace.
293
293
  """
294
294
  ...
@@ -325,7 +325,7 @@ class EnvironmentBillingManager:
325
325
  - [`modal environment billing report`](https://modal.com/docs/cli/latest/environment#modal-environment-billing-report):
326
326
  An environment report CLI that has convenience features around relative time range queries
327
327
  and JSON/CSV output.
328
- - [`Workspace.billing.report()`](https://modal.com/docs/sdk/py/latest/modal.Workspace#billingreport):
328
+ - [`Workspace.billing.report()`](https://modal.com/docs/sdk/py/latest/Workspace#billingreport):
329
329
  An analogous report API for the entire Workspace.
330
330
  """
331
331
  ...
@@ -47,7 +47,7 @@ UserCodeException = synchronicity.exceptions.UserCodeException # Deprecated typ
47
47
 
48
48
  class Error(Exception):
49
49
  """
50
- Base class for all Modal errors. See [`modal.exception`](https://modal.com/docs/sdk/py/latest/modal.exception)
50
+ Base class for all Modal errors. See [`modal.exception`](https://modal.com/docs/sdk/py/latest/exception)
51
51
  for the specialized error classes.
52
52
 
53
53
  Examples:
@@ -188,6 +188,10 @@ class SandboxTimeoutError(TimeoutError):
188
188
  """Raised when a Sandbox exceeds its execution duration limit and times out."""
189
189
 
190
190
 
191
+ class SnapshotCreationError(Error):
192
+ """Raised when a Sandbox fails to create an exit snapshot."""
193
+
194
+
191
195
  class ExecTimeoutError(TimeoutError):
192
196
  """Raised when a container process exceeds its execution duration limit and times out."""
193
197
 
@@ -620,9 +620,9 @@ class Function(
620
620
  **kwargs: Keyword arguments forwarded to the remote function.
621
621
 
622
622
  Returns:
623
- A [`modal.FunctionCall`](https://modal.com/docs/sdk/py/latest/modal.FunctionCall) object
623
+ A [`modal.FunctionCall`](https://modal.com/docs/sdk/py/latest/FunctionCall) object
624
624
  that can later be polled or waited for using
625
- [`.get(timeout=...)`](https://modal.com/docs/sdk/py/latest/modal.FunctionCall#get).
625
+ [`.get(timeout=...)`](https://modal.com/docs/sdk/py/latest/FunctionCall#get).
626
626
  """
627
627
  ...
628
628
 
@@ -636,9 +636,9 @@ class Function(
636
636
  **kwargs: Keyword arguments forwarded to the remote function.
637
637
 
638
638
  Returns:
639
- A [`modal.FunctionCall`](https://modal.com/docs/sdk/py/latest/modal.FunctionCall) object
639
+ A [`modal.FunctionCall`](https://modal.com/docs/sdk/py/latest/FunctionCall) object
640
640
  that can later be polled or waited for using
641
- [`.get(timeout=...)`](https://modal.com/docs/sdk/py/latest/modal.FunctionCall#get).
641
+ [`.get(timeout=...)`](https://modal.com/docs/sdk/py/latest/FunctionCall#get).
642
642
  """
643
643
  ...
644
644
 
@@ -1049,7 +1049,7 @@ class FunctionCall(typing.Generic[modal._functions.ReturnType], modal.object.Obj
1049
1049
  Note: the call graph data is not populated in real-time, and its capture is best-effort.
1050
1050
  We do not recommend relying on this method for critical use cases.
1051
1051
 
1052
- See the [`modal.types`](/docs/sdk/py/latest/modal.types) reference for information
1052
+ See the [`modal.types`](/docs/sdk/py/latest/types) reference for information
1053
1053
  on the return values.
1054
1054
 
1055
1055
  Returns:
@@ -1063,7 +1063,7 @@ class FunctionCall(typing.Generic[modal._functions.ReturnType], modal.object.Obj
1063
1063
  Note: the call graph data is not populated in real-time, and its capture is best-effort.
1064
1064
  We do not recommend relying on this method for critical use cases.
1065
1065
 
1066
- See the [`modal.types`](/docs/sdk/py/latest/modal.types) reference for information
1066
+ See the [`modal.types`](/docs/sdk/py/latest/types) reference for information
1067
1067
  on the return values.
1068
1068
 
1069
1069
  Returns:
@@ -169,7 +169,7 @@ def wsgi_app(
169
169
  Web Server Gateway Interface (WSGI) is a standard for synchronous Python web apps.
170
170
  It has been [succeeded by the ASGI interface](https://asgi.readthedocs.io/en/latest/introduction.html#wsgi-compatibility)
171
171
  which is compatible with ASGI and supports additional functionality such as web sockets.
172
- Modal supports ASGI via [`asgi_app`](https://modal.com/docs/sdk/py/latest/modal.asgi_app).
172
+ Modal supports ASGI via [`asgi_app`](https://modal.com/docs/sdk/py/latest/asgi_app).
173
173
 
174
174
  Examples:
175
175
  ```python