modal 1.5.4.dev4__tar.gz → 1.5.4.dev6__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.5.4.dev4 → modal-1.5.4.dev6}/PKG-INFO +1 -1
- {modal-1.5.4.dev4 → modal-1.5.4.dev6}/modal/client.pyi +2 -2
- {modal-1.5.4.dev4 → modal-1.5.4.dev6}/modal/functions.pyi +6 -6
- {modal-1.5.4.dev4 → modal-1.5.4.dev6}/modal/sandbox.py +17 -19
- {modal-1.5.4.dev4 → modal-1.5.4.dev6}/modal/sandbox.pyi +9 -12
- {modal-1.5.4.dev4 → modal-1.5.4.dev6}/modal.egg-info/PKG-INFO +1 -1
- {modal-1.5.4.dev4 → modal-1.5.4.dev6}/modal_proto/api_grpc.py +16 -0
- {modal-1.5.4.dev4 → modal-1.5.4.dev6}/modal_proto/api_pb2.py +746 -746
- {modal-1.5.4.dev4 → modal-1.5.4.dev6}/modal_proto/api_pb2.pyi +16 -8
- {modal-1.5.4.dev4 → modal-1.5.4.dev6}/modal_proto/api_pb2_grpc.py +33 -0
- {modal-1.5.4.dev4 → modal-1.5.4.dev6}/modal_proto/api_pb2_grpc.pyi +10 -0
- {modal-1.5.4.dev4 → modal-1.5.4.dev6}/modal_proto/modal_api_grpc.py +1 -0
- {modal-1.5.4.dev4 → modal-1.5.4.dev6}/modal_version/__init__.py +1 -1
- {modal-1.5.4.dev4 → modal-1.5.4.dev6}/LICENSE +0 -0
- {modal-1.5.4.dev4 → modal-1.5.4.dev6}/README.md +0 -0
- {modal-1.5.4.dev4 → modal-1.5.4.dev6}/modal/__init__.py +0 -0
- {modal-1.5.4.dev4 → modal-1.5.4.dev6}/modal/__main__.py +0 -0
- {modal-1.5.4.dev4 → modal-1.5.4.dev6}/modal/_billing.py +0 -0
- {modal-1.5.4.dev4 → modal-1.5.4.dev6}/modal/_clustered_functions.py +0 -0
- {modal-1.5.4.dev4 → modal-1.5.4.dev6}/modal/_clustered_functions.pyi +0 -0
- {modal-1.5.4.dev4 → modal-1.5.4.dev6}/modal/_container_entrypoint.py +0 -0
- {modal-1.5.4.dev4 → modal-1.5.4.dev6}/modal/_environments.py +0 -0
- {modal-1.5.4.dev4 → modal-1.5.4.dev6}/modal/_function_variants.py +0 -0
- {modal-1.5.4.dev4 → modal-1.5.4.dev6}/modal/_functions.py +0 -0
- {modal-1.5.4.dev4 → modal-1.5.4.dev6}/modal/_grpc_client.py +0 -0
- {modal-1.5.4.dev4 → modal-1.5.4.dev6}/modal/_image.py +0 -0
- {modal-1.5.4.dev4 → modal-1.5.4.dev6}/modal/_ipython.py +0 -0
- {modal-1.5.4.dev4 → modal-1.5.4.dev6}/modal/_load_context.py +0 -0
- {modal-1.5.4.dev4 → modal-1.5.4.dev6}/modal/_location.py +0 -0
- {modal-1.5.4.dev4 → modal-1.5.4.dev6}/modal/_logs.py +0 -0
- {modal-1.5.4.dev4 → modal-1.5.4.dev6}/modal/_logs_manager.py +0 -0
- {modal-1.5.4.dev4 → modal-1.5.4.dev6}/modal/_logs_manager.pyi +0 -0
- {modal-1.5.4.dev4 → modal-1.5.4.dev6}/modal/_object.py +0 -0
- {modal-1.5.4.dev4 → modal-1.5.4.dev6}/modal/_output/__init__.py +0 -0
- {modal-1.5.4.dev4 → modal-1.5.4.dev6}/modal/_output/manager.py +0 -0
- {modal-1.5.4.dev4 → modal-1.5.4.dev6}/modal/_output/pty.py +0 -0
- {modal-1.5.4.dev4 → modal-1.5.4.dev6}/modal/_output/rich.py +0 -0
- {modal-1.5.4.dev4 → modal-1.5.4.dev6}/modal/_output/status.py +0 -0
- {modal-1.5.4.dev4 → modal-1.5.4.dev6}/modal/_partial_function.py +0 -0
- {modal-1.5.4.dev4 → modal-1.5.4.dev6}/modal/_resolver.py +0 -0
- {modal-1.5.4.dev4 → modal-1.5.4.dev6}/modal/_resources.py +0 -0
- {modal-1.5.4.dev4 → modal-1.5.4.dev6}/modal/_runtime/__init__.py +0 -0
- {modal-1.5.4.dev4 → modal-1.5.4.dev6}/modal/_runtime/asgi.py +0 -0
- {modal-1.5.4.dev4 → modal-1.5.4.dev6}/modal/_runtime/container_io_manager.py +0 -0
- {modal-1.5.4.dev4 → modal-1.5.4.dev6}/modal/_runtime/container_io_manager.pyi +0 -0
- {modal-1.5.4.dev4 → modal-1.5.4.dev6}/modal/_runtime/execution_context.py +0 -0
- {modal-1.5.4.dev4 → modal-1.5.4.dev6}/modal/_runtime/execution_context.pyi +0 -0
- {modal-1.5.4.dev4 → modal-1.5.4.dev6}/modal/_runtime/gpu_memory_snapshot.py +0 -0
- {modal-1.5.4.dev4 → modal-1.5.4.dev6}/modal/_runtime/task_lifecycle_manager.py +0 -0
- {modal-1.5.4.dev4 → modal-1.5.4.dev6}/modal/_runtime/task_lifecycle_manager.pyi +0 -0
- {modal-1.5.4.dev4 → modal-1.5.4.dev6}/modal/_runtime/telemetry.py +0 -0
- {modal-1.5.4.dev4 → modal-1.5.4.dev6}/modal/_runtime/user_code_event_loop.py +0 -0
- {modal-1.5.4.dev4 → modal-1.5.4.dev6}/modal/_runtime/user_code_imports.py +0 -0
- {modal-1.5.4.dev4 → modal-1.5.4.dev6}/modal/_serialization.py +0 -0
- {modal-1.5.4.dev4 → modal-1.5.4.dev6}/modal/_server.py +0 -0
- {modal-1.5.4.dev4 → modal-1.5.4.dev6}/modal/_supports_logs.py +0 -0
- {modal-1.5.4.dev4 → modal-1.5.4.dev6}/modal/_traceback.py +0 -0
- {modal-1.5.4.dev4 → modal-1.5.4.dev6}/modal/_tunnel.py +0 -0
- {modal-1.5.4.dev4 → modal-1.5.4.dev6}/modal/_tunnel.pyi +0 -0
- {modal-1.5.4.dev4 → modal-1.5.4.dev6}/modal/_type_manager.py +0 -0
- {modal-1.5.4.dev4 → modal-1.5.4.dev6}/modal/_utils/__init__.py +0 -0
- {modal-1.5.4.dev4 → modal-1.5.4.dev6}/modal/_utils/app_utils.py +0 -0
- {modal-1.5.4.dev4 → modal-1.5.4.dev6}/modal/_utils/async_utils.py +0 -0
- {modal-1.5.4.dev4 → modal-1.5.4.dev6}/modal/_utils/auth_token_manager.py +0 -0
- {modal-1.5.4.dev4 → modal-1.5.4.dev6}/modal/_utils/blob_utils.py +0 -0
- {modal-1.5.4.dev4 → modal-1.5.4.dev6}/modal/_utils/browser_utils.py +0 -0
- {modal-1.5.4.dev4 → modal-1.5.4.dev6}/modal/_utils/bytes_io_segment_payload.py +0 -0
- {modal-1.5.4.dev4 → modal-1.5.4.dev6}/modal/_utils/curl_utils.py +0 -0
- {modal-1.5.4.dev4 → modal-1.5.4.dev6}/modal/_utils/deprecation.py +0 -0
- {modal-1.5.4.dev4 → modal-1.5.4.dev6}/modal/_utils/display_utils.py +0 -0
- {modal-1.5.4.dev4 → modal-1.5.4.dev6}/modal/_utils/docker_utils.py +0 -0
- {modal-1.5.4.dev4 → modal-1.5.4.dev6}/modal/_utils/function_utils.py +0 -0
- {modal-1.5.4.dev4 → modal-1.5.4.dev6}/modal/_utils/git_utils.py +0 -0
- {modal-1.5.4.dev4 → modal-1.5.4.dev6}/modal/_utils/grpc_testing.py +0 -0
- {modal-1.5.4.dev4 → modal-1.5.4.dev6}/modal/_utils/grpc_utils.py +0 -0
- {modal-1.5.4.dev4 → modal-1.5.4.dev6}/modal/_utils/hash_utils.py +0 -0
- {modal-1.5.4.dev4 → modal-1.5.4.dev6}/modal/_utils/http_utils.py +0 -0
- {modal-1.5.4.dev4 → modal-1.5.4.dev6}/modal/_utils/jwt_utils.py +0 -0
- {modal-1.5.4.dev4 → modal-1.5.4.dev6}/modal/_utils/logger.py +0 -0
- {modal-1.5.4.dev4 → modal-1.5.4.dev6}/modal/_utils/mount_utils.py +0 -0
- {modal-1.5.4.dev4 → modal-1.5.4.dev6}/modal/_utils/name_utils.py +0 -0
- {modal-1.5.4.dev4 → modal-1.5.4.dev6}/modal/_utils/package_utils.py +0 -0
- {modal-1.5.4.dev4 → modal-1.5.4.dev6}/modal/_utils/pattern_utils.py +0 -0
- {modal-1.5.4.dev4 → modal-1.5.4.dev6}/modal/_utils/proxy_support.py +0 -0
- {modal-1.5.4.dev4 → modal-1.5.4.dev6}/modal/_utils/rand_pb_testing.py +0 -0
- {modal-1.5.4.dev4 → modal-1.5.4.dev6}/modal/_utils/sandbox_fs_utils.py +0 -0
- {modal-1.5.4.dev4 → modal-1.5.4.dev6}/modal/_utils/shell_utils.py +0 -0
- {modal-1.5.4.dev4 → modal-1.5.4.dev6}/modal/_utils/task_command_router_client.py +0 -0
- {modal-1.5.4.dev4 → modal-1.5.4.dev6}/modal/_utils/time_utils.py +0 -0
- {modal-1.5.4.dev4 → modal-1.5.4.dev6}/modal/_vendor/__init__.py +0 -0
- {modal-1.5.4.dev4 → modal-1.5.4.dev6}/modal/_vendor/a2wsgi_wsgi.py +0 -0
- {modal-1.5.4.dev4 → modal-1.5.4.dev6}/modal/_vendor/cloudpickle.py +0 -0
- {modal-1.5.4.dev4 → modal-1.5.4.dev6}/modal/_vendor/tblib.py +0 -0
- {modal-1.5.4.dev4 → modal-1.5.4.dev6}/modal/_vendor/version.py +0 -0
- {modal-1.5.4.dev4 → modal-1.5.4.dev6}/modal/_watcher.py +0 -0
- {modal-1.5.4.dev4 → modal-1.5.4.dev6}/modal/_workspace.py +0 -0
- {modal-1.5.4.dev4 → modal-1.5.4.dev6}/modal/app.py +0 -0
- {modal-1.5.4.dev4 → modal-1.5.4.dev6}/modal/app.pyi +0 -0
- {modal-1.5.4.dev4 → modal-1.5.4.dev6}/modal/billing.py +0 -0
- {modal-1.5.4.dev4 → modal-1.5.4.dev6}/modal/billing.pyi +0 -0
- {modal-1.5.4.dev4 → modal-1.5.4.dev6}/modal/builder/2023.12.312.txt +0 -0
- {modal-1.5.4.dev4 → modal-1.5.4.dev6}/modal/builder/2023.12.txt +0 -0
- {modal-1.5.4.dev4 → modal-1.5.4.dev6}/modal/builder/2024.04.txt +0 -0
- {modal-1.5.4.dev4 → modal-1.5.4.dev6}/modal/builder/2024.10.txt +0 -0
- {modal-1.5.4.dev4 → modal-1.5.4.dev6}/modal/builder/2025.06.txt +0 -0
- {modal-1.5.4.dev4 → modal-1.5.4.dev6}/modal/builder/PREVIEW.txt +0 -0
- {modal-1.5.4.dev4 → modal-1.5.4.dev6}/modal/builder/README.md +0 -0
- {modal-1.5.4.dev4 → modal-1.5.4.dev6}/modal/builder/base-images.json +0 -0
- {modal-1.5.4.dev4 → modal-1.5.4.dev6}/modal/call_graph.py +0 -0
- {modal-1.5.4.dev4 → modal-1.5.4.dev6}/modal/cli/__init__.py +0 -0
- {modal-1.5.4.dev4 → modal-1.5.4.dev6}/modal/cli/_download.py +0 -0
- {modal-1.5.4.dev4 → modal-1.5.4.dev6}/modal/cli/_help.py +0 -0
- {modal-1.5.4.dev4 → modal-1.5.4.dev6}/modal/cli/_traceback.py +0 -0
- {modal-1.5.4.dev4 → modal-1.5.4.dev6}/modal/cli/app.py +0 -0
- {modal-1.5.4.dev4 → modal-1.5.4.dev6}/modal/cli/billing.py +0 -0
- {modal-1.5.4.dev4 → modal-1.5.4.dev6}/modal/cli/bootstrap.py +0 -0
- {modal-1.5.4.dev4 → modal-1.5.4.dev6}/modal/cli/changelog.py +0 -0
- {modal-1.5.4.dev4 → modal-1.5.4.dev6}/modal/cli/cluster.py +0 -0
- {modal-1.5.4.dev4 → modal-1.5.4.dev6}/modal/cli/config.py +0 -0
- {modal-1.5.4.dev4 → modal-1.5.4.dev6}/modal/cli/container.py +0 -0
- {modal-1.5.4.dev4 → modal-1.5.4.dev6}/modal/cli/curl.py +0 -0
- {modal-1.5.4.dev4 → modal-1.5.4.dev6}/modal/cli/dashboard.py +0 -0
- {modal-1.5.4.dev4 → modal-1.5.4.dev6}/modal/cli/dict.py +0 -0
- {modal-1.5.4.dev4 → modal-1.5.4.dev6}/modal/cli/endpoint.py +0 -0
- {modal-1.5.4.dev4 → modal-1.5.4.dev6}/modal/cli/entry_point.py +0 -0
- {modal-1.5.4.dev4 → modal-1.5.4.dev6}/modal/cli/environment.py +0 -0
- {modal-1.5.4.dev4 → modal-1.5.4.dev6}/modal/cli/image.py +0 -0
- {modal-1.5.4.dev4 → modal-1.5.4.dev6}/modal/cli/import_refs.py +0 -0
- {modal-1.5.4.dev4 → modal-1.5.4.dev6}/modal/cli/launch.py +0 -0
- {modal-1.5.4.dev4 → modal-1.5.4.dev6}/modal/cli/logo.py +0 -0
- {modal-1.5.4.dev4 → modal-1.5.4.dev6}/modal/cli/network_file_system.py +0 -0
- {modal-1.5.4.dev4 → modal-1.5.4.dev6}/modal/cli/profile.py +0 -0
- {modal-1.5.4.dev4 → modal-1.5.4.dev6}/modal/cli/programs/__init__.py +0 -0
- {modal-1.5.4.dev4 → modal-1.5.4.dev6}/modal/cli/programs/run_jupyter.py +0 -0
- {modal-1.5.4.dev4 → modal-1.5.4.dev6}/modal/cli/programs/vscode.py +0 -0
- {modal-1.5.4.dev4 → modal-1.5.4.dev6}/modal/cli/queues.py +0 -0
- {modal-1.5.4.dev4 → modal-1.5.4.dev6}/modal/cli/run.py +0 -0
- {modal-1.5.4.dev4 → modal-1.5.4.dev6}/modal/cli/secret.py +0 -0
- {modal-1.5.4.dev4 → modal-1.5.4.dev6}/modal/cli/selector.py +0 -0
- {modal-1.5.4.dev4 → modal-1.5.4.dev6}/modal/cli/shell.py +0 -0
- {modal-1.5.4.dev4 → modal-1.5.4.dev6}/modal/cli/skills.py +0 -0
- {modal-1.5.4.dev4 → modal-1.5.4.dev6}/modal/cli/token.py +0 -0
- {modal-1.5.4.dev4 → modal-1.5.4.dev6}/modal/cli/utils.py +0 -0
- {modal-1.5.4.dev4 → modal-1.5.4.dev6}/modal/cli/volume.py +0 -0
- {modal-1.5.4.dev4 → modal-1.5.4.dev6}/modal/cli/workspace.py +0 -0
- {modal-1.5.4.dev4 → modal-1.5.4.dev6}/modal/client.py +0 -0
- {modal-1.5.4.dev4 → modal-1.5.4.dev6}/modal/cloud_bucket_mount.py +0 -0
- {modal-1.5.4.dev4 → modal-1.5.4.dev6}/modal/cloud_bucket_mount.pyi +0 -0
- {modal-1.5.4.dev4 → modal-1.5.4.dev6}/modal/cls.py +0 -0
- {modal-1.5.4.dev4 → modal-1.5.4.dev6}/modal/cls.pyi +0 -0
- {modal-1.5.4.dev4 → modal-1.5.4.dev6}/modal/config.py +0 -0
- {modal-1.5.4.dev4 → modal-1.5.4.dev6}/modal/container_process.py +0 -0
- {modal-1.5.4.dev4 → modal-1.5.4.dev6}/modal/container_process.pyi +0 -0
- {modal-1.5.4.dev4 → modal-1.5.4.dev6}/modal/dict.py +0 -0
- {modal-1.5.4.dev4 → modal-1.5.4.dev6}/modal/dict.pyi +0 -0
- {modal-1.5.4.dev4 → modal-1.5.4.dev6}/modal/environments.py +0 -0
- {modal-1.5.4.dev4 → modal-1.5.4.dev6}/modal/environments.pyi +0 -0
- {modal-1.5.4.dev4 → modal-1.5.4.dev6}/modal/exception.py +0 -0
- {modal-1.5.4.dev4 → modal-1.5.4.dev6}/modal/experimental/__init__.py +0 -0
- {modal-1.5.4.dev4 → modal-1.5.4.dev6}/modal/experimental/flash.py +0 -0
- {modal-1.5.4.dev4 → modal-1.5.4.dev6}/modal/experimental/flash.pyi +0 -0
- {modal-1.5.4.dev4 → modal-1.5.4.dev6}/modal/experimental/ipython.py +0 -0
- {modal-1.5.4.dev4 → modal-1.5.4.dev6}/modal/file_io.py +0 -0
- {modal-1.5.4.dev4 → modal-1.5.4.dev6}/modal/file_io.pyi +0 -0
- {modal-1.5.4.dev4 → modal-1.5.4.dev6}/modal/file_pattern_matcher.py +0 -0
- {modal-1.5.4.dev4 → modal-1.5.4.dev6}/modal/functions.py +0 -0
- {modal-1.5.4.dev4 → modal-1.5.4.dev6}/modal/image.py +0 -0
- {modal-1.5.4.dev4 → modal-1.5.4.dev6}/modal/image.pyi +0 -0
- {modal-1.5.4.dev4 → modal-1.5.4.dev6}/modal/io_streams.py +0 -0
- {modal-1.5.4.dev4 → modal-1.5.4.dev6}/modal/io_streams.pyi +0 -0
- {modal-1.5.4.dev4 → modal-1.5.4.dev6}/modal/mount.py +0 -0
- {modal-1.5.4.dev4 → modal-1.5.4.dev6}/modal/mount.pyi +0 -0
- {modal-1.5.4.dev4 → modal-1.5.4.dev6}/modal/network_file_system.py +0 -0
- {modal-1.5.4.dev4 → modal-1.5.4.dev6}/modal/network_file_system.pyi +0 -0
- {modal-1.5.4.dev4 → modal-1.5.4.dev6}/modal/object.py +0 -0
- {modal-1.5.4.dev4 → modal-1.5.4.dev6}/modal/object.pyi +0 -0
- {modal-1.5.4.dev4 → modal-1.5.4.dev6}/modal/output.py +0 -0
- {modal-1.5.4.dev4 → modal-1.5.4.dev6}/modal/parallel_map.py +0 -0
- {modal-1.5.4.dev4 → modal-1.5.4.dev6}/modal/parallel_map.pyi +0 -0
- {modal-1.5.4.dev4 → modal-1.5.4.dev6}/modal/partial_function.py +0 -0
- {modal-1.5.4.dev4 → modal-1.5.4.dev6}/modal/partial_function.pyi +0 -0
- {modal-1.5.4.dev4 → modal-1.5.4.dev6}/modal/proxy.py +0 -0
- {modal-1.5.4.dev4 → modal-1.5.4.dev6}/modal/proxy.pyi +0 -0
- {modal-1.5.4.dev4 → modal-1.5.4.dev6}/modal/py.typed +0 -0
- {modal-1.5.4.dev4 → modal-1.5.4.dev6}/modal/queue.py +0 -0
- {modal-1.5.4.dev4 → modal-1.5.4.dev6}/modal/queue.pyi +0 -0
- {modal-1.5.4.dev4 → modal-1.5.4.dev6}/modal/retries.py +0 -0
- {modal-1.5.4.dev4 → modal-1.5.4.dev6}/modal/runner.py +0 -0
- {modal-1.5.4.dev4 → modal-1.5.4.dev6}/modal/runner.pyi +0 -0
- {modal-1.5.4.dev4 → modal-1.5.4.dev6}/modal/running_app.py +0 -0
- {modal-1.5.4.dev4 → modal-1.5.4.dev6}/modal/sandbox_fs.py +0 -0
- {modal-1.5.4.dev4 → modal-1.5.4.dev6}/modal/sandbox_fs.pyi +0 -0
- {modal-1.5.4.dev4 → modal-1.5.4.dev6}/modal/schedule.py +0 -0
- {modal-1.5.4.dev4 → modal-1.5.4.dev6}/modal/scheduler_placement.py +0 -0
- {modal-1.5.4.dev4 → modal-1.5.4.dev6}/modal/secret.py +0 -0
- {modal-1.5.4.dev4 → modal-1.5.4.dev6}/modal/secret.pyi +0 -0
- {modal-1.5.4.dev4 → modal-1.5.4.dev6}/modal/server.py +0 -0
- {modal-1.5.4.dev4 → modal-1.5.4.dev6}/modal/server.pyi +0 -0
- {modal-1.5.4.dev4 → modal-1.5.4.dev6}/modal/serving.py +0 -0
- {modal-1.5.4.dev4 → modal-1.5.4.dev6}/modal/serving.pyi +0 -0
- {modal-1.5.4.dev4 → modal-1.5.4.dev6}/modal/skills/modal/SKILL.md +0 -0
- {modal-1.5.4.dev4 → modal-1.5.4.dev6}/modal/snapshot.py +0 -0
- {modal-1.5.4.dev4 → modal-1.5.4.dev6}/modal/snapshot.pyi +0 -0
- {modal-1.5.4.dev4 → modal-1.5.4.dev6}/modal/stream_type.py +0 -0
- {modal-1.5.4.dev4 → modal-1.5.4.dev6}/modal/token_flow.py +0 -0
- {modal-1.5.4.dev4 → modal-1.5.4.dev6}/modal/token_flow.pyi +0 -0
- {modal-1.5.4.dev4 → modal-1.5.4.dev6}/modal/types.py +0 -0
- {modal-1.5.4.dev4 → modal-1.5.4.dev6}/modal/volume.py +0 -0
- {modal-1.5.4.dev4 → modal-1.5.4.dev6}/modal/volume.pyi +0 -0
- {modal-1.5.4.dev4 → modal-1.5.4.dev6}/modal/workspace.py +0 -0
- {modal-1.5.4.dev4 → modal-1.5.4.dev6}/modal/workspace.pyi +0 -0
- {modal-1.5.4.dev4 → modal-1.5.4.dev6}/modal.egg-info/SOURCES.txt +0 -0
- {modal-1.5.4.dev4 → modal-1.5.4.dev6}/modal.egg-info/dependency_links.txt +0 -0
- {modal-1.5.4.dev4 → modal-1.5.4.dev6}/modal.egg-info/entry_points.txt +0 -0
- {modal-1.5.4.dev4 → modal-1.5.4.dev6}/modal.egg-info/requires.txt +0 -0
- {modal-1.5.4.dev4 → modal-1.5.4.dev6}/modal.egg-info/top_level.txt +0 -0
- {modal-1.5.4.dev4 → modal-1.5.4.dev6}/modal_docs/__init__.py +0 -0
- {modal-1.5.4.dev4 → modal-1.5.4.dev6}/modal_docs/gen_cli_docs.py +0 -0
- {modal-1.5.4.dev4 → modal-1.5.4.dev6}/modal_docs/gen_cli_docs_main.py +0 -0
- {modal-1.5.4.dev4 → modal-1.5.4.dev6}/modal_docs/gen_reference_docs.py +0 -0
- {modal-1.5.4.dev4 → modal-1.5.4.dev6}/modal_docs/gen_reference_docs_main.py +0 -0
- {modal-1.5.4.dev4 → modal-1.5.4.dev6}/modal_docs/mdmd/__init__.py +0 -0
- {modal-1.5.4.dev4 → modal-1.5.4.dev6}/modal_docs/mdmd/mdmd.py +0 -0
- {modal-1.5.4.dev4 → modal-1.5.4.dev6}/modal_docs/mdmd/signatures.py +0 -0
- {modal-1.5.4.dev4 → modal-1.5.4.dev6}/modal_docs/mdmd/types.py +0 -0
- {modal-1.5.4.dev4 → modal-1.5.4.dev6}/modal_docs/reference_intro.md +0 -0
- {modal-1.5.4.dev4 → modal-1.5.4.dev6}/modal_proto/__init__.py +0 -0
- {modal-1.5.4.dev4 → modal-1.5.4.dev6}/modal_proto/py.typed +0 -0
- {modal-1.5.4.dev4 → modal-1.5.4.dev6}/modal_proto/task_command_router_grpc.py +0 -0
- {modal-1.5.4.dev4 → modal-1.5.4.dev6}/modal_proto/task_command_router_pb2.py +0 -0
- {modal-1.5.4.dev4 → modal-1.5.4.dev6}/modal_proto/task_command_router_pb2.pyi +0 -0
- {modal-1.5.4.dev4 → modal-1.5.4.dev6}/modal_proto/task_command_router_pb2_grpc.py +0 -0
- {modal-1.5.4.dev4 → modal-1.5.4.dev6}/modal_proto/task_command_router_pb2_grpc.pyi +0 -0
- {modal-1.5.4.dev4 → modal-1.5.4.dev6}/modal_version/__main__.py +0 -0
- {modal-1.5.4.dev4 → modal-1.5.4.dev6}/pyproject.toml +0 -0
- {modal-1.5.4.dev4 → modal-1.5.4.dev6}/setup.cfg +0 -0
|
@@ -37,7 +37,7 @@ class _Client:
|
|
|
37
37
|
server_url: str,
|
|
38
38
|
client_type: int,
|
|
39
39
|
credentials: typing.Optional[tuple[str, str]],
|
|
40
|
-
version: str = "1.5.4.
|
|
40
|
+
version: str = "1.5.4.dev6",
|
|
41
41
|
):
|
|
42
42
|
"""mdmd:hidden
|
|
43
43
|
The Modal client object is not intended to be instantiated directly by users.
|
|
@@ -207,7 +207,7 @@ class Client:
|
|
|
207
207
|
server_url: str,
|
|
208
208
|
client_type: int,
|
|
209
209
|
credentials: typing.Optional[tuple[str, str]],
|
|
210
|
-
version: str = "1.5.4.
|
|
210
|
+
version: str = "1.5.4.dev6",
|
|
211
211
|
):
|
|
212
212
|
"""mdmd:hidden
|
|
213
213
|
The Modal client object is not intended to be instantiated directly by users.
|
|
@@ -546,7 +546,7 @@ class Function(
|
|
|
546
546
|
|
|
547
547
|
_call_generator: ___call_generator_spec
|
|
548
548
|
|
|
549
|
-
class __remote_spec(typing_extensions.Protocol[
|
|
549
|
+
class __remote_spec(typing_extensions.Protocol[ReturnType_INNER, P_INNER]):
|
|
550
550
|
def __call__(self, /, *args: P_INNER.args, **kwargs: P_INNER.kwargs) -> ReturnType_INNER:
|
|
551
551
|
"""Calls the function remotely, executing it with the given arguments and returning the execution's result.
|
|
552
552
|
|
|
@@ -571,7 +571,7 @@ class Function(
|
|
|
571
571
|
"""
|
|
572
572
|
...
|
|
573
573
|
|
|
574
|
-
remote: __remote_spec[modal._functions.
|
|
574
|
+
remote: __remote_spec[modal._functions.ReturnType, modal._functions.P]
|
|
575
575
|
|
|
576
576
|
class __remote_gen_spec(typing_extensions.Protocol):
|
|
577
577
|
def __call__(self, /, *args, **kwargs) -> typing.Generator[typing.Any, None, None]:
|
|
@@ -621,7 +621,7 @@ class Function(
|
|
|
621
621
|
"""
|
|
622
622
|
...
|
|
623
623
|
|
|
624
|
-
class ___experimental_spawn_spec(typing_extensions.Protocol[
|
|
624
|
+
class ___experimental_spawn_spec(typing_extensions.Protocol[ReturnType_INNER, P_INNER]):
|
|
625
625
|
def __call__(self, /, *args: P_INNER.args, **kwargs: P_INNER.kwargs) -> FunctionCall[ReturnType_INNER]:
|
|
626
626
|
"""[Experimental] Calls the function with the given arguments, without waiting for the results.
|
|
627
627
|
|
|
@@ -654,7 +654,7 @@ class Function(
|
|
|
654
654
|
"""
|
|
655
655
|
...
|
|
656
656
|
|
|
657
|
-
_experimental_spawn: ___experimental_spawn_spec[modal._functions.
|
|
657
|
+
_experimental_spawn: ___experimental_spawn_spec[modal._functions.ReturnType, modal._functions.P]
|
|
658
658
|
|
|
659
659
|
class ___spawn_map_inner_spec(typing_extensions.Protocol[P_INNER]):
|
|
660
660
|
def __call__(self, /, *args: P_INNER.args, **kwargs: P_INNER.kwargs) -> None: ...
|
|
@@ -662,7 +662,7 @@ class Function(
|
|
|
662
662
|
|
|
663
663
|
_spawn_map_inner: ___spawn_map_inner_spec[modal._functions.P]
|
|
664
664
|
|
|
665
|
-
class __spawn_spec(typing_extensions.Protocol[
|
|
665
|
+
class __spawn_spec(typing_extensions.Protocol[ReturnType_INNER, P_INNER]):
|
|
666
666
|
def __call__(self, /, *args: P_INNER.args, **kwargs: P_INNER.kwargs) -> FunctionCall[ReturnType_INNER]:
|
|
667
667
|
"""Calls the function with the given arguments, without waiting for the results.
|
|
668
668
|
|
|
@@ -695,7 +695,7 @@ class Function(
|
|
|
695
695
|
"""
|
|
696
696
|
...
|
|
697
697
|
|
|
698
|
-
spawn: __spawn_spec[modal._functions.
|
|
698
|
+
spawn: __spawn_spec[modal._functions.ReturnType, modal._functions.P]
|
|
699
699
|
|
|
700
700
|
def get_raw_f(self) -> collections.abc.Callable[..., typing.Any]:
|
|
701
701
|
"""Return the inner Python object wrapped by this Modal Function.
|
|
@@ -80,7 +80,6 @@ from .stream_type import StreamType
|
|
|
80
80
|
from .types import FileWatchEvent, FileWatchEventType, SandboxConnectCredentials
|
|
81
81
|
|
|
82
82
|
_default_image: _Image = _Image.debian_slim()
|
|
83
|
-
_EXIT_SNAPSHOT_POLL_INTERVAL_SECONDS = 1.0
|
|
84
83
|
_EXIT_SNAPSHOT_NOT_FOUND_ERROR_CODES = frozenset((api_pb2.SandboxGetExitSnapshotResponse.ERROR_CODE_TIMEOUT,))
|
|
85
84
|
|
|
86
85
|
|
|
@@ -1415,13 +1414,12 @@ class _Sandbox(_Object, type_prefix="sb"):
|
|
|
1415
1414
|
req = sr_pb2.TaskSetNetworkAccessRequest(task_id=task_id, network_access=network_access)
|
|
1416
1415
|
await command_router_client.set_network_access(req)
|
|
1417
1416
|
|
|
1418
|
-
async def _experimental_get_exit_snapshot(self, timeout: float | None =
|
|
1417
|
+
async def _experimental_get_exit_snapshot(self, timeout: float | None = None) -> _Image:
|
|
1419
1418
|
"""Get the exit filesystem snapshot image.
|
|
1420
1419
|
|
|
1421
1420
|
Args:
|
|
1422
|
-
timeout:
|
|
1423
|
-
|
|
1424
|
-
perform an immediate check.
|
|
1421
|
+
timeout: Deadline in seconds. `None` polls until the snapshot reaches
|
|
1422
|
+
a terminal state. `0` performs an immediate check.
|
|
1425
1423
|
|
|
1426
1424
|
Returns:
|
|
1427
1425
|
The exit snapshot Image.
|
|
@@ -1443,17 +1441,20 @@ class _Sandbox(_Object, type_prefix="sb"):
|
|
|
1443
1441
|
|
|
1444
1442
|
deadline = None if timeout is None else time.monotonic() + timeout
|
|
1445
1443
|
timeout_message = f"timed out waiting for exit snapshot for Sandbox {self.object_id}"
|
|
1444
|
+
# Use the private __client so the lookup works with a detached sandbox
|
|
1445
|
+
client = self.__client
|
|
1446
1446
|
|
|
1447
1447
|
while True:
|
|
1448
|
-
|
|
1449
|
-
|
|
1448
|
+
request_timeout = 10.0 if deadline is None else min(10.0, max(0.0, deadline - time.monotonic()))
|
|
1449
|
+
resp: api_pb2.SandboxGetExitSnapshotResponse = await client.stub.SandboxGetExitSnapshot(
|
|
1450
|
+
api_pb2.SandboxGetExitSnapshotRequest(sandbox_id=self.object_id, timeout=request_timeout)
|
|
1450
1451
|
)
|
|
1451
1452
|
outcome = resp.WhichOneof("outcome")
|
|
1452
1453
|
|
|
1453
1454
|
if outcome == "success":
|
|
1454
1455
|
if not resp.success.image_id:
|
|
1455
1456
|
raise InternalError("Exit snapshot result is missing image ID")
|
|
1456
|
-
return _Image._new_hydrated(resp.success.image_id,
|
|
1457
|
+
return _Image._new_hydrated(resp.success.image_id, client, None)
|
|
1457
1458
|
|
|
1458
1459
|
if outcome == "error":
|
|
1459
1460
|
if resp.error.error_code in _EXIT_SNAPSHOT_NOT_FOUND_ERROR_CODES:
|
|
@@ -1465,15 +1466,6 @@ class _Sandbox(_Object, type_prefix="sb"):
|
|
|
1465
1466
|
if outcome != "pending":
|
|
1466
1467
|
raise InternalError("Exit snapshot response is missing an outcome")
|
|
1467
1468
|
|
|
1468
|
-
sleep_for = _EXIT_SNAPSHOT_POLL_INTERVAL_SECONDS
|
|
1469
|
-
if deadline is not None:
|
|
1470
|
-
remaining = deadline - time.monotonic()
|
|
1471
|
-
if remaining <= 0:
|
|
1472
|
-
raise TimeoutError(timeout_message)
|
|
1473
|
-
sleep_for = min(sleep_for, remaining)
|
|
1474
|
-
|
|
1475
|
-
await asyncio.sleep(sleep_for)
|
|
1476
|
-
|
|
1477
1469
|
if deadline is not None and time.monotonic() >= deadline:
|
|
1478
1470
|
raise TimeoutError(timeout_message)
|
|
1479
1471
|
|
|
@@ -1793,7 +1785,6 @@ class _Sandbox(_Object, type_prefix="sb"):
|
|
|
1793
1785
|
Returns:
|
|
1794
1786
|
URL and token credentials for connecting to the sandbox over HTTP.
|
|
1795
1787
|
"""
|
|
1796
|
-
self._ensure_v1("create_connect_token")
|
|
1797
1788
|
if user_metadata is not None and isinstance(user_metadata, dict):
|
|
1798
1789
|
try:
|
|
1799
1790
|
user_metadata = json.dumps(user_metadata)
|
|
@@ -1806,7 +1797,14 @@ class _Sandbox(_Object, type_prefix="sb"):
|
|
|
1806
1797
|
req = api_pb2.SandboxCreateConnectTokenRequest(
|
|
1807
1798
|
sandbox_id=self.object_id, user_metadata=user_metadata, port=port
|
|
1808
1799
|
)
|
|
1809
|
-
|
|
1800
|
+
if self._is_v2:
|
|
1801
|
+
assert self._client._auth_token_manager
|
|
1802
|
+
auth_token = await self._client._auth_token_manager.get_token()
|
|
1803
|
+
resp = await self._client.stub.SandboxCreateConnectTokenV2(
|
|
1804
|
+
req, metadata=[("x-modal-auth-token", auth_token)]
|
|
1805
|
+
)
|
|
1806
|
+
else:
|
|
1807
|
+
resp = await self._client.stub.SandboxCreateConnectToken(req)
|
|
1810
1808
|
return SandboxConnectCredentials(resp.url, resp.token)
|
|
1811
1809
|
|
|
1812
1810
|
async def reload_volumes(self, *, timeout: int = 55) -> None:
|
|
@@ -573,13 +573,12 @@ class _Sandbox(modal._object._Object):
|
|
|
573
573
|
"""
|
|
574
574
|
...
|
|
575
575
|
|
|
576
|
-
async def _experimental_get_exit_snapshot(self, timeout: typing.Optional[float] =
|
|
576
|
+
async def _experimental_get_exit_snapshot(self, timeout: typing.Optional[float] = None) -> modal._image._Image:
|
|
577
577
|
"""Get the exit filesystem snapshot image.
|
|
578
578
|
|
|
579
579
|
Args:
|
|
580
|
-
timeout:
|
|
581
|
-
|
|
582
|
-
perform an immediate check.
|
|
580
|
+
timeout: Deadline in seconds. `None` polls until the snapshot reaches
|
|
581
|
+
a terminal state. `0` performs an immediate check.
|
|
583
582
|
|
|
584
583
|
Returns:
|
|
585
584
|
The exit snapshot Image.
|
|
@@ -2257,13 +2256,12 @@ class Sandbox(modal.object.Object):
|
|
|
2257
2256
|
_experimental_set_outbound_network_policy: ___experimental_set_outbound_network_policy_spec
|
|
2258
2257
|
|
|
2259
2258
|
class ___experimental_get_exit_snapshot_spec(typing_extensions.Protocol):
|
|
2260
|
-
def __call__(self, /, timeout: typing.Optional[float] =
|
|
2259
|
+
def __call__(self, /, timeout: typing.Optional[float] = None) -> modal.image.Image:
|
|
2261
2260
|
"""Get the exit filesystem snapshot image.
|
|
2262
2261
|
|
|
2263
2262
|
Args:
|
|
2264
|
-
timeout:
|
|
2265
|
-
|
|
2266
|
-
perform an immediate check.
|
|
2263
|
+
timeout: Deadline in seconds. `None` polls until the snapshot reaches
|
|
2264
|
+
a terminal state. `0` performs an immediate check.
|
|
2267
2265
|
|
|
2268
2266
|
Returns:
|
|
2269
2267
|
The exit snapshot Image.
|
|
@@ -2282,13 +2280,12 @@ class Sandbox(modal.object.Object):
|
|
|
2282
2280
|
"""
|
|
2283
2281
|
...
|
|
2284
2282
|
|
|
2285
|
-
async def aio(self, /, timeout: typing.Optional[float] =
|
|
2283
|
+
async def aio(self, /, timeout: typing.Optional[float] = None) -> modal.image.Image:
|
|
2286
2284
|
"""Get the exit filesystem snapshot image.
|
|
2287
2285
|
|
|
2288
2286
|
Args:
|
|
2289
|
-
timeout:
|
|
2290
|
-
|
|
2291
|
-
perform an immediate check.
|
|
2287
|
+
timeout: Deadline in seconds. `None` polls until the snapshot reaches
|
|
2288
|
+
a terminal state. `0` performs an immediate check.
|
|
2292
2289
|
|
|
2293
2290
|
Returns:
|
|
2294
2291
|
The exit snapshot Image.
|
|
@@ -587,6 +587,10 @@ class ModalClientBase(abc.ABC):
|
|
|
587
587
|
async def SandboxCreateConnectToken(self, stream: 'grpclib.server.Stream[modal_proto.api_pb2.SandboxCreateConnectTokenRequest, modal_proto.api_pb2.SandboxCreateConnectTokenResponse]') -> None:
|
|
588
588
|
pass
|
|
589
589
|
|
|
590
|
+
@abc.abstractmethod
|
|
591
|
+
async def SandboxCreateConnectTokenV2(self, stream: 'grpclib.server.Stream[modal_proto.api_pb2.SandboxCreateConnectTokenRequest, modal_proto.api_pb2.SandboxCreateConnectTokenResponse]') -> None:
|
|
592
|
+
pass
|
|
593
|
+
|
|
590
594
|
@abc.abstractmethod
|
|
591
595
|
async def SandboxCreateV2(self, stream: 'grpclib.server.Stream[modal_proto.api_pb2.SandboxCreateV2Request, modal_proto.api_pb2.SandboxCreateV2Response]') -> None:
|
|
592
596
|
pass
|
|
@@ -1805,6 +1809,12 @@ class ModalClientBase(abc.ABC):
|
|
|
1805
1809
|
modal_proto.api_pb2.SandboxCreateConnectTokenRequest,
|
|
1806
1810
|
modal_proto.api_pb2.SandboxCreateConnectTokenResponse,
|
|
1807
1811
|
),
|
|
1812
|
+
'/modal.client.ModalClient/SandboxCreateConnectTokenV2': grpclib.const.Handler(
|
|
1813
|
+
self.SandboxCreateConnectTokenV2,
|
|
1814
|
+
grpclib.const.Cardinality.UNARY_UNARY,
|
|
1815
|
+
modal_proto.api_pb2.SandboxCreateConnectTokenRequest,
|
|
1816
|
+
modal_proto.api_pb2.SandboxCreateConnectTokenResponse,
|
|
1817
|
+
),
|
|
1808
1818
|
'/modal.client.ModalClient/SandboxCreateV2': grpclib.const.Handler(
|
|
1809
1819
|
self.SandboxCreateV2,
|
|
1810
1820
|
grpclib.const.Cardinality.UNARY_UNARY,
|
|
@@ -3209,6 +3219,12 @@ class ModalClientStub:
|
|
|
3209
3219
|
modal_proto.api_pb2.SandboxCreateConnectTokenRequest,
|
|
3210
3220
|
modal_proto.api_pb2.SandboxCreateConnectTokenResponse,
|
|
3211
3221
|
)
|
|
3222
|
+
self.SandboxCreateConnectTokenV2 = grpclib.client.UnaryUnaryMethod(
|
|
3223
|
+
channel,
|
|
3224
|
+
'/modal.client.ModalClient/SandboxCreateConnectTokenV2',
|
|
3225
|
+
modal_proto.api_pb2.SandboxCreateConnectTokenRequest,
|
|
3226
|
+
modal_proto.api_pb2.SandboxCreateConnectTokenResponse,
|
|
3227
|
+
)
|
|
3212
3228
|
self.SandboxCreateV2 = grpclib.client.UnaryUnaryMethod(
|
|
3213
3229
|
channel,
|
|
3214
3230
|
'/modal.client.ModalClient/SandboxCreateV2',
|