modal 1.0.6.dev9__py3-none-any.whl → 1.0.6.dev11__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/_functions.py +19 -1
- modal/_utils/function_utils.py +4 -3
- modal/client.pyi +2 -2
- modal/functions.pyi +6 -6
- modal/parallel_map.py +8 -1
- {modal-1.0.6.dev9.dist-info → modal-1.0.6.dev11.dist-info}/METADATA +1 -1
- {modal-1.0.6.dev9.dist-info → modal-1.0.6.dev11.dist-info}/RECORD +19 -19
- modal_proto/api.proto +9 -0
- modal_proto/api_grpc.py +16 -0
- modal_proto/api_pb2.py +711 -691
- modal_proto/api_pb2.pyi +31 -2
- modal_proto/api_pb2_grpc.py +33 -0
- modal_proto/api_pb2_grpc.pyi +10 -0
- modal_proto/modal_api_grpc.py +1 -0
- modal_version/__init__.py +1 -1
- {modal-1.0.6.dev9.dist-info → modal-1.0.6.dev11.dist-info}/WHEEL +0 -0
- {modal-1.0.6.dev9.dist-info → modal-1.0.6.dev11.dist-info}/entry_points.txt +0 -0
- {modal-1.0.6.dev9.dist-info → modal-1.0.6.dev11.dist-info}/licenses/LICENSE +0 -0
- {modal-1.0.6.dev9.dist-info → modal-1.0.6.dev11.dist-info}/top_level.txt +0 -0
modal/_functions.py
CHANGED
|
@@ -40,6 +40,7 @@ from ._utils.async_utils import (
|
|
|
40
40
|
synchronizer,
|
|
41
41
|
warn_if_generator_is_not_consumed,
|
|
42
42
|
)
|
|
43
|
+
from ._utils.blob_utils import MAX_OBJECT_SIZE_BYTES
|
|
43
44
|
from ._utils.deprecation import deprecation_warning, warn_if_passing_namespace
|
|
44
45
|
from ._utils.function_utils import (
|
|
45
46
|
ATTEMPT_TIMEOUT_GRACE_PERIOD,
|
|
@@ -145,6 +146,7 @@ class _Invocation:
|
|
|
145
146
|
args,
|
|
146
147
|
kwargs,
|
|
147
148
|
stub,
|
|
149
|
+
max_object_size_bytes=function._max_object_size_bytes,
|
|
148
150
|
method_name=function._use_method_name,
|
|
149
151
|
function_call_invocation_type=function_call_invocation_type,
|
|
150
152
|
)
|
|
@@ -386,7 +388,13 @@ class _InputPlaneInvocation:
|
|
|
386
388
|
function_id = function.object_id
|
|
387
389
|
control_plane_stub = client.stub
|
|
388
390
|
# Note: Blob upload is done on the control plane stub, not the input plane stub!
|
|
389
|
-
input_item = await _create_input(
|
|
391
|
+
input_item = await _create_input(
|
|
392
|
+
args,
|
|
393
|
+
kwargs,
|
|
394
|
+
control_plane_stub,
|
|
395
|
+
max_object_size_bytes=function._max_object_size_bytes,
|
|
396
|
+
method_name=function._use_method_name,
|
|
397
|
+
)
|
|
390
398
|
|
|
391
399
|
request = api_pb2.AttemptStartRequest(
|
|
392
400
|
function_id=function_id,
|
|
@@ -1414,6 +1422,15 @@ class _Function(typing.Generic[P, ReturnType, OriginalReturnType], _Object, type
|
|
|
1414
1422
|
self._definition_id = metadata.definition_id
|
|
1415
1423
|
self._input_plane_url = metadata.input_plane_url
|
|
1416
1424
|
self._input_plane_region = metadata.input_plane_region
|
|
1425
|
+
# The server may pass back a larger max object size for some input plane users. This applies to input plane
|
|
1426
|
+
# users only - anyone using the control plane will get the standard limit.
|
|
1427
|
+
# There are some cases like FunctionPrecreate where this value is not set at all. We expect that this field
|
|
1428
|
+
# will eventually be hydrated with the correct value, but just to be defensive, if the field is not set we use
|
|
1429
|
+
# MAX_OBJECT_SIZE_BYTES, otherwise it would get set to 0. Accidentally using 0 would cause us to blob upload
|
|
1430
|
+
# everything, so let's avoid that.
|
|
1431
|
+
self._max_object_size_bytes = (
|
|
1432
|
+
metadata.max_object_size_bytes if metadata.HasField("max_object_size_bytes") else MAX_OBJECT_SIZE_BYTES
|
|
1433
|
+
)
|
|
1417
1434
|
|
|
1418
1435
|
def _get_metadata(self):
|
|
1419
1436
|
# Overridden concrete implementation of base class method
|
|
@@ -1430,6 +1447,7 @@ class _Function(typing.Generic[P, ReturnType, OriginalReturnType], _Object, type
|
|
|
1430
1447
|
function_schema=self._metadata.function_schema if self._metadata else None,
|
|
1431
1448
|
input_plane_url=self._input_plane_url,
|
|
1432
1449
|
input_plane_region=self._input_plane_region,
|
|
1450
|
+
max_object_size_bytes=self._max_object_size_bytes,
|
|
1433
1451
|
)
|
|
1434
1452
|
|
|
1435
1453
|
def _check_no_web_url(self, fn_name: str):
|
modal/_utils/function_utils.py
CHANGED
|
@@ -34,7 +34,6 @@ from ..exception import (
|
|
|
34
34
|
from ..mount import ROOT_DIR, _is_modal_path, _Mount
|
|
35
35
|
from .blob_utils import (
|
|
36
36
|
MAX_ASYNC_OBJECT_SIZE_BYTES,
|
|
37
|
-
MAX_OBJECT_SIZE_BYTES,
|
|
38
37
|
blob_download,
|
|
39
38
|
blob_upload_with_r2_failure_info,
|
|
40
39
|
)
|
|
@@ -518,12 +517,13 @@ async def _process_result(result: api_pb2.GenericResult, data_format: int, stub,
|
|
|
518
517
|
|
|
519
518
|
def should_upload(
|
|
520
519
|
num_bytes: int,
|
|
520
|
+
max_object_size_bytes: int,
|
|
521
521
|
function_call_invocation_type: Optional["api_pb2.FunctionCallInvocationType.ValueType"],
|
|
522
522
|
) -> bool:
|
|
523
523
|
"""
|
|
524
524
|
Determine if the input should be uploaded to blob storage.
|
|
525
525
|
"""
|
|
526
|
-
return num_bytes >
|
|
526
|
+
return num_bytes > max_object_size_bytes or (
|
|
527
527
|
function_call_invocation_type == api_pb2.FUNCTION_CALL_INVOCATION_TYPE_ASYNC
|
|
528
528
|
and num_bytes > MAX_ASYNC_OBJECT_SIZE_BYTES
|
|
529
529
|
)
|
|
@@ -534,6 +534,7 @@ async def _create_input(
|
|
|
534
534
|
kwargs,
|
|
535
535
|
stub: ModalClientModal,
|
|
536
536
|
*,
|
|
537
|
+
max_object_size_bytes: int,
|
|
537
538
|
idx: Optional[int] = None,
|
|
538
539
|
method_name: Optional[str] = None,
|
|
539
540
|
function_call_invocation_type: Optional["api_pb2.FunctionCallInvocationType.ValueType"] = None,
|
|
@@ -548,7 +549,7 @@ async def _create_input(
|
|
|
548
549
|
|
|
549
550
|
args_serialized = serialize((args, kwargs))
|
|
550
551
|
|
|
551
|
-
if should_upload(len(args_serialized), function_call_invocation_type):
|
|
552
|
+
if should_upload(len(args_serialized), max_object_size_bytes, function_call_invocation_type):
|
|
552
553
|
args_blob_id, r2_failed, r2_latency_ms = await blob_upload_with_r2_failure_info(args_serialized, stub)
|
|
553
554
|
return api_pb2.FunctionPutInputsItem(
|
|
554
555
|
input=api_pb2.FunctionInput(
|
modal/client.pyi
CHANGED
|
@@ -31,7 +31,7 @@ class _Client:
|
|
|
31
31
|
server_url: str,
|
|
32
32
|
client_type: int,
|
|
33
33
|
credentials: typing.Optional[tuple[str, str]],
|
|
34
|
-
version: str = "1.0.6.
|
|
34
|
+
version: str = "1.0.6.dev11",
|
|
35
35
|
):
|
|
36
36
|
"""mdmd:hidden
|
|
37
37
|
The Modal client object is not intended to be instantiated directly by users.
|
|
@@ -160,7 +160,7 @@ class Client:
|
|
|
160
160
|
server_url: str,
|
|
161
161
|
client_type: int,
|
|
162
162
|
credentials: typing.Optional[tuple[str, str]],
|
|
163
|
-
version: str = "1.0.6.
|
|
163
|
+
version: str = "1.0.6.dev11",
|
|
164
164
|
):
|
|
165
165
|
"""mdmd:hidden
|
|
166
166
|
The Modal client object is not intended to be instantiated directly by users.
|
modal/functions.pyi
CHANGED
|
@@ -428,7 +428,7 @@ class Function(
|
|
|
428
428
|
|
|
429
429
|
_call_generator: ___call_generator_spec[typing_extensions.Self]
|
|
430
430
|
|
|
431
|
-
class __remote_spec(typing_extensions.Protocol[
|
|
431
|
+
class __remote_spec(typing_extensions.Protocol[ReturnType_INNER, P_INNER, SUPERSELF]):
|
|
432
432
|
def __call__(self, /, *args: P_INNER.args, **kwargs: P_INNER.kwargs) -> ReturnType_INNER:
|
|
433
433
|
"""Calls the function remotely, executing it with the given arguments and returning the execution's result."""
|
|
434
434
|
...
|
|
@@ -437,7 +437,7 @@ class Function(
|
|
|
437
437
|
"""Calls the function remotely, executing it with the given arguments and returning the execution's result."""
|
|
438
438
|
...
|
|
439
439
|
|
|
440
|
-
remote: __remote_spec[modal._functions.
|
|
440
|
+
remote: __remote_spec[modal._functions.ReturnType, modal._functions.P, typing_extensions.Self]
|
|
441
441
|
|
|
442
442
|
class __remote_gen_spec(typing_extensions.Protocol[SUPERSELF]):
|
|
443
443
|
def __call__(self, /, *args, **kwargs) -> typing.Generator[typing.Any, None, None]:
|
|
@@ -464,7 +464,7 @@ class Function(
|
|
|
464
464
|
"""
|
|
465
465
|
...
|
|
466
466
|
|
|
467
|
-
class ___experimental_spawn_spec(typing_extensions.Protocol[
|
|
467
|
+
class ___experimental_spawn_spec(typing_extensions.Protocol[ReturnType_INNER, P_INNER, SUPERSELF]):
|
|
468
468
|
def __call__(self, /, *args: P_INNER.args, **kwargs: P_INNER.kwargs) -> FunctionCall[ReturnType_INNER]:
|
|
469
469
|
"""[Experimental] Calls the function with the given arguments, without waiting for the results.
|
|
470
470
|
|
|
@@ -488,7 +488,7 @@ class Function(
|
|
|
488
488
|
...
|
|
489
489
|
|
|
490
490
|
_experimental_spawn: ___experimental_spawn_spec[
|
|
491
|
-
modal._functions.
|
|
491
|
+
modal._functions.ReturnType, modal._functions.P, typing_extensions.Self
|
|
492
492
|
]
|
|
493
493
|
|
|
494
494
|
class ___spawn_map_inner_spec(typing_extensions.Protocol[P_INNER, SUPERSELF]):
|
|
@@ -497,7 +497,7 @@ class Function(
|
|
|
497
497
|
|
|
498
498
|
_spawn_map_inner: ___spawn_map_inner_spec[modal._functions.P, typing_extensions.Self]
|
|
499
499
|
|
|
500
|
-
class __spawn_spec(typing_extensions.Protocol[
|
|
500
|
+
class __spawn_spec(typing_extensions.Protocol[ReturnType_INNER, P_INNER, SUPERSELF]):
|
|
501
501
|
def __call__(self, /, *args: P_INNER.args, **kwargs: P_INNER.kwargs) -> FunctionCall[ReturnType_INNER]:
|
|
502
502
|
"""Calls the function with the given arguments, without waiting for the results.
|
|
503
503
|
|
|
@@ -518,7 +518,7 @@ class Function(
|
|
|
518
518
|
"""
|
|
519
519
|
...
|
|
520
520
|
|
|
521
|
-
spawn: __spawn_spec[modal._functions.
|
|
521
|
+
spawn: __spawn_spec[modal._functions.ReturnType, modal._functions.P, typing_extensions.Self]
|
|
522
522
|
|
|
523
523
|
def get_raw_f(self) -> collections.abc.Callable[..., typing.Any]:
|
|
524
524
|
"""Return the inner Python object wrapped by this Modal Function."""
|
modal/parallel_map.py
CHANGED
|
@@ -139,7 +139,14 @@ async def _map_invocation(
|
|
|
139
139
|
idx = inputs_created
|
|
140
140
|
update_state(set_inputs_created=inputs_created + 1)
|
|
141
141
|
(args, kwargs) = argskwargs
|
|
142
|
-
return await _create_input(
|
|
142
|
+
return await _create_input(
|
|
143
|
+
args,
|
|
144
|
+
kwargs,
|
|
145
|
+
client.stub,
|
|
146
|
+
max_object_size_bytes=function._max_object_size_bytes,
|
|
147
|
+
idx=idx,
|
|
148
|
+
method_name=function._use_method_name,
|
|
149
|
+
)
|
|
143
150
|
|
|
144
151
|
async def input_iter():
|
|
145
152
|
while 1:
|
|
@@ -3,7 +3,7 @@ modal/__main__.py,sha256=sTJcc9EbDuCKSwg3tL6ZckFw9WWdlkXW8mId1IvJCNc,2846
|
|
|
3
3
|
modal/_clustered_functions.py,sha256=kTf-9YBXY88NutC1akI-gCbvf01RhMPCw-zoOI_YIUE,2700
|
|
4
4
|
modal/_clustered_functions.pyi,sha256=_QKM87tdYwcALSGth8a0-9qXl02fZK6zMfEGEoYz7eA,1007
|
|
5
5
|
modal/_container_entrypoint.py,sha256=2Zx9O_EMJg0H77EdnC2vGKs6uFMWwbP1NLFf-qYmWmU,28962
|
|
6
|
-
modal/_functions.py,sha256=
|
|
6
|
+
modal/_functions.py,sha256=cF17ZyB_Dmy0LHr8sbBULoGv-wheKFqkNwBN2djO4wo,82141
|
|
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=QWyUGjrGLupITkyvJru2cekizsaVdteAhwMQlw_tE4k,11172
|
|
@@ -22,7 +22,7 @@ modal/app.py,sha256=fCKq3TJ2Y5LB2WKNs6pp_5XECNH5avUL01jQljuoYRU,46603
|
|
|
22
22
|
modal/app.pyi,sha256=Z6wi_dkXywiaM2rvAvguj2Wgu9ZgPjMSLl1nH1a7EYI,42243
|
|
23
23
|
modal/call_graph.py,sha256=1g2DGcMIJvRy-xKicuf63IVE98gJSnQsr8R_NVMptNc,2581
|
|
24
24
|
modal/client.py,sha256=OwISJvkgMb-rHm9Gc4i-7YcDgGiZgwJ7F_PzwZH7a6Q,16847
|
|
25
|
-
modal/client.pyi,sha256=
|
|
25
|
+
modal/client.pyi,sha256=zl_EPLUEV_gmqQ_5xh00m4HrFWtdKfwD55do9q4k9ms,15081
|
|
26
26
|
modal/cloud_bucket_mount.py,sha256=YOe9nnvSr4ZbeCn587d7_VhE9IioZYRvF9VYQTQux08,5914
|
|
27
27
|
modal/cloud_bucket_mount.pyi,sha256=-qSfYAQvIoO_l2wsCCGTG5ZUwQieNKXdAO00yP1-LYU,7394
|
|
28
28
|
modal/cls.py,sha256=EFrM949jNXJpmwB2G_1d28b8IpHShfKIEIaiPkZqeOU,39881
|
|
@@ -39,7 +39,7 @@ modal/file_io.py,sha256=SCBfLk5gRieqdTVlA_f-2YHHtRp7Iy_sA6iR1zPsO3c,21100
|
|
|
39
39
|
modal/file_io.pyi,sha256=_Hm-59MrppfuBYxtzdJkA2Jf9zI5LlbPh_0gURk0_7s,15222
|
|
40
40
|
modal/file_pattern_matcher.py,sha256=urAue8es8jxqX94k9EYoZxxhtfgOlsEES8lbFHOorzc,7734
|
|
41
41
|
modal/functions.py,sha256=kcNHvqeGBxPI7Cgd57NIBBghkfbeFJzXO44WW0jSmao,325
|
|
42
|
-
modal/functions.pyi,sha256=
|
|
42
|
+
modal/functions.pyi,sha256=FJe_91dSrMCRNVT-YV1UhtxFKzIvL_C5q8xdk08-wT8,34840
|
|
43
43
|
modal/gpu.py,sha256=Fe5ORvVPDIstSq1xjmM6OoNgLYFWvogP9r5BgmD3hYg,6769
|
|
44
44
|
modal/image.py,sha256=W0Xg-nhsuLDO6weC1lk07MWVZFgZAxRdFqaA-Lt6_AI,94068
|
|
45
45
|
modal/image.pyi,sha256=ha8QhMPDRmfTSoRlQ8CgV4-AZ7kYKK_-R2UXLyGPgQU,68172
|
|
@@ -52,7 +52,7 @@ modal/network_file_system.pyi,sha256=Td_IobHr84iLo_9LZKQ4tNdUB60yjX8QWBaFiUvhfi8
|
|
|
52
52
|
modal/object.py,sha256=bTeskuY8JFrESjU4_UL_nTwYlBQdOLmVaOX3X6EMxsg,164
|
|
53
53
|
modal/object.pyi,sha256=751TV6BntarPsErf0HDQPsvePjWFf0JZK8ZAiRpM1yg,6627
|
|
54
54
|
modal/output.py,sha256=q4T9uHduunj4NwY-YSwkHGgjZlCXMuJbfQ5UFaAGRAc,1968
|
|
55
|
-
modal/parallel_map.py,sha256=
|
|
55
|
+
modal/parallel_map.py,sha256=hoyGd6DPz87f3WiwsncB2jls3qA1aIYK7G8e1SyO-wQ,40903
|
|
56
56
|
modal/parallel_map.pyi,sha256=-t3nZ-SvKEK8_xC4A_AmAq6UVpt4ZFtq7rPnWzHGhfg,10290
|
|
57
57
|
modal/partial_function.py,sha256=SwuAAj2wj4SO6F6nkSnwNZrczEmm9w9YdlQTHh6hr04,1195
|
|
58
58
|
modal/partial_function.pyi,sha256=-rhLIgXtLpP5weJw7U4aMcDxtFMwXJ1wf-nncPowUMg,14991
|
|
@@ -96,7 +96,7 @@ modal/_utils/blob_utils.py,sha256=4R-X3VNUJkc8EDSyGNfgcR5fAAkdpQ9W0O5Fy3PyOlU,20
|
|
|
96
96
|
modal/_utils/bytes_io_segment_payload.py,sha256=vaXPq8b52-x6G2hwE7SrjS58pg_aRm7gV3bn3yjmTzQ,4261
|
|
97
97
|
modal/_utils/deprecation.py,sha256=-Bgg7jZdcJU8lROy18YyVnQYbM8hue-hVmwJqlWAGH0,5504
|
|
98
98
|
modal/_utils/docker_utils.py,sha256=h1uETghR40mp_y3fSWuZAfbIASH1HMzuphJHghAL6DU,3722
|
|
99
|
-
modal/_utils/function_utils.py,sha256=
|
|
99
|
+
modal/_utils/function_utils.py,sha256=wFJcfmGC8RuYeQUORGKg6soLj31Mzw9qfay6CyPSAZE,28130
|
|
100
100
|
modal/_utils/git_utils.py,sha256=qtUU6JAttF55ZxYq51y55OR58B0tDPZsZWK5dJe6W5g,3182
|
|
101
101
|
modal/_utils/grpc_testing.py,sha256=H1zHqthv19eGPJz2HKXDyWXWGSqO4BRsxah3L5Xaa8A,8619
|
|
102
102
|
modal/_utils/grpc_utils.py,sha256=aFDJIK3Idn9r0iqLRmQqCKsPhRCueyeaA64mZUvDNKA,11118
|
|
@@ -147,7 +147,7 @@ modal/requirements/2024.10.txt,sha256=qD-5cVIVM9wXesJ6JC89Ew-3m2KjEElUz3jaw_MddR
|
|
|
147
147
|
modal/requirements/PREVIEW.txt,sha256=KxDaVTOwatHvboDo4lorlgJ7-n-MfAwbPwxJ0zcJqrs,312
|
|
148
148
|
modal/requirements/README.md,sha256=9tK76KP0Uph7O0M5oUgsSwEZDj5y-dcUPsnpR0Sc-Ik,854
|
|
149
149
|
modal/requirements/base-images.json,sha256=3oKVHov9vE88hMQGnn1OqDQK-ohxNF_TEL2DNPKg09s,1051
|
|
150
|
-
modal-1.0.6.
|
|
150
|
+
modal-1.0.6.dev11.dist-info/licenses/LICENSE,sha256=psuoW8kuDP96RQsdhzwOqi6fyWv0ct8CR6Jr7He_P_k,10173
|
|
151
151
|
modal_docs/__init__.py,sha256=svYKtV8HDwDCN86zbdWqyq5T8sMdGDj0PVlzc2tIxDM,28
|
|
152
152
|
modal_docs/gen_cli_docs.py,sha256=c1yfBS_x--gL5bs0N4ihMwqwX8l3IBWSkBAKNNIi6bQ,3801
|
|
153
153
|
modal_docs/gen_reference_docs.py,sha256=d_CQUGQ0rfw28u75I2mov9AlS773z9rG40-yq5o7g2U,6359
|
|
@@ -155,13 +155,13 @@ modal_docs/mdmd/__init__.py,sha256=svYKtV8HDwDCN86zbdWqyq5T8sMdGDj0PVlzc2tIxDM,2
|
|
|
155
155
|
modal_docs/mdmd/mdmd.py,sha256=eW5MzrEl7mSclDo4Uv64sQ1-4IyLggldbgUJdBVLDdI,6449
|
|
156
156
|
modal_docs/mdmd/signatures.py,sha256=XJaZrK7Mdepk5fdX51A8uENiLFNil85Ud0d4MH8H5f0,3218
|
|
157
157
|
modal_proto/__init__.py,sha256=MIEP8jhXUeGq_eCjYFcqN5b1bxBM4fdk0VESpjWR0fc,28
|
|
158
|
-
modal_proto/api.proto,sha256=
|
|
159
|
-
modal_proto/api_grpc.py,sha256=
|
|
160
|
-
modal_proto/api_pb2.py,sha256=
|
|
161
|
-
modal_proto/api_pb2.pyi,sha256=
|
|
162
|
-
modal_proto/api_pb2_grpc.py,sha256=
|
|
163
|
-
modal_proto/api_pb2_grpc.pyi,sha256=
|
|
164
|
-
modal_proto/modal_api_grpc.py,sha256=
|
|
158
|
+
modal_proto/api.proto,sha256=OUvsHwZhB-WMAhzAdHF4g0huOQtVDpSI93s1wngEX94,98254
|
|
159
|
+
modal_proto/api_grpc.py,sha256=Y2-UcWleygG_-WPkC1u4hYejehB6WEwQtaTfTNYxLPU,120808
|
|
160
|
+
modal_proto/api_pb2.py,sha256=gaZc4r_7wfH-sDbKoZNWUNqEkypGc1o8o2XKI4gyADo,346573
|
|
161
|
+
modal_proto/api_pb2.pyi,sha256=LXiJ27WnWQb9SpcDTPPnjpAF_Ua_-0cB0nsK4KDSt0U,472099
|
|
162
|
+
modal_proto/api_pb2_grpc.py,sha256=Owh9lQBI_fIf7imQhUY0htttwxMNwVUlArU0-mjItpc,261040
|
|
163
|
+
modal_proto/api_pb2_grpc.pyi,sha256=Oshss4U3PFWkZe9DckYiuw4jv_4_Ri3sRJ_YxIuXfic,61160
|
|
164
|
+
modal_proto/modal_api_grpc.py,sha256=VuqkS-sNufg1VHjN0um5pVeXDz-MlbKbufbbEqv_ElQ,18263
|
|
165
165
|
modal_proto/modal_options_grpc.py,sha256=qJ1cuwA54oRqrdTyPTbvfhFZYd9HhJKK5UCwt523r3Y,120
|
|
166
166
|
modal_proto/options.proto,sha256=zp9h5r61ivsp0XwEWwNBsVqNTbRA1VSY_UtN7sEcHtE,549
|
|
167
167
|
modal_proto/options_grpc.py,sha256=M18X3d-8F_cNYSVM3I25dUTO5rZ0rd-vCCfynfh13Nc,125
|
|
@@ -170,10 +170,10 @@ modal_proto/options_pb2.pyi,sha256=l7DBrbLO7q3Ir-XDkWsajm0d0TQqqrfuX54i4BMpdQg,1
|
|
|
170
170
|
modal_proto/options_pb2_grpc.py,sha256=1oboBPFxaTEXt9Aw7EAj8gXHDCNMhZD2VXqocC9l_gk,159
|
|
171
171
|
modal_proto/options_pb2_grpc.pyi,sha256=CImmhxHsYnF09iENPoe8S4J-n93jtgUYD2JPAc0yJSI,247
|
|
172
172
|
modal_proto/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
173
|
-
modal_version/__init__.py,sha256=
|
|
173
|
+
modal_version/__init__.py,sha256=UqUMJ7n1L5vP9wjlbC4joFDzFMNE_BFE1_iQEgOqMkE,121
|
|
174
174
|
modal_version/__main__.py,sha256=2FO0yYQQwDTh6udt1h-cBnGd1c4ZyHnHSI4BksxzVac,105
|
|
175
|
-
modal-1.0.6.
|
|
176
|
-
modal-1.0.6.
|
|
177
|
-
modal-1.0.6.
|
|
178
|
-
modal-1.0.6.
|
|
179
|
-
modal-1.0.6.
|
|
175
|
+
modal-1.0.6.dev11.dist-info/METADATA,sha256=AC8JBvzouxVsKTCU2bFOpfyDI_ZRXbB3N7HuzKNt4pk,2462
|
|
176
|
+
modal-1.0.6.dev11.dist-info/WHEEL,sha256=1tXe9gY0PYatrMPMDd6jXqjfpz_B-Wqm32CPfRC58XU,91
|
|
177
|
+
modal-1.0.6.dev11.dist-info/entry_points.txt,sha256=An-wYgeEUnm6xzrAP9_NTSTSciYvvEWsMZILtYrvpAI,46
|
|
178
|
+
modal-1.0.6.dev11.dist-info/top_level.txt,sha256=4BWzoKYREKUZ5iyPzZpjqx4G8uB5TWxXPDwibLcVa7k,43
|
|
179
|
+
modal-1.0.6.dev11.dist-info/RECORD,,
|
modal_proto/api.proto
CHANGED
|
@@ -1013,6 +1013,12 @@ message ContainerLogRequest {
|
|
|
1013
1013
|
repeated TaskLogs logs = 3;
|
|
1014
1014
|
}
|
|
1015
1015
|
|
|
1016
|
+
message ContainerReloadVolumesRequest {
|
|
1017
|
+
string task_id = 1;
|
|
1018
|
+
}
|
|
1019
|
+
|
|
1020
|
+
message ContainerReloadVolumesResponse { }
|
|
1021
|
+
|
|
1016
1022
|
message ContainerStopRequest {
|
|
1017
1023
|
string task_id = 1 [ (modal.options.audit_target_attr) = true ];
|
|
1018
1024
|
}
|
|
@@ -1718,6 +1724,8 @@ message FunctionHandleMetadata {
|
|
|
1718
1724
|
FunctionSchema function_schema = 45;
|
|
1719
1725
|
optional string input_plane_url = 46;
|
|
1720
1726
|
optional string input_plane_region = 47;
|
|
1727
|
+
// Use optional to ensure unset values default to None instead of 0
|
|
1728
|
+
optional uint64 max_object_size_bytes = 48;
|
|
1721
1729
|
}
|
|
1722
1730
|
|
|
1723
1731
|
message FunctionInput {
|
|
@@ -3281,6 +3289,7 @@ service ModalClient {
|
|
|
3281
3289
|
rpc ContainerHeartbeat(ContainerHeartbeatRequest) returns (ContainerHeartbeatResponse);
|
|
3282
3290
|
rpc ContainerHello(google.protobuf.Empty) returns (google.protobuf.Empty);
|
|
3283
3291
|
rpc ContainerLog(ContainerLogRequest) returns (google.protobuf.Empty);
|
|
3292
|
+
rpc ContainerReloadVolumes(ContainerReloadVolumesRequest) returns (ContainerReloadVolumesResponse);
|
|
3284
3293
|
rpc ContainerStop(ContainerStopRequest) returns (ContainerStopResponse);
|
|
3285
3294
|
|
|
3286
3295
|
// Dicts
|
modal_proto/api_grpc.py
CHANGED
|
@@ -162,6 +162,10 @@ class ModalClientBase(abc.ABC):
|
|
|
162
162
|
async def ContainerLog(self, stream: 'grpclib.server.Stream[modal_proto.api_pb2.ContainerLogRequest, google.protobuf.empty_pb2.Empty]') -> None:
|
|
163
163
|
pass
|
|
164
164
|
|
|
165
|
+
@abc.abstractmethod
|
|
166
|
+
async def ContainerReloadVolumes(self, stream: 'grpclib.server.Stream[modal_proto.api_pb2.ContainerReloadVolumesRequest, modal_proto.api_pb2.ContainerReloadVolumesResponse]') -> None:
|
|
167
|
+
pass
|
|
168
|
+
|
|
165
169
|
@abc.abstractmethod
|
|
166
170
|
async def ContainerStop(self, stream: 'grpclib.server.Stream[modal_proto.api_pb2.ContainerStopRequest, modal_proto.api_pb2.ContainerStopResponse]') -> None:
|
|
167
171
|
pass
|
|
@@ -860,6 +864,12 @@ class ModalClientBase(abc.ABC):
|
|
|
860
864
|
modal_proto.api_pb2.ContainerLogRequest,
|
|
861
865
|
google.protobuf.empty_pb2.Empty,
|
|
862
866
|
),
|
|
867
|
+
'/modal.client.ModalClient/ContainerReloadVolumes': grpclib.const.Handler(
|
|
868
|
+
self.ContainerReloadVolumes,
|
|
869
|
+
grpclib.const.Cardinality.UNARY_UNARY,
|
|
870
|
+
modal_proto.api_pb2.ContainerReloadVolumesRequest,
|
|
871
|
+
modal_proto.api_pb2.ContainerReloadVolumesResponse,
|
|
872
|
+
),
|
|
863
873
|
'/modal.client.ModalClient/ContainerStop': grpclib.const.Handler(
|
|
864
874
|
self.ContainerStop,
|
|
865
875
|
grpclib.const.Cardinality.UNARY_UNARY,
|
|
@@ -1802,6 +1812,12 @@ class ModalClientStub:
|
|
|
1802
1812
|
modal_proto.api_pb2.ContainerLogRequest,
|
|
1803
1813
|
google.protobuf.empty_pb2.Empty,
|
|
1804
1814
|
)
|
|
1815
|
+
self.ContainerReloadVolumes = grpclib.client.UnaryUnaryMethod(
|
|
1816
|
+
channel,
|
|
1817
|
+
'/modal.client.ModalClient/ContainerReloadVolumes',
|
|
1818
|
+
modal_proto.api_pb2.ContainerReloadVolumesRequest,
|
|
1819
|
+
modal_proto.api_pb2.ContainerReloadVolumesResponse,
|
|
1820
|
+
)
|
|
1805
1821
|
self.ContainerStop = grpclib.client.UnaryUnaryMethod(
|
|
1806
1822
|
channel,
|
|
1807
1823
|
'/modal.client.ModalClient/ContainerStop',
|