modal 1.0.6.dev51__tar.gz → 1.0.6.dev54__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.dev51 → modal-1.0.6.dev54}/PKG-INFO +1 -1
- {modal-1.0.6.dev51 → modal-1.0.6.dev54}/modal/client.pyi +2 -2
- {modal-1.0.6.dev51 → modal-1.0.6.dev54}/modal/sandbox.py +11 -10
- {modal-1.0.6.dev51 → modal-1.0.6.dev54}/modal/sandbox.pyi +3 -6
- {modal-1.0.6.dev51 → modal-1.0.6.dev54}/modal.egg-info/PKG-INFO +1 -1
- {modal-1.0.6.dev51 → modal-1.0.6.dev54}/modal_proto/api.proto +3 -1
- {modal-1.0.6.dev51 → modal-1.0.6.dev54}/modal_proto/api_pb2.py +300 -300
- {modal-1.0.6.dev51 → modal-1.0.6.dev54}/modal_proto/api_pb2.pyi +9 -2
- {modal-1.0.6.dev51 → modal-1.0.6.dev54}/modal_version/__init__.py +1 -1
- {modal-1.0.6.dev51 → modal-1.0.6.dev54}/LICENSE +0 -0
- {modal-1.0.6.dev51 → modal-1.0.6.dev54}/README.md +0 -0
- {modal-1.0.6.dev51 → modal-1.0.6.dev54}/modal/__init__.py +0 -0
- {modal-1.0.6.dev51 → modal-1.0.6.dev54}/modal/__main__.py +0 -0
- {modal-1.0.6.dev51 → modal-1.0.6.dev54}/modal/_clustered_functions.py +0 -0
- {modal-1.0.6.dev51 → modal-1.0.6.dev54}/modal/_clustered_functions.pyi +0 -0
- {modal-1.0.6.dev51 → modal-1.0.6.dev54}/modal/_container_entrypoint.py +0 -0
- {modal-1.0.6.dev51 → modal-1.0.6.dev54}/modal/_functions.py +0 -0
- {modal-1.0.6.dev51 → modal-1.0.6.dev54}/modal/_ipython.py +0 -0
- {modal-1.0.6.dev51 → modal-1.0.6.dev54}/modal/_location.py +0 -0
- {modal-1.0.6.dev51 → modal-1.0.6.dev54}/modal/_object.py +0 -0
- {modal-1.0.6.dev51 → modal-1.0.6.dev54}/modal/_output.py +0 -0
- {modal-1.0.6.dev51 → modal-1.0.6.dev54}/modal/_partial_function.py +0 -0
- {modal-1.0.6.dev51 → modal-1.0.6.dev54}/modal/_pty.py +0 -0
- {modal-1.0.6.dev51 → modal-1.0.6.dev54}/modal/_resolver.py +0 -0
- {modal-1.0.6.dev51 → modal-1.0.6.dev54}/modal/_resources.py +0 -0
- {modal-1.0.6.dev51 → modal-1.0.6.dev54}/modal/_runtime/__init__.py +0 -0
- {modal-1.0.6.dev51 → modal-1.0.6.dev54}/modal/_runtime/asgi.py +0 -0
- {modal-1.0.6.dev51 → modal-1.0.6.dev54}/modal/_runtime/container_io_manager.py +0 -0
- {modal-1.0.6.dev51 → modal-1.0.6.dev54}/modal/_runtime/container_io_manager.pyi +0 -0
- {modal-1.0.6.dev51 → modal-1.0.6.dev54}/modal/_runtime/execution_context.py +0 -0
- {modal-1.0.6.dev51 → modal-1.0.6.dev54}/modal/_runtime/execution_context.pyi +0 -0
- {modal-1.0.6.dev51 → modal-1.0.6.dev54}/modal/_runtime/gpu_memory_snapshot.py +0 -0
- {modal-1.0.6.dev51 → modal-1.0.6.dev54}/modal/_runtime/telemetry.py +0 -0
- {modal-1.0.6.dev51 → modal-1.0.6.dev54}/modal/_runtime/user_code_imports.py +0 -0
- {modal-1.0.6.dev51 → modal-1.0.6.dev54}/modal/_serialization.py +0 -0
- {modal-1.0.6.dev51 → modal-1.0.6.dev54}/modal/_traceback.py +0 -0
- {modal-1.0.6.dev51 → modal-1.0.6.dev54}/modal/_tunnel.py +0 -0
- {modal-1.0.6.dev51 → modal-1.0.6.dev54}/modal/_tunnel.pyi +0 -0
- {modal-1.0.6.dev51 → modal-1.0.6.dev54}/modal/_type_manager.py +0 -0
- {modal-1.0.6.dev51 → modal-1.0.6.dev54}/modal/_utils/__init__.py +0 -0
- {modal-1.0.6.dev51 → modal-1.0.6.dev54}/modal/_utils/app_utils.py +0 -0
- {modal-1.0.6.dev51 → modal-1.0.6.dev54}/modal/_utils/async_utils.py +0 -0
- {modal-1.0.6.dev51 → modal-1.0.6.dev54}/modal/_utils/auth_token_manager.py +0 -0
- {modal-1.0.6.dev51 → modal-1.0.6.dev54}/modal/_utils/blob_utils.py +0 -0
- {modal-1.0.6.dev51 → modal-1.0.6.dev54}/modal/_utils/bytes_io_segment_payload.py +0 -0
- {modal-1.0.6.dev51 → modal-1.0.6.dev54}/modal/_utils/deprecation.py +0 -0
- {modal-1.0.6.dev51 → modal-1.0.6.dev54}/modal/_utils/docker_utils.py +0 -0
- {modal-1.0.6.dev51 → modal-1.0.6.dev54}/modal/_utils/function_utils.py +0 -0
- {modal-1.0.6.dev51 → modal-1.0.6.dev54}/modal/_utils/git_utils.py +0 -0
- {modal-1.0.6.dev51 → modal-1.0.6.dev54}/modal/_utils/grpc_testing.py +0 -0
- {modal-1.0.6.dev51 → modal-1.0.6.dev54}/modal/_utils/grpc_utils.py +0 -0
- {modal-1.0.6.dev51 → modal-1.0.6.dev54}/modal/_utils/hash_utils.py +0 -0
- {modal-1.0.6.dev51 → modal-1.0.6.dev54}/modal/_utils/http_utils.py +0 -0
- {modal-1.0.6.dev51 → modal-1.0.6.dev54}/modal/_utils/jwt_utils.py +0 -0
- {modal-1.0.6.dev51 → modal-1.0.6.dev54}/modal/_utils/logger.py +0 -0
- {modal-1.0.6.dev51 → modal-1.0.6.dev54}/modal/_utils/mount_utils.py +0 -0
- {modal-1.0.6.dev51 → modal-1.0.6.dev54}/modal/_utils/name_utils.py +0 -0
- {modal-1.0.6.dev51 → modal-1.0.6.dev54}/modal/_utils/package_utils.py +0 -0
- {modal-1.0.6.dev51 → modal-1.0.6.dev54}/modal/_utils/pattern_utils.py +0 -0
- {modal-1.0.6.dev51 → modal-1.0.6.dev54}/modal/_utils/rand_pb_testing.py +0 -0
- {modal-1.0.6.dev51 → modal-1.0.6.dev54}/modal/_utils/shell_utils.py +0 -0
- {modal-1.0.6.dev51 → modal-1.0.6.dev54}/modal/_utils/time_utils.py +0 -0
- {modal-1.0.6.dev51 → modal-1.0.6.dev54}/modal/_vendor/__init__.py +0 -0
- {modal-1.0.6.dev51 → modal-1.0.6.dev54}/modal/_vendor/a2wsgi_wsgi.py +0 -0
- {modal-1.0.6.dev51 → modal-1.0.6.dev54}/modal/_vendor/cloudpickle.py +0 -0
- {modal-1.0.6.dev51 → modal-1.0.6.dev54}/modal/_vendor/tblib.py +0 -0
- {modal-1.0.6.dev51 → modal-1.0.6.dev54}/modal/_watcher.py +0 -0
- {modal-1.0.6.dev51 → modal-1.0.6.dev54}/modal/app.py +0 -0
- {modal-1.0.6.dev51 → modal-1.0.6.dev54}/modal/app.pyi +0 -0
- {modal-1.0.6.dev51 → modal-1.0.6.dev54}/modal/call_graph.py +0 -0
- {modal-1.0.6.dev51 → modal-1.0.6.dev54}/modal/cli/__init__.py +0 -0
- {modal-1.0.6.dev51 → modal-1.0.6.dev54}/modal/cli/_download.py +0 -0
- {modal-1.0.6.dev51 → modal-1.0.6.dev54}/modal/cli/_traceback.py +0 -0
- {modal-1.0.6.dev51 → modal-1.0.6.dev54}/modal/cli/app.py +0 -0
- {modal-1.0.6.dev51 → modal-1.0.6.dev54}/modal/cli/cluster.py +0 -0
- {modal-1.0.6.dev51 → modal-1.0.6.dev54}/modal/cli/config.py +0 -0
- {modal-1.0.6.dev51 → modal-1.0.6.dev54}/modal/cli/container.py +0 -0
- {modal-1.0.6.dev51 → modal-1.0.6.dev54}/modal/cli/dict.py +0 -0
- {modal-1.0.6.dev51 → modal-1.0.6.dev54}/modal/cli/entry_point.py +0 -0
- {modal-1.0.6.dev51 → modal-1.0.6.dev54}/modal/cli/environment.py +0 -0
- {modal-1.0.6.dev51 → modal-1.0.6.dev54}/modal/cli/import_refs.py +0 -0
- {modal-1.0.6.dev51 → modal-1.0.6.dev54}/modal/cli/launch.py +0 -0
- {modal-1.0.6.dev51 → modal-1.0.6.dev54}/modal/cli/network_file_system.py +0 -0
- {modal-1.0.6.dev51 → modal-1.0.6.dev54}/modal/cli/profile.py +0 -0
- {modal-1.0.6.dev51 → modal-1.0.6.dev54}/modal/cli/programs/__init__.py +0 -0
- {modal-1.0.6.dev51 → modal-1.0.6.dev54}/modal/cli/programs/run_jupyter.py +0 -0
- {modal-1.0.6.dev51 → modal-1.0.6.dev54}/modal/cli/programs/vscode.py +0 -0
- {modal-1.0.6.dev51 → modal-1.0.6.dev54}/modal/cli/queues.py +0 -0
- {modal-1.0.6.dev51 → modal-1.0.6.dev54}/modal/cli/run.py +0 -0
- {modal-1.0.6.dev51 → modal-1.0.6.dev54}/modal/cli/secret.py +0 -0
- {modal-1.0.6.dev51 → modal-1.0.6.dev54}/modal/cli/token.py +0 -0
- {modal-1.0.6.dev51 → modal-1.0.6.dev54}/modal/cli/utils.py +0 -0
- {modal-1.0.6.dev51 → modal-1.0.6.dev54}/modal/cli/volume.py +0 -0
- {modal-1.0.6.dev51 → modal-1.0.6.dev54}/modal/client.py +0 -0
- {modal-1.0.6.dev51 → modal-1.0.6.dev54}/modal/cloud_bucket_mount.py +0 -0
- {modal-1.0.6.dev51 → modal-1.0.6.dev54}/modal/cloud_bucket_mount.pyi +0 -0
- {modal-1.0.6.dev51 → modal-1.0.6.dev54}/modal/cls.py +0 -0
- {modal-1.0.6.dev51 → modal-1.0.6.dev54}/modal/cls.pyi +0 -0
- {modal-1.0.6.dev51 → modal-1.0.6.dev54}/modal/config.py +0 -0
- {modal-1.0.6.dev51 → modal-1.0.6.dev54}/modal/container_process.py +0 -0
- {modal-1.0.6.dev51 → modal-1.0.6.dev54}/modal/container_process.pyi +0 -0
- {modal-1.0.6.dev51 → modal-1.0.6.dev54}/modal/dict.py +0 -0
- {modal-1.0.6.dev51 → modal-1.0.6.dev54}/modal/dict.pyi +0 -0
- {modal-1.0.6.dev51 → modal-1.0.6.dev54}/modal/environments.py +0 -0
- {modal-1.0.6.dev51 → modal-1.0.6.dev54}/modal/environments.pyi +0 -0
- {modal-1.0.6.dev51 → modal-1.0.6.dev54}/modal/exception.py +0 -0
- {modal-1.0.6.dev51 → modal-1.0.6.dev54}/modal/experimental/__init__.py +0 -0
- {modal-1.0.6.dev51 → modal-1.0.6.dev54}/modal/experimental/flash.py +0 -0
- {modal-1.0.6.dev51 → modal-1.0.6.dev54}/modal/experimental/flash.pyi +0 -0
- {modal-1.0.6.dev51 → modal-1.0.6.dev54}/modal/experimental/ipython.py +0 -0
- {modal-1.0.6.dev51 → modal-1.0.6.dev54}/modal/file_io.py +0 -0
- {modal-1.0.6.dev51 → modal-1.0.6.dev54}/modal/file_io.pyi +0 -0
- {modal-1.0.6.dev51 → modal-1.0.6.dev54}/modal/file_pattern_matcher.py +0 -0
- {modal-1.0.6.dev51 → modal-1.0.6.dev54}/modal/functions.py +0 -0
- {modal-1.0.6.dev51 → modal-1.0.6.dev54}/modal/functions.pyi +0 -0
- {modal-1.0.6.dev51 → modal-1.0.6.dev54}/modal/gpu.py +0 -0
- {modal-1.0.6.dev51 → modal-1.0.6.dev54}/modal/image.py +0 -0
- {modal-1.0.6.dev51 → modal-1.0.6.dev54}/modal/image.pyi +0 -0
- {modal-1.0.6.dev51 → modal-1.0.6.dev54}/modal/io_streams.py +1 -1
- {modal-1.0.6.dev51 → modal-1.0.6.dev54}/modal/io_streams.pyi +0 -0
- {modal-1.0.6.dev51 → modal-1.0.6.dev54}/modal/mount.py +0 -0
- {modal-1.0.6.dev51 → modal-1.0.6.dev54}/modal/mount.pyi +0 -0
- {modal-1.0.6.dev51 → modal-1.0.6.dev54}/modal/network_file_system.py +0 -0
- {modal-1.0.6.dev51 → modal-1.0.6.dev54}/modal/network_file_system.pyi +0 -0
- {modal-1.0.6.dev51 → modal-1.0.6.dev54}/modal/object.py +0 -0
- {modal-1.0.6.dev51 → modal-1.0.6.dev54}/modal/object.pyi +0 -0
- {modal-1.0.6.dev51 → modal-1.0.6.dev54}/modal/output.py +0 -0
- {modal-1.0.6.dev51 → modal-1.0.6.dev54}/modal/parallel_map.py +0 -0
- {modal-1.0.6.dev51 → modal-1.0.6.dev54}/modal/parallel_map.pyi +0 -0
- {modal-1.0.6.dev51 → modal-1.0.6.dev54}/modal/partial_function.py +0 -0
- {modal-1.0.6.dev51 → modal-1.0.6.dev54}/modal/partial_function.pyi +0 -0
- {modal-1.0.6.dev51 → modal-1.0.6.dev54}/modal/proxy.py +0 -0
- {modal-1.0.6.dev51 → modal-1.0.6.dev54}/modal/proxy.pyi +0 -0
- {modal-1.0.6.dev51 → modal-1.0.6.dev54}/modal/py.typed +0 -0
- {modal-1.0.6.dev51 → modal-1.0.6.dev54}/modal/queue.py +0 -0
- {modal-1.0.6.dev51 → modal-1.0.6.dev54}/modal/queue.pyi +0 -0
- {modal-1.0.6.dev51 → modal-1.0.6.dev54}/modal/requirements/2023.12.312.txt +0 -0
- {modal-1.0.6.dev51 → modal-1.0.6.dev54}/modal/requirements/2023.12.txt +0 -0
- {modal-1.0.6.dev51 → modal-1.0.6.dev54}/modal/requirements/2024.04.txt +0 -0
- {modal-1.0.6.dev51 → modal-1.0.6.dev54}/modal/requirements/2024.10.txt +0 -0
- {modal-1.0.6.dev51 → modal-1.0.6.dev54}/modal/requirements/2025.06.txt +0 -0
- {modal-1.0.6.dev51 → modal-1.0.6.dev54}/modal/requirements/PREVIEW.txt +0 -0
- {modal-1.0.6.dev51 → modal-1.0.6.dev54}/modal/requirements/README.md +0 -0
- {modal-1.0.6.dev51 → modal-1.0.6.dev54}/modal/requirements/base-images.json +0 -0
- {modal-1.0.6.dev51 → modal-1.0.6.dev54}/modal/retries.py +0 -0
- {modal-1.0.6.dev51 → modal-1.0.6.dev54}/modal/runner.py +0 -0
- {modal-1.0.6.dev51 → modal-1.0.6.dev54}/modal/runner.pyi +0 -0
- {modal-1.0.6.dev51 → modal-1.0.6.dev54}/modal/running_app.py +0 -0
- {modal-1.0.6.dev51 → modal-1.0.6.dev54}/modal/schedule.py +0 -0
- {modal-1.0.6.dev51 → modal-1.0.6.dev54}/modal/scheduler_placement.py +0 -0
- {modal-1.0.6.dev51 → modal-1.0.6.dev54}/modal/secret.py +0 -0
- {modal-1.0.6.dev51 → modal-1.0.6.dev54}/modal/secret.pyi +0 -0
- {modal-1.0.6.dev51 → modal-1.0.6.dev54}/modal/serving.py +0 -0
- {modal-1.0.6.dev51 → modal-1.0.6.dev54}/modal/serving.pyi +0 -0
- {modal-1.0.6.dev51 → modal-1.0.6.dev54}/modal/snapshot.py +0 -0
- {modal-1.0.6.dev51 → modal-1.0.6.dev54}/modal/snapshot.pyi +0 -0
- {modal-1.0.6.dev51 → modal-1.0.6.dev54}/modal/stream_type.py +0 -0
- {modal-1.0.6.dev51 → modal-1.0.6.dev54}/modal/token_flow.py +0 -0
- {modal-1.0.6.dev51 → modal-1.0.6.dev54}/modal/token_flow.pyi +0 -0
- {modal-1.0.6.dev51 → modal-1.0.6.dev54}/modal/volume.py +0 -0
- {modal-1.0.6.dev51 → modal-1.0.6.dev54}/modal/volume.pyi +0 -0
- {modal-1.0.6.dev51 → modal-1.0.6.dev54}/modal.egg-info/SOURCES.txt +0 -0
- {modal-1.0.6.dev51 → modal-1.0.6.dev54}/modal.egg-info/dependency_links.txt +0 -0
- {modal-1.0.6.dev51 → modal-1.0.6.dev54}/modal.egg-info/entry_points.txt +0 -0
- {modal-1.0.6.dev51 → modal-1.0.6.dev54}/modal.egg-info/requires.txt +0 -0
- {modal-1.0.6.dev51 → modal-1.0.6.dev54}/modal.egg-info/top_level.txt +0 -0
- {modal-1.0.6.dev51 → modal-1.0.6.dev54}/modal_docs/__init__.py +0 -0
- {modal-1.0.6.dev51 → modal-1.0.6.dev54}/modal_docs/gen_cli_docs.py +0 -0
- {modal-1.0.6.dev51 → modal-1.0.6.dev54}/modal_docs/gen_reference_docs.py +0 -0
- {modal-1.0.6.dev51 → modal-1.0.6.dev54}/modal_docs/mdmd/__init__.py +0 -0
- {modal-1.0.6.dev51 → modal-1.0.6.dev54}/modal_docs/mdmd/mdmd.py +0 -0
- {modal-1.0.6.dev51 → modal-1.0.6.dev54}/modal_docs/mdmd/signatures.py +0 -0
- {modal-1.0.6.dev51 → modal-1.0.6.dev54}/modal_proto/__init__.py +0 -0
- {modal-1.0.6.dev51 → modal-1.0.6.dev54}/modal_proto/api_grpc.py +0 -0
- {modal-1.0.6.dev51 → modal-1.0.6.dev54}/modal_proto/api_pb2_grpc.py +0 -0
- {modal-1.0.6.dev51 → modal-1.0.6.dev54}/modal_proto/api_pb2_grpc.pyi +0 -0
- {modal-1.0.6.dev51 → modal-1.0.6.dev54}/modal_proto/modal_api_grpc.py +0 -0
- {modal-1.0.6.dev51 → modal-1.0.6.dev54}/modal_proto/modal_options_grpc.py +0 -0
- {modal-1.0.6.dev51 → modal-1.0.6.dev54}/modal_proto/options.proto +0 -0
- {modal-1.0.6.dev51 → modal-1.0.6.dev54}/modal_proto/options_grpc.py +0 -0
- {modal-1.0.6.dev51 → modal-1.0.6.dev54}/modal_proto/options_pb2.py +0 -0
- {modal-1.0.6.dev51 → modal-1.0.6.dev54}/modal_proto/options_pb2.pyi +0 -0
- {modal-1.0.6.dev51 → modal-1.0.6.dev54}/modal_proto/options_pb2_grpc.py +0 -0
- {modal-1.0.6.dev51 → modal-1.0.6.dev54}/modal_proto/options_pb2_grpc.pyi +0 -0
- {modal-1.0.6.dev51 → modal-1.0.6.dev54}/modal_proto/py.typed +0 -0
- {modal-1.0.6.dev51 → modal-1.0.6.dev54}/modal_version/__main__.py +0 -0
- {modal-1.0.6.dev51 → modal-1.0.6.dev54}/pyproject.toml +0 -0
- {modal-1.0.6.dev51 → modal-1.0.6.dev54}/setup.cfg +0 -0
|
@@ -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.0.6.
|
|
36
|
+
version: str = "1.0.6.dev54",
|
|
37
37
|
):
|
|
38
38
|
"""mdmd:hidden
|
|
39
39
|
The Modal client object is not intended to be instantiated directly by users.
|
|
@@ -163,7 +163,7 @@ class Client:
|
|
|
163
163
|
server_url: str,
|
|
164
164
|
client_type: int,
|
|
165
165
|
credentials: typing.Optional[tuple[str, str]],
|
|
166
|
-
version: str = "1.0.6.
|
|
166
|
+
version: str = "1.0.6.dev54",
|
|
167
167
|
):
|
|
168
168
|
"""mdmd:hidden
|
|
169
169
|
The Modal client object is not intended to be instantiated directly by users.
|
|
@@ -21,6 +21,7 @@ from ._object import _get_environment_name, _Object
|
|
|
21
21
|
from ._resolver import Resolver
|
|
22
22
|
from ._resources import convert_fn_config_to_resources_config
|
|
23
23
|
from ._utils.async_utils import TaskContext, synchronize_api
|
|
24
|
+
from ._utils.deprecation import deprecation_warning
|
|
24
25
|
from ._utils.grpc_utils import retry_transient_errors
|
|
25
26
|
from ._utils.mount_utils import validate_network_file_systems, validate_volumes
|
|
26
27
|
from .client import _Client
|
|
@@ -216,10 +217,7 @@ class _Sandbox(_Object, type_prefix="sb"):
|
|
|
216
217
|
verbose=verbose,
|
|
217
218
|
)
|
|
218
219
|
|
|
219
|
-
|
|
220
|
-
create_req = api_pb2.SandboxCreateRequest(
|
|
221
|
-
app_id=resolver.app_id, definition=definition, environment_name=resolver.environment_name
|
|
222
|
-
)
|
|
220
|
+
create_req = api_pb2.SandboxCreateRequest(app_id=resolver.app_id, definition=definition)
|
|
223
221
|
create_resp = await retry_transient_errors(resolver.client.stub.SandboxCreate, create_req)
|
|
224
222
|
|
|
225
223
|
sandbox_id = create_resp.sandbox_id
|
|
@@ -231,7 +229,6 @@ class _Sandbox(_Object, type_prefix="sb"):
|
|
|
231
229
|
async def create(
|
|
232
230
|
*entrypoint_args: str,
|
|
233
231
|
app: Optional["modal.app._App"] = None, # Optionally associate the sandbox with an app
|
|
234
|
-
environment_name: Optional[str] = None, # Optionally override the default environment
|
|
235
232
|
image: Optional[_Image] = None, # The image to run as the container for the sandbox.
|
|
236
233
|
secrets: Sequence[_Secret] = (), # Environment variables to inject into the sandbox.
|
|
237
234
|
network_file_systems: dict[Union[str, os.PathLike], _NetworkFileSystem] = {},
|
|
@@ -270,6 +267,7 @@ class _Sandbox(_Object, type_prefix="sb"):
|
|
|
270
267
|
SchedulerPlacement
|
|
271
268
|
] = None, # Experimental controls over fine-grained scheduling (alpha).
|
|
272
269
|
client: Optional[_Client] = None,
|
|
270
|
+
environment_name: Optional[str] = None, # *DEPRECATED* Optionally override the default environment
|
|
273
271
|
) -> "_Sandbox":
|
|
274
272
|
"""
|
|
275
273
|
Create a new Sandbox to run untrusted, arbitrary code. The Sandbox's corresponding container
|
|
@@ -284,10 +282,16 @@ class _Sandbox(_Object, type_prefix="sb"):
|
|
|
284
282
|
sandbox.wait()
|
|
285
283
|
```
|
|
286
284
|
"""
|
|
285
|
+
if environment_name is not None:
|
|
286
|
+
deprecation_warning(
|
|
287
|
+
(2025, 7, 16),
|
|
288
|
+
"Passing `environment_name` to `Sandbox.create` is deprecated and will be removed in a future release.",
|
|
289
|
+
"A sandbox's environment is determined by the app it is associated with.",
|
|
290
|
+
)
|
|
291
|
+
|
|
287
292
|
return await _Sandbox._create(
|
|
288
293
|
*entrypoint_args,
|
|
289
294
|
app=app,
|
|
290
|
-
environment_name=environment_name,
|
|
291
295
|
image=image,
|
|
292
296
|
secrets=secrets,
|
|
293
297
|
network_file_systems=network_file_systems,
|
|
@@ -316,7 +320,6 @@ class _Sandbox(_Object, type_prefix="sb"):
|
|
|
316
320
|
async def _create(
|
|
317
321
|
*entrypoint_args: str,
|
|
318
322
|
app: Optional["modal.app._App"] = None, # Optionally associate the sandbox with an app
|
|
319
|
-
environment_name: Optional[str] = None, # Optionally override the default environment
|
|
320
323
|
image: Optional[_Image] = None, # The image to run as the container for the sandbox.
|
|
321
324
|
secrets: Sequence[_Secret] = (), # Environment variables to inject into the sandbox.
|
|
322
325
|
mounts: Sequence[_Mount] = (),
|
|
@@ -361,8 +364,6 @@ class _Sandbox(_Object, type_prefix="sb"):
|
|
|
361
364
|
# sandbox that runs the shell session
|
|
362
365
|
from .app import _App
|
|
363
366
|
|
|
364
|
-
environment_name = _get_environment_name(environment_name)
|
|
365
|
-
|
|
366
367
|
_validate_exec_args(entrypoint_args)
|
|
367
368
|
|
|
368
369
|
# TODO(erikbern): Get rid of the `_new` method and create an already-hydrated object
|
|
@@ -422,7 +423,7 @@ class _Sandbox(_Object, type_prefix="sb"):
|
|
|
422
423
|
|
|
423
424
|
client = client or app_client or await _Client.from_env()
|
|
424
425
|
|
|
425
|
-
resolver = Resolver(client,
|
|
426
|
+
resolver = Resolver(client, app_id=app_id)
|
|
426
427
|
await resolver.load(obj)
|
|
427
428
|
return obj
|
|
428
429
|
|
|
@@ -78,7 +78,6 @@ class _Sandbox(modal._object._Object):
|
|
|
78
78
|
async def create(
|
|
79
79
|
*entrypoint_args: str,
|
|
80
80
|
app: typing.Optional[modal.app._App] = None,
|
|
81
|
-
environment_name: typing.Optional[str] = None,
|
|
82
81
|
image: typing.Optional[modal.image._Image] = None,
|
|
83
82
|
secrets: collections.abc.Sequence[modal.secret._Secret] = (),
|
|
84
83
|
network_file_systems: dict[typing.Union[str, os.PathLike], modal.network_file_system._NetworkFileSystem] = {},
|
|
@@ -104,6 +103,7 @@ class _Sandbox(modal._object._Object):
|
|
|
104
103
|
_experimental_enable_snapshot: bool = False,
|
|
105
104
|
_experimental_scheduler_placement: typing.Optional[modal.scheduler_placement.SchedulerPlacement] = None,
|
|
106
105
|
client: typing.Optional[modal.client._Client] = None,
|
|
106
|
+
environment_name: typing.Optional[str] = None,
|
|
107
107
|
) -> _Sandbox:
|
|
108
108
|
"""Create a new Sandbox to run untrusted, arbitrary code. The Sandbox's corresponding container
|
|
109
109
|
will be created asynchronously.
|
|
@@ -123,7 +123,6 @@ class _Sandbox(modal._object._Object):
|
|
|
123
123
|
async def _create(
|
|
124
124
|
*entrypoint_args: str,
|
|
125
125
|
app: typing.Optional[modal.app._App] = None,
|
|
126
|
-
environment_name: typing.Optional[str] = None,
|
|
127
126
|
image: typing.Optional[modal.image._Image] = None,
|
|
128
127
|
secrets: collections.abc.Sequence[modal.secret._Secret] = (),
|
|
129
128
|
mounts: collections.abc.Sequence[modal.mount._Mount] = (),
|
|
@@ -362,7 +361,6 @@ class Sandbox(modal.object.Object):
|
|
|
362
361
|
/,
|
|
363
362
|
*entrypoint_args: str,
|
|
364
363
|
app: typing.Optional[modal.app.App] = None,
|
|
365
|
-
environment_name: typing.Optional[str] = None,
|
|
366
364
|
image: typing.Optional[modal.image.Image] = None,
|
|
367
365
|
secrets: collections.abc.Sequence[modal.secret.Secret] = (),
|
|
368
366
|
network_file_systems: dict[
|
|
@@ -390,6 +388,7 @@ class Sandbox(modal.object.Object):
|
|
|
390
388
|
_experimental_enable_snapshot: bool = False,
|
|
391
389
|
_experimental_scheduler_placement: typing.Optional[modal.scheduler_placement.SchedulerPlacement] = None,
|
|
392
390
|
client: typing.Optional[modal.client.Client] = None,
|
|
391
|
+
environment_name: typing.Optional[str] = None,
|
|
393
392
|
) -> Sandbox:
|
|
394
393
|
"""Create a new Sandbox to run untrusted, arbitrary code. The Sandbox's corresponding container
|
|
395
394
|
will be created asynchronously.
|
|
@@ -410,7 +409,6 @@ class Sandbox(modal.object.Object):
|
|
|
410
409
|
/,
|
|
411
410
|
*entrypoint_args: str,
|
|
412
411
|
app: typing.Optional[modal.app.App] = None,
|
|
413
|
-
environment_name: typing.Optional[str] = None,
|
|
414
412
|
image: typing.Optional[modal.image.Image] = None,
|
|
415
413
|
secrets: collections.abc.Sequence[modal.secret.Secret] = (),
|
|
416
414
|
network_file_systems: dict[
|
|
@@ -438,6 +436,7 @@ class Sandbox(modal.object.Object):
|
|
|
438
436
|
_experimental_enable_snapshot: bool = False,
|
|
439
437
|
_experimental_scheduler_placement: typing.Optional[modal.scheduler_placement.SchedulerPlacement] = None,
|
|
440
438
|
client: typing.Optional[modal.client.Client] = None,
|
|
439
|
+
environment_name: typing.Optional[str] = None,
|
|
441
440
|
) -> Sandbox:
|
|
442
441
|
"""Create a new Sandbox to run untrusted, arbitrary code. The Sandbox's corresponding container
|
|
443
442
|
will be created asynchronously.
|
|
@@ -461,7 +460,6 @@ class Sandbox(modal.object.Object):
|
|
|
461
460
|
/,
|
|
462
461
|
*entrypoint_args: str,
|
|
463
462
|
app: typing.Optional[modal.app.App] = None,
|
|
464
|
-
environment_name: typing.Optional[str] = None,
|
|
465
463
|
image: typing.Optional[modal.image.Image] = None,
|
|
466
464
|
secrets: collections.abc.Sequence[modal.secret.Secret] = (),
|
|
467
465
|
mounts: collections.abc.Sequence[modal.mount.Mount] = (),
|
|
@@ -496,7 +494,6 @@ class Sandbox(modal.object.Object):
|
|
|
496
494
|
/,
|
|
497
495
|
*entrypoint_args: str,
|
|
498
496
|
app: typing.Optional[modal.app.App] = None,
|
|
499
|
-
environment_name: typing.Optional[str] = None,
|
|
500
497
|
image: typing.Optional[modal.image.Image] = None,
|
|
501
498
|
secrets: collections.abc.Sequence[modal.secret.Secret] = (),
|
|
502
499
|
mounts: collections.abc.Sequence[modal.mount.Mount] = (),
|
|
@@ -2525,7 +2525,7 @@ message Sandbox {
|
|
|
2525
2525
|
message SandboxCreateRequest {
|
|
2526
2526
|
string app_id = 1 [ (modal.options.audit_target_attr) = true ];
|
|
2527
2527
|
Sandbox definition = 2;
|
|
2528
|
-
string environment_name = 3;
|
|
2528
|
+
string environment_name = 3; // *DEPRECATED* 7/16/2025
|
|
2529
2529
|
}
|
|
2530
2530
|
|
|
2531
2531
|
message SandboxCreateResponse {
|
|
@@ -2535,6 +2535,7 @@ message SandboxCreateResponse {
|
|
|
2535
2535
|
message SandboxGetFromNameRequest {
|
|
2536
2536
|
string sandbox_name = 1;
|
|
2537
2537
|
string environment_name = 2;
|
|
2538
|
+
string app_name = 3;
|
|
2538
2539
|
}
|
|
2539
2540
|
|
|
2540
2541
|
message SandboxGetFromNameResponse {
|
|
@@ -2609,6 +2610,7 @@ message SandboxListResponse {
|
|
|
2609
2610
|
|
|
2610
2611
|
message SandboxRestoreRequest {
|
|
2611
2612
|
string snapshot_id = 1;
|
|
2613
|
+
string sandbox_name = 2;
|
|
2612
2614
|
}
|
|
2613
2615
|
|
|
2614
2616
|
message SandboxRestoreResponse {
|