modal 1.4.4.dev16__tar.gz → 1.4.4.dev17__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.4.4.dev16 → modal-1.4.4.dev17}/PKG-INFO +1 -1
- {modal-1.4.4.dev16 → modal-1.4.4.dev17}/modal/_functions.py +13 -1
- {modal-1.4.4.dev16 → modal-1.4.4.dev17}/modal/_image.py +8 -3
- {modal-1.4.4.dev16 → modal-1.4.4.dev17}/modal/_object.py +0 -18
- {modal-1.4.4.dev16 → modal-1.4.4.dev17}/modal/_utils/grpc_utils.py +4 -1
- {modal-1.4.4.dev16 → modal-1.4.4.dev17}/modal/client.pyi +2 -2
- {modal-1.4.4.dev16 → modal-1.4.4.dev17}/modal/cls.py +8 -0
- {modal-1.4.4.dev16 → modal-1.4.4.dev17}/modal/cls.pyi +14 -0
- {modal-1.4.4.dev16 → modal-1.4.4.dev17}/modal/dict.py +0 -21
- {modal-1.4.4.dev16 → modal-1.4.4.dev17}/modal/dict.pyi +0 -56
- {modal-1.4.4.dev16 → modal-1.4.4.dev17}/modal/functions.pyi +15 -1
- {modal-1.4.4.dev16 → modal-1.4.4.dev17}/modal/object.pyi +0 -6
- {modal-1.4.4.dev16 → modal-1.4.4.dev17}/modal/queue.py +0 -18
- {modal-1.4.4.dev16 → modal-1.4.4.dev17}/modal/queue.pyi +0 -56
- {modal-1.4.4.dev16 → modal-1.4.4.dev17}/modal/sandbox.py +19 -9
- {modal-1.4.4.dev16 → modal-1.4.4.dev17}/modal/sandbox.pyi +14 -0
- {modal-1.4.4.dev16 → modal-1.4.4.dev17}/modal/secret.py +0 -18
- {modal-1.4.4.dev16 → modal-1.4.4.dev17}/modal/secret.pyi +0 -41
- {modal-1.4.4.dev16 → modal-1.4.4.dev17}/modal/volume.py +0 -54
- {modal-1.4.4.dev16 → modal-1.4.4.dev17}/modal/volume.pyi +0 -124
- {modal-1.4.4.dev16 → modal-1.4.4.dev17}/modal.egg-info/PKG-INFO +1 -1
- {modal-1.4.4.dev16 → modal-1.4.4.dev17}/modal_proto/api_grpc.py +16 -0
- {modal-1.4.4.dev16 → modal-1.4.4.dev17}/modal_proto/api_pb2.py +526 -526
- {modal-1.4.4.dev16 → modal-1.4.4.dev17}/modal_proto/api_pb2.pyi +9 -2
- {modal-1.4.4.dev16 → modal-1.4.4.dev17}/modal_proto/api_pb2_grpc.py +33 -0
- {modal-1.4.4.dev16 → modal-1.4.4.dev17}/modal_proto/api_pb2_grpc.pyi +10 -0
- {modal-1.4.4.dev16 → modal-1.4.4.dev17}/modal_proto/modal_api_grpc.py +1 -0
- {modal-1.4.4.dev16 → modal-1.4.4.dev17}/modal_version/__init__.py +1 -1
- {modal-1.4.4.dev16 → modal-1.4.4.dev17}/LICENSE +0 -0
- {modal-1.4.4.dev16 → modal-1.4.4.dev17}/README.md +0 -0
- {modal-1.4.4.dev16 → modal-1.4.4.dev17}/modal/__init__.py +0 -0
- {modal-1.4.4.dev16 → modal-1.4.4.dev17}/modal/__main__.py +0 -0
- {modal-1.4.4.dev16 → modal-1.4.4.dev17}/modal/_billing.py +0 -0
- {modal-1.4.4.dev16 → modal-1.4.4.dev17}/modal/_clustered_functions.py +0 -0
- {modal-1.4.4.dev16 → modal-1.4.4.dev17}/modal/_clustered_functions.pyi +0 -0
- {modal-1.4.4.dev16 → modal-1.4.4.dev17}/modal/_container_entrypoint.py +0 -0
- {modal-1.4.4.dev16 → modal-1.4.4.dev17}/modal/_environments.py +0 -0
- {modal-1.4.4.dev16 → modal-1.4.4.dev17}/modal/_function_variants.py +0 -0
- {modal-1.4.4.dev16 → modal-1.4.4.dev17}/modal/_grpc_client.py +0 -0
- {modal-1.4.4.dev16 → modal-1.4.4.dev17}/modal/_ipython.py +0 -0
- {modal-1.4.4.dev16 → modal-1.4.4.dev17}/modal/_load_context.py +0 -0
- {modal-1.4.4.dev16 → modal-1.4.4.dev17}/modal/_location.py +0 -0
- {modal-1.4.4.dev16 → modal-1.4.4.dev17}/modal/_logs.py +0 -0
- {modal-1.4.4.dev16 → modal-1.4.4.dev17}/modal/_output/__init__.py +0 -0
- {modal-1.4.4.dev16 → modal-1.4.4.dev17}/modal/_output/manager.py +0 -0
- {modal-1.4.4.dev16 → modal-1.4.4.dev17}/modal/_output/pty.py +0 -0
- {modal-1.4.4.dev16 → modal-1.4.4.dev17}/modal/_output/rich.py +0 -0
- {modal-1.4.4.dev16 → modal-1.4.4.dev17}/modal/_output/status.py +0 -0
- {modal-1.4.4.dev16 → modal-1.4.4.dev17}/modal/_partial_function.py +0 -0
- {modal-1.4.4.dev16 → modal-1.4.4.dev17}/modal/_resolver.py +0 -0
- {modal-1.4.4.dev16 → modal-1.4.4.dev17}/modal/_resources.py +0 -0
- {modal-1.4.4.dev16 → modal-1.4.4.dev17}/modal/_runtime/__init__.py +0 -0
- {modal-1.4.4.dev16 → modal-1.4.4.dev17}/modal/_runtime/asgi.py +0 -0
- {modal-1.4.4.dev16 → modal-1.4.4.dev17}/modal/_runtime/container_io_manager.py +0 -0
- {modal-1.4.4.dev16 → modal-1.4.4.dev17}/modal/_runtime/container_io_manager.pyi +0 -0
- {modal-1.4.4.dev16 → modal-1.4.4.dev17}/modal/_runtime/execution_context.py +0 -0
- {modal-1.4.4.dev16 → modal-1.4.4.dev17}/modal/_runtime/execution_context.pyi +0 -0
- {modal-1.4.4.dev16 → modal-1.4.4.dev17}/modal/_runtime/gpu_memory_snapshot.py +0 -0
- {modal-1.4.4.dev16 → modal-1.4.4.dev17}/modal/_runtime/task_lifecycle_manager.py +0 -0
- {modal-1.4.4.dev16 → modal-1.4.4.dev17}/modal/_runtime/task_lifecycle_manager.pyi +0 -0
- {modal-1.4.4.dev16 → modal-1.4.4.dev17}/modal/_runtime/telemetry.py +0 -0
- {modal-1.4.4.dev16 → modal-1.4.4.dev17}/modal/_runtime/user_code_event_loop.py +0 -0
- {modal-1.4.4.dev16 → modal-1.4.4.dev17}/modal/_runtime/user_code_imports.py +0 -0
- {modal-1.4.4.dev16 → modal-1.4.4.dev17}/modal/_serialization.py +0 -0
- {modal-1.4.4.dev16 → modal-1.4.4.dev17}/modal/_server.py +0 -0
- {modal-1.4.4.dev16 → modal-1.4.4.dev17}/modal/_traceback.py +0 -0
- {modal-1.4.4.dev16 → modal-1.4.4.dev17}/modal/_tunnel.py +0 -0
- {modal-1.4.4.dev16 → modal-1.4.4.dev17}/modal/_tunnel.pyi +0 -0
- {modal-1.4.4.dev16 → modal-1.4.4.dev17}/modal/_type_manager.py +0 -0
- {modal-1.4.4.dev16 → modal-1.4.4.dev17}/modal/_utils/__init__.py +0 -0
- {modal-1.4.4.dev16 → modal-1.4.4.dev17}/modal/_utils/app_utils.py +0 -0
- {modal-1.4.4.dev16 → modal-1.4.4.dev17}/modal/_utils/async_utils.py +0 -0
- {modal-1.4.4.dev16 → modal-1.4.4.dev17}/modal/_utils/auth_token_manager.py +0 -0
- {modal-1.4.4.dev16 → modal-1.4.4.dev17}/modal/_utils/blob_utils.py +0 -0
- {modal-1.4.4.dev16 → modal-1.4.4.dev17}/modal/_utils/browser_utils.py +0 -0
- {modal-1.4.4.dev16 → modal-1.4.4.dev17}/modal/_utils/bytes_io_segment_payload.py +0 -0
- {modal-1.4.4.dev16 → modal-1.4.4.dev17}/modal/_utils/deprecation.py +0 -0
- {modal-1.4.4.dev16 → modal-1.4.4.dev17}/modal/_utils/docker_utils.py +0 -0
- {modal-1.4.4.dev16 → modal-1.4.4.dev17}/modal/_utils/function_utils.py +0 -0
- {modal-1.4.4.dev16 → modal-1.4.4.dev17}/modal/_utils/git_utils.py +0 -0
- {modal-1.4.4.dev16 → modal-1.4.4.dev17}/modal/_utils/grpc_testing.py +0 -0
- {modal-1.4.4.dev16 → modal-1.4.4.dev17}/modal/_utils/hash_utils.py +0 -0
- {modal-1.4.4.dev16 → modal-1.4.4.dev17}/modal/_utils/http_utils.py +0 -0
- {modal-1.4.4.dev16 → modal-1.4.4.dev17}/modal/_utils/jwt_utils.py +0 -0
- {modal-1.4.4.dev16 → modal-1.4.4.dev17}/modal/_utils/logger.py +0 -0
- {modal-1.4.4.dev16 → modal-1.4.4.dev17}/modal/_utils/mount_utils.py +0 -0
- {modal-1.4.4.dev16 → modal-1.4.4.dev17}/modal/_utils/name_utils.py +0 -0
- {modal-1.4.4.dev16 → modal-1.4.4.dev17}/modal/_utils/package_utils.py +0 -0
- {modal-1.4.4.dev16 → modal-1.4.4.dev17}/modal/_utils/pattern_utils.py +0 -0
- {modal-1.4.4.dev16 → modal-1.4.4.dev17}/modal/_utils/rand_pb_testing.py +0 -0
- {modal-1.4.4.dev16 → modal-1.4.4.dev17}/modal/_utils/sandbox_fs_utils.py +0 -0
- {modal-1.4.4.dev16 → modal-1.4.4.dev17}/modal/_utils/shell_utils.py +0 -0
- {modal-1.4.4.dev16 → modal-1.4.4.dev17}/modal/_utils/task_command_router_client.py +0 -0
- {modal-1.4.4.dev16 → modal-1.4.4.dev17}/modal/_utils/time_utils.py +0 -0
- {modal-1.4.4.dev16 → modal-1.4.4.dev17}/modal/_vendor/__init__.py +0 -0
- {modal-1.4.4.dev16 → modal-1.4.4.dev17}/modal/_vendor/a2wsgi_wsgi.py +0 -0
- {modal-1.4.4.dev16 → modal-1.4.4.dev17}/modal/_vendor/cloudpickle.py +0 -0
- {modal-1.4.4.dev16 → modal-1.4.4.dev17}/modal/_vendor/tblib.py +0 -0
- {modal-1.4.4.dev16 → modal-1.4.4.dev17}/modal/_vendor/version.py +0 -0
- {modal-1.4.4.dev16 → modal-1.4.4.dev17}/modal/_watcher.py +0 -0
- {modal-1.4.4.dev16 → modal-1.4.4.dev17}/modal/_workspace.py +0 -0
- {modal-1.4.4.dev16 → modal-1.4.4.dev17}/modal/app.py +0 -0
- {modal-1.4.4.dev16 → modal-1.4.4.dev17}/modal/app.pyi +0 -0
- {modal-1.4.4.dev16 → modal-1.4.4.dev17}/modal/billing.py +0 -0
- {modal-1.4.4.dev16 → modal-1.4.4.dev17}/modal/builder/2023.12.312.txt +0 -0
- {modal-1.4.4.dev16 → modal-1.4.4.dev17}/modal/builder/2023.12.txt +0 -0
- {modal-1.4.4.dev16 → modal-1.4.4.dev17}/modal/builder/2024.04.txt +0 -0
- {modal-1.4.4.dev16 → modal-1.4.4.dev17}/modal/builder/2024.10.txt +0 -0
- {modal-1.4.4.dev16 → modal-1.4.4.dev17}/modal/builder/2025.06.txt +0 -0
- {modal-1.4.4.dev16 → modal-1.4.4.dev17}/modal/builder/PREVIEW.txt +0 -0
- {modal-1.4.4.dev16 → modal-1.4.4.dev17}/modal/builder/README.md +0 -0
- {modal-1.4.4.dev16 → modal-1.4.4.dev17}/modal/builder/base-images.json +0 -0
- {modal-1.4.4.dev16 → modal-1.4.4.dev17}/modal/call_graph.py +0 -0
- {modal-1.4.4.dev16 → modal-1.4.4.dev17}/modal/cli/__init__.py +0 -0
- {modal-1.4.4.dev16 → modal-1.4.4.dev17}/modal/cli/_download.py +0 -0
- {modal-1.4.4.dev16 → modal-1.4.4.dev17}/modal/cli/_help.py +0 -0
- {modal-1.4.4.dev16 → modal-1.4.4.dev17}/modal/cli/_traceback.py +0 -0
- {modal-1.4.4.dev16 → modal-1.4.4.dev17}/modal/cli/app.py +0 -0
- {modal-1.4.4.dev16 → modal-1.4.4.dev17}/modal/cli/billing.py +0 -0
- {modal-1.4.4.dev16 → modal-1.4.4.dev17}/modal/cli/bootstrap.py +0 -0
- {modal-1.4.4.dev16 → modal-1.4.4.dev17}/modal/cli/changelog.py +0 -0
- {modal-1.4.4.dev16 → modal-1.4.4.dev17}/modal/cli/cluster.py +0 -0
- {modal-1.4.4.dev16 → modal-1.4.4.dev17}/modal/cli/config.py +0 -0
- {modal-1.4.4.dev16 → modal-1.4.4.dev17}/modal/cli/container.py +0 -0
- {modal-1.4.4.dev16 → modal-1.4.4.dev17}/modal/cli/dashboard.py +0 -0
- {modal-1.4.4.dev16 → modal-1.4.4.dev17}/modal/cli/dict.py +0 -0
- {modal-1.4.4.dev16 → modal-1.4.4.dev17}/modal/cli/entry_point.py +0 -0
- {modal-1.4.4.dev16 → modal-1.4.4.dev17}/modal/cli/environment.py +0 -0
- {modal-1.4.4.dev16 → modal-1.4.4.dev17}/modal/cli/import_refs.py +0 -0
- {modal-1.4.4.dev16 → modal-1.4.4.dev17}/modal/cli/launch.py +0 -0
- {modal-1.4.4.dev16 → modal-1.4.4.dev17}/modal/cli/logo.py +0 -0
- {modal-1.4.4.dev16 → modal-1.4.4.dev17}/modal/cli/network_file_system.py +0 -0
- {modal-1.4.4.dev16 → modal-1.4.4.dev17}/modal/cli/profile.py +0 -0
- {modal-1.4.4.dev16 → modal-1.4.4.dev17}/modal/cli/programs/__init__.py +0 -0
- {modal-1.4.4.dev16 → modal-1.4.4.dev17}/modal/cli/programs/run_jupyter.py +0 -0
- {modal-1.4.4.dev16 → modal-1.4.4.dev17}/modal/cli/programs/vscode.py +0 -0
- {modal-1.4.4.dev16 → modal-1.4.4.dev17}/modal/cli/queues.py +0 -0
- {modal-1.4.4.dev16 → modal-1.4.4.dev17}/modal/cli/run.py +0 -0
- {modal-1.4.4.dev16 → modal-1.4.4.dev17}/modal/cli/secret.py +0 -0
- {modal-1.4.4.dev16 → modal-1.4.4.dev17}/modal/cli/selector.py +0 -0
- {modal-1.4.4.dev16 → modal-1.4.4.dev17}/modal/cli/shell.py +0 -0
- {modal-1.4.4.dev16 → modal-1.4.4.dev17}/modal/cli/skills.py +0 -0
- {modal-1.4.4.dev16 → modal-1.4.4.dev17}/modal/cli/token.py +0 -0
- {modal-1.4.4.dev16 → modal-1.4.4.dev17}/modal/cli/utils.py +0 -0
- {modal-1.4.4.dev16 → modal-1.4.4.dev17}/modal/cli/volume.py +0 -0
- {modal-1.4.4.dev16 → modal-1.4.4.dev17}/modal/client.py +0 -0
- {modal-1.4.4.dev16 → modal-1.4.4.dev17}/modal/cloud_bucket_mount.py +0 -0
- {modal-1.4.4.dev16 → modal-1.4.4.dev17}/modal/cloud_bucket_mount.pyi +0 -0
- {modal-1.4.4.dev16 → modal-1.4.4.dev17}/modal/config.py +0 -0
- {modal-1.4.4.dev16 → modal-1.4.4.dev17}/modal/container_process.py +0 -0
- {modal-1.4.4.dev16 → modal-1.4.4.dev17}/modal/container_process.pyi +0 -0
- {modal-1.4.4.dev16 → modal-1.4.4.dev17}/modal/environments.py +0 -0
- {modal-1.4.4.dev16 → modal-1.4.4.dev17}/modal/environments.pyi +0 -0
- {modal-1.4.4.dev16 → modal-1.4.4.dev17}/modal/exception.py +0 -0
- {modal-1.4.4.dev16 → modal-1.4.4.dev17}/modal/experimental/__init__.py +0 -0
- {modal-1.4.4.dev16 → modal-1.4.4.dev17}/modal/experimental/flash.py +0 -0
- {modal-1.4.4.dev16 → modal-1.4.4.dev17}/modal/experimental/flash.pyi +0 -0
- {modal-1.4.4.dev16 → modal-1.4.4.dev17}/modal/experimental/ipython.py +0 -0
- {modal-1.4.4.dev16 → modal-1.4.4.dev17}/modal/file_io.py +0 -0
- {modal-1.4.4.dev16 → modal-1.4.4.dev17}/modal/file_io.pyi +0 -0
- {modal-1.4.4.dev16 → modal-1.4.4.dev17}/modal/file_pattern_matcher.py +0 -0
- {modal-1.4.4.dev16 → modal-1.4.4.dev17}/modal/functions.py +0 -0
- {modal-1.4.4.dev16 → modal-1.4.4.dev17}/modal/image.py +0 -0
- {modal-1.4.4.dev16 → modal-1.4.4.dev17}/modal/image.pyi +0 -0
- {modal-1.4.4.dev16 → modal-1.4.4.dev17}/modal/io_streams.py +0 -0
- {modal-1.4.4.dev16 → modal-1.4.4.dev17}/modal/io_streams.pyi +0 -0
- {modal-1.4.4.dev16 → modal-1.4.4.dev17}/modal/mount.py +0 -0
- {modal-1.4.4.dev16 → modal-1.4.4.dev17}/modal/mount.pyi +0 -0
- {modal-1.4.4.dev16 → modal-1.4.4.dev17}/modal/network_file_system.py +0 -0
- {modal-1.4.4.dev16 → modal-1.4.4.dev17}/modal/network_file_system.pyi +0 -0
- {modal-1.4.4.dev16 → modal-1.4.4.dev17}/modal/object.py +0 -0
- {modal-1.4.4.dev16 → modal-1.4.4.dev17}/modal/output.py +0 -0
- {modal-1.4.4.dev16 → modal-1.4.4.dev17}/modal/parallel_map.py +0 -0
- {modal-1.4.4.dev16 → modal-1.4.4.dev17}/modal/parallel_map.pyi +0 -0
- {modal-1.4.4.dev16 → modal-1.4.4.dev17}/modal/partial_function.py +0 -0
- {modal-1.4.4.dev16 → modal-1.4.4.dev17}/modal/partial_function.pyi +0 -0
- {modal-1.4.4.dev16 → modal-1.4.4.dev17}/modal/proxy.py +0 -0
- {modal-1.4.4.dev16 → modal-1.4.4.dev17}/modal/proxy.pyi +0 -0
- {modal-1.4.4.dev16 → modal-1.4.4.dev17}/modal/py.typed +0 -0
- {modal-1.4.4.dev16 → modal-1.4.4.dev17}/modal/retries.py +0 -0
- {modal-1.4.4.dev16 → modal-1.4.4.dev17}/modal/runner.py +0 -0
- {modal-1.4.4.dev16 → modal-1.4.4.dev17}/modal/runner.pyi +0 -0
- {modal-1.4.4.dev16 → modal-1.4.4.dev17}/modal/running_app.py +0 -0
- {modal-1.4.4.dev16 → modal-1.4.4.dev17}/modal/sandbox_fs.py +0 -0
- {modal-1.4.4.dev16 → modal-1.4.4.dev17}/modal/sandbox_fs.pyi +0 -0
- {modal-1.4.4.dev16 → modal-1.4.4.dev17}/modal/schedule.py +0 -0
- {modal-1.4.4.dev16 → modal-1.4.4.dev17}/modal/scheduler_placement.py +0 -0
- {modal-1.4.4.dev16 → modal-1.4.4.dev17}/modal/server.py +0 -0
- {modal-1.4.4.dev16 → modal-1.4.4.dev17}/modal/server.pyi +0 -0
- {modal-1.4.4.dev16 → modal-1.4.4.dev17}/modal/serving.py +0 -0
- {modal-1.4.4.dev16 → modal-1.4.4.dev17}/modal/serving.pyi +0 -0
- {modal-1.4.4.dev16 → modal-1.4.4.dev17}/modal/skills/modal/SKILL.md +0 -0
- {modal-1.4.4.dev16 → modal-1.4.4.dev17}/modal/snapshot.py +0 -0
- {modal-1.4.4.dev16 → modal-1.4.4.dev17}/modal/snapshot.pyi +0 -0
- {modal-1.4.4.dev16 → modal-1.4.4.dev17}/modal/stream_type.py +0 -0
- {modal-1.4.4.dev16 → modal-1.4.4.dev17}/modal/token_flow.py +0 -0
- {modal-1.4.4.dev16 → modal-1.4.4.dev17}/modal/token_flow.pyi +0 -0
- {modal-1.4.4.dev16 → modal-1.4.4.dev17}/modal/workspace.py +0 -0
- {modal-1.4.4.dev16 → modal-1.4.4.dev17}/modal/workspace.pyi +0 -0
- {modal-1.4.4.dev16 → modal-1.4.4.dev17}/modal.egg-info/SOURCES.txt +0 -0
- {modal-1.4.4.dev16 → modal-1.4.4.dev17}/modal.egg-info/dependency_links.txt +0 -0
- {modal-1.4.4.dev16 → modal-1.4.4.dev17}/modal.egg-info/entry_points.txt +0 -0
- {modal-1.4.4.dev16 → modal-1.4.4.dev17}/modal.egg-info/requires.txt +0 -0
- {modal-1.4.4.dev16 → modal-1.4.4.dev17}/modal.egg-info/top_level.txt +0 -0
- {modal-1.4.4.dev16 → modal-1.4.4.dev17}/modal_docs/__init__.py +0 -0
- {modal-1.4.4.dev16 → modal-1.4.4.dev17}/modal_docs/gen_cli_docs.py +0 -0
- {modal-1.4.4.dev16 → modal-1.4.4.dev17}/modal_docs/gen_cli_docs_main.py +0 -0
- {modal-1.4.4.dev16 → modal-1.4.4.dev17}/modal_docs/gen_reference_docs.py +0 -0
- {modal-1.4.4.dev16 → modal-1.4.4.dev17}/modal_docs/gen_reference_docs_main.py +0 -0
- {modal-1.4.4.dev16 → modal-1.4.4.dev17}/modal_docs/mdmd/__init__.py +0 -0
- {modal-1.4.4.dev16 → modal-1.4.4.dev17}/modal_docs/mdmd/mdmd.py +0 -0
- {modal-1.4.4.dev16 → modal-1.4.4.dev17}/modal_docs/mdmd/signatures.py +0 -0
- {modal-1.4.4.dev16 → modal-1.4.4.dev17}/modal_docs/mdmd/types.py +0 -0
- {modal-1.4.4.dev16 → modal-1.4.4.dev17}/modal_proto/__init__.py +0 -0
- {modal-1.4.4.dev16 → modal-1.4.4.dev17}/modal_proto/py.typed +0 -0
- {modal-1.4.4.dev16 → modal-1.4.4.dev17}/modal_proto/task_command_router_grpc.py +0 -0
- {modal-1.4.4.dev16 → modal-1.4.4.dev17}/modal_proto/task_command_router_pb2.py +0 -0
- {modal-1.4.4.dev16 → modal-1.4.4.dev17}/modal_proto/task_command_router_pb2.pyi +0 -0
- {modal-1.4.4.dev16 → modal-1.4.4.dev17}/modal_proto/task_command_router_pb2_grpc.py +0 -0
- {modal-1.4.4.dev16 → modal-1.4.4.dev17}/modal_proto/task_command_router_pb2_grpc.pyi +0 -0
- {modal-1.4.4.dev16 → modal-1.4.4.dev17}/modal_version/__main__.py +0 -0
- {modal-1.4.4.dev16 → modal-1.4.4.dev17}/pyproject.toml +0 -0
- {modal-1.4.4.dev16 → modal-1.4.4.dev17}/setup.cfg +0 -0
|
@@ -1208,6 +1208,7 @@ class _Function(typing.Generic[P, ReturnType, OriginalReturnType], _Object, type
|
|
|
1208
1208
|
app_name: str,
|
|
1209
1209
|
name: str,
|
|
1210
1210
|
*,
|
|
1211
|
+
version: int | None = None,
|
|
1211
1212
|
load_context_overrides: LoadContext,
|
|
1212
1213
|
):
|
|
1213
1214
|
# internal function lookup implementation that allows lookup of class "service functions"
|
|
@@ -1219,6 +1220,7 @@ class _Function(typing.Generic[P, ReturnType, OriginalReturnType], _Object, type
|
|
|
1219
1220
|
app_name=app_name,
|
|
1220
1221
|
object_tag=name,
|
|
1221
1222
|
environment_name=load_context.environment_name,
|
|
1223
|
+
app_version=version or 0,
|
|
1222
1224
|
)
|
|
1223
1225
|
try:
|
|
1224
1226
|
response = await load_context.client.stub.FunctionGet(request)
|
|
@@ -1251,6 +1253,7 @@ class _Function(typing.Generic[P, ReturnType, OriginalReturnType], _Object, type
|
|
|
1251
1253
|
app_name: str,
|
|
1252
1254
|
name: str,
|
|
1253
1255
|
*,
|
|
1256
|
+
version: int | None = None,
|
|
1254
1257
|
environment_name: str | None = None,
|
|
1255
1258
|
client: _Client | None = None,
|
|
1256
1259
|
) -> "_Function":
|
|
@@ -1273,6 +1276,12 @@ class _Function(typing.Generic[P, ReturnType, OriginalReturnType], _Object, type
|
|
|
1273
1276
|
```python
|
|
1274
1277
|
f = modal.Function.from_name("other-app", "function")
|
|
1275
1278
|
```
|
|
1279
|
+
|
|
1280
|
+
The `version` parameter allows you to invoke a version-pinned function:
|
|
1281
|
+
|
|
1282
|
+
```python
|
|
1283
|
+
f_v3 = modal.Function.from_name("other-app", "function", version=3)
|
|
1284
|
+
```
|
|
1276
1285
|
"""
|
|
1277
1286
|
if "." in name:
|
|
1278
1287
|
raise InvalidError(
|
|
@@ -1281,7 +1290,10 @@ class _Function(typing.Generic[P, ReturnType, OriginalReturnType], _Object, type
|
|
|
1281
1290
|
)
|
|
1282
1291
|
|
|
1283
1292
|
return cls._from_name(
|
|
1284
|
-
app_name,
|
|
1293
|
+
app_name,
|
|
1294
|
+
name,
|
|
1295
|
+
load_context_overrides=LoadContext(environment_name=environment_name, client=client),
|
|
1296
|
+
version=version,
|
|
1285
1297
|
)
|
|
1286
1298
|
|
|
1287
1299
|
@property
|
|
@@ -60,6 +60,7 @@ from .secret import _Secret
|
|
|
60
60
|
from .volume import _Volume, _volume_to_mount_proto
|
|
61
61
|
|
|
62
62
|
if typing.TYPE_CHECKING:
|
|
63
|
+
import modal
|
|
63
64
|
import modal._functions
|
|
64
65
|
import modal.client
|
|
65
66
|
|
|
@@ -531,7 +532,7 @@ class _Image(_Object, type_prefix="im"):
|
|
|
531
532
|
|
|
532
533
|
for secret in secrets:
|
|
533
534
|
if not isinstance(secret, _Secret):
|
|
534
|
-
raise InvalidError("All secrets of an
|
|
535
|
+
raise InvalidError("All secrets of an Image need to be modal.Secret instances.")
|
|
535
536
|
|
|
536
537
|
if build_function and len(base_images) != 1:
|
|
537
538
|
raise InvalidError("Cannot run a build function with multiple base images!")
|
|
@@ -2763,7 +2764,7 @@ class _Image(_Object, type_prefix="im"):
|
|
|
2763
2764
|
|
|
2764
2765
|
def pipe(
|
|
2765
2766
|
self,
|
|
2766
|
-
func: Callable[Concatenate["
|
|
2767
|
+
func: Callable[Concatenate["modal.Image", P], "modal.Image"],
|
|
2767
2768
|
*args: P.args,
|
|
2768
2769
|
**kwargs: P.kwargs,
|
|
2769
2770
|
) -> "_Image":
|
|
@@ -2785,7 +2786,11 @@ class _Image(_Object, type_prefix="im"):
|
|
|
2785
2786
|
)
|
|
2786
2787
|
```
|
|
2787
2788
|
"""
|
|
2788
|
-
|
|
2789
|
+
# Typing here is complicated because user callables accept the public
|
|
2790
|
+
# Image type, but `self` is an instance of the internal _Image type.
|
|
2791
|
+
self_ = synchronizer._translate_out(self)
|
|
2792
|
+
res = func(self_, *args, **kwargs) # type: ignore[reportUnknownReturnType]
|
|
2793
|
+
return typing.cast(_Image, synchronizer._translate_in(res))
|
|
2789
2794
|
|
|
2790
2795
|
# Live handle methods
|
|
2791
2796
|
|
|
@@ -14,7 +14,6 @@ from modal._traceback import suppress_tb_frame
|
|
|
14
14
|
from ._load_context import LoadContext
|
|
15
15
|
from ._resolver import Resolver
|
|
16
16
|
from ._utils.async_utils import TaskContext, aclosing
|
|
17
|
-
from ._utils.deprecation import deprecation_warning
|
|
18
17
|
from .client import _Client
|
|
19
18
|
from .config import config, logger
|
|
20
19
|
from .exception import ExecutionError, InvalidError
|
|
@@ -196,23 +195,6 @@ class _Object:
|
|
|
196
195
|
f"{object_type} has not been hydrated with the metadata it needs to run on Modal{reason}."
|
|
197
196
|
)
|
|
198
197
|
|
|
199
|
-
def clone(self) -> Self:
|
|
200
|
-
"""mdmd:hidden Clone a given hydrated object.
|
|
201
|
-
|
|
202
|
-
Note: This is not intended to be public API and has no public use. It will be removed in a future release.
|
|
203
|
-
"""
|
|
204
|
-
object_class = self.__class__.__name__.strip("_")
|
|
205
|
-
deprecation_warning(
|
|
206
|
-
(2025, 6, 30),
|
|
207
|
-
f"{object_class}.clone() is not intended to be public API and will be removed in a future release.",
|
|
208
|
-
)
|
|
209
|
-
|
|
210
|
-
# Object to clone must already be hydrated, otherwise from_loader is more suitable.
|
|
211
|
-
self._validate_is_hydrated()
|
|
212
|
-
obj = type(self).__new__(type(self))
|
|
213
|
-
obj._initialize_from_other(self)
|
|
214
|
-
return obj
|
|
215
|
-
|
|
216
198
|
@classmethod
|
|
217
199
|
def _from_loader(
|
|
218
200
|
cls,
|
|
@@ -153,7 +153,10 @@ class CustomProtoStatusDetailsCodec(StatusDetailsCodecBase):
|
|
|
153
153
|
if details is not None:
|
|
154
154
|
for detail in details:
|
|
155
155
|
detail_container = details_proto.details.add()
|
|
156
|
-
|
|
156
|
+
if detail.DESCRIPTOR.full_name.startswith("modal."):
|
|
157
|
+
detail_container.Pack(detail, type_url_prefix="type.modal.com/")
|
|
158
|
+
else:
|
|
159
|
+
detail_container.Pack(detail)
|
|
157
160
|
return details_proto.SerializeToString()
|
|
158
161
|
|
|
159
162
|
def decode(
|
|
@@ -35,7 +35,7 @@ class _Client:
|
|
|
35
35
|
server_url: str,
|
|
36
36
|
client_type: int,
|
|
37
37
|
credentials: typing.Optional[tuple[str, str]],
|
|
38
|
-
version: str = "1.4.4.
|
|
38
|
+
version: str = "1.4.4.dev17",
|
|
39
39
|
):
|
|
40
40
|
"""mdmd:hidden
|
|
41
41
|
The Modal client object is not intended to be instantiated directly by users.
|
|
@@ -205,7 +205,7 @@ class Client:
|
|
|
205
205
|
server_url: str,
|
|
206
206
|
client_type: int,
|
|
207
207
|
credentials: typing.Optional[tuple[str, str]],
|
|
208
|
-
version: str = "1.4.4.
|
|
208
|
+
version: str = "1.4.4.dev17",
|
|
209
209
|
):
|
|
210
210
|
"""mdmd:hidden
|
|
211
211
|
The Modal client object is not intended to be instantiated directly by users.
|
|
@@ -641,6 +641,7 @@ More information on class parameterization can be found here: https://modal.com/
|
|
|
641
641
|
app_name: str,
|
|
642
642
|
name: str,
|
|
643
643
|
*,
|
|
644
|
+
version: int | None = None,
|
|
644
645
|
environment_name: str | None = None,
|
|
645
646
|
client: "_Client | None" = None,
|
|
646
647
|
) -> "_Cls":
|
|
@@ -663,6 +664,12 @@ More information on class parameterization can be found here: https://modal.com/
|
|
|
663
664
|
```python
|
|
664
665
|
Model = modal.Cls.from_name("other-app", "Model")
|
|
665
666
|
```
|
|
667
|
+
|
|
668
|
+
The `version` parameter constructs a version-pinned Cls:
|
|
669
|
+
|
|
670
|
+
```python
|
|
671
|
+
Modelv3 = modal.Cls.from_name("other-app", "Model", version=3)
|
|
672
|
+
```
|
|
666
673
|
"""
|
|
667
674
|
|
|
668
675
|
async def _load_remote(
|
|
@@ -705,6 +712,7 @@ More information on class parameterization can be found here: https://modal.com/
|
|
|
705
712
|
app_name,
|
|
706
713
|
class_service_name,
|
|
707
714
|
load_context_overrides=load_context_overrides,
|
|
715
|
+
version=version,
|
|
708
716
|
)
|
|
709
717
|
cls._name = name
|
|
710
718
|
return cls
|
|
@@ -291,6 +291,7 @@ class _Cls(modal._object._Object):
|
|
|
291
291
|
app_name: str,
|
|
292
292
|
name: str,
|
|
293
293
|
*,
|
|
294
|
+
version: typing.Optional[int] = None,
|
|
294
295
|
environment_name: typing.Optional[str] = None,
|
|
295
296
|
client: typing.Optional[modal.client._Client] = None,
|
|
296
297
|
) -> _Cls:
|
|
@@ -313,6 +314,12 @@ class _Cls(modal._object._Object):
|
|
|
313
314
|
```python
|
|
314
315
|
Model = modal.Cls.from_name("other-app", "Model")
|
|
315
316
|
```
|
|
317
|
+
|
|
318
|
+
The `version` parameter constructs a version-pinned Cls:
|
|
319
|
+
|
|
320
|
+
```python
|
|
321
|
+
Modelv3 = modal.Cls.from_name("other-app", "Model", version=3)
|
|
322
|
+
```
|
|
316
323
|
"""
|
|
317
324
|
...
|
|
318
325
|
|
|
@@ -498,6 +505,7 @@ class Cls(modal.object.Object):
|
|
|
498
505
|
app_name: str,
|
|
499
506
|
name: str,
|
|
500
507
|
*,
|
|
508
|
+
version: typing.Optional[int] = None,
|
|
501
509
|
environment_name: typing.Optional[str] = None,
|
|
502
510
|
client: typing.Optional[modal.client.Client] = None,
|
|
503
511
|
) -> Cls:
|
|
@@ -520,6 +528,12 @@ class Cls(modal.object.Object):
|
|
|
520
528
|
```python
|
|
521
529
|
Model = modal.Cls.from_name("other-app", "Model")
|
|
522
530
|
```
|
|
531
|
+
|
|
532
|
+
The `version` parameter constructs a version-pinned Cls:
|
|
533
|
+
|
|
534
|
+
```python
|
|
535
|
+
Modelv3 = modal.Cls.from_name("other-app", "Model", version=3)
|
|
536
|
+
```
|
|
523
537
|
"""
|
|
524
538
|
...
|
|
525
539
|
|
|
@@ -23,7 +23,6 @@ from ._object import (
|
|
|
23
23
|
from ._resolver import Resolver
|
|
24
24
|
from ._serialization import deserialize, serialize
|
|
25
25
|
from ._utils.async_utils import TaskContext, synchronize_api
|
|
26
|
-
from ._utils.deprecation import deprecation_warning
|
|
27
26
|
from ._utils.name_utils import check_object_name
|
|
28
27
|
from ._utils.time_utils import as_timestamp, timestamp_to_localized_dt
|
|
29
28
|
from .client import _Client
|
|
@@ -482,26 +481,6 @@ class _Dict(_Object, type_prefix="di"):
|
|
|
482
481
|
load_context_overrides=LoadContext(client=client),
|
|
483
482
|
)
|
|
484
483
|
|
|
485
|
-
@staticmethod
|
|
486
|
-
async def delete(
|
|
487
|
-
name: str,
|
|
488
|
-
*,
|
|
489
|
-
client: _Client | None = None,
|
|
490
|
-
environment_name: str | None = None,
|
|
491
|
-
):
|
|
492
|
-
"""mdmd:hidden
|
|
493
|
-
Delete a named Dict object.
|
|
494
|
-
|
|
495
|
-
Warning: This deletes an *entire Dict*, not just a specific key.
|
|
496
|
-
Deletion is irreversible and will affect any Apps currently using the Dict.
|
|
497
|
-
|
|
498
|
-
DEPRECATED: This method is deprecated; we recommend using `modal.Dict.objects.delete` instead.
|
|
499
|
-
"""
|
|
500
|
-
deprecation_warning(
|
|
501
|
-
(2025, 8, 6), "`modal.Dict.delete` is deprecated; we recommend using `modal.Dict.objects.delete` instead."
|
|
502
|
-
)
|
|
503
|
-
await _Dict.objects.delete(name, environment_name=environment_name, client=client)
|
|
504
|
-
|
|
505
484
|
@live_method
|
|
506
485
|
async def info(self) -> DictInfo:
|
|
507
486
|
"""Return information about the Dict object."""
|
|
@@ -576,23 +576,6 @@ class _Dict(modal._object._Object):
|
|
|
576
576
|
"""
|
|
577
577
|
...
|
|
578
578
|
|
|
579
|
-
@staticmethod
|
|
580
|
-
async def delete(
|
|
581
|
-
name: str,
|
|
582
|
-
*,
|
|
583
|
-
client: typing.Optional[modal.client._Client] = None,
|
|
584
|
-
environment_name: typing.Optional[str] = None,
|
|
585
|
-
):
|
|
586
|
-
"""mdmd:hidden
|
|
587
|
-
Delete a named Dict object.
|
|
588
|
-
|
|
589
|
-
Warning: This deletes an *entire Dict*, not just a specific key.
|
|
590
|
-
Deletion is irreversible and will affect any Apps currently using the Dict.
|
|
591
|
-
|
|
592
|
-
DEPRECATED: This method is deprecated; we recommend using `modal.Dict.objects.delete` instead.
|
|
593
|
-
"""
|
|
594
|
-
...
|
|
595
|
-
|
|
596
579
|
async def info(self) -> DictInfo:
|
|
597
580
|
"""Return information about the Dict object."""
|
|
598
581
|
...
|
|
@@ -877,45 +860,6 @@ class Dict(modal.object.Object):
|
|
|
877
860
|
"""
|
|
878
861
|
...
|
|
879
862
|
|
|
880
|
-
class __delete_spec(typing_extensions.Protocol):
|
|
881
|
-
def __call__(
|
|
882
|
-
self,
|
|
883
|
-
/,
|
|
884
|
-
name: str,
|
|
885
|
-
*,
|
|
886
|
-
client: typing.Optional[modal.client.Client] = None,
|
|
887
|
-
environment_name: typing.Optional[str] = None,
|
|
888
|
-
):
|
|
889
|
-
"""mdmd:hidden
|
|
890
|
-
Delete a named Dict object.
|
|
891
|
-
|
|
892
|
-
Warning: This deletes an *entire Dict*, not just a specific key.
|
|
893
|
-
Deletion is irreversible and will affect any Apps currently using the Dict.
|
|
894
|
-
|
|
895
|
-
DEPRECATED: This method is deprecated; we recommend using `modal.Dict.objects.delete` instead.
|
|
896
|
-
"""
|
|
897
|
-
...
|
|
898
|
-
|
|
899
|
-
async def aio(
|
|
900
|
-
self,
|
|
901
|
-
/,
|
|
902
|
-
name: str,
|
|
903
|
-
*,
|
|
904
|
-
client: typing.Optional[modal.client.Client] = None,
|
|
905
|
-
environment_name: typing.Optional[str] = None,
|
|
906
|
-
):
|
|
907
|
-
"""mdmd:hidden
|
|
908
|
-
Delete a named Dict object.
|
|
909
|
-
|
|
910
|
-
Warning: This deletes an *entire Dict*, not just a specific key.
|
|
911
|
-
Deletion is irreversible and will affect any Apps currently using the Dict.
|
|
912
|
-
|
|
913
|
-
DEPRECATED: This method is deprecated; we recommend using `modal.Dict.objects.delete` instead.
|
|
914
|
-
"""
|
|
915
|
-
...
|
|
916
|
-
|
|
917
|
-
delete: typing.ClassVar[__delete_spec]
|
|
918
|
-
|
|
919
863
|
class __info_spec(typing_extensions.Protocol):
|
|
920
864
|
def __call__(self, /) -> DictInfo:
|
|
921
865
|
"""Return information about the Dict object."""
|
|
@@ -205,13 +205,21 @@ class Function(
|
|
|
205
205
|
update_autoscaler: __update_autoscaler_spec
|
|
206
206
|
|
|
207
207
|
@classmethod
|
|
208
|
-
def _from_name(
|
|
208
|
+
def _from_name(
|
|
209
|
+
cls,
|
|
210
|
+
app_name: str,
|
|
211
|
+
name: str,
|
|
212
|
+
*,
|
|
213
|
+
version: typing.Optional[int] = None,
|
|
214
|
+
load_context_overrides: modal._load_context.LoadContext,
|
|
215
|
+
): ...
|
|
209
216
|
@classmethod
|
|
210
217
|
def from_name(
|
|
211
218
|
cls: type[Function],
|
|
212
219
|
app_name: str,
|
|
213
220
|
name: str,
|
|
214
221
|
*,
|
|
222
|
+
version: typing.Optional[int] = None,
|
|
215
223
|
environment_name: typing.Optional[str] = None,
|
|
216
224
|
client: typing.Optional[modal.client.Client] = None,
|
|
217
225
|
) -> Function:
|
|
@@ -234,6 +242,12 @@ class Function(
|
|
|
234
242
|
```python
|
|
235
243
|
f = modal.Function.from_name("other-app", "function")
|
|
236
244
|
```
|
|
245
|
+
|
|
246
|
+
The `version` parameter allows you to invoke a version-pinned function:
|
|
247
|
+
|
|
248
|
+
```python
|
|
249
|
+
f_v3 = modal.Function.from_name("other-app", "function", version=3)
|
|
250
|
+
```
|
|
237
251
|
"""
|
|
238
252
|
...
|
|
239
253
|
|
|
@@ -85,12 +85,6 @@ class Object:
|
|
|
85
85
|
def _hydrate_metadata(self, metadata: typing.Optional[google.protobuf.message.Message]): ...
|
|
86
86
|
def _get_metadata(self) -> typing.Optional[google.protobuf.message.Message]: ...
|
|
87
87
|
def _validate_is_hydrated(self): ...
|
|
88
|
-
def clone(self) -> typing_extensions.Self:
|
|
89
|
-
"""mdmd:hidden Clone a given hydrated object.
|
|
90
|
-
|
|
91
|
-
Note: This is not intended to be public API and has no public use. It will be removed in a future release.
|
|
92
|
-
"""
|
|
93
|
-
...
|
|
94
88
|
|
|
95
89
|
class ___from_loader_spec(typing_extensions.Protocol):
|
|
96
90
|
def __call__(
|
|
@@ -26,7 +26,6 @@ from ._object import (
|
|
|
26
26
|
from ._resolver import Resolver
|
|
27
27
|
from ._serialization import deserialize, serialize
|
|
28
28
|
from ._utils.async_utils import TaskContext, synchronize_api, warn_if_generator_is_not_consumed
|
|
29
|
-
from ._utils.deprecation import deprecation_warning
|
|
30
29
|
from ._utils.grpc_utils import Retry
|
|
31
30
|
from ._utils.name_utils import check_object_name
|
|
32
31
|
from ._utils.time_utils import as_timestamp, timestamp_to_localized_dt
|
|
@@ -472,23 +471,6 @@ class _Queue(_Object, type_prefix="qu"):
|
|
|
472
471
|
load_context_overrides=LoadContext(client=client),
|
|
473
472
|
)
|
|
474
473
|
|
|
475
|
-
@staticmethod
|
|
476
|
-
async def delete(name: str, *, client: _Client | None = None, environment_name: str | None = None):
|
|
477
|
-
"""mdmd:hidden
|
|
478
|
-
Delete a named Queue.
|
|
479
|
-
|
|
480
|
-
Warning: This deletes an *entire Queue*, not just a specific entry or partition.
|
|
481
|
-
Deletion is irreversible and will affect any Apps currently using the Queue.
|
|
482
|
-
|
|
483
|
-
DEPRECATED: This method is deprecated; we recommend using `modal.Queue.objects.delete` instead.
|
|
484
|
-
|
|
485
|
-
"""
|
|
486
|
-
deprecation_warning(
|
|
487
|
-
(2025, 8, 6),
|
|
488
|
-
"`modal.Queue.delete` is deprecated; we recommend using `modal.Queue.objects.delete` instead.",
|
|
489
|
-
)
|
|
490
|
-
await _Queue.objects.delete(name, environment_name=environment_name, client=client)
|
|
491
|
-
|
|
492
474
|
@live_method
|
|
493
475
|
async def info(self) -> QueueInfo:
|
|
494
476
|
"""Return information about the Queue object."""
|
|
@@ -588,23 +588,6 @@ class _Queue(modal._object._Object):
|
|
|
588
588
|
"""
|
|
589
589
|
...
|
|
590
590
|
|
|
591
|
-
@staticmethod
|
|
592
|
-
async def delete(
|
|
593
|
-
name: str,
|
|
594
|
-
*,
|
|
595
|
-
client: typing.Optional[modal.client._Client] = None,
|
|
596
|
-
environment_name: typing.Optional[str] = None,
|
|
597
|
-
):
|
|
598
|
-
"""mdmd:hidden
|
|
599
|
-
Delete a named Queue.
|
|
600
|
-
|
|
601
|
-
Warning: This deletes an *entire Queue*, not just a specific entry or partition.
|
|
602
|
-
Deletion is irreversible and will affect any Apps currently using the Queue.
|
|
603
|
-
|
|
604
|
-
DEPRECATED: This method is deprecated; we recommend using `modal.Queue.objects.delete` instead.
|
|
605
|
-
"""
|
|
606
|
-
...
|
|
607
|
-
|
|
608
591
|
async def info(self) -> QueueInfo:
|
|
609
592
|
"""Return information about the Queue object."""
|
|
610
593
|
...
|
|
@@ -975,45 +958,6 @@ class Queue(modal.object.Object):
|
|
|
975
958
|
"""
|
|
976
959
|
...
|
|
977
960
|
|
|
978
|
-
class __delete_spec(typing_extensions.Protocol):
|
|
979
|
-
def __call__(
|
|
980
|
-
self,
|
|
981
|
-
/,
|
|
982
|
-
name: str,
|
|
983
|
-
*,
|
|
984
|
-
client: typing.Optional[modal.client.Client] = None,
|
|
985
|
-
environment_name: typing.Optional[str] = None,
|
|
986
|
-
):
|
|
987
|
-
"""mdmd:hidden
|
|
988
|
-
Delete a named Queue.
|
|
989
|
-
|
|
990
|
-
Warning: This deletes an *entire Queue*, not just a specific entry or partition.
|
|
991
|
-
Deletion is irreversible and will affect any Apps currently using the Queue.
|
|
992
|
-
|
|
993
|
-
DEPRECATED: This method is deprecated; we recommend using `modal.Queue.objects.delete` instead.
|
|
994
|
-
"""
|
|
995
|
-
...
|
|
996
|
-
|
|
997
|
-
async def aio(
|
|
998
|
-
self,
|
|
999
|
-
/,
|
|
1000
|
-
name: str,
|
|
1001
|
-
*,
|
|
1002
|
-
client: typing.Optional[modal.client.Client] = None,
|
|
1003
|
-
environment_name: typing.Optional[str] = None,
|
|
1004
|
-
):
|
|
1005
|
-
"""mdmd:hidden
|
|
1006
|
-
Delete a named Queue.
|
|
1007
|
-
|
|
1008
|
-
Warning: This deletes an *entire Queue*, not just a specific entry or partition.
|
|
1009
|
-
Deletion is irreversible and will affect any Apps currently using the Queue.
|
|
1010
|
-
|
|
1011
|
-
DEPRECATED: This method is deprecated; we recommend using `modal.Queue.objects.delete` instead.
|
|
1012
|
-
"""
|
|
1013
|
-
...
|
|
1014
|
-
|
|
1015
|
-
delete: typing.ClassVar[__delete_spec]
|
|
1016
|
-
|
|
1017
961
|
class __info_spec(typing_extensions.Protocol):
|
|
1018
962
|
def __call__(self, /) -> QueueInfo:
|
|
1019
963
|
"""Return information about the Queue object."""
|
|
@@ -305,6 +305,7 @@ class _Sandbox(_Object, type_prefix="sb"):
|
|
|
305
305
|
network_file_systems: dict[str | os.PathLike, _NetworkFileSystem] = {},
|
|
306
306
|
block_network: bool = False,
|
|
307
307
|
outbound_cidr_allowlist: Sequence[str] | None = None,
|
|
308
|
+
outbound_domain_allowlist: Sequence[str] | None = None,
|
|
308
309
|
inbound_cidr_allowlist: Sequence[str] | None = None,
|
|
309
310
|
volumes: dict[str | os.PathLike, _Volume | _CloudBucketMount] = {},
|
|
310
311
|
pty: bool = False,
|
|
@@ -385,21 +386,24 @@ class _Sandbox(_Object, type_prefix="sb"):
|
|
|
385
386
|
if block_network:
|
|
386
387
|
if outbound_cidr_allowlist is not None:
|
|
387
388
|
raise InvalidError("`outbound_cidr_allowlist` cannot be used when `block_network` is enabled")
|
|
389
|
+
if outbound_domain_allowlist is not None:
|
|
390
|
+
raise InvalidError("`outbound_domain_allowlist` cannot be used when `block_network` is enabled")
|
|
388
391
|
if inbound_cidr_allowlist is not None:
|
|
389
392
|
raise InvalidError("`inbound_cidr_allowlist` cannot be used when `block_network` is enabled")
|
|
390
393
|
network_access = api_pb2.NetworkAccess(
|
|
391
394
|
network_access_type=api_pb2.NetworkAccess.NetworkAccessType.BLOCKED,
|
|
392
395
|
)
|
|
393
|
-
elif outbound_cidr_allowlist is None:
|
|
394
|
-
# If the allowlist is empty, we allow all network access.
|
|
395
|
-
network_access = api_pb2.NetworkAccess(
|
|
396
|
-
network_access_type=api_pb2.NetworkAccess.NetworkAccessType.OPEN,
|
|
397
|
-
)
|
|
398
396
|
else:
|
|
399
|
-
|
|
400
|
-
|
|
401
|
-
|
|
402
|
-
|
|
397
|
+
if outbound_domain_allowlist is None and outbound_cidr_allowlist is None:
|
|
398
|
+
network_access = api_pb2.NetworkAccess(
|
|
399
|
+
network_access_type=api_pb2.NetworkAccess.NetworkAccessType.OPEN,
|
|
400
|
+
)
|
|
401
|
+
else:
|
|
402
|
+
network_access = api_pb2.NetworkAccess(
|
|
403
|
+
network_access_type=api_pb2.NetworkAccess.NetworkAccessType.ALLOWLIST,
|
|
404
|
+
allowed_cidrs=list(outbound_cidr_allowlist or []),
|
|
405
|
+
allowed_domains=list(outbound_domain_allowlist or []),
|
|
406
|
+
)
|
|
403
407
|
|
|
404
408
|
ephemeral_disk = None # Ephemeral disk requests not supported on Sandboxes.
|
|
405
409
|
definition = api_pb2.Sandbox(
|
|
@@ -466,6 +470,7 @@ class _Sandbox(_Object, type_prefix="sb"):
|
|
|
466
470
|
memory: int | tuple[int, int] | None = None,
|
|
467
471
|
block_network: bool = False,
|
|
468
472
|
outbound_cidr_allowlist: Sequence[str] | None = None,
|
|
473
|
+
outbound_domain_allowlist: Sequence[str] | None = None,
|
|
469
474
|
inbound_cidr_allowlist: Sequence[str] | None = None,
|
|
470
475
|
volumes: dict[str | os.PathLike, _Volume | _CloudBucketMount] = {},
|
|
471
476
|
pty: bool = False,
|
|
@@ -513,6 +518,8 @@ class _Sandbox(_Object, type_prefix="sb"):
|
|
|
513
518
|
additionally specify a hard limit in MiB.
|
|
514
519
|
block_network: Whether to block network access.
|
|
515
520
|
outbound_cidr_allowlist: List of CIDRs the sandbox is allowed to access. If None, all CIDRs are allowed.
|
|
521
|
+
outbound_domain_allowlist: List of domain names the sandbox is allowed to access. Supports
|
|
522
|
+
wildcard prefixes (``*.``).
|
|
516
523
|
inbound_cidr_allowlist:
|
|
517
524
|
List of CIDRs allowed to connect inbound to the sandbox (tunnels and connection tokens). If None,
|
|
518
525
|
all CIDRs are allowed.
|
|
@@ -596,6 +603,7 @@ class _Sandbox(_Object, type_prefix="sb"):
|
|
|
596
603
|
memory=memory,
|
|
597
604
|
block_network=block_network,
|
|
598
605
|
outbound_cidr_allowlist=outbound_cidr_allowlist,
|
|
606
|
+
outbound_domain_allowlist=outbound_domain_allowlist,
|
|
599
607
|
inbound_cidr_allowlist=inbound_cidr_allowlist,
|
|
600
608
|
volumes=volumes,
|
|
601
609
|
pty=pty,
|
|
@@ -635,6 +643,7 @@ class _Sandbox(_Object, type_prefix="sb"):
|
|
|
635
643
|
memory: int | tuple[int, int] | None = None,
|
|
636
644
|
block_network: bool = False,
|
|
637
645
|
outbound_cidr_allowlist: Sequence[str] | None = None,
|
|
646
|
+
outbound_domain_allowlist: Sequence[str] | None = None,
|
|
638
647
|
inbound_cidr_allowlist: Sequence[str] | None = None,
|
|
639
648
|
volumes: dict[str | os.PathLike, _Volume | _CloudBucketMount] = {},
|
|
640
649
|
pty: bool = False,
|
|
@@ -688,6 +697,7 @@ class _Sandbox(_Object, type_prefix="sb"):
|
|
|
688
697
|
network_file_systems=network_file_systems,
|
|
689
698
|
block_network=block_network,
|
|
690
699
|
outbound_cidr_allowlist=outbound_cidr_allowlist,
|
|
700
|
+
outbound_domain_allowlist=outbound_domain_allowlist,
|
|
691
701
|
inbound_cidr_allowlist=inbound_cidr_allowlist,
|
|
692
702
|
volumes=volumes,
|
|
693
703
|
pty=pty,
|
|
@@ -187,6 +187,7 @@ class _Sandbox(modal._object._Object):
|
|
|
187
187
|
network_file_systems: dict[typing.Union[str, os.PathLike], modal.network_file_system._NetworkFileSystem] = {},
|
|
188
188
|
block_network: bool = False,
|
|
189
189
|
outbound_cidr_allowlist: typing.Optional[collections.abc.Sequence[str]] = None,
|
|
190
|
+
outbound_domain_allowlist: typing.Optional[collections.abc.Sequence[str]] = None,
|
|
190
191
|
inbound_cidr_allowlist: typing.Optional[collections.abc.Sequence[str]] = None,
|
|
191
192
|
volumes: dict[
|
|
192
193
|
typing.Union[str, os.PathLike],
|
|
@@ -229,6 +230,7 @@ class _Sandbox(modal._object._Object):
|
|
|
229
230
|
memory: typing.Union[int, tuple[int, int], None] = None,
|
|
230
231
|
block_network: bool = False,
|
|
231
232
|
outbound_cidr_allowlist: typing.Optional[collections.abc.Sequence[str]] = None,
|
|
233
|
+
outbound_domain_allowlist: typing.Optional[collections.abc.Sequence[str]] = None,
|
|
232
234
|
inbound_cidr_allowlist: typing.Optional[collections.abc.Sequence[str]] = None,
|
|
233
235
|
volumes: dict[
|
|
234
236
|
typing.Union[str, os.PathLike],
|
|
@@ -278,6 +280,8 @@ class _Sandbox(modal._object._Object):
|
|
|
278
280
|
additionally specify a hard limit in MiB.
|
|
279
281
|
block_network: Whether to block network access.
|
|
280
282
|
outbound_cidr_allowlist: List of CIDRs the sandbox is allowed to access. If None, all CIDRs are allowed.
|
|
283
|
+
outbound_domain_allowlist: List of domain names the sandbox is allowed to access. Supports
|
|
284
|
+
wildcard prefixes (``*.``).
|
|
281
285
|
inbound_cidr_allowlist:
|
|
282
286
|
List of CIDRs allowed to connect inbound to the sandbox (tunnels and connection tokens). If None,
|
|
283
287
|
all CIDRs are allowed.
|
|
@@ -339,6 +343,7 @@ class _Sandbox(modal._object._Object):
|
|
|
339
343
|
memory: typing.Union[int, tuple[int, int], None] = None,
|
|
340
344
|
block_network: bool = False,
|
|
341
345
|
outbound_cidr_allowlist: typing.Optional[collections.abc.Sequence[str]] = None,
|
|
346
|
+
outbound_domain_allowlist: typing.Optional[collections.abc.Sequence[str]] = None,
|
|
342
347
|
inbound_cidr_allowlist: typing.Optional[collections.abc.Sequence[str]] = None,
|
|
343
348
|
volumes: dict[
|
|
344
349
|
typing.Union[str, os.PathLike],
|
|
@@ -1199,6 +1204,7 @@ class Sandbox(modal.object.Object):
|
|
|
1199
1204
|
network_file_systems: dict[typing.Union[str, os.PathLike], modal.network_file_system.NetworkFileSystem] = {},
|
|
1200
1205
|
block_network: bool = False,
|
|
1201
1206
|
outbound_cidr_allowlist: typing.Optional[collections.abc.Sequence[str]] = None,
|
|
1207
|
+
outbound_domain_allowlist: typing.Optional[collections.abc.Sequence[str]] = None,
|
|
1202
1208
|
inbound_cidr_allowlist: typing.Optional[collections.abc.Sequence[str]] = None,
|
|
1203
1209
|
volumes: dict[
|
|
1204
1210
|
typing.Union[str, os.PathLike], typing.Union[modal.volume.Volume, modal.cloud_bucket_mount.CloudBucketMount]
|
|
@@ -1244,6 +1250,7 @@ class Sandbox(modal.object.Object):
|
|
|
1244
1250
|
memory: typing.Union[int, tuple[int, int], None] = None,
|
|
1245
1251
|
block_network: bool = False,
|
|
1246
1252
|
outbound_cidr_allowlist: typing.Optional[collections.abc.Sequence[str]] = None,
|
|
1253
|
+
outbound_domain_allowlist: typing.Optional[collections.abc.Sequence[str]] = None,
|
|
1247
1254
|
inbound_cidr_allowlist: typing.Optional[collections.abc.Sequence[str]] = None,
|
|
1248
1255
|
volumes: dict[
|
|
1249
1256
|
typing.Union[str, os.PathLike],
|
|
@@ -1293,6 +1300,8 @@ class Sandbox(modal.object.Object):
|
|
|
1293
1300
|
additionally specify a hard limit in MiB.
|
|
1294
1301
|
block_network: Whether to block network access.
|
|
1295
1302
|
outbound_cidr_allowlist: List of CIDRs the sandbox is allowed to access. If None, all CIDRs are allowed.
|
|
1303
|
+
outbound_domain_allowlist: List of domain names the sandbox is allowed to access. Supports
|
|
1304
|
+
wildcard prefixes (``*.``).
|
|
1296
1305
|
inbound_cidr_allowlist:
|
|
1297
1306
|
List of CIDRs allowed to connect inbound to the sandbox (tunnels and connection tokens). If None,
|
|
1298
1307
|
all CIDRs are allowed.
|
|
@@ -1356,6 +1365,7 @@ class Sandbox(modal.object.Object):
|
|
|
1356
1365
|
memory: typing.Union[int, tuple[int, int], None] = None,
|
|
1357
1366
|
block_network: bool = False,
|
|
1358
1367
|
outbound_cidr_allowlist: typing.Optional[collections.abc.Sequence[str]] = None,
|
|
1368
|
+
outbound_domain_allowlist: typing.Optional[collections.abc.Sequence[str]] = None,
|
|
1359
1369
|
inbound_cidr_allowlist: typing.Optional[collections.abc.Sequence[str]] = None,
|
|
1360
1370
|
volumes: dict[
|
|
1361
1371
|
typing.Union[str, os.PathLike],
|
|
@@ -1405,6 +1415,8 @@ class Sandbox(modal.object.Object):
|
|
|
1405
1415
|
additionally specify a hard limit in MiB.
|
|
1406
1416
|
block_network: Whether to block network access.
|
|
1407
1417
|
outbound_cidr_allowlist: List of CIDRs the sandbox is allowed to access. If None, all CIDRs are allowed.
|
|
1418
|
+
outbound_domain_allowlist: List of domain names the sandbox is allowed to access. Supports
|
|
1419
|
+
wildcard prefixes (``*.``).
|
|
1408
1420
|
inbound_cidr_allowlist:
|
|
1409
1421
|
List of CIDRs allowed to connect inbound to the sandbox (tunnels and connection tokens). If None,
|
|
1410
1422
|
all CIDRs are allowed.
|
|
@@ -1472,6 +1484,7 @@ class Sandbox(modal.object.Object):
|
|
|
1472
1484
|
memory: typing.Union[int, tuple[int, int], None] = None,
|
|
1473
1485
|
block_network: bool = False,
|
|
1474
1486
|
outbound_cidr_allowlist: typing.Optional[collections.abc.Sequence[str]] = None,
|
|
1487
|
+
outbound_domain_allowlist: typing.Optional[collections.abc.Sequence[str]] = None,
|
|
1475
1488
|
inbound_cidr_allowlist: typing.Optional[collections.abc.Sequence[str]] = None,
|
|
1476
1489
|
volumes: dict[
|
|
1477
1490
|
typing.Union[str, os.PathLike],
|
|
@@ -1523,6 +1536,7 @@ class Sandbox(modal.object.Object):
|
|
|
1523
1536
|
memory: typing.Union[int, tuple[int, int], None] = None,
|
|
1524
1537
|
block_network: bool = False,
|
|
1525
1538
|
outbound_cidr_allowlist: typing.Optional[collections.abc.Sequence[str]] = None,
|
|
1539
|
+
outbound_domain_allowlist: typing.Optional[collections.abc.Sequence[str]] = None,
|
|
1526
1540
|
inbound_cidr_allowlist: typing.Optional[collections.abc.Sequence[str]] = None,
|
|
1527
1541
|
volumes: dict[
|
|
1528
1542
|
typing.Union[str, os.PathLike],
|