modal 1.0.6.dev10__tar.gz → 1.0.6.dev11__tar.gz
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-1.0.6.dev10 → modal-1.0.6.dev11}/PKG-INFO +1 -1
- {modal-1.0.6.dev10 → modal-1.0.6.dev11}/modal/_functions.py +19 -1
- {modal-1.0.6.dev10 → modal-1.0.6.dev11}/modal/_utils/function_utils.py +4 -3
- {modal-1.0.6.dev10 → modal-1.0.6.dev11}/modal/client.pyi +2 -2
- {modal-1.0.6.dev10 → modal-1.0.6.dev11}/modal/parallel_map.py +8 -1
- {modal-1.0.6.dev10 → modal-1.0.6.dev11}/modal.egg-info/PKG-INFO +1 -1
- {modal-1.0.6.dev10 → modal-1.0.6.dev11}/modal_proto/api.proto +2 -0
- {modal-1.0.6.dev10 → modal-1.0.6.dev11}/modal_proto/api_pb2.py +510 -510
- {modal-1.0.6.dev10 → modal-1.0.6.dev11}/modal_proto/api_pb2.pyi +8 -2
- {modal-1.0.6.dev10 → modal-1.0.6.dev11}/modal_version/__init__.py +1 -1
- {modal-1.0.6.dev10 → modal-1.0.6.dev11}/LICENSE +0 -0
- {modal-1.0.6.dev10 → modal-1.0.6.dev11}/README.md +0 -0
- {modal-1.0.6.dev10 → modal-1.0.6.dev11}/modal/__init__.py +0 -0
- {modal-1.0.6.dev10 → modal-1.0.6.dev11}/modal/__main__.py +0 -0
- {modal-1.0.6.dev10 → modal-1.0.6.dev11}/modal/_clustered_functions.py +0 -0
- {modal-1.0.6.dev10 → modal-1.0.6.dev11}/modal/_clustered_functions.pyi +0 -0
- {modal-1.0.6.dev10 → modal-1.0.6.dev11}/modal/_container_entrypoint.py +0 -0
- {modal-1.0.6.dev10 → modal-1.0.6.dev11}/modal/_ipython.py +0 -0
- {modal-1.0.6.dev10 → modal-1.0.6.dev11}/modal/_location.py +0 -0
- {modal-1.0.6.dev10 → modal-1.0.6.dev11}/modal/_object.py +0 -0
- {modal-1.0.6.dev10 → modal-1.0.6.dev11}/modal/_output.py +0 -0
- {modal-1.0.6.dev10 → modal-1.0.6.dev11}/modal/_partial_function.py +0 -0
- {modal-1.0.6.dev10 → modal-1.0.6.dev11}/modal/_pty.py +0 -0
- {modal-1.0.6.dev10 → modal-1.0.6.dev11}/modal/_resolver.py +0 -0
- {modal-1.0.6.dev10 → modal-1.0.6.dev11}/modal/_resources.py +0 -0
- {modal-1.0.6.dev10 → modal-1.0.6.dev11}/modal/_runtime/__init__.py +0 -0
- {modal-1.0.6.dev10 → modal-1.0.6.dev11}/modal/_runtime/asgi.py +0 -0
- {modal-1.0.6.dev10 → modal-1.0.6.dev11}/modal/_runtime/container_io_manager.py +0 -0
- {modal-1.0.6.dev10 → modal-1.0.6.dev11}/modal/_runtime/container_io_manager.pyi +0 -0
- {modal-1.0.6.dev10 → modal-1.0.6.dev11}/modal/_runtime/execution_context.py +0 -0
- {modal-1.0.6.dev10 → modal-1.0.6.dev11}/modal/_runtime/execution_context.pyi +0 -0
- {modal-1.0.6.dev10 → modal-1.0.6.dev11}/modal/_runtime/gpu_memory_snapshot.py +0 -0
- {modal-1.0.6.dev10 → modal-1.0.6.dev11}/modal/_runtime/telemetry.py +0 -0
- {modal-1.0.6.dev10 → modal-1.0.6.dev11}/modal/_runtime/user_code_imports.py +0 -0
- {modal-1.0.6.dev10 → modal-1.0.6.dev11}/modal/_serialization.py +0 -0
- {modal-1.0.6.dev10 → modal-1.0.6.dev11}/modal/_traceback.py +0 -0
- {modal-1.0.6.dev10 → modal-1.0.6.dev11}/modal/_tunnel.py +0 -0
- {modal-1.0.6.dev10 → modal-1.0.6.dev11}/modal/_tunnel.pyi +0 -0
- {modal-1.0.6.dev10 → modal-1.0.6.dev11}/modal/_type_manager.py +0 -0
- {modal-1.0.6.dev10 → modal-1.0.6.dev11}/modal/_utils/__init__.py +0 -0
- {modal-1.0.6.dev10 → modal-1.0.6.dev11}/modal/_utils/app_utils.py +0 -0
- {modal-1.0.6.dev10 → modal-1.0.6.dev11}/modal/_utils/async_utils.py +0 -0
- {modal-1.0.6.dev10 → modal-1.0.6.dev11}/modal/_utils/blob_utils.py +0 -0
- {modal-1.0.6.dev10 → modal-1.0.6.dev11}/modal/_utils/bytes_io_segment_payload.py +0 -0
- {modal-1.0.6.dev10 → modal-1.0.6.dev11}/modal/_utils/deprecation.py +0 -0
- {modal-1.0.6.dev10 → modal-1.0.6.dev11}/modal/_utils/docker_utils.py +0 -0
- {modal-1.0.6.dev10 → modal-1.0.6.dev11}/modal/_utils/git_utils.py +0 -0
- {modal-1.0.6.dev10 → modal-1.0.6.dev11}/modal/_utils/grpc_testing.py +0 -0
- {modal-1.0.6.dev10 → modal-1.0.6.dev11}/modal/_utils/grpc_utils.py +0 -0
- {modal-1.0.6.dev10 → modal-1.0.6.dev11}/modal/_utils/hash_utils.py +0 -0
- {modal-1.0.6.dev10 → modal-1.0.6.dev11}/modal/_utils/http_utils.py +0 -0
- {modal-1.0.6.dev10 → modal-1.0.6.dev11}/modal/_utils/jwt_utils.py +0 -0
- {modal-1.0.6.dev10 → modal-1.0.6.dev11}/modal/_utils/logger.py +0 -0
- {modal-1.0.6.dev10 → modal-1.0.6.dev11}/modal/_utils/mount_utils.py +0 -0
- {modal-1.0.6.dev10 → modal-1.0.6.dev11}/modal/_utils/name_utils.py +0 -0
- {modal-1.0.6.dev10 → modal-1.0.6.dev11}/modal/_utils/package_utils.py +0 -0
- {modal-1.0.6.dev10 → modal-1.0.6.dev11}/modal/_utils/pattern_utils.py +0 -0
- {modal-1.0.6.dev10 → modal-1.0.6.dev11}/modal/_utils/rand_pb_testing.py +0 -0
- {modal-1.0.6.dev10 → modal-1.0.6.dev11}/modal/_utils/shell_utils.py +0 -0
- {modal-1.0.6.dev10 → modal-1.0.6.dev11}/modal/_utils/time_utils.py +0 -0
- {modal-1.0.6.dev10 → modal-1.0.6.dev11}/modal/_vendor/__init__.py +0 -0
- {modal-1.0.6.dev10 → modal-1.0.6.dev11}/modal/_vendor/a2wsgi_wsgi.py +0 -0
- {modal-1.0.6.dev10 → modal-1.0.6.dev11}/modal/_vendor/cloudpickle.py +0 -0
- {modal-1.0.6.dev10 → modal-1.0.6.dev11}/modal/_vendor/tblib.py +0 -0
- {modal-1.0.6.dev10 → modal-1.0.6.dev11}/modal/_watcher.py +0 -0
- {modal-1.0.6.dev10 → modal-1.0.6.dev11}/modal/app.py +0 -0
- {modal-1.0.6.dev10 → modal-1.0.6.dev11}/modal/app.pyi +0 -0
- {modal-1.0.6.dev10 → modal-1.0.6.dev11}/modal/call_graph.py +0 -0
- {modal-1.0.6.dev10 → modal-1.0.6.dev11}/modal/cli/__init__.py +0 -0
- {modal-1.0.6.dev10 → modal-1.0.6.dev11}/modal/cli/_download.py +0 -0
- {modal-1.0.6.dev10 → modal-1.0.6.dev11}/modal/cli/_traceback.py +0 -0
- {modal-1.0.6.dev10 → modal-1.0.6.dev11}/modal/cli/app.py +0 -0
- {modal-1.0.6.dev10 → modal-1.0.6.dev11}/modal/cli/cluster.py +0 -0
- {modal-1.0.6.dev10 → modal-1.0.6.dev11}/modal/cli/config.py +0 -0
- {modal-1.0.6.dev10 → modal-1.0.6.dev11}/modal/cli/container.py +0 -0
- {modal-1.0.6.dev10 → modal-1.0.6.dev11}/modal/cli/dict.py +0 -0
- {modal-1.0.6.dev10 → modal-1.0.6.dev11}/modal/cli/entry_point.py +0 -0
- {modal-1.0.6.dev10 → modal-1.0.6.dev11}/modal/cli/environment.py +0 -0
- {modal-1.0.6.dev10 → modal-1.0.6.dev11}/modal/cli/import_refs.py +0 -0
- {modal-1.0.6.dev10 → modal-1.0.6.dev11}/modal/cli/launch.py +0 -0
- {modal-1.0.6.dev10 → modal-1.0.6.dev11}/modal/cli/network_file_system.py +0 -0
- {modal-1.0.6.dev10 → modal-1.0.6.dev11}/modal/cli/profile.py +0 -0
- {modal-1.0.6.dev10 → modal-1.0.6.dev11}/modal/cli/programs/__init__.py +0 -0
- {modal-1.0.6.dev10 → modal-1.0.6.dev11}/modal/cli/programs/run_jupyter.py +0 -0
- {modal-1.0.6.dev10 → modal-1.0.6.dev11}/modal/cli/programs/vscode.py +0 -0
- {modal-1.0.6.dev10 → modal-1.0.6.dev11}/modal/cli/queues.py +0 -0
- {modal-1.0.6.dev10 → modal-1.0.6.dev11}/modal/cli/run.py +0 -0
- {modal-1.0.6.dev10 → modal-1.0.6.dev11}/modal/cli/secret.py +0 -0
- {modal-1.0.6.dev10 → modal-1.0.6.dev11}/modal/cli/token.py +0 -0
- {modal-1.0.6.dev10 → modal-1.0.6.dev11}/modal/cli/utils.py +0 -0
- {modal-1.0.6.dev10 → modal-1.0.6.dev11}/modal/cli/volume.py +0 -0
- {modal-1.0.6.dev10 → modal-1.0.6.dev11}/modal/client.py +0 -0
- {modal-1.0.6.dev10 → modal-1.0.6.dev11}/modal/cloud_bucket_mount.py +0 -0
- {modal-1.0.6.dev10 → modal-1.0.6.dev11}/modal/cloud_bucket_mount.pyi +0 -0
- {modal-1.0.6.dev10 → modal-1.0.6.dev11}/modal/cls.py +0 -0
- {modal-1.0.6.dev10 → modal-1.0.6.dev11}/modal/cls.pyi +0 -0
- {modal-1.0.6.dev10 → modal-1.0.6.dev11}/modal/config.py +0 -0
- {modal-1.0.6.dev10 → modal-1.0.6.dev11}/modal/container_process.py +0 -0
- {modal-1.0.6.dev10 → modal-1.0.6.dev11}/modal/container_process.pyi +0 -0
- {modal-1.0.6.dev10 → modal-1.0.6.dev11}/modal/dict.py +0 -0
- {modal-1.0.6.dev10 → modal-1.0.6.dev11}/modal/dict.pyi +0 -0
- {modal-1.0.6.dev10 → modal-1.0.6.dev11}/modal/environments.py +0 -0
- {modal-1.0.6.dev10 → modal-1.0.6.dev11}/modal/environments.pyi +0 -0
- {modal-1.0.6.dev10 → modal-1.0.6.dev11}/modal/exception.py +0 -0
- {modal-1.0.6.dev10 → modal-1.0.6.dev11}/modal/experimental/__init__.py +0 -0
- {modal-1.0.6.dev10 → modal-1.0.6.dev11}/modal/experimental/ipython.py +0 -0
- {modal-1.0.6.dev10 → modal-1.0.6.dev11}/modal/file_io.py +0 -0
- {modal-1.0.6.dev10 → modal-1.0.6.dev11}/modal/file_io.pyi +0 -0
- {modal-1.0.6.dev10 → modal-1.0.6.dev11}/modal/file_pattern_matcher.py +0 -0
- {modal-1.0.6.dev10 → modal-1.0.6.dev11}/modal/functions.py +0 -0
- {modal-1.0.6.dev10 → modal-1.0.6.dev11}/modal/functions.pyi +0 -0
- {modal-1.0.6.dev10 → modal-1.0.6.dev11}/modal/gpu.py +0 -0
- {modal-1.0.6.dev10 → modal-1.0.6.dev11}/modal/image.py +0 -0
- {modal-1.0.6.dev10 → modal-1.0.6.dev11}/modal/image.pyi +0 -0
- {modal-1.0.6.dev10 → modal-1.0.6.dev11}/modal/io_streams.py +0 -0
- {modal-1.0.6.dev10 → modal-1.0.6.dev11}/modal/io_streams.pyi +0 -0
- {modal-1.0.6.dev10 → modal-1.0.6.dev11}/modal/mount.py +0 -0
- {modal-1.0.6.dev10 → modal-1.0.6.dev11}/modal/mount.pyi +0 -0
- {modal-1.0.6.dev10 → modal-1.0.6.dev11}/modal/network_file_system.py +0 -0
- {modal-1.0.6.dev10 → modal-1.0.6.dev11}/modal/network_file_system.pyi +0 -0
- {modal-1.0.6.dev10 → modal-1.0.6.dev11}/modal/object.py +0 -0
- {modal-1.0.6.dev10 → modal-1.0.6.dev11}/modal/object.pyi +0 -0
- {modal-1.0.6.dev10 → modal-1.0.6.dev11}/modal/output.py +0 -0
- {modal-1.0.6.dev10 → modal-1.0.6.dev11}/modal/parallel_map.pyi +0 -0
- {modal-1.0.6.dev10 → modal-1.0.6.dev11}/modal/partial_function.py +0 -0
- {modal-1.0.6.dev10 → modal-1.0.6.dev11}/modal/partial_function.pyi +0 -0
- {modal-1.0.6.dev10 → modal-1.0.6.dev11}/modal/proxy.py +0 -0
- {modal-1.0.6.dev10 → modal-1.0.6.dev11}/modal/proxy.pyi +0 -0
- {modal-1.0.6.dev10 → modal-1.0.6.dev11}/modal/py.typed +0 -0
- {modal-1.0.6.dev10 → modal-1.0.6.dev11}/modal/queue.py +0 -0
- {modal-1.0.6.dev10 → modal-1.0.6.dev11}/modal/queue.pyi +0 -0
- {modal-1.0.6.dev10 → modal-1.0.6.dev11}/modal/requirements/2023.12.312.txt +0 -0
- {modal-1.0.6.dev10 → modal-1.0.6.dev11}/modal/requirements/2023.12.txt +0 -0
- {modal-1.0.6.dev10 → modal-1.0.6.dev11}/modal/requirements/2024.04.txt +0 -0
- {modal-1.0.6.dev10 → modal-1.0.6.dev11}/modal/requirements/2024.10.txt +0 -0
- {modal-1.0.6.dev10 → modal-1.0.6.dev11}/modal/requirements/PREVIEW.txt +0 -0
- {modal-1.0.6.dev10 → modal-1.0.6.dev11}/modal/requirements/README.md +0 -0
- {modal-1.0.6.dev10 → modal-1.0.6.dev11}/modal/requirements/base-images.json +0 -0
- {modal-1.0.6.dev10 → modal-1.0.6.dev11}/modal/retries.py +0 -0
- {modal-1.0.6.dev10 → modal-1.0.6.dev11}/modal/runner.py +0 -0
- {modal-1.0.6.dev10 → modal-1.0.6.dev11}/modal/runner.pyi +0 -0
- {modal-1.0.6.dev10 → modal-1.0.6.dev11}/modal/running_app.py +0 -0
- {modal-1.0.6.dev10 → modal-1.0.6.dev11}/modal/sandbox.py +0 -0
- {modal-1.0.6.dev10 → modal-1.0.6.dev11}/modal/sandbox.pyi +0 -0
- {modal-1.0.6.dev10 → modal-1.0.6.dev11}/modal/schedule.py +0 -0
- {modal-1.0.6.dev10 → modal-1.0.6.dev11}/modal/scheduler_placement.py +0 -0
- {modal-1.0.6.dev10 → modal-1.0.6.dev11}/modal/secret.py +0 -0
- {modal-1.0.6.dev10 → modal-1.0.6.dev11}/modal/secret.pyi +0 -0
- {modal-1.0.6.dev10 → modal-1.0.6.dev11}/modal/serving.py +0 -0
- {modal-1.0.6.dev10 → modal-1.0.6.dev11}/modal/serving.pyi +0 -0
- {modal-1.0.6.dev10 → modal-1.0.6.dev11}/modal/snapshot.py +0 -0
- {modal-1.0.6.dev10 → modal-1.0.6.dev11}/modal/snapshot.pyi +0 -0
- {modal-1.0.6.dev10 → modal-1.0.6.dev11}/modal/stream_type.py +0 -0
- {modal-1.0.6.dev10 → modal-1.0.6.dev11}/modal/token_flow.py +0 -0
- {modal-1.0.6.dev10 → modal-1.0.6.dev11}/modal/token_flow.pyi +0 -0
- {modal-1.0.6.dev10 → modal-1.0.6.dev11}/modal/volume.py +0 -0
- {modal-1.0.6.dev10 → modal-1.0.6.dev11}/modal/volume.pyi +0 -0
- {modal-1.0.6.dev10 → modal-1.0.6.dev11}/modal.egg-info/SOURCES.txt +0 -0
- {modal-1.0.6.dev10 → modal-1.0.6.dev11}/modal.egg-info/dependency_links.txt +0 -0
- {modal-1.0.6.dev10 → modal-1.0.6.dev11}/modal.egg-info/entry_points.txt +0 -0
- {modal-1.0.6.dev10 → modal-1.0.6.dev11}/modal.egg-info/requires.txt +0 -0
- {modal-1.0.6.dev10 → modal-1.0.6.dev11}/modal.egg-info/top_level.txt +0 -0
- {modal-1.0.6.dev10 → modal-1.0.6.dev11}/modal_docs/__init__.py +0 -0
- {modal-1.0.6.dev10 → modal-1.0.6.dev11}/modal_docs/gen_cli_docs.py +0 -0
- {modal-1.0.6.dev10 → modal-1.0.6.dev11}/modal_docs/gen_reference_docs.py +0 -0
- {modal-1.0.6.dev10 → modal-1.0.6.dev11}/modal_docs/mdmd/__init__.py +0 -0
- {modal-1.0.6.dev10 → modal-1.0.6.dev11}/modal_docs/mdmd/mdmd.py +0 -0
- {modal-1.0.6.dev10 → modal-1.0.6.dev11}/modal_docs/mdmd/signatures.py +0 -0
- {modal-1.0.6.dev10 → modal-1.0.6.dev11}/modal_proto/__init__.py +0 -0
- {modal-1.0.6.dev10 → modal-1.0.6.dev11}/modal_proto/api_grpc.py +0 -0
- {modal-1.0.6.dev10 → modal-1.0.6.dev11}/modal_proto/api_pb2_grpc.py +0 -0
- {modal-1.0.6.dev10 → modal-1.0.6.dev11}/modal_proto/api_pb2_grpc.pyi +0 -0
- {modal-1.0.6.dev10 → modal-1.0.6.dev11}/modal_proto/modal_api_grpc.py +0 -0
- {modal-1.0.6.dev10 → modal-1.0.6.dev11}/modal_proto/modal_options_grpc.py +0 -0
- {modal-1.0.6.dev10 → modal-1.0.6.dev11}/modal_proto/options.proto +0 -0
- {modal-1.0.6.dev10 → modal-1.0.6.dev11}/modal_proto/options_grpc.py +0 -0
- {modal-1.0.6.dev10 → modal-1.0.6.dev11}/modal_proto/options_pb2.py +0 -0
- {modal-1.0.6.dev10 → modal-1.0.6.dev11}/modal_proto/options_pb2.pyi +0 -0
- {modal-1.0.6.dev10 → modal-1.0.6.dev11}/modal_proto/options_pb2_grpc.py +0 -0
- {modal-1.0.6.dev10 → modal-1.0.6.dev11}/modal_proto/options_pb2_grpc.pyi +0 -0
- {modal-1.0.6.dev10 → modal-1.0.6.dev11}/modal_proto/py.typed +0 -0
- {modal-1.0.6.dev10 → modal-1.0.6.dev11}/modal_version/__main__.py +0 -0
- {modal-1.0.6.dev10 → modal-1.0.6.dev11}/pyproject.toml +0 -0
- {modal-1.0.6.dev10 → modal-1.0.6.dev11}/setup.cfg +0 -0
|
@@ -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):
|
|
@@ -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(
|
|
@@ -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.
|
|
@@ -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:
|
|
@@ -1724,6 +1724,8 @@ message FunctionHandleMetadata {
|
|
|
1724
1724
|
FunctionSchema function_schema = 45;
|
|
1725
1725
|
optional string input_plane_url = 46;
|
|
1726
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;
|
|
1727
1729
|
}
|
|
1728
1730
|
|
|
1729
1731
|
message FunctionInput {
|