modAL 1.2.3.dev6__tar.gz → 1.2.3.dev8__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.dev8}/PKG-INFO +1 -1
  2. {modal-1.2.3.dev6 → modal-1.2.3.dev8}/modal/_partial_function.py +1 -1
  3. {modal-1.2.3.dev6 → modal-1.2.3.dev8}/modal/cli/run.py +23 -0
  4. {modal-1.2.3.dev6 → modal-1.2.3.dev8}/modal/client.pyi +2 -2
  5. {modal-1.2.3.dev6 → modal-1.2.3.dev8}/modal/cls.py +1 -1
  6. {modal-1.2.3.dev6 → modal-1.2.3.dev8}/modal/functions.pyi +6 -6
  7. {modal-1.2.3.dev6 → modal-1.2.3.dev8}/modal.egg-info/PKG-INFO +1 -1
  8. {modal-1.2.3.dev6 → modal-1.2.3.dev8}/modal_version/__init__.py +1 -1
  9. {modal-1.2.3.dev6 → modal-1.2.3.dev8}/LICENSE +0 -0
  10. {modal-1.2.3.dev6 → modal-1.2.3.dev8}/README.md +0 -0
  11. {modal-1.2.3.dev6 → modal-1.2.3.dev8}/modal/__init__.py +0 -0
  12. {modal-1.2.3.dev6 → modal-1.2.3.dev8}/modal/__main__.py +0 -0
  13. {modal-1.2.3.dev6 → modal-1.2.3.dev8}/modal/_billing.py +0 -0
  14. {modal-1.2.3.dev6 → modal-1.2.3.dev8}/modal/_clustered_functions.py +0 -0
  15. {modal-1.2.3.dev6 → modal-1.2.3.dev8}/modal/_clustered_functions.pyi +0 -0
  16. {modal-1.2.3.dev6 → modal-1.2.3.dev8}/modal/_container_entrypoint.py +0 -0
  17. {modal-1.2.3.dev6 → modal-1.2.3.dev8}/modal/_functions.py +0 -0
  18. {modal-1.2.3.dev6 → modal-1.2.3.dev8}/modal/_grpc_client.py +0 -0
  19. {modal-1.2.3.dev6 → modal-1.2.3.dev8}/modal/_ipython.py +0 -0
  20. {modal-1.2.3.dev6 → modal-1.2.3.dev8}/modal/_load_context.py +0 -0
  21. {modal-1.2.3.dev6 → modal-1.2.3.dev8}/modal/_location.py +0 -0
  22. {modal-1.2.3.dev6 → modal-1.2.3.dev8}/modal/_object.py +0 -0
  23. {modal-1.2.3.dev6 → modal-1.2.3.dev8}/modal/_output.py +0 -0
  24. {modal-1.2.3.dev6 → modal-1.2.3.dev8}/modal/_pty.py +0 -0
  25. {modal-1.2.3.dev6 → modal-1.2.3.dev8}/modal/_resolver.py +0 -0
  26. {modal-1.2.3.dev6 → modal-1.2.3.dev8}/modal/_resources.py +0 -0
  27. {modal-1.2.3.dev6 → modal-1.2.3.dev8}/modal/_runtime/__init__.py +0 -0
  28. {modal-1.2.3.dev6 → modal-1.2.3.dev8}/modal/_runtime/asgi.py +0 -0
  29. {modal-1.2.3.dev6 → modal-1.2.3.dev8}/modal/_runtime/container_io_manager.py +0 -0
  30. {modal-1.2.3.dev6 → modal-1.2.3.dev8}/modal/_runtime/container_io_manager.pyi +0 -0
  31. {modal-1.2.3.dev6 → modal-1.2.3.dev8}/modal/_runtime/execution_context.py +0 -0
  32. {modal-1.2.3.dev6 → modal-1.2.3.dev8}/modal/_runtime/execution_context.pyi +0 -0
  33. {modal-1.2.3.dev6 → modal-1.2.3.dev8}/modal/_runtime/gpu_memory_snapshot.py +0 -0
  34. {modal-1.2.3.dev6 → modal-1.2.3.dev8}/modal/_runtime/telemetry.py +0 -0
  35. {modal-1.2.3.dev6 → modal-1.2.3.dev8}/modal/_runtime/user_code_imports.py +0 -0
  36. {modal-1.2.3.dev6 → modal-1.2.3.dev8}/modal/_serialization.py +0 -0
  37. {modal-1.2.3.dev6 → modal-1.2.3.dev8}/modal/_traceback.py +0 -0
  38. {modal-1.2.3.dev6 → modal-1.2.3.dev8}/modal/_tunnel.py +0 -0
  39. {modal-1.2.3.dev6 → modal-1.2.3.dev8}/modal/_tunnel.pyi +0 -0
  40. {modal-1.2.3.dev6 → modal-1.2.3.dev8}/modal/_type_manager.py +0 -0
  41. {modal-1.2.3.dev6 → modal-1.2.3.dev8}/modal/_utils/__init__.py +0 -0
  42. {modal-1.2.3.dev6 → modal-1.2.3.dev8}/modal/_utils/app_utils.py +0 -0
  43. {modal-1.2.3.dev6 → modal-1.2.3.dev8}/modal/_utils/async_utils.py +0 -0
  44. {modal-1.2.3.dev6 → modal-1.2.3.dev8}/modal/_utils/auth_token_manager.py +0 -0
  45. {modal-1.2.3.dev6 → modal-1.2.3.dev8}/modal/_utils/blob_utils.py +0 -0
  46. {modal-1.2.3.dev6 → modal-1.2.3.dev8}/modal/_utils/bytes_io_segment_payload.py +0 -0
  47. {modal-1.2.3.dev6 → modal-1.2.3.dev8}/modal/_utils/deprecation.py +0 -0
  48. {modal-1.2.3.dev6 → modal-1.2.3.dev8}/modal/_utils/docker_utils.py +0 -0
  49. {modal-1.2.3.dev6 → modal-1.2.3.dev8}/modal/_utils/function_utils.py +0 -0
  50. {modal-1.2.3.dev6 → modal-1.2.3.dev8}/modal/_utils/git_utils.py +0 -0
  51. {modal-1.2.3.dev6 → modal-1.2.3.dev8}/modal/_utils/grpc_testing.py +0 -0
  52. {modal-1.2.3.dev6 → modal-1.2.3.dev8}/modal/_utils/grpc_utils.py +0 -0
  53. {modal-1.2.3.dev6 → modal-1.2.3.dev8}/modal/_utils/hash_utils.py +0 -0
  54. {modal-1.2.3.dev6 → modal-1.2.3.dev8}/modal/_utils/http_utils.py +0 -0
  55. {modal-1.2.3.dev6 → modal-1.2.3.dev8}/modal/_utils/jwt_utils.py +0 -0
  56. {modal-1.2.3.dev6 → modal-1.2.3.dev8}/modal/_utils/logger.py +0 -0
  57. {modal-1.2.3.dev6 → modal-1.2.3.dev8}/modal/_utils/mount_utils.py +0 -0
  58. {modal-1.2.3.dev6 → modal-1.2.3.dev8}/modal/_utils/name_utils.py +0 -0
  59. {modal-1.2.3.dev6 → modal-1.2.3.dev8}/modal/_utils/package_utils.py +0 -0
  60. {modal-1.2.3.dev6 → modal-1.2.3.dev8}/modal/_utils/pattern_utils.py +0 -0
  61. {modal-1.2.3.dev6 → modal-1.2.3.dev8}/modal/_utils/rand_pb_testing.py +0 -0
  62. {modal-1.2.3.dev6 → modal-1.2.3.dev8}/modal/_utils/shell_utils.py +0 -0
  63. {modal-1.2.3.dev6 → modal-1.2.3.dev8}/modal/_utils/task_command_router_client.py +0 -0
  64. {modal-1.2.3.dev6 → modal-1.2.3.dev8}/modal/_utils/time_utils.py +0 -0
  65. {modal-1.2.3.dev6 → modal-1.2.3.dev8}/modal/_vendor/__init__.py +0 -0
  66. {modal-1.2.3.dev6 → modal-1.2.3.dev8}/modal/_vendor/a2wsgi_wsgi.py +0 -0
  67. {modal-1.2.3.dev6 → modal-1.2.3.dev8}/modal/_vendor/cloudpickle.py +0 -0
  68. {modal-1.2.3.dev6 → modal-1.2.3.dev8}/modal/_vendor/tblib.py +0 -0
  69. {modal-1.2.3.dev6 → modal-1.2.3.dev8}/modal/_watcher.py +0 -0
  70. {modal-1.2.3.dev6 → modal-1.2.3.dev8}/modal/app.py +0 -0
  71. {modal-1.2.3.dev6 → modal-1.2.3.dev8}/modal/app.pyi +0 -0
  72. {modal-1.2.3.dev6 → modal-1.2.3.dev8}/modal/billing.py +0 -0
  73. {modal-1.2.3.dev6 → modal-1.2.3.dev8}/modal/builder/2023.12.312.txt +0 -0
  74. {modal-1.2.3.dev6 → modal-1.2.3.dev8}/modal/builder/2023.12.txt +0 -0
  75. {modal-1.2.3.dev6 → modal-1.2.3.dev8}/modal/builder/2024.04.txt +0 -0
  76. {modal-1.2.3.dev6 → modal-1.2.3.dev8}/modal/builder/2024.10.txt +0 -0
  77. {modal-1.2.3.dev6 → modal-1.2.3.dev8}/modal/builder/2025.06.txt +0 -0
  78. {modal-1.2.3.dev6 → modal-1.2.3.dev8}/modal/builder/PREVIEW.txt +0 -0
  79. {modal-1.2.3.dev6 → modal-1.2.3.dev8}/modal/builder/README.md +0 -0
  80. {modal-1.2.3.dev6 → modal-1.2.3.dev8}/modal/builder/base-images.json +0 -0
  81. {modal-1.2.3.dev6 → modal-1.2.3.dev8}/modal/call_graph.py +0 -0
  82. {modal-1.2.3.dev6 → modal-1.2.3.dev8}/modal/cli/__init__.py +0 -0
  83. {modal-1.2.3.dev6 → modal-1.2.3.dev8}/modal/cli/_download.py +0 -0
  84. {modal-1.2.3.dev6 → modal-1.2.3.dev8}/modal/cli/_traceback.py +0 -0
  85. {modal-1.2.3.dev6 → modal-1.2.3.dev8}/modal/cli/app.py +0 -0
  86. {modal-1.2.3.dev6 → modal-1.2.3.dev8}/modal/cli/cluster.py +0 -0
  87. {modal-1.2.3.dev6 → modal-1.2.3.dev8}/modal/cli/config.py +0 -0
  88. {modal-1.2.3.dev6 → modal-1.2.3.dev8}/modal/cli/container.py +0 -0
  89. {modal-1.2.3.dev6 → modal-1.2.3.dev8}/modal/cli/dict.py +0 -0
  90. {modal-1.2.3.dev6 → modal-1.2.3.dev8}/modal/cli/entry_point.py +0 -0
  91. {modal-1.2.3.dev6 → modal-1.2.3.dev8}/modal/cli/environment.py +0 -0
  92. {modal-1.2.3.dev6 → modal-1.2.3.dev8}/modal/cli/import_refs.py +0 -0
  93. {modal-1.2.3.dev6 → modal-1.2.3.dev8}/modal/cli/launch.py +0 -0
  94. {modal-1.2.3.dev6 → modal-1.2.3.dev8}/modal/cli/network_file_system.py +0 -0
  95. {modal-1.2.3.dev6 → modal-1.2.3.dev8}/modal/cli/profile.py +0 -0
  96. {modal-1.2.3.dev6 → modal-1.2.3.dev8}/modal/cli/programs/__init__.py +0 -0
  97. {modal-1.2.3.dev6 → modal-1.2.3.dev8}/modal/cli/programs/launch_instance_ssh.py +0 -0
  98. {modal-1.2.3.dev6 → modal-1.2.3.dev8}/modal/cli/programs/run_jupyter.py +0 -0
  99. {modal-1.2.3.dev6 → modal-1.2.3.dev8}/modal/cli/programs/run_marimo.py +0 -0
  100. {modal-1.2.3.dev6 → modal-1.2.3.dev8}/modal/cli/programs/vscode.py +0 -0
  101. {modal-1.2.3.dev6 → modal-1.2.3.dev8}/modal/cli/queues.py +0 -0
  102. {modal-1.2.3.dev6 → modal-1.2.3.dev8}/modal/cli/secret.py +0 -0
  103. {modal-1.2.3.dev6 → modal-1.2.3.dev8}/modal/cli/token.py +0 -0
  104. {modal-1.2.3.dev6 → modal-1.2.3.dev8}/modal/cli/utils.py +0 -0
  105. {modal-1.2.3.dev6 → modal-1.2.3.dev8}/modal/cli/volume.py +0 -0
  106. {modal-1.2.3.dev6 → modal-1.2.3.dev8}/modal/client.py +0 -0
  107. {modal-1.2.3.dev6 → modal-1.2.3.dev8}/modal/cloud_bucket_mount.py +0 -0
  108. {modal-1.2.3.dev6 → modal-1.2.3.dev8}/modal/cloud_bucket_mount.pyi +0 -0
  109. {modal-1.2.3.dev6 → modal-1.2.3.dev8}/modal/cls.pyi +0 -0
  110. {modal-1.2.3.dev6 → modal-1.2.3.dev8}/modal/config.py +0 -0
  111. {modal-1.2.3.dev6 → modal-1.2.3.dev8}/modal/container_process.py +0 -0
  112. {modal-1.2.3.dev6 → modal-1.2.3.dev8}/modal/container_process.pyi +0 -0
  113. {modal-1.2.3.dev6 → modal-1.2.3.dev8}/modal/dict.py +0 -0
  114. {modal-1.2.3.dev6 → modal-1.2.3.dev8}/modal/dict.pyi +0 -0
  115. {modal-1.2.3.dev6 → modal-1.2.3.dev8}/modal/environments.py +0 -0
  116. {modal-1.2.3.dev6 → modal-1.2.3.dev8}/modal/environments.pyi +0 -0
  117. {modal-1.2.3.dev6 → modal-1.2.3.dev8}/modal/exception.py +0 -0
  118. {modal-1.2.3.dev6 → modal-1.2.3.dev8}/modal/experimental/__init__.py +0 -0
  119. {modal-1.2.3.dev6 → modal-1.2.3.dev8}/modal/experimental/flash.py +0 -0
  120. {modal-1.2.3.dev6 → modal-1.2.3.dev8}/modal/experimental/flash.pyi +0 -0
  121. {modal-1.2.3.dev6 → modal-1.2.3.dev8}/modal/experimental/ipython.py +0 -0
  122. {modal-1.2.3.dev6 → modal-1.2.3.dev8}/modal/file_io.py +0 -0
  123. {modal-1.2.3.dev6 → modal-1.2.3.dev8}/modal/file_io.pyi +0 -0
  124. {modal-1.2.3.dev6 → modal-1.2.3.dev8}/modal/file_pattern_matcher.py +0 -0
  125. {modal-1.2.3.dev6 → modal-1.2.3.dev8}/modal/functions.py +0 -0
  126. {modal-1.2.3.dev6 → modal-1.2.3.dev8}/modal/gpu.py +0 -0
  127. {modal-1.2.3.dev6 → modal-1.2.3.dev8}/modal/image.py +0 -0
  128. {modal-1.2.3.dev6 → modal-1.2.3.dev8}/modal/image.pyi +0 -0
  129. {modal-1.2.3.dev6 → modal-1.2.3.dev8}/modal/io_streams.py +0 -0
  130. {modal-1.2.3.dev6 → modal-1.2.3.dev8}/modal/io_streams.pyi +0 -0
  131. {modal-1.2.3.dev6 → modal-1.2.3.dev8}/modal/mount.py +0 -0
  132. {modal-1.2.3.dev6 → modal-1.2.3.dev8}/modal/mount.pyi +0 -0
  133. {modal-1.2.3.dev6 → modal-1.2.3.dev8}/modal/network_file_system.py +0 -0
  134. {modal-1.2.3.dev6 → modal-1.2.3.dev8}/modal/network_file_system.pyi +0 -0
  135. {modal-1.2.3.dev6 → modal-1.2.3.dev8}/modal/object.py +0 -0
  136. {modal-1.2.3.dev6 → modal-1.2.3.dev8}/modal/object.pyi +0 -0
  137. {modal-1.2.3.dev6 → modal-1.2.3.dev8}/modal/output.py +0 -0
  138. {modal-1.2.3.dev6 → modal-1.2.3.dev8}/modal/parallel_map.py +0 -0
  139. {modal-1.2.3.dev6 → modal-1.2.3.dev8}/modal/parallel_map.pyi +0 -0
  140. {modal-1.2.3.dev6 → modal-1.2.3.dev8}/modal/partial_function.py +0 -0
  141. {modal-1.2.3.dev6 → modal-1.2.3.dev8}/modal/partial_function.pyi +0 -0
  142. {modal-1.2.3.dev6 → modal-1.2.3.dev8}/modal/proxy.py +0 -0
  143. {modal-1.2.3.dev6 → modal-1.2.3.dev8}/modal/proxy.pyi +0 -0
  144. {modal-1.2.3.dev6 → modal-1.2.3.dev8}/modal/py.typed +0 -0
  145. {modal-1.2.3.dev6 → modal-1.2.3.dev8}/modal/queue.py +0 -0
  146. {modal-1.2.3.dev6 → modal-1.2.3.dev8}/modal/queue.pyi +0 -0
  147. {modal-1.2.3.dev6 → modal-1.2.3.dev8}/modal/retries.py +0 -0
  148. {modal-1.2.3.dev6 → modal-1.2.3.dev8}/modal/runner.py +0 -0
  149. {modal-1.2.3.dev6 → modal-1.2.3.dev8}/modal/runner.pyi +0 -0
  150. {modal-1.2.3.dev6 → modal-1.2.3.dev8}/modal/running_app.py +0 -0
  151. {modal-1.2.3.dev6 → modal-1.2.3.dev8}/modal/sandbox.py +0 -0
  152. {modal-1.2.3.dev6 → modal-1.2.3.dev8}/modal/sandbox.pyi +0 -0
  153. {modal-1.2.3.dev6 → modal-1.2.3.dev8}/modal/schedule.py +0 -0
  154. {modal-1.2.3.dev6 → modal-1.2.3.dev8}/modal/scheduler_placement.py +0 -0
  155. {modal-1.2.3.dev6 → modal-1.2.3.dev8}/modal/secret.py +0 -0
  156. {modal-1.2.3.dev6 → modal-1.2.3.dev8}/modal/secret.pyi +0 -0
  157. {modal-1.2.3.dev6 → modal-1.2.3.dev8}/modal/serving.py +0 -0
  158. {modal-1.2.3.dev6 → modal-1.2.3.dev8}/modal/serving.pyi +0 -0
  159. {modal-1.2.3.dev6 → modal-1.2.3.dev8}/modal/snapshot.py +0 -0
  160. {modal-1.2.3.dev6 → modal-1.2.3.dev8}/modal/snapshot.pyi +0 -0
  161. {modal-1.2.3.dev6 → modal-1.2.3.dev8}/modal/stream_type.py +0 -0
  162. {modal-1.2.3.dev6 → modal-1.2.3.dev8}/modal/token_flow.py +0 -0
  163. {modal-1.2.3.dev6 → modal-1.2.3.dev8}/modal/token_flow.pyi +0 -0
  164. {modal-1.2.3.dev6 → modal-1.2.3.dev8}/modal/volume.py +0 -0
  165. {modal-1.2.3.dev6 → modal-1.2.3.dev8}/modal/volume.pyi +0 -0
  166. {modal-1.2.3.dev6 → modal-1.2.3.dev8}/modal.egg-info/SOURCES.txt +0 -0
  167. {modal-1.2.3.dev6 → modal-1.2.3.dev8}/modal.egg-info/dependency_links.txt +0 -0
  168. {modal-1.2.3.dev6 → modal-1.2.3.dev8}/modal.egg-info/entry_points.txt +0 -0
  169. {modal-1.2.3.dev6 → modal-1.2.3.dev8}/modal.egg-info/requires.txt +0 -0
  170. {modal-1.2.3.dev6 → modal-1.2.3.dev8}/modal.egg-info/top_level.txt +0 -0
  171. {modal-1.2.3.dev6 → modal-1.2.3.dev8}/modal_docs/__init__.py +0 -0
  172. {modal-1.2.3.dev6 → modal-1.2.3.dev8}/modal_docs/gen_cli_docs.py +0 -0
  173. {modal-1.2.3.dev6 → modal-1.2.3.dev8}/modal_docs/gen_reference_docs.py +0 -0
  174. {modal-1.2.3.dev6 → modal-1.2.3.dev8}/modal_docs/mdmd/__init__.py +0 -0
  175. {modal-1.2.3.dev6 → modal-1.2.3.dev8}/modal_docs/mdmd/mdmd.py +0 -0
  176. {modal-1.2.3.dev6 → modal-1.2.3.dev8}/modal_docs/mdmd/signatures.py +0 -0
  177. {modal-1.2.3.dev6 → modal-1.2.3.dev8}/modal_proto/__init__.py +0 -0
  178. {modal-1.2.3.dev6 → modal-1.2.3.dev8}/modal_proto/api.proto +0 -0
  179. {modal-1.2.3.dev6 → modal-1.2.3.dev8}/modal_proto/api_grpc.py +0 -0
  180. {modal-1.2.3.dev6 → modal-1.2.3.dev8}/modal_proto/api_pb2.py +0 -0
  181. {modal-1.2.3.dev6 → modal-1.2.3.dev8}/modal_proto/api_pb2.pyi +0 -0
  182. {modal-1.2.3.dev6 → modal-1.2.3.dev8}/modal_proto/api_pb2_grpc.py +0 -0
  183. {modal-1.2.3.dev6 → modal-1.2.3.dev8}/modal_proto/api_pb2_grpc.pyi +0 -0
  184. {modal-1.2.3.dev6 → modal-1.2.3.dev8}/modal_proto/modal_api_grpc.py +0 -0
  185. {modal-1.2.3.dev6 → modal-1.2.3.dev8}/modal_proto/py.typed +0 -0
  186. {modal-1.2.3.dev6 → modal-1.2.3.dev8}/modal_proto/sandbox_router.proto +0 -0
  187. {modal-1.2.3.dev6 → modal-1.2.3.dev8}/modal_proto/sandbox_router_grpc.py +0 -0
  188. {modal-1.2.3.dev6 → modal-1.2.3.dev8}/modal_proto/sandbox_router_pb2.py +0 -0
  189. {modal-1.2.3.dev6 → modal-1.2.3.dev8}/modal_proto/sandbox_router_pb2.pyi +0 -0
  190. {modal-1.2.3.dev6 → modal-1.2.3.dev8}/modal_proto/sandbox_router_pb2_grpc.py +0 -0
  191. {modal-1.2.3.dev6 → modal-1.2.3.dev8}/modal_proto/sandbox_router_pb2_grpc.pyi +0 -0
  192. {modal-1.2.3.dev6 → modal-1.2.3.dev8}/modal_proto/task_command_router.proto +0 -0
  193. {modal-1.2.3.dev6 → modal-1.2.3.dev8}/modal_proto/task_command_router_grpc.py +0 -0
  194. {modal-1.2.3.dev6 → modal-1.2.3.dev8}/modal_proto/task_command_router_pb2.py +0 -0
  195. {modal-1.2.3.dev6 → modal-1.2.3.dev8}/modal_proto/task_command_router_pb2.pyi +0 -0
  196. {modal-1.2.3.dev6 → modal-1.2.3.dev8}/modal_proto/task_command_router_pb2_grpc.py +0 -0
  197. {modal-1.2.3.dev6 → modal-1.2.3.dev8}/modal_proto/task_command_router_pb2_grpc.pyi +0 -0
  198. {modal-1.2.3.dev6 → modal-1.2.3.dev8}/modal_version/__main__.py +0 -0
  199. {modal-1.2.3.dev6 → modal-1.2.3.dev8}/pyproject.toml +0 -0
  200. {modal-1.2.3.dev6 → modal-1.2.3.dev8}/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.dev8
4
4
  Summary: Python client library for Modal
5
5
  Author-email: Modal Labs <support@modal.com>
6
6
  License: Apache-2.0
@@ -219,7 +219,7 @@ class _PartialFunction(typing.Generic[P, ReturnType, OriginalReturnType]):
219
219
  # of the type PartialFunction and this descriptor would be triggered when accessing it,
220
220
  #
221
221
  # However, modal classes are *actually* Cls instances (which isn't reflected in type checkers
222
- # due to Python's lack of type chekcing intersection types), so at runtime the Cls instance would
222
+ # due to Python's lack of type checking intersection types), so at runtime the Cls instance would
223
223
  # use its __getattr__ rather than this descriptor.
224
224
  assert self.raw_f is not None # Should only be relevant in a method context
225
225
  k = self.raw_f.__name__
@@ -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.dev8",
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.dev8",
168
168
  ):
169
169
  """mdmd:hidden
170
170
  The Modal client object is not intended to be instantiated directly by users.
@@ -867,7 +867,7 @@ More information on class parameterization can be found here: https://modal.com/
867
867
 
868
868
  cls = _Cls._from_loader(
869
869
  _load_from_base,
870
- rep=f"{self._name}.with_concurrency(...)",
870
+ rep=f"{self._name}.with_batching(...)",
871
871
  is_another_app=True,
872
872
  deps=_deps,
873
873
  load_context_overrides=self._load_context_overrides,
@@ -408,7 +408,7 @@ class Function(
408
408
 
409
409
  _call_generator: ___call_generator_spec[typing_extensions.Self]
410
410
 
411
- class __remote_spec(typing_extensions.Protocol[P_INNER, ReturnType_INNER, SUPERSELF]):
411
+ class __remote_spec(typing_extensions.Protocol[ReturnType_INNER, P_INNER, SUPERSELF]):
412
412
  def __call__(self, /, *args: P_INNER.args, **kwargs: P_INNER.kwargs) -> ReturnType_INNER:
413
413
  """Calls the function remotely, executing it with the given arguments and returning the execution's result."""
414
414
  ...
@@ -417,7 +417,7 @@ class Function(
417
417
  """Calls the function remotely, executing it with the given arguments and returning the execution's result."""
418
418
  ...
419
419
 
420
- remote: __remote_spec[modal._functions.P, modal._functions.ReturnType, typing_extensions.Self]
420
+ remote: __remote_spec[modal._functions.ReturnType, modal._functions.P, typing_extensions.Self]
421
421
 
422
422
  class __remote_gen_spec(typing_extensions.Protocol[SUPERSELF]):
423
423
  def __call__(self, /, *args, **kwargs) -> typing.Generator[typing.Any, None, None]:
@@ -444,7 +444,7 @@ class Function(
444
444
  """
445
445
  ...
446
446
 
447
- class ___experimental_spawn_spec(typing_extensions.Protocol[P_INNER, ReturnType_INNER, SUPERSELF]):
447
+ class ___experimental_spawn_spec(typing_extensions.Protocol[ReturnType_INNER, P_INNER, SUPERSELF]):
448
448
  def __call__(self, /, *args: P_INNER.args, **kwargs: P_INNER.kwargs) -> FunctionCall[ReturnType_INNER]:
449
449
  """[Experimental] Calls the function with the given arguments, without waiting for the results.
450
450
 
@@ -468,7 +468,7 @@ class Function(
468
468
  ...
469
469
 
470
470
  _experimental_spawn: ___experimental_spawn_spec[
471
- modal._functions.P, modal._functions.ReturnType, typing_extensions.Self
471
+ modal._functions.ReturnType, modal._functions.P, typing_extensions.Self
472
472
  ]
473
473
 
474
474
  class ___spawn_map_inner_spec(typing_extensions.Protocol[P_INNER, SUPERSELF]):
@@ -477,7 +477,7 @@ class Function(
477
477
 
478
478
  _spawn_map_inner: ___spawn_map_inner_spec[modal._functions.P, typing_extensions.Self]
479
479
 
480
- class __spawn_spec(typing_extensions.Protocol[P_INNER, ReturnType_INNER, SUPERSELF]):
480
+ class __spawn_spec(typing_extensions.Protocol[ReturnType_INNER, P_INNER, SUPERSELF]):
481
481
  def __call__(self, /, *args: P_INNER.args, **kwargs: P_INNER.kwargs) -> FunctionCall[ReturnType_INNER]:
482
482
  """Calls the function with the given arguments, without waiting for the results.
483
483
 
@@ -498,7 +498,7 @@ class Function(
498
498
  """
499
499
  ...
500
500
 
501
- spawn: __spawn_spec[modal._functions.P, modal._functions.ReturnType, typing_extensions.Self]
501
+ spawn: __spawn_spec[modal._functions.ReturnType, modal._functions.P, typing_extensions.Self]
502
502
 
503
503
  def get_raw_f(self) -> collections.abc.Callable[..., typing.Any]:
504
504
  """Return the inner Python object wrapped by this Modal Function."""
@@ -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.dev8
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.dev8"
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