modal 1.1.5.dev67__tar.gz → 1.1.5.dev69__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.1.5.dev67 → modal-1.1.5.dev69}/PKG-INFO +1 -1
- {modal-1.1.5.dev67 → modal-1.1.5.dev69}/modal/_functions.py +3 -0
- {modal-1.1.5.dev67 → modal-1.1.5.dev69}/modal/cli/programs/run_jupyter.py +1 -1
- {modal-1.1.5.dev67 → modal-1.1.5.dev69}/modal/cli/programs/run_marimo.py +1 -1
- {modal-1.1.5.dev67 → modal-1.1.5.dev69}/modal/cli/programs/vscode.py +1 -1
- {modal-1.1.5.dev67 → modal-1.1.5.dev69}/modal/client.pyi +2 -2
- {modal-1.1.5.dev67 → modal-1.1.5.dev69}/modal/experimental/__init__.py +1 -48
- {modal-1.1.5.dev67 → modal-1.1.5.dev69}/modal.egg-info/PKG-INFO +1 -1
- {modal-1.1.5.dev67 → modal-1.1.5.dev69}/modal_version/__init__.py +1 -1
- {modal-1.1.5.dev67 → modal-1.1.5.dev69}/LICENSE +0 -0
- {modal-1.1.5.dev67 → modal-1.1.5.dev69}/README.md +0 -0
- {modal-1.1.5.dev67 → modal-1.1.5.dev69}/modal/__init__.py +0 -0
- {modal-1.1.5.dev67 → modal-1.1.5.dev69}/modal/__main__.py +0 -0
- {modal-1.1.5.dev67 → modal-1.1.5.dev69}/modal/_clustered_functions.py +0 -0
- {modal-1.1.5.dev67 → modal-1.1.5.dev69}/modal/_clustered_functions.pyi +0 -0
- {modal-1.1.5.dev67 → modal-1.1.5.dev69}/modal/_container_entrypoint.py +0 -0
- {modal-1.1.5.dev67 → modal-1.1.5.dev69}/modal/_ipython.py +0 -0
- {modal-1.1.5.dev67 → modal-1.1.5.dev69}/modal/_location.py +0 -0
- {modal-1.1.5.dev67 → modal-1.1.5.dev69}/modal/_object.py +0 -0
- {modal-1.1.5.dev67 → modal-1.1.5.dev69}/modal/_output.py +0 -0
- {modal-1.1.5.dev67 → modal-1.1.5.dev69}/modal/_partial_function.py +0 -0
- {modal-1.1.5.dev67 → modal-1.1.5.dev69}/modal/_pty.py +0 -0
- {modal-1.1.5.dev67 → modal-1.1.5.dev69}/modal/_resolver.py +0 -0
- {modal-1.1.5.dev67 → modal-1.1.5.dev69}/modal/_resources.py +0 -0
- {modal-1.1.5.dev67 → modal-1.1.5.dev69}/modal/_runtime/__init__.py +0 -0
- {modal-1.1.5.dev67 → modal-1.1.5.dev69}/modal/_runtime/asgi.py +0 -0
- {modal-1.1.5.dev67 → modal-1.1.5.dev69}/modal/_runtime/container_io_manager.py +0 -0
- {modal-1.1.5.dev67 → modal-1.1.5.dev69}/modal/_runtime/container_io_manager.pyi +0 -0
- {modal-1.1.5.dev67 → modal-1.1.5.dev69}/modal/_runtime/execution_context.py +0 -0
- {modal-1.1.5.dev67 → modal-1.1.5.dev69}/modal/_runtime/execution_context.pyi +0 -0
- {modal-1.1.5.dev67 → modal-1.1.5.dev69}/modal/_runtime/gpu_memory_snapshot.py +0 -0
- {modal-1.1.5.dev67 → modal-1.1.5.dev69}/modal/_runtime/telemetry.py +0 -0
- {modal-1.1.5.dev67 → modal-1.1.5.dev69}/modal/_runtime/user_code_imports.py +0 -0
- {modal-1.1.5.dev67 → modal-1.1.5.dev69}/modal/_serialization.py +0 -0
- {modal-1.1.5.dev67 → modal-1.1.5.dev69}/modal/_traceback.py +0 -0
- {modal-1.1.5.dev67 → modal-1.1.5.dev69}/modal/_tunnel.py +0 -0
- {modal-1.1.5.dev67 → modal-1.1.5.dev69}/modal/_tunnel.pyi +0 -0
- {modal-1.1.5.dev67 → modal-1.1.5.dev69}/modal/_type_manager.py +0 -0
- {modal-1.1.5.dev67 → modal-1.1.5.dev69}/modal/_utils/__init__.py +0 -0
- {modal-1.1.5.dev67 → modal-1.1.5.dev69}/modal/_utils/app_utils.py +0 -0
- {modal-1.1.5.dev67 → modal-1.1.5.dev69}/modal/_utils/async_utils.py +0 -0
- {modal-1.1.5.dev67 → modal-1.1.5.dev69}/modal/_utils/auth_token_manager.py +0 -0
- {modal-1.1.5.dev67 → modal-1.1.5.dev69}/modal/_utils/blob_utils.py +0 -0
- {modal-1.1.5.dev67 → modal-1.1.5.dev69}/modal/_utils/bytes_io_segment_payload.py +0 -0
- {modal-1.1.5.dev67 → modal-1.1.5.dev69}/modal/_utils/deprecation.py +0 -0
- {modal-1.1.5.dev67 → modal-1.1.5.dev69}/modal/_utils/docker_utils.py +0 -0
- {modal-1.1.5.dev67 → modal-1.1.5.dev69}/modal/_utils/function_utils.py +0 -0
- {modal-1.1.5.dev67 → modal-1.1.5.dev69}/modal/_utils/git_utils.py +0 -0
- {modal-1.1.5.dev67 → modal-1.1.5.dev69}/modal/_utils/grpc_testing.py +0 -0
- {modal-1.1.5.dev67 → modal-1.1.5.dev69}/modal/_utils/grpc_utils.py +0 -0
- {modal-1.1.5.dev67 → modal-1.1.5.dev69}/modal/_utils/hash_utils.py +0 -0
- {modal-1.1.5.dev67 → modal-1.1.5.dev69}/modal/_utils/http_utils.py +0 -0
- {modal-1.1.5.dev67 → modal-1.1.5.dev69}/modal/_utils/jwt_utils.py +0 -0
- {modal-1.1.5.dev67 → modal-1.1.5.dev69}/modal/_utils/logger.py +0 -0
- {modal-1.1.5.dev67 → modal-1.1.5.dev69}/modal/_utils/mount_utils.py +0 -0
- {modal-1.1.5.dev67 → modal-1.1.5.dev69}/modal/_utils/name_utils.py +0 -0
- {modal-1.1.5.dev67 → modal-1.1.5.dev69}/modal/_utils/package_utils.py +0 -0
- {modal-1.1.5.dev67 → modal-1.1.5.dev69}/modal/_utils/pattern_utils.py +0 -0
- {modal-1.1.5.dev67 → modal-1.1.5.dev69}/modal/_utils/rand_pb_testing.py +0 -0
- {modal-1.1.5.dev67 → modal-1.1.5.dev69}/modal/_utils/shell_utils.py +0 -0
- {modal-1.1.5.dev67 → modal-1.1.5.dev69}/modal/_utils/time_utils.py +0 -0
- {modal-1.1.5.dev67 → modal-1.1.5.dev69}/modal/_vendor/__init__.py +0 -0
- {modal-1.1.5.dev67 → modal-1.1.5.dev69}/modal/_vendor/a2wsgi_wsgi.py +0 -0
- {modal-1.1.5.dev67 → modal-1.1.5.dev69}/modal/_vendor/cloudpickle.py +0 -0
- {modal-1.1.5.dev67 → modal-1.1.5.dev69}/modal/_vendor/tblib.py +0 -0
- {modal-1.1.5.dev67 → modal-1.1.5.dev69}/modal/_watcher.py +0 -0
- {modal-1.1.5.dev67 → modal-1.1.5.dev69}/modal/app.py +0 -0
- {modal-1.1.5.dev67 → modal-1.1.5.dev69}/modal/app.pyi +0 -0
- {modal-1.1.5.dev67 → modal-1.1.5.dev69}/modal/builder/2023.12.312.txt +0 -0
- {modal-1.1.5.dev67 → modal-1.1.5.dev69}/modal/builder/2023.12.txt +0 -0
- {modal-1.1.5.dev67 → modal-1.1.5.dev69}/modal/builder/2024.04.txt +0 -0
- {modal-1.1.5.dev67 → modal-1.1.5.dev69}/modal/builder/2024.10.txt +0 -0
- {modal-1.1.5.dev67 → modal-1.1.5.dev69}/modal/builder/2025.06.txt +0 -0
- {modal-1.1.5.dev67 → modal-1.1.5.dev69}/modal/builder/PREVIEW.txt +0 -0
- {modal-1.1.5.dev67 → modal-1.1.5.dev69}/modal/builder/README.md +0 -0
- {modal-1.1.5.dev67 → modal-1.1.5.dev69}/modal/builder/base-images.json +0 -0
- {modal-1.1.5.dev67 → modal-1.1.5.dev69}/modal/call_graph.py +0 -0
- {modal-1.1.5.dev67 → modal-1.1.5.dev69}/modal/cli/__init__.py +0 -0
- {modal-1.1.5.dev67 → modal-1.1.5.dev69}/modal/cli/_download.py +0 -0
- {modal-1.1.5.dev67 → modal-1.1.5.dev69}/modal/cli/_traceback.py +0 -0
- {modal-1.1.5.dev67 → modal-1.1.5.dev69}/modal/cli/app.py +0 -0
- {modal-1.1.5.dev67 → modal-1.1.5.dev69}/modal/cli/cluster.py +0 -0
- {modal-1.1.5.dev67 → modal-1.1.5.dev69}/modal/cli/config.py +0 -0
- {modal-1.1.5.dev67 → modal-1.1.5.dev69}/modal/cli/container.py +0 -0
- {modal-1.1.5.dev67 → modal-1.1.5.dev69}/modal/cli/dict.py +0 -0
- {modal-1.1.5.dev67 → modal-1.1.5.dev69}/modal/cli/entry_point.py +0 -0
- {modal-1.1.5.dev67 → modal-1.1.5.dev69}/modal/cli/environment.py +0 -0
- {modal-1.1.5.dev67 → modal-1.1.5.dev69}/modal/cli/import_refs.py +0 -0
- {modal-1.1.5.dev67 → modal-1.1.5.dev69}/modal/cli/launch.py +0 -0
- {modal-1.1.5.dev67 → modal-1.1.5.dev69}/modal/cli/network_file_system.py +0 -0
- {modal-1.1.5.dev67 → modal-1.1.5.dev69}/modal/cli/profile.py +0 -0
- {modal-1.1.5.dev67 → modal-1.1.5.dev69}/modal/cli/programs/__init__.py +0 -0
- {modal-1.1.5.dev67 → modal-1.1.5.dev69}/modal/cli/programs/launch_instance_ssh.py +0 -0
- {modal-1.1.5.dev67 → modal-1.1.5.dev69}/modal/cli/queues.py +0 -0
- {modal-1.1.5.dev67 → modal-1.1.5.dev69}/modal/cli/run.py +0 -0
- {modal-1.1.5.dev67 → modal-1.1.5.dev69}/modal/cli/secret.py +0 -0
- {modal-1.1.5.dev67 → modal-1.1.5.dev69}/modal/cli/token.py +0 -0
- {modal-1.1.5.dev67 → modal-1.1.5.dev69}/modal/cli/utils.py +0 -0
- {modal-1.1.5.dev67 → modal-1.1.5.dev69}/modal/cli/volume.py +0 -0
- {modal-1.1.5.dev67 → modal-1.1.5.dev69}/modal/client.py +0 -0
- {modal-1.1.5.dev67 → modal-1.1.5.dev69}/modal/cloud_bucket_mount.py +0 -0
- {modal-1.1.5.dev67 → modal-1.1.5.dev69}/modal/cloud_bucket_mount.pyi +0 -0
- {modal-1.1.5.dev67 → modal-1.1.5.dev69}/modal/cls.py +0 -0
- {modal-1.1.5.dev67 → modal-1.1.5.dev69}/modal/cls.pyi +0 -0
- {modal-1.1.5.dev67 → modal-1.1.5.dev69}/modal/config.py +0 -0
- {modal-1.1.5.dev67 → modal-1.1.5.dev69}/modal/container_process.py +0 -0
- {modal-1.1.5.dev67 → modal-1.1.5.dev69}/modal/container_process.pyi +0 -0
- {modal-1.1.5.dev67 → modal-1.1.5.dev69}/modal/dict.py +0 -0
- {modal-1.1.5.dev67 → modal-1.1.5.dev69}/modal/dict.pyi +0 -0
- {modal-1.1.5.dev67 → modal-1.1.5.dev69}/modal/environments.py +0 -0
- {modal-1.1.5.dev67 → modal-1.1.5.dev69}/modal/environments.pyi +0 -0
- {modal-1.1.5.dev67 → modal-1.1.5.dev69}/modal/exception.py +0 -0
- {modal-1.1.5.dev67 → modal-1.1.5.dev69}/modal/experimental/flash.py +0 -0
- {modal-1.1.5.dev67 → modal-1.1.5.dev69}/modal/experimental/flash.pyi +0 -0
- {modal-1.1.5.dev67 → modal-1.1.5.dev69}/modal/experimental/ipython.py +0 -0
- {modal-1.1.5.dev67 → modal-1.1.5.dev69}/modal/file_io.py +0 -0
- {modal-1.1.5.dev67 → modal-1.1.5.dev69}/modal/file_io.pyi +0 -0
- {modal-1.1.5.dev67 → modal-1.1.5.dev69}/modal/file_pattern_matcher.py +0 -0
- {modal-1.1.5.dev67 → modal-1.1.5.dev69}/modal/functions.py +0 -0
- {modal-1.1.5.dev67 → modal-1.1.5.dev69}/modal/functions.pyi +0 -0
- {modal-1.1.5.dev67 → modal-1.1.5.dev69}/modal/gpu.py +0 -0
- {modal-1.1.5.dev67 → modal-1.1.5.dev69}/modal/image.py +0 -0
- {modal-1.1.5.dev67 → modal-1.1.5.dev69}/modal/image.pyi +0 -0
- {modal-1.1.5.dev67 → modal-1.1.5.dev69}/modal/io_streams.py +0 -0
- {modal-1.1.5.dev67 → modal-1.1.5.dev69}/modal/io_streams.pyi +0 -0
- {modal-1.1.5.dev67 → modal-1.1.5.dev69}/modal/mount.py +0 -0
- {modal-1.1.5.dev67 → modal-1.1.5.dev69}/modal/mount.pyi +0 -0
- {modal-1.1.5.dev67 → modal-1.1.5.dev69}/modal/network_file_system.py +0 -0
- {modal-1.1.5.dev67 → modal-1.1.5.dev69}/modal/network_file_system.pyi +0 -0
- {modal-1.1.5.dev67 → modal-1.1.5.dev69}/modal/object.py +0 -0
- {modal-1.1.5.dev67 → modal-1.1.5.dev69}/modal/object.pyi +0 -0
- {modal-1.1.5.dev67 → modal-1.1.5.dev69}/modal/output.py +0 -0
- {modal-1.1.5.dev67 → modal-1.1.5.dev69}/modal/parallel_map.py +0 -0
- {modal-1.1.5.dev67 → modal-1.1.5.dev69}/modal/parallel_map.pyi +0 -0
- {modal-1.1.5.dev67 → modal-1.1.5.dev69}/modal/partial_function.py +0 -0
- {modal-1.1.5.dev67 → modal-1.1.5.dev69}/modal/partial_function.pyi +0 -0
- {modal-1.1.5.dev67 → modal-1.1.5.dev69}/modal/proxy.py +0 -0
- {modal-1.1.5.dev67 → modal-1.1.5.dev69}/modal/proxy.pyi +0 -0
- {modal-1.1.5.dev67 → modal-1.1.5.dev69}/modal/py.typed +0 -0
- {modal-1.1.5.dev67 → modal-1.1.5.dev69}/modal/queue.py +0 -0
- {modal-1.1.5.dev67 → modal-1.1.5.dev69}/modal/queue.pyi +0 -0
- {modal-1.1.5.dev67 → modal-1.1.5.dev69}/modal/retries.py +0 -0
- {modal-1.1.5.dev67 → modal-1.1.5.dev69}/modal/runner.py +0 -0
- {modal-1.1.5.dev67 → modal-1.1.5.dev69}/modal/runner.pyi +0 -0
- {modal-1.1.5.dev67 → modal-1.1.5.dev69}/modal/running_app.py +0 -0
- {modal-1.1.5.dev67 → modal-1.1.5.dev69}/modal/sandbox.py +0 -0
- {modal-1.1.5.dev67 → modal-1.1.5.dev69}/modal/sandbox.pyi +0 -0
- {modal-1.1.5.dev67 → modal-1.1.5.dev69}/modal/schedule.py +0 -0
- {modal-1.1.5.dev67 → modal-1.1.5.dev69}/modal/scheduler_placement.py +0 -0
- {modal-1.1.5.dev67 → modal-1.1.5.dev69}/modal/secret.py +0 -0
- {modal-1.1.5.dev67 → modal-1.1.5.dev69}/modal/secret.pyi +0 -0
- {modal-1.1.5.dev67 → modal-1.1.5.dev69}/modal/serving.py +0 -0
- {modal-1.1.5.dev67 → modal-1.1.5.dev69}/modal/serving.pyi +0 -0
- {modal-1.1.5.dev67 → modal-1.1.5.dev69}/modal/snapshot.py +0 -0
- {modal-1.1.5.dev67 → modal-1.1.5.dev69}/modal/snapshot.pyi +0 -0
- {modal-1.1.5.dev67 → modal-1.1.5.dev69}/modal/stream_type.py +0 -0
- {modal-1.1.5.dev67 → modal-1.1.5.dev69}/modal/token_flow.py +0 -0
- {modal-1.1.5.dev67 → modal-1.1.5.dev69}/modal/token_flow.pyi +0 -0
- {modal-1.1.5.dev67 → modal-1.1.5.dev69}/modal/volume.py +0 -0
- {modal-1.1.5.dev67 → modal-1.1.5.dev69}/modal/volume.pyi +0 -0
- {modal-1.1.5.dev67 → modal-1.1.5.dev69}/modal.egg-info/SOURCES.txt +0 -0
- {modal-1.1.5.dev67 → modal-1.1.5.dev69}/modal.egg-info/dependency_links.txt +0 -0
- {modal-1.1.5.dev67 → modal-1.1.5.dev69}/modal.egg-info/entry_points.txt +0 -0
- {modal-1.1.5.dev67 → modal-1.1.5.dev69}/modal.egg-info/requires.txt +0 -0
- {modal-1.1.5.dev67 → modal-1.1.5.dev69}/modal.egg-info/top_level.txt +0 -0
- {modal-1.1.5.dev67 → modal-1.1.5.dev69}/modal_docs/__init__.py +0 -0
- {modal-1.1.5.dev67 → modal-1.1.5.dev69}/modal_docs/gen_cli_docs.py +0 -0
- {modal-1.1.5.dev67 → modal-1.1.5.dev69}/modal_docs/gen_reference_docs.py +0 -0
- {modal-1.1.5.dev67 → modal-1.1.5.dev69}/modal_docs/mdmd/__init__.py +0 -0
- {modal-1.1.5.dev67 → modal-1.1.5.dev69}/modal_docs/mdmd/mdmd.py +0 -0
- {modal-1.1.5.dev67 → modal-1.1.5.dev69}/modal_docs/mdmd/signatures.py +0 -0
- {modal-1.1.5.dev67 → modal-1.1.5.dev69}/modal_proto/__init__.py +0 -0
- {modal-1.1.5.dev67 → modal-1.1.5.dev69}/modal_proto/api.proto +0 -0
- {modal-1.1.5.dev67 → modal-1.1.5.dev69}/modal_proto/api_grpc.py +0 -0
- {modal-1.1.5.dev67 → modal-1.1.5.dev69}/modal_proto/api_pb2.py +0 -0
- {modal-1.1.5.dev67 → modal-1.1.5.dev69}/modal_proto/api_pb2.pyi +0 -0
- {modal-1.1.5.dev67 → modal-1.1.5.dev69}/modal_proto/api_pb2_grpc.py +0 -0
- {modal-1.1.5.dev67 → modal-1.1.5.dev69}/modal_proto/api_pb2_grpc.pyi +0 -0
- {modal-1.1.5.dev67 → modal-1.1.5.dev69}/modal_proto/modal_api_grpc.py +0 -0
- {modal-1.1.5.dev67 → modal-1.1.5.dev69}/modal_proto/modal_options_grpc.py +0 -0
- {modal-1.1.5.dev67 → modal-1.1.5.dev69}/modal_proto/options.proto +0 -0
- {modal-1.1.5.dev67 → modal-1.1.5.dev69}/modal_proto/options_grpc.py +0 -0
- {modal-1.1.5.dev67 → modal-1.1.5.dev69}/modal_proto/options_pb2.py +0 -0
- {modal-1.1.5.dev67 → modal-1.1.5.dev69}/modal_proto/options_pb2.pyi +0 -0
- {modal-1.1.5.dev67 → modal-1.1.5.dev69}/modal_proto/options_pb2_grpc.py +0 -0
- {modal-1.1.5.dev67 → modal-1.1.5.dev69}/modal_proto/options_pb2_grpc.pyi +0 -0
- {modal-1.1.5.dev67 → modal-1.1.5.dev69}/modal_proto/py.typed +0 -0
- {modal-1.1.5.dev67 → modal-1.1.5.dev69}/modal_proto/sandbox_router.proto +0 -0
- {modal-1.1.5.dev67 → modal-1.1.5.dev69}/modal_proto/sandbox_router_grpc.py +0 -0
- {modal-1.1.5.dev67 → modal-1.1.5.dev69}/modal_proto/sandbox_router_pb2.py +0 -0
- {modal-1.1.5.dev67 → modal-1.1.5.dev69}/modal_proto/sandbox_router_pb2.pyi +0 -0
- {modal-1.1.5.dev67 → modal-1.1.5.dev69}/modal_proto/sandbox_router_pb2_grpc.py +0 -0
- {modal-1.1.5.dev67 → modal-1.1.5.dev69}/modal_proto/sandbox_router_pb2_grpc.pyi +0 -0
- {modal-1.1.5.dev67 → modal-1.1.5.dev69}/modal_version/__main__.py +0 -0
- {modal-1.1.5.dev67 → modal-1.1.5.dev69}/pyproject.toml +0 -0
- {modal-1.1.5.dev67 → modal-1.1.5.dev69}/setup.cfg +0 -0
|
@@ -736,6 +736,9 @@ class _Function(typing.Generic[P, ReturnType, OriginalReturnType], _Object, type
|
|
|
736
736
|
if is_generator:
|
|
737
737
|
raise InvalidError("Generator functions do not support retries.")
|
|
738
738
|
|
|
739
|
+
if timeout is None: # type: ignore[unreachable] # Help users who aren't using type checkers
|
|
740
|
+
raise InvalidError("The `timeout` parameter cannot be set to None: https://modal.com/docs/guide/timeouts")
|
|
741
|
+
|
|
739
742
|
secrets = secrets or []
|
|
740
743
|
if env:
|
|
741
744
|
secrets = [*secrets, _Secret.from_dict(env)]
|
|
@@ -54,7 +54,7 @@ def wait_for_port(url: str, q: Queue):
|
|
|
54
54
|
cpu=args.get("cpu"),
|
|
55
55
|
memory=args.get("memory"),
|
|
56
56
|
gpu=args.get("gpu"),
|
|
57
|
-
timeout=args.get("timeout"),
|
|
57
|
+
timeout=args.get("timeout", 3600),
|
|
58
58
|
secrets=[Secret.from_dict({"MODAL_LAUNCH_ARGS": json.dumps(args)})],
|
|
59
59
|
volumes=volumes,
|
|
60
60
|
max_containers=1 if volume else None,
|
|
@@ -46,7 +46,7 @@ def _wait_for_port(url: str, q: Queue) -> None:
|
|
|
46
46
|
cpu=args.get("cpu"),
|
|
47
47
|
memory=args.get("memory"),
|
|
48
48
|
gpu=args.get("gpu"),
|
|
49
|
-
timeout=args.get("timeout"),
|
|
49
|
+
timeout=args.get("timeout", 3600),
|
|
50
50
|
secrets=[Secret.from_dict({"MODAL_LAUNCH_ARGS": json.dumps(args)})],
|
|
51
51
|
volumes=volumes,
|
|
52
52
|
max_containers=1 if volume else None,
|
|
@@ -79,7 +79,7 @@ def wait_for_port(data: tuple[str, str], q: Queue):
|
|
|
79
79
|
cpu=args.get("cpu"),
|
|
80
80
|
memory=args.get("memory"),
|
|
81
81
|
gpu=args.get("gpu"),
|
|
82
|
-
timeout=args.get("timeout"),
|
|
82
|
+
timeout=args.get("timeout", 3600),
|
|
83
83
|
secrets=[Secret.from_dict({"MODAL_LAUNCH_ARGS": json.dumps(args)})],
|
|
84
84
|
volumes=volumes,
|
|
85
85
|
max_containers=1 if volume else None,
|
|
@@ -33,7 +33,7 @@ class _Client:
|
|
|
33
33
|
server_url: str,
|
|
34
34
|
client_type: int,
|
|
35
35
|
credentials: typing.Optional[tuple[str, str]],
|
|
36
|
-
version: str = "1.1.5.
|
|
36
|
+
version: str = "1.1.5.dev69",
|
|
37
37
|
):
|
|
38
38
|
"""mdmd:hidden
|
|
39
39
|
The Modal client object is not intended to be instantiated directly by users.
|
|
@@ -164,7 +164,7 @@ class Client:
|
|
|
164
164
|
server_url: str,
|
|
165
165
|
client_type: int,
|
|
166
166
|
credentials: typing.Optional[tuple[str, str]],
|
|
167
|
-
version: str = "1.1.5.
|
|
167
|
+
version: str = "1.1.5.dev69",
|
|
168
168
|
):
|
|
169
169
|
"""mdmd:hidden
|
|
170
170
|
The Modal client object is not intended to be instantiated directly by users.
|
|
@@ -13,11 +13,10 @@ from .._object import _get_environment_name
|
|
|
13
13
|
from .._partial_function import _clustered
|
|
14
14
|
from .._runtime.container_io_manager import _ContainerIOManager
|
|
15
15
|
from .._utils.async_utils import synchronize_api, synchronizer
|
|
16
|
-
from .._utils.deprecation import deprecation_warning
|
|
17
16
|
from .._utils.grpc_utils import retry_transient_errors
|
|
18
17
|
from ..app import _App
|
|
19
18
|
from ..client import _Client
|
|
20
|
-
from ..cls import _Cls
|
|
19
|
+
from ..cls import _Cls
|
|
21
20
|
from ..exception import InvalidError
|
|
22
21
|
from ..image import DockerfileSpec, ImageBuilderVersion, _Image, _ImageRegistryConfig
|
|
23
22
|
from ..secret import _Secret
|
|
@@ -340,52 +339,6 @@ async def notebook_base_image(*, python_version: Optional[str] = None, force_bui
|
|
|
340
339
|
)
|
|
341
340
|
|
|
342
341
|
|
|
343
|
-
@synchronizer.create_blocking
|
|
344
|
-
async def update_autoscaler(
|
|
345
|
-
obj: Union[_Function, _Obj],
|
|
346
|
-
*,
|
|
347
|
-
min_containers: Optional[int] = None,
|
|
348
|
-
max_containers: Optional[int] = None,
|
|
349
|
-
buffer_containers: Optional[int] = None,
|
|
350
|
-
scaledown_window: Optional[int] = None,
|
|
351
|
-
client: Optional[_Client] = None,
|
|
352
|
-
) -> None:
|
|
353
|
-
"""Update the autoscaler settings for a Function or Obj (instance of a Cls).
|
|
354
|
-
|
|
355
|
-
This is an experimental interface for a feature that we will be adding to
|
|
356
|
-
replace the existing `.keep_warm()` method. The stable form of this interface
|
|
357
|
-
may look different (i.e., it may be a standalone function or a method).
|
|
358
|
-
|
|
359
|
-
"""
|
|
360
|
-
deprecation_warning(
|
|
361
|
-
(2025, 5, 5),
|
|
362
|
-
"The modal.experimental.update_autoscaler(...) function is now deprecated in favor of"
|
|
363
|
-
" a stable `.update_autoscaler(...) method on the corresponding object.",
|
|
364
|
-
show_source=True,
|
|
365
|
-
)
|
|
366
|
-
|
|
367
|
-
settings = api_pb2.AutoscalerSettings(
|
|
368
|
-
min_containers=min_containers,
|
|
369
|
-
max_containers=max_containers,
|
|
370
|
-
buffer_containers=buffer_containers,
|
|
371
|
-
scaledown_window=scaledown_window,
|
|
372
|
-
)
|
|
373
|
-
|
|
374
|
-
if client is None:
|
|
375
|
-
client = await _Client.from_env()
|
|
376
|
-
|
|
377
|
-
if isinstance(obj, _Function):
|
|
378
|
-
f = obj
|
|
379
|
-
else:
|
|
380
|
-
assert obj._cls._class_service_function is not None
|
|
381
|
-
await obj._cls._class_service_function.hydrate(client=client)
|
|
382
|
-
f = obj._cached_service_function()
|
|
383
|
-
await f.hydrate(client=client)
|
|
384
|
-
|
|
385
|
-
request = api_pb2.FunctionUpdateSchedulingParamsRequest(function_id=f.object_id, settings=settings)
|
|
386
|
-
await retry_transient_errors(client.stub.FunctionUpdateSchedulingParams, request)
|
|
387
|
-
|
|
388
|
-
|
|
389
342
|
@synchronizer.create_blocking
|
|
390
343
|
async def image_delete(
|
|
391
344
|
image_id: str,
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|