modal 1.2.3.dev6__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.dev6 → modal-1.2.3.dev7}/PKG-INFO +1 -1
- {modal-1.2.3.dev6 → modal-1.2.3.dev7}/modal/cli/run.py +23 -0
- {modal-1.2.3.dev6 → modal-1.2.3.dev7}/modal/client.pyi +2 -2
- {modal-1.2.3.dev6 → modal-1.2.3.dev7}/modal.egg-info/PKG-INFO +1 -1
- {modal-1.2.3.dev6 → modal-1.2.3.dev7}/modal_version/__init__.py +1 -1
- {modal-1.2.3.dev6 → modal-1.2.3.dev7}/LICENSE +0 -0
- {modal-1.2.3.dev6 → modal-1.2.3.dev7}/README.md +0 -0
- {modal-1.2.3.dev6 → modal-1.2.3.dev7}/modal/__init__.py +0 -0
- {modal-1.2.3.dev6 → modal-1.2.3.dev7}/modal/__main__.py +0 -0
- {modal-1.2.3.dev6 → modal-1.2.3.dev7}/modal/_billing.py +0 -0
- {modal-1.2.3.dev6 → modal-1.2.3.dev7}/modal/_clustered_functions.py +0 -0
- {modal-1.2.3.dev6 → modal-1.2.3.dev7}/modal/_clustered_functions.pyi +0 -0
- {modal-1.2.3.dev6 → modal-1.2.3.dev7}/modal/_container_entrypoint.py +0 -0
- {modal-1.2.3.dev6 → modal-1.2.3.dev7}/modal/_functions.py +0 -0
- {modal-1.2.3.dev6 → modal-1.2.3.dev7}/modal/_grpc_client.py +0 -0
- {modal-1.2.3.dev6 → modal-1.2.3.dev7}/modal/_ipython.py +0 -0
- {modal-1.2.3.dev6 → modal-1.2.3.dev7}/modal/_load_context.py +0 -0
- {modal-1.2.3.dev6 → modal-1.2.3.dev7}/modal/_location.py +0 -0
- {modal-1.2.3.dev6 → modal-1.2.3.dev7}/modal/_object.py +0 -0
- {modal-1.2.3.dev6 → modal-1.2.3.dev7}/modal/_output.py +0 -0
- {modal-1.2.3.dev6 → modal-1.2.3.dev7}/modal/_partial_function.py +0 -0
- {modal-1.2.3.dev6 → modal-1.2.3.dev7}/modal/_pty.py +0 -0
- {modal-1.2.3.dev6 → modal-1.2.3.dev7}/modal/_resolver.py +0 -0
- {modal-1.2.3.dev6 → modal-1.2.3.dev7}/modal/_resources.py +0 -0
- {modal-1.2.3.dev6 → modal-1.2.3.dev7}/modal/_runtime/__init__.py +0 -0
- {modal-1.2.3.dev6 → modal-1.2.3.dev7}/modal/_runtime/asgi.py +0 -0
- {modal-1.2.3.dev6 → modal-1.2.3.dev7}/modal/_runtime/container_io_manager.py +0 -0
- {modal-1.2.3.dev6 → modal-1.2.3.dev7}/modal/_runtime/container_io_manager.pyi +0 -0
- {modal-1.2.3.dev6 → modal-1.2.3.dev7}/modal/_runtime/execution_context.py +0 -0
- {modal-1.2.3.dev6 → modal-1.2.3.dev7}/modal/_runtime/execution_context.pyi +0 -0
- {modal-1.2.3.dev6 → modal-1.2.3.dev7}/modal/_runtime/gpu_memory_snapshot.py +0 -0
- {modal-1.2.3.dev6 → modal-1.2.3.dev7}/modal/_runtime/telemetry.py +0 -0
- {modal-1.2.3.dev6 → modal-1.2.3.dev7}/modal/_runtime/user_code_imports.py +0 -0
- {modal-1.2.3.dev6 → modal-1.2.3.dev7}/modal/_serialization.py +0 -0
- {modal-1.2.3.dev6 → modal-1.2.3.dev7}/modal/_traceback.py +0 -0
- {modal-1.2.3.dev6 → modal-1.2.3.dev7}/modal/_tunnel.py +0 -0
- {modal-1.2.3.dev6 → modal-1.2.3.dev7}/modal/_tunnel.pyi +0 -0
- {modal-1.2.3.dev6 → modal-1.2.3.dev7}/modal/_type_manager.py +0 -0
- {modal-1.2.3.dev6 → modal-1.2.3.dev7}/modal/_utils/__init__.py +0 -0
- {modal-1.2.3.dev6 → modal-1.2.3.dev7}/modal/_utils/app_utils.py +0 -0
- {modal-1.2.3.dev6 → modal-1.2.3.dev7}/modal/_utils/async_utils.py +0 -0
- {modal-1.2.3.dev6 → modal-1.2.3.dev7}/modal/_utils/auth_token_manager.py +0 -0
- {modal-1.2.3.dev6 → modal-1.2.3.dev7}/modal/_utils/blob_utils.py +0 -0
- {modal-1.2.3.dev6 → modal-1.2.3.dev7}/modal/_utils/bytes_io_segment_payload.py +0 -0
- {modal-1.2.3.dev6 → modal-1.2.3.dev7}/modal/_utils/deprecation.py +0 -0
- {modal-1.2.3.dev6 → modal-1.2.3.dev7}/modal/_utils/docker_utils.py +0 -0
- {modal-1.2.3.dev6 → modal-1.2.3.dev7}/modal/_utils/function_utils.py +0 -0
- {modal-1.2.3.dev6 → modal-1.2.3.dev7}/modal/_utils/git_utils.py +0 -0
- {modal-1.2.3.dev6 → modal-1.2.3.dev7}/modal/_utils/grpc_testing.py +0 -0
- {modal-1.2.3.dev6 → modal-1.2.3.dev7}/modal/_utils/grpc_utils.py +0 -0
- {modal-1.2.3.dev6 → modal-1.2.3.dev7}/modal/_utils/hash_utils.py +0 -0
- {modal-1.2.3.dev6 → modal-1.2.3.dev7}/modal/_utils/http_utils.py +0 -0
- {modal-1.2.3.dev6 → modal-1.2.3.dev7}/modal/_utils/jwt_utils.py +0 -0
- {modal-1.2.3.dev6 → modal-1.2.3.dev7}/modal/_utils/logger.py +0 -0
- {modal-1.2.3.dev6 → modal-1.2.3.dev7}/modal/_utils/mount_utils.py +0 -0
- {modal-1.2.3.dev6 → modal-1.2.3.dev7}/modal/_utils/name_utils.py +0 -0
- {modal-1.2.3.dev6 → modal-1.2.3.dev7}/modal/_utils/package_utils.py +0 -0
- {modal-1.2.3.dev6 → modal-1.2.3.dev7}/modal/_utils/pattern_utils.py +0 -0
- {modal-1.2.3.dev6 → modal-1.2.3.dev7}/modal/_utils/rand_pb_testing.py +0 -0
- {modal-1.2.3.dev6 → modal-1.2.3.dev7}/modal/_utils/shell_utils.py +0 -0
- {modal-1.2.3.dev6 → modal-1.2.3.dev7}/modal/_utils/task_command_router_client.py +0 -0
- {modal-1.2.3.dev6 → modal-1.2.3.dev7}/modal/_utils/time_utils.py +0 -0
- {modal-1.2.3.dev6 → modal-1.2.3.dev7}/modal/_vendor/__init__.py +0 -0
- {modal-1.2.3.dev6 → modal-1.2.3.dev7}/modal/_vendor/a2wsgi_wsgi.py +0 -0
- {modal-1.2.3.dev6 → modal-1.2.3.dev7}/modal/_vendor/cloudpickle.py +0 -0
- {modal-1.2.3.dev6 → modal-1.2.3.dev7}/modal/_vendor/tblib.py +0 -0
- {modal-1.2.3.dev6 → modal-1.2.3.dev7}/modal/_watcher.py +0 -0
- {modal-1.2.3.dev6 → modal-1.2.3.dev7}/modal/app.py +0 -0
- {modal-1.2.3.dev6 → modal-1.2.3.dev7}/modal/app.pyi +0 -0
- {modal-1.2.3.dev6 → modal-1.2.3.dev7}/modal/billing.py +0 -0
- {modal-1.2.3.dev6 → modal-1.2.3.dev7}/modal/builder/2023.12.312.txt +0 -0
- {modal-1.2.3.dev6 → modal-1.2.3.dev7}/modal/builder/2023.12.txt +0 -0
- {modal-1.2.3.dev6 → modal-1.2.3.dev7}/modal/builder/2024.04.txt +0 -0
- {modal-1.2.3.dev6 → modal-1.2.3.dev7}/modal/builder/2024.10.txt +0 -0
- {modal-1.2.3.dev6 → modal-1.2.3.dev7}/modal/builder/2025.06.txt +0 -0
- {modal-1.2.3.dev6 → modal-1.2.3.dev7}/modal/builder/PREVIEW.txt +0 -0
- {modal-1.2.3.dev6 → modal-1.2.3.dev7}/modal/builder/README.md +0 -0
- {modal-1.2.3.dev6 → modal-1.2.3.dev7}/modal/builder/base-images.json +0 -0
- {modal-1.2.3.dev6 → modal-1.2.3.dev7}/modal/call_graph.py +0 -0
- {modal-1.2.3.dev6 → modal-1.2.3.dev7}/modal/cli/__init__.py +0 -0
- {modal-1.2.3.dev6 → modal-1.2.3.dev7}/modal/cli/_download.py +0 -0
- {modal-1.2.3.dev6 → modal-1.2.3.dev7}/modal/cli/_traceback.py +0 -0
- {modal-1.2.3.dev6 → modal-1.2.3.dev7}/modal/cli/app.py +0 -0
- {modal-1.2.3.dev6 → modal-1.2.3.dev7}/modal/cli/cluster.py +0 -0
- {modal-1.2.3.dev6 → modal-1.2.3.dev7}/modal/cli/config.py +0 -0
- {modal-1.2.3.dev6 → modal-1.2.3.dev7}/modal/cli/container.py +0 -0
- {modal-1.2.3.dev6 → modal-1.2.3.dev7}/modal/cli/dict.py +0 -0
- {modal-1.2.3.dev6 → modal-1.2.3.dev7}/modal/cli/entry_point.py +0 -0
- {modal-1.2.3.dev6 → modal-1.2.3.dev7}/modal/cli/environment.py +0 -0
- {modal-1.2.3.dev6 → modal-1.2.3.dev7}/modal/cli/import_refs.py +0 -0
- {modal-1.2.3.dev6 → modal-1.2.3.dev7}/modal/cli/launch.py +0 -0
- {modal-1.2.3.dev6 → modal-1.2.3.dev7}/modal/cli/network_file_system.py +0 -0
- {modal-1.2.3.dev6 → modal-1.2.3.dev7}/modal/cli/profile.py +0 -0
- {modal-1.2.3.dev6 → modal-1.2.3.dev7}/modal/cli/programs/__init__.py +0 -0
- {modal-1.2.3.dev6 → modal-1.2.3.dev7}/modal/cli/programs/launch_instance_ssh.py +0 -0
- {modal-1.2.3.dev6 → modal-1.2.3.dev7}/modal/cli/programs/run_jupyter.py +0 -0
- {modal-1.2.3.dev6 → modal-1.2.3.dev7}/modal/cli/programs/run_marimo.py +0 -0
- {modal-1.2.3.dev6 → modal-1.2.3.dev7}/modal/cli/programs/vscode.py +0 -0
- {modal-1.2.3.dev6 → modal-1.2.3.dev7}/modal/cli/queues.py +0 -0
- {modal-1.2.3.dev6 → modal-1.2.3.dev7}/modal/cli/secret.py +0 -0
- {modal-1.2.3.dev6 → modal-1.2.3.dev7}/modal/cli/token.py +0 -0
- {modal-1.2.3.dev6 → modal-1.2.3.dev7}/modal/cli/utils.py +0 -0
- {modal-1.2.3.dev6 → modal-1.2.3.dev7}/modal/cli/volume.py +0 -0
- {modal-1.2.3.dev6 → modal-1.2.3.dev7}/modal/client.py +0 -0
- {modal-1.2.3.dev6 → modal-1.2.3.dev7}/modal/cloud_bucket_mount.py +0 -0
- {modal-1.2.3.dev6 → modal-1.2.3.dev7}/modal/cloud_bucket_mount.pyi +0 -0
- {modal-1.2.3.dev6 → modal-1.2.3.dev7}/modal/cls.py +0 -0
- {modal-1.2.3.dev6 → modal-1.2.3.dev7}/modal/cls.pyi +0 -0
- {modal-1.2.3.dev6 → modal-1.2.3.dev7}/modal/config.py +0 -0
- {modal-1.2.3.dev6 → modal-1.2.3.dev7}/modal/container_process.py +0 -0
- {modal-1.2.3.dev6 → modal-1.2.3.dev7}/modal/container_process.pyi +0 -0
- {modal-1.2.3.dev6 → modal-1.2.3.dev7}/modal/dict.py +0 -0
- {modal-1.2.3.dev6 → modal-1.2.3.dev7}/modal/dict.pyi +0 -0
- {modal-1.2.3.dev6 → modal-1.2.3.dev7}/modal/environments.py +0 -0
- {modal-1.2.3.dev6 → modal-1.2.3.dev7}/modal/environments.pyi +0 -0
- {modal-1.2.3.dev6 → modal-1.2.3.dev7}/modal/exception.py +0 -0
- {modal-1.2.3.dev6 → modal-1.2.3.dev7}/modal/experimental/__init__.py +0 -0
- {modal-1.2.3.dev6 → modal-1.2.3.dev7}/modal/experimental/flash.py +0 -0
- {modal-1.2.3.dev6 → modal-1.2.3.dev7}/modal/experimental/flash.pyi +0 -0
- {modal-1.2.3.dev6 → modal-1.2.3.dev7}/modal/experimental/ipython.py +0 -0
- {modal-1.2.3.dev6 → modal-1.2.3.dev7}/modal/file_io.py +0 -0
- {modal-1.2.3.dev6 → modal-1.2.3.dev7}/modal/file_io.pyi +0 -0
- {modal-1.2.3.dev6 → modal-1.2.3.dev7}/modal/file_pattern_matcher.py +0 -0
- {modal-1.2.3.dev6 → modal-1.2.3.dev7}/modal/functions.py +0 -0
- {modal-1.2.3.dev6 → modal-1.2.3.dev7}/modal/functions.pyi +0 -0
- {modal-1.2.3.dev6 → modal-1.2.3.dev7}/modal/gpu.py +0 -0
- {modal-1.2.3.dev6 → modal-1.2.3.dev7}/modal/image.py +0 -0
- {modal-1.2.3.dev6 → modal-1.2.3.dev7}/modal/image.pyi +0 -0
- {modal-1.2.3.dev6 → modal-1.2.3.dev7}/modal/io_streams.py +0 -0
- {modal-1.2.3.dev6 → modal-1.2.3.dev7}/modal/io_streams.pyi +0 -0
- {modal-1.2.3.dev6 → modal-1.2.3.dev7}/modal/mount.py +0 -0
- {modal-1.2.3.dev6 → modal-1.2.3.dev7}/modal/mount.pyi +0 -0
- {modal-1.2.3.dev6 → modal-1.2.3.dev7}/modal/network_file_system.py +0 -0
- {modal-1.2.3.dev6 → modal-1.2.3.dev7}/modal/network_file_system.pyi +0 -0
- {modal-1.2.3.dev6 → modal-1.2.3.dev7}/modal/object.py +0 -0
- {modal-1.2.3.dev6 → modal-1.2.3.dev7}/modal/object.pyi +0 -0
- {modal-1.2.3.dev6 → modal-1.2.3.dev7}/modal/output.py +0 -0
- {modal-1.2.3.dev6 → modal-1.2.3.dev7}/modal/parallel_map.py +0 -0
- {modal-1.2.3.dev6 → modal-1.2.3.dev7}/modal/parallel_map.pyi +0 -0
- {modal-1.2.3.dev6 → modal-1.2.3.dev7}/modal/partial_function.py +0 -0
- {modal-1.2.3.dev6 → modal-1.2.3.dev7}/modal/partial_function.pyi +0 -0
- {modal-1.2.3.dev6 → modal-1.2.3.dev7}/modal/proxy.py +0 -0
- {modal-1.2.3.dev6 → modal-1.2.3.dev7}/modal/proxy.pyi +0 -0
- {modal-1.2.3.dev6 → modal-1.2.3.dev7}/modal/py.typed +0 -0
- {modal-1.2.3.dev6 → modal-1.2.3.dev7}/modal/queue.py +0 -0
- {modal-1.2.3.dev6 → modal-1.2.3.dev7}/modal/queue.pyi +0 -0
- {modal-1.2.3.dev6 → modal-1.2.3.dev7}/modal/retries.py +0 -0
- {modal-1.2.3.dev6 → modal-1.2.3.dev7}/modal/runner.py +0 -0
- {modal-1.2.3.dev6 → modal-1.2.3.dev7}/modal/runner.pyi +0 -0
- {modal-1.2.3.dev6 → modal-1.2.3.dev7}/modal/running_app.py +0 -0
- {modal-1.2.3.dev6 → modal-1.2.3.dev7}/modal/sandbox.py +0 -0
- {modal-1.2.3.dev6 → modal-1.2.3.dev7}/modal/sandbox.pyi +0 -0
- {modal-1.2.3.dev6 → modal-1.2.3.dev7}/modal/schedule.py +0 -0
- {modal-1.2.3.dev6 → modal-1.2.3.dev7}/modal/scheduler_placement.py +0 -0
- {modal-1.2.3.dev6 → modal-1.2.3.dev7}/modal/secret.py +0 -0
- {modal-1.2.3.dev6 → modal-1.2.3.dev7}/modal/secret.pyi +0 -0
- {modal-1.2.3.dev6 → modal-1.2.3.dev7}/modal/serving.py +0 -0
- {modal-1.2.3.dev6 → modal-1.2.3.dev7}/modal/serving.pyi +0 -0
- {modal-1.2.3.dev6 → modal-1.2.3.dev7}/modal/snapshot.py +0 -0
- {modal-1.2.3.dev6 → modal-1.2.3.dev7}/modal/snapshot.pyi +0 -0
- {modal-1.2.3.dev6 → modal-1.2.3.dev7}/modal/stream_type.py +0 -0
- {modal-1.2.3.dev6 → modal-1.2.3.dev7}/modal/token_flow.py +0 -0
- {modal-1.2.3.dev6 → modal-1.2.3.dev7}/modal/token_flow.pyi +0 -0
- {modal-1.2.3.dev6 → modal-1.2.3.dev7}/modal/volume.py +0 -0
- {modal-1.2.3.dev6 → modal-1.2.3.dev7}/modal/volume.pyi +0 -0
- {modal-1.2.3.dev6 → modal-1.2.3.dev7}/modal.egg-info/SOURCES.txt +0 -0
- {modal-1.2.3.dev6 → modal-1.2.3.dev7}/modal.egg-info/dependency_links.txt +0 -0
- {modal-1.2.3.dev6 → modal-1.2.3.dev7}/modal.egg-info/entry_points.txt +0 -0
- {modal-1.2.3.dev6 → modal-1.2.3.dev7}/modal.egg-info/requires.txt +0 -0
- {modal-1.2.3.dev6 → modal-1.2.3.dev7}/modal.egg-info/top_level.txt +0 -0
- {modal-1.2.3.dev6 → modal-1.2.3.dev7}/modal_docs/__init__.py +0 -0
- {modal-1.2.3.dev6 → modal-1.2.3.dev7}/modal_docs/gen_cli_docs.py +0 -0
- {modal-1.2.3.dev6 → modal-1.2.3.dev7}/modal_docs/gen_reference_docs.py +0 -0
- {modal-1.2.3.dev6 → modal-1.2.3.dev7}/modal_docs/mdmd/__init__.py +0 -0
- {modal-1.2.3.dev6 → modal-1.2.3.dev7}/modal_docs/mdmd/mdmd.py +0 -0
- {modal-1.2.3.dev6 → modal-1.2.3.dev7}/modal_docs/mdmd/signatures.py +0 -0
- {modal-1.2.3.dev6 → modal-1.2.3.dev7}/modal_proto/__init__.py +0 -0
- {modal-1.2.3.dev6 → modal-1.2.3.dev7}/modal_proto/api.proto +0 -0
- {modal-1.2.3.dev6 → modal-1.2.3.dev7}/modal_proto/api_grpc.py +0 -0
- {modal-1.2.3.dev6 → modal-1.2.3.dev7}/modal_proto/api_pb2.py +0 -0
- {modal-1.2.3.dev6 → modal-1.2.3.dev7}/modal_proto/api_pb2.pyi +0 -0
- {modal-1.2.3.dev6 → modal-1.2.3.dev7}/modal_proto/api_pb2_grpc.py +0 -0
- {modal-1.2.3.dev6 → modal-1.2.3.dev7}/modal_proto/api_pb2_grpc.pyi +0 -0
- {modal-1.2.3.dev6 → modal-1.2.3.dev7}/modal_proto/modal_api_grpc.py +0 -0
- {modal-1.2.3.dev6 → modal-1.2.3.dev7}/modal_proto/py.typed +0 -0
- {modal-1.2.3.dev6 → modal-1.2.3.dev7}/modal_proto/sandbox_router.proto +0 -0
- {modal-1.2.3.dev6 → modal-1.2.3.dev7}/modal_proto/sandbox_router_grpc.py +0 -0
- {modal-1.2.3.dev6 → modal-1.2.3.dev7}/modal_proto/sandbox_router_pb2.py +0 -0
- {modal-1.2.3.dev6 → modal-1.2.3.dev7}/modal_proto/sandbox_router_pb2.pyi +0 -0
- {modal-1.2.3.dev6 → modal-1.2.3.dev7}/modal_proto/sandbox_router_pb2_grpc.py +0 -0
- {modal-1.2.3.dev6 → modal-1.2.3.dev7}/modal_proto/sandbox_router_pb2_grpc.pyi +0 -0
- {modal-1.2.3.dev6 → modal-1.2.3.dev7}/modal_proto/task_command_router.proto +0 -0
- {modal-1.2.3.dev6 → modal-1.2.3.dev7}/modal_proto/task_command_router_grpc.py +0 -0
- {modal-1.2.3.dev6 → modal-1.2.3.dev7}/modal_proto/task_command_router_pb2.py +0 -0
- {modal-1.2.3.dev6 → modal-1.2.3.dev7}/modal_proto/task_command_router_pb2.pyi +0 -0
- {modal-1.2.3.dev6 → modal-1.2.3.dev7}/modal_proto/task_command_router_pb2_grpc.py +0 -0
- {modal-1.2.3.dev6 → modal-1.2.3.dev7}/modal_proto/task_command_router_pb2_grpc.pyi +0 -0
- {modal-1.2.3.dev6 → modal-1.2.3.dev7}/modal_version/__main__.py +0 -0
- {modal-1.2.3.dev6 → modal-1.2.3.dev7}/pyproject.toml +0 -0
- {modal-1.2.3.dev6 → 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.
|
|
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
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|