modal 1.0.6.dev47__tar.gz → 1.0.6.dev51__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.

Potentially problematic release.


This version of modal might be problematic. Click here for more details.

Files changed (188) hide show
  1. {modal-1.0.6.dev47 → modal-1.0.6.dev51}/PKG-INFO +1 -1
  2. {modal-1.0.6.dev47 → modal-1.0.6.dev51}/modal/cli/run.py +12 -6
  3. {modal-1.0.6.dev47 → modal-1.0.6.dev51}/modal/client.pyi +2 -2
  4. {modal-1.0.6.dev47 → modal-1.0.6.dev51}/modal.egg-info/PKG-INFO +1 -1
  5. {modal-1.0.6.dev47 → modal-1.0.6.dev51}/modal_proto/api.proto +1 -0
  6. {modal-1.0.6.dev47 → modal-1.0.6.dev51}/modal_proto/api_pb2.py +526 -526
  7. {modal-1.0.6.dev47 → modal-1.0.6.dev51}/modal_proto/api_pb2.pyi +7 -1
  8. {modal-1.0.6.dev47 → modal-1.0.6.dev51}/modal_version/__init__.py +1 -1
  9. {modal-1.0.6.dev47 → modal-1.0.6.dev51}/LICENSE +0 -0
  10. {modal-1.0.6.dev47 → modal-1.0.6.dev51}/README.md +0 -0
  11. {modal-1.0.6.dev47 → modal-1.0.6.dev51}/modal/__init__.py +0 -0
  12. {modal-1.0.6.dev47 → modal-1.0.6.dev51}/modal/__main__.py +0 -0
  13. {modal-1.0.6.dev47 → modal-1.0.6.dev51}/modal/_clustered_functions.py +0 -0
  14. {modal-1.0.6.dev47 → modal-1.0.6.dev51}/modal/_clustered_functions.pyi +0 -0
  15. {modal-1.0.6.dev47 → modal-1.0.6.dev51}/modal/_container_entrypoint.py +0 -0
  16. {modal-1.0.6.dev47 → modal-1.0.6.dev51}/modal/_functions.py +0 -0
  17. {modal-1.0.6.dev47 → modal-1.0.6.dev51}/modal/_ipython.py +0 -0
  18. {modal-1.0.6.dev47 → modal-1.0.6.dev51}/modal/_location.py +0 -0
  19. {modal-1.0.6.dev47 → modal-1.0.6.dev51}/modal/_object.py +0 -0
  20. {modal-1.0.6.dev47 → modal-1.0.6.dev51}/modal/_output.py +0 -0
  21. {modal-1.0.6.dev47 → modal-1.0.6.dev51}/modal/_partial_function.py +0 -0
  22. {modal-1.0.6.dev47 → modal-1.0.6.dev51}/modal/_pty.py +0 -0
  23. {modal-1.0.6.dev47 → modal-1.0.6.dev51}/modal/_resolver.py +0 -0
  24. {modal-1.0.6.dev47 → modal-1.0.6.dev51}/modal/_resources.py +0 -0
  25. {modal-1.0.6.dev47 → modal-1.0.6.dev51}/modal/_runtime/__init__.py +0 -0
  26. {modal-1.0.6.dev47 → modal-1.0.6.dev51}/modal/_runtime/asgi.py +0 -0
  27. {modal-1.0.6.dev47 → modal-1.0.6.dev51}/modal/_runtime/container_io_manager.py +0 -0
  28. {modal-1.0.6.dev47 → modal-1.0.6.dev51}/modal/_runtime/container_io_manager.pyi +0 -0
  29. {modal-1.0.6.dev47 → modal-1.0.6.dev51}/modal/_runtime/execution_context.py +0 -0
  30. {modal-1.0.6.dev47 → modal-1.0.6.dev51}/modal/_runtime/execution_context.pyi +0 -0
  31. {modal-1.0.6.dev47 → modal-1.0.6.dev51}/modal/_runtime/gpu_memory_snapshot.py +0 -0
  32. {modal-1.0.6.dev47 → modal-1.0.6.dev51}/modal/_runtime/telemetry.py +0 -0
  33. {modal-1.0.6.dev47 → modal-1.0.6.dev51}/modal/_runtime/user_code_imports.py +0 -0
  34. {modal-1.0.6.dev47 → modal-1.0.6.dev51}/modal/_serialization.py +0 -0
  35. {modal-1.0.6.dev47 → modal-1.0.6.dev51}/modal/_traceback.py +0 -0
  36. {modal-1.0.6.dev47 → modal-1.0.6.dev51}/modal/_tunnel.py +0 -0
  37. {modal-1.0.6.dev47 → modal-1.0.6.dev51}/modal/_tunnel.pyi +0 -0
  38. {modal-1.0.6.dev47 → modal-1.0.6.dev51}/modal/_type_manager.py +0 -0
  39. {modal-1.0.6.dev47 → modal-1.0.6.dev51}/modal/_utils/__init__.py +0 -0
  40. {modal-1.0.6.dev47 → modal-1.0.6.dev51}/modal/_utils/app_utils.py +0 -0
  41. {modal-1.0.6.dev47 → modal-1.0.6.dev51}/modal/_utils/async_utils.py +0 -0
  42. {modal-1.0.6.dev47 → modal-1.0.6.dev51}/modal/_utils/auth_token_manager.py +0 -0
  43. {modal-1.0.6.dev47 → modal-1.0.6.dev51}/modal/_utils/blob_utils.py +0 -0
  44. {modal-1.0.6.dev47 → modal-1.0.6.dev51}/modal/_utils/bytes_io_segment_payload.py +0 -0
  45. {modal-1.0.6.dev47 → modal-1.0.6.dev51}/modal/_utils/deprecation.py +0 -0
  46. {modal-1.0.6.dev47 → modal-1.0.6.dev51}/modal/_utils/docker_utils.py +0 -0
  47. {modal-1.0.6.dev47 → modal-1.0.6.dev51}/modal/_utils/function_utils.py +0 -0
  48. {modal-1.0.6.dev47 → modal-1.0.6.dev51}/modal/_utils/git_utils.py +0 -0
  49. {modal-1.0.6.dev47 → modal-1.0.6.dev51}/modal/_utils/grpc_testing.py +0 -0
  50. {modal-1.0.6.dev47 → modal-1.0.6.dev51}/modal/_utils/grpc_utils.py +0 -0
  51. {modal-1.0.6.dev47 → modal-1.0.6.dev51}/modal/_utils/hash_utils.py +0 -0
  52. {modal-1.0.6.dev47 → modal-1.0.6.dev51}/modal/_utils/http_utils.py +0 -0
  53. {modal-1.0.6.dev47 → modal-1.0.6.dev51}/modal/_utils/jwt_utils.py +0 -0
  54. {modal-1.0.6.dev47 → modal-1.0.6.dev51}/modal/_utils/logger.py +0 -0
  55. {modal-1.0.6.dev47 → modal-1.0.6.dev51}/modal/_utils/mount_utils.py +0 -0
  56. {modal-1.0.6.dev47 → modal-1.0.6.dev51}/modal/_utils/name_utils.py +0 -0
  57. {modal-1.0.6.dev47 → modal-1.0.6.dev51}/modal/_utils/package_utils.py +0 -0
  58. {modal-1.0.6.dev47 → modal-1.0.6.dev51}/modal/_utils/pattern_utils.py +0 -0
  59. {modal-1.0.6.dev47 → modal-1.0.6.dev51}/modal/_utils/rand_pb_testing.py +0 -0
  60. {modal-1.0.6.dev47 → modal-1.0.6.dev51}/modal/_utils/shell_utils.py +0 -0
  61. {modal-1.0.6.dev47 → modal-1.0.6.dev51}/modal/_utils/time_utils.py +0 -0
  62. {modal-1.0.6.dev47 → modal-1.0.6.dev51}/modal/_vendor/__init__.py +0 -0
  63. {modal-1.0.6.dev47 → modal-1.0.6.dev51}/modal/_vendor/a2wsgi_wsgi.py +0 -0
  64. {modal-1.0.6.dev47 → modal-1.0.6.dev51}/modal/_vendor/cloudpickle.py +0 -0
  65. {modal-1.0.6.dev47 → modal-1.0.6.dev51}/modal/_vendor/tblib.py +0 -0
  66. {modal-1.0.6.dev47 → modal-1.0.6.dev51}/modal/_watcher.py +0 -0
  67. {modal-1.0.6.dev47 → modal-1.0.6.dev51}/modal/app.py +0 -0
  68. {modal-1.0.6.dev47 → modal-1.0.6.dev51}/modal/app.pyi +0 -0
  69. {modal-1.0.6.dev47 → modal-1.0.6.dev51}/modal/call_graph.py +0 -0
  70. {modal-1.0.6.dev47 → modal-1.0.6.dev51}/modal/cli/__init__.py +0 -0
  71. {modal-1.0.6.dev47 → modal-1.0.6.dev51}/modal/cli/_download.py +0 -0
  72. {modal-1.0.6.dev47 → modal-1.0.6.dev51}/modal/cli/_traceback.py +0 -0
  73. {modal-1.0.6.dev47 → modal-1.0.6.dev51}/modal/cli/app.py +0 -0
  74. {modal-1.0.6.dev47 → modal-1.0.6.dev51}/modal/cli/cluster.py +0 -0
  75. {modal-1.0.6.dev47 → modal-1.0.6.dev51}/modal/cli/config.py +0 -0
  76. {modal-1.0.6.dev47 → modal-1.0.6.dev51}/modal/cli/container.py +0 -0
  77. {modal-1.0.6.dev47 → modal-1.0.6.dev51}/modal/cli/dict.py +0 -0
  78. {modal-1.0.6.dev47 → modal-1.0.6.dev51}/modal/cli/entry_point.py +0 -0
  79. {modal-1.0.6.dev47 → modal-1.0.6.dev51}/modal/cli/environment.py +0 -0
  80. {modal-1.0.6.dev47 → modal-1.0.6.dev51}/modal/cli/import_refs.py +0 -0
  81. {modal-1.0.6.dev47 → modal-1.0.6.dev51}/modal/cli/launch.py +0 -0
  82. {modal-1.0.6.dev47 → modal-1.0.6.dev51}/modal/cli/network_file_system.py +0 -0
  83. {modal-1.0.6.dev47 → modal-1.0.6.dev51}/modal/cli/profile.py +0 -0
  84. {modal-1.0.6.dev47 → modal-1.0.6.dev51}/modal/cli/programs/__init__.py +0 -0
  85. {modal-1.0.6.dev47 → modal-1.0.6.dev51}/modal/cli/programs/run_jupyter.py +0 -0
  86. {modal-1.0.6.dev47 → modal-1.0.6.dev51}/modal/cli/programs/vscode.py +0 -0
  87. {modal-1.0.6.dev47 → modal-1.0.6.dev51}/modal/cli/queues.py +0 -0
  88. {modal-1.0.6.dev47 → modal-1.0.6.dev51}/modal/cli/secret.py +0 -0
  89. {modal-1.0.6.dev47 → modal-1.0.6.dev51}/modal/cli/token.py +0 -0
  90. {modal-1.0.6.dev47 → modal-1.0.6.dev51}/modal/cli/utils.py +0 -0
  91. {modal-1.0.6.dev47 → modal-1.0.6.dev51}/modal/cli/volume.py +0 -0
  92. {modal-1.0.6.dev47 → modal-1.0.6.dev51}/modal/client.py +0 -0
  93. {modal-1.0.6.dev47 → modal-1.0.6.dev51}/modal/cloud_bucket_mount.py +0 -0
  94. {modal-1.0.6.dev47 → modal-1.0.6.dev51}/modal/cloud_bucket_mount.pyi +0 -0
  95. {modal-1.0.6.dev47 → modal-1.0.6.dev51}/modal/cls.py +0 -0
  96. {modal-1.0.6.dev47 → modal-1.0.6.dev51}/modal/cls.pyi +0 -0
  97. {modal-1.0.6.dev47 → modal-1.0.6.dev51}/modal/config.py +0 -0
  98. {modal-1.0.6.dev47 → modal-1.0.6.dev51}/modal/container_process.py +0 -0
  99. {modal-1.0.6.dev47 → modal-1.0.6.dev51}/modal/container_process.pyi +0 -0
  100. {modal-1.0.6.dev47 → modal-1.0.6.dev51}/modal/dict.py +0 -0
  101. {modal-1.0.6.dev47 → modal-1.0.6.dev51}/modal/dict.pyi +0 -0
  102. {modal-1.0.6.dev47 → modal-1.0.6.dev51}/modal/environments.py +0 -0
  103. {modal-1.0.6.dev47 → modal-1.0.6.dev51}/modal/environments.pyi +0 -0
  104. {modal-1.0.6.dev47 → modal-1.0.6.dev51}/modal/exception.py +0 -0
  105. {modal-1.0.6.dev47 → modal-1.0.6.dev51}/modal/experimental/__init__.py +0 -0
  106. {modal-1.0.6.dev47 → modal-1.0.6.dev51}/modal/experimental/flash.py +0 -0
  107. {modal-1.0.6.dev47 → modal-1.0.6.dev51}/modal/experimental/flash.pyi +0 -0
  108. {modal-1.0.6.dev47 → modal-1.0.6.dev51}/modal/experimental/ipython.py +0 -0
  109. {modal-1.0.6.dev47 → modal-1.0.6.dev51}/modal/file_io.py +0 -0
  110. {modal-1.0.6.dev47 → modal-1.0.6.dev51}/modal/file_io.pyi +0 -0
  111. {modal-1.0.6.dev47 → modal-1.0.6.dev51}/modal/file_pattern_matcher.py +0 -0
  112. {modal-1.0.6.dev47 → modal-1.0.6.dev51}/modal/functions.py +0 -0
  113. {modal-1.0.6.dev47 → modal-1.0.6.dev51}/modal/functions.pyi +0 -0
  114. {modal-1.0.6.dev47 → modal-1.0.6.dev51}/modal/gpu.py +0 -0
  115. {modal-1.0.6.dev47 → modal-1.0.6.dev51}/modal/image.py +0 -0
  116. {modal-1.0.6.dev47 → modal-1.0.6.dev51}/modal/image.pyi +0 -0
  117. {modal-1.0.6.dev47 → modal-1.0.6.dev51}/modal/io_streams.py +0 -0
  118. {modal-1.0.6.dev47 → modal-1.0.6.dev51}/modal/io_streams.pyi +0 -0
  119. {modal-1.0.6.dev47 → modal-1.0.6.dev51}/modal/mount.py +0 -0
  120. {modal-1.0.6.dev47 → modal-1.0.6.dev51}/modal/mount.pyi +0 -0
  121. {modal-1.0.6.dev47 → modal-1.0.6.dev51}/modal/network_file_system.py +0 -0
  122. {modal-1.0.6.dev47 → modal-1.0.6.dev51}/modal/network_file_system.pyi +0 -0
  123. {modal-1.0.6.dev47 → modal-1.0.6.dev51}/modal/object.py +0 -0
  124. {modal-1.0.6.dev47 → modal-1.0.6.dev51}/modal/object.pyi +0 -0
  125. {modal-1.0.6.dev47 → modal-1.0.6.dev51}/modal/output.py +0 -0
  126. {modal-1.0.6.dev47 → modal-1.0.6.dev51}/modal/parallel_map.py +0 -0
  127. {modal-1.0.6.dev47 → modal-1.0.6.dev51}/modal/parallel_map.pyi +0 -0
  128. {modal-1.0.6.dev47 → modal-1.0.6.dev51}/modal/partial_function.py +0 -0
  129. {modal-1.0.6.dev47 → modal-1.0.6.dev51}/modal/partial_function.pyi +0 -0
  130. {modal-1.0.6.dev47 → modal-1.0.6.dev51}/modal/proxy.py +0 -0
  131. {modal-1.0.6.dev47 → modal-1.0.6.dev51}/modal/proxy.pyi +0 -0
  132. {modal-1.0.6.dev47 → modal-1.0.6.dev51}/modal/py.typed +0 -0
  133. {modal-1.0.6.dev47 → modal-1.0.6.dev51}/modal/queue.py +0 -0
  134. {modal-1.0.6.dev47 → modal-1.0.6.dev51}/modal/queue.pyi +0 -0
  135. {modal-1.0.6.dev47 → modal-1.0.6.dev51}/modal/requirements/2023.12.312.txt +0 -0
  136. {modal-1.0.6.dev47 → modal-1.0.6.dev51}/modal/requirements/2023.12.txt +0 -0
  137. {modal-1.0.6.dev47 → modal-1.0.6.dev51}/modal/requirements/2024.04.txt +0 -0
  138. {modal-1.0.6.dev47 → modal-1.0.6.dev51}/modal/requirements/2024.10.txt +0 -0
  139. {modal-1.0.6.dev47 → modal-1.0.6.dev51}/modal/requirements/2025.06.txt +0 -0
  140. {modal-1.0.6.dev47 → modal-1.0.6.dev51}/modal/requirements/PREVIEW.txt +0 -0
  141. {modal-1.0.6.dev47 → modal-1.0.6.dev51}/modal/requirements/README.md +0 -0
  142. {modal-1.0.6.dev47 → modal-1.0.6.dev51}/modal/requirements/base-images.json +0 -0
  143. {modal-1.0.6.dev47 → modal-1.0.6.dev51}/modal/retries.py +0 -0
  144. {modal-1.0.6.dev47 → modal-1.0.6.dev51}/modal/runner.py +0 -0
  145. {modal-1.0.6.dev47 → modal-1.0.6.dev51}/modal/runner.pyi +0 -0
  146. {modal-1.0.6.dev47 → modal-1.0.6.dev51}/modal/running_app.py +0 -0
  147. {modal-1.0.6.dev47 → modal-1.0.6.dev51}/modal/sandbox.py +0 -0
  148. {modal-1.0.6.dev47 → modal-1.0.6.dev51}/modal/sandbox.pyi +0 -0
  149. {modal-1.0.6.dev47 → modal-1.0.6.dev51}/modal/schedule.py +0 -0
  150. {modal-1.0.6.dev47 → modal-1.0.6.dev51}/modal/scheduler_placement.py +0 -0
  151. {modal-1.0.6.dev47 → modal-1.0.6.dev51}/modal/secret.py +0 -0
  152. {modal-1.0.6.dev47 → modal-1.0.6.dev51}/modal/secret.pyi +0 -0
  153. {modal-1.0.6.dev47 → modal-1.0.6.dev51}/modal/serving.py +0 -0
  154. {modal-1.0.6.dev47 → modal-1.0.6.dev51}/modal/serving.pyi +0 -0
  155. {modal-1.0.6.dev47 → modal-1.0.6.dev51}/modal/snapshot.py +0 -0
  156. {modal-1.0.6.dev47 → modal-1.0.6.dev51}/modal/snapshot.pyi +0 -0
  157. {modal-1.0.6.dev47 → modal-1.0.6.dev51}/modal/stream_type.py +0 -0
  158. {modal-1.0.6.dev47 → modal-1.0.6.dev51}/modal/token_flow.py +0 -0
  159. {modal-1.0.6.dev47 → modal-1.0.6.dev51}/modal/token_flow.pyi +0 -0
  160. {modal-1.0.6.dev47 → modal-1.0.6.dev51}/modal/volume.py +0 -0
  161. {modal-1.0.6.dev47 → modal-1.0.6.dev51}/modal/volume.pyi +0 -0
  162. {modal-1.0.6.dev47 → modal-1.0.6.dev51}/modal.egg-info/SOURCES.txt +0 -0
  163. {modal-1.0.6.dev47 → modal-1.0.6.dev51}/modal.egg-info/dependency_links.txt +0 -0
  164. {modal-1.0.6.dev47 → modal-1.0.6.dev51}/modal.egg-info/entry_points.txt +0 -0
  165. {modal-1.0.6.dev47 → modal-1.0.6.dev51}/modal.egg-info/requires.txt +0 -0
  166. {modal-1.0.6.dev47 → modal-1.0.6.dev51}/modal.egg-info/top_level.txt +0 -0
  167. {modal-1.0.6.dev47 → modal-1.0.6.dev51}/modal_docs/__init__.py +0 -0
  168. {modal-1.0.6.dev47 → modal-1.0.6.dev51}/modal_docs/gen_cli_docs.py +0 -0
  169. {modal-1.0.6.dev47 → modal-1.0.6.dev51}/modal_docs/gen_reference_docs.py +0 -0
  170. {modal-1.0.6.dev47 → modal-1.0.6.dev51}/modal_docs/mdmd/__init__.py +0 -0
  171. {modal-1.0.6.dev47 → modal-1.0.6.dev51}/modal_docs/mdmd/mdmd.py +0 -0
  172. {modal-1.0.6.dev47 → modal-1.0.6.dev51}/modal_docs/mdmd/signatures.py +0 -0
  173. {modal-1.0.6.dev47 → modal-1.0.6.dev51}/modal_proto/__init__.py +0 -0
  174. {modal-1.0.6.dev47 → modal-1.0.6.dev51}/modal_proto/api_grpc.py +0 -0
  175. {modal-1.0.6.dev47 → modal-1.0.6.dev51}/modal_proto/api_pb2_grpc.py +0 -0
  176. {modal-1.0.6.dev47 → modal-1.0.6.dev51}/modal_proto/api_pb2_grpc.pyi +0 -0
  177. {modal-1.0.6.dev47 → modal-1.0.6.dev51}/modal_proto/modal_api_grpc.py +0 -0
  178. {modal-1.0.6.dev47 → modal-1.0.6.dev51}/modal_proto/modal_options_grpc.py +0 -0
  179. {modal-1.0.6.dev47 → modal-1.0.6.dev51}/modal_proto/options.proto +0 -0
  180. {modal-1.0.6.dev47 → modal-1.0.6.dev51}/modal_proto/options_grpc.py +0 -0
  181. {modal-1.0.6.dev47 → modal-1.0.6.dev51}/modal_proto/options_pb2.py +0 -0
  182. {modal-1.0.6.dev47 → modal-1.0.6.dev51}/modal_proto/options_pb2.pyi +0 -0
  183. {modal-1.0.6.dev47 → modal-1.0.6.dev51}/modal_proto/options_pb2_grpc.py +0 -0
  184. {modal-1.0.6.dev47 → modal-1.0.6.dev51}/modal_proto/options_pb2_grpc.pyi +0 -0
  185. {modal-1.0.6.dev47 → modal-1.0.6.dev51}/modal_proto/py.typed +0 -0
  186. {modal-1.0.6.dev47 → modal-1.0.6.dev51}/modal_version/__main__.py +0 -0
  187. {modal-1.0.6.dev47 → modal-1.0.6.dev51}/pyproject.toml +0 -0
  188. {modal-1.0.6.dev47 → modal-1.0.6.dev51}/setup.cfg +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: modal
3
- Version: 1.0.6.dev47
3
+ Version: 1.0.6.dev51
4
4
  Summary: Python client library for Modal
5
5
  Author-email: Modal Labs <support@modal.com>
6
6
  License: Apache-2.0
@@ -207,7 +207,7 @@ def _make_click_function(app, signature: CliRunnableSignature, inner: Callable[[
207
207
  return f
208
208
 
209
209
 
210
- def _get_click_command_for_function(app: App, function: Function):
210
+ def _get_click_command_for_function(app: App, function: Function, ctx: click.Context):
211
211
  if function.is_generator:
212
212
  raise InvalidError("`modal run` is not supported for generator functions")
213
213
 
@@ -216,7 +216,10 @@ def _get_click_command_for_function(app: App, function: Function):
216
216
  signature: CliRunnableSignature = _get_cli_runnable_signature(sig, type_hints)
217
217
 
218
218
  def _inner(args, click_kwargs):
219
- return function.remote(*args, **click_kwargs)
219
+ if ctx.obj["detach"]:
220
+ return function.spawn(*args, **click_kwargs).get()
221
+ else:
222
+ return function.remote(*args, **click_kwargs)
220
223
 
221
224
  f = _make_click_function(app, signature, _inner)
222
225
 
@@ -230,7 +233,7 @@ def _get_click_command_for_function(app: App, function: Function):
230
233
  return click.command(with_click_options)
231
234
 
232
235
 
233
- def _get_click_command_for_cls(app: App, method_ref: MethodReference):
236
+ def _get_click_command_for_cls(app: App, method_ref: MethodReference, ctx: click.Context):
234
237
  parameters: dict[str, ParameterMetadata]
235
238
  cls = method_ref.cls
236
239
  method_name = method_ref.method_name
@@ -271,7 +274,10 @@ def _get_click_command_for_cls(app: App, method_ref: MethodReference):
271
274
 
272
275
  instance = cls(**cls_kwargs)
273
276
  method: Function = getattr(instance, method_name)
274
- return method.remote(*args, **fun_kwargs)
277
+ if ctx.obj["detach"]:
278
+ return method.spawn(*args, **fun_kwargs).get()
279
+ else:
280
+ return method.remote(*args, **fun_kwargs)
275
281
 
276
282
  f = _make_click_function(app, fun_signature, _inner)
277
283
  with_click_options = _add_click_options(f, parameters)
@@ -376,9 +382,9 @@ class RunGroup(click.Group):
376
382
  if isinstance(runnable, LocalEntrypoint):
377
383
  click_command = _get_click_command_for_local_entrypoint(app, runnable)
378
384
  elif isinstance(runnable, Function):
379
- click_command = _get_click_command_for_function(app, runnable)
385
+ click_command = _get_click_command_for_function(app, runnable, ctx)
380
386
  elif isinstance(runnable, MethodReference):
381
- click_command = _get_click_command_for_cls(app, runnable)
387
+ click_command = _get_click_command_for_cls(app, runnable, ctx)
382
388
  else:
383
389
  # This should be unreachable...
384
390
  raise ValueError(f"{runnable} is neither function, local entrypoint or class/method")
@@ -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.0.6.dev47",
36
+ version: str = "1.0.6.dev51",
37
37
  ):
38
38
  """mdmd:hidden
39
39
  The Modal client object is not intended to be instantiated directly by users.
@@ -163,7 +163,7 @@ class Client:
163
163
  server_url: str,
164
164
  client_type: int,
165
165
  credentials: typing.Optional[tuple[str, str]],
166
- version: str = "1.0.6.dev47",
166
+ version: str = "1.0.6.dev51",
167
167
  ):
168
168
  """mdmd:hidden
169
169
  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.0.6.dev47
3
+ Version: 1.0.6.dev51
4
4
  Summary: Python client library for Modal
5
5
  Author-email: Modal Labs <support@modal.com>
6
6
  License: Apache-2.0
@@ -1690,6 +1690,7 @@ message FunctionGetOutputsRequest {
1690
1690
  double requested_at = 8; // Used for waypoints.
1691
1691
  // The jwts the client expects the server to be processing. This is optional and used for sync inputs only.
1692
1692
  repeated string input_jwts = 9;
1693
+ optional int32 start_idx = 10; // for async batch requests. this indicates which index to start from.
1693
1694
  }
1694
1695
 
1695
1696
  message FunctionGetOutputsResponse {