modal 1.1.1.dev30__py3-none-any.whl → 1.1.1.dev32__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/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.1.1.dev30",
36
+ version: str = "1.1.1.dev32",
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.1.1.dev30",
167
+ version: str = "1.1.1.dev32",
168
168
  ):
169
169
  """mdmd:hidden
170
170
  The Modal client object is not intended to be instantiated directly by users.
modal/image.py CHANGED
@@ -1561,7 +1561,7 @@ class _Image(_Object, type_prefix="im"):
1561
1561
  self,
1562
1562
  entrypoint_commands: list[str],
1563
1563
  ) -> "_Image":
1564
- """Set the entrypoint for the image."""
1564
+ """Set the ENTRYPOINT for the image."""
1565
1565
  if not isinstance(entrypoint_commands, list) or not all(isinstance(x, str) for x in entrypoint_commands):
1566
1566
  raise InvalidError("entrypoint_commands must be a list of strings.")
1567
1567
  args_str = _flatten_str_args("entrypoint", "entrypoint_commands", entrypoint_commands)
@@ -2237,7 +2237,9 @@ class _Image(_Object, type_prefix="im"):
2237
2237
  )
2238
2238
 
2239
2239
  def cmd(self, cmd: list[str]) -> "_Image":
2240
- """Set the default entrypoint argument (`CMD`) for the image.
2240
+ """Set the default command (`CMD`) to run when a container is started.
2241
+
2242
+ Used with `modal.Sandbox`. Has no effect on `modal.Function`.
2241
2243
 
2242
2244
  **Example**
2243
2245
 
modal/image.pyi CHANGED
@@ -584,7 +584,7 @@ class _Image(modal._object._Object):
584
584
  ...
585
585
 
586
586
  def entrypoint(self, entrypoint_commands: list[str]) -> _Image:
587
- """Set the entrypoint for the image."""
587
+ """Set the ENTRYPOINT for the image."""
588
588
  ...
589
589
 
590
590
  def shell(self, shell_commands: list[str]) -> _Image:
@@ -912,7 +912,9 @@ class _Image(modal._object._Object):
912
912
  ...
913
913
 
914
914
  def cmd(self, cmd: list[str]) -> _Image:
915
- """Set the default entrypoint argument (`CMD`) for the image.
915
+ """Set the default command (`CMD`) to run when a container is started.
916
+
917
+ Used with `modal.Sandbox`. Has no effect on `modal.Function`.
916
918
 
917
919
  **Example**
918
920
 
@@ -1424,7 +1426,7 @@ class Image(modal.object.Object):
1424
1426
  ...
1425
1427
 
1426
1428
  def entrypoint(self, entrypoint_commands: list[str]) -> Image:
1427
- """Set the entrypoint for the image."""
1429
+ """Set the ENTRYPOINT for the image."""
1428
1430
  ...
1429
1431
 
1430
1432
  def shell(self, shell_commands: list[str]) -> Image:
@@ -1752,7 +1754,9 @@ class Image(modal.object.Object):
1752
1754
  ...
1753
1755
 
1754
1756
  def cmd(self, cmd: list[str]) -> Image:
1755
- """Set the default entrypoint argument (`CMD`) for the image.
1757
+ """Set the default command (`CMD`) to run when a container is started.
1758
+
1759
+ Used with `modal.Sandbox`. Has no effect on `modal.Function`.
1756
1760
 
1757
1761
  **Example**
1758
1762
 
modal/sandbox.py CHANGED
@@ -60,15 +60,15 @@ if TYPE_CHECKING:
60
60
  import modal.app
61
61
 
62
62
 
63
- def _validate_exec_args(entrypoint_args: Sequence[str]) -> None:
63
+ def _validate_exec_args(args: Sequence[str]) -> None:
64
64
  # Entrypoint args must be strings.
65
- if not all(isinstance(arg, str) for arg in entrypoint_args):
65
+ if not all(isinstance(arg, str) for arg in args):
66
66
  raise InvalidError("All entrypoint arguments must be strings")
67
67
  # Avoid "[Errno 7] Argument list too long" errors.
68
- total_arg_len = sum(len(arg) for arg in entrypoint_args)
68
+ total_arg_len = sum(len(arg) for arg in args)
69
69
  if total_arg_len > ARG_MAX_BYTES:
70
70
  raise InvalidError(
71
- f"Total length of entrypoint arguments must be less than {ARG_MAX_BYTES} bytes (ARG_MAX). "
71
+ f"Total length of CMD arguments must be less than {ARG_MAX_BYTES} bytes (ARG_MAX). "
72
72
  f"Got {total_arg_len} bytes."
73
73
  )
74
74
 
@@ -104,7 +104,7 @@ class _Sandbox(_Object, type_prefix="sb"):
104
104
 
105
105
  @staticmethod
106
106
  def _new(
107
- entrypoint_args: Sequence[str],
107
+ args: Sequence[str],
108
108
  image: _Image,
109
109
  secrets: Sequence[_Secret],
110
110
  name: Optional[str] = None,
@@ -208,7 +208,7 @@ class _Sandbox(_Object, type_prefix="sb"):
208
208
 
209
209
  ephemeral_disk = None # Ephemeral disk requests not supported on Sandboxes.
210
210
  definition = api_pb2.Sandbox(
211
- entrypoint_args=entrypoint_args,
211
+ entrypoint_args=args,
212
212
  image_id=image.object_id,
213
213
  mount_ids=[mount.object_id for mount in mounts] + [mount.object_id for mount in image._mount_layers],
214
214
  secret_ids=[secret.object_id for secret in secrets],
@@ -250,7 +250,7 @@ class _Sandbox(_Object, type_prefix="sb"):
250
250
 
251
251
  @staticmethod
252
252
  async def create(
253
- *entrypoint_args: str,
253
+ *args: str, # Set the CMD of the Sandbox, overriding any CMD of the container image.
254
254
  # Associate the sandbox with an app. Required unless creating from a container.
255
255
  app: Optional["modal.app._App"] = None,
256
256
  name: Optional[str] = None, # Optionally give the sandbox a name. Unique within an app.
@@ -316,7 +316,7 @@ class _Sandbox(_Object, type_prefix="sb"):
316
316
  )
317
317
 
318
318
  return await _Sandbox._create(
319
- *entrypoint_args,
319
+ *args,
320
320
  app=app,
321
321
  name=name,
322
322
  image=image,
@@ -346,7 +346,7 @@ class _Sandbox(_Object, type_prefix="sb"):
346
346
 
347
347
  @staticmethod
348
348
  async def _create(
349
- *entrypoint_args: str,
349
+ *args: str, # Set the CMD of the Sandbox, overriding any CMD of the container image.
350
350
  # Associate the sandbox with an app. Required unless creating from a container.
351
351
  app: Optional["modal.app._App"] = None,
352
352
  name: Optional[str] = None, # Optionally give the sandbox a name. Unique within an app.
@@ -395,11 +395,11 @@ class _Sandbox(_Object, type_prefix="sb"):
395
395
  # sandbox that runs the shell session
396
396
  from .app import _App
397
397
 
398
- _validate_exec_args(entrypoint_args)
398
+ _validate_exec_args(args)
399
399
 
400
400
  # TODO(erikbern): Get rid of the `_new` method and create an already-hydrated object
401
401
  obj = _Sandbox._new(
402
- entrypoint_args,
402
+ args,
403
403
  image=image or _default_image,
404
404
  secrets=secrets,
405
405
  name=name,
@@ -648,7 +648,7 @@ class _Sandbox(_Object, type_prefix="sb"):
648
648
  @overload
649
649
  async def exec(
650
650
  self,
651
- *cmds: str,
651
+ *args: str,
652
652
  pty_info: Optional[api_pb2.PTYInfo] = None,
653
653
  stdout: StreamType = StreamType.PIPE,
654
654
  stderr: StreamType = StreamType.PIPE,
@@ -663,7 +663,7 @@ class _Sandbox(_Object, type_prefix="sb"):
663
663
  @overload
664
664
  async def exec(
665
665
  self,
666
- *cmds: str,
666
+ *args: str,
667
667
  pty_info: Optional[api_pb2.PTYInfo] = None,
668
668
  stdout: StreamType = StreamType.PIPE,
669
669
  stderr: StreamType = StreamType.PIPE,
@@ -677,7 +677,7 @@ class _Sandbox(_Object, type_prefix="sb"):
677
677
 
678
678
  async def exec(
679
679
  self,
680
- *cmds: str,
680
+ *args: str,
681
681
  pty_info: Optional[api_pb2.PTYInfo] = None, # Deprecated: internal use only
682
682
  stdout: StreamType = StreamType.PIPE,
683
683
  stderr: StreamType = StreamType.PIPE,
@@ -713,7 +713,7 @@ class _Sandbox(_Object, type_prefix="sb"):
713
713
 
714
714
  if workdir is not None and not workdir.startswith("/"):
715
715
  raise InvalidError(f"workdir must be an absolute path, got: {workdir}")
716
- _validate_exec_args(cmds)
716
+ _validate_exec_args(args)
717
717
 
718
718
  # Force secret resolution so we can pass the secret IDs to the backend.
719
719
  secret_coros = [secret.hydrate(client=self._client) for secret in secrets]
@@ -722,7 +722,7 @@ class _Sandbox(_Object, type_prefix="sb"):
722
722
  task_id = await self._get_task_id()
723
723
  req = api_pb2.ContainerExecRequest(
724
724
  task_id=task_id,
725
- command=cmds,
725
+ command=args,
726
726
  pty_info=_pty_info or pty_info,
727
727
  runtime_debug=config.get("function_runtime_debug"),
728
728
  timeout_secs=timeout or 0,
modal/sandbox.pyi CHANGED
@@ -25,7 +25,7 @@ import os
25
25
  import typing
26
26
  import typing_extensions
27
27
 
28
- def _validate_exec_args(entrypoint_args: collections.abc.Sequence[str]) -> None: ...
28
+ def _validate_exec_args(args: collections.abc.Sequence[str]) -> None: ...
29
29
 
30
30
  class DefaultSandboxNameOverride(str):
31
31
  """A singleton class that represents the default sandbox name override.
@@ -55,7 +55,7 @@ class _Sandbox(modal._object._Object):
55
55
 
56
56
  @staticmethod
57
57
  def _new(
58
- entrypoint_args: collections.abc.Sequence[str],
58
+ args: collections.abc.Sequence[str],
59
59
  image: modal.image._Image,
60
60
  secrets: collections.abc.Sequence[modal.secret._Secret],
61
61
  name: typing.Optional[str] = None,
@@ -89,7 +89,7 @@ class _Sandbox(modal._object._Object):
89
89
 
90
90
  @staticmethod
91
91
  async def create(
92
- *entrypoint_args: str,
92
+ *args: str,
93
93
  app: typing.Optional[modal.app._App] = None,
94
94
  name: typing.Optional[str] = None,
95
95
  image: typing.Optional[modal.image._Image] = None,
@@ -136,7 +136,7 @@ class _Sandbox(modal._object._Object):
136
136
 
137
137
  @staticmethod
138
138
  async def _create(
139
- *entrypoint_args: str,
139
+ *args: str,
140
140
  app: typing.Optional[modal.app._App] = None,
141
141
  name: typing.Optional[str] = None,
142
142
  image: typing.Optional[modal.image._Image] = None,
@@ -244,7 +244,7 @@ class _Sandbox(modal._object._Object):
244
244
  @typing.overload
245
245
  async def exec(
246
246
  self,
247
- *cmds: str,
247
+ *args: str,
248
248
  pty_info: typing.Optional[modal_proto.api_pb2.PTYInfo] = None,
249
249
  stdout: modal.stream_type.StreamType = modal.stream_type.StreamType.PIPE,
250
250
  stderr: modal.stream_type.StreamType = modal.stream_type.StreamType.PIPE,
@@ -258,7 +258,7 @@ class _Sandbox(modal._object._Object):
258
258
  @typing.overload
259
259
  async def exec(
260
260
  self,
261
- *cmds: str,
261
+ *args: str,
262
262
  pty_info: typing.Optional[modal_proto.api_pb2.PTYInfo] = None,
263
263
  stdout: modal.stream_type.StreamType = modal.stream_type.StreamType.PIPE,
264
264
  stderr: modal.stream_type.StreamType = modal.stream_type.StreamType.PIPE,
@@ -364,7 +364,7 @@ class Sandbox(modal.object.Object):
364
364
 
365
365
  @staticmethod
366
366
  def _new(
367
- entrypoint_args: collections.abc.Sequence[str],
367
+ args: collections.abc.Sequence[str],
368
368
  image: modal.image.Image,
369
369
  secrets: collections.abc.Sequence[modal.secret.Secret],
370
370
  name: typing.Optional[str] = None,
@@ -399,7 +399,7 @@ class Sandbox(modal.object.Object):
399
399
  def __call__(
400
400
  self,
401
401
  /,
402
- *entrypoint_args: str,
402
+ *args: str,
403
403
  app: typing.Optional[modal.app.App] = None,
404
404
  name: typing.Optional[str] = None,
405
405
  image: typing.Optional[modal.image.Image] = None,
@@ -449,7 +449,7 @@ class Sandbox(modal.object.Object):
449
449
  async def aio(
450
450
  self,
451
451
  /,
452
- *entrypoint_args: str,
452
+ *args: str,
453
453
  app: typing.Optional[modal.app.App] = None,
454
454
  name: typing.Optional[str] = None,
455
455
  image: typing.Optional[modal.image.Image] = None,
@@ -502,7 +502,7 @@ class Sandbox(modal.object.Object):
502
502
  def __call__(
503
503
  self,
504
504
  /,
505
- *entrypoint_args: str,
505
+ *args: str,
506
506
  app: typing.Optional[modal.app.App] = None,
507
507
  name: typing.Optional[str] = None,
508
508
  image: typing.Optional[modal.image.Image] = None,
@@ -538,7 +538,7 @@ class Sandbox(modal.object.Object):
538
538
  async def aio(
539
539
  self,
540
540
  /,
541
- *entrypoint_args: str,
541
+ *args: str,
542
542
  app: typing.Optional[modal.app.App] = None,
543
543
  name: typing.Optional[str] = None,
544
544
  image: typing.Optional[modal.image.Image] = None,
@@ -758,7 +758,7 @@ class Sandbox(modal.object.Object):
758
758
  def __call__(
759
759
  self,
760
760
  /,
761
- *cmds: str,
761
+ *args: str,
762
762
  pty_info: typing.Optional[modal_proto.api_pb2.PTYInfo] = None,
763
763
  stdout: modal.stream_type.StreamType = modal.stream_type.StreamType.PIPE,
764
764
  stderr: modal.stream_type.StreamType = modal.stream_type.StreamType.PIPE,
@@ -773,7 +773,7 @@ class Sandbox(modal.object.Object):
773
773
  def __call__(
774
774
  self,
775
775
  /,
776
- *cmds: str,
776
+ *args: str,
777
777
  pty_info: typing.Optional[modal_proto.api_pb2.PTYInfo] = None,
778
778
  stdout: modal.stream_type.StreamType = modal.stream_type.StreamType.PIPE,
779
779
  stderr: modal.stream_type.StreamType = modal.stream_type.StreamType.PIPE,
@@ -788,7 +788,7 @@ class Sandbox(modal.object.Object):
788
788
  async def aio(
789
789
  self,
790
790
  /,
791
- *cmds: str,
791
+ *args: str,
792
792
  pty_info: typing.Optional[modal_proto.api_pb2.PTYInfo] = None,
793
793
  stdout: modal.stream_type.StreamType = modal.stream_type.StreamType.PIPE,
794
794
  stderr: modal.stream_type.StreamType = modal.stream_type.StreamType.PIPE,
@@ -803,7 +803,7 @@ class Sandbox(modal.object.Object):
803
803
  async def aio(
804
804
  self,
805
805
  /,
806
- *cmds: str,
806
+ *args: str,
807
807
  pty_info: typing.Optional[modal_proto.api_pb2.PTYInfo] = None,
808
808
  stdout: modal.stream_type.StreamType = modal.stream_type.StreamType.PIPE,
809
809
  stderr: modal.stream_type.StreamType = modal.stream_type.StreamType.PIPE,
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: modal
3
- Version: 1.1.1.dev30
3
+ Version: 1.1.1.dev32
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=kpq4kXp7pch688y6g55QYAC10wqPTU5FXKoWPMirA3E,47899
22
22
  modal/app.pyi,sha256=-jKXlGDBWRPVsuenBhdMRqawK-L2eiJ7gHbmSblhltg,43525
23
23
  modal/call_graph.py,sha256=1g2DGcMIJvRy-xKicuf63IVE98gJSnQsr8R_NVMptNc,2581
24
24
  modal/client.py,sha256=kyAIVB3Ay-XKJizQ_1ufUFB__EagV0MLmHJpyYyJ7J0,18636
25
- modal/client.pyi,sha256=YdBf1Vvb_Jvt3-lDHCVFPfqNQ3wLUYbnpoXunvr3mgQ,15831
25
+ modal/client.pyi,sha256=exfpYJmI0GOEp5aYAfZIVG3WUCDHKTTaLlkq6x3eA7s,15831
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=7A0xGnugQzm8dOfnKMjLjtqekRlRtQ0jPFRYgq6xdUM,40018
@@ -41,8 +41,8 @@ modal/file_pattern_matcher.py,sha256=urAue8es8jxqX94k9EYoZxxhtfgOlsEES8lbFHOorzc
41
41
  modal/functions.py,sha256=kcNHvqeGBxPI7Cgd57NIBBghkfbeFJzXO44WW0jSmao,325
42
42
  modal/functions.pyi,sha256=VYPnfnCLfHRDAl6t5AaVHmZEz0T5f2igjTeMOtHPie8,34766
43
43
  modal/gpu.py,sha256=Fe5ORvVPDIstSq1xjmM6OoNgLYFWvogP9r5BgmD3hYg,6769
44
- modal/image.py,sha256=G7JrvObATiT29G3JT_-9O4QychpqW_8b8seWXTVd1fs,102635
45
- modal/image.pyi,sha256=s_AQaFoWmjLzffJGmiedFf9K1qQkedVIlsC6vRtlKS8,68161
44
+ modal/image.py,sha256=aCxkC4OvM6WQyEU0aO1YUfNnQ6xP0tOKlRLhuAWWkx8,102715
45
+ modal/image.pyi,sha256=nzUn5l527w5TSnZ01hqhkJBm_7XJ-5NK1rxOUvmXvK4,68321
46
46
  modal/io_streams.py,sha256=ut9tY_yEtiBsgQ40u_72Ns87IZHfbMxfnh8t6U9RSGA,16204
47
47
  modal/io_streams.pyi,sha256=aOun_jUFKHSJyUY6-7gKvNoxzcULsa8_hxdtEO7v-gk,13980
48
48
  modal/mount.py,sha256=EHttd7D0HNtGUDyB3DS26dJMdabG-SlIaD5c52dJnbE,36729
@@ -65,8 +65,8 @@ modal/retries.py,sha256=IvNLDM0f_GLUDD5VgEDoN09C88yoxSrCquinAuxT1Sc,5205
65
65
  modal/runner.py,sha256=ostdzYpQb-20tlD6dIq7bpWTkZkOhjJBNuMNektqnJA,24068
66
66
  modal/runner.pyi,sha256=lbwLljm1cC8d6PcNvmYQhkE8501V9fg0bYqqKX6G4r4,8489
67
67
  modal/running_app.py,sha256=v61mapYNV1-O-Uaho5EfJlryMLvIT9We0amUOSvSGx8,1188
68
- modal/sandbox.py,sha256=_hAoBwParMzooNUo02LRt-nC5RrTGUtOutyO9oI79Kc,40896
69
- modal/sandbox.pyi,sha256=GPPlsm-DiSUSgrxyA5bqkpuLlrfgmNR7Z7s3W0QLuQ0,41812
68
+ modal/sandbox.py,sha256=eQd0Cf9yTFCNshnj7oH8WvecbhVIwsEsmuXB9O-REis,40927
69
+ modal/sandbox.pyi,sha256=_ddnvZGauSRG-WelsMB5oPil8KVWb0PSvmuAzAzrLIw,41713
70
70
  modal/schedule.py,sha256=ng0g0AqNY5GQI9KhkXZQ5Wam5G42glbkqVQsNpBtbDE,3078
71
71
  modal/scheduler_placement.py,sha256=BAREdOY5HzHpzSBqt6jDVR6YC_jYfHMVqOzkyqQfngU,1235
72
72
  modal/secret.py,sha256=UaUmwYmT52VarDh92b0QzAa8_BNUAgBs-wE4eMQ6-B8,11967
@@ -151,7 +151,7 @@ modal/experimental/__init__.py,sha256=nuc7AL4r_Fs08DD5dciWFZhrV1nanwoClOfdTcudU0
151
151
  modal/experimental/flash.py,sha256=7-_RBNvm0tEpdxXWuPAj5HCxfN-hSHVBep8SEWgAhCQ,19721
152
152
  modal/experimental/flash.pyi,sha256=A8_qJGtGoXEzKDdHbvhmCw7oqfneFEvJQK3ZdTOvUdU,10830
153
153
  modal/experimental/ipython.py,sha256=TrCfmol9LGsRZMeDoeMPx3Hv3BFqQhYnmD_iH0pqdhk,2904
154
- modal-1.1.1.dev30.dist-info/licenses/LICENSE,sha256=psuoW8kuDP96RQsdhzwOqi6fyWv0ct8CR6Jr7He_P_k,10173
154
+ modal-1.1.1.dev32.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=3mqurCFq_Up0dPjsdMqv9pAltDPtveZUoMFOErSMCiE,103299
162
+ modal_proto/api.proto,sha256=AGSL2IfI2vPPMFzTKIdP81Xfai9UBMiyvkPY6PBcl1M,103834
163
163
  modal_proto/api_grpc.py,sha256=B8F07AbQT5s3sCEE_o-MHGwK2lqA3gdnLb_6oTWoIj8,126393
164
- modal_proto/api_pb2.py,sha256=8MBFdVp0ZwmYtcB-AXAZjo1T0p4NdaXFRtyk3-T5go4,363407
165
- modal_proto/api_pb2.pyi,sha256=BzL_rKxmq5nDCD8r9vBc3zmBm_EqesP0Ugag-jk-HpM,497475
164
+ modal_proto/api_pb2.py,sha256=sJ5iJk-yfxohD326UwHGulcIk1hCa82QOn8x2sIbwvM,364751
165
+ modal_proto/api_pb2.pyi,sha256=9OQMZ4RHYBeSskuU00AxAPpl7Cz9cE2CBLJSLusa2dY,501287
166
166
  modal_proto/api_pb2_grpc.py,sha256=gig1H1894_rLO9C5cYUwbX-JONt6nSpJenjfiFy3ZHk,272831
167
167
  modal_proto/api_pb2_grpc.pyi,sha256=kXE43WnhqwacvJ_HB7L-hIBGg0djP3rX4lSliJN49NE,64007
168
168
  modal_proto/modal_api_grpc.py,sha256=KL5Nw4AS9hJNxfL6VIeuxHz4jIUN7Unz7hYnoSsqyx0,19071
@@ -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=nHgWq15NyjO90KRKos0kXoMvqCjhMIz71qVP66on6mg,121
177
+ modal_version/__init__.py,sha256=0FnaUawWPlm4jT9eYBLmYSzEt_zJRZ5_ud7orYhA7kA,121
178
178
  modal_version/__main__.py,sha256=2FO0yYQQwDTh6udt1h-cBnGd1c4ZyHnHSI4BksxzVac,105
179
- modal-1.1.1.dev30.dist-info/METADATA,sha256=KoerTFR3tFSsiCFbuYy-9ibqaB5Nfm8Zgmx1qMEQpsk,2460
180
- modal-1.1.1.dev30.dist-info/WHEEL,sha256=1tXe9gY0PYatrMPMDd6jXqjfpz_B-Wqm32CPfRC58XU,91
181
- modal-1.1.1.dev30.dist-info/entry_points.txt,sha256=An-wYgeEUnm6xzrAP9_NTSTSciYvvEWsMZILtYrvpAI,46
182
- modal-1.1.1.dev30.dist-info/top_level.txt,sha256=4BWzoKYREKUZ5iyPzZpjqx4G8uB5TWxXPDwibLcVa7k,43
183
- modal-1.1.1.dev30.dist-info/RECORD,,
179
+ modal-1.1.1.dev32.dist-info/METADATA,sha256=IFIySw7kMC9fBo6SarFi0a2z8qrRg993cCAPKVqlPW8,2460
180
+ modal-1.1.1.dev32.dist-info/WHEEL,sha256=1tXe9gY0PYatrMPMDd6jXqjfpz_B-Wqm32CPfRC58XU,91
181
+ modal-1.1.1.dev32.dist-info/entry_points.txt,sha256=An-wYgeEUnm6xzrAP9_NTSTSciYvvEWsMZILtYrvpAI,46
182
+ modal-1.1.1.dev32.dist-info/top_level.txt,sha256=4BWzoKYREKUZ5iyPzZpjqx4G8uB5TWxXPDwibLcVa7k,43
183
+ modal-1.1.1.dev32.dist-info/RECORD,,
modal_proto/api.proto CHANGED
@@ -1140,15 +1140,19 @@ message DictLenResponse {
1140
1140
 
1141
1141
  message DictListRequest {
1142
1142
  string environment_name = 1;
1143
+ ListPagination pagination = 2;
1143
1144
  }
1144
1145
 
1145
1146
  message DictListResponse {
1146
1147
  message DictInfo {
1147
1148
  string name = 1;
1148
- double created_at = 2;
1149
+ double created_at = 2; // Superseded by metadata, used by clients up to 1.1.1
1150
+ string dict_id = 3;
1151
+ DictMetadata metadata = 4;
1149
1152
  }
1150
1153
 
1151
1154
  repeated DictInfo dicts = 1;
1155
+ string environment_name = 2;
1152
1156
  }
1153
1157
 
1154
1158
  message DictMetadata {
@@ -2093,6 +2097,11 @@ message InputInfo {
2093
2097
  bool task_first_input = 7;
2094
2098
  }
2095
2099
 
2100
+ message ListPagination {
2101
+ int32 max_objects = 1;
2102
+ double created_before = 2;
2103
+ }
2104
+
2096
2105
  message MapAwaitRequest {
2097
2106
  string function_call_id = 1;
2098
2107
  string last_entry_id = 2;
@@ -2441,19 +2450,22 @@ message QueueLenResponse {
2441
2450
 
2442
2451
  message QueueListRequest {
2443
2452
  string environment_name = 1;
2444
- // Allow client to report a bounded total size to reduce the number of partitions that need to be checked
2445
- int32 total_size_limit = 2;
2453
+ int32 total_size_limit = 2; // Limit on "number of partitions" reported, since checking them is costly
2454
+ ListPagination pagination = 3;
2446
2455
  }
2447
2456
 
2448
2457
  message QueueListResponse {
2449
2458
  message QueueInfo {
2450
2459
  string name = 1;
2451
- double created_at = 2;
2460
+ double created_at = 2; // Superseded by metadata, used by clients up to 1.1.1
2452
2461
  int32 num_partitions = 3;
2453
2462
  int32 total_size = 4;
2463
+ string queue_id = 5;
2464
+ QueueMetadata metadata = 6;
2454
2465
  }
2455
2466
 
2456
2467
  repeated QueueInfo queues = 1;
2468
+ string environment_name = 2;
2457
2469
  }
2458
2470
 
2459
2471
  message QueueMetadata {
@@ -2861,19 +2873,21 @@ message SecretGetOrCreateResponse {
2861
2873
 
2862
2874
  message SecretListItem {
2863
2875
  string label = 1;
2864
- double created_at = 2;
2876
+ double created_at = 2; // Superseded by metadata, used by clients up to 1.1.1
2865
2877
  double last_used_at = 3;
2866
- string environment_name = 4;
2878
+ string environment_name = 4; // Unused by client
2867
2879
  string secret_id = 5;
2880
+ SecretMetadata metadata = 6;
2868
2881
  }
2869
2882
 
2870
2883
  message SecretListRequest {
2871
- string environment_name = 1; // leaving empty will assume a singular environment
2884
+ string environment_name = 1;
2885
+ ListPagination pagination = 2;
2872
2886
  }
2873
2887
 
2874
2888
  message SecretListResponse {
2875
2889
  repeated SecretListItem items = 1;
2876
- string environment_name = 2; // the environment that was listed (useful when relying on "default" logic)
2890
+ string environment_name = 2;
2877
2891
  }
2878
2892
 
2879
2893
  message SecretMetadata {
@@ -3225,11 +3239,13 @@ message VolumeListFilesResponse {
3225
3239
  message VolumeListItem {
3226
3240
  string label = 1; // app name of object entity app
3227
3241
  string volume_id = 2;
3228
- double created_at = 3;
3242
+ double created_at = 3; // Superseded by metadata, used by clients up to 1.1.1
3243
+ VolumeMetadata metadata = 4;
3229
3244
  }
3230
3245
 
3231
3246
  message VolumeListRequest {
3232
3247
  string environment_name = 1;
3248
+ ListPagination pagination = 2;
3233
3249
  }
3234
3250
 
3235
3251
  message VolumeListResponse {