modal 1.5.6.dev5__tar.gz → 1.5.6.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.6.dev5 → modal-1.5.6.dev6}/PKG-INFO +1 -1
- {modal-1.5.6.dev5 → modal-1.5.6.dev6}/modal/_utils/grpc_utils.py +17 -1
- {modal-1.5.6.dev5 → modal-1.5.6.dev6}/modal/_utils/task_command_router_client.py +1 -1
- {modal-1.5.6.dev5 → modal-1.5.6.dev6}/modal/client.pyi +2 -2
- {modal-1.5.6.dev5 → modal-1.5.6.dev6}/modal/sandbox.py +1 -1
- {modal-1.5.6.dev5 → modal-1.5.6.dev6}/modal.egg-info/PKG-INFO +1 -1
- {modal-1.5.6.dev5 → modal-1.5.6.dev6}/modal_version/__init__.py +1 -1
- {modal-1.5.6.dev5 → modal-1.5.6.dev6}/LICENSE +0 -0
- {modal-1.5.6.dev5 → modal-1.5.6.dev6}/README.md +0 -0
- {modal-1.5.6.dev5 → modal-1.5.6.dev6}/modal/__init__.py +0 -0
- {modal-1.5.6.dev5 → modal-1.5.6.dev6}/modal/__main__.py +0 -0
- {modal-1.5.6.dev5 → modal-1.5.6.dev6}/modal/_billing.py +0 -0
- {modal-1.5.6.dev5 → modal-1.5.6.dev6}/modal/_clustered_functions.py +0 -0
- {modal-1.5.6.dev5 → modal-1.5.6.dev6}/modal/_clustered_functions.pyi +0 -0
- {modal-1.5.6.dev5 → modal-1.5.6.dev6}/modal/_container_entrypoint.py +0 -0
- {modal-1.5.6.dev5 → modal-1.5.6.dev6}/modal/_environments.py +0 -0
- {modal-1.5.6.dev5 → modal-1.5.6.dev6}/modal/_function_variants.py +0 -0
- {modal-1.5.6.dev5 → modal-1.5.6.dev6}/modal/_functions.py +0 -0
- {modal-1.5.6.dev5 → modal-1.5.6.dev6}/modal/_grpc_client.py +0 -0
- {modal-1.5.6.dev5 → modal-1.5.6.dev6}/modal/_image.py +0 -0
- {modal-1.5.6.dev5 → modal-1.5.6.dev6}/modal/_ipython.py +0 -0
- {modal-1.5.6.dev5 → modal-1.5.6.dev6}/modal/_load_context.py +0 -0
- {modal-1.5.6.dev5 → modal-1.5.6.dev6}/modal/_location.py +0 -0
- {modal-1.5.6.dev5 → modal-1.5.6.dev6}/modal/_logs.py +0 -0
- {modal-1.5.6.dev5 → modal-1.5.6.dev6}/modal/_logs_manager.py +0 -0
- {modal-1.5.6.dev5 → modal-1.5.6.dev6}/modal/_logs_manager.pyi +0 -0
- {modal-1.5.6.dev5 → modal-1.5.6.dev6}/modal/_object.py +0 -0
- {modal-1.5.6.dev5 → modal-1.5.6.dev6}/modal/_output/__init__.py +0 -0
- {modal-1.5.6.dev5 → modal-1.5.6.dev6}/modal/_output/manager.py +0 -0
- {modal-1.5.6.dev5 → modal-1.5.6.dev6}/modal/_output/pty.py +0 -0
- {modal-1.5.6.dev5 → modal-1.5.6.dev6}/modal/_output/rich.py +0 -0
- {modal-1.5.6.dev5 → modal-1.5.6.dev6}/modal/_output/status.py +0 -0
- {modal-1.5.6.dev5 → modal-1.5.6.dev6}/modal/_partial_function.py +0 -0
- {modal-1.5.6.dev5 → modal-1.5.6.dev6}/modal/_resolver.py +0 -0
- {modal-1.5.6.dev5 → modal-1.5.6.dev6}/modal/_resources.py +0 -0
- {modal-1.5.6.dev5 → modal-1.5.6.dev6}/modal/_runtime/__init__.py +0 -0
- {modal-1.5.6.dev5 → modal-1.5.6.dev6}/modal/_runtime/asgi.py +0 -0
- {modal-1.5.6.dev5 → modal-1.5.6.dev6}/modal/_runtime/container_io_manager.py +0 -0
- {modal-1.5.6.dev5 → modal-1.5.6.dev6}/modal/_runtime/container_io_manager.pyi +0 -0
- {modal-1.5.6.dev5 → modal-1.5.6.dev6}/modal/_runtime/execution_context.py +0 -0
- {modal-1.5.6.dev5 → modal-1.5.6.dev6}/modal/_runtime/execution_context.pyi +0 -0
- {modal-1.5.6.dev5 → modal-1.5.6.dev6}/modal/_runtime/gpu_memory_snapshot.py +0 -0
- {modal-1.5.6.dev5 → modal-1.5.6.dev6}/modal/_runtime/task_lifecycle_manager.py +0 -0
- {modal-1.5.6.dev5 → modal-1.5.6.dev6}/modal/_runtime/task_lifecycle_manager.pyi +0 -0
- {modal-1.5.6.dev5 → modal-1.5.6.dev6}/modal/_runtime/telemetry.py +0 -0
- {modal-1.5.6.dev5 → modal-1.5.6.dev6}/modal/_runtime/user_code_event_loop.py +0 -0
- {modal-1.5.6.dev5 → modal-1.5.6.dev6}/modal/_runtime/user_code_imports.py +0 -0
- {modal-1.5.6.dev5 → modal-1.5.6.dev6}/modal/_serialization.py +0 -0
- {modal-1.5.6.dev5 → modal-1.5.6.dev6}/modal/_server.py +0 -0
- {modal-1.5.6.dev5 → modal-1.5.6.dev6}/modal/_supports_logs.py +0 -0
- {modal-1.5.6.dev5 → modal-1.5.6.dev6}/modal/_traceback.py +0 -0
- {modal-1.5.6.dev5 → modal-1.5.6.dev6}/modal/_tunnel.py +0 -0
- {modal-1.5.6.dev5 → modal-1.5.6.dev6}/modal/_tunnel.pyi +0 -0
- {modal-1.5.6.dev5 → modal-1.5.6.dev6}/modal/_type_manager.py +0 -0
- {modal-1.5.6.dev5 → modal-1.5.6.dev6}/modal/_utils/__init__.py +0 -0
- {modal-1.5.6.dev5 → modal-1.5.6.dev6}/modal/_utils/app_utils.py +0 -0
- {modal-1.5.6.dev5 → modal-1.5.6.dev6}/modal/_utils/async_utils.py +0 -0
- {modal-1.5.6.dev5 → modal-1.5.6.dev6}/modal/_utils/auth_token_manager.py +0 -0
- {modal-1.5.6.dev5 → modal-1.5.6.dev6}/modal/_utils/blob_utils.py +0 -0
- {modal-1.5.6.dev5 → modal-1.5.6.dev6}/modal/_utils/browser_utils.py +0 -0
- {modal-1.5.6.dev5 → modal-1.5.6.dev6}/modal/_utils/bytes_io_segment_payload.py +0 -0
- {modal-1.5.6.dev5 → modal-1.5.6.dev6}/modal/_utils/curl_utils.py +0 -0
- {modal-1.5.6.dev5 → modal-1.5.6.dev6}/modal/_utils/deprecation.py +0 -0
- {modal-1.5.6.dev5 → modal-1.5.6.dev6}/modal/_utils/display_utils.py +0 -0
- {modal-1.5.6.dev5 → modal-1.5.6.dev6}/modal/_utils/docker_utils.py +0 -0
- {modal-1.5.6.dev5 → modal-1.5.6.dev6}/modal/_utils/function_utils.py +0 -0
- {modal-1.5.6.dev5 → modal-1.5.6.dev6}/modal/_utils/git_utils.py +0 -0
- {modal-1.5.6.dev5 → modal-1.5.6.dev6}/modal/_utils/grpc_testing.py +0 -0
- {modal-1.5.6.dev5 → modal-1.5.6.dev6}/modal/_utils/hash_utils.py +0 -0
- {modal-1.5.6.dev5 → modal-1.5.6.dev6}/modal/_utils/http_utils.py +0 -0
- {modal-1.5.6.dev5 → modal-1.5.6.dev6}/modal/_utils/jwt_utils.py +0 -0
- {modal-1.5.6.dev5 → modal-1.5.6.dev6}/modal/_utils/logger.py +0 -0
- {modal-1.5.6.dev5 → modal-1.5.6.dev6}/modal/_utils/mount_utils.py +0 -0
- {modal-1.5.6.dev5 → modal-1.5.6.dev6}/modal/_utils/name_utils.py +0 -0
- {modal-1.5.6.dev5 → modal-1.5.6.dev6}/modal/_utils/package_utils.py +0 -0
- {modal-1.5.6.dev5 → modal-1.5.6.dev6}/modal/_utils/pattern_utils.py +0 -0
- {modal-1.5.6.dev5 → modal-1.5.6.dev6}/modal/_utils/proxy_support.py +0 -0
- {modal-1.5.6.dev5 → modal-1.5.6.dev6}/modal/_utils/rand_pb_testing.py +0 -0
- {modal-1.5.6.dev5 → modal-1.5.6.dev6}/modal/_utils/sandbox_fs_utils.py +0 -0
- {modal-1.5.6.dev5 → modal-1.5.6.dev6}/modal/_utils/shell_utils.py +0 -0
- {modal-1.5.6.dev5 → modal-1.5.6.dev6}/modal/_utils/time_utils.py +0 -0
- {modal-1.5.6.dev5 → modal-1.5.6.dev6}/modal/_vendor/__init__.py +0 -0
- {modal-1.5.6.dev5 → modal-1.5.6.dev6}/modal/_vendor/a2wsgi_wsgi.py +0 -0
- {modal-1.5.6.dev5 → modal-1.5.6.dev6}/modal/_vendor/cloudpickle.py +0 -0
- {modal-1.5.6.dev5 → modal-1.5.6.dev6}/modal/_vendor/tblib.py +0 -0
- {modal-1.5.6.dev5 → modal-1.5.6.dev6}/modal/_vendor/version.py +0 -0
- {modal-1.5.6.dev5 → modal-1.5.6.dev6}/modal/_watcher.py +0 -0
- {modal-1.5.6.dev5 → modal-1.5.6.dev6}/modal/_workspace.py +0 -0
- {modal-1.5.6.dev5 → modal-1.5.6.dev6}/modal/app.py +0 -0
- {modal-1.5.6.dev5 → modal-1.5.6.dev6}/modal/app.pyi +0 -0
- {modal-1.5.6.dev5 → modal-1.5.6.dev6}/modal/billing.py +0 -0
- {modal-1.5.6.dev5 → modal-1.5.6.dev6}/modal/billing.pyi +0 -0
- {modal-1.5.6.dev5 → modal-1.5.6.dev6}/modal/builder/2023.12.312.txt +0 -0
- {modal-1.5.6.dev5 → modal-1.5.6.dev6}/modal/builder/2023.12.txt +0 -0
- {modal-1.5.6.dev5 → modal-1.5.6.dev6}/modal/builder/2024.04.txt +0 -0
- {modal-1.5.6.dev5 → modal-1.5.6.dev6}/modal/builder/2024.10.txt +0 -0
- {modal-1.5.6.dev5 → modal-1.5.6.dev6}/modal/builder/2025.06.txt +0 -0
- {modal-1.5.6.dev5 → modal-1.5.6.dev6}/modal/builder/PREVIEW.txt +0 -0
- {modal-1.5.6.dev5 → modal-1.5.6.dev6}/modal/builder/README.md +0 -0
- {modal-1.5.6.dev5 → modal-1.5.6.dev6}/modal/builder/base-images.json +0 -0
- {modal-1.5.6.dev5 → modal-1.5.6.dev6}/modal/call_graph.py +0 -0
- {modal-1.5.6.dev5 → modal-1.5.6.dev6}/modal/cli/__init__.py +0 -0
- {modal-1.5.6.dev5 → modal-1.5.6.dev6}/modal/cli/_download.py +0 -0
- {modal-1.5.6.dev5 → modal-1.5.6.dev6}/modal/cli/_help.py +0 -0
- {modal-1.5.6.dev5 → modal-1.5.6.dev6}/modal/cli/_traceback.py +0 -0
- {modal-1.5.6.dev5 → modal-1.5.6.dev6}/modal/cli/app.py +0 -0
- {modal-1.5.6.dev5 → modal-1.5.6.dev6}/modal/cli/billing.py +0 -0
- {modal-1.5.6.dev5 → modal-1.5.6.dev6}/modal/cli/bootstrap.py +0 -0
- {modal-1.5.6.dev5 → modal-1.5.6.dev6}/modal/cli/changelog.py +0 -0
- {modal-1.5.6.dev5 → modal-1.5.6.dev6}/modal/cli/cluster.py +0 -0
- {modal-1.5.6.dev5 → modal-1.5.6.dev6}/modal/cli/config.py +0 -0
- {modal-1.5.6.dev5 → modal-1.5.6.dev6}/modal/cli/container.py +0 -0
- {modal-1.5.6.dev5 → modal-1.5.6.dev6}/modal/cli/curl.py +0 -0
- {modal-1.5.6.dev5 → modal-1.5.6.dev6}/modal/cli/dashboard.py +0 -0
- {modal-1.5.6.dev5 → modal-1.5.6.dev6}/modal/cli/dict.py +0 -0
- {modal-1.5.6.dev5 → modal-1.5.6.dev6}/modal/cli/endpoint.py +0 -0
- {modal-1.5.6.dev5 → modal-1.5.6.dev6}/modal/cli/entry_point.py +0 -0
- {modal-1.5.6.dev5 → modal-1.5.6.dev6}/modal/cli/environment.py +0 -0
- {modal-1.5.6.dev5 → modal-1.5.6.dev6}/modal/cli/image.py +0 -0
- {modal-1.5.6.dev5 → modal-1.5.6.dev6}/modal/cli/import_refs.py +0 -0
- {modal-1.5.6.dev5 → modal-1.5.6.dev6}/modal/cli/launch.py +0 -0
- {modal-1.5.6.dev5 → modal-1.5.6.dev6}/modal/cli/logo.py +0 -0
- {modal-1.5.6.dev5 → modal-1.5.6.dev6}/modal/cli/network_file_system.py +0 -0
- {modal-1.5.6.dev5 → modal-1.5.6.dev6}/modal/cli/profile.py +0 -0
- {modal-1.5.6.dev5 → modal-1.5.6.dev6}/modal/cli/programs/__init__.py +0 -0
- {modal-1.5.6.dev5 → modal-1.5.6.dev6}/modal/cli/programs/run_jupyter.py +0 -0
- {modal-1.5.6.dev5 → modal-1.5.6.dev6}/modal/cli/programs/vscode.py +0 -0
- {modal-1.5.6.dev5 → modal-1.5.6.dev6}/modal/cli/queues.py +0 -0
- {modal-1.5.6.dev5 → modal-1.5.6.dev6}/modal/cli/run.py +0 -0
- {modal-1.5.6.dev5 → modal-1.5.6.dev6}/modal/cli/secret.py +0 -0
- {modal-1.5.6.dev5 → modal-1.5.6.dev6}/modal/cli/selector.py +0 -0
- {modal-1.5.6.dev5 → modal-1.5.6.dev6}/modal/cli/shell.py +0 -0
- {modal-1.5.6.dev5 → modal-1.5.6.dev6}/modal/cli/skills.py +0 -0
- {modal-1.5.6.dev5 → modal-1.5.6.dev6}/modal/cli/token.py +0 -0
- {modal-1.5.6.dev5 → modal-1.5.6.dev6}/modal/cli/utils.py +0 -0
- {modal-1.5.6.dev5 → modal-1.5.6.dev6}/modal/cli/volume.py +0 -0
- {modal-1.5.6.dev5 → modal-1.5.6.dev6}/modal/cli/workspace.py +0 -0
- {modal-1.5.6.dev5 → modal-1.5.6.dev6}/modal/client.py +0 -0
- {modal-1.5.6.dev5 → modal-1.5.6.dev6}/modal/cloud_bucket_mount.py +0 -0
- {modal-1.5.6.dev5 → modal-1.5.6.dev6}/modal/cloud_bucket_mount.pyi +0 -0
- {modal-1.5.6.dev5 → modal-1.5.6.dev6}/modal/cls.py +0 -0
- {modal-1.5.6.dev5 → modal-1.5.6.dev6}/modal/cls.pyi +0 -0
- {modal-1.5.6.dev5 → modal-1.5.6.dev6}/modal/config.py +0 -0
- {modal-1.5.6.dev5 → modal-1.5.6.dev6}/modal/container_process.py +0 -0
- {modal-1.5.6.dev5 → modal-1.5.6.dev6}/modal/container_process.pyi +0 -0
- {modal-1.5.6.dev5 → modal-1.5.6.dev6}/modal/dict.py +0 -0
- {modal-1.5.6.dev5 → modal-1.5.6.dev6}/modal/dict.pyi +0 -0
- {modal-1.5.6.dev5 → modal-1.5.6.dev6}/modal/environments.py +0 -0
- {modal-1.5.6.dev5 → modal-1.5.6.dev6}/modal/environments.pyi +0 -0
- {modal-1.5.6.dev5 → modal-1.5.6.dev6}/modal/exception.py +0 -0
- {modal-1.5.6.dev5 → modal-1.5.6.dev6}/modal/experimental/__init__.py +0 -0
- {modal-1.5.6.dev5 → modal-1.5.6.dev6}/modal/experimental/flash.py +0 -0
- {modal-1.5.6.dev5 → modal-1.5.6.dev6}/modal/experimental/flash.pyi +0 -0
- {modal-1.5.6.dev5 → modal-1.5.6.dev6}/modal/experimental/ipython.py +0 -0
- {modal-1.5.6.dev5 → modal-1.5.6.dev6}/modal/file_io.py +0 -0
- {modal-1.5.6.dev5 → modal-1.5.6.dev6}/modal/file_io.pyi +0 -0
- {modal-1.5.6.dev5 → modal-1.5.6.dev6}/modal/file_pattern_matcher.py +0 -0
- {modal-1.5.6.dev5 → modal-1.5.6.dev6}/modal/functions.py +0 -0
- {modal-1.5.6.dev5 → modal-1.5.6.dev6}/modal/functions.pyi +0 -0
- {modal-1.5.6.dev5 → modal-1.5.6.dev6}/modal/image.py +0 -0
- {modal-1.5.6.dev5 → modal-1.5.6.dev6}/modal/image.pyi +0 -0
- {modal-1.5.6.dev5 → modal-1.5.6.dev6}/modal/io_streams.py +0 -0
- {modal-1.5.6.dev5 → modal-1.5.6.dev6}/modal/io_streams.pyi +0 -0
- {modal-1.5.6.dev5 → modal-1.5.6.dev6}/modal/mount.py +0 -0
- {modal-1.5.6.dev5 → modal-1.5.6.dev6}/modal/mount.pyi +0 -0
- {modal-1.5.6.dev5 → modal-1.5.6.dev6}/modal/network_file_system.py +0 -0
- {modal-1.5.6.dev5 → modal-1.5.6.dev6}/modal/network_file_system.pyi +0 -0
- {modal-1.5.6.dev5 → modal-1.5.6.dev6}/modal/object.py +0 -0
- {modal-1.5.6.dev5 → modal-1.5.6.dev6}/modal/object.pyi +0 -0
- {modal-1.5.6.dev5 → modal-1.5.6.dev6}/modal/output.py +0 -0
- {modal-1.5.6.dev5 → modal-1.5.6.dev6}/modal/parallel_map.py +0 -0
- {modal-1.5.6.dev5 → modal-1.5.6.dev6}/modal/parallel_map.pyi +0 -0
- {modal-1.5.6.dev5 → modal-1.5.6.dev6}/modal/partial_function.py +0 -0
- {modal-1.5.6.dev5 → modal-1.5.6.dev6}/modal/partial_function.pyi +0 -0
- {modal-1.5.6.dev5 → modal-1.5.6.dev6}/modal/proxy.py +0 -0
- {modal-1.5.6.dev5 → modal-1.5.6.dev6}/modal/proxy.pyi +0 -0
- {modal-1.5.6.dev5 → modal-1.5.6.dev6}/modal/py.typed +0 -0
- {modal-1.5.6.dev5 → modal-1.5.6.dev6}/modal/queue.py +0 -0
- {modal-1.5.6.dev5 → modal-1.5.6.dev6}/modal/queue.pyi +0 -0
- {modal-1.5.6.dev5 → modal-1.5.6.dev6}/modal/retries.py +0 -0
- {modal-1.5.6.dev5 → modal-1.5.6.dev6}/modal/runner.py +0 -0
- {modal-1.5.6.dev5 → modal-1.5.6.dev6}/modal/runner.pyi +0 -0
- {modal-1.5.6.dev5 → modal-1.5.6.dev6}/modal/running_app.py +0 -0
- {modal-1.5.6.dev5 → modal-1.5.6.dev6}/modal/sandbox.pyi +0 -0
- {modal-1.5.6.dev5 → modal-1.5.6.dev6}/modal/sandbox_fs.py +0 -0
- {modal-1.5.6.dev5 → modal-1.5.6.dev6}/modal/sandbox_fs.pyi +0 -0
- {modal-1.5.6.dev5 → modal-1.5.6.dev6}/modal/schedule.py +0 -0
- {modal-1.5.6.dev5 → modal-1.5.6.dev6}/modal/scheduler_placement.py +0 -0
- {modal-1.5.6.dev5 → modal-1.5.6.dev6}/modal/secret.py +0 -0
- {modal-1.5.6.dev5 → modal-1.5.6.dev6}/modal/secret.pyi +0 -0
- {modal-1.5.6.dev5 → modal-1.5.6.dev6}/modal/server.py +0 -0
- {modal-1.5.6.dev5 → modal-1.5.6.dev6}/modal/server.pyi +0 -0
- {modal-1.5.6.dev5 → modal-1.5.6.dev6}/modal/serving.py +0 -0
- {modal-1.5.6.dev5 → modal-1.5.6.dev6}/modal/serving.pyi +0 -0
- {modal-1.5.6.dev5 → modal-1.5.6.dev6}/modal/skills/modal/SKILL.md +0 -0
- {modal-1.5.6.dev5 → modal-1.5.6.dev6}/modal/snapshot.py +0 -0
- {modal-1.5.6.dev5 → modal-1.5.6.dev6}/modal/snapshot.pyi +0 -0
- {modal-1.5.6.dev5 → modal-1.5.6.dev6}/modal/stream_type.py +0 -0
- {modal-1.5.6.dev5 → modal-1.5.6.dev6}/modal/token_flow.py +0 -0
- {modal-1.5.6.dev5 → modal-1.5.6.dev6}/modal/token_flow.pyi +0 -0
- {modal-1.5.6.dev5 → modal-1.5.6.dev6}/modal/types.py +0 -0
- {modal-1.5.6.dev5 → modal-1.5.6.dev6}/modal/volume.py +0 -0
- {modal-1.5.6.dev5 → modal-1.5.6.dev6}/modal/volume.pyi +0 -0
- {modal-1.5.6.dev5 → modal-1.5.6.dev6}/modal/workspace.py +0 -0
- {modal-1.5.6.dev5 → modal-1.5.6.dev6}/modal/workspace.pyi +0 -0
- {modal-1.5.6.dev5 → modal-1.5.6.dev6}/modal.egg-info/SOURCES.txt +0 -0
- {modal-1.5.6.dev5 → modal-1.5.6.dev6}/modal.egg-info/dependency_links.txt +0 -0
- {modal-1.5.6.dev5 → modal-1.5.6.dev6}/modal.egg-info/entry_points.txt +0 -0
- {modal-1.5.6.dev5 → modal-1.5.6.dev6}/modal.egg-info/requires.txt +0 -0
- {modal-1.5.6.dev5 → modal-1.5.6.dev6}/modal.egg-info/top_level.txt +0 -0
- {modal-1.5.6.dev5 → modal-1.5.6.dev6}/modal_docs/__init__.py +0 -0
- {modal-1.5.6.dev5 → modal-1.5.6.dev6}/modal_docs/gen_cli_docs.py +0 -0
- {modal-1.5.6.dev5 → modal-1.5.6.dev6}/modal_docs/gen_cli_docs_main.py +0 -0
- {modal-1.5.6.dev5 → modal-1.5.6.dev6}/modal_docs/gen_reference_docs.py +0 -0
- {modal-1.5.6.dev5 → modal-1.5.6.dev6}/modal_docs/gen_reference_docs_main.py +0 -0
- {modal-1.5.6.dev5 → modal-1.5.6.dev6}/modal_docs/mdmd/__init__.py +0 -0
- {modal-1.5.6.dev5 → modal-1.5.6.dev6}/modal_docs/mdmd/mdmd.py +0 -0
- {modal-1.5.6.dev5 → modal-1.5.6.dev6}/modal_docs/mdmd/signatures.py +0 -0
- {modal-1.5.6.dev5 → modal-1.5.6.dev6}/modal_docs/mdmd/types.py +0 -0
- {modal-1.5.6.dev5 → modal-1.5.6.dev6}/modal_docs/reference_intro.md +0 -0
- {modal-1.5.6.dev5 → modal-1.5.6.dev6}/modal_proto/__init__.py +0 -0
- {modal-1.5.6.dev5 → modal-1.5.6.dev6}/modal_proto/api_grpc.py +0 -0
- {modal-1.5.6.dev5 → modal-1.5.6.dev6}/modal_proto/api_pb2.py +0 -0
- {modal-1.5.6.dev5 → modal-1.5.6.dev6}/modal_proto/api_pb2.pyi +0 -0
- {modal-1.5.6.dev5 → modal-1.5.6.dev6}/modal_proto/api_pb2_grpc.py +0 -0
- {modal-1.5.6.dev5 → modal-1.5.6.dev6}/modal_proto/api_pb2_grpc.pyi +0 -0
- {modal-1.5.6.dev5 → modal-1.5.6.dev6}/modal_proto/modal_api_grpc.py +0 -0
- {modal-1.5.6.dev5 → modal-1.5.6.dev6}/modal_proto/py.typed +0 -0
- {modal-1.5.6.dev5 → modal-1.5.6.dev6}/modal_proto/task_command_router_grpc.py +0 -0
- {modal-1.5.6.dev5 → modal-1.5.6.dev6}/modal_proto/task_command_router_pb2.py +0 -0
- {modal-1.5.6.dev5 → modal-1.5.6.dev6}/modal_proto/task_command_router_pb2.pyi +0 -0
- {modal-1.5.6.dev5 → modal-1.5.6.dev6}/modal_proto/task_command_router_pb2_grpc.py +0 -0
- {modal-1.5.6.dev5 → modal-1.5.6.dev6}/modal_proto/task_command_router_pb2_grpc.pyi +0 -0
- {modal-1.5.6.dev5 → modal-1.5.6.dev6}/modal_version/__main__.py +0 -0
- {modal-1.5.6.dev5 → modal-1.5.6.dev6}/pyproject.toml +0 -0
- {modal-1.5.6.dev5 → modal-1.5.6.dev6}/setup.cfg +0 -0
|
@@ -272,18 +272,34 @@ class CustomProtoStatusDetailsCodec(StatusDetailsCodecBase):
|
|
|
272
272
|
custom_detail_codec = CustomProtoStatusDetailsCodec()
|
|
273
273
|
|
|
274
274
|
|
|
275
|
-
def create_channel_config() -> grpclib.config.Configuration:
|
|
275
|
+
def create_channel_config(*, sustained_keepalive: bool = False) -> grpclib.config.Configuration:
|
|
276
276
|
"""Shared grpclib channel settings for Modal client connections.
|
|
277
277
|
|
|
278
278
|
HTTP/2 keepalive probes keep idle transports warm through stateful
|
|
279
279
|
middleboxes and surface dead connections before retries reuse them.
|
|
280
|
+
|
|
281
|
+
`sustained_keepalive` clears the two grpclib defaults such that a probe
|
|
282
|
+
actually goes out every `_keepalive_time`, for as long as the connection is
|
|
283
|
+
open.
|
|
280
284
|
"""
|
|
285
|
+
ping_throttle_overrides: dict[str, Any] = {}
|
|
286
|
+
if sustained_keepalive:
|
|
287
|
+
ping_throttle_overrides = {
|
|
288
|
+
# Default 2: probing stops after two probes with no request sent in
|
|
289
|
+
# between. Requests reset the count, acks don't. 0 = no cap.
|
|
290
|
+
"_http2_max_pings_without_data": 0,
|
|
291
|
+
# Default 300s floor between probes, applied regardless of data
|
|
292
|
+
# despite the name, so it has to stay under `_keepalive_time`.
|
|
293
|
+
"_http2_min_sent_ping_interval_without_data": GRPC_KEEPALIVE_TIME_SECS / 2,
|
|
294
|
+
}
|
|
295
|
+
|
|
281
296
|
return grpclib.config.Configuration(
|
|
282
297
|
_keepalive_time=GRPC_KEEPALIVE_TIME_SECS,
|
|
283
298
|
_keepalive_timeout=GRPC_KEEPALIVE_TIMEOUT_SECS,
|
|
284
299
|
_keepalive_permit_without_calls=True,
|
|
285
300
|
http2_connection_window_size=GRPC_WINDOW_SIZE,
|
|
286
301
|
http2_stream_window_size=GRPC_WINDOW_SIZE,
|
|
302
|
+
**ping_throttle_overrides,
|
|
287
303
|
)
|
|
288
304
|
|
|
289
305
|
|
|
@@ -251,7 +251,7 @@ class TaskCommandRouterClient:
|
|
|
251
251
|
host,
|
|
252
252
|
port,
|
|
253
253
|
ssl=ssl_context,
|
|
254
|
-
config=create_channel_config(),
|
|
254
|
+
config=create_channel_config(sustained_keepalive=True),
|
|
255
255
|
closed_error_message="Unable to perform operation on a detached sandbox",
|
|
256
256
|
)
|
|
257
257
|
|
|
@@ -77,7 +77,7 @@ class _Client:
|
|
|
77
77
|
server_url: str,
|
|
78
78
|
client_type: int,
|
|
79
79
|
credentials: typing.Optional[tuple[str, str]],
|
|
80
|
-
version: str = "1.5.6.
|
|
80
|
+
version: str = "1.5.6.dev6",
|
|
81
81
|
*,
|
|
82
82
|
oauth_credentials: typing.Optional[_OAuthCredentials] = None,
|
|
83
83
|
):
|
|
@@ -277,7 +277,7 @@ class Client:
|
|
|
277
277
|
server_url: str,
|
|
278
278
|
client_type: int,
|
|
279
279
|
credentials: typing.Optional[tuple[str, str]],
|
|
280
|
-
version: str = "1.5.6.
|
|
280
|
+
version: str = "1.5.6.dev6",
|
|
281
281
|
*,
|
|
282
282
|
oauth_credentials: typing.Optional[_OAuthCredentials] = None,
|
|
283
283
|
):
|
|
@@ -2279,7 +2279,7 @@ class _Sandbox(_Object, type_prefix="sb"):
|
|
|
2279
2279
|
command_router_client = await self._get_command_router_client(task_id)
|
|
2280
2280
|
snap_v2_resp = await command_router_client.snapshot_memory(
|
|
2281
2281
|
sr_pb2.TaskSnapshotMemoryRequest(task_id=task_id, idempotency_key=str(uuid.uuid4())),
|
|
2282
|
-
timeout=
|
|
2282
|
+
timeout=165.0,
|
|
2283
2283
|
)
|
|
2284
2284
|
snapshot_id = snap_v2_resp.snapshot_id
|
|
2285
2285
|
else:
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|