modal 1.0.6.dev47__py3-none-any.whl → 1.0.6.dev51__py3-none-any.whl

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.

modal/cli/run.py CHANGED
@@ -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")
modal/client.pyi CHANGED
@@ -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
@@ -22,7 +22,7 @@ modal/app.py,sha256=U0sPiHpphcRHLnoLYh2IrU2RSpRFX9BE5uHb7h42STs,47478
22
22
  modal/app.pyi,sha256=cXiSTu2bwu6csAUdkOlh7mr9tPvtaS2qWSEhlC1UxAg,43787
23
23
  modal/call_graph.py,sha256=1g2DGcMIJvRy-xKicuf63IVE98gJSnQsr8R_NVMptNc,2581
24
24
  modal/client.py,sha256=5QyM7VJjsFbHf6E91ar3A2KY9mx03wdtGlNJvfTKUVs,17087
25
- modal/client.pyi,sha256=RlfKrK_5zOOXiO54rGorLL8e2LJSzg1RDnPuZXCK7zc,15270
25
+ modal/client.pyi,sha256=55x6Dnv6_SRFBUy8ypQk222KrtPkt_gwNh3H0xv_ZH8,15270
26
26
  modal/cloud_bucket_mount.py,sha256=YOe9nnvSr4ZbeCn587d7_VhE9IioZYRvF9VYQTQux08,5914
27
27
  modal/cloud_bucket_mount.pyi,sha256=-qSfYAQvIoO_l2wsCCGTG5ZUwQieNKXdAO00yP1-LYU,7394
28
28
  modal/cls.py,sha256=B5EtzpBXemH718YvgXaYjuTKvairvqfXJ7IwLZ_6vVA,40034
@@ -131,7 +131,7 @@ modal/cli/launch.py,sha256=0_sBu6bv2xJEPWi-rbGS6Ri9ggnkWQvrGlgpYSUBMyY,3097
131
131
  modal/cli/network_file_system.py,sha256=1_BF95WPLHh7x37lr0JBx5nS8NsKXCDZKt0L2F5fHgo,8104
132
132
  modal/cli/profile.py,sha256=0TYhgRSGUvQZ5LH9nkl6iZllEvAjDniES264dE57wOM,3201
133
133
  modal/cli/queues.py,sha256=1OzC9HdCkbNz6twF3US4FZmIhuVRQ01GOfBY42ux61A,4533
134
- modal/cli/run.py,sha256=nicjV2Ei-UxH9bcilUPeqlv1b15TSHAermaoaDJVBxc,24678
134
+ modal/cli/run.py,sha256=96m6fpJKbjtva4xzJut0pxS36Z5WCMq0umpAry96im0,24946
135
135
  modal/cli/secret.py,sha256=2bngl3Gb6THXkQ2eWZIN9pOHeOFJqiSNo_waUCVYgns,6611
136
136
  modal/cli/token.py,sha256=NAmQzKBfEHkcldWKeFxAVIqQBoo1RTp7_A4yc7-8qM0,1911
137
137
  modal/cli/utils.py,sha256=p3ru9mlrvyCg6WWUcTWIJfZtYN3-MsXio_vy3dJ_8WU,3302
@@ -151,7 +151,7 @@ modal/requirements/2025.06.txt,sha256=KxDaVTOwatHvboDo4lorlgJ7-n-MfAwbPwxJ0zcJqr
151
151
  modal/requirements/PREVIEW.txt,sha256=KxDaVTOwatHvboDo4lorlgJ7-n-MfAwbPwxJ0zcJqrs,312
152
152
  modal/requirements/README.md,sha256=9tK76KP0Uph7O0M5oUgsSwEZDj5y-dcUPsnpR0Sc-Ik,854
153
153
  modal/requirements/base-images.json,sha256=JYSDAgHTl-WrV_TZW5icY-IJEnbe2eQ4CZ_KN6EOZKU,1304
154
- modal-1.0.6.dev47.dist-info/licenses/LICENSE,sha256=psuoW8kuDP96RQsdhzwOqi6fyWv0ct8CR6Jr7He_P_k,10173
154
+ modal-1.0.6.dev51.dist-info/licenses/LICENSE,sha256=psuoW8kuDP96RQsdhzwOqi6fyWv0ct8CR6Jr7He_P_k,10173
155
155
  modal_docs/__init__.py,sha256=svYKtV8HDwDCN86zbdWqyq5T8sMdGDj0PVlzc2tIxDM,28
156
156
  modal_docs/gen_cli_docs.py,sha256=c1yfBS_x--gL5bs0N4ihMwqwX8l3IBWSkBAKNNIi6bQ,3801
157
157
  modal_docs/gen_reference_docs.py,sha256=d_CQUGQ0rfw28u75I2mov9AlS773z9rG40-yq5o7g2U,6359
@@ -159,10 +159,10 @@ modal_docs/mdmd/__init__.py,sha256=svYKtV8HDwDCN86zbdWqyq5T8sMdGDj0PVlzc2tIxDM,2
159
159
  modal_docs/mdmd/mdmd.py,sha256=eW5MzrEl7mSclDo4Uv64sQ1-4IyLggldbgUJdBVLDdI,6449
160
160
  modal_docs/mdmd/signatures.py,sha256=XJaZrK7Mdepk5fdX51A8uENiLFNil85Ud0d4MH8H5f0,3218
161
161
  modal_proto/__init__.py,sha256=MIEP8jhXUeGq_eCjYFcqN5b1bxBM4fdk0VESpjWR0fc,28
162
- modal_proto/api.proto,sha256=jd9gZY8-bAuTHA29Q2krI8ITyZcSPe0r2afxvuZVg2s,99506
162
+ modal_proto/api.proto,sha256=lKYbgeyu0zzBT-WhJfBE7C3fbSddqn-5UnOtOJ6SYRw,99610
163
163
  modal_proto/api_grpc.py,sha256=F7Hu-1Yg7p5a2SbKw9yR4AgpyU0ntvgZTaVbIJMR0DE,122366
164
- modal_proto/api_pb2.py,sha256=FvAcpNT3sOqmCZIW6Sw_67zGKOpYZd6AxlihRolC1h8,349680
165
- modal_proto/api_pb2.pyi,sha256=UMDmFYxv2lUpSZ_jQtxqKhVsbKjLmQg6bFeUDziMkfo,476317
164
+ modal_proto/api_pb2.py,sha256=MgRY5QKtmpFspfXDIbV02haf85AaajQZb-1XMetwz2I,349756
165
+ modal_proto/api_pb2.pyi,sha256=28oUvJCAp8ehfBPP_Mw-v0Sh8sA__o3ioB8eLLlKJBs,476854
166
166
  modal_proto/api_pb2_grpc.py,sha256=pIFrNmCOgRRcIW8A1Ekja9Po6fHcsj54ExDZFzTpYe4,264347
167
167
  modal_proto/api_pb2_grpc.pyi,sha256=vtxrQ9xnQG6ZRXjp2uk43Mb7wV7F4qGYuVl5JUBc8jI,61968
168
168
  modal_proto/modal_api_grpc.py,sha256=Yl_fGbSIuX2FAEnURkYpKqshs7kbNqtz5HlTJEXkbhE,18487
@@ -174,10 +174,10 @@ modal_proto/options_pb2.pyi,sha256=l7DBrbLO7q3Ir-XDkWsajm0d0TQqqrfuX54i4BMpdQg,1
174
174
  modal_proto/options_pb2_grpc.py,sha256=1oboBPFxaTEXt9Aw7EAj8gXHDCNMhZD2VXqocC9l_gk,159
175
175
  modal_proto/options_pb2_grpc.pyi,sha256=CImmhxHsYnF09iENPoe8S4J-n93jtgUYD2JPAc0yJSI,247
176
176
  modal_proto/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
177
- modal_version/__init__.py,sha256=rxyuPWizRugJp7reK3icdrOgFJhBfBNqh9y0BUSkr30,121
177
+ modal_version/__init__.py,sha256=2v61QuSe8pQj__81WjWlBsFvbT8sURDSbfWlGv0YX8c,121
178
178
  modal_version/__main__.py,sha256=2FO0yYQQwDTh6udt1h-cBnGd1c4ZyHnHSI4BksxzVac,105
179
- modal-1.0.6.dev47.dist-info/METADATA,sha256=YRcKtQQyLdj4haZqH5DSQmiDKSN3Njyd0Qio4-w4x10,2462
180
- modal-1.0.6.dev47.dist-info/WHEEL,sha256=1tXe9gY0PYatrMPMDd6jXqjfpz_B-Wqm32CPfRC58XU,91
181
- modal-1.0.6.dev47.dist-info/entry_points.txt,sha256=An-wYgeEUnm6xzrAP9_NTSTSciYvvEWsMZILtYrvpAI,46
182
- modal-1.0.6.dev47.dist-info/top_level.txt,sha256=4BWzoKYREKUZ5iyPzZpjqx4G8uB5TWxXPDwibLcVa7k,43
183
- modal-1.0.6.dev47.dist-info/RECORD,,
179
+ modal-1.0.6.dev51.dist-info/METADATA,sha256=mC9aGJCHfAlK5fgKkZXdC8AiZnS4EPJLCNyxfv4FzLU,2462
180
+ modal-1.0.6.dev51.dist-info/WHEEL,sha256=1tXe9gY0PYatrMPMDd6jXqjfpz_B-Wqm32CPfRC58XU,91
181
+ modal-1.0.6.dev51.dist-info/entry_points.txt,sha256=An-wYgeEUnm6xzrAP9_NTSTSciYvvEWsMZILtYrvpAI,46
182
+ modal-1.0.6.dev51.dist-info/top_level.txt,sha256=4BWzoKYREKUZ5iyPzZpjqx4G8uB5TWxXPDwibLcVa7k,43
183
+ modal-1.0.6.dev51.dist-info/RECORD,,
modal_proto/api.proto CHANGED
@@ -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 {