modal 1.2.3.dev6__tar.gz → 1.2.3.dev7__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 (200) hide show
  1. {modal-1.2.3.dev6 → modal-1.2.3.dev7}/PKG-INFO +1 -1
  2. {modal-1.2.3.dev6 → modal-1.2.3.dev7}/modal/cli/run.py +23 -0
  3. {modal-1.2.3.dev6 → modal-1.2.3.dev7}/modal/client.pyi +2 -2
  4. {modal-1.2.3.dev6 → modal-1.2.3.dev7}/modal.egg-info/PKG-INFO +1 -1
  5. {modal-1.2.3.dev6 → modal-1.2.3.dev7}/modal_version/__init__.py +1 -1
  6. {modal-1.2.3.dev6 → modal-1.2.3.dev7}/LICENSE +0 -0
  7. {modal-1.2.3.dev6 → modal-1.2.3.dev7}/README.md +0 -0
  8. {modal-1.2.3.dev6 → modal-1.2.3.dev7}/modal/__init__.py +0 -0
  9. {modal-1.2.3.dev6 → modal-1.2.3.dev7}/modal/__main__.py +0 -0
  10. {modal-1.2.3.dev6 → modal-1.2.3.dev7}/modal/_billing.py +0 -0
  11. {modal-1.2.3.dev6 → modal-1.2.3.dev7}/modal/_clustered_functions.py +0 -0
  12. {modal-1.2.3.dev6 → modal-1.2.3.dev7}/modal/_clustered_functions.pyi +0 -0
  13. {modal-1.2.3.dev6 → modal-1.2.3.dev7}/modal/_container_entrypoint.py +0 -0
  14. {modal-1.2.3.dev6 → modal-1.2.3.dev7}/modal/_functions.py +0 -0
  15. {modal-1.2.3.dev6 → modal-1.2.3.dev7}/modal/_grpc_client.py +0 -0
  16. {modal-1.2.3.dev6 → modal-1.2.3.dev7}/modal/_ipython.py +0 -0
  17. {modal-1.2.3.dev6 → modal-1.2.3.dev7}/modal/_load_context.py +0 -0
  18. {modal-1.2.3.dev6 → modal-1.2.3.dev7}/modal/_location.py +0 -0
  19. {modal-1.2.3.dev6 → modal-1.2.3.dev7}/modal/_object.py +0 -0
  20. {modal-1.2.3.dev6 → modal-1.2.3.dev7}/modal/_output.py +0 -0
  21. {modal-1.2.3.dev6 → modal-1.2.3.dev7}/modal/_partial_function.py +0 -0
  22. {modal-1.2.3.dev6 → modal-1.2.3.dev7}/modal/_pty.py +0 -0
  23. {modal-1.2.3.dev6 → modal-1.2.3.dev7}/modal/_resolver.py +0 -0
  24. {modal-1.2.3.dev6 → modal-1.2.3.dev7}/modal/_resources.py +0 -0
  25. {modal-1.2.3.dev6 → modal-1.2.3.dev7}/modal/_runtime/__init__.py +0 -0
  26. {modal-1.2.3.dev6 → modal-1.2.3.dev7}/modal/_runtime/asgi.py +0 -0
  27. {modal-1.2.3.dev6 → modal-1.2.3.dev7}/modal/_runtime/container_io_manager.py +0 -0
  28. {modal-1.2.3.dev6 → modal-1.2.3.dev7}/modal/_runtime/container_io_manager.pyi +0 -0
  29. {modal-1.2.3.dev6 → modal-1.2.3.dev7}/modal/_runtime/execution_context.py +0 -0
  30. {modal-1.2.3.dev6 → modal-1.2.3.dev7}/modal/_runtime/execution_context.pyi +0 -0
  31. {modal-1.2.3.dev6 → modal-1.2.3.dev7}/modal/_runtime/gpu_memory_snapshot.py +0 -0
  32. {modal-1.2.3.dev6 → modal-1.2.3.dev7}/modal/_runtime/telemetry.py +0 -0
  33. {modal-1.2.3.dev6 → modal-1.2.3.dev7}/modal/_runtime/user_code_imports.py +0 -0
  34. {modal-1.2.3.dev6 → modal-1.2.3.dev7}/modal/_serialization.py +0 -0
  35. {modal-1.2.3.dev6 → modal-1.2.3.dev7}/modal/_traceback.py +0 -0
  36. {modal-1.2.3.dev6 → modal-1.2.3.dev7}/modal/_tunnel.py +0 -0
  37. {modal-1.2.3.dev6 → modal-1.2.3.dev7}/modal/_tunnel.pyi +0 -0
  38. {modal-1.2.3.dev6 → modal-1.2.3.dev7}/modal/_type_manager.py +0 -0
  39. {modal-1.2.3.dev6 → modal-1.2.3.dev7}/modal/_utils/__init__.py +0 -0
  40. {modal-1.2.3.dev6 → modal-1.2.3.dev7}/modal/_utils/app_utils.py +0 -0
  41. {modal-1.2.3.dev6 → modal-1.2.3.dev7}/modal/_utils/async_utils.py +0 -0
  42. {modal-1.2.3.dev6 → modal-1.2.3.dev7}/modal/_utils/auth_token_manager.py +0 -0
  43. {modal-1.2.3.dev6 → modal-1.2.3.dev7}/modal/_utils/blob_utils.py +0 -0
  44. {modal-1.2.3.dev6 → modal-1.2.3.dev7}/modal/_utils/bytes_io_segment_payload.py +0 -0
  45. {modal-1.2.3.dev6 → modal-1.2.3.dev7}/modal/_utils/deprecation.py +0 -0
  46. {modal-1.2.3.dev6 → modal-1.2.3.dev7}/modal/_utils/docker_utils.py +0 -0
  47. {modal-1.2.3.dev6 → modal-1.2.3.dev7}/modal/_utils/function_utils.py +0 -0
  48. {modal-1.2.3.dev6 → modal-1.2.3.dev7}/modal/_utils/git_utils.py +0 -0
  49. {modal-1.2.3.dev6 → modal-1.2.3.dev7}/modal/_utils/grpc_testing.py +0 -0
  50. {modal-1.2.3.dev6 → modal-1.2.3.dev7}/modal/_utils/grpc_utils.py +0 -0
  51. {modal-1.2.3.dev6 → modal-1.2.3.dev7}/modal/_utils/hash_utils.py +0 -0
  52. {modal-1.2.3.dev6 → modal-1.2.3.dev7}/modal/_utils/http_utils.py +0 -0
  53. {modal-1.2.3.dev6 → modal-1.2.3.dev7}/modal/_utils/jwt_utils.py +0 -0
  54. {modal-1.2.3.dev6 → modal-1.2.3.dev7}/modal/_utils/logger.py +0 -0
  55. {modal-1.2.3.dev6 → modal-1.2.3.dev7}/modal/_utils/mount_utils.py +0 -0
  56. {modal-1.2.3.dev6 → modal-1.2.3.dev7}/modal/_utils/name_utils.py +0 -0
  57. {modal-1.2.3.dev6 → modal-1.2.3.dev7}/modal/_utils/package_utils.py +0 -0
  58. {modal-1.2.3.dev6 → modal-1.2.3.dev7}/modal/_utils/pattern_utils.py +0 -0
  59. {modal-1.2.3.dev6 → modal-1.2.3.dev7}/modal/_utils/rand_pb_testing.py +0 -0
  60. {modal-1.2.3.dev6 → modal-1.2.3.dev7}/modal/_utils/shell_utils.py +0 -0
  61. {modal-1.2.3.dev6 → modal-1.2.3.dev7}/modal/_utils/task_command_router_client.py +0 -0
  62. {modal-1.2.3.dev6 → modal-1.2.3.dev7}/modal/_utils/time_utils.py +0 -0
  63. {modal-1.2.3.dev6 → modal-1.2.3.dev7}/modal/_vendor/__init__.py +0 -0
  64. {modal-1.2.3.dev6 → modal-1.2.3.dev7}/modal/_vendor/a2wsgi_wsgi.py +0 -0
  65. {modal-1.2.3.dev6 → modal-1.2.3.dev7}/modal/_vendor/cloudpickle.py +0 -0
  66. {modal-1.2.3.dev6 → modal-1.2.3.dev7}/modal/_vendor/tblib.py +0 -0
  67. {modal-1.2.3.dev6 → modal-1.2.3.dev7}/modal/_watcher.py +0 -0
  68. {modal-1.2.3.dev6 → modal-1.2.3.dev7}/modal/app.py +0 -0
  69. {modal-1.2.3.dev6 → modal-1.2.3.dev7}/modal/app.pyi +0 -0
  70. {modal-1.2.3.dev6 → modal-1.2.3.dev7}/modal/billing.py +0 -0
  71. {modal-1.2.3.dev6 → modal-1.2.3.dev7}/modal/builder/2023.12.312.txt +0 -0
  72. {modal-1.2.3.dev6 → modal-1.2.3.dev7}/modal/builder/2023.12.txt +0 -0
  73. {modal-1.2.3.dev6 → modal-1.2.3.dev7}/modal/builder/2024.04.txt +0 -0
  74. {modal-1.2.3.dev6 → modal-1.2.3.dev7}/modal/builder/2024.10.txt +0 -0
  75. {modal-1.2.3.dev6 → modal-1.2.3.dev7}/modal/builder/2025.06.txt +0 -0
  76. {modal-1.2.3.dev6 → modal-1.2.3.dev7}/modal/builder/PREVIEW.txt +0 -0
  77. {modal-1.2.3.dev6 → modal-1.2.3.dev7}/modal/builder/README.md +0 -0
  78. {modal-1.2.3.dev6 → modal-1.2.3.dev7}/modal/builder/base-images.json +0 -0
  79. {modal-1.2.3.dev6 → modal-1.2.3.dev7}/modal/call_graph.py +0 -0
  80. {modal-1.2.3.dev6 → modal-1.2.3.dev7}/modal/cli/__init__.py +0 -0
  81. {modal-1.2.3.dev6 → modal-1.2.3.dev7}/modal/cli/_download.py +0 -0
  82. {modal-1.2.3.dev6 → modal-1.2.3.dev7}/modal/cli/_traceback.py +0 -0
  83. {modal-1.2.3.dev6 → modal-1.2.3.dev7}/modal/cli/app.py +0 -0
  84. {modal-1.2.3.dev6 → modal-1.2.3.dev7}/modal/cli/cluster.py +0 -0
  85. {modal-1.2.3.dev6 → modal-1.2.3.dev7}/modal/cli/config.py +0 -0
  86. {modal-1.2.3.dev6 → modal-1.2.3.dev7}/modal/cli/container.py +0 -0
  87. {modal-1.2.3.dev6 → modal-1.2.3.dev7}/modal/cli/dict.py +0 -0
  88. {modal-1.2.3.dev6 → modal-1.2.3.dev7}/modal/cli/entry_point.py +0 -0
  89. {modal-1.2.3.dev6 → modal-1.2.3.dev7}/modal/cli/environment.py +0 -0
  90. {modal-1.2.3.dev6 → modal-1.2.3.dev7}/modal/cli/import_refs.py +0 -0
  91. {modal-1.2.3.dev6 → modal-1.2.3.dev7}/modal/cli/launch.py +0 -0
  92. {modal-1.2.3.dev6 → modal-1.2.3.dev7}/modal/cli/network_file_system.py +0 -0
  93. {modal-1.2.3.dev6 → modal-1.2.3.dev7}/modal/cli/profile.py +0 -0
  94. {modal-1.2.3.dev6 → modal-1.2.3.dev7}/modal/cli/programs/__init__.py +0 -0
  95. {modal-1.2.3.dev6 → modal-1.2.3.dev7}/modal/cli/programs/launch_instance_ssh.py +0 -0
  96. {modal-1.2.3.dev6 → modal-1.2.3.dev7}/modal/cli/programs/run_jupyter.py +0 -0
  97. {modal-1.2.3.dev6 → modal-1.2.3.dev7}/modal/cli/programs/run_marimo.py +0 -0
  98. {modal-1.2.3.dev6 → modal-1.2.3.dev7}/modal/cli/programs/vscode.py +0 -0
  99. {modal-1.2.3.dev6 → modal-1.2.3.dev7}/modal/cli/queues.py +0 -0
  100. {modal-1.2.3.dev6 → modal-1.2.3.dev7}/modal/cli/secret.py +0 -0
  101. {modal-1.2.3.dev6 → modal-1.2.3.dev7}/modal/cli/token.py +0 -0
  102. {modal-1.2.3.dev6 → modal-1.2.3.dev7}/modal/cli/utils.py +0 -0
  103. {modal-1.2.3.dev6 → modal-1.2.3.dev7}/modal/cli/volume.py +0 -0
  104. {modal-1.2.3.dev6 → modal-1.2.3.dev7}/modal/client.py +0 -0
  105. {modal-1.2.3.dev6 → modal-1.2.3.dev7}/modal/cloud_bucket_mount.py +0 -0
  106. {modal-1.2.3.dev6 → modal-1.2.3.dev7}/modal/cloud_bucket_mount.pyi +0 -0
  107. {modal-1.2.3.dev6 → modal-1.2.3.dev7}/modal/cls.py +0 -0
  108. {modal-1.2.3.dev6 → modal-1.2.3.dev7}/modal/cls.pyi +0 -0
  109. {modal-1.2.3.dev6 → modal-1.2.3.dev7}/modal/config.py +0 -0
  110. {modal-1.2.3.dev6 → modal-1.2.3.dev7}/modal/container_process.py +0 -0
  111. {modal-1.2.3.dev6 → modal-1.2.3.dev7}/modal/container_process.pyi +0 -0
  112. {modal-1.2.3.dev6 → modal-1.2.3.dev7}/modal/dict.py +0 -0
  113. {modal-1.2.3.dev6 → modal-1.2.3.dev7}/modal/dict.pyi +0 -0
  114. {modal-1.2.3.dev6 → modal-1.2.3.dev7}/modal/environments.py +0 -0
  115. {modal-1.2.3.dev6 → modal-1.2.3.dev7}/modal/environments.pyi +0 -0
  116. {modal-1.2.3.dev6 → modal-1.2.3.dev7}/modal/exception.py +0 -0
  117. {modal-1.2.3.dev6 → modal-1.2.3.dev7}/modal/experimental/__init__.py +0 -0
  118. {modal-1.2.3.dev6 → modal-1.2.3.dev7}/modal/experimental/flash.py +0 -0
  119. {modal-1.2.3.dev6 → modal-1.2.3.dev7}/modal/experimental/flash.pyi +0 -0
  120. {modal-1.2.3.dev6 → modal-1.2.3.dev7}/modal/experimental/ipython.py +0 -0
  121. {modal-1.2.3.dev6 → modal-1.2.3.dev7}/modal/file_io.py +0 -0
  122. {modal-1.2.3.dev6 → modal-1.2.3.dev7}/modal/file_io.pyi +0 -0
  123. {modal-1.2.3.dev6 → modal-1.2.3.dev7}/modal/file_pattern_matcher.py +0 -0
  124. {modal-1.2.3.dev6 → modal-1.2.3.dev7}/modal/functions.py +0 -0
  125. {modal-1.2.3.dev6 → modal-1.2.3.dev7}/modal/functions.pyi +0 -0
  126. {modal-1.2.3.dev6 → modal-1.2.3.dev7}/modal/gpu.py +0 -0
  127. {modal-1.2.3.dev6 → modal-1.2.3.dev7}/modal/image.py +0 -0
  128. {modal-1.2.3.dev6 → modal-1.2.3.dev7}/modal/image.pyi +0 -0
  129. {modal-1.2.3.dev6 → modal-1.2.3.dev7}/modal/io_streams.py +0 -0
  130. {modal-1.2.3.dev6 → modal-1.2.3.dev7}/modal/io_streams.pyi +0 -0
  131. {modal-1.2.3.dev6 → modal-1.2.3.dev7}/modal/mount.py +0 -0
  132. {modal-1.2.3.dev6 → modal-1.2.3.dev7}/modal/mount.pyi +0 -0
  133. {modal-1.2.3.dev6 → modal-1.2.3.dev7}/modal/network_file_system.py +0 -0
  134. {modal-1.2.3.dev6 → modal-1.2.3.dev7}/modal/network_file_system.pyi +0 -0
  135. {modal-1.2.3.dev6 → modal-1.2.3.dev7}/modal/object.py +0 -0
  136. {modal-1.2.3.dev6 → modal-1.2.3.dev7}/modal/object.pyi +0 -0
  137. {modal-1.2.3.dev6 → modal-1.2.3.dev7}/modal/output.py +0 -0
  138. {modal-1.2.3.dev6 → modal-1.2.3.dev7}/modal/parallel_map.py +0 -0
  139. {modal-1.2.3.dev6 → modal-1.2.3.dev7}/modal/parallel_map.pyi +0 -0
  140. {modal-1.2.3.dev6 → modal-1.2.3.dev7}/modal/partial_function.py +0 -0
  141. {modal-1.2.3.dev6 → modal-1.2.3.dev7}/modal/partial_function.pyi +0 -0
  142. {modal-1.2.3.dev6 → modal-1.2.3.dev7}/modal/proxy.py +0 -0
  143. {modal-1.2.3.dev6 → modal-1.2.3.dev7}/modal/proxy.pyi +0 -0
  144. {modal-1.2.3.dev6 → modal-1.2.3.dev7}/modal/py.typed +0 -0
  145. {modal-1.2.3.dev6 → modal-1.2.3.dev7}/modal/queue.py +0 -0
  146. {modal-1.2.3.dev6 → modal-1.2.3.dev7}/modal/queue.pyi +0 -0
  147. {modal-1.2.3.dev6 → modal-1.2.3.dev7}/modal/retries.py +0 -0
  148. {modal-1.2.3.dev6 → modal-1.2.3.dev7}/modal/runner.py +0 -0
  149. {modal-1.2.3.dev6 → modal-1.2.3.dev7}/modal/runner.pyi +0 -0
  150. {modal-1.2.3.dev6 → modal-1.2.3.dev7}/modal/running_app.py +0 -0
  151. {modal-1.2.3.dev6 → modal-1.2.3.dev7}/modal/sandbox.py +0 -0
  152. {modal-1.2.3.dev6 → modal-1.2.3.dev7}/modal/sandbox.pyi +0 -0
  153. {modal-1.2.3.dev6 → modal-1.2.3.dev7}/modal/schedule.py +0 -0
  154. {modal-1.2.3.dev6 → modal-1.2.3.dev7}/modal/scheduler_placement.py +0 -0
  155. {modal-1.2.3.dev6 → modal-1.2.3.dev7}/modal/secret.py +0 -0
  156. {modal-1.2.3.dev6 → modal-1.2.3.dev7}/modal/secret.pyi +0 -0
  157. {modal-1.2.3.dev6 → modal-1.2.3.dev7}/modal/serving.py +0 -0
  158. {modal-1.2.3.dev6 → modal-1.2.3.dev7}/modal/serving.pyi +0 -0
  159. {modal-1.2.3.dev6 → modal-1.2.3.dev7}/modal/snapshot.py +0 -0
  160. {modal-1.2.3.dev6 → modal-1.2.3.dev7}/modal/snapshot.pyi +0 -0
  161. {modal-1.2.3.dev6 → modal-1.2.3.dev7}/modal/stream_type.py +0 -0
  162. {modal-1.2.3.dev6 → modal-1.2.3.dev7}/modal/token_flow.py +0 -0
  163. {modal-1.2.3.dev6 → modal-1.2.3.dev7}/modal/token_flow.pyi +0 -0
  164. {modal-1.2.3.dev6 → modal-1.2.3.dev7}/modal/volume.py +0 -0
  165. {modal-1.2.3.dev6 → modal-1.2.3.dev7}/modal/volume.pyi +0 -0
  166. {modal-1.2.3.dev6 → modal-1.2.3.dev7}/modal.egg-info/SOURCES.txt +0 -0
  167. {modal-1.2.3.dev6 → modal-1.2.3.dev7}/modal.egg-info/dependency_links.txt +0 -0
  168. {modal-1.2.3.dev6 → modal-1.2.3.dev7}/modal.egg-info/entry_points.txt +0 -0
  169. {modal-1.2.3.dev6 → modal-1.2.3.dev7}/modal.egg-info/requires.txt +0 -0
  170. {modal-1.2.3.dev6 → modal-1.2.3.dev7}/modal.egg-info/top_level.txt +0 -0
  171. {modal-1.2.3.dev6 → modal-1.2.3.dev7}/modal_docs/__init__.py +0 -0
  172. {modal-1.2.3.dev6 → modal-1.2.3.dev7}/modal_docs/gen_cli_docs.py +0 -0
  173. {modal-1.2.3.dev6 → modal-1.2.3.dev7}/modal_docs/gen_reference_docs.py +0 -0
  174. {modal-1.2.3.dev6 → modal-1.2.3.dev7}/modal_docs/mdmd/__init__.py +0 -0
  175. {modal-1.2.3.dev6 → modal-1.2.3.dev7}/modal_docs/mdmd/mdmd.py +0 -0
  176. {modal-1.2.3.dev6 → modal-1.2.3.dev7}/modal_docs/mdmd/signatures.py +0 -0
  177. {modal-1.2.3.dev6 → modal-1.2.3.dev7}/modal_proto/__init__.py +0 -0
  178. {modal-1.2.3.dev6 → modal-1.2.3.dev7}/modal_proto/api.proto +0 -0
  179. {modal-1.2.3.dev6 → modal-1.2.3.dev7}/modal_proto/api_grpc.py +0 -0
  180. {modal-1.2.3.dev6 → modal-1.2.3.dev7}/modal_proto/api_pb2.py +0 -0
  181. {modal-1.2.3.dev6 → modal-1.2.3.dev7}/modal_proto/api_pb2.pyi +0 -0
  182. {modal-1.2.3.dev6 → modal-1.2.3.dev7}/modal_proto/api_pb2_grpc.py +0 -0
  183. {modal-1.2.3.dev6 → modal-1.2.3.dev7}/modal_proto/api_pb2_grpc.pyi +0 -0
  184. {modal-1.2.3.dev6 → modal-1.2.3.dev7}/modal_proto/modal_api_grpc.py +0 -0
  185. {modal-1.2.3.dev6 → modal-1.2.3.dev7}/modal_proto/py.typed +0 -0
  186. {modal-1.2.3.dev6 → modal-1.2.3.dev7}/modal_proto/sandbox_router.proto +0 -0
  187. {modal-1.2.3.dev6 → modal-1.2.3.dev7}/modal_proto/sandbox_router_grpc.py +0 -0
  188. {modal-1.2.3.dev6 → modal-1.2.3.dev7}/modal_proto/sandbox_router_pb2.py +0 -0
  189. {modal-1.2.3.dev6 → modal-1.2.3.dev7}/modal_proto/sandbox_router_pb2.pyi +0 -0
  190. {modal-1.2.3.dev6 → modal-1.2.3.dev7}/modal_proto/sandbox_router_pb2_grpc.py +0 -0
  191. {modal-1.2.3.dev6 → modal-1.2.3.dev7}/modal_proto/sandbox_router_pb2_grpc.pyi +0 -0
  192. {modal-1.2.3.dev6 → modal-1.2.3.dev7}/modal_proto/task_command_router.proto +0 -0
  193. {modal-1.2.3.dev6 → modal-1.2.3.dev7}/modal_proto/task_command_router_grpc.py +0 -0
  194. {modal-1.2.3.dev6 → modal-1.2.3.dev7}/modal_proto/task_command_router_pb2.py +0 -0
  195. {modal-1.2.3.dev6 → modal-1.2.3.dev7}/modal_proto/task_command_router_pb2.pyi +0 -0
  196. {modal-1.2.3.dev6 → modal-1.2.3.dev7}/modal_proto/task_command_router_pb2_grpc.py +0 -0
  197. {modal-1.2.3.dev6 → modal-1.2.3.dev7}/modal_proto/task_command_router_pb2_grpc.pyi +0 -0
  198. {modal-1.2.3.dev6 → modal-1.2.3.dev7}/modal_version/__main__.py +0 -0
  199. {modal-1.2.3.dev6 → modal-1.2.3.dev7}/pyproject.toml +0 -0
  200. {modal-1.2.3.dev6 → modal-1.2.3.dev7}/setup.cfg +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: modal
3
- Version: 1.2.3.dev6
3
+ Version: 1.2.3.dev7
4
4
  Summary: Python client library for Modal
5
5
  Author-email: Modal Labs <support@modal.com>
6
6
  License: Apache-2.0
@@ -10,6 +10,7 @@ import time
10
10
  import typing
11
11
  from dataclasses import dataclass
12
12
  from functools import partial
13
+ from pathlib import Path, PurePosixPath
13
14
  from typing import Any, Callable, Optional
14
15
 
15
16
  import click
@@ -25,6 +26,7 @@ from ..environments import ensure_env
25
26
  from ..exception import ExecutionError, InvalidError, NotFoundError, _CliUserExecutionError
26
27
  from ..functions import Function
27
28
  from ..image import Image
29
+ from ..mount import _Mount
28
30
  from ..output import enable_output
29
31
  from ..runner import deploy_app, interactive_shell, run_app
30
32
  from ..secret import Secret
@@ -542,6 +544,13 @@ def shell(
542
544
  " Can be used multiple times."
543
545
  ),
544
546
  ),
547
+ add_local: Optional[list[str]] = typer.Option(
548
+ default=None,
549
+ help=(
550
+ "Local file or directory to mount inside the shell at `/mnt/{basename}` (if not using REF)."
551
+ " Can be used multiple times."
552
+ ),
553
+ ),
545
554
  secret: Optional[list[str]] = typer.Option(
546
555
  default=None,
547
556
  help=("Name of a `modal.Secret` to mount inside the shell (if not using REF). Can be used multiple times."),
@@ -692,9 +701,23 @@ def shell(
692
701
  modal_image = Image.from_registry(image, add_python=add_python) if image else None
693
702
  volumes = {} if volume is None else {f"/mnt/{vol}": Volume.from_name(vol) for vol in volume}
694
703
  secrets = [] if secret is None else [Secret.from_name(s) for s in secret]
704
+
705
+ mounts = []
706
+ if add_local:
707
+ for local_path_str in add_local:
708
+ local_path = Path(local_path_str).expanduser().resolve()
709
+ remote_path = PurePosixPath(f"/mnt/{local_path.name}")
710
+
711
+ if local_path.is_dir():
712
+ m = _Mount._from_local_dir(local_path, remote_path=remote_path)
713
+ else:
714
+ m = _Mount._from_local_file(local_path, remote_path=remote_path)
715
+ mounts.append(m)
716
+
695
717
  start_shell = partial(
696
718
  interactive_shell,
697
719
  image=modal_image,
720
+ mounts=mounts,
698
721
  cpu=cpu,
699
722
  memory=memory,
700
723
  gpu=gpu,
@@ -33,7 +33,7 @@ class _Client:
33
33
  server_url: str,
34
34
  client_type: int,
35
35
  credentials: typing.Optional[tuple[str, str]],
36
- version: str = "1.2.3.dev6",
36
+ version: str = "1.2.3.dev7",
37
37
  ):
38
38
  """mdmd:hidden
39
39
  The Modal client object is not intended to be instantiated directly by users.
@@ -164,7 +164,7 @@ class Client:
164
164
  server_url: str,
165
165
  client_type: int,
166
166
  credentials: typing.Optional[tuple[str, str]],
167
- version: str = "1.2.3.dev6",
167
+ version: str = "1.2.3.dev7",
168
168
  ):
169
169
  """mdmd:hidden
170
170
  The Modal client object is not intended to be instantiated directly by users.
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: modal
3
- Version: 1.2.3.dev6
3
+ Version: 1.2.3.dev7
4
4
  Summary: Python client library for Modal
5
5
  Author-email: Modal Labs <support@modal.com>
6
6
  License: Apache-2.0
@@ -1,4 +1,4 @@
1
1
  # Copyright Modal Labs 2025
2
2
  """Supplies the current version of the modal client library."""
3
3
 
4
- __version__ = "1.2.3.dev6"
4
+ __version__ = "1.2.3.dev7"
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
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