modal 1.4.2.dev11__tar.gz → 1.4.2.dev13__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 (209) hide show
  1. {modal-1.4.2.dev11 → modal-1.4.2.dev13}/PKG-INFO +1 -1
  2. {modal-1.4.2.dev11 → modal-1.4.2.dev13}/modal/_utils/task_command_router_client.py +3 -0
  3. {modal-1.4.2.dev11 → modal-1.4.2.dev13}/modal/client.pyi +2 -2
  4. {modal-1.4.2.dev11 → modal-1.4.2.dev13}/modal/sandbox.py +23 -6
  5. {modal-1.4.2.dev11 → modal-1.4.2.dev13}/modal/sandbox.pyi +3 -0
  6. {modal-1.4.2.dev11 → modal-1.4.2.dev13}/modal.egg-info/PKG-INFO +1 -1
  7. {modal-1.4.2.dev11 → modal-1.4.2.dev13}/modal_version/__init__.py +1 -1
  8. {modal-1.4.2.dev11 → modal-1.4.2.dev13}/LICENSE +0 -0
  9. {modal-1.4.2.dev11 → modal-1.4.2.dev13}/README.md +0 -0
  10. {modal-1.4.2.dev11 → modal-1.4.2.dev13}/modal/__init__.py +0 -0
  11. {modal-1.4.2.dev11 → modal-1.4.2.dev13}/modal/__main__.py +0 -0
  12. {modal-1.4.2.dev11 → modal-1.4.2.dev13}/modal/_billing.py +0 -0
  13. {modal-1.4.2.dev11 → modal-1.4.2.dev13}/modal/_clustered_functions.py +0 -0
  14. {modal-1.4.2.dev11 → modal-1.4.2.dev13}/modal/_clustered_functions.pyi +0 -0
  15. {modal-1.4.2.dev11 → modal-1.4.2.dev13}/modal/_container_entrypoint.py +0 -0
  16. {modal-1.4.2.dev11 → modal-1.4.2.dev13}/modal/_functions.py +0 -0
  17. {modal-1.4.2.dev11 → modal-1.4.2.dev13}/modal/_grpc_client.py +0 -0
  18. {modal-1.4.2.dev11 → modal-1.4.2.dev13}/modal/_ipython.py +0 -0
  19. {modal-1.4.2.dev11 → modal-1.4.2.dev13}/modal/_load_context.py +0 -0
  20. {modal-1.4.2.dev11 → modal-1.4.2.dev13}/modal/_location.py +0 -0
  21. {modal-1.4.2.dev11 → modal-1.4.2.dev13}/modal/_logs.py +0 -0
  22. {modal-1.4.2.dev11 → modal-1.4.2.dev13}/modal/_object.py +0 -0
  23. {modal-1.4.2.dev11 → modal-1.4.2.dev13}/modal/_output/__init__.py +0 -0
  24. {modal-1.4.2.dev11 → modal-1.4.2.dev13}/modal/_output/manager.py +0 -0
  25. {modal-1.4.2.dev11 → modal-1.4.2.dev13}/modal/_output/pty.py +0 -0
  26. {modal-1.4.2.dev11 → modal-1.4.2.dev13}/modal/_output/rich.py +0 -0
  27. {modal-1.4.2.dev11 → modal-1.4.2.dev13}/modal/_output/status.py +0 -0
  28. {modal-1.4.2.dev11 → modal-1.4.2.dev13}/modal/_partial_function.py +0 -0
  29. {modal-1.4.2.dev11 → modal-1.4.2.dev13}/modal/_resolver.py +0 -0
  30. {modal-1.4.2.dev11 → modal-1.4.2.dev13}/modal/_resources.py +0 -0
  31. {modal-1.4.2.dev11 → modal-1.4.2.dev13}/modal/_runtime/__init__.py +0 -0
  32. {modal-1.4.2.dev11 → modal-1.4.2.dev13}/modal/_runtime/asgi.py +0 -0
  33. {modal-1.4.2.dev11 → modal-1.4.2.dev13}/modal/_runtime/container_io_manager.py +0 -0
  34. {modal-1.4.2.dev11 → modal-1.4.2.dev13}/modal/_runtime/container_io_manager.pyi +0 -0
  35. {modal-1.4.2.dev11 → modal-1.4.2.dev13}/modal/_runtime/execution_context.py +0 -0
  36. {modal-1.4.2.dev11 → modal-1.4.2.dev13}/modal/_runtime/execution_context.pyi +0 -0
  37. {modal-1.4.2.dev11 → modal-1.4.2.dev13}/modal/_runtime/gpu_memory_snapshot.py +0 -0
  38. {modal-1.4.2.dev11 → modal-1.4.2.dev13}/modal/_runtime/telemetry.py +0 -0
  39. {modal-1.4.2.dev11 → modal-1.4.2.dev13}/modal/_runtime/user_code_event_loop.py +0 -0
  40. {modal-1.4.2.dev11 → modal-1.4.2.dev13}/modal/_runtime/user_code_imports.py +0 -0
  41. {modal-1.4.2.dev11 → modal-1.4.2.dev13}/modal/_serialization.py +0 -0
  42. {modal-1.4.2.dev11 → modal-1.4.2.dev13}/modal/_server.py +0 -0
  43. {modal-1.4.2.dev11 → modal-1.4.2.dev13}/modal/_traceback.py +0 -0
  44. {modal-1.4.2.dev11 → modal-1.4.2.dev13}/modal/_tunnel.py +0 -0
  45. {modal-1.4.2.dev11 → modal-1.4.2.dev13}/modal/_tunnel.pyi +0 -0
  46. {modal-1.4.2.dev11 → modal-1.4.2.dev13}/modal/_type_manager.py +0 -0
  47. {modal-1.4.2.dev11 → modal-1.4.2.dev13}/modal/_utils/__init__.py +0 -0
  48. {modal-1.4.2.dev11 → modal-1.4.2.dev13}/modal/_utils/app_utils.py +0 -0
  49. {modal-1.4.2.dev11 → modal-1.4.2.dev13}/modal/_utils/async_utils.py +0 -0
  50. {modal-1.4.2.dev11 → modal-1.4.2.dev13}/modal/_utils/auth_token_manager.py +0 -0
  51. {modal-1.4.2.dev11 → modal-1.4.2.dev13}/modal/_utils/blob_utils.py +0 -0
  52. {modal-1.4.2.dev11 → modal-1.4.2.dev13}/modal/_utils/browser_utils.py +0 -0
  53. {modal-1.4.2.dev11 → modal-1.4.2.dev13}/modal/_utils/bytes_io_segment_payload.py +0 -0
  54. {modal-1.4.2.dev11 → modal-1.4.2.dev13}/modal/_utils/deprecation.py +0 -0
  55. {modal-1.4.2.dev11 → modal-1.4.2.dev13}/modal/_utils/docker_utils.py +0 -0
  56. {modal-1.4.2.dev11 → modal-1.4.2.dev13}/modal/_utils/function_utils.py +0 -0
  57. {modal-1.4.2.dev11 → modal-1.4.2.dev13}/modal/_utils/git_utils.py +0 -0
  58. {modal-1.4.2.dev11 → modal-1.4.2.dev13}/modal/_utils/grpc_testing.py +0 -0
  59. {modal-1.4.2.dev11 → modal-1.4.2.dev13}/modal/_utils/grpc_utils.py +0 -0
  60. {modal-1.4.2.dev11 → modal-1.4.2.dev13}/modal/_utils/hash_utils.py +0 -0
  61. {modal-1.4.2.dev11 → modal-1.4.2.dev13}/modal/_utils/http_utils.py +0 -0
  62. {modal-1.4.2.dev11 → modal-1.4.2.dev13}/modal/_utils/jwt_utils.py +0 -0
  63. {modal-1.4.2.dev11 → modal-1.4.2.dev13}/modal/_utils/logger.py +0 -0
  64. {modal-1.4.2.dev11 → modal-1.4.2.dev13}/modal/_utils/mount_utils.py +0 -0
  65. {modal-1.4.2.dev11 → modal-1.4.2.dev13}/modal/_utils/name_utils.py +0 -0
  66. {modal-1.4.2.dev11 → modal-1.4.2.dev13}/modal/_utils/package_utils.py +0 -0
  67. {modal-1.4.2.dev11 → modal-1.4.2.dev13}/modal/_utils/pattern_utils.py +0 -0
  68. {modal-1.4.2.dev11 → modal-1.4.2.dev13}/modal/_utils/rand_pb_testing.py +0 -0
  69. {modal-1.4.2.dev11 → modal-1.4.2.dev13}/modal/_utils/sandbox_fs_utils.py +0 -0
  70. {modal-1.4.2.dev11 → modal-1.4.2.dev13}/modal/_utils/shell_utils.py +0 -0
  71. {modal-1.4.2.dev11 → modal-1.4.2.dev13}/modal/_utils/time_utils.py +0 -0
  72. {modal-1.4.2.dev11 → modal-1.4.2.dev13}/modal/_vendor/__init__.py +0 -0
  73. {modal-1.4.2.dev11 → modal-1.4.2.dev13}/modal/_vendor/a2wsgi_wsgi.py +0 -0
  74. {modal-1.4.2.dev11 → modal-1.4.2.dev13}/modal/_vendor/cloudpickle.py +0 -0
  75. {modal-1.4.2.dev11 → modal-1.4.2.dev13}/modal/_vendor/tblib.py +0 -0
  76. {modal-1.4.2.dev11 → modal-1.4.2.dev13}/modal/_vendor/version.py +0 -0
  77. {modal-1.4.2.dev11 → modal-1.4.2.dev13}/modal/_watcher.py +0 -0
  78. {modal-1.4.2.dev11 → modal-1.4.2.dev13}/modal/app.py +0 -0
  79. {modal-1.4.2.dev11 → modal-1.4.2.dev13}/modal/app.pyi +0 -0
  80. {modal-1.4.2.dev11 → modal-1.4.2.dev13}/modal/billing.py +0 -0
  81. {modal-1.4.2.dev11 → modal-1.4.2.dev13}/modal/builder/2023.12.312.txt +0 -0
  82. {modal-1.4.2.dev11 → modal-1.4.2.dev13}/modal/builder/2023.12.txt +0 -0
  83. {modal-1.4.2.dev11 → modal-1.4.2.dev13}/modal/builder/2024.04.txt +0 -0
  84. {modal-1.4.2.dev11 → modal-1.4.2.dev13}/modal/builder/2024.10.txt +0 -0
  85. {modal-1.4.2.dev11 → modal-1.4.2.dev13}/modal/builder/2025.06.txt +0 -0
  86. {modal-1.4.2.dev11 → modal-1.4.2.dev13}/modal/builder/PREVIEW.txt +0 -0
  87. {modal-1.4.2.dev11 → modal-1.4.2.dev13}/modal/builder/README.md +0 -0
  88. {modal-1.4.2.dev11 → modal-1.4.2.dev13}/modal/builder/base-images.json +0 -0
  89. {modal-1.4.2.dev11 → modal-1.4.2.dev13}/modal/call_graph.py +0 -0
  90. {modal-1.4.2.dev11 → modal-1.4.2.dev13}/modal/cli/__init__.py +0 -0
  91. {modal-1.4.2.dev11 → modal-1.4.2.dev13}/modal/cli/_download.py +0 -0
  92. {modal-1.4.2.dev11 → modal-1.4.2.dev13}/modal/cli/_traceback.py +0 -0
  93. {modal-1.4.2.dev11 → modal-1.4.2.dev13}/modal/cli/app.py +0 -0
  94. {modal-1.4.2.dev11 → modal-1.4.2.dev13}/modal/cli/billing.py +0 -0
  95. {modal-1.4.2.dev11 → modal-1.4.2.dev13}/modal/cli/changelog.py +0 -0
  96. {modal-1.4.2.dev11 → modal-1.4.2.dev13}/modal/cli/cluster.py +0 -0
  97. {modal-1.4.2.dev11 → modal-1.4.2.dev13}/modal/cli/config.py +0 -0
  98. {modal-1.4.2.dev11 → modal-1.4.2.dev13}/modal/cli/container.py +0 -0
  99. {modal-1.4.2.dev11 → modal-1.4.2.dev13}/modal/cli/dashboard.py +0 -0
  100. {modal-1.4.2.dev11 → modal-1.4.2.dev13}/modal/cli/dict.py +0 -0
  101. {modal-1.4.2.dev11 → modal-1.4.2.dev13}/modal/cli/entry_point.py +0 -0
  102. {modal-1.4.2.dev11 → modal-1.4.2.dev13}/modal/cli/environment.py +0 -0
  103. {modal-1.4.2.dev11 → modal-1.4.2.dev13}/modal/cli/import_refs.py +0 -0
  104. {modal-1.4.2.dev11 → modal-1.4.2.dev13}/modal/cli/launch.py +0 -0
  105. {modal-1.4.2.dev11 → modal-1.4.2.dev13}/modal/cli/network_file_system.py +0 -0
  106. {modal-1.4.2.dev11 → modal-1.4.2.dev13}/modal/cli/profile.py +0 -0
  107. {modal-1.4.2.dev11 → modal-1.4.2.dev13}/modal/cli/programs/__init__.py +0 -0
  108. {modal-1.4.2.dev11 → modal-1.4.2.dev13}/modal/cli/programs/run_jupyter.py +0 -0
  109. {modal-1.4.2.dev11 → modal-1.4.2.dev13}/modal/cli/programs/vscode.py +0 -0
  110. {modal-1.4.2.dev11 → modal-1.4.2.dev13}/modal/cli/queues.py +0 -0
  111. {modal-1.4.2.dev11 → modal-1.4.2.dev13}/modal/cli/run.py +0 -0
  112. {modal-1.4.2.dev11 → modal-1.4.2.dev13}/modal/cli/secret.py +0 -0
  113. {modal-1.4.2.dev11 → modal-1.4.2.dev13}/modal/cli/selector.py +0 -0
  114. {modal-1.4.2.dev11 → modal-1.4.2.dev13}/modal/cli/shell.py +0 -0
  115. {modal-1.4.2.dev11 → modal-1.4.2.dev13}/modal/cli/token.py +0 -0
  116. {modal-1.4.2.dev11 → modal-1.4.2.dev13}/modal/cli/utils.py +0 -0
  117. {modal-1.4.2.dev11 → modal-1.4.2.dev13}/modal/cli/volume.py +0 -0
  118. {modal-1.4.2.dev11 → modal-1.4.2.dev13}/modal/client.py +0 -0
  119. {modal-1.4.2.dev11 → modal-1.4.2.dev13}/modal/cloud_bucket_mount.py +0 -0
  120. {modal-1.4.2.dev11 → modal-1.4.2.dev13}/modal/cloud_bucket_mount.pyi +0 -0
  121. {modal-1.4.2.dev11 → modal-1.4.2.dev13}/modal/cls.py +0 -0
  122. {modal-1.4.2.dev11 → modal-1.4.2.dev13}/modal/cls.pyi +0 -0
  123. {modal-1.4.2.dev11 → modal-1.4.2.dev13}/modal/config.py +0 -0
  124. {modal-1.4.2.dev11 → modal-1.4.2.dev13}/modal/container_process.py +0 -0
  125. {modal-1.4.2.dev11 → modal-1.4.2.dev13}/modal/container_process.pyi +0 -0
  126. {modal-1.4.2.dev11 → modal-1.4.2.dev13}/modal/dict.py +0 -0
  127. {modal-1.4.2.dev11 → modal-1.4.2.dev13}/modal/dict.pyi +0 -0
  128. {modal-1.4.2.dev11 → modal-1.4.2.dev13}/modal/environments.py +0 -0
  129. {modal-1.4.2.dev11 → modal-1.4.2.dev13}/modal/environments.pyi +0 -0
  130. {modal-1.4.2.dev11 → modal-1.4.2.dev13}/modal/exception.py +0 -0
  131. {modal-1.4.2.dev11 → modal-1.4.2.dev13}/modal/experimental/__init__.py +0 -0
  132. {modal-1.4.2.dev11 → modal-1.4.2.dev13}/modal/experimental/flash.py +0 -0
  133. {modal-1.4.2.dev11 → modal-1.4.2.dev13}/modal/experimental/flash.pyi +0 -0
  134. {modal-1.4.2.dev11 → modal-1.4.2.dev13}/modal/experimental/ipython.py +0 -0
  135. {modal-1.4.2.dev11 → modal-1.4.2.dev13}/modal/file_io.py +0 -0
  136. {modal-1.4.2.dev11 → modal-1.4.2.dev13}/modal/file_io.pyi +0 -0
  137. {modal-1.4.2.dev11 → modal-1.4.2.dev13}/modal/file_pattern_matcher.py +0 -0
  138. {modal-1.4.2.dev11 → modal-1.4.2.dev13}/modal/functions.py +0 -0
  139. {modal-1.4.2.dev11 → modal-1.4.2.dev13}/modal/functions.pyi +0 -0
  140. {modal-1.4.2.dev11 → modal-1.4.2.dev13}/modal/image.py +0 -0
  141. {modal-1.4.2.dev11 → modal-1.4.2.dev13}/modal/image.pyi +0 -0
  142. {modal-1.4.2.dev11 → modal-1.4.2.dev13}/modal/io_streams.py +0 -0
  143. {modal-1.4.2.dev11 → modal-1.4.2.dev13}/modal/io_streams.pyi +0 -0
  144. {modal-1.4.2.dev11 → modal-1.4.2.dev13}/modal/mount.py +0 -0
  145. {modal-1.4.2.dev11 → modal-1.4.2.dev13}/modal/mount.pyi +0 -0
  146. {modal-1.4.2.dev11 → modal-1.4.2.dev13}/modal/network_file_system.py +0 -0
  147. {modal-1.4.2.dev11 → modal-1.4.2.dev13}/modal/network_file_system.pyi +0 -0
  148. {modal-1.4.2.dev11 → modal-1.4.2.dev13}/modal/object.py +0 -0
  149. {modal-1.4.2.dev11 → modal-1.4.2.dev13}/modal/object.pyi +0 -0
  150. {modal-1.4.2.dev11 → modal-1.4.2.dev13}/modal/output.py +0 -0
  151. {modal-1.4.2.dev11 → modal-1.4.2.dev13}/modal/parallel_map.py +0 -0
  152. {modal-1.4.2.dev11 → modal-1.4.2.dev13}/modal/parallel_map.pyi +0 -0
  153. {modal-1.4.2.dev11 → modal-1.4.2.dev13}/modal/partial_function.py +0 -0
  154. {modal-1.4.2.dev11 → modal-1.4.2.dev13}/modal/partial_function.pyi +0 -0
  155. {modal-1.4.2.dev11 → modal-1.4.2.dev13}/modal/proxy.py +0 -0
  156. {modal-1.4.2.dev11 → modal-1.4.2.dev13}/modal/proxy.pyi +0 -0
  157. {modal-1.4.2.dev11 → modal-1.4.2.dev13}/modal/py.typed +0 -0
  158. {modal-1.4.2.dev11 → modal-1.4.2.dev13}/modal/queue.py +0 -0
  159. {modal-1.4.2.dev11 → modal-1.4.2.dev13}/modal/queue.pyi +0 -0
  160. {modal-1.4.2.dev11 → modal-1.4.2.dev13}/modal/retries.py +0 -0
  161. {modal-1.4.2.dev11 → modal-1.4.2.dev13}/modal/runner.py +0 -0
  162. {modal-1.4.2.dev11 → modal-1.4.2.dev13}/modal/runner.pyi +0 -0
  163. {modal-1.4.2.dev11 → modal-1.4.2.dev13}/modal/running_app.py +0 -0
  164. {modal-1.4.2.dev11 → modal-1.4.2.dev13}/modal/sandbox_fs.py +0 -0
  165. {modal-1.4.2.dev11 → modal-1.4.2.dev13}/modal/sandbox_fs.pyi +0 -0
  166. {modal-1.4.2.dev11 → modal-1.4.2.dev13}/modal/schedule.py +0 -0
  167. {modal-1.4.2.dev11 → modal-1.4.2.dev13}/modal/scheduler_placement.py +0 -0
  168. {modal-1.4.2.dev11 → modal-1.4.2.dev13}/modal/secret.py +0 -0
  169. {modal-1.4.2.dev11 → modal-1.4.2.dev13}/modal/secret.pyi +0 -0
  170. {modal-1.4.2.dev11 → modal-1.4.2.dev13}/modal/server.py +0 -0
  171. {modal-1.4.2.dev11 → modal-1.4.2.dev13}/modal/server.pyi +0 -0
  172. {modal-1.4.2.dev11 → modal-1.4.2.dev13}/modal/serving.py +0 -0
  173. {modal-1.4.2.dev11 → modal-1.4.2.dev13}/modal/serving.pyi +0 -0
  174. {modal-1.4.2.dev11 → modal-1.4.2.dev13}/modal/snapshot.py +0 -0
  175. {modal-1.4.2.dev11 → modal-1.4.2.dev13}/modal/snapshot.pyi +0 -0
  176. {modal-1.4.2.dev11 → modal-1.4.2.dev13}/modal/stream_type.py +0 -0
  177. {modal-1.4.2.dev11 → modal-1.4.2.dev13}/modal/token_flow.py +0 -0
  178. {modal-1.4.2.dev11 → modal-1.4.2.dev13}/modal/token_flow.pyi +0 -0
  179. {modal-1.4.2.dev11 → modal-1.4.2.dev13}/modal/volume.py +0 -0
  180. {modal-1.4.2.dev11 → modal-1.4.2.dev13}/modal/volume.pyi +0 -0
  181. {modal-1.4.2.dev11 → modal-1.4.2.dev13}/modal.egg-info/SOURCES.txt +0 -0
  182. {modal-1.4.2.dev11 → modal-1.4.2.dev13}/modal.egg-info/dependency_links.txt +0 -0
  183. {modal-1.4.2.dev11 → modal-1.4.2.dev13}/modal.egg-info/entry_points.txt +0 -0
  184. {modal-1.4.2.dev11 → modal-1.4.2.dev13}/modal.egg-info/requires.txt +0 -0
  185. {modal-1.4.2.dev11 → modal-1.4.2.dev13}/modal.egg-info/top_level.txt +0 -0
  186. {modal-1.4.2.dev11 → modal-1.4.2.dev13}/modal_docs/__init__.py +0 -0
  187. {modal-1.4.2.dev11 → modal-1.4.2.dev13}/modal_docs/gen_cli_docs.py +0 -0
  188. {modal-1.4.2.dev11 → modal-1.4.2.dev13}/modal_docs/gen_cli_docs_main.py +0 -0
  189. {modal-1.4.2.dev11 → modal-1.4.2.dev13}/modal_docs/gen_reference_docs.py +0 -0
  190. {modal-1.4.2.dev11 → modal-1.4.2.dev13}/modal_docs/gen_reference_docs_main.py +0 -0
  191. {modal-1.4.2.dev11 → modal-1.4.2.dev13}/modal_docs/mdmd/__init__.py +0 -0
  192. {modal-1.4.2.dev11 → modal-1.4.2.dev13}/modal_docs/mdmd/mdmd.py +0 -0
  193. {modal-1.4.2.dev11 → modal-1.4.2.dev13}/modal_docs/mdmd/signatures.py +0 -0
  194. {modal-1.4.2.dev11 → modal-1.4.2.dev13}/modal_proto/__init__.py +0 -0
  195. {modal-1.4.2.dev11 → modal-1.4.2.dev13}/modal_proto/api_grpc.py +0 -0
  196. {modal-1.4.2.dev11 → modal-1.4.2.dev13}/modal_proto/api_pb2.py +0 -0
  197. {modal-1.4.2.dev11 → modal-1.4.2.dev13}/modal_proto/api_pb2.pyi +0 -0
  198. {modal-1.4.2.dev11 → modal-1.4.2.dev13}/modal_proto/api_pb2_grpc.py +0 -0
  199. {modal-1.4.2.dev11 → modal-1.4.2.dev13}/modal_proto/api_pb2_grpc.pyi +0 -0
  200. {modal-1.4.2.dev11 → modal-1.4.2.dev13}/modal_proto/modal_api_grpc.py +0 -0
  201. {modal-1.4.2.dev11 → modal-1.4.2.dev13}/modal_proto/py.typed +0 -0
  202. {modal-1.4.2.dev11 → modal-1.4.2.dev13}/modal_proto/task_command_router_grpc.py +0 -0
  203. {modal-1.4.2.dev11 → modal-1.4.2.dev13}/modal_proto/task_command_router_pb2.py +0 -0
  204. {modal-1.4.2.dev11 → modal-1.4.2.dev13}/modal_proto/task_command_router_pb2.pyi +0 -0
  205. {modal-1.4.2.dev11 → modal-1.4.2.dev13}/modal_proto/task_command_router_pb2_grpc.py +0 -0
  206. {modal-1.4.2.dev11 → modal-1.4.2.dev13}/modal_proto/task_command_router_pb2_grpc.pyi +0 -0
  207. {modal-1.4.2.dev11 → modal-1.4.2.dev13}/modal_version/__main__.py +0 -0
  208. {modal-1.4.2.dev11 → modal-1.4.2.dev13}/pyproject.toml +0 -0
  209. {modal-1.4.2.dev11 → modal-1.4.2.dev13}/setup.cfg +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: modal
3
- Version: 1.4.2.dev11
3
+ Version: 1.4.2.dev13
4
4
  Summary: Python client library for Modal
5
5
  Author-email: Modal Labs <support@modal.com>
6
6
  License-Expression: Apache-2.0
@@ -126,8 +126,11 @@ async def fetch_command_router_access_v2(
126
126
  server_client, sandbox_id: str
127
127
  ) -> api_pb2.SandboxGetCommandRouterAccessResponse:
128
128
  """Fetch direct command router access info from Modal server for a V2 sandbox."""
129
+ assert server_client._auth_token_manager
130
+ auth_token = await server_client._auth_token_manager.get_token()
129
131
  return await server_client.stub.SandboxGetCommandRouterAccess(
130
132
  api_pb2.SandboxGetCommandRouterAccessRequest(sandbox_id=sandbox_id),
133
+ metadata=[("x-modal-auth-token", auth_token)],
131
134
  )
132
135
 
133
136
 
@@ -35,7 +35,7 @@ class _Client:
35
35
  server_url: str,
36
36
  client_type: int,
37
37
  credentials: typing.Optional[tuple[str, str]],
38
- version: str = "1.4.2.dev11",
38
+ version: str = "1.4.2.dev13",
39
39
  ):
40
40
  """mdmd:hidden
41
41
  The Modal client object is not intended to be instantiated directly by users.
@@ -175,7 +175,7 @@ class Client:
175
175
  server_url: str,
176
176
  client_type: int,
177
177
  credentials: typing.Optional[tuple[str, str]],
178
- version: str = "1.4.2.dev11",
178
+ version: str = "1.4.2.dev13",
179
179
  ):
180
180
  """mdmd:hidden
181
181
  The Modal client object is not intended to be instantiated directly by users.
@@ -1045,7 +1045,12 @@ class _Sandbox(_Object, type_prefix="sb"):
1045
1045
  req = api_pb2.SandboxWaitRequest(sandbox_id=self.object_id, timeout=10)
1046
1046
  # Use the private __client to allow `wait` to work with a detached sandbox
1047
1047
  stub = self.__client.stub
1048
- resp = await (stub.SandboxWaitV2(req) if self._is_v2 else stub.SandboxWait(req))
1048
+ if self._is_v2:
1049
+ assert self.__client._auth_token_manager
1050
+ auth_token = await self.__client._auth_token_manager.get_token()
1051
+ resp = await stub.SandboxWaitV2(req, metadata=[("x-modal-auth-token", auth_token)])
1052
+ else:
1053
+ resp = await stub.SandboxWait(req)
1049
1054
  if resp.result.status:
1050
1055
  logger.debug(f"Sandbox {self.object_id} wait completed with status {resp.result.status}")
1051
1056
  self._result = resp.result
@@ -1187,7 +1192,12 @@ class _Sandbox(_Object, type_prefix="sb"):
1187
1192
 
1188
1193
  req = api_pb2.SandboxWaitRequest(sandbox_id=self.object_id, timeout=0)
1189
1194
  stub = self._client.stub
1190
- resp = await (stub.SandboxWaitV2(req) if self._is_v2 else stub.SandboxWait(req))
1195
+ if self._is_v2:
1196
+ assert self._client._auth_token_manager
1197
+ auth_token = await self._client._auth_token_manager.get_token()
1198
+ resp = await stub.SandboxWaitV2(req, metadata=[("x-modal-auth-token", auth_token)])
1199
+ else:
1200
+ resp = await stub.SandboxWait(req)
1191
1201
 
1192
1202
  if resp.result.status:
1193
1203
  self._result = resp.result
@@ -1338,11 +1348,10 @@ class _Sandbox(_Object, type_prefix="sb"):
1338
1348
  raise InvalidError(f"workdir must be an absolute path, got: {workdir}")
1339
1349
  _validate_exec_args(args)
1340
1350
 
1341
- secrets = secrets or []
1342
- if env:
1343
- secrets = [*secrets, _Secret.from_dict(env)]
1351
+ secrets = list(secrets or [])
1352
+ env_dict = {k: v for k, v in (env or {}).items() if v is not None}
1344
1353
 
1345
- # Force secret resolution so we can pass the secret IDs to the backend.
1354
+ # Force explicit secret resolution so we can pass the secret IDs to the backend.
1346
1355
  secret_coros = [secret.hydrate(client=self._client) for secret in secrets]
1347
1356
  await TaskContext.gather(*secret_coros)
1348
1357
 
@@ -1355,6 +1364,7 @@ class _Sandbox(_Object, type_prefix="sb"):
1355
1364
  "timeout": timeout,
1356
1365
  "workdir": workdir,
1357
1366
  "secret_ids": [secret.object_id for secret in secrets],
1367
+ "env": env_dict,
1358
1368
  "text": text,
1359
1369
  "bufsize": bufsize,
1360
1370
  "runtime_debug": config.get("function_runtime_debug"),
@@ -1366,6 +1376,11 @@ class _Sandbox(_Object, type_prefix="sb"):
1366
1376
  kwargs["command_router_client"] = command_router_client
1367
1377
  return await self._exec_through_command_router(*args, **kwargs)
1368
1378
  else:
1379
+ if env_dict:
1380
+ env_secret = _Secret.from_dict(env)
1381
+ await env_secret.hydrate(client=self._client)
1382
+ kwargs["secret_ids"] = [*kwargs["secret_ids"], env_secret.object_id]
1383
+ kwargs.pop("env", None)
1369
1384
  return await self._exec_through_server(*args, **kwargs)
1370
1385
 
1371
1386
  async def _exec_through_server(
@@ -1421,6 +1436,7 @@ class _Sandbox(_Object, type_prefix="sb"):
1421
1436
  timeout: Optional[int] = None,
1422
1437
  workdir: Optional[str] = None,
1423
1438
  secret_ids: Optional[Collection[str]] = None,
1439
+ env: Optional[dict[str, str]] = None,
1424
1440
  text: bool = True,
1425
1441
  bufsize: Literal[-1, 1] = -1,
1426
1442
  runtime_debug: bool = False,
@@ -1463,6 +1479,7 @@ class _Sandbox(_Object, type_prefix="sb"):
1463
1479
  pty_info=pty_info,
1464
1480
  runtime_debug=runtime_debug,
1465
1481
  container_id=container_id or "",
1482
+ env=env or {},
1466
1483
  )
1467
1484
  _ = await command_router_client.exec_start(start_req)
1468
1485
 
@@ -584,6 +584,7 @@ class _Sandbox(modal._object._Object):
584
584
  timeout: typing.Optional[int] = None,
585
585
  workdir: typing.Optional[str] = None,
586
586
  secret_ids: typing.Optional[collections.abc.Collection[str]] = None,
587
+ env: typing.Optional[dict[str, str]] = None,
587
588
  text: bool = True,
588
589
  bufsize: typing.Literal[-1, 1] = -1,
589
590
  runtime_debug: bool = False,
@@ -1814,6 +1815,7 @@ class Sandbox(modal.object.Object):
1814
1815
  timeout: typing.Optional[int] = None,
1815
1816
  workdir: typing.Optional[str] = None,
1816
1817
  secret_ids: typing.Optional[collections.abc.Collection[str]] = None,
1818
+ env: typing.Optional[dict[str, str]] = None,
1817
1819
  text: bool = True,
1818
1820
  bufsize: typing.Literal[-1, 1] = -1,
1819
1821
  runtime_debug: bool = False,
@@ -1836,6 +1838,7 @@ class Sandbox(modal.object.Object):
1836
1838
  timeout: typing.Optional[int] = None,
1837
1839
  workdir: typing.Optional[str] = None,
1838
1840
  secret_ids: typing.Optional[collections.abc.Collection[str]] = None,
1841
+ env: typing.Optional[dict[str, str]] = None,
1839
1842
  text: bool = True,
1840
1843
  bufsize: typing.Literal[-1, 1] = -1,
1841
1844
  runtime_debug: bool = False,
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: modal
3
- Version: 1.4.2.dev11
3
+ Version: 1.4.2.dev13
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.4.2.dev11"
4
+ __version__ = "1.4.2.dev13"
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes