modal 0.70.3__py3-none-any.whl → 0.71.3__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/_container_entrypoint.py +23 -15
- modal/_runtime/container_io_manager.py +1 -6
- modal/app.py +10 -8
- modal/app.pyi +6 -2
- modal/cli/run.py +1 -1
- modal/client.pyi +2 -2
- modal/experimental.py +3 -0
- modal/file_io.py +86 -0
- modal/file_io.pyi +59 -0
- modal/io_streams.py +15 -27
- modal/io_streams_helper.py +53 -0
- modal/runner.py +0 -3
- modal/running_app.py +0 -8
- modal/sandbox.py +19 -6
- modal/sandbox.pyi +25 -0
- {modal-0.70.3.dist-info → modal-0.71.3.dist-info}/METADATA +1 -1
- {modal-0.70.3.dist-info → modal-0.71.3.dist-info}/RECORD +26 -25
- modal_proto/api.proto +3 -0
- modal_proto/api_pb2.py +436 -436
- modal_proto/api_pb2.pyi +8 -1
- modal_version/__init__.py +1 -1
- modal_version/_version_generated.py +2 -2
- {modal-0.70.3.dist-info → modal-0.71.3.dist-info}/LICENSE +0 -0
- {modal-0.70.3.dist-info → modal-0.71.3.dist-info}/WHEEL +0 -0
- {modal-0.70.3.dist-info → modal-0.71.3.dist-info}/entry_points.txt +0 -0
- {modal-0.70.3.dist-info → modal-0.71.3.dist-info}/top_level.txt +0 -0
modal/sandbox.pyi
CHANGED
@@ -131,6 +131,13 @@ class _Sandbox(modal.object._Object):
|
|
131
131
|
async def ls(self, path: str) -> list[str]: ...
|
132
132
|
async def mkdir(self, path: str, parents: bool = False) -> None: ...
|
133
133
|
async def rm(self, path: str, recursive: bool = False) -> None: ...
|
134
|
+
def watch(
|
135
|
+
self,
|
136
|
+
path: str,
|
137
|
+
filter: typing.Optional[list[modal.file_io.FileWatchEventType]] = None,
|
138
|
+
recursive: typing.Optional[bool] = None,
|
139
|
+
timeout: typing.Optional[int] = None,
|
140
|
+
) -> typing.AsyncIterator[modal.file_io.FileWatchEvent]: ...
|
134
141
|
@property
|
135
142
|
def stdout(self) -> modal.io_streams._StreamReader[str]: ...
|
136
143
|
@property
|
@@ -388,6 +395,24 @@ class Sandbox(modal.object.Object):
|
|
388
395
|
|
389
396
|
rm: __rm_spec
|
390
397
|
|
398
|
+
class __watch_spec(typing_extensions.Protocol):
|
399
|
+
def __call__(
|
400
|
+
self,
|
401
|
+
path: str,
|
402
|
+
filter: typing.Optional[list[modal.file_io.FileWatchEventType]] = None,
|
403
|
+
recursive: typing.Optional[bool] = None,
|
404
|
+
timeout: typing.Optional[int] = None,
|
405
|
+
) -> typing.Iterator[modal.file_io.FileWatchEvent]: ...
|
406
|
+
def aio(
|
407
|
+
self,
|
408
|
+
path: str,
|
409
|
+
filter: typing.Optional[list[modal.file_io.FileWatchEventType]] = None,
|
410
|
+
recursive: typing.Optional[bool] = None,
|
411
|
+
timeout: typing.Optional[int] = None,
|
412
|
+
) -> typing.AsyncIterator[modal.file_io.FileWatchEvent]: ...
|
413
|
+
|
414
|
+
watch: __watch_spec
|
415
|
+
|
391
416
|
@property
|
392
417
|
def stdout(self) -> modal.io_streams.StreamReader[str]: ...
|
393
418
|
@property
|
@@ -2,7 +2,7 @@ modal/__init__.py,sha256=3NJLLHb0TRc2tc68kf8NHzORx38GbtbZvPEWDWrQ6N4,2234
|
|
2
2
|
modal/__main__.py,sha256=scYhGFqh8OJcVDo-VOxIT6CCwxOgzgflYWMnIZiMRqE,2871
|
3
3
|
modal/_clustered_functions.py,sha256=kTf-9YBXY88NutC1akI-gCbvf01RhMPCw-zoOI_YIUE,2700
|
4
4
|
modal/_clustered_functions.pyi,sha256=vllkegc99A0jrUOWa8mdlSbdp6uz36TsHhGxysAOpaQ,771
|
5
|
-
modal/_container_entrypoint.py,sha256
|
5
|
+
modal/_container_entrypoint.py,sha256=-zUa567FgOKmF0TtFWQ6DgehUD2CMfABDBQ8oLSpjyc,29171
|
6
6
|
modal/_ipython.py,sha256=TW1fkVOmZL3YYqdS2YlM1hqpf654Yf8ZyybHdBnlhSw,301
|
7
7
|
modal/_location.py,sha256=S3lSxIU3h9HkWpkJ3Pwo0pqjIOSB1fjeSgUsY3x7eec,1202
|
8
8
|
modal/_output.py,sha256=0fWX_KQwhER--U81ys16CL-pA5A-LN20C0EZjElKGJQ,25410
|
@@ -15,11 +15,11 @@ modal/_traceback.py,sha256=IZQzB3fVlUfMHOSyKUgw0H6qv4yHnpyq-XVCNZKfUdA,5023
|
|
15
15
|
modal/_tunnel.py,sha256=o-jJhS4vQ6-XswDhHcJWGMZZmD03SC0e9i8fEu1JTjo,6310
|
16
16
|
modal/_tunnel.pyi,sha256=JmmDYAy9F1FpgJ_hWx0xkom2nTOFQjn4mTPYlU3PFo4,1245
|
17
17
|
modal/_watcher.py,sha256=K6LYnlmSGQB4tWWI9JADv-tvSvQ1j522FwT71B51CX8,3584
|
18
|
-
modal/app.py,sha256=
|
19
|
-
modal/app.pyi,sha256=
|
18
|
+
modal/app.py,sha256=vEE0cK5QPF6_cdW5AJvcuWxz5KmeprHwBEtlDkVRHgE,45582
|
19
|
+
modal/app.pyi,sha256=Gx7gxjfQ70sxhbwfpx1VjvzEON-ZEMTJ_Vy8qt0oQvo,25302
|
20
20
|
modal/call_graph.py,sha256=1g2DGcMIJvRy-xKicuf63IVE98gJSnQsr8R_NVMptNc,2581
|
21
21
|
modal/client.py,sha256=JAnd4-GCN093BwkvOFAK5a6iy5ycxofjpUncMxlrIMw,15253
|
22
|
-
modal/client.pyi,sha256=
|
22
|
+
modal/client.pyi,sha256=g36AUvqxWl-M3qym800n9bscsG3V5qM0scNEJ0nBWlk,7278
|
23
23
|
modal/cloud_bucket_mount.py,sha256=G7T7jWLD0QkmrfKR75mSTwdUZ2xNfj7pkVqb4ipmxmI,5735
|
24
24
|
modal/cloud_bucket_mount.pyi,sha256=CEi7vrH3kDUF4LAy4qP6tfImy2UJuFRcRbsgRNM1wo8,1403
|
25
25
|
modal/cls.py,sha256=3hjb0JcoPjxKZNeK22f5rR43bZRBjoRI7_EMZXY7YrE,31172
|
@@ -32,17 +32,18 @@ modal/dict.pyi,sha256=VmbzxltA2vFlIHZCxpNGtd-ieXwcUwdw3iyy3WCweqU,7115
|
|
32
32
|
modal/environments.py,sha256=wbv9ttFCbzATGfwcmvYiG608PfHovx0AQmawsg-jmic,6660
|
33
33
|
modal/environments.pyi,sha256=rF7oaaELoSNuoD6qImGnIbuGPtgWwR5SlcExyYJ61hQ,3515
|
34
34
|
modal/exception.py,sha256=GEV6xMnVnkle0gsFZVLB4B7cUMyw8HzVDvAvPr34ZV4,5185
|
35
|
-
modal/experimental.py,sha256=
|
36
|
-
modal/file_io.py,sha256=
|
37
|
-
modal/file_io.pyi,sha256=
|
35
|
+
modal/experimental.py,sha256=npfKbyMpI41uZZs9HW_QiB3E4ykWfDXZbACXXbw6qeA,2385
|
36
|
+
modal/file_io.py,sha256=ZR8VBCDsDt5uB9TNN9XbEh7sniJzM_5YL47m8WP0m5c,19617
|
37
|
+
modal/file_io.pyi,sha256=79Fg75BjmMEeCX0Lx-Z8C4XSNPCotwNdK6ZLIDFm2f4,9770
|
38
38
|
modal/file_pattern_matcher.py,sha256=LaI7Paxg0xR9D-D7Tgc60xR0w1KZee22LjGbFie1Vms,5571
|
39
39
|
modal/functions.py,sha256=aXXXr3rk7BCeh5OWMvxGksGm8FQoYCyrBDGV74FPoPE,67827
|
40
40
|
modal/functions.pyi,sha256=oMmcExtQxHwPej06jQ3uBe1tUlSR3VbAx7u3Vm-Ohhg,25317
|
41
41
|
modal/gpu.py,sha256=MTxj6ql8EpgfBg8YmZ5a1cLznyuZFssX1qXbEX4LKVM,7503
|
42
42
|
modal/image.py,sha256=Krvcsclomp9YsqSNwFj2FoAyg10OvU47RDnsNCwjGbQ,84550
|
43
43
|
modal/image.pyi,sha256=1fgGvsL5Rb0Sa-_2OCgIyJ_QgHcL0_9MWD_oY7cyFFM,24937
|
44
|
-
modal/io_streams.py,sha256=
|
44
|
+
modal/io_streams.py,sha256=Xxc5grJiO94nBA48FFWH3S3g6SPR0xFVgZ_DZ1oFmvI,14428
|
45
45
|
modal/io_streams.pyi,sha256=bCCVSxkMcosYd8O3PQDDwJw7TQ8JEcnYonLJ5t27TQs,4804
|
46
|
+
modal/io_streams_helper.py,sha256=B5Ui56ph7LkRpZX0tAF80Q-gOMsvPPLx5bpIPX0kgDc,1772
|
46
47
|
modal/mount.py,sha256=wOr-2vmKImsE3lHBII8hL2gYy5ng46R58QwId4JultQ,29313
|
47
48
|
modal/mount.pyi,sha256=FiNV1wIKFvd0ZMZ0tm1mz6ZSA5Hjsge-kFSA5tPWfcI,10503
|
48
49
|
modal/network_file_system.py,sha256=INj1TfN_Fsmabmlte7anvey1epodjbMmjBW_TIJSST4,14406
|
@@ -60,11 +61,11 @@ modal/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
60
61
|
modal/queue.py,sha256=zMUQtdAyqZzBg-2iAo3c3G54HLP7TEWfVhiQXLjewb4,18556
|
61
62
|
modal/queue.pyi,sha256=gGV97pWelSSYqMV9Bl4ys3mSP7q82fS71oqSWeAwyDE,9818
|
62
63
|
modal/retries.py,sha256=HKR2Q9aNPWkMjQ5nwobqYTuZaSuw0a8lI2zrtY5IW98,5230
|
63
|
-
modal/runner.py,sha256=
|
64
|
+
modal/runner.py,sha256=mhqgRdjD5cUDpBQIokiX7OCfVblpGV6aWmZ-WvWJgGg,24114
|
64
65
|
modal/runner.pyi,sha256=YmP4EOCNjjkwSIPi2Gl6hF_ji_ytkxz9dw3iB9KXaOI,5275
|
65
|
-
modal/running_app.py,sha256=
|
66
|
-
modal/sandbox.py,sha256=
|
67
|
-
modal/sandbox.pyi,sha256=
|
66
|
+
modal/running_app.py,sha256=v61mapYNV1-O-Uaho5EfJlryMLvIT9We0amUOSvSGx8,1188
|
67
|
+
modal/sandbox.py,sha256=H63K3MTcgdb9KkKc79sMKe6UzFMGBNI7HB2TUwBbE_U,28609
|
68
|
+
modal/sandbox.pyi,sha256=lceWDeXqzdeRc1iIuM5YmpoZlBJcVBpQO1Jc3AT1AQI,20809
|
68
69
|
modal/schedule.py,sha256=0ZFpKs1bOxeo5n3HZjoL7OE2ktsb-_oGtq-WJEPO4tY,2615
|
69
70
|
modal/scheduler_placement.py,sha256=BAREdOY5HzHpzSBqt6jDVR6YC_jYfHMVqOzkyqQfngU,1235
|
70
71
|
modal/secret.py,sha256=lebVTZi4fC9PXQpLVmsvgQLzy-2Kzxv1WBD0Jr2wsxQ,10117
|
@@ -78,7 +79,7 @@ modal/volume.py,sha256=T-pLxCYqmqRO6OolpAXlPxomMu0RWjti2e4kUpaj2cQ,29229
|
|
78
79
|
modal/volume.pyi,sha256=eekb2dnAAwFK_NO9ciAOOTthl8NP1iAmMFrCGgjDA2k,11100
|
79
80
|
modal/_runtime/__init__.py,sha256=MIEP8jhXUeGq_eCjYFcqN5b1bxBM4fdk0VESpjWR0fc,28
|
80
81
|
modal/_runtime/asgi.py,sha256=Mjs859pSgOmtZL-YmEsSKN557v1A2Ax_5-ERgPfj55E,21920
|
81
|
-
modal/_runtime/container_io_manager.py,sha256=
|
82
|
+
modal/_runtime/container_io_manager.py,sha256=HgDLjE78yy1P7WZTmsEVDf89YnFFWG63Ddes8uYLVDY,43764
|
82
83
|
modal/_runtime/execution_context.py,sha256=E6ofm6j1POXGPxS841X3V7JU6NheVb8OkQc7JpLq4Kg,2712
|
83
84
|
modal/_runtime/telemetry.py,sha256=T1RoAGyjBDr1swiM6pPsGRSITm7LI5FDK18oNXxY08U,5163
|
84
85
|
modal/_runtime/user_code_imports.py,sha256=n4CQOojzSdf0jwSKSy6MEnVX3IWl3t3Dq54-x9VS2Ds,14663
|
@@ -119,7 +120,7 @@ modal/cli/launch.py,sha256=44oOlGB0KYDBMfuIlkhW2uzjkWbHhDRR64UOEnGwsJ4,2989
|
|
119
120
|
modal/cli/network_file_system.py,sha256=o6VLTgN4xn5XUiNPBfxYec-5uWCgYrDmfFFLM1ZW_eE,8180
|
120
121
|
modal/cli/profile.py,sha256=rLXfjJObfPNjaZvNfHGIKqs7y9bGYyGe-K7V0w-Ni0M,3110
|
121
122
|
modal/cli/queues.py,sha256=MIh2OsliNE2QeL1erubfsRsNuG4fxqcqWA2vgIfQ4Mg,4494
|
122
|
-
modal/cli/run.py,sha256=
|
123
|
+
modal/cli/run.py,sha256=QMs3BVSkq8jve76BqgstGt4C6jilbDD9gpCCRPuHUy0,17879
|
123
124
|
modal/cli/secret.py,sha256=uQpwYrMY98iMCWeZOQTcktOYhPTZ8IHnyealDc2CZqo,4206
|
124
125
|
modal/cli/token.py,sha256=mxSgOWakXG6N71hQb1ko61XAR9ZGkTMZD-Txn7gmTac,1924
|
125
126
|
modal/cli/utils.py,sha256=hZmjyzcPjDnQSkLvycZD2LhGdcsfdZshs_rOU78EpvI,3717
|
@@ -148,10 +149,10 @@ modal_global_objects/mounts/__init__.py,sha256=MIEP8jhXUeGq_eCjYFcqN5b1bxBM4fdk0
|
|
148
149
|
modal_global_objects/mounts/modal_client_package.py,sha256=W0E_yShsRojPzWm6LtIQqNVolapdnrZkm2hVEQuZK_4,767
|
149
150
|
modal_global_objects/mounts/python_standalone.py,sha256=SL_riIxpd8mP4i4CLDCWiFFNj0Ltknm9c_UIGfX5d60,1836
|
150
151
|
modal_proto/__init__.py,sha256=MIEP8jhXUeGq_eCjYFcqN5b1bxBM4fdk0VESpjWR0fc,28
|
151
|
-
modal_proto/api.proto,sha256=
|
152
|
+
modal_proto/api.proto,sha256=B7UvK-bWmAcBuqMMWmUBubAdstblzWgMqmUUco-1fEE,79926
|
152
153
|
modal_proto/api_grpc.py,sha256=AiUCWTHQQFC9RFB_XuavB_OnVMr7GJMRLEwcf4FSTio,102088
|
153
|
-
modal_proto/api_pb2.py,sha256=
|
154
|
-
modal_proto/api_pb2.pyi,sha256=
|
154
|
+
modal_proto/api_pb2.py,sha256=EEvj9MRiYAGiGP9lZqkQs7TIP7eepBKhAtL0eJAjpRM,293669
|
155
|
+
modal_proto/api_pb2.pyi,sha256=kdIvhfjCdoMP-uLw1MvQOIwE3m2xAenexGCXuo-SX0M,392331
|
155
156
|
modal_proto/api_pb2_grpc.py,sha256=dFxVTgosyp_o8NCI1JIySlR0qTzG4ILm9mq8MNo4jYc,220795
|
156
157
|
modal_proto/api_pb2_grpc.pyi,sha256=yJgwEl-1YU42m7MU_Sm5SK3rB9xdkisPk3nZB-mlqkg,51463
|
157
158
|
modal_proto/modal_api_grpc.py,sha256=MyNzvY_WqB7QTMOQjoH6lsqCY5-6_s1HP-knsOSjANs,13640
|
@@ -163,12 +164,12 @@ modal_proto/options_pb2.pyi,sha256=l7DBrbLO7q3Ir-XDkWsajm0d0TQqqrfuX54i4BMpdQg,1
|
|
163
164
|
modal_proto/options_pb2_grpc.py,sha256=1oboBPFxaTEXt9Aw7EAj8gXHDCNMhZD2VXqocC9l_gk,159
|
164
165
|
modal_proto/options_pb2_grpc.pyi,sha256=CImmhxHsYnF09iENPoe8S4J-n93jtgUYD2JPAc0yJSI,247
|
165
166
|
modal_proto/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
166
|
-
modal_version/__init__.py,sha256=
|
167
|
+
modal_version/__init__.py,sha256=BEBWj9tcbFUwzEjUrqly601rauw5cYsHdcmJHs3iu0s,470
|
167
168
|
modal_version/__main__.py,sha256=2FO0yYQQwDTh6udt1h-cBnGd1c4ZyHnHSI4BksxzVac,105
|
168
|
-
modal_version/_version_generated.py,sha256=
|
169
|
-
modal-0.
|
170
|
-
modal-0.
|
171
|
-
modal-0.
|
172
|
-
modal-0.
|
173
|
-
modal-0.
|
174
|
-
modal-0.
|
169
|
+
modal_version/_version_generated.py,sha256=GVYfkFxvwUpfzdmWO8cxk57L2ZM-JzQISmGvWDKjz_o,148
|
170
|
+
modal-0.71.3.dist-info/LICENSE,sha256=psuoW8kuDP96RQsdhzwOqi6fyWv0ct8CR6Jr7He_P_k,10173
|
171
|
+
modal-0.71.3.dist-info/METADATA,sha256=V79Ksg3YCSNCVVjx5Sn60NhaB0o4DMJ7BbnBtQ3lbzU,2328
|
172
|
+
modal-0.71.3.dist-info/WHEEL,sha256=G16H4A3IeoQmnOrYV4ueZGKSjhipXx8zc8nu9FGlvMA,92
|
173
|
+
modal-0.71.3.dist-info/entry_points.txt,sha256=An-wYgeEUnm6xzrAP9_NTSTSciYvvEWsMZILtYrvpAI,46
|
174
|
+
modal-0.71.3.dist-info/top_level.txt,sha256=1nvYbOSIKcmU50fNrpnQnrrOpj269ei3LzgB6j9xGqg,64
|
175
|
+
modal-0.71.3.dist-info/RECORD,,
|
modal_proto/api.proto
CHANGED
@@ -1479,6 +1479,8 @@ message FunctionGetOutputsRequest {
|
|
1479
1479
|
string last_entry_id = 6;
|
1480
1480
|
bool clear_on_success = 7; // expires *any* remaining outputs soon after this call, not just the returned ones
|
1481
1481
|
double requested_at = 8; // Used for waypoints.
|
1482
|
+
// The jwts the client expects the server to be processing. This is optional and used for sync inputs only.
|
1483
|
+
repeated string input_jwts = 9;
|
1482
1484
|
}
|
1483
1485
|
|
1484
1486
|
message FunctionGetOutputsResponse {
|
@@ -1678,6 +1680,7 @@ message GenericResult { // Used for both tasks and function outputs
|
|
1678
1680
|
// Used when the user's function fails to initialize (ex. S3 mount failed due to invalid credentials).
|
1679
1681
|
// Terminates the function and all remaining inputs.
|
1680
1682
|
GENERIC_STATUS_INIT_FAILURE = 5;
|
1683
|
+
GENERIC_STATUS_INTERNAL_FAILURE = 6;
|
1681
1684
|
}
|
1682
1685
|
|
1683
1686
|
GenericStatus status = 1; // Status of the task or function output.
|