modal 1.2.3.dev5__tar.gz → 1.2.3.dev7__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.
- {modal-1.2.3.dev5 → modal-1.2.3.dev7}/PKG-INFO +1 -1
- {modal-1.2.3.dev5 → modal-1.2.3.dev7}/modal/cli/run.py +23 -0
- {modal-1.2.3.dev5 → modal-1.2.3.dev7}/modal/client.pyi +2 -2
- {modal-1.2.3.dev5 → modal-1.2.3.dev7}/modal/functions.pyi +6 -6
- {modal-1.2.3.dev5 → modal-1.2.3.dev7}/modal.egg-info/PKG-INFO +1 -1
- {modal-1.2.3.dev5 → modal-1.2.3.dev7}/modal_proto/api.proto +1 -0
- {modal-1.2.3.dev5 → modal-1.2.3.dev7}/modal_proto/api_pb2.py +986 -986
- {modal-1.2.3.dev5 → modal-1.2.3.dev7}/modal_proto/api_pb2.pyi +4 -1
- {modal-1.2.3.dev5 → modal-1.2.3.dev7}/modal_version/__init__.py +1 -1
- {modal-1.2.3.dev5 → modal-1.2.3.dev7}/LICENSE +0 -0
- {modal-1.2.3.dev5 → modal-1.2.3.dev7}/README.md +0 -0
- {modal-1.2.3.dev5 → modal-1.2.3.dev7}/modal/__init__.py +0 -0
- {modal-1.2.3.dev5 → modal-1.2.3.dev7}/modal/__main__.py +0 -0
- {modal-1.2.3.dev5 → modal-1.2.3.dev7}/modal/_billing.py +0 -0
- {modal-1.2.3.dev5 → modal-1.2.3.dev7}/modal/_clustered_functions.py +0 -0
- {modal-1.2.3.dev5 → modal-1.2.3.dev7}/modal/_clustered_functions.pyi +0 -0
- {modal-1.2.3.dev5 → modal-1.2.3.dev7}/modal/_container_entrypoint.py +0 -0
- {modal-1.2.3.dev5 → modal-1.2.3.dev7}/modal/_functions.py +0 -0
- {modal-1.2.3.dev5 → modal-1.2.3.dev7}/modal/_grpc_client.py +0 -0
- {modal-1.2.3.dev5 → modal-1.2.3.dev7}/modal/_ipython.py +0 -0
- {modal-1.2.3.dev5 → modal-1.2.3.dev7}/modal/_load_context.py +0 -0
- {modal-1.2.3.dev5 → modal-1.2.3.dev7}/modal/_location.py +0 -0
- {modal-1.2.3.dev5 → modal-1.2.3.dev7}/modal/_object.py +0 -0
- {modal-1.2.3.dev5 → modal-1.2.3.dev7}/modal/_output.py +0 -0
- {modal-1.2.3.dev5 → modal-1.2.3.dev7}/modal/_partial_function.py +0 -0
- {modal-1.2.3.dev5 → modal-1.2.3.dev7}/modal/_pty.py +0 -0
- {modal-1.2.3.dev5 → modal-1.2.3.dev7}/modal/_resolver.py +0 -0
- {modal-1.2.3.dev5 → modal-1.2.3.dev7}/modal/_resources.py +0 -0
- {modal-1.2.3.dev5 → modal-1.2.3.dev7}/modal/_runtime/__init__.py +0 -0
- {modal-1.2.3.dev5 → modal-1.2.3.dev7}/modal/_runtime/asgi.py +0 -0
- {modal-1.2.3.dev5 → modal-1.2.3.dev7}/modal/_runtime/container_io_manager.py +0 -0
- {modal-1.2.3.dev5 → modal-1.2.3.dev7}/modal/_runtime/container_io_manager.pyi +0 -0
- {modal-1.2.3.dev5 → modal-1.2.3.dev7}/modal/_runtime/execution_context.py +0 -0
- {modal-1.2.3.dev5 → modal-1.2.3.dev7}/modal/_runtime/execution_context.pyi +0 -0
- {modal-1.2.3.dev5 → modal-1.2.3.dev7}/modal/_runtime/gpu_memory_snapshot.py +0 -0
- {modal-1.2.3.dev5 → modal-1.2.3.dev7}/modal/_runtime/telemetry.py +0 -0
- {modal-1.2.3.dev5 → modal-1.2.3.dev7}/modal/_runtime/user_code_imports.py +0 -0
- {modal-1.2.3.dev5 → modal-1.2.3.dev7}/modal/_serialization.py +0 -0
- {modal-1.2.3.dev5 → modal-1.2.3.dev7}/modal/_traceback.py +0 -0
- {modal-1.2.3.dev5 → modal-1.2.3.dev7}/modal/_tunnel.py +0 -0
- {modal-1.2.3.dev5 → modal-1.2.3.dev7}/modal/_tunnel.pyi +0 -0
- {modal-1.2.3.dev5 → modal-1.2.3.dev7}/modal/_type_manager.py +0 -0
- {modal-1.2.3.dev5 → modal-1.2.3.dev7}/modal/_utils/__init__.py +0 -0
- {modal-1.2.3.dev5 → modal-1.2.3.dev7}/modal/_utils/app_utils.py +0 -0
- {modal-1.2.3.dev5 → modal-1.2.3.dev7}/modal/_utils/async_utils.py +0 -0
- {modal-1.2.3.dev5 → modal-1.2.3.dev7}/modal/_utils/auth_token_manager.py +0 -0
- {modal-1.2.3.dev5 → modal-1.2.3.dev7}/modal/_utils/blob_utils.py +0 -0
- {modal-1.2.3.dev5 → modal-1.2.3.dev7}/modal/_utils/bytes_io_segment_payload.py +0 -0
- {modal-1.2.3.dev5 → modal-1.2.3.dev7}/modal/_utils/deprecation.py +0 -0
- {modal-1.2.3.dev5 → modal-1.2.3.dev7}/modal/_utils/docker_utils.py +0 -0
- {modal-1.2.3.dev5 → modal-1.2.3.dev7}/modal/_utils/function_utils.py +0 -0
- {modal-1.2.3.dev5 → modal-1.2.3.dev7}/modal/_utils/git_utils.py +0 -0
- {modal-1.2.3.dev5 → modal-1.2.3.dev7}/modal/_utils/grpc_testing.py +0 -0
- {modal-1.2.3.dev5 → modal-1.2.3.dev7}/modal/_utils/grpc_utils.py +0 -0
- {modal-1.2.3.dev5 → modal-1.2.3.dev7}/modal/_utils/hash_utils.py +0 -0
- {modal-1.2.3.dev5 → modal-1.2.3.dev7}/modal/_utils/http_utils.py +0 -0
- {modal-1.2.3.dev5 → modal-1.2.3.dev7}/modal/_utils/jwt_utils.py +0 -0
- {modal-1.2.3.dev5 → modal-1.2.3.dev7}/modal/_utils/logger.py +0 -0
- {modal-1.2.3.dev5 → modal-1.2.3.dev7}/modal/_utils/mount_utils.py +0 -0
- {modal-1.2.3.dev5 → modal-1.2.3.dev7}/modal/_utils/name_utils.py +0 -0
- {modal-1.2.3.dev5 → modal-1.2.3.dev7}/modal/_utils/package_utils.py +0 -0
- {modal-1.2.3.dev5 → modal-1.2.3.dev7}/modal/_utils/pattern_utils.py +0 -0
- {modal-1.2.3.dev5 → modal-1.2.3.dev7}/modal/_utils/rand_pb_testing.py +0 -0
- {modal-1.2.3.dev5 → modal-1.2.3.dev7}/modal/_utils/shell_utils.py +0 -0
- {modal-1.2.3.dev5 → modal-1.2.3.dev7}/modal/_utils/task_command_router_client.py +0 -0
- {modal-1.2.3.dev5 → modal-1.2.3.dev7}/modal/_utils/time_utils.py +0 -0
- {modal-1.2.3.dev5 → modal-1.2.3.dev7}/modal/_vendor/__init__.py +0 -0
- {modal-1.2.3.dev5 → modal-1.2.3.dev7}/modal/_vendor/a2wsgi_wsgi.py +0 -0
- {modal-1.2.3.dev5 → modal-1.2.3.dev7}/modal/_vendor/cloudpickle.py +0 -0
- {modal-1.2.3.dev5 → modal-1.2.3.dev7}/modal/_vendor/tblib.py +0 -0
- {modal-1.2.3.dev5 → modal-1.2.3.dev7}/modal/_watcher.py +0 -0
- {modal-1.2.3.dev5 → modal-1.2.3.dev7}/modal/app.py +0 -0
- {modal-1.2.3.dev5 → modal-1.2.3.dev7}/modal/app.pyi +0 -0
- {modal-1.2.3.dev5 → modal-1.2.3.dev7}/modal/billing.py +0 -0
- {modal-1.2.3.dev5 → modal-1.2.3.dev7}/modal/builder/2023.12.312.txt +0 -0
- {modal-1.2.3.dev5 → modal-1.2.3.dev7}/modal/builder/2023.12.txt +0 -0
- {modal-1.2.3.dev5 → modal-1.2.3.dev7}/modal/builder/2024.04.txt +0 -0
- {modal-1.2.3.dev5 → modal-1.2.3.dev7}/modal/builder/2024.10.txt +0 -0
- {modal-1.2.3.dev5 → modal-1.2.3.dev7}/modal/builder/2025.06.txt +0 -0
- {modal-1.2.3.dev5 → modal-1.2.3.dev7}/modal/builder/PREVIEW.txt +0 -0
- {modal-1.2.3.dev5 → modal-1.2.3.dev7}/modal/builder/README.md +0 -0
- {modal-1.2.3.dev5 → modal-1.2.3.dev7}/modal/builder/base-images.json +0 -0
- {modal-1.2.3.dev5 → modal-1.2.3.dev7}/modal/call_graph.py +0 -0
- {modal-1.2.3.dev5 → modal-1.2.3.dev7}/modal/cli/__init__.py +0 -0
- {modal-1.2.3.dev5 → modal-1.2.3.dev7}/modal/cli/_download.py +0 -0
- {modal-1.2.3.dev5 → modal-1.2.3.dev7}/modal/cli/_traceback.py +0 -0
- {modal-1.2.3.dev5 → modal-1.2.3.dev7}/modal/cli/app.py +0 -0
- {modal-1.2.3.dev5 → modal-1.2.3.dev7}/modal/cli/cluster.py +0 -0
- {modal-1.2.3.dev5 → modal-1.2.3.dev7}/modal/cli/config.py +0 -0
- {modal-1.2.3.dev5 → modal-1.2.3.dev7}/modal/cli/container.py +0 -0
- {modal-1.2.3.dev5 → modal-1.2.3.dev7}/modal/cli/dict.py +0 -0
- {modal-1.2.3.dev5 → modal-1.2.3.dev7}/modal/cli/entry_point.py +0 -0
- {modal-1.2.3.dev5 → modal-1.2.3.dev7}/modal/cli/environment.py +0 -0
- {modal-1.2.3.dev5 → modal-1.2.3.dev7}/modal/cli/import_refs.py +0 -0
- {modal-1.2.3.dev5 → modal-1.2.3.dev7}/modal/cli/launch.py +0 -0
- {modal-1.2.3.dev5 → modal-1.2.3.dev7}/modal/cli/network_file_system.py +0 -0
- {modal-1.2.3.dev5 → modal-1.2.3.dev7}/modal/cli/profile.py +0 -0
- {modal-1.2.3.dev5 → modal-1.2.3.dev7}/modal/cli/programs/__init__.py +0 -0
- {modal-1.2.3.dev5 → modal-1.2.3.dev7}/modal/cli/programs/launch_instance_ssh.py +0 -0
- {modal-1.2.3.dev5 → modal-1.2.3.dev7}/modal/cli/programs/run_jupyter.py +0 -0
- {modal-1.2.3.dev5 → modal-1.2.3.dev7}/modal/cli/programs/run_marimo.py +0 -0
- {modal-1.2.3.dev5 → modal-1.2.3.dev7}/modal/cli/programs/vscode.py +0 -0
- {modal-1.2.3.dev5 → modal-1.2.3.dev7}/modal/cli/queues.py +0 -0
- {modal-1.2.3.dev5 → modal-1.2.3.dev7}/modal/cli/secret.py +0 -0
- {modal-1.2.3.dev5 → modal-1.2.3.dev7}/modal/cli/token.py +0 -0
- {modal-1.2.3.dev5 → modal-1.2.3.dev7}/modal/cli/utils.py +0 -0
- {modal-1.2.3.dev5 → modal-1.2.3.dev7}/modal/cli/volume.py +0 -0
- {modal-1.2.3.dev5 → modal-1.2.3.dev7}/modal/client.py +0 -0
- {modal-1.2.3.dev5 → modal-1.2.3.dev7}/modal/cloud_bucket_mount.py +0 -0
- {modal-1.2.3.dev5 → modal-1.2.3.dev7}/modal/cloud_bucket_mount.pyi +0 -0
- {modal-1.2.3.dev5 → modal-1.2.3.dev7}/modal/cls.py +0 -0
- {modal-1.2.3.dev5 → modal-1.2.3.dev7}/modal/cls.pyi +0 -0
- {modal-1.2.3.dev5 → modal-1.2.3.dev7}/modal/config.py +0 -0
- {modal-1.2.3.dev5 → modal-1.2.3.dev7}/modal/container_process.py +0 -0
- {modal-1.2.3.dev5 → modal-1.2.3.dev7}/modal/container_process.pyi +0 -0
- {modal-1.2.3.dev5 → modal-1.2.3.dev7}/modal/dict.py +0 -0
- {modal-1.2.3.dev5 → modal-1.2.3.dev7}/modal/dict.pyi +0 -0
- {modal-1.2.3.dev5 → modal-1.2.3.dev7}/modal/environments.py +0 -0
- {modal-1.2.3.dev5 → modal-1.2.3.dev7}/modal/environments.pyi +0 -0
- {modal-1.2.3.dev5 → modal-1.2.3.dev7}/modal/exception.py +0 -0
- {modal-1.2.3.dev5 → modal-1.2.3.dev7}/modal/experimental/__init__.py +0 -0
- {modal-1.2.3.dev5 → modal-1.2.3.dev7}/modal/experimental/flash.py +0 -0
- {modal-1.2.3.dev5 → modal-1.2.3.dev7}/modal/experimental/flash.pyi +0 -0
- {modal-1.2.3.dev5 → modal-1.2.3.dev7}/modal/experimental/ipython.py +0 -0
- {modal-1.2.3.dev5 → modal-1.2.3.dev7}/modal/file_io.py +0 -0
- {modal-1.2.3.dev5 → modal-1.2.3.dev7}/modal/file_io.pyi +0 -0
- {modal-1.2.3.dev5 → modal-1.2.3.dev7}/modal/file_pattern_matcher.py +0 -0
- {modal-1.2.3.dev5 → modal-1.2.3.dev7}/modal/functions.py +0 -0
- {modal-1.2.3.dev5 → modal-1.2.3.dev7}/modal/gpu.py +0 -0
- {modal-1.2.3.dev5 → modal-1.2.3.dev7}/modal/image.py +0 -0
- {modal-1.2.3.dev5 → modal-1.2.3.dev7}/modal/image.pyi +0 -0
- {modal-1.2.3.dev5 → modal-1.2.3.dev7}/modal/io_streams.py +0 -0
- {modal-1.2.3.dev5 → modal-1.2.3.dev7}/modal/io_streams.pyi +0 -0
- {modal-1.2.3.dev5 → modal-1.2.3.dev7}/modal/mount.py +0 -0
- {modal-1.2.3.dev5 → modal-1.2.3.dev7}/modal/mount.pyi +0 -0
- {modal-1.2.3.dev5 → modal-1.2.3.dev7}/modal/network_file_system.py +0 -0
- {modal-1.2.3.dev5 → modal-1.2.3.dev7}/modal/network_file_system.pyi +0 -0
- {modal-1.2.3.dev5 → modal-1.2.3.dev7}/modal/object.py +0 -0
- {modal-1.2.3.dev5 → modal-1.2.3.dev7}/modal/object.pyi +0 -0
- {modal-1.2.3.dev5 → modal-1.2.3.dev7}/modal/output.py +0 -0
- {modal-1.2.3.dev5 → modal-1.2.3.dev7}/modal/parallel_map.py +0 -0
- {modal-1.2.3.dev5 → modal-1.2.3.dev7}/modal/parallel_map.pyi +0 -0
- {modal-1.2.3.dev5 → modal-1.2.3.dev7}/modal/partial_function.py +0 -0
- {modal-1.2.3.dev5 → modal-1.2.3.dev7}/modal/partial_function.pyi +0 -0
- {modal-1.2.3.dev5 → modal-1.2.3.dev7}/modal/proxy.py +0 -0
- {modal-1.2.3.dev5 → modal-1.2.3.dev7}/modal/proxy.pyi +0 -0
- {modal-1.2.3.dev5 → modal-1.2.3.dev7}/modal/py.typed +0 -0
- {modal-1.2.3.dev5 → modal-1.2.3.dev7}/modal/queue.py +0 -0
- {modal-1.2.3.dev5 → modal-1.2.3.dev7}/modal/queue.pyi +0 -0
- {modal-1.2.3.dev5 → modal-1.2.3.dev7}/modal/retries.py +0 -0
- {modal-1.2.3.dev5 → modal-1.2.3.dev7}/modal/runner.py +0 -0
- {modal-1.2.3.dev5 → modal-1.2.3.dev7}/modal/runner.pyi +0 -0
- {modal-1.2.3.dev5 → modal-1.2.3.dev7}/modal/running_app.py +0 -0
- {modal-1.2.3.dev5 → modal-1.2.3.dev7}/modal/sandbox.py +0 -0
- {modal-1.2.3.dev5 → modal-1.2.3.dev7}/modal/sandbox.pyi +0 -0
- {modal-1.2.3.dev5 → modal-1.2.3.dev7}/modal/schedule.py +0 -0
- {modal-1.2.3.dev5 → modal-1.2.3.dev7}/modal/scheduler_placement.py +0 -0
- {modal-1.2.3.dev5 → modal-1.2.3.dev7}/modal/secret.py +0 -0
- {modal-1.2.3.dev5 → modal-1.2.3.dev7}/modal/secret.pyi +0 -0
- {modal-1.2.3.dev5 → modal-1.2.3.dev7}/modal/serving.py +0 -0
- {modal-1.2.3.dev5 → modal-1.2.3.dev7}/modal/serving.pyi +0 -0
- {modal-1.2.3.dev5 → modal-1.2.3.dev7}/modal/snapshot.py +0 -0
- {modal-1.2.3.dev5 → modal-1.2.3.dev7}/modal/snapshot.pyi +0 -0
- {modal-1.2.3.dev5 → modal-1.2.3.dev7}/modal/stream_type.py +0 -0
- {modal-1.2.3.dev5 → modal-1.2.3.dev7}/modal/token_flow.py +0 -0
- {modal-1.2.3.dev5 → modal-1.2.3.dev7}/modal/token_flow.pyi +0 -0
- {modal-1.2.3.dev5 → modal-1.2.3.dev7}/modal/volume.py +0 -0
- {modal-1.2.3.dev5 → modal-1.2.3.dev7}/modal/volume.pyi +0 -0
- {modal-1.2.3.dev5 → modal-1.2.3.dev7}/modal.egg-info/SOURCES.txt +0 -0
- {modal-1.2.3.dev5 → modal-1.2.3.dev7}/modal.egg-info/dependency_links.txt +0 -0
- {modal-1.2.3.dev5 → modal-1.2.3.dev7}/modal.egg-info/entry_points.txt +0 -0
- {modal-1.2.3.dev5 → modal-1.2.3.dev7}/modal.egg-info/requires.txt +0 -0
- {modal-1.2.3.dev5 → modal-1.2.3.dev7}/modal.egg-info/top_level.txt +0 -0
- {modal-1.2.3.dev5 → modal-1.2.3.dev7}/modal_docs/__init__.py +0 -0
- {modal-1.2.3.dev5 → modal-1.2.3.dev7}/modal_docs/gen_cli_docs.py +0 -0
- {modal-1.2.3.dev5 → modal-1.2.3.dev7}/modal_docs/gen_reference_docs.py +0 -0
- {modal-1.2.3.dev5 → modal-1.2.3.dev7}/modal_docs/mdmd/__init__.py +0 -0
- {modal-1.2.3.dev5 → modal-1.2.3.dev7}/modal_docs/mdmd/mdmd.py +0 -0
- {modal-1.2.3.dev5 → modal-1.2.3.dev7}/modal_docs/mdmd/signatures.py +0 -0
- {modal-1.2.3.dev5 → modal-1.2.3.dev7}/modal_proto/__init__.py +0 -0
- {modal-1.2.3.dev5 → modal-1.2.3.dev7}/modal_proto/api_grpc.py +0 -0
- {modal-1.2.3.dev5 → modal-1.2.3.dev7}/modal_proto/api_pb2_grpc.py +0 -0
- {modal-1.2.3.dev5 → modal-1.2.3.dev7}/modal_proto/api_pb2_grpc.pyi +0 -0
- {modal-1.2.3.dev5 → modal-1.2.3.dev7}/modal_proto/modal_api_grpc.py +0 -0
- {modal-1.2.3.dev5 → modal-1.2.3.dev7}/modal_proto/py.typed +0 -0
- {modal-1.2.3.dev5 → modal-1.2.3.dev7}/modal_proto/sandbox_router.proto +0 -0
- {modal-1.2.3.dev5 → modal-1.2.3.dev7}/modal_proto/sandbox_router_grpc.py +0 -0
- {modal-1.2.3.dev5 → modal-1.2.3.dev7}/modal_proto/sandbox_router_pb2.py +0 -0
- {modal-1.2.3.dev5 → modal-1.2.3.dev7}/modal_proto/sandbox_router_pb2.pyi +0 -0
- {modal-1.2.3.dev5 → modal-1.2.3.dev7}/modal_proto/sandbox_router_pb2_grpc.py +0 -0
- {modal-1.2.3.dev5 → modal-1.2.3.dev7}/modal_proto/sandbox_router_pb2_grpc.pyi +0 -0
- {modal-1.2.3.dev5 → modal-1.2.3.dev7}/modal_proto/task_command_router.proto +0 -0
- {modal-1.2.3.dev5 → modal-1.2.3.dev7}/modal_proto/task_command_router_grpc.py +0 -0
- {modal-1.2.3.dev5 → modal-1.2.3.dev7}/modal_proto/task_command_router_pb2.py +0 -0
- {modal-1.2.3.dev5 → modal-1.2.3.dev7}/modal_proto/task_command_router_pb2.pyi +0 -0
- {modal-1.2.3.dev5 → modal-1.2.3.dev7}/modal_proto/task_command_router_pb2_grpc.py +0 -0
- {modal-1.2.3.dev5 → modal-1.2.3.dev7}/modal_proto/task_command_router_pb2_grpc.pyi +0 -0
- {modal-1.2.3.dev5 → modal-1.2.3.dev7}/modal_version/__main__.py +0 -0
- {modal-1.2.3.dev5 → modal-1.2.3.dev7}/pyproject.toml +0 -0
- {modal-1.2.3.dev5 → modal-1.2.3.dev7}/setup.cfg +0 -0
|
@@ -10,6 +10,7 @@ import time
|
|
|
10
10
|
import typing
|
|
11
11
|
from dataclasses import dataclass
|
|
12
12
|
from functools import partial
|
|
13
|
+
from pathlib import Path, PurePosixPath
|
|
13
14
|
from typing import Any, Callable, Optional
|
|
14
15
|
|
|
15
16
|
import click
|
|
@@ -25,6 +26,7 @@ from ..environments import ensure_env
|
|
|
25
26
|
from ..exception import ExecutionError, InvalidError, NotFoundError, _CliUserExecutionError
|
|
26
27
|
from ..functions import Function
|
|
27
28
|
from ..image import Image
|
|
29
|
+
from ..mount import _Mount
|
|
28
30
|
from ..output import enable_output
|
|
29
31
|
from ..runner import deploy_app, interactive_shell, run_app
|
|
30
32
|
from ..secret import Secret
|
|
@@ -542,6 +544,13 @@ def shell(
|
|
|
542
544
|
" Can be used multiple times."
|
|
543
545
|
),
|
|
544
546
|
),
|
|
547
|
+
add_local: Optional[list[str]] = typer.Option(
|
|
548
|
+
default=None,
|
|
549
|
+
help=(
|
|
550
|
+
"Local file or directory to mount inside the shell at `/mnt/{basename}` (if not using REF)."
|
|
551
|
+
" Can be used multiple times."
|
|
552
|
+
),
|
|
553
|
+
),
|
|
545
554
|
secret: Optional[list[str]] = typer.Option(
|
|
546
555
|
default=None,
|
|
547
556
|
help=("Name of a `modal.Secret` to mount inside the shell (if not using REF). Can be used multiple times."),
|
|
@@ -692,9 +701,23 @@ def shell(
|
|
|
692
701
|
modal_image = Image.from_registry(image, add_python=add_python) if image else None
|
|
693
702
|
volumes = {} if volume is None else {f"/mnt/{vol}": Volume.from_name(vol) for vol in volume}
|
|
694
703
|
secrets = [] if secret is None else [Secret.from_name(s) for s in secret]
|
|
704
|
+
|
|
705
|
+
mounts = []
|
|
706
|
+
if add_local:
|
|
707
|
+
for local_path_str in add_local:
|
|
708
|
+
local_path = Path(local_path_str).expanduser().resolve()
|
|
709
|
+
remote_path = PurePosixPath(f"/mnt/{local_path.name}")
|
|
710
|
+
|
|
711
|
+
if local_path.is_dir():
|
|
712
|
+
m = _Mount._from_local_dir(local_path, remote_path=remote_path)
|
|
713
|
+
else:
|
|
714
|
+
m = _Mount._from_local_file(local_path, remote_path=remote_path)
|
|
715
|
+
mounts.append(m)
|
|
716
|
+
|
|
695
717
|
start_shell = partial(
|
|
696
718
|
interactive_shell,
|
|
697
719
|
image=modal_image,
|
|
720
|
+
mounts=mounts,
|
|
698
721
|
cpu=cpu,
|
|
699
722
|
memory=memory,
|
|
700
723
|
gpu=gpu,
|
|
@@ -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.2.3.
|
|
36
|
+
version: str = "1.2.3.dev7",
|
|
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.2.3.
|
|
167
|
+
version: str = "1.2.3.dev7",
|
|
168
168
|
):
|
|
169
169
|
"""mdmd:hidden
|
|
170
170
|
The Modal client object is not intended to be instantiated directly by users.
|
|
@@ -408,7 +408,7 @@ class Function(
|
|
|
408
408
|
|
|
409
409
|
_call_generator: ___call_generator_spec[typing_extensions.Self]
|
|
410
410
|
|
|
411
|
-
class __remote_spec(typing_extensions.Protocol[
|
|
411
|
+
class __remote_spec(typing_extensions.Protocol[P_INNER, ReturnType_INNER, SUPERSELF]):
|
|
412
412
|
def __call__(self, /, *args: P_INNER.args, **kwargs: P_INNER.kwargs) -> ReturnType_INNER:
|
|
413
413
|
"""Calls the function remotely, executing it with the given arguments and returning the execution's result."""
|
|
414
414
|
...
|
|
@@ -417,7 +417,7 @@ class Function(
|
|
|
417
417
|
"""Calls the function remotely, executing it with the given arguments and returning the execution's result."""
|
|
418
418
|
...
|
|
419
419
|
|
|
420
|
-
remote: __remote_spec[modal._functions.
|
|
420
|
+
remote: __remote_spec[modal._functions.P, modal._functions.ReturnType, typing_extensions.Self]
|
|
421
421
|
|
|
422
422
|
class __remote_gen_spec(typing_extensions.Protocol[SUPERSELF]):
|
|
423
423
|
def __call__(self, /, *args, **kwargs) -> typing.Generator[typing.Any, None, None]:
|
|
@@ -444,7 +444,7 @@ class Function(
|
|
|
444
444
|
"""
|
|
445
445
|
...
|
|
446
446
|
|
|
447
|
-
class ___experimental_spawn_spec(typing_extensions.Protocol[
|
|
447
|
+
class ___experimental_spawn_spec(typing_extensions.Protocol[P_INNER, ReturnType_INNER, SUPERSELF]):
|
|
448
448
|
def __call__(self, /, *args: P_INNER.args, **kwargs: P_INNER.kwargs) -> FunctionCall[ReturnType_INNER]:
|
|
449
449
|
"""[Experimental] Calls the function with the given arguments, without waiting for the results.
|
|
450
450
|
|
|
@@ -468,7 +468,7 @@ class Function(
|
|
|
468
468
|
...
|
|
469
469
|
|
|
470
470
|
_experimental_spawn: ___experimental_spawn_spec[
|
|
471
|
-
modal._functions.
|
|
471
|
+
modal._functions.P, modal._functions.ReturnType, typing_extensions.Self
|
|
472
472
|
]
|
|
473
473
|
|
|
474
474
|
class ___spawn_map_inner_spec(typing_extensions.Protocol[P_INNER, SUPERSELF]):
|
|
@@ -477,7 +477,7 @@ class Function(
|
|
|
477
477
|
|
|
478
478
|
_spawn_map_inner: ___spawn_map_inner_spec[modal._functions.P, typing_extensions.Self]
|
|
479
479
|
|
|
480
|
-
class __spawn_spec(typing_extensions.Protocol[
|
|
480
|
+
class __spawn_spec(typing_extensions.Protocol[P_INNER, ReturnType_INNER, SUPERSELF]):
|
|
481
481
|
def __call__(self, /, *args: P_INNER.args, **kwargs: P_INNER.kwargs) -> FunctionCall[ReturnType_INNER]:
|
|
482
482
|
"""Calls the function with the given arguments, without waiting for the results.
|
|
483
483
|
|
|
@@ -498,7 +498,7 @@ class Function(
|
|
|
498
498
|
"""
|
|
499
499
|
...
|
|
500
500
|
|
|
501
|
-
spawn: __spawn_spec[modal._functions.
|
|
501
|
+
spawn: __spawn_spec[modal._functions.P, modal._functions.ReturnType, typing_extensions.Self]
|
|
502
502
|
|
|
503
503
|
def get_raw_f(self) -> collections.abc.Callable[..., typing.Any]:
|
|
504
504
|
"""Return the inner Python object wrapped by this Modal Function."""
|