modal 0.66.17__py3-none-any.whl → 0.66.44__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 +5 -342
- modal/_runtime/container_io_manager.py +6 -14
- modal/_runtime/user_code_imports.py +361 -0
- modal/_utils/function_utils.py +28 -8
- modal/_utils/grpc_testing.py +33 -26
- modal/app.py +13 -46
- modal/cli/import_refs.py +4 -38
- modal/client.pyi +2 -2
- modal/cls.py +26 -19
- modal/cls.pyi +4 -4
- modal/dict.py +0 -6
- modal/dict.pyi +0 -4
- modal/experimental.py +0 -3
- modal/functions.py +42 -38
- modal/functions.pyi +9 -13
- modal/gpu.py +8 -6
- modal/image.py +141 -7
- modal/image.pyi +34 -4
- modal/io_streams.py +40 -33
- modal/io_streams.pyi +13 -13
- modal/mount.py +5 -2
- modal/network_file_system.py +0 -28
- modal/network_file_system.pyi +0 -14
- modal/partial_function.py +12 -2
- modal/queue.py +0 -6
- modal/queue.pyi +0 -4
- modal/sandbox.py +1 -1
- modal/volume.py +0 -22
- modal/volume.pyi +0 -9
- {modal-0.66.17.dist-info → modal-0.66.44.dist-info}/METADATA +1 -2
- {modal-0.66.17.dist-info → modal-0.66.44.dist-info}/RECORD +43 -42
- modal_proto/api.proto +3 -20
- modal_proto/api_grpc.py +0 -16
- modal_proto/api_pb2.py +389 -413
- modal_proto/api_pb2.pyi +12 -58
- modal_proto/api_pb2_grpc.py +0 -33
- modal_proto/api_pb2_grpc.pyi +0 -10
- modal_proto/modal_api_grpc.py +0 -1
- modal_version/_version_generated.py +1 -1
- {modal-0.66.17.dist-info → modal-0.66.44.dist-info}/LICENSE +0 -0
- {modal-0.66.17.dist-info → modal-0.66.44.dist-info}/WHEEL +0 -0
- {modal-0.66.17.dist-info → modal-0.66.44.dist-info}/entry_points.txt +0 -0
- {modal-0.66.17.dist-info → modal-0.66.44.dist-info}/top_level.txt +0 -0
modal/partial_function.py
CHANGED
@@ -91,7 +91,7 @@ class _PartialFunction(typing.Generic[P, ReturnType, OriginalReturnType]):
|
|
91
91
|
if obj: # accessing the method on an instance of a class, e.g. `MyClass().fun``
|
92
92
|
if hasattr(obj, "_modal_functions"):
|
93
93
|
# This happens inside "local" user methods when they refer to other methods,
|
94
|
-
# e.g. Foo().parent_method()
|
94
|
+
# e.g. Foo().parent_method.remote() calling self.other_method.remote()
|
95
95
|
return getattr(obj, "_modal_functions")[k]
|
96
96
|
else:
|
97
97
|
# special edge case: referencing a method of an instance of an
|
@@ -199,6 +199,7 @@ class _MethodDecoratorType:
|
|
199
199
|
...
|
200
200
|
|
201
201
|
|
202
|
+
# TODO(elias): fix support for coroutine type unwrapping for methods (static typing)
|
202
203
|
def _method(
|
203
204
|
_warn_parentheses_missing=None,
|
204
205
|
*,
|
@@ -207,7 +208,6 @@ def _method(
|
|
207
208
|
is_generator: Optional[bool] = None,
|
208
209
|
keep_warm: Optional[int] = None, # Deprecated: Use keep_warm on @app.cls() instead
|
209
210
|
) -> _MethodDecoratorType:
|
210
|
-
# TODO(elias): fix support for coroutine type unwrapping for methods (static typing)
|
211
211
|
"""Decorator for methods that should be transformed into a Modal Function registered against this class's App.
|
212
212
|
|
213
213
|
**Usage:**
|
@@ -379,6 +379,11 @@ def _asgi_app(
|
|
379
379
|
f"Modal will drop support for default parameters in a future release.",
|
380
380
|
)
|
381
381
|
|
382
|
+
if inspect.iscoroutinefunction(raw_f):
|
383
|
+
raise InvalidError(
|
384
|
+
f"ASGI app function {raw_f.__name__} is an async function. Only sync Python functions are supported."
|
385
|
+
)
|
386
|
+
|
382
387
|
if not wait_for_response:
|
383
388
|
deprecation_error(
|
384
389
|
(2024, 5, 13),
|
@@ -448,6 +453,11 @@ def _wsgi_app(
|
|
448
453
|
f"Modal will drop support for default parameters in a future release.",
|
449
454
|
)
|
450
455
|
|
456
|
+
if inspect.iscoroutinefunction(raw_f):
|
457
|
+
raise InvalidError(
|
458
|
+
f"WSGI app function {raw_f.__name__} is an async function. Only sync Python functions are supported."
|
459
|
+
)
|
460
|
+
|
451
461
|
if not wait_for_response:
|
452
462
|
deprecation_error(
|
453
463
|
(2024, 5, 13),
|
modal/queue.py
CHANGED
@@ -175,12 +175,6 @@ class _Queue(_Object, type_prefix="qu"):
|
|
175
175
|
|
176
176
|
return _Queue._from_loader(_load, "Queue()", is_another_app=True, hydrate_lazily=True)
|
177
177
|
|
178
|
-
@staticmethod
|
179
|
-
def persisted(label: str, namespace=api_pb2.DEPLOYMENT_NAMESPACE_WORKSPACE, environment_name: Optional[str] = None):
|
180
|
-
"""mdmd:hidden"""
|
181
|
-
message = "`Queue.persisted` is deprecated. Please use `Queue.from_name(name, create_if_missing=True)` instead."
|
182
|
-
deprecation_error((2024, 3, 1), message)
|
183
|
-
|
184
178
|
@staticmethod
|
185
179
|
async def lookup(
|
186
180
|
label: str,
|
modal/queue.pyi
CHANGED
@@ -22,8 +22,6 @@ class _Queue(modal.object._Object):
|
|
22
22
|
label: str, namespace=1, environment_name: typing.Optional[str] = None, create_if_missing: bool = False
|
23
23
|
) -> _Queue: ...
|
24
24
|
@staticmethod
|
25
|
-
def persisted(label: str, namespace=1, environment_name: typing.Optional[str] = None): ...
|
26
|
-
@staticmethod
|
27
25
|
async def lookup(
|
28
26
|
label: str,
|
29
27
|
namespace=1,
|
@@ -104,8 +102,6 @@ class Queue(modal.object.Object):
|
|
104
102
|
def from_name(
|
105
103
|
label: str, namespace=1, environment_name: typing.Optional[str] = None, create_if_missing: bool = False
|
106
104
|
) -> Queue: ...
|
107
|
-
@staticmethod
|
108
|
-
def persisted(label: str, namespace=1, environment_name: typing.Optional[str] = None): ...
|
109
105
|
|
110
106
|
class __lookup_spec(typing_extensions.Protocol):
|
111
107
|
def __call__(
|
modal/sandbox.py
CHANGED
@@ -148,7 +148,7 @@ class _Sandbox(_Object, type_prefix="sb"):
|
|
148
148
|
definition = api_pb2.Sandbox(
|
149
149
|
entrypoint_args=entrypoint_args,
|
150
150
|
image_id=image.object_id,
|
151
|
-
mount_ids=[mount.object_id for mount in mounts],
|
151
|
+
mount_ids=[mount.object_id for mount in mounts] + [mount.object_id for mount in image._mount_layers],
|
152
152
|
secret_ids=[secret.object_id for secret in secrets],
|
153
153
|
timeout_secs=timeout,
|
154
154
|
workdir=workdir,
|
modal/volume.py
CHANGED
@@ -79,15 +79,6 @@ class FileEntry:
|
|
79
79
|
size=proto.size,
|
80
80
|
)
|
81
81
|
|
82
|
-
def __getattr__(self, name: str):
|
83
|
-
deprecation_error(
|
84
|
-
(2024, 4, 15),
|
85
|
-
(
|
86
|
-
f"The FileEntry dataclass was introduced to replace a private Protobuf message. "
|
87
|
-
f"This dataclass does not have the {name} attribute."
|
88
|
-
),
|
89
|
-
)
|
90
|
-
|
91
82
|
|
92
83
|
class _Volume(_Object, type_prefix="vo"):
|
93
84
|
"""A writeable volume that can be used to share files between one or more Modal functions.
|
@@ -222,19 +213,6 @@ class _Volume(_Object, type_prefix="vo"):
|
|
222
213
|
tc.infinite_loop(lambda: client.stub.VolumeHeartbeat(request), sleep=_heartbeat_sleep)
|
223
214
|
yield cls._new_hydrated(response.volume_id, client, None, is_another_app=True)
|
224
215
|
|
225
|
-
@staticmethod
|
226
|
-
def persisted(
|
227
|
-
label: str,
|
228
|
-
namespace=api_pb2.DEPLOYMENT_NAMESPACE_WORKSPACE,
|
229
|
-
environment_name: Optional[str] = None,
|
230
|
-
cloud: Optional[str] = None,
|
231
|
-
):
|
232
|
-
"""mdmd:hidden"""
|
233
|
-
message = (
|
234
|
-
"`Volume.persisted` is deprecated. Please use `Volume.from_name(name, create_if_missing=True)` instead."
|
235
|
-
)
|
236
|
-
deprecation_error((2024, 3, 1), message)
|
237
|
-
|
238
216
|
@staticmethod
|
239
217
|
async def lookup(
|
240
218
|
label: str,
|
modal/volume.pyi
CHANGED
@@ -25,7 +25,6 @@ class FileEntry:
|
|
25
25
|
|
26
26
|
@classmethod
|
27
27
|
def _from_proto(cls, proto: modal_proto.api_pb2.FileEntry) -> FileEntry: ...
|
28
|
-
def __getattr__(self, name: str): ...
|
29
28
|
def __init__(self, path: str, type: FileEntryType, mtime: int, size: int) -> None: ...
|
30
29
|
def __repr__(self): ...
|
31
30
|
def __eq__(self, other): ...
|
@@ -56,10 +55,6 @@ class _Volume(modal.object._Object):
|
|
56
55
|
_heartbeat_sleep: float = 300,
|
57
56
|
) -> typing.AsyncContextManager[_Volume]: ...
|
58
57
|
@staticmethod
|
59
|
-
def persisted(
|
60
|
-
label: str, namespace=1, environment_name: typing.Optional[str] = None, cloud: typing.Optional[str] = None
|
61
|
-
): ...
|
62
|
-
@staticmethod
|
63
58
|
async def lookup(
|
64
59
|
label: str,
|
65
60
|
namespace=1,
|
@@ -149,10 +144,6 @@ class Volume(modal.object.Object):
|
|
149
144
|
version: typing.Optional[int] = None,
|
150
145
|
_heartbeat_sleep: float = 300,
|
151
146
|
) -> synchronicity.combined_types.AsyncAndBlockingContextManager[Volume]: ...
|
152
|
-
@staticmethod
|
153
|
-
def persisted(
|
154
|
-
label: str, namespace=1, environment_name: typing.Optional[str] = None, cloud: typing.Optional[str] = None
|
155
|
-
): ...
|
156
147
|
|
157
148
|
class __lookup_spec(typing_extensions.Protocol):
|
158
149
|
def __call__(
|
@@ -1,6 +1,6 @@
|
|
1
1
|
Metadata-Version: 2.1
|
2
2
|
Name: modal
|
3
|
-
Version: 0.66.
|
3
|
+
Version: 0.66.44
|
4
4
|
Summary: Python client library for Modal
|
5
5
|
Author: Modal Labs
|
6
6
|
Author-email: support@modal.com
|
@@ -15,7 +15,6 @@ Requires-Python: >=3.9
|
|
15
15
|
Description-Content-Type: text/markdown
|
16
16
|
License-File: LICENSE
|
17
17
|
Requires-Dist: aiohttp
|
18
|
-
Requires-Dist: aiostream (~=0.5.2)
|
19
18
|
Requires-Dist: certifi
|
20
19
|
Requires-Dist: click (>=8.1.0)
|
21
20
|
Requires-Dist: fastapi
|
@@ -2,7 +2,7 @@ modal/__init__.py,sha256=Yn8zS7Jxl5uZjPM331Pc4FdSmp9Rt6VdE7TiE4ZKRc8,2151
|
|
2
2
|
modal/__main__.py,sha256=scYhGFqh8OJcVDo-VOxIT6CCwxOgzgflYWMnIZiMRqE,2871
|
3
3
|
modal/_clustered_functions.py,sha256=58spAmCbOk8eyjFKW-H21W-FGyYiJmfpEMK4BnTEUrk,2706
|
4
4
|
modal/_clustered_functions.pyi,sha256=UQ7DHiQFI3A2Z8kC3gltNHJkQfvgvPuSbFsse9lSPkw,785
|
5
|
-
modal/_container_entrypoint.py,sha256=
|
5
|
+
modal/_container_entrypoint.py,sha256=qP7TRT92_wKlxR-XuLg1FzJ7w4oknlrWDlp68XE0CwQ,28670
|
6
6
|
modal/_ipython.py,sha256=HF_DYy0e0qM9WnGDmTY30s1RxzGya9GeORCauCEpRaE,450
|
7
7
|
modal/_location.py,sha256=S3lSxIU3h9HkWpkJ3Pwo0pqjIOSB1fjeSgUsY3x7eec,1202
|
8
8
|
modal/_output.py,sha256=SMaLrf1btBzHTV_tH5NzA8ZTWNJh5J0b31iG3sQU8_4,25494
|
@@ -15,52 +15,52 @@ modal/_traceback.py,sha256=1yNp1Dqq4qRIQp8idDp5PEqjwH4eA8MNI0FhFkCOFgo,4408
|
|
15
15
|
modal/_tunnel.py,sha256=SVmQxGbV7dcLwyY9eB2PIWmXw8QQmcKg2ppTcRQgZrU,6283
|
16
16
|
modal/_tunnel.pyi,sha256=SA_Q0UGB-D9skFjv6CqlTnCEWU67a2xJxfwVdXtar3Y,1259
|
17
17
|
modal/_watcher.py,sha256=STlDe73R7IS33a_GMW2HnDc3hCDKLdsBfMxRpVh-flA,3581
|
18
|
-
modal/app.py,sha256=
|
18
|
+
modal/app.py,sha256=QEBK8qYSrux36oi3iS3msBQmcUOS1r4s2nengzzynjQ,44658
|
19
19
|
modal/app.pyi,sha256=wHwBIDqkUb2CQzYVhxZafJ8xZ17TZ-8y-cRyOeZsEm0,25182
|
20
20
|
modal/call_graph.py,sha256=l-Wi6vM8aosCdHTWegcCyGeVJGFdZ_fzlCmbRVPBXFI,2593
|
21
21
|
modal/client.py,sha256=4SpWb4n0nolITR36kADZl1tYLOg6avukmzZU56UQjCo,16385
|
22
|
-
modal/client.pyi,sha256=
|
22
|
+
modal/client.pyi,sha256=G8PEZZNj243tqHX-HnfOm5hyUADo34xQEiOLCpPVVxU,7372
|
23
23
|
modal/cloud_bucket_mount.py,sha256=eWQhCtMIczpokjfTZEgNBCGO_s5ft46PqTSLfKBykq4,5748
|
24
24
|
modal/cloud_bucket_mount.pyi,sha256=tTF7M4FR9bTA30cFkz8qq3ZTlFL19NHU_36e_5GgAGA,1424
|
25
|
-
modal/cls.py,sha256=
|
26
|
-
modal/cls.pyi,sha256=
|
25
|
+
modal/cls.py,sha256=apKnBOHKYEpBiMC8mRvHtCDJl1g0vP0tG1r8mUZ1yH0,24684
|
26
|
+
modal/cls.pyi,sha256=om3xQuHTMu7q_32BDKJjAz4oP_7Z5JWV27kyDKTPFI8,8332
|
27
27
|
modal/config.py,sha256=oVmvclQ2Qlt-VmL3wEp8DgDrnTPh_K5UBEYrSXv4C4s,10928
|
28
28
|
modal/container_process.py,sha256=c_jBPtyPeSxbIcbLfs_FzTrt-1eErtRSnsfxkDozFoY,5589
|
29
29
|
modal/container_process.pyi,sha256=k2kClwaSzz11eci1pzFZgCm-ptXapHAyHTOENorlazA,2594
|
30
|
-
modal/dict.py,sha256=
|
31
|
-
modal/dict.pyi,sha256=
|
30
|
+
modal/dict.py,sha256=axbUKiXhgOVvE1IrNMK3uHg3rp3N0Uji5elQNijnhH4,12571
|
31
|
+
modal/dict.pyi,sha256=4Rh5HNzXk99hotPUzoj1kYOHNlEgndZFfA-hlmBtBIc,7223
|
32
32
|
modal/environments.py,sha256=KwKdrWfSnz2XF5eYXZyd0kdac1x1PVw2uxPYsGy8cys,6517
|
33
33
|
modal/environments.pyi,sha256=oScvFAclF55-tL9UioLIL_SPBwgy_9O-BBvJ-PLbRgY,3542
|
34
34
|
modal/exception.py,sha256=K-czk1oK8wFvK8snWrytXSByo2WNb9SJAlgBVPGWZBs,6417
|
35
|
-
modal/experimental.py,sha256=
|
36
|
-
modal/functions.py,sha256=
|
37
|
-
modal/functions.pyi,sha256=
|
38
|
-
modal/gpu.py,sha256=
|
39
|
-
modal/image.py,sha256=
|
40
|
-
modal/image.pyi,sha256=
|
41
|
-
modal/io_streams.py,sha256=
|
42
|
-
modal/io_streams.pyi,sha256=
|
43
|
-
modal/mount.py,sha256=
|
35
|
+
modal/experimental.py,sha256=jFuNbwrNHos47viMB9q-cHJSvf2RDxDdoEcss9plaZE,2302
|
36
|
+
modal/functions.py,sha256=BxccB-3a1migZQ6JA6iiHZJQ7WQ-jYpmg9DEZoTxzcc,71639
|
37
|
+
modal/functions.pyi,sha256=5JGM4Mhpm674Ia7h3OTsPBmZA32goyOs2oBCCUG8A3I,24800
|
38
|
+
modal/gpu.py,sha256=r4rL6uH3UJIQthzYvfWauXNyh01WqCPtKZCmmSX1fd4,6881
|
39
|
+
modal/image.py,sha256=j-NH8pLWk4jd5UOGD4y6W7DHWoeb3rG_VR7zPLSqj-Q,78927
|
40
|
+
modal/image.pyi,sha256=QEjjnl4ZSmqt7toHww5ZbhL2Re5qaFGgH7qADcJS_vA,24493
|
41
|
+
modal/io_streams.py,sha256=XUsNsxRzDrhkjyb2Hx0hugCoOEz266SHQF8wP-VgsfY,14582
|
42
|
+
modal/io_streams.pyi,sha256=WJmSI1WvZITUNBO7mnIuJgYdSKdbLaHk10V4GbttAVw,4452
|
43
|
+
modal/mount.py,sha256=QZ4nabpbNU9tjLIPCq86rlHor9CXzADMkhJWBYfKKgg,27750
|
44
44
|
modal/mount.pyi,sha256=nywUmeUELLY2OEnAc1NNBHmSxuEylTWBzkh6nuXkkuc,9965
|
45
|
-
modal/network_file_system.py,sha256=
|
46
|
-
modal/network_file_system.pyi,sha256=
|
45
|
+
modal/network_file_system.py,sha256=P_LsILecyda1SRHU76Hk4Lq3M1HSx9shFJbaLThzw0U,14071
|
46
|
+
modal/network_file_system.pyi,sha256=XLyUnDx55ExbJcF_xlKxRax_r06XTvSsQh-a-_EyCOU,7239
|
47
47
|
modal/object.py,sha256=zbRFZIt-Z3NQtgZPzlcEdy7u36ug4tKAuntYQBR3sDM,9625
|
48
48
|
modal/object.pyi,sha256=cwWg93H4rBk9evt1itLZAZXH5wUMyTJBZ_ADazgfjGg,8465
|
49
49
|
modal/output.py,sha256=FtPR7yvjZMgdSKD_KYkIcwYgCOiV9EKYjaj7K55Hjvg,1940
|
50
50
|
modal/parallel_map.py,sha256=lf8Wer6FAf8-dYqPqoL45cz7FYDU66-TF-h5CO2Kf5Q,16052
|
51
51
|
modal/parallel_map.pyi,sha256=pOhT0P3DDYlwLx0fR3PTsecA7DI8uOdXC1N8i-ZkyOY,2328
|
52
|
-
modal/partial_function.py,sha256=
|
52
|
+
modal/partial_function.py,sha256=xkEqMPG0rnP_BUDqGikerv6uiWxDkwZdIFSdoHMDm2A,28216
|
53
53
|
modal/partial_function.pyi,sha256=BqKN7It5QLxS2yhhhDX0RgI8EyNMPBD6Duk21kN_fvA,8908
|
54
54
|
modal/proxy.py,sha256=ZrOsuQP7dSZFq1OrIxalNnt0Zvsnp1h86Th679sSL40,1417
|
55
55
|
modal/proxy.pyi,sha256=UvygdOYneLTuoDY6hVaMNCyZ947Tmx93IdLjErUqkvM,368
|
56
56
|
modal/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
57
|
-
modal/queue.py,sha256=
|
58
|
-
modal/queue.pyi,sha256=
|
57
|
+
modal/queue.py,sha256=qCBE-V2QRl_taSDUR5bDJL91J0A8xwbTxfEU3taA4Es,18338
|
58
|
+
modal/queue.pyi,sha256=t5yhDqXRtexy7AVraCexPyT6Xo3QA_H5OxVe_JLzTps,9999
|
59
59
|
modal/retries.py,sha256=z4dYXdksUcjkefM3vGLkhCQ_m_TUPLJgC4uSYDzWSOU,3750
|
60
60
|
modal/runner.py,sha256=ZHHuPQ130pZzHdm8vOVQx6db4FiEg3SheDNyShVn9Jg,23805
|
61
61
|
modal/runner.pyi,sha256=b2qoID4HO-ww6Q0jdboR9iCTxVWTzGiC2taIx7kA-U0,5135
|
62
62
|
modal/running_app.py,sha256=AhWWCB16_k5R80oQxEVSNrmRq3fVInUCxtXKrAvcEPQ,566
|
63
|
-
modal/sandbox.py,sha256=
|
63
|
+
modal/sandbox.py,sha256=_7_sqTrEiC2zFo1XN7UCHA1L9NFXj6Kb6xu6Ecfancg,24878
|
64
64
|
modal/sandbox.pyi,sha256=LIh3cIs9Wm0x2WBpyLqmlOvqJYB2806sO4JCIJRQOi4,17231
|
65
65
|
modal/schedule.py,sha256=0ZFpKs1bOxeo5n3HZjoL7OE2ktsb-_oGtq-WJEPO4tY,2615
|
66
66
|
modal/scheduler_placement.py,sha256=2B7CAR4UMUu5AtFVWgwVFDjkKtppwKY6ek7gD0jzBYI,1208
|
@@ -71,19 +71,20 @@ modal/serving.pyi,sha256=0KWUH5rdYnihSv1XB8bK9GokzpfzrCq8Sf6nYlUvQI8,1689
|
|
71
71
|
modal/stream_type.py,sha256=A6320qoAAWhEfwOCZfGtymQTu5AfLfJXXgARqooTPvY,417
|
72
72
|
modal/token_flow.py,sha256=lsVpJACut76AeJLw44vJKMSlpcqp8wcvxdUOoX6CIOc,6754
|
73
73
|
modal/token_flow.pyi,sha256=qEYP7grgqSA440w7kBREU9Ezeo_NxCT67OciIPgDzcc,1958
|
74
|
-
modal/volume.py,sha256=
|
75
|
-
modal/volume.pyi,sha256=
|
74
|
+
modal/volume.py,sha256=PfwXajTBuZdxwQv2lHRqzfchn39I77pRiC60Ga1EJo4,28914
|
75
|
+
modal/volume.pyi,sha256=JbeGYBda2mctzyK2psAen4nnfFB2v3jEB7S7Oyv_Vm0,10986
|
76
76
|
modal/_runtime/__init__.py,sha256=MIEP8jhXUeGq_eCjYFcqN5b1bxBM4fdk0VESpjWR0fc,28
|
77
77
|
modal/_runtime/asgi.py,sha256=WoAwIiGKpk089MOca3_iA73h36v0uBuoPx0-87ajIDY,19843
|
78
|
-
modal/_runtime/container_io_manager.py,sha256=
|
78
|
+
modal/_runtime/container_io_manager.py,sha256=_MEhwyCSYeCaPQnztPxkm0anRXa3CPcwIKi403N53uo,44120
|
79
79
|
modal/_runtime/execution_context.py,sha256=cXEVY4wEK-oZJVJptyj1ZplZvVQ1HDzFsyHxhaY4o8M,2718
|
80
80
|
modal/_runtime/telemetry.py,sha256=3NbrfwYH6mvDckzdTppymmda2lQKX2oHGc2JwdFZdUc,5191
|
81
|
+
modal/_runtime/user_code_imports.py,sha256=2COhqA77zwbP__-DWiDHEScHM-Go3CmI-AlKvT_oBOU,14545
|
81
82
|
modal/_utils/__init__.py,sha256=waLjl5c6IPDhSsdWAm9Bji4e2PVxamYABKAze6CHVXY,28
|
82
83
|
modal/_utils/app_utils.py,sha256=88BT4TPLWfYAQwKTHcyzNQRHg8n9B-QE2UyJs96iV-0,108
|
83
84
|
modal/_utils/async_utils.py,sha256=3H4pBC4DW6rCA6hgRux6FMxGqPgHM-G-BTs7KXZiWz4,23958
|
84
85
|
modal/_utils/blob_utils.py,sha256=pAY22w0oVc6ujGfI7La7HPUMOf42FehIapuhSDeeqEs,15835
|
85
|
-
modal/_utils/function_utils.py,sha256=
|
86
|
-
modal/_utils/grpc_testing.py,sha256=
|
86
|
+
modal/_utils/function_utils.py,sha256=28mxgg_-7JF1DDiNnp3iNVsFQkOzMFjORsetdvZZTHU,24475
|
87
|
+
modal/_utils/grpc_testing.py,sha256=LOzWygTdHINzV-o_Ajbl7sOFbUQFoonP0iKpsJjA_nc,8301
|
87
88
|
modal/_utils/grpc_utils.py,sha256=tM1Q32VOU2WG733IfVHTLZdiyCe8Ga0f0Dx0iDLLy_8,7724
|
88
89
|
modal/_utils/hash_utils.py,sha256=HefF7zPQPxFxyx3fpz-AdSm4QsHZNNvgL9-iQHY-_F4,1790
|
89
90
|
modal/_utils/http_utils.py,sha256=VKXYNPJtrSwZ1ttcXVGQUWmn8cLAXiOTv05g2ac3GbU,2179
|
@@ -107,7 +108,7 @@ modal/cli/container.py,sha256=LGrF9iz8D3PGst6IUl0VB1Y1LJ0BWLrNRNFxWa4z-tg,3199
|
|
107
108
|
modal/cli/dict.py,sha256=lIEl6uxygFt3omC-oF6tHUxnFjVhy4d0InC_kZrlkvM,4454
|
108
109
|
modal/cli/entry_point.py,sha256=aaNxFAqZcmtSjwzkYIA_Ba9CkL4cL4_i2gy5VjoXxkM,4228
|
109
110
|
modal/cli/environment.py,sha256=eq8Rixbo8u-nJPvtGwW4-I1lXZPnevsFEv65WlSxFXY,4362
|
110
|
-
modal/cli/import_refs.py,sha256=
|
111
|
+
modal/cli/import_refs.py,sha256=0sYZLcgcnor_CECq-7yX3WBs1W55nz5y65sbysxxKzY,9267
|
111
112
|
modal/cli/launch.py,sha256=aY1fXxZyGn1Ih0lAzuAvzpXP6_OxvVCoZCgCIyV9Vos,2692
|
112
113
|
modal/cli/network_file_system.py,sha256=p_o3wu8rh2tjHXJYrjaad__pD8hv93ypeDtfSY2fSEU,7527
|
113
114
|
modal/cli/profile.py,sha256=s4jCYHwriOorEFCKxeGZoSWX8rXTR_hDTNFZhOA565s,3109
|
@@ -141,13 +142,13 @@ modal_global_objects/mounts/__init__.py,sha256=MIEP8jhXUeGq_eCjYFcqN5b1bxBM4fdk0
|
|
141
142
|
modal_global_objects/mounts/modal_client_package.py,sha256=W0E_yShsRojPzWm6LtIQqNVolapdnrZkm2hVEQuZK_4,767
|
142
143
|
modal_global_objects/mounts/python_standalone.py,sha256=_vTEX3PECUsatzhDs8lyJmDK0LbFetT1sJB6MIDfFAo,1870
|
143
144
|
modal_proto/__init__.py,sha256=MIEP8jhXUeGq_eCjYFcqN5b1bxBM4fdk0VESpjWR0fc,28
|
144
|
-
modal_proto/api.proto,sha256=
|
145
|
-
modal_proto/api_grpc.py,sha256=
|
146
|
-
modal_proto/api_pb2.py,sha256=
|
147
|
-
modal_proto/api_pb2.pyi,sha256=
|
148
|
-
modal_proto/api_pb2_grpc.py,sha256=
|
149
|
-
modal_proto/api_pb2_grpc.pyi,sha256=
|
150
|
-
modal_proto/modal_api_grpc.py,sha256=
|
145
|
+
modal_proto/api.proto,sha256=hc-xY5jmYeimEP0X-nKoiz8pZpMMKidUoNR2IOeebeI,77386
|
146
|
+
modal_proto/api_grpc.py,sha256=S7h8xe-msb3-Q8oSd7DUoB46z-dcRhsXGb6LjFCLNFI,99013
|
147
|
+
modal_proto/api_pb2.py,sha256=PLRmPloiKDiiziRzbZrzF3Cr-Cn5uCv9USwc7nC_eeg,282809
|
148
|
+
modal_proto/api_pb2.pyi,sha256=XHVPoCf60XtqCJrj7hIpu3d5ncdk3792ugyNq9XS-f4,378110
|
149
|
+
modal_proto/api_pb2_grpc.py,sha256=g7EfCSir3xStPPjJOU2U668zz6cGdN6u7SxvTTwU9aU,214126
|
150
|
+
modal_proto/api_pb2_grpc.pyi,sha256=9GhLZVRm69Qhyj_jmGqEGv1rD37Tzj6E6hGzKV08u48,49961
|
151
|
+
modal_proto/modal_api_grpc.py,sha256=en48QTR5fwA7x0twtlsqLKRjjDEAKVoh6EeSznQfQ3U,13236
|
151
152
|
modal_proto/modal_options_grpc.py,sha256=qJ1cuwA54oRqrdTyPTbvfhFZYd9HhJKK5UCwt523r3Y,120
|
152
153
|
modal_proto/options.proto,sha256=a-siq4swVbZPfaFRXAipRZzGP2bq8OsdUvjlyzAeodQ,488
|
153
154
|
modal_proto/options_grpc.py,sha256=M18X3d-8F_cNYSVM3I25dUTO5rZ0rd-vCCfynfh13Nc,125
|
@@ -158,10 +159,10 @@ modal_proto/options_pb2_grpc.pyi,sha256=CImmhxHsYnF09iENPoe8S4J-n93jtgUYD2JPAc0y
|
|
158
159
|
modal_proto/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
159
160
|
modal_version/__init__.py,sha256=UnAuHBPuPSstqgdCOx0SBVdfhpeJnMlY_oxEbu44Izg,470
|
160
161
|
modal_version/__main__.py,sha256=2FO0yYQQwDTh6udt1h-cBnGd1c4ZyHnHSI4BksxzVac,105
|
161
|
-
modal_version/_version_generated.py,sha256=
|
162
|
-
modal-0.66.
|
163
|
-
modal-0.66.
|
164
|
-
modal-0.66.
|
165
|
-
modal-0.66.
|
166
|
-
modal-0.66.
|
167
|
-
modal-0.66.
|
162
|
+
modal_version/_version_generated.py,sha256=K3KTopYH17C5MMGzy3fUGtpOXRNNR7V0OY19WIBopyw,149
|
163
|
+
modal-0.66.44.dist-info/LICENSE,sha256=psuoW8kuDP96RQsdhzwOqi6fyWv0ct8CR6Jr7He_P_k,10173
|
164
|
+
modal-0.66.44.dist-info/METADATA,sha256=YzAinNyCi4yGXbE_WKgrgchbMkTiWxI0ttvOlgIDkYE,2329
|
165
|
+
modal-0.66.44.dist-info/WHEEL,sha256=G16H4A3IeoQmnOrYV4ueZGKSjhipXx8zc8nu9FGlvMA,92
|
166
|
+
modal-0.66.44.dist-info/entry_points.txt,sha256=An-wYgeEUnm6xzrAP9_NTSTSciYvvEWsMZILtYrvpAI,46
|
167
|
+
modal-0.66.44.dist-info/top_level.txt,sha256=1nvYbOSIKcmU50fNrpnQnrrOpj269ei3LzgB6j9xGqg,64
|
168
|
+
modal-0.66.44.dist-info/RECORD,,
|
modal_proto/api.proto
CHANGED
@@ -152,12 +152,6 @@ enum GPUType {
|
|
152
152
|
GPU_TYPE_L40S = 11;
|
153
153
|
}
|
154
154
|
|
155
|
-
enum InstrumentationType {
|
156
|
-
INSTRUMENTATION_TYPE_UNSPECIFIED = 0;
|
157
|
-
INSTRUMENTATION_TYPE_METRICS = 1;
|
158
|
-
INSTRUMENTATION_TYPE_TRACE = 2;
|
159
|
-
}
|
160
|
-
|
161
155
|
enum ObjectCreationType {
|
162
156
|
OBJECT_CREATION_TYPE_UNSPECIFIED = 0; // just lookup
|
163
157
|
OBJECT_CREATION_TYPE_CREATE_IF_MISSING = 1;
|
@@ -244,13 +238,6 @@ enum TaskState {
|
|
244
238
|
TASK_STATE_LOADING_CHECKPOINT_IMAGE = 11;
|
245
239
|
}
|
246
240
|
|
247
|
-
// Encoding type used for user telemetry data.
|
248
|
-
enum TelemetryEncodingType {
|
249
|
-
TELEMETRY_ENCODING_TYPE_UNSPECIFIED = 0;
|
250
|
-
TELEMETRY_ENCODING_TYPE_PROTOBUF = 1;
|
251
|
-
TELEMETRY_ENCODING_TYPE_JSON = 2;
|
252
|
-
}
|
253
|
-
|
254
241
|
enum VolumeFsVersion {
|
255
242
|
VOLUME_FS_VERSION_UNSPECIFIED = 0;
|
256
243
|
VOLUME_FS_VERSION_V1 = 1;
|
@@ -1580,12 +1567,6 @@ message FunctionPutOutputsRequest {
|
|
1580
1567
|
double requested_at = 5; // Used for waypoints.
|
1581
1568
|
}
|
1582
1569
|
|
1583
|
-
message FunctionPutUserTelemetryRequest {
|
1584
|
-
bytes data = 1;
|
1585
|
-
TelemetryEncodingType encoding_type = 2;
|
1586
|
-
InstrumentationType instrumentation_type = 3;
|
1587
|
-
}
|
1588
|
-
|
1589
1570
|
message FunctionRetryInputsItem {
|
1590
1571
|
string input_jwt = 1;
|
1591
1572
|
FunctionInput input = 2;
|
@@ -1773,6 +1754,7 @@ message MethodDefinition {
|
|
1773
1754
|
WebhookConfig webhook_config = 3;
|
1774
1755
|
string web_url = 4;
|
1775
1756
|
WebUrlInfo web_url_info = 5;
|
1757
|
+
repeated CustomDomainInfo custom_domain_info = 6;
|
1776
1758
|
}
|
1777
1759
|
|
1778
1760
|
message MountFile {
|
@@ -2101,6 +2083,8 @@ message Sandbox {
|
|
2101
2083
|
|
2102
2084
|
// Network access configuration beyond simple allow/block.
|
2103
2085
|
NetworkAccess network_access = 22;
|
2086
|
+
|
2087
|
+
optional string proxy_id = 23;
|
2104
2088
|
}
|
2105
2089
|
|
2106
2090
|
message SandboxCreateRequest {
|
@@ -2725,7 +2709,6 @@ service ModalClient {
|
|
2725
2709
|
rpc FunctionPrecreate(FunctionPrecreateRequest) returns (FunctionPrecreateResponse);
|
2726
2710
|
rpc FunctionPutInputs(FunctionPutInputsRequest) returns (FunctionPutInputsResponse);
|
2727
2711
|
rpc FunctionPutOutputs(FunctionPutOutputsRequest) returns (google.protobuf.Empty); // For containers to return result
|
2728
|
-
rpc FunctionPutUserTelemetry(FunctionPutUserTelemetryRequest) returns (google.protobuf.Empty);
|
2729
2712
|
rpc FunctionRetryInputs(FunctionRetryInputsRequest) returns (FunctionRetryInputsResponse);
|
2730
2713
|
rpc FunctionStartPtyShell(google.protobuf.Empty) returns (google.protobuf.Empty);
|
2731
2714
|
rpc FunctionUpdateSchedulingParams(FunctionUpdateSchedulingParamsRequest) returns (FunctionUpdateSchedulingParamsResponse);
|
modal_proto/api_grpc.py
CHANGED
@@ -285,10 +285,6 @@ class ModalClientBase(abc.ABC):
|
|
285
285
|
async def FunctionPutOutputs(self, stream: 'grpclib.server.Stream[modal_proto.api_pb2.FunctionPutOutputsRequest, google.protobuf.empty_pb2.Empty]') -> None:
|
286
286
|
pass
|
287
287
|
|
288
|
-
@abc.abstractmethod
|
289
|
-
async def FunctionPutUserTelemetry(self, stream: 'grpclib.server.Stream[modal_proto.api_pb2.FunctionPutUserTelemetryRequest, google.protobuf.empty_pb2.Empty]') -> None:
|
290
|
-
pass
|
291
|
-
|
292
288
|
@abc.abstractmethod
|
293
289
|
async def FunctionRetryInputs(self, stream: 'grpclib.server.Stream[modal_proto.api_pb2.FunctionRetryInputsRequest, modal_proto.api_pb2.FunctionRetryInputsResponse]') -> None:
|
294
290
|
pass
|
@@ -941,12 +937,6 @@ class ModalClientBase(abc.ABC):
|
|
941
937
|
modal_proto.api_pb2.FunctionPutOutputsRequest,
|
942
938
|
google.protobuf.empty_pb2.Empty,
|
943
939
|
),
|
944
|
-
'/modal.client.ModalClient/FunctionPutUserTelemetry': grpclib.const.Handler(
|
945
|
-
self.FunctionPutUserTelemetry,
|
946
|
-
grpclib.const.Cardinality.UNARY_UNARY,
|
947
|
-
modal_proto.api_pb2.FunctionPutUserTelemetryRequest,
|
948
|
-
google.protobuf.empty_pb2.Empty,
|
949
|
-
),
|
950
940
|
'/modal.client.ModalClient/FunctionRetryInputs': grpclib.const.Handler(
|
951
941
|
self.FunctionRetryInputs,
|
952
942
|
grpclib.const.Cardinality.UNARY_UNARY,
|
@@ -1727,12 +1717,6 @@ class ModalClientStub:
|
|
1727
1717
|
modal_proto.api_pb2.FunctionPutOutputsRequest,
|
1728
1718
|
google.protobuf.empty_pb2.Empty,
|
1729
1719
|
)
|
1730
|
-
self.FunctionPutUserTelemetry = grpclib.client.UnaryUnaryMethod(
|
1731
|
-
channel,
|
1732
|
-
'/modal.client.ModalClient/FunctionPutUserTelemetry',
|
1733
|
-
modal_proto.api_pb2.FunctionPutUserTelemetryRequest,
|
1734
|
-
google.protobuf.empty_pb2.Empty,
|
1735
|
-
)
|
1736
1720
|
self.FunctionRetryInputs = grpclib.client.UnaryUnaryMethod(
|
1737
1721
|
channel,
|
1738
1722
|
'/modal.client.ModalClient/FunctionRetryInputs',
|