modal 1.1.5.dev19__py3-none-any.whl → 1.1.5.dev21__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/sandbox.pyi CHANGED
@@ -84,11 +84,13 @@ class _Sandbox(modal._object._Object):
84
84
  _tunnels: typing.Optional[dict[int, modal._tunnel.Tunnel]]
85
85
  _enable_snapshot: bool
86
86
 
87
+ @staticmethod
88
+ def _default_pty_info() -> modal_proto.api_pb2.PTYInfo: ...
87
89
  @staticmethod
88
90
  def _new(
89
91
  args: collections.abc.Sequence[str],
90
92
  image: modal.image._Image,
91
- secrets: collections.abc.Sequence[modal.secret._Secret],
93
+ secrets: collections.abc.Collection[modal.secret._Secret],
92
94
  name: typing.Optional[str] = None,
93
95
  timeout: int = 300,
94
96
  idle_timeout: typing.Optional[int] = None,
@@ -106,6 +108,7 @@ class _Sandbox(modal._object._Object):
106
108
  typing.Union[str, os.PathLike],
107
109
  typing.Union[modal.volume._Volume, modal.cloud_bucket_mount._CloudBucketMount],
108
110
  ] = {},
111
+ pty: bool = False,
109
112
  pty_info: typing.Optional[modal_proto.api_pb2.PTYInfo] = None,
110
113
  encrypted_ports: collections.abc.Sequence[int] = [],
111
114
  h2_ports: collections.abc.Sequence[int] = [],
@@ -125,7 +128,8 @@ class _Sandbox(modal._object._Object):
125
128
  app: typing.Optional[modal.app._App] = None,
126
129
  name: typing.Optional[str] = None,
127
130
  image: typing.Optional[modal.image._Image] = None,
128
- secrets: collections.abc.Sequence[modal.secret._Secret] = (),
131
+ env: typing.Optional[dict[str, typing.Optional[str]]] = None,
132
+ secrets: typing.Optional[collections.abc.Collection[modal.secret._Secret]] = None,
129
133
  network_file_systems: dict[typing.Union[str, os.PathLike], modal.network_file_system._NetworkFileSystem] = {},
130
134
  timeout: int = 300,
131
135
  idle_timeout: typing.Optional[int] = None,
@@ -141,7 +145,7 @@ class _Sandbox(modal._object._Object):
141
145
  typing.Union[str, os.PathLike],
142
146
  typing.Union[modal.volume._Volume, modal.cloud_bucket_mount._CloudBucketMount],
143
147
  ] = {},
144
- pty_info: typing.Optional[modal_proto.api_pb2.PTYInfo] = None,
148
+ pty: bool = False,
145
149
  encrypted_ports: collections.abc.Sequence[int] = [],
146
150
  h2_ports: collections.abc.Sequence[int] = [],
147
151
  unencrypted_ports: collections.abc.Sequence[int] = [],
@@ -152,6 +156,7 @@ class _Sandbox(modal._object._Object):
152
156
  _experimental_scheduler_placement: typing.Optional[modal.scheduler_placement.SchedulerPlacement] = None,
153
157
  client: typing.Optional[modal.client._Client] = None,
154
158
  environment_name: typing.Optional[str] = None,
159
+ pty_info: typing.Optional[modal_proto.api_pb2.PTYInfo] = None,
155
160
  ) -> _Sandbox:
156
161
  """Create a new Sandbox to run untrusted, arbitrary code.
157
162
 
@@ -174,7 +179,8 @@ class _Sandbox(modal._object._Object):
174
179
  app: typing.Optional[modal.app._App] = None,
175
180
  name: typing.Optional[str] = None,
176
181
  image: typing.Optional[modal.image._Image] = None,
177
- secrets: collections.abc.Sequence[modal.secret._Secret] = (),
182
+ env: typing.Optional[dict[str, typing.Optional[str]]] = None,
183
+ secrets: typing.Optional[collections.abc.Collection[modal.secret._Secret]] = None,
178
184
  mounts: collections.abc.Sequence[modal.mount._Mount] = (),
179
185
  network_file_systems: dict[typing.Union[str, os.PathLike], modal.network_file_system._NetworkFileSystem] = {},
180
186
  timeout: int = 300,
@@ -191,7 +197,7 @@ class _Sandbox(modal._object._Object):
191
197
  typing.Union[str, os.PathLike],
192
198
  typing.Union[modal.volume._Volume, modal.cloud_bucket_mount._CloudBucketMount],
193
199
  ] = {},
194
- pty_info: typing.Optional[modal_proto.api_pb2.PTYInfo] = None,
200
+ pty: bool = False,
195
201
  encrypted_ports: collections.abc.Sequence[int] = [],
196
202
  h2_ports: collections.abc.Sequence[int] = [],
197
203
  unencrypted_ports: collections.abc.Sequence[int] = [],
@@ -201,7 +207,16 @@ class _Sandbox(modal._object._Object):
201
207
  _experimental_scheduler_placement: typing.Optional[modal.scheduler_placement.SchedulerPlacement] = None,
202
208
  client: typing.Optional[modal.client._Client] = None,
203
209
  verbose: bool = False,
204
- ): ...
210
+ pty_info: typing.Optional[modal_proto.api_pb2.PTYInfo] = None,
211
+ ):
212
+ """Private method used internally.
213
+
214
+ This method exposes some internal arguments (currently `mounts`) which are not in the public API.
215
+ `mounts` is currently only used by modal shell (cli) to provide a function's mounts to the
216
+ sandbox that runs the shell session.
217
+ """
218
+ ...
219
+
205
220
  def _hydrate_metadata(self, handle_metadata: typing.Optional[google.protobuf.message.Message]): ...
206
221
  @staticmethod
207
222
  async def from_name(
@@ -290,30 +305,53 @@ class _Sandbox(modal._object._Object):
290
305
  async def exec(
291
306
  self,
292
307
  *args: str,
293
- pty_info: typing.Optional[modal_proto.api_pb2.PTYInfo] = None,
294
308
  stdout: modal.stream_type.StreamType = modal.stream_type.StreamType.PIPE,
295
309
  stderr: modal.stream_type.StreamType = modal.stream_type.StreamType.PIPE,
296
310
  timeout: typing.Optional[int] = None,
297
311
  workdir: typing.Optional[str] = None,
298
- secrets: collections.abc.Sequence[modal.secret._Secret] = (),
312
+ env: typing.Optional[dict[str, typing.Optional[str]]] = None,
313
+ secrets: typing.Optional[collections.abc.Collection[modal.secret._Secret]] = None,
299
314
  text: typing.Literal[True] = True,
300
315
  bufsize: typing.Literal[-1, 1] = -1,
316
+ pty: bool = False,
317
+ pty_info: typing.Optional[modal_proto.api_pb2.PTYInfo] = None,
301
318
  _pty_info: typing.Optional[modal_proto.api_pb2.PTYInfo] = None,
302
319
  ) -> modal.container_process._ContainerProcess[str]: ...
303
320
  @typing.overload
304
321
  async def exec(
305
322
  self,
306
323
  *args: str,
307
- pty_info: typing.Optional[modal_proto.api_pb2.PTYInfo] = None,
308
324
  stdout: modal.stream_type.StreamType = modal.stream_type.StreamType.PIPE,
309
325
  stderr: modal.stream_type.StreamType = modal.stream_type.StreamType.PIPE,
310
326
  timeout: typing.Optional[int] = None,
311
327
  workdir: typing.Optional[str] = None,
312
- secrets: collections.abc.Sequence[modal.secret._Secret] = (),
328
+ env: typing.Optional[dict[str, typing.Optional[str]]] = None,
329
+ secrets: typing.Optional[collections.abc.Collection[modal.secret._Secret]] = None,
313
330
  text: typing.Literal[False] = False,
314
331
  bufsize: typing.Literal[-1, 1] = -1,
332
+ pty: bool = False,
333
+ pty_info: typing.Optional[modal_proto.api_pb2.PTYInfo] = None,
315
334
  _pty_info: typing.Optional[modal_proto.api_pb2.PTYInfo] = None,
316
335
  ) -> modal.container_process._ContainerProcess[bytes]: ...
336
+ async def _exec(
337
+ self,
338
+ *args: str,
339
+ pty_info: typing.Optional[modal_proto.api_pb2.PTYInfo] = None,
340
+ stdout: modal.stream_type.StreamType = modal.stream_type.StreamType.PIPE,
341
+ stderr: modal.stream_type.StreamType = modal.stream_type.StreamType.PIPE,
342
+ timeout: typing.Optional[int] = None,
343
+ workdir: typing.Optional[str] = None,
344
+ env: typing.Optional[dict[str, typing.Optional[str]]] = None,
345
+ secrets: typing.Optional[collections.abc.Collection[modal.secret._Secret]] = None,
346
+ text: bool = True,
347
+ bufsize: typing.Literal[-1, 1] = -1,
348
+ ) -> typing.Union[modal.container_process._ContainerProcess[bytes], modal.container_process._ContainerProcess[str]]:
349
+ """Private method used internally.
350
+
351
+ This method exposes some internal arguments (currently `pty_info`) which are not in the public API.
352
+ """
353
+ ...
354
+
317
355
  async def _experimental_snapshot(self) -> modal.snapshot._SandboxSnapshot: ...
318
356
  @staticmethod
319
357
  async def _experimental_from_snapshot(
@@ -407,11 +445,13 @@ class Sandbox(modal.object.Object):
407
445
  """mdmd:hidden"""
408
446
  ...
409
447
 
448
+ @staticmethod
449
+ def _default_pty_info() -> modal_proto.api_pb2.PTYInfo: ...
410
450
  @staticmethod
411
451
  def _new(
412
452
  args: collections.abc.Sequence[str],
413
453
  image: modal.image.Image,
414
- secrets: collections.abc.Sequence[modal.secret.Secret],
454
+ secrets: collections.abc.Collection[modal.secret.Secret],
415
455
  name: typing.Optional[str] = None,
416
456
  timeout: int = 300,
417
457
  idle_timeout: typing.Optional[int] = None,
@@ -428,6 +468,7 @@ class Sandbox(modal.object.Object):
428
468
  volumes: dict[
429
469
  typing.Union[str, os.PathLike], typing.Union[modal.volume.Volume, modal.cloud_bucket_mount.CloudBucketMount]
430
470
  ] = {},
471
+ pty: bool = False,
431
472
  pty_info: typing.Optional[modal_proto.api_pb2.PTYInfo] = None,
432
473
  encrypted_ports: collections.abc.Sequence[int] = [],
433
474
  h2_ports: collections.abc.Sequence[int] = [],
@@ -449,7 +490,8 @@ class Sandbox(modal.object.Object):
449
490
  app: typing.Optional[modal.app.App] = None,
450
491
  name: typing.Optional[str] = None,
451
492
  image: typing.Optional[modal.image.Image] = None,
452
- secrets: collections.abc.Sequence[modal.secret.Secret] = (),
493
+ env: typing.Optional[dict[str, typing.Optional[str]]] = None,
494
+ secrets: typing.Optional[collections.abc.Collection[modal.secret.Secret]] = None,
453
495
  network_file_systems: dict[
454
496
  typing.Union[str, os.PathLike], modal.network_file_system.NetworkFileSystem
455
497
  ] = {},
@@ -467,7 +509,7 @@ class Sandbox(modal.object.Object):
467
509
  typing.Union[str, os.PathLike],
468
510
  typing.Union[modal.volume.Volume, modal.cloud_bucket_mount.CloudBucketMount],
469
511
  ] = {},
470
- pty_info: typing.Optional[modal_proto.api_pb2.PTYInfo] = None,
512
+ pty: bool = False,
471
513
  encrypted_ports: collections.abc.Sequence[int] = [],
472
514
  h2_ports: collections.abc.Sequence[int] = [],
473
515
  unencrypted_ports: collections.abc.Sequence[int] = [],
@@ -478,6 +520,7 @@ class Sandbox(modal.object.Object):
478
520
  _experimental_scheduler_placement: typing.Optional[modal.scheduler_placement.SchedulerPlacement] = None,
479
521
  client: typing.Optional[modal.client.Client] = None,
480
522
  environment_name: typing.Optional[str] = None,
523
+ pty_info: typing.Optional[modal_proto.api_pb2.PTYInfo] = None,
481
524
  ) -> Sandbox:
482
525
  """Create a new Sandbox to run untrusted, arbitrary code.
483
526
 
@@ -501,7 +544,8 @@ class Sandbox(modal.object.Object):
501
544
  app: typing.Optional[modal.app.App] = None,
502
545
  name: typing.Optional[str] = None,
503
546
  image: typing.Optional[modal.image.Image] = None,
504
- secrets: collections.abc.Sequence[modal.secret.Secret] = (),
547
+ env: typing.Optional[dict[str, typing.Optional[str]]] = None,
548
+ secrets: typing.Optional[collections.abc.Collection[modal.secret.Secret]] = None,
505
549
  network_file_systems: dict[
506
550
  typing.Union[str, os.PathLike], modal.network_file_system.NetworkFileSystem
507
551
  ] = {},
@@ -519,7 +563,7 @@ class Sandbox(modal.object.Object):
519
563
  typing.Union[str, os.PathLike],
520
564
  typing.Union[modal.volume.Volume, modal.cloud_bucket_mount.CloudBucketMount],
521
565
  ] = {},
522
- pty_info: typing.Optional[modal_proto.api_pb2.PTYInfo] = None,
566
+ pty: bool = False,
523
567
  encrypted_ports: collections.abc.Sequence[int] = [],
524
568
  h2_ports: collections.abc.Sequence[int] = [],
525
569
  unencrypted_ports: collections.abc.Sequence[int] = [],
@@ -530,6 +574,7 @@ class Sandbox(modal.object.Object):
530
574
  _experimental_scheduler_placement: typing.Optional[modal.scheduler_placement.SchedulerPlacement] = None,
531
575
  client: typing.Optional[modal.client.Client] = None,
532
576
  environment_name: typing.Optional[str] = None,
577
+ pty_info: typing.Optional[modal_proto.api_pb2.PTYInfo] = None,
533
578
  ) -> Sandbox:
534
579
  """Create a new Sandbox to run untrusted, arbitrary code.
535
580
 
@@ -556,7 +601,8 @@ class Sandbox(modal.object.Object):
556
601
  app: typing.Optional[modal.app.App] = None,
557
602
  name: typing.Optional[str] = None,
558
603
  image: typing.Optional[modal.image.Image] = None,
559
- secrets: collections.abc.Sequence[modal.secret.Secret] = (),
604
+ env: typing.Optional[dict[str, typing.Optional[str]]] = None,
605
+ secrets: typing.Optional[collections.abc.Collection[modal.secret.Secret]] = None,
560
606
  mounts: collections.abc.Sequence[modal.mount.Mount] = (),
561
607
  network_file_systems: dict[
562
608
  typing.Union[str, os.PathLike], modal.network_file_system.NetworkFileSystem
@@ -575,7 +621,7 @@ class Sandbox(modal.object.Object):
575
621
  typing.Union[str, os.PathLike],
576
622
  typing.Union[modal.volume.Volume, modal.cloud_bucket_mount.CloudBucketMount],
577
623
  ] = {},
578
- pty_info: typing.Optional[modal_proto.api_pb2.PTYInfo] = None,
624
+ pty: bool = False,
579
625
  encrypted_ports: collections.abc.Sequence[int] = [],
580
626
  h2_ports: collections.abc.Sequence[int] = [],
581
627
  unencrypted_ports: collections.abc.Sequence[int] = [],
@@ -585,7 +631,16 @@ class Sandbox(modal.object.Object):
585
631
  _experimental_scheduler_placement: typing.Optional[modal.scheduler_placement.SchedulerPlacement] = None,
586
632
  client: typing.Optional[modal.client.Client] = None,
587
633
  verbose: bool = False,
588
- ): ...
634
+ pty_info: typing.Optional[modal_proto.api_pb2.PTYInfo] = None,
635
+ ):
636
+ """Private method used internally.
637
+
638
+ This method exposes some internal arguments (currently `mounts`) which are not in the public API.
639
+ `mounts` is currently only used by modal shell (cli) to provide a function's mounts to the
640
+ sandbox that runs the shell session.
641
+ """
642
+ ...
643
+
589
644
  async def aio(
590
645
  self,
591
646
  /,
@@ -593,7 +648,8 @@ class Sandbox(modal.object.Object):
593
648
  app: typing.Optional[modal.app.App] = None,
594
649
  name: typing.Optional[str] = None,
595
650
  image: typing.Optional[modal.image.Image] = None,
596
- secrets: collections.abc.Sequence[modal.secret.Secret] = (),
651
+ env: typing.Optional[dict[str, typing.Optional[str]]] = None,
652
+ secrets: typing.Optional[collections.abc.Collection[modal.secret.Secret]] = None,
597
653
  mounts: collections.abc.Sequence[modal.mount.Mount] = (),
598
654
  network_file_systems: dict[
599
655
  typing.Union[str, os.PathLike], modal.network_file_system.NetworkFileSystem
@@ -612,7 +668,7 @@ class Sandbox(modal.object.Object):
612
668
  typing.Union[str, os.PathLike],
613
669
  typing.Union[modal.volume.Volume, modal.cloud_bucket_mount.CloudBucketMount],
614
670
  ] = {},
615
- pty_info: typing.Optional[modal_proto.api_pb2.PTYInfo] = None,
671
+ pty: bool = False,
616
672
  encrypted_ports: collections.abc.Sequence[int] = [],
617
673
  h2_ports: collections.abc.Sequence[int] = [],
618
674
  unencrypted_ports: collections.abc.Sequence[int] = [],
@@ -622,7 +678,15 @@ class Sandbox(modal.object.Object):
622
678
  _experimental_scheduler_placement: typing.Optional[modal.scheduler_placement.SchedulerPlacement] = None,
623
679
  client: typing.Optional[modal.client.Client] = None,
624
680
  verbose: bool = False,
625
- ): ...
681
+ pty_info: typing.Optional[modal_proto.api_pb2.PTYInfo] = None,
682
+ ):
683
+ """Private method used internally.
684
+
685
+ This method exposes some internal arguments (currently `mounts`) which are not in the public API.
686
+ `mounts` is currently only used by modal shell (cli) to provide a function's mounts to the
687
+ sandbox that runs the shell session.
688
+ """
689
+ ...
626
690
 
627
691
  _create: ___create_spec
628
692
 
@@ -834,14 +898,16 @@ class Sandbox(modal.object.Object):
834
898
  self,
835
899
  /,
836
900
  *args: str,
837
- pty_info: typing.Optional[modal_proto.api_pb2.PTYInfo] = None,
838
901
  stdout: modal.stream_type.StreamType = modal.stream_type.StreamType.PIPE,
839
902
  stderr: modal.stream_type.StreamType = modal.stream_type.StreamType.PIPE,
840
903
  timeout: typing.Optional[int] = None,
841
904
  workdir: typing.Optional[str] = None,
842
- secrets: collections.abc.Sequence[modal.secret.Secret] = (),
905
+ env: typing.Optional[dict[str, typing.Optional[str]]] = None,
906
+ secrets: typing.Optional[collections.abc.Collection[modal.secret.Secret]] = None,
843
907
  text: typing.Literal[True] = True,
844
908
  bufsize: typing.Literal[-1, 1] = -1,
909
+ pty: bool = False,
910
+ pty_info: typing.Optional[modal_proto.api_pb2.PTYInfo] = None,
845
911
  _pty_info: typing.Optional[modal_proto.api_pb2.PTYInfo] = None,
846
912
  ) -> modal.container_process.ContainerProcess[str]: ...
847
913
  @typing.overload
@@ -849,14 +915,16 @@ class Sandbox(modal.object.Object):
849
915
  self,
850
916
  /,
851
917
  *args: str,
852
- pty_info: typing.Optional[modal_proto.api_pb2.PTYInfo] = None,
853
918
  stdout: modal.stream_type.StreamType = modal.stream_type.StreamType.PIPE,
854
919
  stderr: modal.stream_type.StreamType = modal.stream_type.StreamType.PIPE,
855
920
  timeout: typing.Optional[int] = None,
856
921
  workdir: typing.Optional[str] = None,
857
- secrets: collections.abc.Sequence[modal.secret.Secret] = (),
922
+ env: typing.Optional[dict[str, typing.Optional[str]]] = None,
923
+ secrets: typing.Optional[collections.abc.Collection[modal.secret.Secret]] = None,
858
924
  text: typing.Literal[False] = False,
859
925
  bufsize: typing.Literal[-1, 1] = -1,
926
+ pty: bool = False,
927
+ pty_info: typing.Optional[modal_proto.api_pb2.PTYInfo] = None,
860
928
  _pty_info: typing.Optional[modal_proto.api_pb2.PTYInfo] = None,
861
929
  ) -> modal.container_process.ContainerProcess[bytes]: ...
862
930
  @typing.overload
@@ -864,14 +932,16 @@ class Sandbox(modal.object.Object):
864
932
  self,
865
933
  /,
866
934
  *args: str,
867
- pty_info: typing.Optional[modal_proto.api_pb2.PTYInfo] = None,
868
935
  stdout: modal.stream_type.StreamType = modal.stream_type.StreamType.PIPE,
869
936
  stderr: modal.stream_type.StreamType = modal.stream_type.StreamType.PIPE,
870
937
  timeout: typing.Optional[int] = None,
871
938
  workdir: typing.Optional[str] = None,
872
- secrets: collections.abc.Sequence[modal.secret.Secret] = (),
939
+ env: typing.Optional[dict[str, typing.Optional[str]]] = None,
940
+ secrets: typing.Optional[collections.abc.Collection[modal.secret.Secret]] = None,
873
941
  text: typing.Literal[True] = True,
874
942
  bufsize: typing.Literal[-1, 1] = -1,
943
+ pty: bool = False,
944
+ pty_info: typing.Optional[modal_proto.api_pb2.PTYInfo] = None,
875
945
  _pty_info: typing.Optional[modal_proto.api_pb2.PTYInfo] = None,
876
946
  ) -> modal.container_process.ContainerProcess[str]: ...
877
947
  @typing.overload
@@ -879,19 +949,68 @@ class Sandbox(modal.object.Object):
879
949
  self,
880
950
  /,
881
951
  *args: str,
882
- pty_info: typing.Optional[modal_proto.api_pb2.PTYInfo] = None,
883
952
  stdout: modal.stream_type.StreamType = modal.stream_type.StreamType.PIPE,
884
953
  stderr: modal.stream_type.StreamType = modal.stream_type.StreamType.PIPE,
885
954
  timeout: typing.Optional[int] = None,
886
955
  workdir: typing.Optional[str] = None,
887
- secrets: collections.abc.Sequence[modal.secret.Secret] = (),
956
+ env: typing.Optional[dict[str, typing.Optional[str]]] = None,
957
+ secrets: typing.Optional[collections.abc.Collection[modal.secret.Secret]] = None,
888
958
  text: typing.Literal[False] = False,
889
959
  bufsize: typing.Literal[-1, 1] = -1,
960
+ pty: bool = False,
961
+ pty_info: typing.Optional[modal_proto.api_pb2.PTYInfo] = None,
890
962
  _pty_info: typing.Optional[modal_proto.api_pb2.PTYInfo] = None,
891
963
  ) -> modal.container_process.ContainerProcess[bytes]: ...
892
964
 
893
965
  exec: __exec_spec[typing_extensions.Self]
894
966
 
967
+ class ___exec_spec(typing_extensions.Protocol[SUPERSELF]):
968
+ def __call__(
969
+ self,
970
+ /,
971
+ *args: str,
972
+ pty_info: typing.Optional[modal_proto.api_pb2.PTYInfo] = None,
973
+ stdout: modal.stream_type.StreamType = modal.stream_type.StreamType.PIPE,
974
+ stderr: modal.stream_type.StreamType = modal.stream_type.StreamType.PIPE,
975
+ timeout: typing.Optional[int] = None,
976
+ workdir: typing.Optional[str] = None,
977
+ env: typing.Optional[dict[str, typing.Optional[str]]] = None,
978
+ secrets: typing.Optional[collections.abc.Collection[modal.secret.Secret]] = None,
979
+ text: bool = True,
980
+ bufsize: typing.Literal[-1, 1] = -1,
981
+ ) -> typing.Union[
982
+ modal.container_process.ContainerProcess[bytes], modal.container_process.ContainerProcess[str]
983
+ ]:
984
+ """Private method used internally.
985
+
986
+ This method exposes some internal arguments (currently `pty_info`) which are not in the public API.
987
+ """
988
+ ...
989
+
990
+ async def aio(
991
+ self,
992
+ /,
993
+ *args: str,
994
+ pty_info: typing.Optional[modal_proto.api_pb2.PTYInfo] = None,
995
+ stdout: modal.stream_type.StreamType = modal.stream_type.StreamType.PIPE,
996
+ stderr: modal.stream_type.StreamType = modal.stream_type.StreamType.PIPE,
997
+ timeout: typing.Optional[int] = None,
998
+ workdir: typing.Optional[str] = None,
999
+ env: typing.Optional[dict[str, typing.Optional[str]]] = None,
1000
+ secrets: typing.Optional[collections.abc.Collection[modal.secret.Secret]] = None,
1001
+ text: bool = True,
1002
+ bufsize: typing.Literal[-1, 1] = -1,
1003
+ ) -> typing.Union[
1004
+ modal.container_process.ContainerProcess[bytes], modal.container_process.ContainerProcess[str]
1005
+ ]:
1006
+ """Private method used internally.
1007
+
1008
+ This method exposes some internal arguments (currently `pty_info`) which are not in the public API.
1009
+ """
1010
+ ...
1011
+
1012
+ _exec: ___exec_spec[typing_extensions.Self]
1013
+
895
1014
  class ___experimental_snapshot_spec(typing_extensions.Protocol[SUPERSELF]):
896
1015
  def __call__(self, /) -> modal.snapshot.SandboxSnapshot: ...
897
1016
  async def aio(self, /) -> modal.snapshot.SandboxSnapshot: ...
modal/secret.py CHANGED
@@ -239,7 +239,7 @@ class _Secret(_Object, type_prefix="st"):
239
239
  @staticmethod
240
240
  def from_dict(
241
241
  env_dict: dict[
242
- str, Union[str, None]
242
+ str, Optional[str]
243
243
  ] = {}, # dict of entries to be inserted as environment variables in functions using the secret
244
244
  ) -> "_Secret":
245
245
  """Create a secret from a str-str dictionary. Values can also be `None`, which is ignored.
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: modal
3
- Version: 1.1.5.dev19
3
+ Version: 1.1.5.dev21
4
4
  Summary: Python client library for Modal
5
5
  Author-email: Modal Labs <support@modal.com>
6
6
  License: Apache-2.0
@@ -3,13 +3,13 @@ modal/__main__.py,sha256=45H-GtwzaDfN-1nP4_HYvzN3s7AG_HXR4-ynrsjO_OI,2803
3
3
  modal/_clustered_functions.py,sha256=Sy4Sf_17EO8OL-FUe8LYcm4hrqLyQFCssNhr3p0SroU,3013
4
4
  modal/_clustered_functions.pyi,sha256=JmYwAGOLEnD5AF-gYF9O5tu-SgGjeoJz-X1j48b1Ijg,1157
5
5
  modal/_container_entrypoint.py,sha256=a1HAQYh1gGpqHuhSw6AW7XDYHztbeYr5a8iNnfCnoks,29023
6
- modal/_functions.py,sha256=JL6oB_uSTL6T3JCFrespKlbWmHdCQ66sspbQ9Ys1w88,89527
6
+ modal/_functions.py,sha256=1ZG8TvI3TTByfzArrjSww6pQB1iH4be0I3yQfkMfgAY,89780
7
7
  modal/_ipython.py,sha256=TW1fkVOmZL3YYqdS2YlM1hqpf654Yf8ZyybHdBnlhSw,301
8
8
  modal/_location.py,sha256=joiX-0ZeutEUDTrrqLF1GHXCdVLF-rHzstocbMcd_-k,366
9
9
  modal/_object.py,sha256=gwsLdXb-Ecd8nH8LVCo8oVZPzzdyo9BrN1DjgQmsSuM,11967
10
10
  modal/_output.py,sha256=G9CeSQEBzjhveWWEzWmYa5Uwbu4lZf8N8IFH1UM4fU0,25803
11
11
  modal/_partial_function.py,sha256=Yqk97hLS6vi8nWWVpzS5TSWbndWMdCtkhccdnyDJgBk,37302
12
- modal/_pty.py,sha256=JZfPDDpzqICZqtyPI_oMJf_9w-p_lLNuzHhwhodUXio,1329
12
+ modal/_pty.py,sha256=E58MQ8d5-wkbMatRKpQR-G9FdbCRcZGiZxOpGy__VuY,1481
13
13
  modal/_resolver.py,sha256=2RWvm34cNSnbv1v7izJMNZgfvpLDD6LzaBlr0lIrLnY,7364
14
14
  modal/_resources.py,sha256=NMAp0GCLutiZI4GuKSIVnRHVlstoD3hNGUabjTUtzf4,1794
15
15
  modal/_serialization.py,sha256=wt09fOwo-E9ATlOG91O9RXCTPRNtsm97v4Unk8Bzd-8,24145
@@ -18,15 +18,15 @@ modal/_tunnel.py,sha256=zTBxBiuH1O22tS1OliAJdIsSmaZS8PlnifS_6S5z-mk,6320
18
18
  modal/_tunnel.pyi,sha256=rvC7USR2BcKkbZIeCJXwf7-UfGE-LPLjKsGNiK7Lxa4,13366
19
19
  modal/_type_manager.py,sha256=DWjgmjYJuOagw2erin506UUbG2H5UzZCFEekS-7hmfA,9087
20
20
  modal/_watcher.py,sha256=K6LYnlmSGQB4tWWI9JADv-tvSvQ1j522FwT71B51CX8,3584
21
- modal/app.py,sha256=F4baVULljFq0CwC_7U-EKNRNx7CYeWBKudjjYUuWc4U,48416
22
- modal/app.pyi,sha256=AbXJCBkyt2rI_-M3VbTBYb32at0P6iRZuoC87xY_JrQ,43591
21
+ modal/app.py,sha256=OBFaL-8KVMtBMEmspHA76LvblPdnSgdoGioLkQBjhdQ,48851
22
+ modal/app.pyi,sha256=Cqk3pOeEEroCLejj3yJ3XHDqt0rMzeSA295gMKEx6Ww,43955
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=mZ8qSJ6crYqbicfuo2eP0qib80Z0IPjaAWOQve0psJo,15831
25
+ modal/client.pyi,sha256=CTjbsinR4MoG2w0yKhhvFfDHGHvH7bRGU3oNdFRUePo,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
- modal/cls.py,sha256=pTEO7pHjlO7taMbIqs4oI9ZZgKDJpVKyGkO5ZT0w6tQ,40934
29
- modal/cls.pyi,sha256=C1eK-AkN-QaeXu0qmMZVgJmkb1tYAFS43iEG37takDs,28959
28
+ modal/cls.py,sha256=qb9h_ZKiz2q7fwKQ-5bdkz1x3tdu6sIm-UI09aQjPPc,41101
29
+ modal/cls.pyi,sha256=C_bOybNa5iaVCcea-o8M1ATqpAbsQTtS9jN3OiEqhNY,29171
30
30
  modal/config.py,sha256=hpcfT03tdB-G0exZ4HjYDHwDtA8XcnliiyZzCcTbr8o,12124
31
31
  modal/container_process.py,sha256=Mutkl7sg_WR5zP4oJiWSC-3UdYRqp0zdKi1shZbi-bk,6996
32
32
  modal/container_process.pyi,sha256=9m-st3hCUlNN1GOTctfPPvIvoLtEl7FbuGWwif5-7YU,6037
@@ -39,10 +39,10 @@ modal/file_io.py,sha256=OSKr77TujcXGJW1iikzYiHckLSmv07QBgBHcxxYEkoI,21456
39
39
  modal/file_io.pyi,sha256=xtO6Glf_BFwDE7QiQQo24QqcMf_Vv-iz7WojcGVlLBU,15932
40
40
  modal/file_pattern_matcher.py,sha256=A_Kdkej6q7YQyhM_2-BvpFmPqJ0oHb54B6yf9VqvPVE,8116
41
41
  modal/functions.py,sha256=kcNHvqeGBxPI7Cgd57NIBBghkfbeFJzXO44WW0jSmao,325
42
- modal/functions.pyi,sha256=F3Dll-9c3d8c8NuJuEYICUEB-sa67uWU75L111npwbA,39404
42
+ modal/functions.pyi,sha256=_xKitEUTNQStdZVtYBgWidtyHHsnjXUYgbirM0eMDyM,39558
43
43
  modal/gpu.py,sha256=Fe5ORvVPDIstSq1xjmM6OoNgLYFWvogP9r5BgmD3hYg,6769
44
- modal/image.py,sha256=nXN9k_6gApHFy8-Bk_XT2Zu3jsDsGVrC3QcuiDC4yRY,103543
45
- modal/image.pyi,sha256=vKdb5PpYM8wcpq9PQegeVMjrPLzAipuV4q994NZiL84,69325
44
+ modal/image.py,sha256=wlOJ4bQxFLx2PlIIAmqZnFxFeERbZJGLYYWO7wlIZso,105969
45
+ modal/image.pyi,sha256=iFC8W6bl3KH_w15pm7B_UqeeGJZ44X7v20Ue_FlxPxw,71695
46
46
  modal/io_streams.py,sha256=hZOVc5beOAm8S_VQQmmKUbk_BJ9OltN83RY0yMPqUDo,16545
47
47
  modal/io_streams.pyi,sha256=aOun_jUFKHSJyUY6-7gKvNoxzcULsa8_hxdtEO7v-gk,13980
48
48
  modal/mount.py,sha256=3WpYaaCBGLyawW2uhQzB4jXRBQEsuuRMxnCFsXSa9_k,37470
@@ -62,14 +62,14 @@ modal/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
62
62
  modal/queue.py,sha256=ooD_-z3gthje_kxBZQ_xDfwyTy_cxtyn5oM9wt2sXTo,27133
63
63
  modal/queue.pyi,sha256=EJ6extEFKclbEUBXk-PuRJ4bkUYRwWgAAUNofQBbBmo,39509
64
64
  modal/retries.py,sha256=IvNLDM0f_GLUDD5VgEDoN09C88yoxSrCquinAuxT1Sc,5205
65
- modal/runner.py,sha256=ostdzYpQb-20tlD6dIq7bpWTkZkOhjJBNuMNektqnJA,24068
65
+ modal/runner.py,sha256=Q9wGTeg6sYyusTgwXSinoIti4Gv5LsiadAvflgETBHc,24070
66
66
  modal/runner.pyi,sha256=lbwLljm1cC8d6PcNvmYQhkE8501V9fg0bYqqKX6G4r4,8489
67
67
  modal/running_app.py,sha256=v61mapYNV1-O-Uaho5EfJlryMLvIT9We0amUOSvSGx8,1188
68
- modal/sandbox.py,sha256=GYSF--CsWnm-uta5xEnhilMRhx4burLFJ2VsAJCl9l0,43519
69
- modal/sandbox.pyi,sha256=eu7ZcHRlrXAC54v0Q1pq3E--w0L9iHSLLW6gQsVS_Q0,44265
68
+ modal/sandbox.py,sha256=0UxFF-yCfD7SiQbAWCZT6f7lNk7wCY6A4p8lvwfImgk,45162
69
+ modal/sandbox.pyi,sha256=pFVN-LZvRt3eMI_XFTJpPtBwxwoRc8CkytAYe4R_SU8,50009
70
70
  modal/schedule.py,sha256=ng0g0AqNY5GQI9KhkXZQ5Wam5G42glbkqVQsNpBtbDE,3078
71
71
  modal/scheduler_placement.py,sha256=BAREdOY5HzHpzSBqt6jDVR6YC_jYfHMVqOzkyqQfngU,1235
72
- modal/secret.py,sha256=jcNJKc4ZB2nvAn7HJFawInqE-_7sbB43IWLZwyLBQ28,19308
72
+ modal/secret.py,sha256=EifrHTx7QmU4DTU3QwedD7O4ma52hHL4Qku1dADjY0E,19305
73
73
  modal/secret.pyi,sha256=7EzD7nZGSZHQR-Hf5aRi0ooZGxvy1-G8A4ul-M04Qs4,21552
74
74
  modal/serving.py,sha256=3I3WBeVbzZY258u9PXBCW_dZBgypq3OhwBuTVvlgubE,4423
75
75
  modal/serving.pyi,sha256=YfixTaWikyYpwhnNxCHMZnDDQiPmV1xJ87QF91U_WGU,1924
@@ -153,7 +153,7 @@ modal/experimental/__init__.py,sha256=fCqzo_f3vcY750vHtd7CtLs5dvdM_C0ZLLGb3zXuK9
153
153
  modal/experimental/flash.py,sha256=8HOHZ0XLSN8Znzsi6hGggS46CC6t_7IgGWyNoeSXS9o,28417
154
154
  modal/experimental/flash.pyi,sha256=R9VV0UDotiY9BRUjacB-xI4qhR3yBymAvEZFRFHztLs,15143
155
155
  modal/experimental/ipython.py,sha256=TrCfmol9LGsRZMeDoeMPx3Hv3BFqQhYnmD_iH0pqdhk,2904
156
- modal-1.1.5.dev19.dist-info/licenses/LICENSE,sha256=psuoW8kuDP96RQsdhzwOqi6fyWv0ct8CR6Jr7He_P_k,10173
156
+ modal-1.1.5.dev21.dist-info/licenses/LICENSE,sha256=psuoW8kuDP96RQsdhzwOqi6fyWv0ct8CR6Jr7He_P_k,10173
157
157
  modal_docs/__init__.py,sha256=svYKtV8HDwDCN86zbdWqyq5T8sMdGDj0PVlzc2tIxDM,28
158
158
  modal_docs/gen_cli_docs.py,sha256=c1yfBS_x--gL5bs0N4ihMwqwX8l3IBWSkBAKNNIi6bQ,3801
159
159
  modal_docs/gen_reference_docs.py,sha256=d_CQUGQ0rfw28u75I2mov9AlS773z9rG40-yq5o7g2U,6359
@@ -176,10 +176,10 @@ modal_proto/options_pb2.pyi,sha256=l7DBrbLO7q3Ir-XDkWsajm0d0TQqqrfuX54i4BMpdQg,1
176
176
  modal_proto/options_pb2_grpc.py,sha256=1oboBPFxaTEXt9Aw7EAj8gXHDCNMhZD2VXqocC9l_gk,159
177
177
  modal_proto/options_pb2_grpc.pyi,sha256=CImmhxHsYnF09iENPoe8S4J-n93jtgUYD2JPAc0yJSI,247
178
178
  modal_proto/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
179
- modal_version/__init__.py,sha256=M0KP5M2Ru7eFHighbiBZRm8ymjCDT50FTaROx8TKmJM,121
179
+ modal_version/__init__.py,sha256=ZX7nPt_LdO7ED1cdKleFUEATiIwMJJdODQZ1YcTXfr0,121
180
180
  modal_version/__main__.py,sha256=2FO0yYQQwDTh6udt1h-cBnGd1c4ZyHnHSI4BksxzVac,105
181
- modal-1.1.5.dev19.dist-info/METADATA,sha256=LfhECOafZ2lxPcCiJqM4CQhyRF0QPqPKXQOSiQAjS90,2460
182
- modal-1.1.5.dev19.dist-info/WHEEL,sha256=1tXe9gY0PYatrMPMDd6jXqjfpz_B-Wqm32CPfRC58XU,91
183
- modal-1.1.5.dev19.dist-info/entry_points.txt,sha256=An-wYgeEUnm6xzrAP9_NTSTSciYvvEWsMZILtYrvpAI,46
184
- modal-1.1.5.dev19.dist-info/top_level.txt,sha256=4BWzoKYREKUZ5iyPzZpjqx4G8uB5TWxXPDwibLcVa7k,43
185
- modal-1.1.5.dev19.dist-info/RECORD,,
181
+ modal-1.1.5.dev21.dist-info/METADATA,sha256=GLDzfsj3txpwzHnTxIenwj4LawWxPfqC6-GTGHhJNKk,2460
182
+ modal-1.1.5.dev21.dist-info/WHEEL,sha256=1tXe9gY0PYatrMPMDd6jXqjfpz_B-Wqm32CPfRC58XU,91
183
+ modal-1.1.5.dev21.dist-info/entry_points.txt,sha256=An-wYgeEUnm6xzrAP9_NTSTSciYvvEWsMZILtYrvpAI,46
184
+ modal-1.1.5.dev21.dist-info/top_level.txt,sha256=4BWzoKYREKUZ5iyPzZpjqx4G8uB5TWxXPDwibLcVa7k,43
185
+ modal-1.1.5.dev21.dist-info/RECORD,,
modal_version/__init__.py CHANGED
@@ -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.1.5.dev19"
4
+ __version__ = "1.1.5.dev21"