modal 1.0.0.dev4__tar.gz → 1.0.0.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.
Potentially problematic release.
This version of modal might be problematic. Click here for more details.
- {modal-1.0.0.dev4 → modal-1.0.0.dev7}/PKG-INFO +1 -1
- {modal-1.0.0.dev4 → modal-1.0.0.dev7}/modal/app.py +0 -50
- {modal-1.0.0.dev4 → modal-1.0.0.dev7}/modal/app.pyi +0 -83
- {modal-1.0.0.dev4 → modal-1.0.0.dev7}/modal/client.pyi +2 -2
- {modal-1.0.0.dev4 → modal-1.0.0.dev7}/modal/container_process.py +1 -9
- {modal-1.0.0.dev4 → modal-1.0.0.dev7}/modal/container_process.pyi +3 -3
- {modal-1.0.0.dev4 → modal-1.0.0.dev7}/modal/runner.py +0 -18
- {modal-1.0.0.dev4 → modal-1.0.0.dev7}/modal/runner.pyi +0 -5
- {modal-1.0.0.dev4 → modal-1.0.0.dev7}/modal/sandbox.py +0 -20
- {modal-1.0.0.dev4 → modal-1.0.0.dev7}/modal/sandbox.pyi +0 -2
- {modal-1.0.0.dev4 → modal-1.0.0.dev7}/modal/serving.py +0 -6
- {modal-1.0.0.dev4 → modal-1.0.0.dev7}/modal/serving.pyi +0 -3
- {modal-1.0.0.dev4 → modal-1.0.0.dev7}/modal/volume.py +6 -13
- {modal-1.0.0.dev4 → modal-1.0.0.dev7}/modal.egg-info/PKG-INFO +1 -1
- {modal-1.0.0.dev4 → modal-1.0.0.dev7}/modal_proto/api.proto +1 -1
- {modal-1.0.0.dev4 → modal-1.0.0.dev7}/modal_proto/api_pb2.py +156 -156
- {modal-1.0.0.dev4 → modal-1.0.0.dev7}/modal_proto/api_pb2.pyi +4 -4
- {modal-1.0.0.dev4 → modal-1.0.0.dev7}/modal_version/__init__.py +1 -1
- {modal-1.0.0.dev4 → modal-1.0.0.dev7}/LICENSE +0 -0
- {modal-1.0.0.dev4 → modal-1.0.0.dev7}/README.md +0 -0
- {modal-1.0.0.dev4 → modal-1.0.0.dev7}/modal/__init__.py +0 -0
- {modal-1.0.0.dev4 → modal-1.0.0.dev7}/modal/__main__.py +0 -0
- {modal-1.0.0.dev4 → modal-1.0.0.dev7}/modal/_clustered_functions.py +0 -0
- {modal-1.0.0.dev4 → modal-1.0.0.dev7}/modal/_clustered_functions.pyi +0 -0
- {modal-1.0.0.dev4 → modal-1.0.0.dev7}/modal/_container_entrypoint.py +0 -0
- {modal-1.0.0.dev4 → modal-1.0.0.dev7}/modal/_functions.py +0 -0
- {modal-1.0.0.dev4 → modal-1.0.0.dev7}/modal/_ipython.py +0 -0
- {modal-1.0.0.dev4 → modal-1.0.0.dev7}/modal/_location.py +0 -0
- {modal-1.0.0.dev4 → modal-1.0.0.dev7}/modal/_object.py +0 -0
- {modal-1.0.0.dev4 → modal-1.0.0.dev7}/modal/_output.py +0 -0
- {modal-1.0.0.dev4 → modal-1.0.0.dev7}/modal/_partial_function.py +0 -0
- {modal-1.0.0.dev4 → modal-1.0.0.dev7}/modal/_pty.py +0 -0
- {modal-1.0.0.dev4 → modal-1.0.0.dev7}/modal/_resolver.py +0 -0
- {modal-1.0.0.dev4 → modal-1.0.0.dev7}/modal/_resources.py +0 -0
- {modal-1.0.0.dev4 → modal-1.0.0.dev7}/modal/_runtime/__init__.py +0 -0
- {modal-1.0.0.dev4 → modal-1.0.0.dev7}/modal/_runtime/asgi.py +0 -0
- {modal-1.0.0.dev4 → modal-1.0.0.dev7}/modal/_runtime/container_io_manager.py +0 -0
- {modal-1.0.0.dev4 → modal-1.0.0.dev7}/modal/_runtime/container_io_manager.pyi +0 -0
- {modal-1.0.0.dev4 → modal-1.0.0.dev7}/modal/_runtime/execution_context.py +0 -0
- {modal-1.0.0.dev4 → modal-1.0.0.dev7}/modal/_runtime/execution_context.pyi +0 -0
- {modal-1.0.0.dev4 → modal-1.0.0.dev7}/modal/_runtime/gpu_memory_snapshot.py +0 -0
- {modal-1.0.0.dev4 → modal-1.0.0.dev7}/modal/_runtime/telemetry.py +0 -0
- {modal-1.0.0.dev4 → modal-1.0.0.dev7}/modal/_runtime/user_code_imports.py +0 -0
- {modal-1.0.0.dev4 → modal-1.0.0.dev7}/modal/_serialization.py +0 -0
- {modal-1.0.0.dev4 → modal-1.0.0.dev7}/modal/_traceback.py +0 -0
- {modal-1.0.0.dev4 → modal-1.0.0.dev7}/modal/_tunnel.py +0 -0
- {modal-1.0.0.dev4 → modal-1.0.0.dev7}/modal/_tunnel.pyi +0 -0
- {modal-1.0.0.dev4 → modal-1.0.0.dev7}/modal/_type_manager.py +0 -0
- {modal-1.0.0.dev4 → modal-1.0.0.dev7}/modal/_utils/__init__.py +0 -0
- {modal-1.0.0.dev4 → modal-1.0.0.dev7}/modal/_utils/app_utils.py +0 -0
- {modal-1.0.0.dev4 → modal-1.0.0.dev7}/modal/_utils/async_utils.py +0 -0
- {modal-1.0.0.dev4 → modal-1.0.0.dev7}/modal/_utils/blob_utils.py +0 -0
- {modal-1.0.0.dev4 → modal-1.0.0.dev7}/modal/_utils/bytes_io_segment_payload.py +0 -0
- {modal-1.0.0.dev4 → modal-1.0.0.dev7}/modal/_utils/deprecation.py +0 -0
- {modal-1.0.0.dev4 → modal-1.0.0.dev7}/modal/_utils/docker_utils.py +0 -0
- {modal-1.0.0.dev4 → modal-1.0.0.dev7}/modal/_utils/function_utils.py +0 -0
- {modal-1.0.0.dev4 → modal-1.0.0.dev7}/modal/_utils/git_utils.py +0 -0
- {modal-1.0.0.dev4 → modal-1.0.0.dev7}/modal/_utils/grpc_testing.py +0 -0
- {modal-1.0.0.dev4 → modal-1.0.0.dev7}/modal/_utils/grpc_utils.py +0 -0
- {modal-1.0.0.dev4 → modal-1.0.0.dev7}/modal/_utils/hash_utils.py +0 -0
- {modal-1.0.0.dev4 → modal-1.0.0.dev7}/modal/_utils/http_utils.py +0 -0
- {modal-1.0.0.dev4 → modal-1.0.0.dev7}/modal/_utils/jwt_utils.py +0 -0
- {modal-1.0.0.dev4 → modal-1.0.0.dev7}/modal/_utils/logger.py +0 -0
- {modal-1.0.0.dev4 → modal-1.0.0.dev7}/modal/_utils/mount_utils.py +0 -0
- {modal-1.0.0.dev4 → modal-1.0.0.dev7}/modal/_utils/name_utils.py +0 -0
- {modal-1.0.0.dev4 → modal-1.0.0.dev7}/modal/_utils/package_utils.py +0 -0
- {modal-1.0.0.dev4 → modal-1.0.0.dev7}/modal/_utils/pattern_utils.py +0 -0
- {modal-1.0.0.dev4 → modal-1.0.0.dev7}/modal/_utils/rand_pb_testing.py +0 -0
- {modal-1.0.0.dev4 → modal-1.0.0.dev7}/modal/_utils/shell_utils.py +0 -0
- {modal-1.0.0.dev4 → modal-1.0.0.dev7}/modal/_vendor/__init__.py +0 -0
- {modal-1.0.0.dev4 → modal-1.0.0.dev7}/modal/_vendor/a2wsgi_wsgi.py +0 -0
- {modal-1.0.0.dev4 → modal-1.0.0.dev7}/modal/_vendor/cloudpickle.py +0 -0
- {modal-1.0.0.dev4 → modal-1.0.0.dev7}/modal/_vendor/tblib.py +0 -0
- {modal-1.0.0.dev4 → modal-1.0.0.dev7}/modal/_watcher.py +0 -0
- {modal-1.0.0.dev4 → modal-1.0.0.dev7}/modal/call_graph.py +0 -0
- {modal-1.0.0.dev4 → modal-1.0.0.dev7}/modal/cli/__init__.py +0 -0
- {modal-1.0.0.dev4 → modal-1.0.0.dev7}/modal/cli/_download.py +0 -0
- {modal-1.0.0.dev4 → modal-1.0.0.dev7}/modal/cli/_traceback.py +0 -0
- {modal-1.0.0.dev4 → modal-1.0.0.dev7}/modal/cli/app.py +0 -0
- {modal-1.0.0.dev4 → modal-1.0.0.dev7}/modal/cli/cluster.py +0 -0
- {modal-1.0.0.dev4 → modal-1.0.0.dev7}/modal/cli/config.py +0 -0
- {modal-1.0.0.dev4 → modal-1.0.0.dev7}/modal/cli/container.py +0 -0
- {modal-1.0.0.dev4 → modal-1.0.0.dev7}/modal/cli/dict.py +0 -0
- {modal-1.0.0.dev4 → modal-1.0.0.dev7}/modal/cli/entry_point.py +0 -0
- {modal-1.0.0.dev4 → modal-1.0.0.dev7}/modal/cli/environment.py +0 -0
- {modal-1.0.0.dev4 → modal-1.0.0.dev7}/modal/cli/import_refs.py +0 -0
- {modal-1.0.0.dev4 → modal-1.0.0.dev7}/modal/cli/launch.py +0 -0
- {modal-1.0.0.dev4 → modal-1.0.0.dev7}/modal/cli/network_file_system.py +0 -0
- {modal-1.0.0.dev4 → modal-1.0.0.dev7}/modal/cli/profile.py +0 -0
- {modal-1.0.0.dev4 → modal-1.0.0.dev7}/modal/cli/programs/__init__.py +0 -0
- {modal-1.0.0.dev4 → modal-1.0.0.dev7}/modal/cli/programs/run_jupyter.py +0 -0
- {modal-1.0.0.dev4 → modal-1.0.0.dev7}/modal/cli/programs/vscode.py +0 -0
- {modal-1.0.0.dev4 → modal-1.0.0.dev7}/modal/cli/queues.py +0 -0
- {modal-1.0.0.dev4 → modal-1.0.0.dev7}/modal/cli/run.py +0 -0
- {modal-1.0.0.dev4 → modal-1.0.0.dev7}/modal/cli/secret.py +0 -0
- {modal-1.0.0.dev4 → modal-1.0.0.dev7}/modal/cli/token.py +0 -0
- {modal-1.0.0.dev4 → modal-1.0.0.dev7}/modal/cli/utils.py +0 -0
- {modal-1.0.0.dev4 → modal-1.0.0.dev7}/modal/cli/volume.py +0 -0
- {modal-1.0.0.dev4 → modal-1.0.0.dev7}/modal/client.py +0 -0
- {modal-1.0.0.dev4 → modal-1.0.0.dev7}/modal/cloud_bucket_mount.py +0 -0
- {modal-1.0.0.dev4 → modal-1.0.0.dev7}/modal/cloud_bucket_mount.pyi +0 -0
- {modal-1.0.0.dev4 → modal-1.0.0.dev7}/modal/cls.py +0 -0
- {modal-1.0.0.dev4 → modal-1.0.0.dev7}/modal/cls.pyi +0 -0
- {modal-1.0.0.dev4 → modal-1.0.0.dev7}/modal/config.py +0 -0
- {modal-1.0.0.dev4 → modal-1.0.0.dev7}/modal/dict.py +0 -0
- {modal-1.0.0.dev4 → modal-1.0.0.dev7}/modal/dict.pyi +0 -0
- {modal-1.0.0.dev4 → modal-1.0.0.dev7}/modal/environments.py +0 -0
- {modal-1.0.0.dev4 → modal-1.0.0.dev7}/modal/environments.pyi +0 -0
- {modal-1.0.0.dev4 → modal-1.0.0.dev7}/modal/exception.py +0 -0
- {modal-1.0.0.dev4 → modal-1.0.0.dev7}/modal/experimental/__init__.py +0 -0
- {modal-1.0.0.dev4 → modal-1.0.0.dev7}/modal/experimental/ipython.py +0 -0
- {modal-1.0.0.dev4 → modal-1.0.0.dev7}/modal/file_io.py +0 -0
- {modal-1.0.0.dev4 → modal-1.0.0.dev7}/modal/file_io.pyi +0 -0
- {modal-1.0.0.dev4 → modal-1.0.0.dev7}/modal/file_pattern_matcher.py +0 -0
- {modal-1.0.0.dev4 → modal-1.0.0.dev7}/modal/functions.py +0 -0
- {modal-1.0.0.dev4 → modal-1.0.0.dev7}/modal/functions.pyi +0 -0
- {modal-1.0.0.dev4 → modal-1.0.0.dev7}/modal/gpu.py +0 -0
- {modal-1.0.0.dev4 → modal-1.0.0.dev7}/modal/image.py +0 -0
- {modal-1.0.0.dev4 → modal-1.0.0.dev7}/modal/image.pyi +0 -0
- {modal-1.0.0.dev4 → modal-1.0.0.dev7}/modal/io_streams.py +0 -0
- {modal-1.0.0.dev4 → modal-1.0.0.dev7}/modal/io_streams.pyi +0 -0
- {modal-1.0.0.dev4 → modal-1.0.0.dev7}/modal/mount.py +0 -0
- {modal-1.0.0.dev4 → modal-1.0.0.dev7}/modal/mount.pyi +0 -0
- {modal-1.0.0.dev4 → modal-1.0.0.dev7}/modal/network_file_system.py +0 -0
- {modal-1.0.0.dev4 → modal-1.0.0.dev7}/modal/network_file_system.pyi +0 -0
- {modal-1.0.0.dev4 → modal-1.0.0.dev7}/modal/object.py +0 -0
- {modal-1.0.0.dev4 → modal-1.0.0.dev7}/modal/object.pyi +0 -0
- {modal-1.0.0.dev4 → modal-1.0.0.dev7}/modal/output.py +0 -0
- {modal-1.0.0.dev4 → modal-1.0.0.dev7}/modal/parallel_map.py +0 -0
- {modal-1.0.0.dev4 → modal-1.0.0.dev7}/modal/parallel_map.pyi +0 -0
- {modal-1.0.0.dev4 → modal-1.0.0.dev7}/modal/partial_function.py +0 -0
- {modal-1.0.0.dev4 → modal-1.0.0.dev7}/modal/partial_function.pyi +0 -0
- {modal-1.0.0.dev4 → modal-1.0.0.dev7}/modal/proxy.py +0 -0
- {modal-1.0.0.dev4 → modal-1.0.0.dev7}/modal/proxy.pyi +0 -0
- {modal-1.0.0.dev4 → modal-1.0.0.dev7}/modal/py.typed +0 -0
- {modal-1.0.0.dev4 → modal-1.0.0.dev7}/modal/queue.py +0 -0
- {modal-1.0.0.dev4 → modal-1.0.0.dev7}/modal/queue.pyi +0 -0
- {modal-1.0.0.dev4 → modal-1.0.0.dev7}/modal/requirements/2023.12.312.txt +0 -0
- {modal-1.0.0.dev4 → modal-1.0.0.dev7}/modal/requirements/2023.12.txt +0 -0
- {modal-1.0.0.dev4 → modal-1.0.0.dev7}/modal/requirements/2024.04.txt +0 -0
- {modal-1.0.0.dev4 → modal-1.0.0.dev7}/modal/requirements/2024.10.txt +0 -0
- {modal-1.0.0.dev4 → modal-1.0.0.dev7}/modal/requirements/PREVIEW.txt +0 -0
- {modal-1.0.0.dev4 → modal-1.0.0.dev7}/modal/requirements/README.md +0 -0
- {modal-1.0.0.dev4 → modal-1.0.0.dev7}/modal/requirements/base-images.json +0 -0
- {modal-1.0.0.dev4 → modal-1.0.0.dev7}/modal/retries.py +0 -0
- {modal-1.0.0.dev4 → modal-1.0.0.dev7}/modal/running_app.py +0 -0
- {modal-1.0.0.dev4 → modal-1.0.0.dev7}/modal/schedule.py +0 -0
- {modal-1.0.0.dev4 → modal-1.0.0.dev7}/modal/scheduler_placement.py +0 -0
- {modal-1.0.0.dev4 → modal-1.0.0.dev7}/modal/secret.py +0 -0
- {modal-1.0.0.dev4 → modal-1.0.0.dev7}/modal/secret.pyi +0 -0
- {modal-1.0.0.dev4 → modal-1.0.0.dev7}/modal/snapshot.py +0 -0
- {modal-1.0.0.dev4 → modal-1.0.0.dev7}/modal/snapshot.pyi +0 -0
- {modal-1.0.0.dev4 → modal-1.0.0.dev7}/modal/stream_type.py +0 -0
- {modal-1.0.0.dev4 → modal-1.0.0.dev7}/modal/token_flow.py +0 -0
- {modal-1.0.0.dev4 → modal-1.0.0.dev7}/modal/token_flow.pyi +0 -0
- {modal-1.0.0.dev4 → modal-1.0.0.dev7}/modal/volume.pyi +0 -0
- {modal-1.0.0.dev4 → modal-1.0.0.dev7}/modal.egg-info/SOURCES.txt +0 -0
- {modal-1.0.0.dev4 → modal-1.0.0.dev7}/modal.egg-info/dependency_links.txt +0 -0
- {modal-1.0.0.dev4 → modal-1.0.0.dev7}/modal.egg-info/entry_points.txt +0 -0
- {modal-1.0.0.dev4 → modal-1.0.0.dev7}/modal.egg-info/requires.txt +0 -0
- {modal-1.0.0.dev4 → modal-1.0.0.dev7}/modal.egg-info/top_level.txt +0 -0
- {modal-1.0.0.dev4 → modal-1.0.0.dev7}/modal_docs/__init__.py +0 -0
- {modal-1.0.0.dev4 → modal-1.0.0.dev7}/modal_docs/gen_cli_docs.py +0 -0
- {modal-1.0.0.dev4 → modal-1.0.0.dev7}/modal_docs/gen_reference_docs.py +0 -0
- {modal-1.0.0.dev4 → modal-1.0.0.dev7}/modal_docs/mdmd/__init__.py +0 -0
- {modal-1.0.0.dev4 → modal-1.0.0.dev7}/modal_docs/mdmd/mdmd.py +0 -0
- {modal-1.0.0.dev4 → modal-1.0.0.dev7}/modal_docs/mdmd/signatures.py +0 -0
- {modal-1.0.0.dev4 → modal-1.0.0.dev7}/modal_proto/__init__.py +0 -0
- {modal-1.0.0.dev4 → modal-1.0.0.dev7}/modal_proto/api_grpc.py +0 -0
- {modal-1.0.0.dev4 → modal-1.0.0.dev7}/modal_proto/api_pb2_grpc.py +0 -0
- {modal-1.0.0.dev4 → modal-1.0.0.dev7}/modal_proto/api_pb2_grpc.pyi +0 -0
- {modal-1.0.0.dev4 → modal-1.0.0.dev7}/modal_proto/modal_api_grpc.py +0 -0
- {modal-1.0.0.dev4 → modal-1.0.0.dev7}/modal_proto/modal_options_grpc.py +0 -0
- {modal-1.0.0.dev4 → modal-1.0.0.dev7}/modal_proto/options.proto +0 -0
- {modal-1.0.0.dev4 → modal-1.0.0.dev7}/modal_proto/options_grpc.py +0 -0
- {modal-1.0.0.dev4 → modal-1.0.0.dev7}/modal_proto/options_pb2.py +0 -0
- {modal-1.0.0.dev4 → modal-1.0.0.dev7}/modal_proto/options_pb2.pyi +0 -0
- {modal-1.0.0.dev4 → modal-1.0.0.dev7}/modal_proto/options_pb2_grpc.py +0 -0
- {modal-1.0.0.dev4 → modal-1.0.0.dev7}/modal_proto/options_pb2_grpc.pyi +0 -0
- {modal-1.0.0.dev4 → modal-1.0.0.dev7}/modal_proto/py.typed +0 -0
- {modal-1.0.0.dev4 → modal-1.0.0.dev7}/modal_version/__main__.py +0 -0
- {modal-1.0.0.dev4 → modal-1.0.0.dev7}/pyproject.toml +0 -0
- {modal-1.0.0.dev4 → modal-1.0.0.dev7}/setup.cfg +0 -0
@@ -30,7 +30,6 @@ from ._partial_function import (
|
|
30
30
|
)
|
31
31
|
from ._utils.async_utils import synchronize_api
|
32
32
|
from ._utils.deprecation import (
|
33
|
-
deprecation_error,
|
34
33
|
deprecation_warning,
|
35
34
|
warn_on_renamed_autoscaler_settings,
|
36
35
|
)
|
@@ -328,7 +327,6 @@ class _App:
|
|
328
327
|
self,
|
329
328
|
*,
|
330
329
|
client: Optional[_Client] = None,
|
331
|
-
show_progress: Optional[bool] = None,
|
332
330
|
detach: bool = False,
|
333
331
|
interactive: bool = False,
|
334
332
|
environment_name: Optional[str] = None,
|
@@ -374,16 +372,6 @@ class _App:
|
|
374
372
|
"""
|
375
373
|
from .runner import _run_app # Defer import of runner.py, which imports a lot from Rich
|
376
374
|
|
377
|
-
# See Github discussion here: https://github.com/modal-labs/modal-client/pull/2030#issuecomment-2237266186
|
378
|
-
|
379
|
-
if show_progress is True:
|
380
|
-
deprecation_error(
|
381
|
-
(2024, 11, 20),
|
382
|
-
"`show_progress=True` is no longer supported. Use `with modal.enable_output():` instead.",
|
383
|
-
)
|
384
|
-
elif show_progress is False:
|
385
|
-
deprecation_warning((2024, 11, 20), "`show_progress=False` is deprecated (and has no effect)")
|
386
|
-
|
387
375
|
async with _run_app(
|
388
376
|
self, client=client, detach=detach, interactive=interactive, environment_name=environment_name
|
389
377
|
):
|
@@ -1037,44 +1025,6 @@ class _App:
|
|
1037
1025
|
|
1038
1026
|
return wrapper
|
1039
1027
|
|
1040
|
-
async def spawn_sandbox(
|
1041
|
-
self,
|
1042
|
-
*entrypoint_args: str,
|
1043
|
-
image: Optional[_Image] = None, # The image to run as the container for the sandbox.
|
1044
|
-
mounts: Sequence[_Mount] = (), # Mounts to attach to the sandbox.
|
1045
|
-
secrets: Sequence[_Secret] = (), # Environment variables to inject into the sandbox.
|
1046
|
-
network_file_systems: dict[Union[str, PurePosixPath], _NetworkFileSystem] = {},
|
1047
|
-
timeout: Optional[int] = None, # Maximum execution time of the sandbox in seconds.
|
1048
|
-
workdir: Optional[str] = None, # Working directory of the sandbox.
|
1049
|
-
gpu: GPU_T = None,
|
1050
|
-
cloud: Optional[str] = None,
|
1051
|
-
region: Optional[Union[str, Sequence[str]]] = None, # Region or regions to run the sandbox on.
|
1052
|
-
# Specify, in fractional CPU cores, how many CPU cores to request.
|
1053
|
-
# Or, pass (request, limit) to additionally specify a hard limit in fractional CPU cores.
|
1054
|
-
# CPU throttling will prevent a container from exceeding its specified limit.
|
1055
|
-
cpu: Optional[Union[float, tuple[float, float]]] = None,
|
1056
|
-
# Specify, in MiB, a memory request which is the minimum memory required.
|
1057
|
-
# Or, pass (request, limit) to additionally specify a hard limit in MiB.
|
1058
|
-
memory: Optional[Union[int, tuple[int, int]]] = None,
|
1059
|
-
block_network: bool = False, # Whether to block network access
|
1060
|
-
volumes: dict[
|
1061
|
-
Union[str, PurePosixPath], Union[_Volume, _CloudBucketMount]
|
1062
|
-
] = {}, # Mount points for Modal Volumes and CloudBucketMounts
|
1063
|
-
pty_info: Optional[api_pb2.PTYInfo] = None,
|
1064
|
-
_experimental_scheduler_placement: Optional[
|
1065
|
-
SchedulerPlacement
|
1066
|
-
] = None, # Experimental controls over fine-grained scheduling (alpha).
|
1067
|
-
) -> None:
|
1068
|
-
"""mdmd:hidden"""
|
1069
|
-
arglist = ", ".join(repr(s) for s in entrypoint_args)
|
1070
|
-
message = (
|
1071
|
-
"`App.spawn_sandbox` is deprecated.\n\n"
|
1072
|
-
"Sandboxes can be created using the `Sandbox` object:\n\n"
|
1073
|
-
f"```\nsb = Sandbox.create({arglist}, app=app)\n```\n\n"
|
1074
|
-
"See https://modal.com/docs/guide/sandbox for more info on working with sandboxes."
|
1075
|
-
)
|
1076
|
-
deprecation_error((2024, 7, 5), message)
|
1077
|
-
|
1078
1028
|
def include(self, /, other_app: "_App") -> typing_extensions.Self:
|
1079
1029
|
"""Include another App's objects in this one.
|
1080
1030
|
|
@@ -20,7 +20,6 @@ import modal.schedule
|
|
20
20
|
import modal.scheduler_placement
|
21
21
|
import modal.secret
|
22
22
|
import modal.volume
|
23
|
-
import modal_proto.api_pb2
|
24
23
|
import pathlib
|
25
24
|
import synchronicity.combined_types
|
26
25
|
import typing
|
@@ -134,7 +133,6 @@ class _App:
|
|
134
133
|
self,
|
135
134
|
*,
|
136
135
|
client: typing.Optional[modal.client._Client] = None,
|
137
|
-
show_progress: typing.Optional[bool] = None,
|
138
136
|
detach: bool = False,
|
139
137
|
interactive: bool = False,
|
140
138
|
environment_name: typing.Optional[str] = None,
|
@@ -263,30 +261,6 @@ class _App:
|
|
263
261
|
_experimental_buffer_containers: typing.Optional[int] = None,
|
264
262
|
allow_cross_region_volumes: typing.Optional[bool] = None,
|
265
263
|
) -> collections.abc.Callable[[typing.Union[CLS_T, modal._partial_function._PartialFunction]], CLS_T]: ...
|
266
|
-
async def spawn_sandbox(
|
267
|
-
self,
|
268
|
-
*entrypoint_args: str,
|
269
|
-
image: typing.Optional[modal.image._Image] = None,
|
270
|
-
mounts: collections.abc.Sequence[modal.mount._Mount] = (),
|
271
|
-
secrets: collections.abc.Sequence[modal.secret._Secret] = (),
|
272
|
-
network_file_systems: dict[
|
273
|
-
typing.Union[str, pathlib.PurePosixPath], modal.network_file_system._NetworkFileSystem
|
274
|
-
] = {},
|
275
|
-
timeout: typing.Optional[int] = None,
|
276
|
-
workdir: typing.Optional[str] = None,
|
277
|
-
gpu: typing.Union[None, str, modal.gpu._GPUConfig] = None,
|
278
|
-
cloud: typing.Optional[str] = None,
|
279
|
-
region: typing.Union[str, collections.abc.Sequence[str], None] = None,
|
280
|
-
cpu: typing.Union[float, tuple[float, float], None] = None,
|
281
|
-
memory: typing.Union[int, tuple[int, int], None] = None,
|
282
|
-
block_network: bool = False,
|
283
|
-
volumes: dict[
|
284
|
-
typing.Union[str, pathlib.PurePosixPath],
|
285
|
-
typing.Union[modal.volume._Volume, modal.cloud_bucket_mount._CloudBucketMount],
|
286
|
-
] = {},
|
287
|
-
pty_info: typing.Optional[modal_proto.api_pb2.PTYInfo] = None,
|
288
|
-
_experimental_scheduler_placement: typing.Optional[modal.scheduler_placement.SchedulerPlacement] = None,
|
289
|
-
) -> None: ...
|
290
264
|
def include(self, /, other_app: _App) -> typing_extensions.Self: ...
|
291
265
|
def _logs(
|
292
266
|
self, client: typing.Optional[modal.client._Client] = None
|
@@ -381,7 +355,6 @@ class App:
|
|
381
355
|
/,
|
382
356
|
*,
|
383
357
|
client: typing.Optional[modal.client.Client] = None,
|
384
|
-
show_progress: typing.Optional[bool] = None,
|
385
358
|
detach: bool = False,
|
386
359
|
interactive: bool = False,
|
387
360
|
environment_name: typing.Optional[str] = None,
|
@@ -391,7 +364,6 @@ class App:
|
|
391
364
|
/,
|
392
365
|
*,
|
393
366
|
client: typing.Optional[modal.client.Client] = None,
|
394
|
-
show_progress: typing.Optional[bool] = None,
|
395
367
|
detach: bool = False,
|
396
368
|
interactive: bool = False,
|
397
369
|
environment_name: typing.Optional[str] = None,
|
@@ -537,61 +509,6 @@ class App:
|
|
537
509
|
_experimental_buffer_containers: typing.Optional[int] = None,
|
538
510
|
allow_cross_region_volumes: typing.Optional[bool] = None,
|
539
511
|
) -> collections.abc.Callable[[typing.Union[CLS_T, modal.partial_function.PartialFunction]], CLS_T]: ...
|
540
|
-
|
541
|
-
class __spawn_sandbox_spec(typing_extensions.Protocol[SUPERSELF]):
|
542
|
-
def __call__(
|
543
|
-
self,
|
544
|
-
/,
|
545
|
-
*entrypoint_args: str,
|
546
|
-
image: typing.Optional[modal.image.Image] = None,
|
547
|
-
mounts: collections.abc.Sequence[modal.mount.Mount] = (),
|
548
|
-
secrets: collections.abc.Sequence[modal.secret.Secret] = (),
|
549
|
-
network_file_systems: dict[
|
550
|
-
typing.Union[str, pathlib.PurePosixPath], modal.network_file_system.NetworkFileSystem
|
551
|
-
] = {},
|
552
|
-
timeout: typing.Optional[int] = None,
|
553
|
-
workdir: typing.Optional[str] = None,
|
554
|
-
gpu: typing.Union[None, str, modal.gpu._GPUConfig] = None,
|
555
|
-
cloud: typing.Optional[str] = None,
|
556
|
-
region: typing.Union[str, collections.abc.Sequence[str], None] = None,
|
557
|
-
cpu: typing.Union[float, tuple[float, float], None] = None,
|
558
|
-
memory: typing.Union[int, tuple[int, int], None] = None,
|
559
|
-
block_network: bool = False,
|
560
|
-
volumes: dict[
|
561
|
-
typing.Union[str, pathlib.PurePosixPath],
|
562
|
-
typing.Union[modal.volume.Volume, modal.cloud_bucket_mount.CloudBucketMount],
|
563
|
-
] = {},
|
564
|
-
pty_info: typing.Optional[modal_proto.api_pb2.PTYInfo] = None,
|
565
|
-
_experimental_scheduler_placement: typing.Optional[modal.scheduler_placement.SchedulerPlacement] = None,
|
566
|
-
) -> None: ...
|
567
|
-
async def aio(
|
568
|
-
self,
|
569
|
-
/,
|
570
|
-
*entrypoint_args: str,
|
571
|
-
image: typing.Optional[modal.image.Image] = None,
|
572
|
-
mounts: collections.abc.Sequence[modal.mount.Mount] = (),
|
573
|
-
secrets: collections.abc.Sequence[modal.secret.Secret] = (),
|
574
|
-
network_file_systems: dict[
|
575
|
-
typing.Union[str, pathlib.PurePosixPath], modal.network_file_system.NetworkFileSystem
|
576
|
-
] = {},
|
577
|
-
timeout: typing.Optional[int] = None,
|
578
|
-
workdir: typing.Optional[str] = None,
|
579
|
-
gpu: typing.Union[None, str, modal.gpu._GPUConfig] = None,
|
580
|
-
cloud: typing.Optional[str] = None,
|
581
|
-
region: typing.Union[str, collections.abc.Sequence[str], None] = None,
|
582
|
-
cpu: typing.Union[float, tuple[float, float], None] = None,
|
583
|
-
memory: typing.Union[int, tuple[int, int], None] = None,
|
584
|
-
block_network: bool = False,
|
585
|
-
volumes: dict[
|
586
|
-
typing.Union[str, pathlib.PurePosixPath],
|
587
|
-
typing.Union[modal.volume.Volume, modal.cloud_bucket_mount.CloudBucketMount],
|
588
|
-
] = {},
|
589
|
-
pty_info: typing.Optional[modal_proto.api_pb2.PTYInfo] = None,
|
590
|
-
_experimental_scheduler_placement: typing.Optional[modal.scheduler_placement.SchedulerPlacement] = None,
|
591
|
-
) -> None: ...
|
592
|
-
|
593
|
-
spawn_sandbox: __spawn_sandbox_spec[typing_extensions.Self]
|
594
|
-
|
595
512
|
def include(self, /, other_app: App) -> typing_extensions.Self: ...
|
596
513
|
|
597
514
|
class ___logs_spec(typing_extensions.Protocol[SUPERSELF]):
|
@@ -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.0.
|
34
|
+
version: str = "1.0.0.dev7",
|
35
35
|
): ...
|
36
36
|
def is_closed(self) -> bool: ...
|
37
37
|
@property
|
@@ -94,7 +94,7 @@ class Client:
|
|
94
94
|
server_url: str,
|
95
95
|
client_type: int,
|
96
96
|
credentials: typing.Optional[tuple[str, str]],
|
97
|
-
version: str = "1.0.0.
|
97
|
+
version: str = "1.0.0.dev7",
|
98
98
|
): ...
|
99
99
|
def is_closed(self) -> bool: ...
|
100
100
|
@property
|
@@ -6,7 +6,6 @@ from typing import Generic, Optional, TypeVar
|
|
6
6
|
from modal_proto import api_pb2
|
7
7
|
|
8
8
|
from ._utils.async_utils import TaskContext, synchronize_api
|
9
|
-
from ._utils.deprecation import deprecation_error
|
10
9
|
from ._utils.grpc_utils import retry_transient_errors
|
11
10
|
from ._utils.shell_utils import stream_from_stdin, write_to_fd
|
12
11
|
from .client import _Client
|
@@ -118,18 +117,11 @@ class _ContainerProcess(Generic[T]):
|
|
118
117
|
self._returncode = resp.exit_code
|
119
118
|
return self._returncode
|
120
119
|
|
121
|
-
async def attach(self
|
120
|
+
async def attach(self):
|
122
121
|
if platform.system() == "Windows":
|
123
122
|
print("interactive exec is not currently supported on Windows.")
|
124
123
|
return
|
125
124
|
|
126
|
-
if pty is not None:
|
127
|
-
deprecation_error(
|
128
|
-
(2024, 12, 9),
|
129
|
-
"The `pty` argument to `modal.container_process.attach(pty=...)` is deprecated, "
|
130
|
-
"as only PTY mode is supported. Please remove the argument.",
|
131
|
-
)
|
132
|
-
|
133
125
|
from rich.console import Console
|
134
126
|
|
135
127
|
console = Console()
|
@@ -35,7 +35,7 @@ class _ContainerProcess(typing.Generic[T]):
|
|
35
35
|
def returncode(self) -> int: ...
|
36
36
|
async def poll(self) -> typing.Optional[int]: ...
|
37
37
|
async def wait(self) -> int: ...
|
38
|
-
async def attach(self
|
38
|
+
async def attach(self): ...
|
39
39
|
|
40
40
|
SUPERSELF = typing.TypeVar("SUPERSELF", covariant=True)
|
41
41
|
|
@@ -80,7 +80,7 @@ class ContainerProcess(typing.Generic[T]):
|
|
80
80
|
wait: __wait_spec[typing_extensions.Self]
|
81
81
|
|
82
82
|
class __attach_spec(typing_extensions.Protocol[SUPERSELF]):
|
83
|
-
def __call__(self,
|
84
|
-
async def aio(self,
|
83
|
+
def __call__(self, /): ...
|
84
|
+
async def aio(self, /): ...
|
85
85
|
|
86
86
|
attach: __attach_spec[typing_extensions.Self]
|
@@ -27,7 +27,6 @@ from ._pty import get_pty_info
|
|
27
27
|
from ._resolver import Resolver
|
28
28
|
from ._traceback import print_server_warnings, traceback_contains_remote_call
|
29
29
|
from ._utils.async_utils import TaskContext, gather_cancel_on_exc, synchronize_api
|
30
|
-
from ._utils.deprecation import deprecation_error
|
31
30
|
from ._utils.git_utils import get_git_commit_info
|
32
31
|
from ._utils.grpc_utils import retry_transient_errors
|
33
32
|
from ._utils.name_utils import check_object_name, is_valid_tag
|
@@ -632,24 +631,7 @@ async def _interactive_shell(
|
|
632
631
|
raise
|
633
632
|
|
634
633
|
|
635
|
-
def _run_stub(*args: Any, **kwargs: Any):
|
636
|
-
"""mdmd:hidden
|
637
|
-
`run_stub` has been renamed to `run_app` and is deprecated. Please update your code.
|
638
|
-
"""
|
639
|
-
deprecation_error(
|
640
|
-
(2024, 5, 1), "`run_stub` has been renamed to `run_app` and is deprecated. Please update your code."
|
641
|
-
)
|
642
|
-
|
643
|
-
|
644
|
-
def _deploy_stub(*args: Any, **kwargs: Any):
|
645
|
-
"""mdmd:hidden"""
|
646
|
-
message = "`deploy_stub` has been renamed to `deploy_app`. Please update your code."
|
647
|
-
deprecation_error((2024, 5, 1), message)
|
648
|
-
|
649
|
-
|
650
634
|
run_app = synchronize_api(_run_app)
|
651
635
|
serve_update = synchronize_api(_serve_update)
|
652
636
|
deploy_app = synchronize_api(_deploy_app)
|
653
637
|
interactive_shell = synchronize_api(_interactive_shell)
|
654
|
-
run_stub = synchronize_api(_run_stub)
|
655
|
-
deploy_stub = synchronize_api(_deploy_stub)
|
@@ -83,8 +83,6 @@ async def _deploy_app(
|
|
83
83
|
async def _interactive_shell(
|
84
84
|
_app: _App, cmds: list[str], environment_name: str = "", pty: bool = True, **kwargs: typing.Any
|
85
85
|
) -> None: ...
|
86
|
-
def _run_stub(*args: typing.Any, **kwargs: typing.Any): ...
|
87
|
-
def _deploy_stub(*args: typing.Any, **kwargs: typing.Any): ...
|
88
86
|
|
89
87
|
class __run_app_spec(typing_extensions.Protocol):
|
90
88
|
def __call__(
|
@@ -153,6 +151,3 @@ class __interactive_shell_spec(typing_extensions.Protocol):
|
|
153
151
|
) -> None: ...
|
154
152
|
|
155
153
|
interactive_shell: __interactive_shell_spec
|
156
|
-
|
157
|
-
def run_stub(*args: typing.Any, **kwargs: typing.Any): ...
|
158
|
-
def deploy_stub(*args: typing.Any, **kwargs: typing.Any): ...
|
@@ -762,23 +762,3 @@ class _Sandbox(_Object, type_prefix="sb"):
|
|
762
762
|
|
763
763
|
|
764
764
|
Sandbox = synchronize_api(_Sandbox)
|
765
|
-
|
766
|
-
|
767
|
-
def __getattr__(name):
|
768
|
-
if name == "LogsReader":
|
769
|
-
deprecation_error(
|
770
|
-
(2024, 8, 12),
|
771
|
-
"`modal.sandbox.LogsReader` is deprecated. Please import `modal.io_streams.StreamReader` instead.",
|
772
|
-
)
|
773
|
-
from .io_streams import StreamReader
|
774
|
-
|
775
|
-
return StreamReader
|
776
|
-
elif name == "StreamWriter":
|
777
|
-
deprecation_error(
|
778
|
-
(2024, 8, 12),
|
779
|
-
"`modal.sandbox.StreamWriter` is deprecated. Please import `modal.io_streams.StreamWriter` instead.",
|
780
|
-
)
|
781
|
-
from .io_streams import StreamWriter
|
782
|
-
|
783
|
-
return StreamWriter
|
784
|
-
raise AttributeError(f"module {__name__} has no attribute {name}")
|
@@ -11,7 +11,6 @@ from synchronicity.async_wrap import asynccontextmanager
|
|
11
11
|
from modal._output import OutputManager
|
12
12
|
|
13
13
|
from ._utils.async_utils import TaskContext, asyncify, synchronize_api, synchronizer
|
14
|
-
from ._utils.deprecation import deprecation_error
|
15
14
|
from ._utils.logger import logger
|
16
15
|
from ._watcher import watch
|
17
16
|
from .cli.import_refs import ImportRef, import_app_from_ref
|
@@ -122,9 +121,4 @@ async def _serve_app(
|
|
122
121
|
yield app
|
123
122
|
|
124
123
|
|
125
|
-
def _serve_stub(*args, **kwargs):
|
126
|
-
deprecation_error((2024, 5, 1), "`serve_stub` is deprecated. Please use `serve_app` instead.")
|
127
|
-
|
128
|
-
|
129
124
|
serve_app = synchronize_api(_serve_app)
|
130
|
-
serve_stub = synchronize_api(_serve_stub)
|
@@ -33,7 +33,6 @@ def _serve_app(
|
|
33
33
|
_watcher: typing.Optional[collections.abc.AsyncGenerator[set[str], None]] = None,
|
34
34
|
environment_name: typing.Optional[str] = None,
|
35
35
|
) -> typing.AsyncContextManager[_App]: ...
|
36
|
-
def _serve_stub(*args, **kwargs): ...
|
37
36
|
|
38
37
|
class __serve_app_spec(typing_extensions.Protocol):
|
39
38
|
def __call__(
|
@@ -56,5 +55,3 @@ class __serve_app_spec(typing_extensions.Protocol):
|
|
56
55
|
) -> typing.AsyncContextManager[_App]: ...
|
57
56
|
|
58
57
|
serve_app: __serve_app_spec
|
59
|
-
|
60
|
-
def serve_stub(*args, **kwargs): ...
|
@@ -27,7 +27,7 @@ from grpclib import GRPCError, Status
|
|
27
27
|
from synchronicity.async_wrap import asynccontextmanager
|
28
28
|
|
29
29
|
import modal_proto.api_pb2
|
30
|
-
from modal.exception import VolumeUploadTimeoutError
|
30
|
+
from modal.exception import InvalidError, VolumeUploadTimeoutError
|
31
31
|
from modal_proto import api_pb2
|
32
32
|
|
33
33
|
from ._object import EPHEMERAL_OBJECT_HEARTBEAT_SLEEP, _get_environment_name, _Object, live_method, live_method_gen
|
@@ -49,7 +49,7 @@ from ._utils.blob_utils import (
|
|
49
49
|
get_file_upload_spec_from_fileobj,
|
50
50
|
get_file_upload_spec_from_path,
|
51
51
|
)
|
52
|
-
from ._utils.deprecation import
|
52
|
+
from ._utils.deprecation import deprecation_warning
|
53
53
|
from ._utils.grpc_utils import retry_transient_errors
|
54
54
|
from ._utils.http_utils import ClientSessionRegistry
|
55
55
|
from ._utils.name_utils import check_object_name
|
@@ -364,21 +364,14 @@ class _Volume(_Object, type_prefix="vo"):
|
|
364
364
|
recursively.
|
365
365
|
"""
|
366
366
|
if path.endswith("**"):
|
367
|
-
|
367
|
+
raise InvalidError(
|
368
368
|
"Glob patterns in `volume get` and `Volume.listdir()` are deprecated. "
|
369
369
|
"Please pass recursive=True instead. For the CLI, just remove the glob suffix."
|
370
370
|
)
|
371
|
-
deprecation_error(
|
372
|
-
(2024, 4, 23),
|
373
|
-
msg,
|
374
|
-
)
|
375
371
|
elif path.endswith("*"):
|
376
|
-
|
377
|
-
(
|
378
|
-
|
379
|
-
"Glob patterns in `volume get` and `Volume.listdir()` are deprecated. "
|
380
|
-
"Please remove the glob `*` suffix."
|
381
|
-
),
|
372
|
+
raise InvalidError(
|
373
|
+
"Glob patterns in `volume get` and `Volume.listdir()` are deprecated. "
|
374
|
+
"Please remove the glob `*` suffix."
|
382
375
|
)
|
383
376
|
|
384
377
|
req = api_pb2.VolumeListFilesRequest(volume_id=self.object_id, path=path, recursive=recursive)
|