modAL 1.6.3.dev1__tar.gz → 1.6.3.dev3__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (245) hide show
  1. {modal-1.6.3.dev1 → modal-1.6.3.dev3}/PKG-INFO +1 -1
  2. {modal-1.6.3.dev1 → modal-1.6.3.dev3}/modal/client.pyi +2 -2
  3. {modal-1.6.3.dev1 → modal-1.6.3.dev3}/modal/sandbox/_task_command_router_client.py +8 -13
  4. {modal-1.6.3.dev1 → modal-1.6.3.dev3}/modal.egg-info/PKG-INFO +1 -1
  5. {modal-1.6.3.dev1 → modal-1.6.3.dev3}/modal_proto/api_grpc.py +48 -0
  6. {modal-1.6.3.dev1 → modal-1.6.3.dev3}/modal_proto/api_pb2.py +1522 -1410
  7. {modal-1.6.3.dev1 → modal-1.6.3.dev3}/modal_proto/api_pb2.pyi +334 -36
  8. {modal-1.6.3.dev1 → modal-1.6.3.dev3}/modal_proto/api_pb2_grpc.py +100 -0
  9. {modal-1.6.3.dev1 → modal-1.6.3.dev3}/modal_proto/api_pb2_grpc.pyi +32 -0
  10. {modal-1.6.3.dev1 → modal-1.6.3.dev3}/modal_proto/modal_api_grpc.py +3 -0
  11. {modal-1.6.3.dev1 → modal-1.6.3.dev3}/modal_version/__init__.py +1 -1
  12. {modal-1.6.3.dev1 → modal-1.6.3.dev3}/LICENSE +0 -0
  13. {modal-1.6.3.dev1 → modal-1.6.3.dev3}/README.md +0 -0
  14. {modal-1.6.3.dev1 → modal-1.6.3.dev3}/modal/__init__.py +0 -0
  15. {modal-1.6.3.dev1 → modal-1.6.3.dev3}/modal/__main__.py +0 -0
  16. {modal-1.6.3.dev1 → modal-1.6.3.dev3}/modal/_billing.py +0 -0
  17. {modal-1.6.3.dev1 → modal-1.6.3.dev3}/modal/_cluster.py +0 -0
  18. {modal-1.6.3.dev1 → modal-1.6.3.dev3}/modal/_cluster.pyi +0 -0
  19. {modal-1.6.3.dev1 → modal-1.6.3.dev3}/modal/_container_entrypoint.py +0 -0
  20. {modal-1.6.3.dev1 → modal-1.6.3.dev3}/modal/_environments.py +0 -0
  21. {modal-1.6.3.dev1 → modal-1.6.3.dev3}/modal/_function_variants.py +0 -0
  22. {modal-1.6.3.dev1 → modal-1.6.3.dev3}/modal/_functions.py +0 -0
  23. {modal-1.6.3.dev1 → modal-1.6.3.dev3}/modal/_grpc_client.py +0 -0
  24. {modal-1.6.3.dev1 → modal-1.6.3.dev3}/modal/_image.py +0 -0
  25. {modal-1.6.3.dev1 → modal-1.6.3.dev3}/modal/_ipython.py +0 -0
  26. {modal-1.6.3.dev1 → modal-1.6.3.dev3}/modal/_load_context.py +0 -0
  27. {modal-1.6.3.dev1 → modal-1.6.3.dev3}/modal/_location.py +0 -0
  28. {modal-1.6.3.dev1 → modal-1.6.3.dev3}/modal/_logs.py +0 -0
  29. {modal-1.6.3.dev1 → modal-1.6.3.dev3}/modal/_logs_manager.py +0 -0
  30. {modal-1.6.3.dev1 → modal-1.6.3.dev3}/modal/_logs_manager.pyi +0 -0
  31. {modal-1.6.3.dev1 → modal-1.6.3.dev3}/modal/_metrics.py +0 -0
  32. {modal-1.6.3.dev1 → modal-1.6.3.dev3}/modal/_metrics.pyi +0 -0
  33. {modal-1.6.3.dev1 → modal-1.6.3.dev3}/modal/_object.py +0 -0
  34. {modal-1.6.3.dev1 → modal-1.6.3.dev3}/modal/_outbound_policy.py +0 -0
  35. {modal-1.6.3.dev1 → modal-1.6.3.dev3}/modal/_outbound_policy.pyi +0 -0
  36. {modal-1.6.3.dev1 → modal-1.6.3.dev3}/modal/_output/__init__.py +0 -0
  37. {modal-1.6.3.dev1 → modal-1.6.3.dev3}/modal/_output/manager.py +0 -0
  38. {modal-1.6.3.dev1 → modal-1.6.3.dev3}/modal/_output/pty.py +0 -0
  39. {modal-1.6.3.dev1 → modal-1.6.3.dev3}/modal/_output/rich.py +0 -0
  40. {modal-1.6.3.dev1 → modal-1.6.3.dev3}/modal/_output/status.py +0 -0
  41. {modal-1.6.3.dev1 → modal-1.6.3.dev3}/modal/_partial_function.py +0 -0
  42. {modal-1.6.3.dev1 → modal-1.6.3.dev3}/modal/_resolver.py +0 -0
  43. {modal-1.6.3.dev1 → modal-1.6.3.dev3}/modal/_resources.py +0 -0
  44. {modal-1.6.3.dev1 → modal-1.6.3.dev3}/modal/_runtime/__init__.py +0 -0
  45. {modal-1.6.3.dev1 → modal-1.6.3.dev3}/modal/_runtime/asgi.py +0 -0
  46. {modal-1.6.3.dev1 → modal-1.6.3.dev3}/modal/_runtime/container_io_manager.py +0 -0
  47. {modal-1.6.3.dev1 → modal-1.6.3.dev3}/modal/_runtime/container_io_manager.pyi +0 -0
  48. {modal-1.6.3.dev1 → modal-1.6.3.dev3}/modal/_runtime/execution_context.py +0 -0
  49. {modal-1.6.3.dev1 → modal-1.6.3.dev3}/modal/_runtime/execution_context.pyi +0 -0
  50. {modal-1.6.3.dev1 → modal-1.6.3.dev3}/modal/_runtime/gpu_memory_snapshot.py +0 -0
  51. {modal-1.6.3.dev1 → modal-1.6.3.dev3}/modal/_runtime/task_lifecycle_manager.py +0 -0
  52. {modal-1.6.3.dev1 → modal-1.6.3.dev3}/modal/_runtime/task_lifecycle_manager.pyi +0 -0
  53. {modal-1.6.3.dev1 → modal-1.6.3.dev3}/modal/_runtime/telemetry.py +0 -0
  54. {modal-1.6.3.dev1 → modal-1.6.3.dev3}/modal/_runtime/user_code_event_loop.py +0 -0
  55. {modal-1.6.3.dev1 → modal-1.6.3.dev3}/modal/_runtime/user_code_imports.py +0 -0
  56. {modal-1.6.3.dev1 → modal-1.6.3.dev3}/modal/_serialization.py +0 -0
  57. {modal-1.6.3.dev1 → modal-1.6.3.dev3}/modal/_server.py +0 -0
  58. {modal-1.6.3.dev1 → modal-1.6.3.dev3}/modal/_server.pyi +0 -0
  59. {modal-1.6.3.dev1 → modal-1.6.3.dev3}/modal/_supports_logs.py +0 -0
  60. {modal-1.6.3.dev1 → modal-1.6.3.dev3}/modal/_traceback.py +0 -0
  61. {modal-1.6.3.dev1 → modal-1.6.3.dev3}/modal/_tunnel.py +0 -0
  62. {modal-1.6.3.dev1 → modal-1.6.3.dev3}/modal/_tunnel.pyi +0 -0
  63. {modal-1.6.3.dev1 → modal-1.6.3.dev3}/modal/_type_manager.py +0 -0
  64. {modal-1.6.3.dev1 → modal-1.6.3.dev3}/modal/_utils/__init__.py +0 -0
  65. {modal-1.6.3.dev1 → modal-1.6.3.dev3}/modal/_utils/app_utils.py +0 -0
  66. {modal-1.6.3.dev1 → modal-1.6.3.dev3}/modal/_utils/async_utils.py +0 -0
  67. {modal-1.6.3.dev1 → modal-1.6.3.dev3}/modal/_utils/auth_token_manager.py +0 -0
  68. {modal-1.6.3.dev1 → modal-1.6.3.dev3}/modal/_utils/blob_utils.py +0 -0
  69. {modal-1.6.3.dev1 → modal-1.6.3.dev3}/modal/_utils/browser_utils.py +0 -0
  70. {modal-1.6.3.dev1 → modal-1.6.3.dev3}/modal/_utils/bytes_io_segment_payload.py +0 -0
  71. {modal-1.6.3.dev1 → modal-1.6.3.dev3}/modal/_utils/curl_utils.py +0 -0
  72. {modal-1.6.3.dev1 → modal-1.6.3.dev3}/modal/_utils/deprecation.py +0 -0
  73. {modal-1.6.3.dev1 → modal-1.6.3.dev3}/modal/_utils/display_utils.py +0 -0
  74. {modal-1.6.3.dev1 → modal-1.6.3.dev3}/modal/_utils/docker_utils.py +0 -0
  75. {modal-1.6.3.dev1 → modal-1.6.3.dev3}/modal/_utils/function_utils.py +0 -0
  76. {modal-1.6.3.dev1 → modal-1.6.3.dev3}/modal/_utils/git_utils.py +0 -0
  77. {modal-1.6.3.dev1 → modal-1.6.3.dev3}/modal/_utils/grpc_testing.py +0 -0
  78. {modal-1.6.3.dev1 → modal-1.6.3.dev3}/modal/_utils/grpc_utils.py +0 -0
  79. {modal-1.6.3.dev1 → modal-1.6.3.dev3}/modal/_utils/hash_utils.py +0 -0
  80. {modal-1.6.3.dev1 → modal-1.6.3.dev3}/modal/_utils/http_utils.py +0 -0
  81. {modal-1.6.3.dev1 → modal-1.6.3.dev3}/modal/_utils/idle_countdown.py +0 -0
  82. {modal-1.6.3.dev1 → modal-1.6.3.dev3}/modal/_utils/jwt_utils.py +0 -0
  83. {modal-1.6.3.dev1 → modal-1.6.3.dev3}/modal/_utils/logger.py +0 -0
  84. {modal-1.6.3.dev1 → modal-1.6.3.dev3}/modal/_utils/mount_utils.py +0 -0
  85. {modal-1.6.3.dev1 → modal-1.6.3.dev3}/modal/_utils/name_utils.py +0 -0
  86. {modal-1.6.3.dev1 → modal-1.6.3.dev3}/modal/_utils/package_utils.py +0 -0
  87. {modal-1.6.3.dev1 → modal-1.6.3.dev3}/modal/_utils/pattern_utils.py +0 -0
  88. {modal-1.6.3.dev1 → modal-1.6.3.dev3}/modal/_utils/proxy_support.py +0 -0
  89. {modal-1.6.3.dev1 → modal-1.6.3.dev3}/modal/_utils/rand_pb_testing.py +0 -0
  90. {modal-1.6.3.dev1 → modal-1.6.3.dev3}/modal/_utils/sandbox_fs_utils.py +0 -0
  91. {modal-1.6.3.dev1 → modal-1.6.3.dev3}/modal/_utils/shell_utils.py +0 -0
  92. {modal-1.6.3.dev1 → modal-1.6.3.dev3}/modal/_utils/time_utils.py +0 -0
  93. {modal-1.6.3.dev1 → modal-1.6.3.dev3}/modal/_vendor/__init__.py +0 -0
  94. {modal-1.6.3.dev1 → modal-1.6.3.dev3}/modal/_vendor/a2wsgi_wsgi.py +0 -0
  95. {modal-1.6.3.dev1 → modal-1.6.3.dev3}/modal/_vendor/cloudpickle.py +0 -0
  96. {modal-1.6.3.dev1 → modal-1.6.3.dev3}/modal/_vendor/tblib.py +0 -0
  97. {modal-1.6.3.dev1 → modal-1.6.3.dev3}/modal/_vendor/version.py +0 -0
  98. {modal-1.6.3.dev1 → modal-1.6.3.dev3}/modal/_watcher.py +0 -0
  99. {modal-1.6.3.dev1 → modal-1.6.3.dev3}/modal/_workspace.py +0 -0
  100. {modal-1.6.3.dev1 → modal-1.6.3.dev3}/modal/app.py +0 -0
  101. {modal-1.6.3.dev1 → modal-1.6.3.dev3}/modal/app.pyi +0 -0
  102. {modal-1.6.3.dev1 → modal-1.6.3.dev3}/modal/billing.py +0 -0
  103. {modal-1.6.3.dev1 → modal-1.6.3.dev3}/modal/billing.pyi +0 -0
  104. {modal-1.6.3.dev1 → modal-1.6.3.dev3}/modal/builder/2023.12.312.txt +0 -0
  105. {modal-1.6.3.dev1 → modal-1.6.3.dev3}/modal/builder/2023.12.txt +0 -0
  106. {modal-1.6.3.dev1 → modal-1.6.3.dev3}/modal/builder/2024.04.txt +0 -0
  107. {modal-1.6.3.dev1 → modal-1.6.3.dev3}/modal/builder/2024.10.txt +0 -0
  108. {modal-1.6.3.dev1 → modal-1.6.3.dev3}/modal/builder/2025.06.txt +0 -0
  109. {modal-1.6.3.dev1 → modal-1.6.3.dev3}/modal/builder/PREVIEW.txt +0 -0
  110. {modal-1.6.3.dev1 → modal-1.6.3.dev3}/modal/builder/README.md +0 -0
  111. {modal-1.6.3.dev1 → modal-1.6.3.dev3}/modal/builder/base-images.json +0 -0
  112. {modal-1.6.3.dev1 → modal-1.6.3.dev3}/modal/call_graph.py +0 -0
  113. {modal-1.6.3.dev1 → modal-1.6.3.dev3}/modal/cli/__init__.py +0 -0
  114. {modal-1.6.3.dev1 → modal-1.6.3.dev3}/modal/cli/_download.py +0 -0
  115. {modal-1.6.3.dev1 → modal-1.6.3.dev3}/modal/cli/_help.py +0 -0
  116. {modal-1.6.3.dev1 → modal-1.6.3.dev3}/modal/cli/_logs.py +0 -0
  117. {modal-1.6.3.dev1 → modal-1.6.3.dev3}/modal/cli/_stats.py +0 -0
  118. {modal-1.6.3.dev1 → modal-1.6.3.dev3}/modal/cli/_traceback.py +0 -0
  119. {modal-1.6.3.dev1 → modal-1.6.3.dev3}/modal/cli/app.py +0 -0
  120. {modal-1.6.3.dev1 → modal-1.6.3.dev3}/modal/cli/billing.py +0 -0
  121. {modal-1.6.3.dev1 → modal-1.6.3.dev3}/modal/cli/changelog.py +0 -0
  122. {modal-1.6.3.dev1 → modal-1.6.3.dev3}/modal/cli/config.py +0 -0
  123. {modal-1.6.3.dev1 → modal-1.6.3.dev3}/modal/cli/container.py +0 -0
  124. {modal-1.6.3.dev1 → modal-1.6.3.dev3}/modal/cli/curl.py +0 -0
  125. {modal-1.6.3.dev1 → modal-1.6.3.dev3}/modal/cli/dashboard.py +0 -0
  126. {modal-1.6.3.dev1 → modal-1.6.3.dev3}/modal/cli/dict.py +0 -0
  127. {modal-1.6.3.dev1 → modal-1.6.3.dev3}/modal/cli/endpoint.py +0 -0
  128. {modal-1.6.3.dev1 → modal-1.6.3.dev3}/modal/cli/entry_point.py +0 -0
  129. {modal-1.6.3.dev1 → modal-1.6.3.dev3}/modal/cli/environment.py +0 -0
  130. {modal-1.6.3.dev1 → modal-1.6.3.dev3}/modal/cli/function.py +0 -0
  131. {modal-1.6.3.dev1 → modal-1.6.3.dev3}/modal/cli/image.py +0 -0
  132. {modal-1.6.3.dev1 → modal-1.6.3.dev3}/modal/cli/import_refs.py +0 -0
  133. {modal-1.6.3.dev1 → modal-1.6.3.dev3}/modal/cli/logo.py +0 -0
  134. {modal-1.6.3.dev1 → modal-1.6.3.dev3}/modal/cli/network_file_system.py +0 -0
  135. {modal-1.6.3.dev1 → modal-1.6.3.dev3}/modal/cli/profile.py +0 -0
  136. {modal-1.6.3.dev1 → modal-1.6.3.dev3}/modal/cli/queues.py +0 -0
  137. {modal-1.6.3.dev1 → modal-1.6.3.dev3}/modal/cli/run.py +0 -0
  138. {modal-1.6.3.dev1 → modal-1.6.3.dev3}/modal/cli/secret.py +0 -0
  139. {modal-1.6.3.dev1 → modal-1.6.3.dev3}/modal/cli/selector.py +0 -0
  140. {modal-1.6.3.dev1 → modal-1.6.3.dev3}/modal/cli/server.py +0 -0
  141. {modal-1.6.3.dev1 → modal-1.6.3.dev3}/modal/cli/shell.py +0 -0
  142. {modal-1.6.3.dev1 → modal-1.6.3.dev3}/modal/cli/skills.py +0 -0
  143. {modal-1.6.3.dev1 → modal-1.6.3.dev3}/modal/cli/token.py +0 -0
  144. {modal-1.6.3.dev1 → modal-1.6.3.dev3}/modal/cli/utils.py +0 -0
  145. {modal-1.6.3.dev1 → modal-1.6.3.dev3}/modal/cli/volume.py +0 -0
  146. {modal-1.6.3.dev1 → modal-1.6.3.dev3}/modal/cli/workspace.py +0 -0
  147. {modal-1.6.3.dev1 → modal-1.6.3.dev3}/modal/client.py +0 -0
  148. {modal-1.6.3.dev1 → modal-1.6.3.dev3}/modal/cloud_bucket_mount.py +0 -0
  149. {modal-1.6.3.dev1 → modal-1.6.3.dev3}/modal/cloud_bucket_mount.pyi +0 -0
  150. {modal-1.6.3.dev1 → modal-1.6.3.dev3}/modal/cls.py +0 -0
  151. {modal-1.6.3.dev1 → modal-1.6.3.dev3}/modal/cls.pyi +0 -0
  152. {modal-1.6.3.dev1 → modal-1.6.3.dev3}/modal/cluster.py +0 -0
  153. {modal-1.6.3.dev1 → modal-1.6.3.dev3}/modal/cluster.pyi +0 -0
  154. {modal-1.6.3.dev1 → modal-1.6.3.dev3}/modal/config.py +0 -0
  155. {modal-1.6.3.dev1 → modal-1.6.3.dev3}/modal/container_process.py +0 -0
  156. {modal-1.6.3.dev1 → modal-1.6.3.dev3}/modal/container_process.pyi +0 -0
  157. {modal-1.6.3.dev1 → modal-1.6.3.dev3}/modal/dict.py +0 -0
  158. {modal-1.6.3.dev1 → modal-1.6.3.dev3}/modal/dict.pyi +0 -0
  159. {modal-1.6.3.dev1 → modal-1.6.3.dev3}/modal/environments.py +0 -0
  160. {modal-1.6.3.dev1 → modal-1.6.3.dev3}/modal/environments.pyi +0 -0
  161. {modal-1.6.3.dev1 → modal-1.6.3.dev3}/modal/exception.py +0 -0
  162. {modal-1.6.3.dev1 → modal-1.6.3.dev3}/modal/experimental/__init__.py +0 -0
  163. {modal-1.6.3.dev1 → modal-1.6.3.dev3}/modal/experimental/_flash_container_entry.py +0 -0
  164. {modal-1.6.3.dev1 → modal-1.6.3.dev3}/modal/experimental/flash.py +0 -0
  165. {modal-1.6.3.dev1 → modal-1.6.3.dev3}/modal/experimental/flash.pyi +0 -0
  166. {modal-1.6.3.dev1 → modal-1.6.3.dev3}/modal/experimental/flash_server.py +0 -0
  167. {modal-1.6.3.dev1 → modal-1.6.3.dev3}/modal/experimental/flash_server.pyi +0 -0
  168. {modal-1.6.3.dev1 → modal-1.6.3.dev3}/modal/experimental/ipython.py +0 -0
  169. {modal-1.6.3.dev1 → modal-1.6.3.dev3}/modal/file_pattern_matcher.py +0 -0
  170. {modal-1.6.3.dev1 → modal-1.6.3.dev3}/modal/functions.py +0 -0
  171. {modal-1.6.3.dev1 → modal-1.6.3.dev3}/modal/functions.pyi +0 -0
  172. {modal-1.6.3.dev1 → modal-1.6.3.dev3}/modal/image.py +0 -0
  173. {modal-1.6.3.dev1 → modal-1.6.3.dev3}/modal/image.pyi +0 -0
  174. {modal-1.6.3.dev1 → modal-1.6.3.dev3}/modal/io_streams.py +0 -0
  175. {modal-1.6.3.dev1 → modal-1.6.3.dev3}/modal/io_streams.pyi +0 -0
  176. {modal-1.6.3.dev1 → modal-1.6.3.dev3}/modal/mount.py +0 -0
  177. {modal-1.6.3.dev1 → modal-1.6.3.dev3}/modal/mount.pyi +0 -0
  178. {modal-1.6.3.dev1 → modal-1.6.3.dev3}/modal/network_file_system.py +0 -0
  179. {modal-1.6.3.dev1 → modal-1.6.3.dev3}/modal/network_file_system.pyi +0 -0
  180. {modal-1.6.3.dev1 → modal-1.6.3.dev3}/modal/object.py +0 -0
  181. {modal-1.6.3.dev1 → modal-1.6.3.dev3}/modal/object.pyi +0 -0
  182. {modal-1.6.3.dev1 → modal-1.6.3.dev3}/modal/output.py +0 -0
  183. {modal-1.6.3.dev1 → modal-1.6.3.dev3}/modal/parallel_map.py +0 -0
  184. {modal-1.6.3.dev1 → modal-1.6.3.dev3}/modal/parallel_map.pyi +0 -0
  185. {modal-1.6.3.dev1 → modal-1.6.3.dev3}/modal/partial_function.py +0 -0
  186. {modal-1.6.3.dev1 → modal-1.6.3.dev3}/modal/partial_function.pyi +0 -0
  187. {modal-1.6.3.dev1 → modal-1.6.3.dev3}/modal/proxy.py +0 -0
  188. {modal-1.6.3.dev1 → modal-1.6.3.dev3}/modal/proxy.pyi +0 -0
  189. {modal-1.6.3.dev1 → modal-1.6.3.dev3}/modal/py.typed +0 -0
  190. {modal-1.6.3.dev1 → modal-1.6.3.dev3}/modal/queue.py +0 -0
  191. {modal-1.6.3.dev1 → modal-1.6.3.dev3}/modal/queue.pyi +0 -0
  192. {modal-1.6.3.dev1 → modal-1.6.3.dev3}/modal/retries.py +0 -0
  193. {modal-1.6.3.dev1 → modal-1.6.3.dev3}/modal/runner.py +0 -0
  194. {modal-1.6.3.dev1 → modal-1.6.3.dev3}/modal/runner.pyi +0 -0
  195. {modal-1.6.3.dev1 → modal-1.6.3.dev3}/modal/running_app.py +0 -0
  196. {modal-1.6.3.dev1 → modal-1.6.3.dev3}/modal/sandbox/__init__.py +0 -0
  197. {modal-1.6.3.dev1 → modal-1.6.3.dev3}/modal/sandbox/_common.py +0 -0
  198. {modal-1.6.3.dev1 → modal-1.6.3.dev3}/modal/sandbox/_filesystem.py +0 -0
  199. {modal-1.6.3.dev1 → modal-1.6.3.dev3}/modal/sandbox/_sandbox.py +0 -0
  200. {modal-1.6.3.dev1 → modal-1.6.3.dev3}/modal/sandbox/_sidecar.py +0 -0
  201. {modal-1.6.3.dev1 → modal-1.6.3.dev3}/modal/sandbox/_snapshot.py +0 -0
  202. {modal-1.6.3.dev1 → modal-1.6.3.dev3}/modal/sandbox/sandbox.py +0 -0
  203. {modal-1.6.3.dev1 → modal-1.6.3.dev3}/modal/sandbox/sandbox.pyi +0 -0
  204. {modal-1.6.3.dev1 → modal-1.6.3.dev3}/modal/schedule.py +0 -0
  205. {modal-1.6.3.dev1 → modal-1.6.3.dev3}/modal/scheduler_placement.py +0 -0
  206. {modal-1.6.3.dev1 → modal-1.6.3.dev3}/modal/secret.py +0 -0
  207. {modal-1.6.3.dev1 → modal-1.6.3.dev3}/modal/secret.pyi +0 -0
  208. {modal-1.6.3.dev1 → modal-1.6.3.dev3}/modal/server.py +0 -0
  209. {modal-1.6.3.dev1 → modal-1.6.3.dev3}/modal/server.pyi +0 -0
  210. {modal-1.6.3.dev1 → modal-1.6.3.dev3}/modal/serving.py +0 -0
  211. {modal-1.6.3.dev1 → modal-1.6.3.dev3}/modal/serving.pyi +0 -0
  212. {modal-1.6.3.dev1 → modal-1.6.3.dev3}/modal/skills/modal/SKILL.md +0 -0
  213. {modal-1.6.3.dev1 → modal-1.6.3.dev3}/modal/stream_type.py +0 -0
  214. {modal-1.6.3.dev1 → modal-1.6.3.dev3}/modal/token_flow.py +0 -0
  215. {modal-1.6.3.dev1 → modal-1.6.3.dev3}/modal/token_flow.pyi +0 -0
  216. {modal-1.6.3.dev1 → modal-1.6.3.dev3}/modal/types.py +0 -0
  217. {modal-1.6.3.dev1 → modal-1.6.3.dev3}/modal/volume.py +0 -0
  218. {modal-1.6.3.dev1 → modal-1.6.3.dev3}/modal/volume.pyi +0 -0
  219. {modal-1.6.3.dev1 → modal-1.6.3.dev3}/modal/workspace.py +0 -0
  220. {modal-1.6.3.dev1 → modal-1.6.3.dev3}/modal/workspace.pyi +0 -0
  221. {modal-1.6.3.dev1 → modal-1.6.3.dev3}/modal.egg-info/SOURCES.txt +0 -0
  222. {modal-1.6.3.dev1 → modal-1.6.3.dev3}/modal.egg-info/dependency_links.txt +0 -0
  223. {modal-1.6.3.dev1 → modal-1.6.3.dev3}/modal.egg-info/entry_points.txt +0 -0
  224. {modal-1.6.3.dev1 → modal-1.6.3.dev3}/modal.egg-info/requires.txt +0 -0
  225. {modal-1.6.3.dev1 → modal-1.6.3.dev3}/modal.egg-info/top_level.txt +0 -0
  226. {modal-1.6.3.dev1 → modal-1.6.3.dev3}/modal_docs/__init__.py +0 -0
  227. {modal-1.6.3.dev1 → modal-1.6.3.dev3}/modal_docs/gen_cli_docs.py +0 -0
  228. {modal-1.6.3.dev1 → modal-1.6.3.dev3}/modal_docs/gen_cli_docs_main.py +0 -0
  229. {modal-1.6.3.dev1 → modal-1.6.3.dev3}/modal_docs/gen_reference_docs.py +0 -0
  230. {modal-1.6.3.dev1 → modal-1.6.3.dev3}/modal_docs/gen_reference_docs_main.py +0 -0
  231. {modal-1.6.3.dev1 → modal-1.6.3.dev3}/modal_docs/mdmd/__init__.py +0 -0
  232. {modal-1.6.3.dev1 → modal-1.6.3.dev3}/modal_docs/mdmd/mdmd.py +0 -0
  233. {modal-1.6.3.dev1 → modal-1.6.3.dev3}/modal_docs/mdmd/signatures.py +0 -0
  234. {modal-1.6.3.dev1 → modal-1.6.3.dev3}/modal_docs/mdmd/types.py +0 -0
  235. {modal-1.6.3.dev1 → modal-1.6.3.dev3}/modal_docs/reference_intro.md +0 -0
  236. {modal-1.6.3.dev1 → modal-1.6.3.dev3}/modal_proto/__init__.py +0 -0
  237. {modal-1.6.3.dev1 → modal-1.6.3.dev3}/modal_proto/py.typed +0 -0
  238. {modal-1.6.3.dev1 → modal-1.6.3.dev3}/modal_proto/task_command_router_grpc.py +0 -0
  239. {modal-1.6.3.dev1 → modal-1.6.3.dev3}/modal_proto/task_command_router_pb2.py +0 -0
  240. {modal-1.6.3.dev1 → modal-1.6.3.dev3}/modal_proto/task_command_router_pb2.pyi +0 -0
  241. {modal-1.6.3.dev1 → modal-1.6.3.dev3}/modal_proto/task_command_router_pb2_grpc.py +0 -0
  242. {modal-1.6.3.dev1 → modal-1.6.3.dev3}/modal_proto/task_command_router_pb2_grpc.pyi +0 -0
  243. {modal-1.6.3.dev1 → modal-1.6.3.dev3}/modal_version/__main__.py +0 -0
  244. {modal-1.6.3.dev1 → modal-1.6.3.dev3}/pyproject.toml +0 -0
  245. {modal-1.6.3.dev1 → modal-1.6.3.dev3}/setup.cfg +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: modal
3
- Version: 1.6.3.dev1
3
+ Version: 1.6.3.dev3
4
4
  Summary: Python client library for Modal
5
5
  Author-email: Modal Labs <support@modal.com>
6
6
  License-Expression: Apache-2.0
@@ -80,7 +80,7 @@ class _Client:
80
80
  server_url: str,
81
81
  client_type: int,
82
82
  credentials: typing.Optional[tuple[str, str]],
83
- version: str = "1.6.3.dev1",
83
+ version: str = "1.6.3.dev3",
84
84
  *,
85
85
  oauth_credentials: typing.Optional[_OAuthCredentials] = None,
86
86
  ):
@@ -290,7 +290,7 @@ class Client:
290
290
  server_url: str,
291
291
  client_type: int,
292
292
  credentials: typing.Optional[tuple[str, str]],
293
- version: str = "1.6.3.dev1",
293
+ version: str = "1.6.3.dev3",
294
294
  *,
295
295
  oauth_credentials: typing.Optional[_OAuthCredentials] = None,
296
296
  ):
@@ -137,7 +137,8 @@ async def call_with_retries_on_transient_errors(
137
137
  the caller to decide whether to further translate the surfaced
138
138
  exception (e.g., into a TimeoutError) based on the deadline check.
139
139
  The caller is also responsible for propagating the remaining budget
140
- into `func()` (typically as the per-call gRPC timeout).
140
+ into `func()` (typically as the per-call gRPC timeout). A server-requested
141
+ throttle wait that doesn't fit before the deadline raises a TimeoutError.
141
142
  rpc_name: RPC name to include in retry diagnostics.
142
143
  exec_id: Execution ID to include in retry diagnostics, for correlating
143
144
  the retries of concurrent executions.
@@ -170,10 +171,8 @@ async def call_with_retries_on_transient_errors(
170
171
  return False
171
172
  return fits_deadline(0.0)
172
173
 
173
- def can_retry_throttled(delay: float) -> bool:
174
- if max_throttle_wait is not None and throttle_wait_total + delay > max_throttle_wait:
175
- return False
176
- return fits_deadline(delay)
174
+ def fits_throttle_budget(delay: float) -> bool:
175
+ return max_throttle_wait is None or throttle_wait_total + delay <= max_throttle_wait
177
176
 
178
177
  async def sleep_and_advance(e: Exception, *, count_failure: bool = True, throttle_delay: float | None = None):
179
178
  nonlocal delay_secs, num_retries, num_throttled_retries, throttle_wait_total, consecutive_failures, warned
@@ -215,7 +214,9 @@ async def call_with_retries_on_transient_errors(
215
214
  except GRPCError as e:
216
215
  retry_after = server_retry_after(e)
217
216
  if retry_after is not None:
218
- if not can_retry_throttled(retry_after):
217
+ if not fits_deadline(retry_after):
218
+ raise ModalTimeoutError("Timeout expired") from e
219
+ if not fits_throttle_budget(retry_after):
219
220
  raise
220
221
  # Throttling says nothing about the connection's health.
221
222
  await sleep_and_advance(e, count_failure=False, throttle_delay=retry_after)
@@ -1244,13 +1245,7 @@ class TaskCommandRouterClient:
1244
1245
  timeout_deadline=timeout_deadline,
1245
1246
  )
1246
1247
  except Exception as exc:
1247
- # A throttled call whose server-requested wait doesn't fit the remaining
1248
- # budget is given up without sleeping, so treat it as a timeout too.
1249
- retry_after = server_retry_after_secs(getattr(exc, "_grpc_details", None)) or 0.0
1250
- if (
1251
- time.monotonic() + retry_after >= timeout_deadline
1252
- or getattr(exc, "_grpc_status", None) == Status.DEADLINE_EXCEEDED
1253
- ):
1248
+ if time.monotonic() >= timeout_deadline or getattr(exc, "_grpc_status", None) == Status.DEADLINE_EXCEEDED:
1254
1249
  raise ModalTimeoutError("Timeout expired")
1255
1250
  raise
1256
1251
 
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: modal
3
- Version: 1.6.3.dev1
3
+ Version: 1.6.3.dev3
4
4
  Summary: Python client library for Modal
5
5
  Author-email: Modal Labs <support@modal.com>
6
6
  License-Expression: Apache-2.0
@@ -127,6 +127,18 @@ class ModalClientBase(abc.ABC):
127
127
  async def AttemptStart(self, stream: 'grpclib.server.Stream[modal_proto.api_pb2.AttemptStartRequest, modal_proto.api_pb2.AttemptStartResponse]') -> None:
128
128
  pass
129
129
 
130
+ @abc.abstractmethod
131
+ async def AuditLogV2Count(self, stream: 'grpclib.server.Stream[modal_proto.api_pb2.AuditLogV2CountRequest, modal_proto.api_pb2.AuditLogV2CountResponse]') -> None:
132
+ pass
133
+
134
+ @abc.abstractmethod
135
+ async def AuditLogV2List(self, stream: 'grpclib.server.Stream[modal_proto.api_pb2.AuditLogV2ListRequest, modal_proto.api_pb2.AuditLogV2ListResponse]') -> None:
136
+ pass
137
+
138
+ @abc.abstractmethod
139
+ async def AuditLogV2Plan(self, stream: 'grpclib.server.Stream[modal_proto.api_pb2.AuditLogV2PlanRequest, modal_proto.api_pb2.AuditLogV2PlanResponse]') -> None:
140
+ pass
141
+
130
142
  @abc.abstractmethod
131
143
  async def AuthTokenGet(self, stream: 'grpclib.server.Stream[modal_proto.api_pb2.AuthTokenGetRequest, modal_proto.api_pb2.AuthTokenGetResponse]') -> None:
132
144
  pass
@@ -1251,6 +1263,24 @@ class ModalClientBase(abc.ABC):
1251
1263
  modal_proto.api_pb2.AttemptStartRequest,
1252
1264
  modal_proto.api_pb2.AttemptStartResponse,
1253
1265
  ),
1266
+ '/modal.client.ModalClient/AuditLogV2Count': grpclib.const.Handler(
1267
+ self.AuditLogV2Count,
1268
+ grpclib.const.Cardinality.UNARY_UNARY,
1269
+ modal_proto.api_pb2.AuditLogV2CountRequest,
1270
+ modal_proto.api_pb2.AuditLogV2CountResponse,
1271
+ ),
1272
+ '/modal.client.ModalClient/AuditLogV2List': grpclib.const.Handler(
1273
+ self.AuditLogV2List,
1274
+ grpclib.const.Cardinality.UNARY_UNARY,
1275
+ modal_proto.api_pb2.AuditLogV2ListRequest,
1276
+ modal_proto.api_pb2.AuditLogV2ListResponse,
1277
+ ),
1278
+ '/modal.client.ModalClient/AuditLogV2Plan': grpclib.const.Handler(
1279
+ self.AuditLogV2Plan,
1280
+ grpclib.const.Cardinality.UNARY_UNARY,
1281
+ modal_proto.api_pb2.AuditLogV2PlanRequest,
1282
+ modal_proto.api_pb2.AuditLogV2PlanResponse,
1283
+ ),
1254
1284
  '/modal.client.ModalClient/AuthTokenGet': grpclib.const.Handler(
1255
1285
  self.AuthTokenGet,
1256
1286
  grpclib.const.Cardinality.UNARY_UNARY,
@@ -2859,6 +2889,24 @@ class ModalClientStub:
2859
2889
  modal_proto.api_pb2.AttemptStartRequest,
2860
2890
  modal_proto.api_pb2.AttemptStartResponse,
2861
2891
  )
2892
+ self.AuditLogV2Count = grpclib.client.UnaryUnaryMethod(
2893
+ channel,
2894
+ '/modal.client.ModalClient/AuditLogV2Count',
2895
+ modal_proto.api_pb2.AuditLogV2CountRequest,
2896
+ modal_proto.api_pb2.AuditLogV2CountResponse,
2897
+ )
2898
+ self.AuditLogV2List = grpclib.client.UnaryUnaryMethod(
2899
+ channel,
2900
+ '/modal.client.ModalClient/AuditLogV2List',
2901
+ modal_proto.api_pb2.AuditLogV2ListRequest,
2902
+ modal_proto.api_pb2.AuditLogV2ListResponse,
2903
+ )
2904
+ self.AuditLogV2Plan = grpclib.client.UnaryUnaryMethod(
2905
+ channel,
2906
+ '/modal.client.ModalClient/AuditLogV2Plan',
2907
+ modal_proto.api_pb2.AuditLogV2PlanRequest,
2908
+ modal_proto.api_pb2.AuditLogV2PlanResponse,
2909
+ )
2862
2910
  self.AuthTokenGet = grpclib.client.UnaryUnaryMethod(
2863
2911
  channel,
2864
2912
  '/modal.client.ModalClient/AuthTokenGet',