modAL 1.6.3.dev2__tar.gz → 1.6.3.dev3__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.6.3.dev2 → modal-1.6.3.dev3}/PKG-INFO +1 -1
- {modal-1.6.3.dev2 → modal-1.6.3.dev3}/modal/client.pyi +2 -2
- {modal-1.6.3.dev2 → modal-1.6.3.dev3}/modal/sandbox/_task_command_router_client.py +8 -13
- {modal-1.6.3.dev2 → modal-1.6.3.dev3}/modal.egg-info/PKG-INFO +1 -1
- {modal-1.6.3.dev2 → modal-1.6.3.dev3}/modal_proto/api_grpc.py +48 -0
- {modal-1.6.3.dev2 → modal-1.6.3.dev3}/modal_proto/api_pb2.py +1522 -1410
- {modal-1.6.3.dev2 → modal-1.6.3.dev3}/modal_proto/api_pb2.pyi +334 -36
- {modal-1.6.3.dev2 → modal-1.6.3.dev3}/modal_proto/api_pb2_grpc.py +100 -0
- {modal-1.6.3.dev2 → modal-1.6.3.dev3}/modal_proto/api_pb2_grpc.pyi +32 -0
- {modal-1.6.3.dev2 → modal-1.6.3.dev3}/modal_proto/modal_api_grpc.py +3 -0
- {modal-1.6.3.dev2 → modal-1.6.3.dev3}/modal_version/__init__.py +1 -1
- {modal-1.6.3.dev2 → modal-1.6.3.dev3}/LICENSE +0 -0
- {modal-1.6.3.dev2 → modal-1.6.3.dev3}/README.md +0 -0
- {modal-1.6.3.dev2 → modal-1.6.3.dev3}/modal/__init__.py +0 -0
- {modal-1.6.3.dev2 → modal-1.6.3.dev3}/modal/__main__.py +0 -0
- {modal-1.6.3.dev2 → modal-1.6.3.dev3}/modal/_billing.py +0 -0
- {modal-1.6.3.dev2 → modal-1.6.3.dev3}/modal/_cluster.py +0 -0
- {modal-1.6.3.dev2 → modal-1.6.3.dev3}/modal/_cluster.pyi +0 -0
- {modal-1.6.3.dev2 → modal-1.6.3.dev3}/modal/_container_entrypoint.py +0 -0
- {modal-1.6.3.dev2 → modal-1.6.3.dev3}/modal/_environments.py +0 -0
- {modal-1.6.3.dev2 → modal-1.6.3.dev3}/modal/_function_variants.py +0 -0
- {modal-1.6.3.dev2 → modal-1.6.3.dev3}/modal/_functions.py +0 -0
- {modal-1.6.3.dev2 → modal-1.6.3.dev3}/modal/_grpc_client.py +0 -0
- {modal-1.6.3.dev2 → modal-1.6.3.dev3}/modal/_image.py +0 -0
- {modal-1.6.3.dev2 → modal-1.6.3.dev3}/modal/_ipython.py +0 -0
- {modal-1.6.3.dev2 → modal-1.6.3.dev3}/modal/_load_context.py +0 -0
- {modal-1.6.3.dev2 → modal-1.6.3.dev3}/modal/_location.py +0 -0
- {modal-1.6.3.dev2 → modal-1.6.3.dev3}/modal/_logs.py +0 -0
- {modal-1.6.3.dev2 → modal-1.6.3.dev3}/modal/_logs_manager.py +0 -0
- {modal-1.6.3.dev2 → modal-1.6.3.dev3}/modal/_logs_manager.pyi +0 -0
- {modal-1.6.3.dev2 → modal-1.6.3.dev3}/modal/_metrics.py +0 -0
- {modal-1.6.3.dev2 → modal-1.6.3.dev3}/modal/_metrics.pyi +0 -0
- {modal-1.6.3.dev2 → modal-1.6.3.dev3}/modal/_object.py +0 -0
- {modal-1.6.3.dev2 → modal-1.6.3.dev3}/modal/_outbound_policy.py +0 -0
- {modal-1.6.3.dev2 → modal-1.6.3.dev3}/modal/_outbound_policy.pyi +0 -0
- {modal-1.6.3.dev2 → modal-1.6.3.dev3}/modal/_output/__init__.py +0 -0
- {modal-1.6.3.dev2 → modal-1.6.3.dev3}/modal/_output/manager.py +0 -0
- {modal-1.6.3.dev2 → modal-1.6.3.dev3}/modal/_output/pty.py +0 -0
- {modal-1.6.3.dev2 → modal-1.6.3.dev3}/modal/_output/rich.py +0 -0
- {modal-1.6.3.dev2 → modal-1.6.3.dev3}/modal/_output/status.py +0 -0
- {modal-1.6.3.dev2 → modal-1.6.3.dev3}/modal/_partial_function.py +0 -0
- {modal-1.6.3.dev2 → modal-1.6.3.dev3}/modal/_resolver.py +0 -0
- {modal-1.6.3.dev2 → modal-1.6.3.dev3}/modal/_resources.py +0 -0
- {modal-1.6.3.dev2 → modal-1.6.3.dev3}/modal/_runtime/__init__.py +0 -0
- {modal-1.6.3.dev2 → modal-1.6.3.dev3}/modal/_runtime/asgi.py +0 -0
- {modal-1.6.3.dev2 → modal-1.6.3.dev3}/modal/_runtime/container_io_manager.py +0 -0
- {modal-1.6.3.dev2 → modal-1.6.3.dev3}/modal/_runtime/container_io_manager.pyi +0 -0
- {modal-1.6.3.dev2 → modal-1.6.3.dev3}/modal/_runtime/execution_context.py +0 -0
- {modal-1.6.3.dev2 → modal-1.6.3.dev3}/modal/_runtime/execution_context.pyi +0 -0
- {modal-1.6.3.dev2 → modal-1.6.3.dev3}/modal/_runtime/gpu_memory_snapshot.py +0 -0
- {modal-1.6.3.dev2 → modal-1.6.3.dev3}/modal/_runtime/task_lifecycle_manager.py +0 -0
- {modal-1.6.3.dev2 → modal-1.6.3.dev3}/modal/_runtime/task_lifecycle_manager.pyi +0 -0
- {modal-1.6.3.dev2 → modal-1.6.3.dev3}/modal/_runtime/telemetry.py +0 -0
- {modal-1.6.3.dev2 → modal-1.6.3.dev3}/modal/_runtime/user_code_event_loop.py +0 -0
- {modal-1.6.3.dev2 → modal-1.6.3.dev3}/modal/_runtime/user_code_imports.py +0 -0
- {modal-1.6.3.dev2 → modal-1.6.3.dev3}/modal/_serialization.py +0 -0
- {modal-1.6.3.dev2 → modal-1.6.3.dev3}/modal/_server.py +0 -0
- {modal-1.6.3.dev2 → modal-1.6.3.dev3}/modal/_server.pyi +0 -0
- {modal-1.6.3.dev2 → modal-1.6.3.dev3}/modal/_supports_logs.py +0 -0
- {modal-1.6.3.dev2 → modal-1.6.3.dev3}/modal/_traceback.py +0 -0
- {modal-1.6.3.dev2 → modal-1.6.3.dev3}/modal/_tunnel.py +0 -0
- {modal-1.6.3.dev2 → modal-1.6.3.dev3}/modal/_tunnel.pyi +0 -0
- {modal-1.6.3.dev2 → modal-1.6.3.dev3}/modal/_type_manager.py +0 -0
- {modal-1.6.3.dev2 → modal-1.6.3.dev3}/modal/_utils/__init__.py +0 -0
- {modal-1.6.3.dev2 → modal-1.6.3.dev3}/modal/_utils/app_utils.py +0 -0
- {modal-1.6.3.dev2 → modal-1.6.3.dev3}/modal/_utils/async_utils.py +0 -0
- {modal-1.6.3.dev2 → modal-1.6.3.dev3}/modal/_utils/auth_token_manager.py +0 -0
- {modal-1.6.3.dev2 → modal-1.6.3.dev3}/modal/_utils/blob_utils.py +0 -0
- {modal-1.6.3.dev2 → modal-1.6.3.dev3}/modal/_utils/browser_utils.py +0 -0
- {modal-1.6.3.dev2 → modal-1.6.3.dev3}/modal/_utils/bytes_io_segment_payload.py +0 -0
- {modal-1.6.3.dev2 → modal-1.6.3.dev3}/modal/_utils/curl_utils.py +0 -0
- {modal-1.6.3.dev2 → modal-1.6.3.dev3}/modal/_utils/deprecation.py +0 -0
- {modal-1.6.3.dev2 → modal-1.6.3.dev3}/modal/_utils/display_utils.py +0 -0
- {modal-1.6.3.dev2 → modal-1.6.3.dev3}/modal/_utils/docker_utils.py +0 -0
- {modal-1.6.3.dev2 → modal-1.6.3.dev3}/modal/_utils/function_utils.py +0 -0
- {modal-1.6.3.dev2 → modal-1.6.3.dev3}/modal/_utils/git_utils.py +0 -0
- {modal-1.6.3.dev2 → modal-1.6.3.dev3}/modal/_utils/grpc_testing.py +0 -0
- {modal-1.6.3.dev2 → modal-1.6.3.dev3}/modal/_utils/grpc_utils.py +0 -0
- {modal-1.6.3.dev2 → modal-1.6.3.dev3}/modal/_utils/hash_utils.py +0 -0
- {modal-1.6.3.dev2 → modal-1.6.3.dev3}/modal/_utils/http_utils.py +0 -0
- {modal-1.6.3.dev2 → modal-1.6.3.dev3}/modal/_utils/idle_countdown.py +0 -0
- {modal-1.6.3.dev2 → modal-1.6.3.dev3}/modal/_utils/jwt_utils.py +0 -0
- {modal-1.6.3.dev2 → modal-1.6.3.dev3}/modal/_utils/logger.py +0 -0
- {modal-1.6.3.dev2 → modal-1.6.3.dev3}/modal/_utils/mount_utils.py +0 -0
- {modal-1.6.3.dev2 → modal-1.6.3.dev3}/modal/_utils/name_utils.py +0 -0
- {modal-1.6.3.dev2 → modal-1.6.3.dev3}/modal/_utils/package_utils.py +0 -0
- {modal-1.6.3.dev2 → modal-1.6.3.dev3}/modal/_utils/pattern_utils.py +0 -0
- {modal-1.6.3.dev2 → modal-1.6.3.dev3}/modal/_utils/proxy_support.py +0 -0
- {modal-1.6.3.dev2 → modal-1.6.3.dev3}/modal/_utils/rand_pb_testing.py +0 -0
- {modal-1.6.3.dev2 → modal-1.6.3.dev3}/modal/_utils/sandbox_fs_utils.py +0 -0
- {modal-1.6.3.dev2 → modal-1.6.3.dev3}/modal/_utils/shell_utils.py +0 -0
- {modal-1.6.3.dev2 → modal-1.6.3.dev3}/modal/_utils/time_utils.py +0 -0
- {modal-1.6.3.dev2 → modal-1.6.3.dev3}/modal/_vendor/__init__.py +0 -0
- {modal-1.6.3.dev2 → modal-1.6.3.dev3}/modal/_vendor/a2wsgi_wsgi.py +0 -0
- {modal-1.6.3.dev2 → modal-1.6.3.dev3}/modal/_vendor/cloudpickle.py +0 -0
- {modal-1.6.3.dev2 → modal-1.6.3.dev3}/modal/_vendor/tblib.py +0 -0
- {modal-1.6.3.dev2 → modal-1.6.3.dev3}/modal/_vendor/version.py +0 -0
- {modal-1.6.3.dev2 → modal-1.6.3.dev3}/modal/_watcher.py +0 -0
- {modal-1.6.3.dev2 → modal-1.6.3.dev3}/modal/_workspace.py +0 -0
- {modal-1.6.3.dev2 → modal-1.6.3.dev3}/modal/app.py +0 -0
- {modal-1.6.3.dev2 → modal-1.6.3.dev3}/modal/app.pyi +0 -0
- {modal-1.6.3.dev2 → modal-1.6.3.dev3}/modal/billing.py +0 -0
- {modal-1.6.3.dev2 → modal-1.6.3.dev3}/modal/billing.pyi +0 -0
- {modal-1.6.3.dev2 → modal-1.6.3.dev3}/modal/builder/2023.12.312.txt +0 -0
- {modal-1.6.3.dev2 → modal-1.6.3.dev3}/modal/builder/2023.12.txt +0 -0
- {modal-1.6.3.dev2 → modal-1.6.3.dev3}/modal/builder/2024.04.txt +0 -0
- {modal-1.6.3.dev2 → modal-1.6.3.dev3}/modal/builder/2024.10.txt +0 -0
- {modal-1.6.3.dev2 → modal-1.6.3.dev3}/modal/builder/2025.06.txt +0 -0
- {modal-1.6.3.dev2 → modal-1.6.3.dev3}/modal/builder/PREVIEW.txt +0 -0
- {modal-1.6.3.dev2 → modal-1.6.3.dev3}/modal/builder/README.md +0 -0
- {modal-1.6.3.dev2 → modal-1.6.3.dev3}/modal/builder/base-images.json +0 -0
- {modal-1.6.3.dev2 → modal-1.6.3.dev3}/modal/call_graph.py +0 -0
- {modal-1.6.3.dev2 → modal-1.6.3.dev3}/modal/cli/__init__.py +0 -0
- {modal-1.6.3.dev2 → modal-1.6.3.dev3}/modal/cli/_download.py +0 -0
- {modal-1.6.3.dev2 → modal-1.6.3.dev3}/modal/cli/_help.py +0 -0
- {modal-1.6.3.dev2 → modal-1.6.3.dev3}/modal/cli/_logs.py +0 -0
- {modal-1.6.3.dev2 → modal-1.6.3.dev3}/modal/cli/_stats.py +0 -0
- {modal-1.6.3.dev2 → modal-1.6.3.dev3}/modal/cli/_traceback.py +0 -0
- {modal-1.6.3.dev2 → modal-1.6.3.dev3}/modal/cli/app.py +0 -0
- {modal-1.6.3.dev2 → modal-1.6.3.dev3}/modal/cli/billing.py +0 -0
- {modal-1.6.3.dev2 → modal-1.6.3.dev3}/modal/cli/changelog.py +0 -0
- {modal-1.6.3.dev2 → modal-1.6.3.dev3}/modal/cli/config.py +0 -0
- {modal-1.6.3.dev2 → modal-1.6.3.dev3}/modal/cli/container.py +0 -0
- {modal-1.6.3.dev2 → modal-1.6.3.dev3}/modal/cli/curl.py +0 -0
- {modal-1.6.3.dev2 → modal-1.6.3.dev3}/modal/cli/dashboard.py +0 -0
- {modal-1.6.3.dev2 → modal-1.6.3.dev3}/modal/cli/dict.py +0 -0
- {modal-1.6.3.dev2 → modal-1.6.3.dev3}/modal/cli/endpoint.py +0 -0
- {modal-1.6.3.dev2 → modal-1.6.3.dev3}/modal/cli/entry_point.py +0 -0
- {modal-1.6.3.dev2 → modal-1.6.3.dev3}/modal/cli/environment.py +0 -0
- {modal-1.6.3.dev2 → modal-1.6.3.dev3}/modal/cli/function.py +0 -0
- {modal-1.6.3.dev2 → modal-1.6.3.dev3}/modal/cli/image.py +0 -0
- {modal-1.6.3.dev2 → modal-1.6.3.dev3}/modal/cli/import_refs.py +0 -0
- {modal-1.6.3.dev2 → modal-1.6.3.dev3}/modal/cli/logo.py +0 -0
- {modal-1.6.3.dev2 → modal-1.6.3.dev3}/modal/cli/network_file_system.py +0 -0
- {modal-1.6.3.dev2 → modal-1.6.3.dev3}/modal/cli/profile.py +0 -0
- {modal-1.6.3.dev2 → modal-1.6.3.dev3}/modal/cli/queues.py +0 -0
- {modal-1.6.3.dev2 → modal-1.6.3.dev3}/modal/cli/run.py +0 -0
- {modal-1.6.3.dev2 → modal-1.6.3.dev3}/modal/cli/secret.py +0 -0
- {modal-1.6.3.dev2 → modal-1.6.3.dev3}/modal/cli/selector.py +0 -0
- {modal-1.6.3.dev2 → modal-1.6.3.dev3}/modal/cli/server.py +0 -0
- {modal-1.6.3.dev2 → modal-1.6.3.dev3}/modal/cli/shell.py +0 -0
- {modal-1.6.3.dev2 → modal-1.6.3.dev3}/modal/cli/skills.py +0 -0
- {modal-1.6.3.dev2 → modal-1.6.3.dev3}/modal/cli/token.py +0 -0
- {modal-1.6.3.dev2 → modal-1.6.3.dev3}/modal/cli/utils.py +0 -0
- {modal-1.6.3.dev2 → modal-1.6.3.dev3}/modal/cli/volume.py +0 -0
- {modal-1.6.3.dev2 → modal-1.6.3.dev3}/modal/cli/workspace.py +0 -0
- {modal-1.6.3.dev2 → modal-1.6.3.dev3}/modal/client.py +0 -0
- {modal-1.6.3.dev2 → modal-1.6.3.dev3}/modal/cloud_bucket_mount.py +0 -0
- {modal-1.6.3.dev2 → modal-1.6.3.dev3}/modal/cloud_bucket_mount.pyi +0 -0
- {modal-1.6.3.dev2 → modal-1.6.3.dev3}/modal/cls.py +0 -0
- {modal-1.6.3.dev2 → modal-1.6.3.dev3}/modal/cls.pyi +0 -0
- {modal-1.6.3.dev2 → modal-1.6.3.dev3}/modal/cluster.py +0 -0
- {modal-1.6.3.dev2 → modal-1.6.3.dev3}/modal/cluster.pyi +0 -0
- {modal-1.6.3.dev2 → modal-1.6.3.dev3}/modal/config.py +0 -0
- {modal-1.6.3.dev2 → modal-1.6.3.dev3}/modal/container_process.py +0 -0
- {modal-1.6.3.dev2 → modal-1.6.3.dev3}/modal/container_process.pyi +0 -0
- {modal-1.6.3.dev2 → modal-1.6.3.dev3}/modal/dict.py +0 -0
- {modal-1.6.3.dev2 → modal-1.6.3.dev3}/modal/dict.pyi +0 -0
- {modal-1.6.3.dev2 → modal-1.6.3.dev3}/modal/environments.py +0 -0
- {modal-1.6.3.dev2 → modal-1.6.3.dev3}/modal/environments.pyi +0 -0
- {modal-1.6.3.dev2 → modal-1.6.3.dev3}/modal/exception.py +0 -0
- {modal-1.6.3.dev2 → modal-1.6.3.dev3}/modal/experimental/__init__.py +0 -0
- {modal-1.6.3.dev2 → modal-1.6.3.dev3}/modal/experimental/_flash_container_entry.py +0 -0
- {modal-1.6.3.dev2 → modal-1.6.3.dev3}/modal/experimental/flash.py +0 -0
- {modal-1.6.3.dev2 → modal-1.6.3.dev3}/modal/experimental/flash.pyi +0 -0
- {modal-1.6.3.dev2 → modal-1.6.3.dev3}/modal/experimental/flash_server.py +0 -0
- {modal-1.6.3.dev2 → modal-1.6.3.dev3}/modal/experimental/flash_server.pyi +0 -0
- {modal-1.6.3.dev2 → modal-1.6.3.dev3}/modal/experimental/ipython.py +0 -0
- {modal-1.6.3.dev2 → modal-1.6.3.dev3}/modal/file_pattern_matcher.py +0 -0
- {modal-1.6.3.dev2 → modal-1.6.3.dev3}/modal/functions.py +0 -0
- {modal-1.6.3.dev2 → modal-1.6.3.dev3}/modal/functions.pyi +0 -0
- {modal-1.6.3.dev2 → modal-1.6.3.dev3}/modal/image.py +0 -0
- {modal-1.6.3.dev2 → modal-1.6.3.dev3}/modal/image.pyi +0 -0
- {modal-1.6.3.dev2 → modal-1.6.3.dev3}/modal/io_streams.py +0 -0
- {modal-1.6.3.dev2 → modal-1.6.3.dev3}/modal/io_streams.pyi +0 -0
- {modal-1.6.3.dev2 → modal-1.6.3.dev3}/modal/mount.py +0 -0
- {modal-1.6.3.dev2 → modal-1.6.3.dev3}/modal/mount.pyi +0 -0
- {modal-1.6.3.dev2 → modal-1.6.3.dev3}/modal/network_file_system.py +0 -0
- {modal-1.6.3.dev2 → modal-1.6.3.dev3}/modal/network_file_system.pyi +0 -0
- {modal-1.6.3.dev2 → modal-1.6.3.dev3}/modal/object.py +0 -0
- {modal-1.6.3.dev2 → modal-1.6.3.dev3}/modal/object.pyi +0 -0
- {modal-1.6.3.dev2 → modal-1.6.3.dev3}/modal/output.py +0 -0
- {modal-1.6.3.dev2 → modal-1.6.3.dev3}/modal/parallel_map.py +0 -0
- {modal-1.6.3.dev2 → modal-1.6.3.dev3}/modal/parallel_map.pyi +0 -0
- {modal-1.6.3.dev2 → modal-1.6.3.dev3}/modal/partial_function.py +0 -0
- {modal-1.6.3.dev2 → modal-1.6.3.dev3}/modal/partial_function.pyi +0 -0
- {modal-1.6.3.dev2 → modal-1.6.3.dev3}/modal/proxy.py +0 -0
- {modal-1.6.3.dev2 → modal-1.6.3.dev3}/modal/proxy.pyi +0 -0
- {modal-1.6.3.dev2 → modal-1.6.3.dev3}/modal/py.typed +0 -0
- {modal-1.6.3.dev2 → modal-1.6.3.dev3}/modal/queue.py +0 -0
- {modal-1.6.3.dev2 → modal-1.6.3.dev3}/modal/queue.pyi +0 -0
- {modal-1.6.3.dev2 → modal-1.6.3.dev3}/modal/retries.py +0 -0
- {modal-1.6.3.dev2 → modal-1.6.3.dev3}/modal/runner.py +0 -0
- {modal-1.6.3.dev2 → modal-1.6.3.dev3}/modal/runner.pyi +0 -0
- {modal-1.6.3.dev2 → modal-1.6.3.dev3}/modal/running_app.py +0 -0
- {modal-1.6.3.dev2 → modal-1.6.3.dev3}/modal/sandbox/__init__.py +0 -0
- {modal-1.6.3.dev2 → modal-1.6.3.dev3}/modal/sandbox/_common.py +0 -0
- {modal-1.6.3.dev2 → modal-1.6.3.dev3}/modal/sandbox/_filesystem.py +0 -0
- {modal-1.6.3.dev2 → modal-1.6.3.dev3}/modal/sandbox/_sandbox.py +0 -0
- {modal-1.6.3.dev2 → modal-1.6.3.dev3}/modal/sandbox/_sidecar.py +0 -0
- {modal-1.6.3.dev2 → modal-1.6.3.dev3}/modal/sandbox/_snapshot.py +0 -0
- {modal-1.6.3.dev2 → modal-1.6.3.dev3}/modal/sandbox/sandbox.py +0 -0
- {modal-1.6.3.dev2 → modal-1.6.3.dev3}/modal/sandbox/sandbox.pyi +0 -0
- {modal-1.6.3.dev2 → modal-1.6.3.dev3}/modal/schedule.py +0 -0
- {modal-1.6.3.dev2 → modal-1.6.3.dev3}/modal/scheduler_placement.py +0 -0
- {modal-1.6.3.dev2 → modal-1.6.3.dev3}/modal/secret.py +0 -0
- {modal-1.6.3.dev2 → modal-1.6.3.dev3}/modal/secret.pyi +0 -0
- {modal-1.6.3.dev2 → modal-1.6.3.dev3}/modal/server.py +0 -0
- {modal-1.6.3.dev2 → modal-1.6.3.dev3}/modal/server.pyi +0 -0
- {modal-1.6.3.dev2 → modal-1.6.3.dev3}/modal/serving.py +0 -0
- {modal-1.6.3.dev2 → modal-1.6.3.dev3}/modal/serving.pyi +0 -0
- {modal-1.6.3.dev2 → modal-1.6.3.dev3}/modal/skills/modal/SKILL.md +0 -0
- {modal-1.6.3.dev2 → modal-1.6.3.dev3}/modal/stream_type.py +0 -0
- {modal-1.6.3.dev2 → modal-1.6.3.dev3}/modal/token_flow.py +0 -0
- {modal-1.6.3.dev2 → modal-1.6.3.dev3}/modal/token_flow.pyi +0 -0
- {modal-1.6.3.dev2 → modal-1.6.3.dev3}/modal/types.py +0 -0
- {modal-1.6.3.dev2 → modal-1.6.3.dev3}/modal/volume.py +0 -0
- {modal-1.6.3.dev2 → modal-1.6.3.dev3}/modal/volume.pyi +0 -0
- {modal-1.6.3.dev2 → modal-1.6.3.dev3}/modal/workspace.py +0 -0
- {modal-1.6.3.dev2 → modal-1.6.3.dev3}/modal/workspace.pyi +0 -0
- {modal-1.6.3.dev2 → modal-1.6.3.dev3}/modal.egg-info/SOURCES.txt +0 -0
- {modal-1.6.3.dev2 → modal-1.6.3.dev3}/modal.egg-info/dependency_links.txt +0 -0
- {modal-1.6.3.dev2 → modal-1.6.3.dev3}/modal.egg-info/entry_points.txt +0 -0
- {modal-1.6.3.dev2 → modal-1.6.3.dev3}/modal.egg-info/requires.txt +0 -0
- {modal-1.6.3.dev2 → modal-1.6.3.dev3}/modal.egg-info/top_level.txt +0 -0
- {modal-1.6.3.dev2 → modal-1.6.3.dev3}/modal_docs/__init__.py +0 -0
- {modal-1.6.3.dev2 → modal-1.6.3.dev3}/modal_docs/gen_cli_docs.py +0 -0
- {modal-1.6.3.dev2 → modal-1.6.3.dev3}/modal_docs/gen_cli_docs_main.py +0 -0
- {modal-1.6.3.dev2 → modal-1.6.3.dev3}/modal_docs/gen_reference_docs.py +0 -0
- {modal-1.6.3.dev2 → modal-1.6.3.dev3}/modal_docs/gen_reference_docs_main.py +0 -0
- {modal-1.6.3.dev2 → modal-1.6.3.dev3}/modal_docs/mdmd/__init__.py +0 -0
- {modal-1.6.3.dev2 → modal-1.6.3.dev3}/modal_docs/mdmd/mdmd.py +0 -0
- {modal-1.6.3.dev2 → modal-1.6.3.dev3}/modal_docs/mdmd/signatures.py +0 -0
- {modal-1.6.3.dev2 → modal-1.6.3.dev3}/modal_docs/mdmd/types.py +0 -0
- {modal-1.6.3.dev2 → modal-1.6.3.dev3}/modal_docs/reference_intro.md +0 -0
- {modal-1.6.3.dev2 → modal-1.6.3.dev3}/modal_proto/__init__.py +0 -0
- {modal-1.6.3.dev2 → modal-1.6.3.dev3}/modal_proto/py.typed +0 -0
- {modal-1.6.3.dev2 → modal-1.6.3.dev3}/modal_proto/task_command_router_grpc.py +0 -0
- {modal-1.6.3.dev2 → modal-1.6.3.dev3}/modal_proto/task_command_router_pb2.py +0 -0
- {modal-1.6.3.dev2 → modal-1.6.3.dev3}/modal_proto/task_command_router_pb2.pyi +0 -0
- {modal-1.6.3.dev2 → modal-1.6.3.dev3}/modal_proto/task_command_router_pb2_grpc.py +0 -0
- {modal-1.6.3.dev2 → modal-1.6.3.dev3}/modal_proto/task_command_router_pb2_grpc.pyi +0 -0
- {modal-1.6.3.dev2 → modal-1.6.3.dev3}/modal_version/__main__.py +0 -0
- {modal-1.6.3.dev2 → modal-1.6.3.dev3}/pyproject.toml +0 -0
- {modal-1.6.3.dev2 → modal-1.6.3.dev3}/setup.cfg +0 -0
|
@@ -80,7 +80,7 @@ class _Client:
|
|
|
80
80
|
server_url: str,
|
|
81
81
|
client_type: int,
|
|
82
82
|
credentials: typing.Optional[tuple[str, str]],
|
|
83
|
-
version: str = "1.6.3.
|
|
83
|
+
version: str = "1.6.3.dev3",
|
|
84
84
|
*,
|
|
85
85
|
oauth_credentials: typing.Optional[_OAuthCredentials] = None,
|
|
86
86
|
):
|
|
@@ -290,7 +290,7 @@ class Client:
|
|
|
290
290
|
server_url: str,
|
|
291
291
|
client_type: int,
|
|
292
292
|
credentials: typing.Optional[tuple[str, str]],
|
|
293
|
-
version: str = "1.6.3.
|
|
293
|
+
version: str = "1.6.3.dev3",
|
|
294
294
|
*,
|
|
295
295
|
oauth_credentials: typing.Optional[_OAuthCredentials] = None,
|
|
296
296
|
):
|
|
@@ -137,7 +137,8 @@ async def call_with_retries_on_transient_errors(
|
|
|
137
137
|
the caller to decide whether to further translate the surfaced
|
|
138
138
|
exception (e.g., into a TimeoutError) based on the deadline check.
|
|
139
139
|
The caller is also responsible for propagating the remaining budget
|
|
140
|
-
into `func()` (typically as the per-call gRPC timeout).
|
|
140
|
+
into `func()` (typically as the per-call gRPC timeout). A server-requested
|
|
141
|
+
throttle wait that doesn't fit before the deadline raises a TimeoutError.
|
|
141
142
|
rpc_name: RPC name to include in retry diagnostics.
|
|
142
143
|
exec_id: Execution ID to include in retry diagnostics, for correlating
|
|
143
144
|
the retries of concurrent executions.
|
|
@@ -170,10 +171,8 @@ async def call_with_retries_on_transient_errors(
|
|
|
170
171
|
return False
|
|
171
172
|
return fits_deadline(0.0)
|
|
172
173
|
|
|
173
|
-
def
|
|
174
|
-
|
|
175
|
-
return False
|
|
176
|
-
return fits_deadline(delay)
|
|
174
|
+
def fits_throttle_budget(delay: float) -> bool:
|
|
175
|
+
return max_throttle_wait is None or throttle_wait_total + delay <= max_throttle_wait
|
|
177
176
|
|
|
178
177
|
async def sleep_and_advance(e: Exception, *, count_failure: bool = True, throttle_delay: float | None = None):
|
|
179
178
|
nonlocal delay_secs, num_retries, num_throttled_retries, throttle_wait_total, consecutive_failures, warned
|
|
@@ -215,7 +214,9 @@ async def call_with_retries_on_transient_errors(
|
|
|
215
214
|
except GRPCError as e:
|
|
216
215
|
retry_after = server_retry_after(e)
|
|
217
216
|
if retry_after is not None:
|
|
218
|
-
if not
|
|
217
|
+
if not fits_deadline(retry_after):
|
|
218
|
+
raise ModalTimeoutError("Timeout expired") from e
|
|
219
|
+
if not fits_throttle_budget(retry_after):
|
|
219
220
|
raise
|
|
220
221
|
# Throttling says nothing about the connection's health.
|
|
221
222
|
await sleep_and_advance(e, count_failure=False, throttle_delay=retry_after)
|
|
@@ -1244,13 +1245,7 @@ class TaskCommandRouterClient:
|
|
|
1244
1245
|
timeout_deadline=timeout_deadline,
|
|
1245
1246
|
)
|
|
1246
1247
|
except Exception as exc:
|
|
1247
|
-
|
|
1248
|
-
# budget is given up without sleeping, so treat it as a timeout too.
|
|
1249
|
-
retry_after = server_retry_after_secs(getattr(exc, "_grpc_details", None)) or 0.0
|
|
1250
|
-
if (
|
|
1251
|
-
time.monotonic() + retry_after >= timeout_deadline
|
|
1252
|
-
or getattr(exc, "_grpc_status", None) == Status.DEADLINE_EXCEEDED
|
|
1253
|
-
):
|
|
1248
|
+
if time.monotonic() >= timeout_deadline or getattr(exc, "_grpc_status", None) == Status.DEADLINE_EXCEEDED:
|
|
1254
1249
|
raise ModalTimeoutError("Timeout expired")
|
|
1255
1250
|
raise
|
|
1256
1251
|
|
|
@@ -127,6 +127,18 @@ class ModalClientBase(abc.ABC):
|
|
|
127
127
|
async def AttemptStart(self, stream: 'grpclib.server.Stream[modal_proto.api_pb2.AttemptStartRequest, modal_proto.api_pb2.AttemptStartResponse]') -> None:
|
|
128
128
|
pass
|
|
129
129
|
|
|
130
|
+
@abc.abstractmethod
|
|
131
|
+
async def AuditLogV2Count(self, stream: 'grpclib.server.Stream[modal_proto.api_pb2.AuditLogV2CountRequest, modal_proto.api_pb2.AuditLogV2CountResponse]') -> None:
|
|
132
|
+
pass
|
|
133
|
+
|
|
134
|
+
@abc.abstractmethod
|
|
135
|
+
async def AuditLogV2List(self, stream: 'grpclib.server.Stream[modal_proto.api_pb2.AuditLogV2ListRequest, modal_proto.api_pb2.AuditLogV2ListResponse]') -> None:
|
|
136
|
+
pass
|
|
137
|
+
|
|
138
|
+
@abc.abstractmethod
|
|
139
|
+
async def AuditLogV2Plan(self, stream: 'grpclib.server.Stream[modal_proto.api_pb2.AuditLogV2PlanRequest, modal_proto.api_pb2.AuditLogV2PlanResponse]') -> None:
|
|
140
|
+
pass
|
|
141
|
+
|
|
130
142
|
@abc.abstractmethod
|
|
131
143
|
async def AuthTokenGet(self, stream: 'grpclib.server.Stream[modal_proto.api_pb2.AuthTokenGetRequest, modal_proto.api_pb2.AuthTokenGetResponse]') -> None:
|
|
132
144
|
pass
|
|
@@ -1251,6 +1263,24 @@ class ModalClientBase(abc.ABC):
|
|
|
1251
1263
|
modal_proto.api_pb2.AttemptStartRequest,
|
|
1252
1264
|
modal_proto.api_pb2.AttemptStartResponse,
|
|
1253
1265
|
),
|
|
1266
|
+
'/modal.client.ModalClient/AuditLogV2Count': grpclib.const.Handler(
|
|
1267
|
+
self.AuditLogV2Count,
|
|
1268
|
+
grpclib.const.Cardinality.UNARY_UNARY,
|
|
1269
|
+
modal_proto.api_pb2.AuditLogV2CountRequest,
|
|
1270
|
+
modal_proto.api_pb2.AuditLogV2CountResponse,
|
|
1271
|
+
),
|
|
1272
|
+
'/modal.client.ModalClient/AuditLogV2List': grpclib.const.Handler(
|
|
1273
|
+
self.AuditLogV2List,
|
|
1274
|
+
grpclib.const.Cardinality.UNARY_UNARY,
|
|
1275
|
+
modal_proto.api_pb2.AuditLogV2ListRequest,
|
|
1276
|
+
modal_proto.api_pb2.AuditLogV2ListResponse,
|
|
1277
|
+
),
|
|
1278
|
+
'/modal.client.ModalClient/AuditLogV2Plan': grpclib.const.Handler(
|
|
1279
|
+
self.AuditLogV2Plan,
|
|
1280
|
+
grpclib.const.Cardinality.UNARY_UNARY,
|
|
1281
|
+
modal_proto.api_pb2.AuditLogV2PlanRequest,
|
|
1282
|
+
modal_proto.api_pb2.AuditLogV2PlanResponse,
|
|
1283
|
+
),
|
|
1254
1284
|
'/modal.client.ModalClient/AuthTokenGet': grpclib.const.Handler(
|
|
1255
1285
|
self.AuthTokenGet,
|
|
1256
1286
|
grpclib.const.Cardinality.UNARY_UNARY,
|
|
@@ -2859,6 +2889,24 @@ class ModalClientStub:
|
|
|
2859
2889
|
modal_proto.api_pb2.AttemptStartRequest,
|
|
2860
2890
|
modal_proto.api_pb2.AttemptStartResponse,
|
|
2861
2891
|
)
|
|
2892
|
+
self.AuditLogV2Count = grpclib.client.UnaryUnaryMethod(
|
|
2893
|
+
channel,
|
|
2894
|
+
'/modal.client.ModalClient/AuditLogV2Count',
|
|
2895
|
+
modal_proto.api_pb2.AuditLogV2CountRequest,
|
|
2896
|
+
modal_proto.api_pb2.AuditLogV2CountResponse,
|
|
2897
|
+
)
|
|
2898
|
+
self.AuditLogV2List = grpclib.client.UnaryUnaryMethod(
|
|
2899
|
+
channel,
|
|
2900
|
+
'/modal.client.ModalClient/AuditLogV2List',
|
|
2901
|
+
modal_proto.api_pb2.AuditLogV2ListRequest,
|
|
2902
|
+
modal_proto.api_pb2.AuditLogV2ListResponse,
|
|
2903
|
+
)
|
|
2904
|
+
self.AuditLogV2Plan = grpclib.client.UnaryUnaryMethod(
|
|
2905
|
+
channel,
|
|
2906
|
+
'/modal.client.ModalClient/AuditLogV2Plan',
|
|
2907
|
+
modal_proto.api_pb2.AuditLogV2PlanRequest,
|
|
2908
|
+
modal_proto.api_pb2.AuditLogV2PlanResponse,
|
|
2909
|
+
)
|
|
2862
2910
|
self.AuthTokenGet = grpclib.client.UnaryUnaryMethod(
|
|
2863
2911
|
channel,
|
|
2864
2912
|
'/modal.client.ModalClient/AuthTokenGet',
|