modal 1.1.3.dev7__py3-none-any.whl → 1.1.4__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.
modal/sandbox.pyi CHANGED
@@ -26,6 +26,7 @@ import typing
26
26
  import typing_extensions
27
27
 
28
28
  def _validate_exec_args(args: collections.abc.Sequence[str]) -> None: ...
29
+ def _warn_if_invalid_name(name: str) -> None: ...
29
30
 
30
31
  class DefaultSandboxNameOverride(str):
31
32
  """A singleton class that represents the default sandbox name override.
@@ -60,6 +61,7 @@ class _Sandbox(modal._object._Object):
60
61
  secrets: collections.abc.Sequence[modal.secret._Secret],
61
62
  name: typing.Optional[str] = None,
62
63
  timeout: int = 300,
64
+ idle_timeout: typing.Optional[int] = None,
63
65
  workdir: typing.Optional[str] = None,
64
66
  gpu: typing.Union[None, str, modal.gpu._GPUConfig] = None,
65
67
  cloud: typing.Optional[str] = None,
@@ -96,6 +98,7 @@ class _Sandbox(modal._object._Object):
96
98
  secrets: collections.abc.Sequence[modal.secret._Secret] = (),
97
99
  network_file_systems: dict[typing.Union[str, os.PathLike], modal.network_file_system._NetworkFileSystem] = {},
98
100
  timeout: int = 300,
101
+ idle_timeout: typing.Optional[int] = None,
99
102
  workdir: typing.Optional[str] = None,
100
103
  gpu: typing.Union[None, str, modal.gpu._GPUConfig] = None,
101
104
  cloud: typing.Optional[str] = None,
@@ -145,6 +148,7 @@ class _Sandbox(modal._object._Object):
145
148
  mounts: collections.abc.Sequence[modal.mount._Mount] = (),
146
149
  network_file_systems: dict[typing.Union[str, os.PathLike], modal.network_file_system._NetworkFileSystem] = {},
147
150
  timeout: int = 300,
151
+ idle_timeout: typing.Optional[int] = None,
148
152
  workdir: typing.Optional[str] = None,
149
153
  gpu: typing.Union[None, str, modal.gpu._GPUConfig] = None,
150
154
  cloud: typing.Optional[str] = None,
@@ -177,7 +181,7 @@ class _Sandbox(modal._object._Object):
177
181
  environment_name: typing.Optional[str] = None,
178
182
  client: typing.Optional[modal.client._Client] = None,
179
183
  ) -> _Sandbox:
180
- """Get a running Sandbox by name from the given app.
184
+ """Get a running Sandbox by name from a deployed App.
181
185
 
182
186
  Raises a modal.exception.NotFoundError if no running sandbox is found with the given name.
183
187
  A Sandbox's name is the `name` argument passed to `Sandbox.create`.
@@ -370,6 +374,7 @@ class Sandbox(modal.object.Object):
370
374
  secrets: collections.abc.Sequence[modal.secret.Secret],
371
375
  name: typing.Optional[str] = None,
372
376
  timeout: int = 300,
377
+ idle_timeout: typing.Optional[int] = None,
373
378
  workdir: typing.Optional[str] = None,
374
379
  gpu: typing.Union[None, str, modal.gpu._GPUConfig] = None,
375
380
  cloud: typing.Optional[str] = None,
@@ -409,6 +414,7 @@ class Sandbox(modal.object.Object):
409
414
  typing.Union[str, os.PathLike], modal.network_file_system.NetworkFileSystem
410
415
  ] = {},
411
416
  timeout: int = 300,
417
+ idle_timeout: typing.Optional[int] = None,
412
418
  workdir: typing.Optional[str] = None,
413
419
  gpu: typing.Union[None, str, modal.gpu._GPUConfig] = None,
414
420
  cloud: typing.Optional[str] = None,
@@ -460,6 +466,7 @@ class Sandbox(modal.object.Object):
460
466
  typing.Union[str, os.PathLike], modal.network_file_system.NetworkFileSystem
461
467
  ] = {},
462
468
  timeout: int = 300,
469
+ idle_timeout: typing.Optional[int] = None,
463
470
  workdir: typing.Optional[str] = None,
464
471
  gpu: typing.Union[None, str, modal.gpu._GPUConfig] = None,
465
472
  cloud: typing.Optional[str] = None,
@@ -515,6 +522,7 @@ class Sandbox(modal.object.Object):
515
522
  typing.Union[str, os.PathLike], modal.network_file_system.NetworkFileSystem
516
523
  ] = {},
517
524
  timeout: int = 300,
525
+ idle_timeout: typing.Optional[int] = None,
518
526
  workdir: typing.Optional[str] = None,
519
527
  gpu: typing.Union[None, str, modal.gpu._GPUConfig] = None,
520
528
  cloud: typing.Optional[str] = None,
@@ -551,6 +559,7 @@ class Sandbox(modal.object.Object):
551
559
  typing.Union[str, os.PathLike], modal.network_file_system.NetworkFileSystem
552
560
  ] = {},
553
561
  timeout: int = 300,
562
+ idle_timeout: typing.Optional[int] = None,
554
563
  workdir: typing.Optional[str] = None,
555
564
  gpu: typing.Union[None, str, modal.gpu._GPUConfig] = None,
556
565
  cloud: typing.Optional[str] = None,
@@ -589,7 +598,7 @@ class Sandbox(modal.object.Object):
589
598
  environment_name: typing.Optional[str] = None,
590
599
  client: typing.Optional[modal.client.Client] = None,
591
600
  ) -> Sandbox:
592
- """Get a running Sandbox by name from the given app.
601
+ """Get a running Sandbox by name from a deployed App.
593
602
 
594
603
  Raises a modal.exception.NotFoundError if no running sandbox is found with the given name.
595
604
  A Sandbox's name is the `name` argument passed to `Sandbox.create`.
@@ -605,7 +614,7 @@ class Sandbox(modal.object.Object):
605
614
  environment_name: typing.Optional[str] = None,
606
615
  client: typing.Optional[modal.client.Client] = None,
607
616
  ) -> Sandbox:
608
- """Get a running Sandbox by name from the given app.
617
+ """Get a running Sandbox by name from a deployed App.
609
618
 
610
619
  Raises a modal.exception.NotFoundError if no running sandbox is found with the given name.
611
620
  A Sandbox's name is the `name` argument passed to `Sandbox.create`.
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: modal
3
- Version: 1.1.3.dev7
3
+ Version: 1.1.4
4
4
  Summary: Python client library for Modal
5
5
  Author-email: Modal Labs <support@modal.com>
6
6
  License: Apache-2.0
@@ -1,9 +1,9 @@
1
1
  modal/__init__.py,sha256=WMaRW-2IJRGA9ioNAaBhJYuyLvu-GS01L8wQD90fKBs,2682
2
2
  modal/__main__.py,sha256=45H-GtwzaDfN-1nP4_HYvzN3s7AG_HXR4-ynrsjO_OI,2803
3
- modal/_clustered_functions.py,sha256=zmrKbptRbqp4euS3LWncKaLXb8Kjj4YreusOzpEpRMk,2856
4
- modal/_clustered_functions.pyi,sha256=_wtFjWocGf1WgI-qYBpbJPArNkg2H9JV7BVaGgMesEQ,1103
3
+ modal/_clustered_functions.py,sha256=Sy4Sf_17EO8OL-FUe8LYcm4hrqLyQFCssNhr3p0SroU,3013
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=wDpUpxX_K5lLRQQ5wJWq2E4UjBo9uEvuv9QSqfboplo,88890
6
+ modal/_functions.py,sha256=JL6oB_uSTL6T3JCFrespKlbWmHdCQ66sspbQ9Ys1w88,89527
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
@@ -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=hJU3DGzP5GwYRmBj57XajljkQtLxkKftxXih2TYRcKo,48047
22
- modal/app.pyi,sha256=0U2xVKD3yfHe5l2bcihTDjPl__tzOvx1AIYOTebu-5o,43375
21
+ modal/app.py,sha256=F4baVULljFq0CwC_7U-EKNRNx7CYeWBKudjjYUuWc4U,48416
22
+ modal/app.pyi,sha256=AbXJCBkyt2rI_-M3VbTBYb32at0P6iRZuoC87xY_JrQ,43591
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=TkEeuiDt8R9DA7hnPqlpEXhq2rErp_oXYR7MkAQEa2E,15829
25
+ modal/client.pyi,sha256=qLlYrBR7fMkrpPJamm_IHVhNkZqQgG2EU6GvjNvaISc,15753
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=1mBcExFrLDTZwkD3Dzu8F26_CL0CGktOV9pE60Y8g_E,40689
29
- modal/cls.pyi,sha256=TevKBrBez2R0_4Epsx5GB5gyQX_kQV-uVHPxpqEokhQ,28357
28
+ modal/cls.py,sha256=pTEO7pHjlO7taMbIqs4oI9ZZgKDJpVKyGkO5ZT0w6tQ,40934
29
+ modal/cls.pyi,sha256=C1eK-AkN-QaeXu0qmMZVgJmkb1tYAFS43iEG37takDs,28959
30
30
  modal/config.py,sha256=tW-SEGjVvAt3D_MNi3LhxXnFKIA9fjLd3UIgbW8uSJE,12121
31
31
  modal/container_process.py,sha256=XkPwNIW-iD_GB9u9yqv9q8y-i5cQ8eBbLZZ_GvEw9t8,6858
32
32
  modal/container_process.pyi,sha256=9m-st3hCUlNN1GOTctfPPvIvoLtEl7FbuGWwif5-7YU,6037
@@ -39,21 +39,21 @@ 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=vXmQ5-tlrxSV8E8eI0yEF2HUeF0Bd6VyQVxMCW3SpBE,38890
42
+ modal/functions.pyi,sha256=F3Dll-9c3d8c8NuJuEYICUEB-sa67uWU75L111npwbA,39404
43
43
  modal/gpu.py,sha256=Fe5ORvVPDIstSq1xjmM6OoNgLYFWvogP9r5BgmD3hYg,6769
44
- modal/image.py,sha256=wEtojqiLDHSFinuIlAzCieGYPPAYh9iEBtY3wOSF6js,103236
45
- modal/image.pyi,sha256=vdxGAddVYpQNqpxM-XSzKkTtrajD74Nelgt8-IB5RAU,68711
44
+ modal/image.py,sha256=nXN9k_6gApHFy8-Bk_XT2Zu3jsDsGVrC3QcuiDC4yRY,103543
45
+ modal/image.pyi,sha256=vKdb5PpYM8wcpq9PQegeVMjrPLzAipuV4q994NZiL84,69325
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
- modal/mount.py,sha256=AObt5puO-jgtH5EtUfgAkz130bR-8Qvo5Am1_4tg3mE,37215
49
- modal/mount.pyi,sha256=Q99V40Va5JuRrmc9PbpQXakYzTSVvgFNgSlJDcfWIyQ,20488
48
+ modal/mount.py,sha256=3WpYaaCBGLyawW2uhQzB4jXRBQEsuuRMxnCFsXSa9_k,37470
49
+ modal/mount.pyi,sha256=y4jbfYwvD4NsLIxP8i0sua_98kNRPk1w1YlRiHqgrdo,20580
50
50
  modal/network_file_system.py,sha256=S5WhQEUv55u0YDpgeEQP-PGIcq2o1gJZVBHAO5vSR2Q,14933
51
51
  modal/network_file_system.pyi,sha256=Td_IobHr84iLo_9LZKQ4tNdUB60yjX8QWBaFiUvhfi8,17685
52
52
  modal/object.py,sha256=bTeskuY8JFrESjU4_UL_nTwYlBQdOLmVaOX3X6EMxsg,164
53
53
  modal/object.pyi,sha256=qlyVVMezW3XgJe_iqhtzWRSki3Nuk-KrpXc1g-r8ujA,6944
54
54
  modal/output.py,sha256=q4T9uHduunj4NwY-YSwkHGgjZlCXMuJbfQ5UFaAGRAc,1968
55
- modal/parallel_map.py,sha256=lgCtqWlBAfpVm0fw7RxoYnqTq9tDUZ6wtcPBakLRDzo,68544
56
- modal/parallel_map.pyi,sha256=MjVotblObpEDRyKcMd2qFALC1emKpbC9Cdu-gkdewT4,15809
55
+ modal/parallel_map.py,sha256=I2GADci-u1G_r7CxFzL11C0c3P4Tf_Jb3f_XCp4p_WI,69293
56
+ modal/parallel_map.pyi,sha256=NZrtfZljig59hcMKU7Cz8lYZZFOiwK9l7oWrBtX6Oy8,15838
57
57
  modal/partial_function.py,sha256=aIdlGfTjjgqY6Fpr-biCjvRU9W542_S5N2xkNN_rYGM,1127
58
58
  modal/partial_function.pyi,sha256=lqqOzZ9-QvHTDWKQ_oAYYOvsXgTOBKhO9u-RI98JbUk,13986
59
59
  modal/proxy.py,sha256=CQydu_NPDgApN2GLdd7rrcg8PM-pXyFdVYcTaGMBRCQ,1491
@@ -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=O_vB-VgJ2ZMw2yyT2-ATYIWHdeDXCPf4cFcc-3JSB5Q,40895
69
- modal/sandbox.pyi,sha256=HoHgwb167i83qiGhUE7UAy79l45wqfXKfOA9hZ5HiEo,41572
68
+ modal/sandbox.py,sha256=uqihD69r_hin4XEGBNUnO8hITkP856HviL3Y1xV6B6k,42164
69
+ modal/sandbox.pyi,sha256=mOyungHDDmUrg7jLmJpWuoUEbA4z6TUaVx291hndPmI,42049
70
70
  modal/schedule.py,sha256=ng0g0AqNY5GQI9KhkXZQ5Wam5G42glbkqVQsNpBtbDE,3078
71
71
  modal/scheduler_placement.py,sha256=BAREdOY5HzHpzSBqt6jDVR6YC_jYfHMVqOzkyqQfngU,1235
72
72
  modal/secret.py,sha256=jcNJKc4ZB2nvAn7HJFawInqE-_7sbB43IWLZwyLBQ28,19308
@@ -81,7 +81,7 @@ modal/token_flow.pyi,sha256=eirYjyqbRiT3GCKMIPHJPpkvBTu8WxDKqSHehWaJI_4,2533
81
81
  modal/volume.py,sha256=bPC8632-LyeLOjJu2fKOFyod0QG7Hd5bb-UIJ5syCjo,53303
82
82
  modal/volume.pyi,sha256=5VppIgoqoJqpivESYt5_oWgVTL__zlmpNZkOPk43JF8,54443
83
83
  modal/_runtime/__init__.py,sha256=MIEP8jhXUeGq_eCjYFcqN5b1bxBM4fdk0VESpjWR0fc,28
84
- modal/_runtime/asgi.py,sha256=yewQjvqPdXQ9SeEMMM53-h3Y22WlJNe28tFvPrrwguk,22607
84
+ modal/_runtime/asgi.py,sha256=AOcduIlijmlxhXVWo7AIUhigo-bqm6nDkHj4Q4JLy6o,22607
85
85
  modal/_runtime/container_io_manager.py,sha256=iiFxPfnJjnZd_l2Aj5TCR_O1dQwBcrvHccq0LSIJGZY,45719
86
86
  modal/_runtime/container_io_manager.pyi,sha256=pcGX7wUdidc2IO3eWOnsEgl9N8e8HG3yFIItXL6JgJI,23626
87
87
  modal/_runtime/execution_context.py,sha256=AYrNQRHHXEqX2MwMf8zxelKZnYf25RE_B-NRLWf93n8,3521
@@ -100,7 +100,7 @@ modal/_utils/docker_utils.py,sha256=h1uETghR40mp_y3fSWuZAfbIASH1HMzuphJHghAL6DU,
100
100
  modal/_utils/function_utils.py,sha256=NWoVg9UgUSS9RSfT9wQUDNcPMmZxjM68-Ch6u4Cp_hk,27481
101
101
  modal/_utils/git_utils.py,sha256=qtUU6JAttF55ZxYq51y55OR58B0tDPZsZWK5dJe6W5g,3182
102
102
  modal/_utils/grpc_testing.py,sha256=H1zHqthv19eGPJz2HKXDyWXWGSqO4BRsxah3L5Xaa8A,8619
103
- modal/_utils/grpc_utils.py,sha256=HBZdMcBHCk6uozILYTjGnR0mV8fg7WOdJldoyZ-ZhSg,10137
103
+ modal/_utils/grpc_utils.py,sha256=1dQgTvdHG9KSfyVTc26HhKjGnIDJpdDEJ0xZARklOrU,10205
104
104
  modal/_utils/hash_utils.py,sha256=zg3J6OGxTFGSFri1qQ12giDz90lWk8bzaxCTUCRtiX4,3034
105
105
  modal/_utils/http_utils.py,sha256=yeTFsXYr0rYMEhB7vBP7audG9Uc7OLhzKBANFDZWVt0,2451
106
106
  modal/_utils/jwt_utils.py,sha256=fxH9plyrbAemTbjSsQtzIdDXE9QXxvMC4DiUZ16G0aA,1360
@@ -120,8 +120,8 @@ modal/builder/2023.12.312.txt,sha256=zWWUVgVQ92GXBKNYYr2-5vn9rlnXcmkqlwlX5u1eTYw
120
120
  modal/builder/2023.12.txt,sha256=OjsbXFkCSdkzzryZP82Q73osr5wxQ6EUzmGcK7twfkA,502
121
121
  modal/builder/2024.04.txt,sha256=6NnrbIE-mflwMyKyQ0tsWeY8XFE1kSW9oE8DVDoD8QU,544
122
122
  modal/builder/2024.10.txt,sha256=qD-5cVIVM9wXesJ6JC89Ew-3m2KjEElUz3jaw_MddRo,296
123
- modal/builder/2025.06.txt,sha256=KxDaVTOwatHvboDo4lorlgJ7-n-MfAwbPwxJ0zcJqrs,312
124
- modal/builder/PREVIEW.txt,sha256=KxDaVTOwatHvboDo4lorlgJ7-n-MfAwbPwxJ0zcJqrs,312
123
+ modal/builder/2025.06.txt,sha256=XM4z76RPnrcbCx3o3sqXijWnumyOGiTCLGhKaaS4xz0,325
124
+ modal/builder/PREVIEW.txt,sha256=XM4z76RPnrcbCx3o3sqXijWnumyOGiTCLGhKaaS4xz0,325
125
125
  modal/builder/README.md,sha256=9tK76KP0Uph7O0M5oUgsSwEZDj5y-dcUPsnpR0Sc-Ik,854
126
126
  modal/builder/base-images.json,sha256=JYSDAgHTl-WrV_TZW5icY-IJEnbe2eQ4CZ_KN6EOZKU,1304
127
127
  modal/cli/__init__.py,sha256=6FRleWQxBDT19y7OayO4lBOzuL6Bs9r0rLINYYYbHwQ,769
@@ -149,11 +149,11 @@ modal/cli/programs/launch_instance_ssh.py,sha256=GrwK_Vy8-7B4x5a6AqFaF7lqNVgu75J
149
149
  modal/cli/programs/run_jupyter.py,sha256=44Lpvqk2l3hH-uOkmAOzw60NEsfB5uaRDWDKVshvQhs,2682
150
150
  modal/cli/programs/run_marimo.py,sha256=HyZ2za0NYqg31-mGxFQxUIAJ3Q-jRaMocEwWwI5-cdw,2887
151
151
  modal/cli/programs/vscode.py,sha256=KbTAaIXyQBVCDXxXjmBHmKpgXkUw0q4R4KkJvUjCYgk,3380
152
- modal/experimental/__init__.py,sha256=dPBPpxsmjZMLF3YjRrXoTvT01pl65wxi4UdFZsOem3w,15082
153
- modal/experimental/flash.py,sha256=viXQumCIFp5VFsPFURdFTBTjP_QnsAi8nSWXAMmfjeQ,19744
154
- modal/experimental/flash.pyi,sha256=A8_qJGtGoXEzKDdHbvhmCw7oqfneFEvJQK3ZdTOvUdU,10830
152
+ modal/experimental/__init__.py,sha256=aWDb1VO9s4D-5Ktw_kYQSqoCp1W8S7lhns-5l7S1l-8,15102
153
+ modal/experimental/flash.py,sha256=aP6ooKk5d1syKn895AzAp4utQMTuZkRjWJFwxZweNbM,27160
154
+ modal/experimental/flash.pyi,sha256=32bvUlolZHthplDJNXokmbjwb0RSOuXGCBpU6qfFPOk,13732
155
155
  modal/experimental/ipython.py,sha256=TrCfmol9LGsRZMeDoeMPx3Hv3BFqQhYnmD_iH0pqdhk,2904
156
- modal-1.1.3.dev7.dist-info/licenses/LICENSE,sha256=psuoW8kuDP96RQsdhzwOqi6fyWv0ct8CR6Jr7He_P_k,10173
156
+ modal-1.1.4.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
@@ -161,13 +161,13 @@ modal_docs/mdmd/__init__.py,sha256=svYKtV8HDwDCN86zbdWqyq5T8sMdGDj0PVlzc2tIxDM,2
161
161
  modal_docs/mdmd/mdmd.py,sha256=tUTImNd4UMFk1opkaw8J672gX8AkBO5gbY2S_NMxsxs,7140
162
162
  modal_docs/mdmd/signatures.py,sha256=XJaZrK7Mdepk5fdX51A8uENiLFNil85Ud0d4MH8H5f0,3218
163
163
  modal_proto/__init__.py,sha256=MIEP8jhXUeGq_eCjYFcqN5b1bxBM4fdk0VESpjWR0fc,28
164
- modal_proto/api.proto,sha256=l1uCuGuzRoZi8o6lG7qJ0x5F8A9SJtOEVipXqsioEwc,104771
165
- modal_proto/api_grpc.py,sha256=AWsKZFdXr_T6LpWGlMM6BDY30RdOPjqgoPMijR-R1lI,127964
166
- modal_proto/api_pb2.py,sha256=VTmkiJYDvP78OFQGFTqwHVafjvm8hq6-P8-e5uSeb-c,366852
167
- modal_proto/api_pb2.pyi,sha256=NnuXK-JedDcBLMONS11sORu-e_oLrDT8V7ze1nh0vFE,506245
168
- modal_proto/api_pb2_grpc.py,sha256=kDZBX6i1KdRpm4P3c2wdRbGe3XOFtqGHSbWE0vOe4F4,276062
169
- modal_proto/api_pb2_grpc.pyi,sha256=s1hjXmqaB3jGCSgnOouzncdfMVX0umPZd4TC1zObhgU,64579
170
- modal_proto/modal_api_grpc.py,sha256=faBxtXAqoz6ei8ntNu1MQTL859FFHH_LZww_FP9wubw,19311
164
+ modal_proto/api.proto,sha256=9Vh3r3SjlJh2a9Eb6GwFYh2R6aCKV2-pEQXmVeOYkAE,105611
165
+ modal_proto/api_grpc.py,sha256=r1k5m9Z2brIWtkY59mPwAGSavhssStzmsSq_PEwkZWA,129564
166
+ modal_proto/api_pb2.py,sha256=M0DAllkbXBuQGnXEYiOaqzZoo5TQy0IS9DTHpzHNliU,370000
167
+ modal_proto/api_pb2.pyi,sha256=29iTBpyQozfgPuLuQmY_05PIx4PBJE7yQ-wpgmUrWz8,510035
168
+ modal_proto/api_pb2_grpc.py,sha256=ovaCh4weYl5r0XfX_2F2M2pn6XGH7Hl-BmVaIB62ssY,279448
169
+ modal_proto/api_pb2_grpc.pyi,sha256=q_S2ScjUjS2bonUnEBqwCXVRZUwEuO5jOD2eL9nw0Wc,65439
170
+ modal_proto/modal_api_grpc.py,sha256=E-5WMq82AVvtGRsmb7AqYzOz-cfqTOokp-QjaFaOhpo,19547
171
171
  modal_proto/modal_options_grpc.py,sha256=qJ1cuwA54oRqrdTyPTbvfhFZYd9HhJKK5UCwt523r3Y,120
172
172
  modal_proto/options.proto,sha256=zp9h5r61ivsp0XwEWwNBsVqNTbRA1VSY_UtN7sEcHtE,549
173
173
  modal_proto/options_grpc.py,sha256=M18X3d-8F_cNYSVM3I25dUTO5rZ0rd-vCCfynfh13Nc,125
@@ -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=Q4D_VgusnxnqRydMxGFjaB_yU8WFmyiRVMhLA0oHiUE,120
179
+ modal_version/__init__.py,sha256=RAcGPupwBBn-srtcqhQt3Wlb8gDGkdqrEiery_OEQqk,115
180
180
  modal_version/__main__.py,sha256=2FO0yYQQwDTh6udt1h-cBnGd1c4ZyHnHSI4BksxzVac,105
181
- modal-1.1.3.dev7.dist-info/METADATA,sha256=iqwYXvEIKizx8LF1ToarB-y9r1_y5z0d4mY_qt9Lwgs,2459
182
- modal-1.1.3.dev7.dist-info/WHEEL,sha256=1tXe9gY0PYatrMPMDd6jXqjfpz_B-Wqm32CPfRC58XU,91
183
- modal-1.1.3.dev7.dist-info/entry_points.txt,sha256=An-wYgeEUnm6xzrAP9_NTSTSciYvvEWsMZILtYrvpAI,46
184
- modal-1.1.3.dev7.dist-info/top_level.txt,sha256=4BWzoKYREKUZ5iyPzZpjqx4G8uB5TWxXPDwibLcVa7k,43
185
- modal-1.1.3.dev7.dist-info/RECORD,,
181
+ modal-1.1.4.dist-info/METADATA,sha256=Tmfoa5WuRdLu0qKPeFaoCDwoOvAlcSSYBhMPfNUO5v8,2454
182
+ modal-1.1.4.dist-info/WHEEL,sha256=1tXe9gY0PYatrMPMDd6jXqjfpz_B-Wqm32CPfRC58XU,91
183
+ modal-1.1.4.dist-info/entry_points.txt,sha256=An-wYgeEUnm6xzrAP9_NTSTSciYvvEWsMZILtYrvpAI,46
184
+ modal-1.1.4.dist-info/top_level.txt,sha256=4BWzoKYREKUZ5iyPzZpjqx4G8uB5TWxXPDwibLcVa7k,43
185
+ modal-1.1.4.dist-info/RECORD,,
modal_proto/api.proto CHANGED
@@ -644,6 +644,14 @@ message AutoscalerSettings {
644
644
  optional uint32 scaledown_window = 5;
645
645
  }
646
646
 
647
+ // Used for flash autoscaling
648
+ message AutoscalingMetrics {
649
+ double cpu_usage_percent = 1;
650
+ double memory_usage_percent = 2;
651
+ uint32 concurrent_requests = 3;
652
+ double timestamp = 4;
653
+ }
654
+
647
655
  message BaseImage {
648
656
  string image_id = 1;
649
657
  string docker_tag = 2;
@@ -1235,6 +1243,8 @@ message EnvironmentListItem {
1235
1243
  string webhook_suffix = 2;
1236
1244
  double created_at = 3;
1237
1245
  bool default = 4;
1246
+ bool is_managed = 5;
1247
+ string environment_id = 6;
1238
1248
  }
1239
1249
 
1240
1250
  message EnvironmentListResponse {
@@ -1471,6 +1481,8 @@ message Function {
1471
1481
  string flash_service_label = 84;
1472
1482
 
1473
1483
  bool enable_gpu_snapshot = 85; // GPU memory snapshotting (alpha)
1484
+
1485
+ uint32 startup_timeout_secs = 86;
1474
1486
  }
1475
1487
 
1476
1488
  message FunctionAsyncInvokeRequest {
@@ -1644,6 +1656,8 @@ message FunctionData {
1644
1656
 
1645
1657
  repeated string flash_service_urls = 34;
1646
1658
  string flash_service_label = 35;
1659
+
1660
+ uint32 startup_timeout_secs = 36;
1647
1661
  }
1648
1662
 
1649
1663
  message FunctionExtended {
@@ -1792,6 +1806,7 @@ message FunctionHandleMetadata {
1792
1806
  optional string input_plane_region = 47;
1793
1807
  // Use optional to ensure unset values default to None instead of 0
1794
1808
  optional uint64 max_object_size_bytes = 48;
1809
+ repeated string _experimental_flash_urls = 49; // (Optional) urls for flash services
1795
1810
  }
1796
1811
 
1797
1812
  message FunctionInput {
@@ -2027,6 +2042,10 @@ message ImageContextFile {
2027
2042
  bytes data = 2;
2028
2043
  }
2029
2044
 
2045
+ message ImageDeleteRequest {
2046
+ string image_id = 1;
2047
+ }
2048
+
2030
2049
  message ImageFromIdRequest {
2031
2050
  string image_id = 1;
2032
2051
  }
@@ -3030,6 +3049,14 @@ message TaskCurrentInputsResponse {
3030
3049
  repeated string input_ids = 1;
3031
3050
  }
3032
3051
 
3052
+ message TaskGetAutoscalingMetricsRequest {
3053
+ string task_id = 1;
3054
+ }
3055
+
3056
+ message TaskGetAutoscalingMetricsResponse {
3057
+ AutoscalingMetrics metrics = 1;
3058
+ }
3059
+
3033
3060
  message TaskInfo {
3034
3061
  string id = 1;
3035
3062
  double started_at = 2;
@@ -3072,6 +3099,7 @@ message TaskLogsBatch {
3072
3099
  bool eof = 14;
3073
3100
  string pty_exec_id = 15; // Used for interactive functions
3074
3101
  string root_function_id = 16;
3102
+ uint32 ttl_days = 17;
3075
3103
  }
3076
3104
 
3077
3105
  message TaskProgress {
@@ -3539,6 +3567,7 @@ service ModalClient {
3539
3567
  rpc FunctionUpdateSchedulingParams(FunctionUpdateSchedulingParamsRequest) returns (FunctionUpdateSchedulingParamsResponse);
3540
3568
 
3541
3569
  // Images
3570
+ rpc ImageDelete(ImageDeleteRequest) returns (google.protobuf.Empty);
3542
3571
  rpc ImageFromId(ImageFromIdRequest) returns (ImageFromIdResponse);
3543
3572
  rpc ImageGetOrCreate(ImageGetOrCreateRequest) returns (ImageGetOrCreateResponse);
3544
3573
  rpc ImageJoinStreaming(ImageJoinStreamingRequest) returns (stream ImageJoinStreamingResponse);
@@ -3614,6 +3643,7 @@ service ModalClient {
3614
3643
  // Tasks
3615
3644
  rpc TaskClusterHello(TaskClusterHelloRequest) returns (TaskClusterHelloResponse);
3616
3645
  rpc TaskCurrentInputs(google.protobuf.Empty) returns (TaskCurrentInputsResponse);
3646
+ rpc TaskGetAutoscalingMetrics(TaskGetAutoscalingMetricsRequest) returns (TaskGetAutoscalingMetricsResponse); // Used for flash autoscaling
3617
3647
  rpc TaskList(TaskListRequest) returns (TaskListResponse);
3618
3648
  rpc TaskResult(TaskResultRequest) returns (google.protobuf.Empty);
3619
3649
 
modal_proto/api_grpc.py CHANGED
@@ -358,6 +358,10 @@ class ModalClientBase(abc.ABC):
358
358
  async def FunctionUpdateSchedulingParams(self, stream: 'grpclib.server.Stream[modal_proto.api_pb2.FunctionUpdateSchedulingParamsRequest, modal_proto.api_pb2.FunctionUpdateSchedulingParamsResponse]') -> None:
359
359
  pass
360
360
 
361
+ @abc.abstractmethod
362
+ async def ImageDelete(self, stream: 'grpclib.server.Stream[modal_proto.api_pb2.ImageDeleteRequest, google.protobuf.empty_pb2.Empty]') -> None:
363
+ pass
364
+
361
365
  @abc.abstractmethod
362
366
  async def ImageFromId(self, stream: 'grpclib.server.Stream[modal_proto.api_pb2.ImageFromIdRequest, modal_proto.api_pb2.ImageFromIdResponse]') -> None:
363
367
  pass
@@ -586,6 +590,10 @@ class ModalClientBase(abc.ABC):
586
590
  async def TaskCurrentInputs(self, stream: 'grpclib.server.Stream[google.protobuf.empty_pb2.Empty, modal_proto.api_pb2.TaskCurrentInputsResponse]') -> None:
587
591
  pass
588
592
 
593
+ @abc.abstractmethod
594
+ async def TaskGetAutoscalingMetrics(self, stream: 'grpclib.server.Stream[modal_proto.api_pb2.TaskGetAutoscalingMetricsRequest, modal_proto.api_pb2.TaskGetAutoscalingMetricsResponse]') -> None:
595
+ pass
596
+
589
597
  @abc.abstractmethod
590
598
  async def TaskList(self, stream: 'grpclib.server.Stream[modal_proto.api_pb2.TaskListRequest, modal_proto.api_pb2.TaskListResponse]') -> None:
591
599
  pass
@@ -1194,6 +1202,12 @@ class ModalClientBase(abc.ABC):
1194
1202
  modal_proto.api_pb2.FunctionUpdateSchedulingParamsRequest,
1195
1203
  modal_proto.api_pb2.FunctionUpdateSchedulingParamsResponse,
1196
1204
  ),
1205
+ '/modal.client.ModalClient/ImageDelete': grpclib.const.Handler(
1206
+ self.ImageDelete,
1207
+ grpclib.const.Cardinality.UNARY_UNARY,
1208
+ modal_proto.api_pb2.ImageDeleteRequest,
1209
+ google.protobuf.empty_pb2.Empty,
1210
+ ),
1197
1211
  '/modal.client.ModalClient/ImageFromId': grpclib.const.Handler(
1198
1212
  self.ImageFromId,
1199
1213
  grpclib.const.Cardinality.UNARY_UNARY,
@@ -1536,6 +1550,12 @@ class ModalClientBase(abc.ABC):
1536
1550
  google.protobuf.empty_pb2.Empty,
1537
1551
  modal_proto.api_pb2.TaskCurrentInputsResponse,
1538
1552
  ),
1553
+ '/modal.client.ModalClient/TaskGetAutoscalingMetrics': grpclib.const.Handler(
1554
+ self.TaskGetAutoscalingMetrics,
1555
+ grpclib.const.Cardinality.UNARY_UNARY,
1556
+ modal_proto.api_pb2.TaskGetAutoscalingMetricsRequest,
1557
+ modal_proto.api_pb2.TaskGetAutoscalingMetricsResponse,
1558
+ ),
1539
1559
  '/modal.client.ModalClient/TaskList': grpclib.const.Handler(
1540
1560
  self.TaskList,
1541
1561
  grpclib.const.Cardinality.UNARY_UNARY,
@@ -2196,6 +2216,12 @@ class ModalClientStub:
2196
2216
  modal_proto.api_pb2.FunctionUpdateSchedulingParamsRequest,
2197
2217
  modal_proto.api_pb2.FunctionUpdateSchedulingParamsResponse,
2198
2218
  )
2219
+ self.ImageDelete = grpclib.client.UnaryUnaryMethod(
2220
+ channel,
2221
+ '/modal.client.ModalClient/ImageDelete',
2222
+ modal_proto.api_pb2.ImageDeleteRequest,
2223
+ google.protobuf.empty_pb2.Empty,
2224
+ )
2199
2225
  self.ImageFromId = grpclib.client.UnaryUnaryMethod(
2200
2226
  channel,
2201
2227
  '/modal.client.ModalClient/ImageFromId',
@@ -2538,6 +2564,12 @@ class ModalClientStub:
2538
2564
  google.protobuf.empty_pb2.Empty,
2539
2565
  modal_proto.api_pb2.TaskCurrentInputsResponse,
2540
2566
  )
2567
+ self.TaskGetAutoscalingMetrics = grpclib.client.UnaryUnaryMethod(
2568
+ channel,
2569
+ '/modal.client.ModalClient/TaskGetAutoscalingMetrics',
2570
+ modal_proto.api_pb2.TaskGetAutoscalingMetricsRequest,
2571
+ modal_proto.api_pb2.TaskGetAutoscalingMetricsResponse,
2572
+ )
2541
2573
  self.TaskList = grpclib.client.UnaryUnaryMethod(
2542
2574
  channel,
2543
2575
  '/modal.client.ModalClient/TaskList',