modal 1.5.5.dev3__tar.gz → 1.5.5.dev5__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 (236) hide show
  1. {modal-1.5.5.dev3 → modal-1.5.5.dev5}/PKG-INFO +1 -1
  2. {modal-1.5.5.dev3 → modal-1.5.5.dev5}/modal/app.py +1 -28
  3. {modal-1.5.5.dev3 → modal-1.5.5.dev5}/modal/app.pyi +0 -26
  4. {modal-1.5.5.dev3 → modal-1.5.5.dev5}/modal/client.pyi +2 -2
  5. {modal-1.5.5.dev3 → modal-1.5.5.dev5}/modal/functions.pyi +6 -6
  6. {modal-1.5.5.dev3 → modal-1.5.5.dev5}/modal/sandbox.py +6 -1
  7. {modal-1.5.5.dev3 → modal-1.5.5.dev5}/modal/sandbox.pyi +15 -3
  8. {modal-1.5.5.dev3 → modal-1.5.5.dev5}/modal.egg-info/PKG-INFO +1 -1
  9. {modal-1.5.5.dev3 → modal-1.5.5.dev5}/modal_version/__init__.py +1 -1
  10. {modal-1.5.5.dev3 → modal-1.5.5.dev5}/LICENSE +0 -0
  11. {modal-1.5.5.dev3 → modal-1.5.5.dev5}/README.md +0 -0
  12. {modal-1.5.5.dev3 → modal-1.5.5.dev5}/modal/__init__.py +0 -0
  13. {modal-1.5.5.dev3 → modal-1.5.5.dev5}/modal/__main__.py +0 -0
  14. {modal-1.5.5.dev3 → modal-1.5.5.dev5}/modal/_billing.py +0 -0
  15. {modal-1.5.5.dev3 → modal-1.5.5.dev5}/modal/_clustered_functions.py +0 -0
  16. {modal-1.5.5.dev3 → modal-1.5.5.dev5}/modal/_clustered_functions.pyi +0 -0
  17. {modal-1.5.5.dev3 → modal-1.5.5.dev5}/modal/_container_entrypoint.py +0 -0
  18. {modal-1.5.5.dev3 → modal-1.5.5.dev5}/modal/_environments.py +0 -0
  19. {modal-1.5.5.dev3 → modal-1.5.5.dev5}/modal/_function_variants.py +0 -0
  20. {modal-1.5.5.dev3 → modal-1.5.5.dev5}/modal/_functions.py +0 -0
  21. {modal-1.5.5.dev3 → modal-1.5.5.dev5}/modal/_grpc_client.py +0 -0
  22. {modal-1.5.5.dev3 → modal-1.5.5.dev5}/modal/_image.py +0 -0
  23. {modal-1.5.5.dev3 → modal-1.5.5.dev5}/modal/_ipython.py +0 -0
  24. {modal-1.5.5.dev3 → modal-1.5.5.dev5}/modal/_load_context.py +0 -0
  25. {modal-1.5.5.dev3 → modal-1.5.5.dev5}/modal/_location.py +0 -0
  26. {modal-1.5.5.dev3 → modal-1.5.5.dev5}/modal/_logs.py +0 -0
  27. {modal-1.5.5.dev3 → modal-1.5.5.dev5}/modal/_logs_manager.py +0 -0
  28. {modal-1.5.5.dev3 → modal-1.5.5.dev5}/modal/_logs_manager.pyi +0 -0
  29. {modal-1.5.5.dev3 → modal-1.5.5.dev5}/modal/_object.py +0 -0
  30. {modal-1.5.5.dev3 → modal-1.5.5.dev5}/modal/_output/__init__.py +0 -0
  31. {modal-1.5.5.dev3 → modal-1.5.5.dev5}/modal/_output/manager.py +0 -0
  32. {modal-1.5.5.dev3 → modal-1.5.5.dev5}/modal/_output/pty.py +0 -0
  33. {modal-1.5.5.dev3 → modal-1.5.5.dev5}/modal/_output/rich.py +0 -0
  34. {modal-1.5.5.dev3 → modal-1.5.5.dev5}/modal/_output/status.py +0 -0
  35. {modal-1.5.5.dev3 → modal-1.5.5.dev5}/modal/_partial_function.py +0 -0
  36. {modal-1.5.5.dev3 → modal-1.5.5.dev5}/modal/_resolver.py +0 -0
  37. {modal-1.5.5.dev3 → modal-1.5.5.dev5}/modal/_resources.py +0 -0
  38. {modal-1.5.5.dev3 → modal-1.5.5.dev5}/modal/_runtime/__init__.py +0 -0
  39. {modal-1.5.5.dev3 → modal-1.5.5.dev5}/modal/_runtime/asgi.py +0 -0
  40. {modal-1.5.5.dev3 → modal-1.5.5.dev5}/modal/_runtime/container_io_manager.py +0 -0
  41. {modal-1.5.5.dev3 → modal-1.5.5.dev5}/modal/_runtime/container_io_manager.pyi +0 -0
  42. {modal-1.5.5.dev3 → modal-1.5.5.dev5}/modal/_runtime/execution_context.py +0 -0
  43. {modal-1.5.5.dev3 → modal-1.5.5.dev5}/modal/_runtime/execution_context.pyi +0 -0
  44. {modal-1.5.5.dev3 → modal-1.5.5.dev5}/modal/_runtime/gpu_memory_snapshot.py +0 -0
  45. {modal-1.5.5.dev3 → modal-1.5.5.dev5}/modal/_runtime/task_lifecycle_manager.py +0 -0
  46. {modal-1.5.5.dev3 → modal-1.5.5.dev5}/modal/_runtime/task_lifecycle_manager.pyi +0 -0
  47. {modal-1.5.5.dev3 → modal-1.5.5.dev5}/modal/_runtime/telemetry.py +0 -0
  48. {modal-1.5.5.dev3 → modal-1.5.5.dev5}/modal/_runtime/user_code_event_loop.py +0 -0
  49. {modal-1.5.5.dev3 → modal-1.5.5.dev5}/modal/_runtime/user_code_imports.py +0 -0
  50. {modal-1.5.5.dev3 → modal-1.5.5.dev5}/modal/_serialization.py +0 -0
  51. {modal-1.5.5.dev3 → modal-1.5.5.dev5}/modal/_server.py +0 -0
  52. {modal-1.5.5.dev3 → modal-1.5.5.dev5}/modal/_supports_logs.py +0 -0
  53. {modal-1.5.5.dev3 → modal-1.5.5.dev5}/modal/_traceback.py +0 -0
  54. {modal-1.5.5.dev3 → modal-1.5.5.dev5}/modal/_tunnel.py +0 -0
  55. {modal-1.5.5.dev3 → modal-1.5.5.dev5}/modal/_tunnel.pyi +0 -0
  56. {modal-1.5.5.dev3 → modal-1.5.5.dev5}/modal/_type_manager.py +0 -0
  57. {modal-1.5.5.dev3 → modal-1.5.5.dev5}/modal/_utils/__init__.py +0 -0
  58. {modal-1.5.5.dev3 → modal-1.5.5.dev5}/modal/_utils/app_utils.py +0 -0
  59. {modal-1.5.5.dev3 → modal-1.5.5.dev5}/modal/_utils/async_utils.py +0 -0
  60. {modal-1.5.5.dev3 → modal-1.5.5.dev5}/modal/_utils/auth_token_manager.py +0 -0
  61. {modal-1.5.5.dev3 → modal-1.5.5.dev5}/modal/_utils/blob_utils.py +0 -0
  62. {modal-1.5.5.dev3 → modal-1.5.5.dev5}/modal/_utils/browser_utils.py +0 -0
  63. {modal-1.5.5.dev3 → modal-1.5.5.dev5}/modal/_utils/bytes_io_segment_payload.py +0 -0
  64. {modal-1.5.5.dev3 → modal-1.5.5.dev5}/modal/_utils/curl_utils.py +0 -0
  65. {modal-1.5.5.dev3 → modal-1.5.5.dev5}/modal/_utils/deprecation.py +0 -0
  66. {modal-1.5.5.dev3 → modal-1.5.5.dev5}/modal/_utils/display_utils.py +0 -0
  67. {modal-1.5.5.dev3 → modal-1.5.5.dev5}/modal/_utils/docker_utils.py +0 -0
  68. {modal-1.5.5.dev3 → modal-1.5.5.dev5}/modal/_utils/function_utils.py +0 -0
  69. {modal-1.5.5.dev3 → modal-1.5.5.dev5}/modal/_utils/git_utils.py +0 -0
  70. {modal-1.5.5.dev3 → modal-1.5.5.dev5}/modal/_utils/grpc_testing.py +0 -0
  71. {modal-1.5.5.dev3 → modal-1.5.5.dev5}/modal/_utils/grpc_utils.py +0 -0
  72. {modal-1.5.5.dev3 → modal-1.5.5.dev5}/modal/_utils/hash_utils.py +0 -0
  73. {modal-1.5.5.dev3 → modal-1.5.5.dev5}/modal/_utils/http_utils.py +0 -0
  74. {modal-1.5.5.dev3 → modal-1.5.5.dev5}/modal/_utils/jwt_utils.py +0 -0
  75. {modal-1.5.5.dev3 → modal-1.5.5.dev5}/modal/_utils/logger.py +0 -0
  76. {modal-1.5.5.dev3 → modal-1.5.5.dev5}/modal/_utils/mount_utils.py +0 -0
  77. {modal-1.5.5.dev3 → modal-1.5.5.dev5}/modal/_utils/name_utils.py +0 -0
  78. {modal-1.5.5.dev3 → modal-1.5.5.dev5}/modal/_utils/package_utils.py +0 -0
  79. {modal-1.5.5.dev3 → modal-1.5.5.dev5}/modal/_utils/pattern_utils.py +0 -0
  80. {modal-1.5.5.dev3 → modal-1.5.5.dev5}/modal/_utils/proxy_support.py +0 -0
  81. {modal-1.5.5.dev3 → modal-1.5.5.dev5}/modal/_utils/rand_pb_testing.py +0 -0
  82. {modal-1.5.5.dev3 → modal-1.5.5.dev5}/modal/_utils/sandbox_fs_utils.py +0 -0
  83. {modal-1.5.5.dev3 → modal-1.5.5.dev5}/modal/_utils/shell_utils.py +0 -0
  84. {modal-1.5.5.dev3 → modal-1.5.5.dev5}/modal/_utils/task_command_router_client.py +0 -0
  85. {modal-1.5.5.dev3 → modal-1.5.5.dev5}/modal/_utils/time_utils.py +0 -0
  86. {modal-1.5.5.dev3 → modal-1.5.5.dev5}/modal/_vendor/__init__.py +0 -0
  87. {modal-1.5.5.dev3 → modal-1.5.5.dev5}/modal/_vendor/a2wsgi_wsgi.py +0 -0
  88. {modal-1.5.5.dev3 → modal-1.5.5.dev5}/modal/_vendor/cloudpickle.py +0 -0
  89. {modal-1.5.5.dev3 → modal-1.5.5.dev5}/modal/_vendor/tblib.py +0 -0
  90. {modal-1.5.5.dev3 → modal-1.5.5.dev5}/modal/_vendor/version.py +0 -0
  91. {modal-1.5.5.dev3 → modal-1.5.5.dev5}/modal/_watcher.py +0 -0
  92. {modal-1.5.5.dev3 → modal-1.5.5.dev5}/modal/_workspace.py +0 -0
  93. {modal-1.5.5.dev3 → modal-1.5.5.dev5}/modal/billing.py +0 -0
  94. {modal-1.5.5.dev3 → modal-1.5.5.dev5}/modal/billing.pyi +0 -0
  95. {modal-1.5.5.dev3 → modal-1.5.5.dev5}/modal/builder/2023.12.312.txt +0 -0
  96. {modal-1.5.5.dev3 → modal-1.5.5.dev5}/modal/builder/2023.12.txt +0 -0
  97. {modal-1.5.5.dev3 → modal-1.5.5.dev5}/modal/builder/2024.04.txt +0 -0
  98. {modal-1.5.5.dev3 → modal-1.5.5.dev5}/modal/builder/2024.10.txt +0 -0
  99. {modal-1.5.5.dev3 → modal-1.5.5.dev5}/modal/builder/2025.06.txt +0 -0
  100. {modal-1.5.5.dev3 → modal-1.5.5.dev5}/modal/builder/PREVIEW.txt +0 -0
  101. {modal-1.5.5.dev3 → modal-1.5.5.dev5}/modal/builder/README.md +0 -0
  102. {modal-1.5.5.dev3 → modal-1.5.5.dev5}/modal/builder/base-images.json +0 -0
  103. {modal-1.5.5.dev3 → modal-1.5.5.dev5}/modal/call_graph.py +0 -0
  104. {modal-1.5.5.dev3 → modal-1.5.5.dev5}/modal/cli/__init__.py +0 -0
  105. {modal-1.5.5.dev3 → modal-1.5.5.dev5}/modal/cli/_download.py +0 -0
  106. {modal-1.5.5.dev3 → modal-1.5.5.dev5}/modal/cli/_help.py +0 -0
  107. {modal-1.5.5.dev3 → modal-1.5.5.dev5}/modal/cli/_traceback.py +0 -0
  108. {modal-1.5.5.dev3 → modal-1.5.5.dev5}/modal/cli/app.py +0 -0
  109. {modal-1.5.5.dev3 → modal-1.5.5.dev5}/modal/cli/billing.py +0 -0
  110. {modal-1.5.5.dev3 → modal-1.5.5.dev5}/modal/cli/bootstrap.py +0 -0
  111. {modal-1.5.5.dev3 → modal-1.5.5.dev5}/modal/cli/changelog.py +0 -0
  112. {modal-1.5.5.dev3 → modal-1.5.5.dev5}/modal/cli/cluster.py +0 -0
  113. {modal-1.5.5.dev3 → modal-1.5.5.dev5}/modal/cli/config.py +0 -0
  114. {modal-1.5.5.dev3 → modal-1.5.5.dev5}/modal/cli/container.py +0 -0
  115. {modal-1.5.5.dev3 → modal-1.5.5.dev5}/modal/cli/curl.py +0 -0
  116. {modal-1.5.5.dev3 → modal-1.5.5.dev5}/modal/cli/dashboard.py +0 -0
  117. {modal-1.5.5.dev3 → modal-1.5.5.dev5}/modal/cli/dict.py +0 -0
  118. {modal-1.5.5.dev3 → modal-1.5.5.dev5}/modal/cli/endpoint.py +0 -0
  119. {modal-1.5.5.dev3 → modal-1.5.5.dev5}/modal/cli/entry_point.py +0 -0
  120. {modal-1.5.5.dev3 → modal-1.5.5.dev5}/modal/cli/environment.py +0 -0
  121. {modal-1.5.5.dev3 → modal-1.5.5.dev5}/modal/cli/image.py +0 -0
  122. {modal-1.5.5.dev3 → modal-1.5.5.dev5}/modal/cli/import_refs.py +0 -0
  123. {modal-1.5.5.dev3 → modal-1.5.5.dev5}/modal/cli/launch.py +0 -0
  124. {modal-1.5.5.dev3 → modal-1.5.5.dev5}/modal/cli/logo.py +0 -0
  125. {modal-1.5.5.dev3 → modal-1.5.5.dev5}/modal/cli/network_file_system.py +0 -0
  126. {modal-1.5.5.dev3 → modal-1.5.5.dev5}/modal/cli/profile.py +0 -0
  127. {modal-1.5.5.dev3 → modal-1.5.5.dev5}/modal/cli/programs/__init__.py +0 -0
  128. {modal-1.5.5.dev3 → modal-1.5.5.dev5}/modal/cli/programs/run_jupyter.py +0 -0
  129. {modal-1.5.5.dev3 → modal-1.5.5.dev5}/modal/cli/programs/vscode.py +0 -0
  130. {modal-1.5.5.dev3 → modal-1.5.5.dev5}/modal/cli/queues.py +0 -0
  131. {modal-1.5.5.dev3 → modal-1.5.5.dev5}/modal/cli/run.py +0 -0
  132. {modal-1.5.5.dev3 → modal-1.5.5.dev5}/modal/cli/secret.py +0 -0
  133. {modal-1.5.5.dev3 → modal-1.5.5.dev5}/modal/cli/selector.py +0 -0
  134. {modal-1.5.5.dev3 → modal-1.5.5.dev5}/modal/cli/shell.py +0 -0
  135. {modal-1.5.5.dev3 → modal-1.5.5.dev5}/modal/cli/skills.py +0 -0
  136. {modal-1.5.5.dev3 → modal-1.5.5.dev5}/modal/cli/token.py +0 -0
  137. {modal-1.5.5.dev3 → modal-1.5.5.dev5}/modal/cli/utils.py +0 -0
  138. {modal-1.5.5.dev3 → modal-1.5.5.dev5}/modal/cli/volume.py +0 -0
  139. {modal-1.5.5.dev3 → modal-1.5.5.dev5}/modal/cli/workspace.py +0 -0
  140. {modal-1.5.5.dev3 → modal-1.5.5.dev5}/modal/client.py +0 -0
  141. {modal-1.5.5.dev3 → modal-1.5.5.dev5}/modal/cloud_bucket_mount.py +0 -0
  142. {modal-1.5.5.dev3 → modal-1.5.5.dev5}/modal/cloud_bucket_mount.pyi +0 -0
  143. {modal-1.5.5.dev3 → modal-1.5.5.dev5}/modal/cls.py +0 -0
  144. {modal-1.5.5.dev3 → modal-1.5.5.dev5}/modal/cls.pyi +0 -0
  145. {modal-1.5.5.dev3 → modal-1.5.5.dev5}/modal/config.py +0 -0
  146. {modal-1.5.5.dev3 → modal-1.5.5.dev5}/modal/container_process.py +0 -0
  147. {modal-1.5.5.dev3 → modal-1.5.5.dev5}/modal/container_process.pyi +0 -0
  148. {modal-1.5.5.dev3 → modal-1.5.5.dev5}/modal/dict.py +0 -0
  149. {modal-1.5.5.dev3 → modal-1.5.5.dev5}/modal/dict.pyi +0 -0
  150. {modal-1.5.5.dev3 → modal-1.5.5.dev5}/modal/environments.py +0 -0
  151. {modal-1.5.5.dev3 → modal-1.5.5.dev5}/modal/environments.pyi +0 -0
  152. {modal-1.5.5.dev3 → modal-1.5.5.dev5}/modal/exception.py +0 -0
  153. {modal-1.5.5.dev3 → modal-1.5.5.dev5}/modal/experimental/__init__.py +0 -0
  154. {modal-1.5.5.dev3 → modal-1.5.5.dev5}/modal/experimental/flash.py +0 -0
  155. {modal-1.5.5.dev3 → modal-1.5.5.dev5}/modal/experimental/flash.pyi +0 -0
  156. {modal-1.5.5.dev3 → modal-1.5.5.dev5}/modal/experimental/ipython.py +0 -0
  157. {modal-1.5.5.dev3 → modal-1.5.5.dev5}/modal/file_io.py +0 -0
  158. {modal-1.5.5.dev3 → modal-1.5.5.dev5}/modal/file_io.pyi +0 -0
  159. {modal-1.5.5.dev3 → modal-1.5.5.dev5}/modal/file_pattern_matcher.py +0 -0
  160. {modal-1.5.5.dev3 → modal-1.5.5.dev5}/modal/functions.py +0 -0
  161. {modal-1.5.5.dev3 → modal-1.5.5.dev5}/modal/image.py +0 -0
  162. {modal-1.5.5.dev3 → modal-1.5.5.dev5}/modal/image.pyi +0 -0
  163. {modal-1.5.5.dev3 → modal-1.5.5.dev5}/modal/io_streams.py +0 -0
  164. {modal-1.5.5.dev3 → modal-1.5.5.dev5}/modal/io_streams.pyi +0 -0
  165. {modal-1.5.5.dev3 → modal-1.5.5.dev5}/modal/mount.py +0 -0
  166. {modal-1.5.5.dev3 → modal-1.5.5.dev5}/modal/mount.pyi +0 -0
  167. {modal-1.5.5.dev3 → modal-1.5.5.dev5}/modal/network_file_system.py +0 -0
  168. {modal-1.5.5.dev3 → modal-1.5.5.dev5}/modal/network_file_system.pyi +0 -0
  169. {modal-1.5.5.dev3 → modal-1.5.5.dev5}/modal/object.py +0 -0
  170. {modal-1.5.5.dev3 → modal-1.5.5.dev5}/modal/object.pyi +0 -0
  171. {modal-1.5.5.dev3 → modal-1.5.5.dev5}/modal/output.py +0 -0
  172. {modal-1.5.5.dev3 → modal-1.5.5.dev5}/modal/parallel_map.py +0 -0
  173. {modal-1.5.5.dev3 → modal-1.5.5.dev5}/modal/parallel_map.pyi +0 -0
  174. {modal-1.5.5.dev3 → modal-1.5.5.dev5}/modal/partial_function.py +0 -0
  175. {modal-1.5.5.dev3 → modal-1.5.5.dev5}/modal/partial_function.pyi +0 -0
  176. {modal-1.5.5.dev3 → modal-1.5.5.dev5}/modal/proxy.py +0 -0
  177. {modal-1.5.5.dev3 → modal-1.5.5.dev5}/modal/proxy.pyi +0 -0
  178. {modal-1.5.5.dev3 → modal-1.5.5.dev5}/modal/py.typed +0 -0
  179. {modal-1.5.5.dev3 → modal-1.5.5.dev5}/modal/queue.py +0 -0
  180. {modal-1.5.5.dev3 → modal-1.5.5.dev5}/modal/queue.pyi +0 -0
  181. {modal-1.5.5.dev3 → modal-1.5.5.dev5}/modal/retries.py +0 -0
  182. {modal-1.5.5.dev3 → modal-1.5.5.dev5}/modal/runner.py +0 -0
  183. {modal-1.5.5.dev3 → modal-1.5.5.dev5}/modal/runner.pyi +0 -0
  184. {modal-1.5.5.dev3 → modal-1.5.5.dev5}/modal/running_app.py +0 -0
  185. {modal-1.5.5.dev3 → modal-1.5.5.dev5}/modal/sandbox_fs.py +0 -0
  186. {modal-1.5.5.dev3 → modal-1.5.5.dev5}/modal/sandbox_fs.pyi +0 -0
  187. {modal-1.5.5.dev3 → modal-1.5.5.dev5}/modal/schedule.py +0 -0
  188. {modal-1.5.5.dev3 → modal-1.5.5.dev5}/modal/scheduler_placement.py +0 -0
  189. {modal-1.5.5.dev3 → modal-1.5.5.dev5}/modal/secret.py +0 -0
  190. {modal-1.5.5.dev3 → modal-1.5.5.dev5}/modal/secret.pyi +0 -0
  191. {modal-1.5.5.dev3 → modal-1.5.5.dev5}/modal/server.py +0 -0
  192. {modal-1.5.5.dev3 → modal-1.5.5.dev5}/modal/server.pyi +0 -0
  193. {modal-1.5.5.dev3 → modal-1.5.5.dev5}/modal/serving.py +0 -0
  194. {modal-1.5.5.dev3 → modal-1.5.5.dev5}/modal/serving.pyi +0 -0
  195. {modal-1.5.5.dev3 → modal-1.5.5.dev5}/modal/skills/modal/SKILL.md +0 -0
  196. {modal-1.5.5.dev3 → modal-1.5.5.dev5}/modal/snapshot.py +0 -0
  197. {modal-1.5.5.dev3 → modal-1.5.5.dev5}/modal/snapshot.pyi +0 -0
  198. {modal-1.5.5.dev3 → modal-1.5.5.dev5}/modal/stream_type.py +0 -0
  199. {modal-1.5.5.dev3 → modal-1.5.5.dev5}/modal/token_flow.py +0 -0
  200. {modal-1.5.5.dev3 → modal-1.5.5.dev5}/modal/token_flow.pyi +0 -0
  201. {modal-1.5.5.dev3 → modal-1.5.5.dev5}/modal/types.py +0 -0
  202. {modal-1.5.5.dev3 → modal-1.5.5.dev5}/modal/volume.py +0 -0
  203. {modal-1.5.5.dev3 → modal-1.5.5.dev5}/modal/volume.pyi +0 -0
  204. {modal-1.5.5.dev3 → modal-1.5.5.dev5}/modal/workspace.py +0 -0
  205. {modal-1.5.5.dev3 → modal-1.5.5.dev5}/modal/workspace.pyi +0 -0
  206. {modal-1.5.5.dev3 → modal-1.5.5.dev5}/modal.egg-info/SOURCES.txt +0 -0
  207. {modal-1.5.5.dev3 → modal-1.5.5.dev5}/modal.egg-info/dependency_links.txt +0 -0
  208. {modal-1.5.5.dev3 → modal-1.5.5.dev5}/modal.egg-info/entry_points.txt +0 -0
  209. {modal-1.5.5.dev3 → modal-1.5.5.dev5}/modal.egg-info/requires.txt +0 -0
  210. {modal-1.5.5.dev3 → modal-1.5.5.dev5}/modal.egg-info/top_level.txt +0 -0
  211. {modal-1.5.5.dev3 → modal-1.5.5.dev5}/modal_docs/__init__.py +0 -0
  212. {modal-1.5.5.dev3 → modal-1.5.5.dev5}/modal_docs/gen_cli_docs.py +0 -0
  213. {modal-1.5.5.dev3 → modal-1.5.5.dev5}/modal_docs/gen_cli_docs_main.py +0 -0
  214. {modal-1.5.5.dev3 → modal-1.5.5.dev5}/modal_docs/gen_reference_docs.py +0 -0
  215. {modal-1.5.5.dev3 → modal-1.5.5.dev5}/modal_docs/gen_reference_docs_main.py +0 -0
  216. {modal-1.5.5.dev3 → modal-1.5.5.dev5}/modal_docs/mdmd/__init__.py +0 -0
  217. {modal-1.5.5.dev3 → modal-1.5.5.dev5}/modal_docs/mdmd/mdmd.py +0 -0
  218. {modal-1.5.5.dev3 → modal-1.5.5.dev5}/modal_docs/mdmd/signatures.py +0 -0
  219. {modal-1.5.5.dev3 → modal-1.5.5.dev5}/modal_docs/mdmd/types.py +0 -0
  220. {modal-1.5.5.dev3 → modal-1.5.5.dev5}/modal_docs/reference_intro.md +0 -0
  221. {modal-1.5.5.dev3 → modal-1.5.5.dev5}/modal_proto/__init__.py +0 -0
  222. {modal-1.5.5.dev3 → modal-1.5.5.dev5}/modal_proto/api_grpc.py +0 -0
  223. {modal-1.5.5.dev3 → modal-1.5.5.dev5}/modal_proto/api_pb2.py +0 -0
  224. {modal-1.5.5.dev3 → modal-1.5.5.dev5}/modal_proto/api_pb2.pyi +0 -0
  225. {modal-1.5.5.dev3 → modal-1.5.5.dev5}/modal_proto/api_pb2_grpc.py +0 -0
  226. {modal-1.5.5.dev3 → modal-1.5.5.dev5}/modal_proto/api_pb2_grpc.pyi +0 -0
  227. {modal-1.5.5.dev3 → modal-1.5.5.dev5}/modal_proto/modal_api_grpc.py +0 -0
  228. {modal-1.5.5.dev3 → modal-1.5.5.dev5}/modal_proto/py.typed +0 -0
  229. {modal-1.5.5.dev3 → modal-1.5.5.dev5}/modal_proto/task_command_router_grpc.py +0 -0
  230. {modal-1.5.5.dev3 → modal-1.5.5.dev5}/modal_proto/task_command_router_pb2.py +0 -0
  231. {modal-1.5.5.dev3 → modal-1.5.5.dev5}/modal_proto/task_command_router_pb2.pyi +0 -0
  232. {modal-1.5.5.dev3 → modal-1.5.5.dev5}/modal_proto/task_command_router_pb2_grpc.py +0 -0
  233. {modal-1.5.5.dev3 → modal-1.5.5.dev5}/modal_proto/task_command_router_pb2_grpc.pyi +0 -0
  234. {modal-1.5.5.dev3 → modal-1.5.5.dev5}/modal_version/__main__.py +0 -0
  235. {modal-1.5.5.dev3 → modal-1.5.5.dev5}/pyproject.toml +0 -0
  236. {modal-1.5.5.dev3 → modal-1.5.5.dev5}/setup.cfg +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: modal
3
- Version: 1.5.5.dev3
3
+ Version: 1.5.5.dev5
4
4
  Summary: Python client library for Modal
5
5
  Author-email: Modal Labs <support@modal.com>
6
6
  License-Expression: Apache-2.0
@@ -1579,33 +1579,6 @@ class _App:
1579
1579
  resp = await client.stub.AppGetTags(req)
1580
1580
  return dict(resp.tags)
1581
1581
 
1582
- async def _logs(self, client: _Client | None = None) -> AsyncGenerator[str, None]:
1583
- """Stream logs from the app.
1584
-
1585
- This method is considered private and its interface may change - use at your own risk!
1586
- """
1587
- if not self._app_id:
1588
- raise InvalidError("`app._logs` requires a running/stopped app.")
1589
-
1590
- client = client or self._client or await _Client.from_env()
1591
-
1592
- last_log_batch_entry_id: str | None = None
1593
- while True:
1594
- request = api_pb2.AppGetLogsRequest(
1595
- app_id=self._app_id,
1596
- timeout=55,
1597
- last_entry_id=last_log_batch_entry_id,
1598
- )
1599
- async for log_batch in client.stub.AppGetLogs.unary_stream(request):
1600
- if log_batch.entry_id:
1601
- # log_batch entry_id is empty for fd="server" messages from AppGetLogs
1602
- last_log_batch_entry_id = log_batch.entry_id
1603
- if log_batch.app_done:
1604
- return
1605
- for log in log_batch.items:
1606
- if log.data:
1607
- yield log.data
1608
-
1609
1582
  @classmethod
1610
1583
  def _get_container_app(cls) -> "_App | None":
1611
1584
  """Returns the `App` running inside a container.
@@ -1621,7 +1594,7 @@ class _App:
1621
1594
  async def _get_log_query_data(self) -> _LogQueryData:
1622
1595
  """Get the data needed to query logs for this app."""
1623
1596
  if not self._app_id:
1624
- raise InvalidError("`app._logs` requires a running/stopped app.")
1597
+ raise InvalidError("`app.logs` requires a running/stopped app.")
1625
1598
  client = self._client or await _Client.from_env()
1626
1599
  filters = LogsFilters()
1627
1600
  return _LogQueryData(client=client, app_id=self._app_id, filters=filters, source_object_id=self._app_id)
@@ -898,13 +898,6 @@ class _App:
898
898
  """
899
899
  ...
900
900
 
901
- def _logs(self, client: typing.Optional[modal.client._Client] = None) -> collections.abc.AsyncGenerator[str, None]:
902
- """Stream logs from the app.
903
-
904
- This method is considered private and its interface may change - use at your own risk!
905
- """
906
- ...
907
-
908
901
  @classmethod
909
902
  def _get_container_app(cls) -> typing.Optional[_App]:
910
903
  """Returns the `App` running inside a container.
@@ -1960,25 +1953,6 @@ class App:
1960
1953
 
1961
1954
  get_tags: __get_tags_spec
1962
1955
 
1963
- class ___logs_spec(typing_extensions.Protocol):
1964
- def __call__(self, /, client: typing.Optional[modal.client.Client] = None) -> typing.Generator[str, None, None]:
1965
- """Stream logs from the app.
1966
-
1967
- This method is considered private and its interface may change - use at your own risk!
1968
- """
1969
- ...
1970
-
1971
- def aio(
1972
- self, /, client: typing.Optional[modal.client.Client] = None
1973
- ) -> collections.abc.AsyncGenerator[str, None]:
1974
- """Stream logs from the app.
1975
-
1976
- This method is considered private and its interface may change - use at your own risk!
1977
- """
1978
- ...
1979
-
1980
- _logs: ___logs_spec
1981
-
1982
1956
  @classmethod
1983
1957
  def _get_container_app(cls) -> typing.Optional[App]:
1984
1958
  """Returns the `App` running inside a container.
@@ -38,7 +38,7 @@ class _Client:
38
38
  server_url: str,
39
39
  client_type: int,
40
40
  credentials: typing.Optional[tuple[str, str]],
41
- version: str = "1.5.5.dev3",
41
+ version: str = "1.5.5.dev5",
42
42
  ):
43
43
  """mdmd:hidden
44
44
  The Modal client object is not intended to be instantiated directly by users.
@@ -209,7 +209,7 @@ class Client:
209
209
  server_url: str,
210
210
  client_type: int,
211
211
  credentials: typing.Optional[tuple[str, str]],
212
- version: str = "1.5.5.dev3",
212
+ version: str = "1.5.5.dev5",
213
213
  ):
214
214
  """mdmd:hidden
215
215
  The Modal client object is not intended to be instantiated directly by users.
@@ -546,7 +546,7 @@ class Function(
546
546
 
547
547
  _call_generator: ___call_generator_spec
548
548
 
549
- class __remote_spec(typing_extensions.Protocol[P_INNER, ReturnType_INNER]):
549
+ class __remote_spec(typing_extensions.Protocol[ReturnType_INNER, P_INNER]):
550
550
  def __call__(self, /, *args: P_INNER.args, **kwargs: P_INNER.kwargs) -> ReturnType_INNER:
551
551
  """Calls the function remotely, executing it with the given arguments and returning the execution's result.
552
552
 
@@ -571,7 +571,7 @@ class Function(
571
571
  """
572
572
  ...
573
573
 
574
- remote: __remote_spec[modal._functions.P, modal._functions.ReturnType]
574
+ remote: __remote_spec[modal._functions.ReturnType, modal._functions.P]
575
575
 
576
576
  class __remote_gen_spec(typing_extensions.Protocol):
577
577
  def __call__(self, /, *args, **kwargs) -> typing.Generator[typing.Any, None, None]:
@@ -621,7 +621,7 @@ class Function(
621
621
  """
622
622
  ...
623
623
 
624
- class ___experimental_spawn_spec(typing_extensions.Protocol[P_INNER, ReturnType_INNER]):
624
+ class ___experimental_spawn_spec(typing_extensions.Protocol[ReturnType_INNER, P_INNER]):
625
625
  def __call__(self, /, *args: P_INNER.args, **kwargs: P_INNER.kwargs) -> FunctionCall[ReturnType_INNER]:
626
626
  """[Experimental] Calls the function with the given arguments, without waiting for the results.
627
627
 
@@ -654,7 +654,7 @@ class Function(
654
654
  """
655
655
  ...
656
656
 
657
- _experimental_spawn: ___experimental_spawn_spec[modal._functions.P, modal._functions.ReturnType]
657
+ _experimental_spawn: ___experimental_spawn_spec[modal._functions.ReturnType, modal._functions.P]
658
658
 
659
659
  class ___spawn_map_inner_spec(typing_extensions.Protocol[P_INNER]):
660
660
  def __call__(self, /, *args: P_INNER.args, **kwargs: P_INNER.kwargs) -> None: ...
@@ -662,7 +662,7 @@ class Function(
662
662
 
663
663
  _spawn_map_inner: ___spawn_map_inner_spec[modal._functions.P]
664
664
 
665
- class __spawn_spec(typing_extensions.Protocol[P_INNER, ReturnType_INNER]):
665
+ class __spawn_spec(typing_extensions.Protocol[ReturnType_INNER, P_INNER]):
666
666
  def __call__(self, /, *args: P_INNER.args, **kwargs: P_INNER.kwargs) -> FunctionCall[ReturnType_INNER]:
667
667
  """Calls the function with the given arguments, without waiting for the results.
668
668
 
@@ -695,7 +695,7 @@ class Function(
695
695
  """
696
696
  ...
697
697
 
698
- spawn: __spawn_spec[modal._functions.P, modal._functions.ReturnType]
698
+ spawn: __spawn_spec[modal._functions.ReturnType, modal._functions.P]
699
699
 
700
700
  def get_raw_f(self) -> collections.abc.Callable[..., typing.Any]:
701
701
  """Return the inner Python object wrapped by this Modal Function.
@@ -1389,13 +1389,15 @@ class _Sandbox(_Object, type_prefix="sb"):
1389
1389
  `modal.Sandbox._experimental_create`. A name may only be set once and
1390
1390
  only on a Sandbox that has never had one; afterwards the Sandbox can
1391
1391
  be looked up with `Sandbox._experimental_from_name(app_name, name)`.
1392
+ Repeating the Sandbox's current name is idempotent and succeeds, so
1393
+ the call is safe to retry.
1392
1394
 
1393
1395
  Args:
1394
1396
  name: Name to assign to the Sandbox. Must be unique within the App.
1395
1397
 
1396
1398
  Raises:
1397
1399
  AlreadyExistsError: If another running Sandbox in the App already holds the name.
1398
- ConflictError: If the Sandbox already has a name or is no longer running.
1400
+ ConflictError: If the Sandbox already has a different name or is no longer running.
1399
1401
  """
1400
1402
  self._ensure_attached()
1401
1403
  if not self._is_v2:
@@ -2875,6 +2877,7 @@ class _SidecarManager:
2875
2877
  volumes: dict[str | os.PathLike, _Volume] | None = None,
2876
2878
  outbound_cidr_allowlist: Sequence[str] | None = None,
2877
2879
  outbound_domain_allowlist: Sequence[str] | None = None,
2880
+ pty: bool = False,
2878
2881
  ) -> _SidecarContainer:
2879
2882
  """Create a sidecar container running alongside the Sandbox's main container.
2880
2883
 
@@ -2901,6 +2904,7 @@ class _SidecarManager:
2901
2904
  main container.
2902
2905
  outbound_domain_allowlist: If set, restrict the sidecar's outbound TLS connections (port
2903
2906
  443) to these SNI domains. Supports wildcards like ``*.example.com``.
2907
+ pty: Whether to enable PTY for the sidecar container.
2904
2908
 
2905
2909
  Returns:
2906
2910
  A `SidecarContainer` handle for the running container.
@@ -2956,6 +2960,7 @@ class _SidecarManager:
2956
2960
  secret_ids=[secret.object_id for secret in secrets],
2957
2961
  volume_mounts=volume_mounts,
2958
2962
  network_access=_build_outbound_network_access(False, outbound_cidr_allowlist, outbound_domain_allowlist),
2963
+ pty_info=_Sandbox._default_pty_info() if pty else None,
2959
2964
  )
2960
2965
  create_resp = await command_router_client.container_create(create_req)
2961
2966
  container_id = create_resp.container_id
@@ -564,13 +564,15 @@ class _Sandbox(modal._object._Object):
564
564
  `modal.Sandbox._experimental_create`. A name may only be set once and
565
565
  only on a Sandbox that has never had one; afterwards the Sandbox can
566
566
  be looked up with `Sandbox._experimental_from_name(app_name, name)`.
567
+ Repeating the Sandbox's current name is idempotent and succeeds, so
568
+ the call is safe to retry.
567
569
 
568
570
  Args:
569
571
  name: Name to assign to the Sandbox. Must be unique within the App.
570
572
 
571
573
  Raises:
572
574
  AlreadyExistsError: If another running Sandbox in the App already holds the name.
573
- ConflictError: If the Sandbox already has a name or is no longer running.
575
+ ConflictError: If the Sandbox already has a different name or is no longer running.
574
576
  """
575
577
  ...
576
578
 
@@ -1182,6 +1184,7 @@ class _SidecarManager:
1182
1184
  volumes: typing.Optional[dict[typing.Union[str, os.PathLike], modal.volume._Volume]] = None,
1183
1185
  outbound_cidr_allowlist: typing.Optional[collections.abc.Sequence[str]] = None,
1184
1186
  outbound_domain_allowlist: typing.Optional[collections.abc.Sequence[str]] = None,
1187
+ pty: bool = False,
1185
1188
  ) -> _SidecarContainer:
1186
1189
  """Create a sidecar container running alongside the Sandbox's main container.
1187
1190
 
@@ -1208,6 +1211,7 @@ class _SidecarManager:
1208
1211
  main container.
1209
1212
  outbound_domain_allowlist: If set, restrict the sidecar's outbound TLS connections (port
1210
1213
  443) to these SNI domains. Supports wildcards like ``*.example.com``.
1214
+ pty: Whether to enable PTY for the sidecar container.
1211
1215
 
1212
1216
  Returns:
1213
1217
  A `SidecarContainer` handle for the running container.
@@ -1435,6 +1439,7 @@ class SidecarManager:
1435
1439
  volumes: typing.Optional[dict[typing.Union[str, os.PathLike], modal.volume.Volume]] = None,
1436
1440
  outbound_cidr_allowlist: typing.Optional[collections.abc.Sequence[str]] = None,
1437
1441
  outbound_domain_allowlist: typing.Optional[collections.abc.Sequence[str]] = None,
1442
+ pty: bool = False,
1438
1443
  ) -> SidecarContainer:
1439
1444
  """Create a sidecar container running alongside the Sandbox's main container.
1440
1445
 
@@ -1461,6 +1466,7 @@ class SidecarManager:
1461
1466
  main container.
1462
1467
  outbound_domain_allowlist: If set, restrict the sidecar's outbound TLS connections (port
1463
1468
  443) to these SNI domains. Supports wildcards like ``*.example.com``.
1469
+ pty: Whether to enable PTY for the sidecar container.
1464
1470
 
1465
1471
  Returns:
1466
1472
  A `SidecarContainer` handle for the running container.
@@ -1479,6 +1485,7 @@ class SidecarManager:
1479
1485
  volumes: typing.Optional[dict[typing.Union[str, os.PathLike], modal.volume.Volume]] = None,
1480
1486
  outbound_cidr_allowlist: typing.Optional[collections.abc.Sequence[str]] = None,
1481
1487
  outbound_domain_allowlist: typing.Optional[collections.abc.Sequence[str]] = None,
1488
+ pty: bool = False,
1482
1489
  ) -> SidecarContainer:
1483
1490
  """Create a sidecar container running alongside the Sandbox's main container.
1484
1491
 
@@ -1505,6 +1512,7 @@ class SidecarManager:
1505
1512
  main container.
1506
1513
  outbound_domain_allowlist: If set, restrict the sidecar's outbound TLS connections (port
1507
1514
  443) to these SNI domains. Supports wildcards like ``*.example.com``.
1515
+ pty: Whether to enable PTY for the sidecar container.
1508
1516
 
1509
1517
  Returns:
1510
1518
  A `SidecarContainer` handle for the running container.
@@ -2315,13 +2323,15 @@ class Sandbox(modal.object.Object):
2315
2323
  `modal.Sandbox._experimental_create`. A name may only be set once and
2316
2324
  only on a Sandbox that has never had one; afterwards the Sandbox can
2317
2325
  be looked up with `Sandbox._experimental_from_name(app_name, name)`.
2326
+ Repeating the Sandbox's current name is idempotent and succeeds, so
2327
+ the call is safe to retry.
2318
2328
 
2319
2329
  Args:
2320
2330
  name: Name to assign to the Sandbox. Must be unique within the App.
2321
2331
 
2322
2332
  Raises:
2323
2333
  AlreadyExistsError: If another running Sandbox in the App already holds the name.
2324
- ConflictError: If the Sandbox already has a name or is no longer running.
2334
+ ConflictError: If the Sandbox already has a different name or is no longer running.
2325
2335
  """
2326
2336
  ...
2327
2337
 
@@ -2332,13 +2342,15 @@ class Sandbox(modal.object.Object):
2332
2342
  `modal.Sandbox._experimental_create`. A name may only be set once and
2333
2343
  only on a Sandbox that has never had one; afterwards the Sandbox can
2334
2344
  be looked up with `Sandbox._experimental_from_name(app_name, name)`.
2345
+ Repeating the Sandbox's current name is idempotent and succeeds, so
2346
+ the call is safe to retry.
2335
2347
 
2336
2348
  Args:
2337
2349
  name: Name to assign to the Sandbox. Must be unique within the App.
2338
2350
 
2339
2351
  Raises:
2340
2352
  AlreadyExistsError: If another running Sandbox in the App already holds the name.
2341
- ConflictError: If the Sandbox already has a name or is no longer running.
2353
+ ConflictError: If the Sandbox already has a different name or is no longer running.
2342
2354
  """
2343
2355
  ...
2344
2356
 
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: modal
3
- Version: 1.5.5.dev3
3
+ Version: 1.5.5.dev5
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.5.dev3"
4
+ __version__ = "1.5.5.dev5"
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