modal 1.5.6.dev4__tar.gz → 1.5.6.dev5__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.dev4 → modal-1.5.6.dev5}/PKG-INFO +1 -1
- {modal-1.5.6.dev4 → modal-1.5.6.dev5}/modal/_utils/grpc_utils.py +13 -6
- {modal-1.5.6.dev4 → modal-1.5.6.dev5}/modal/client.pyi +2 -2
- {modal-1.5.6.dev4 → modal-1.5.6.dev5}/modal/mount.py +6 -1
- {modal-1.5.6.dev4 → modal-1.5.6.dev5}/modal.egg-info/PKG-INFO +1 -1
- {modal-1.5.6.dev4 → modal-1.5.6.dev5}/modal_version/__init__.py +1 -1
- {modal-1.5.6.dev4 → modal-1.5.6.dev5}/LICENSE +0 -0
- {modal-1.5.6.dev4 → modal-1.5.6.dev5}/README.md +0 -0
- {modal-1.5.6.dev4 → modal-1.5.6.dev5}/modal/__init__.py +0 -0
- {modal-1.5.6.dev4 → modal-1.5.6.dev5}/modal/__main__.py +0 -0
- {modal-1.5.6.dev4 → modal-1.5.6.dev5}/modal/_billing.py +0 -0
- {modal-1.5.6.dev4 → modal-1.5.6.dev5}/modal/_clustered_functions.py +0 -0
- {modal-1.5.6.dev4 → modal-1.5.6.dev5}/modal/_clustered_functions.pyi +0 -0
- {modal-1.5.6.dev4 → modal-1.5.6.dev5}/modal/_container_entrypoint.py +0 -0
- {modal-1.5.6.dev4 → modal-1.5.6.dev5}/modal/_environments.py +0 -0
- {modal-1.5.6.dev4 → modal-1.5.6.dev5}/modal/_function_variants.py +0 -0
- {modal-1.5.6.dev4 → modal-1.5.6.dev5}/modal/_functions.py +0 -0
- {modal-1.5.6.dev4 → modal-1.5.6.dev5}/modal/_grpc_client.py +0 -0
- {modal-1.5.6.dev4 → modal-1.5.6.dev5}/modal/_image.py +0 -0
- {modal-1.5.6.dev4 → modal-1.5.6.dev5}/modal/_ipython.py +0 -0
- {modal-1.5.6.dev4 → modal-1.5.6.dev5}/modal/_load_context.py +0 -0
- {modal-1.5.6.dev4 → modal-1.5.6.dev5}/modal/_location.py +0 -0
- {modal-1.5.6.dev4 → modal-1.5.6.dev5}/modal/_logs.py +0 -0
- {modal-1.5.6.dev4 → modal-1.5.6.dev5}/modal/_logs_manager.py +0 -0
- {modal-1.5.6.dev4 → modal-1.5.6.dev5}/modal/_logs_manager.pyi +0 -0
- {modal-1.5.6.dev4 → modal-1.5.6.dev5}/modal/_object.py +0 -0
- {modal-1.5.6.dev4 → modal-1.5.6.dev5}/modal/_output/__init__.py +0 -0
- {modal-1.5.6.dev4 → modal-1.5.6.dev5}/modal/_output/manager.py +0 -0
- {modal-1.5.6.dev4 → modal-1.5.6.dev5}/modal/_output/pty.py +0 -0
- {modal-1.5.6.dev4 → modal-1.5.6.dev5}/modal/_output/rich.py +0 -0
- {modal-1.5.6.dev4 → modal-1.5.6.dev5}/modal/_output/status.py +0 -0
- {modal-1.5.6.dev4 → modal-1.5.6.dev5}/modal/_partial_function.py +0 -0
- {modal-1.5.6.dev4 → modal-1.5.6.dev5}/modal/_resolver.py +0 -0
- {modal-1.5.6.dev4 → modal-1.5.6.dev5}/modal/_resources.py +0 -0
- {modal-1.5.6.dev4 → modal-1.5.6.dev5}/modal/_runtime/__init__.py +0 -0
- {modal-1.5.6.dev4 → modal-1.5.6.dev5}/modal/_runtime/asgi.py +0 -0
- {modal-1.5.6.dev4 → modal-1.5.6.dev5}/modal/_runtime/container_io_manager.py +0 -0
- {modal-1.5.6.dev4 → modal-1.5.6.dev5}/modal/_runtime/container_io_manager.pyi +0 -0
- {modal-1.5.6.dev4 → modal-1.5.6.dev5}/modal/_runtime/execution_context.py +0 -0
- {modal-1.5.6.dev4 → modal-1.5.6.dev5}/modal/_runtime/execution_context.pyi +0 -0
- {modal-1.5.6.dev4 → modal-1.5.6.dev5}/modal/_runtime/gpu_memory_snapshot.py +0 -0
- {modal-1.5.6.dev4 → modal-1.5.6.dev5}/modal/_runtime/task_lifecycle_manager.py +0 -0
- {modal-1.5.6.dev4 → modal-1.5.6.dev5}/modal/_runtime/task_lifecycle_manager.pyi +0 -0
- {modal-1.5.6.dev4 → modal-1.5.6.dev5}/modal/_runtime/telemetry.py +0 -0
- {modal-1.5.6.dev4 → modal-1.5.6.dev5}/modal/_runtime/user_code_event_loop.py +0 -0
- {modal-1.5.6.dev4 → modal-1.5.6.dev5}/modal/_runtime/user_code_imports.py +0 -0
- {modal-1.5.6.dev4 → modal-1.5.6.dev5}/modal/_serialization.py +0 -0
- {modal-1.5.6.dev4 → modal-1.5.6.dev5}/modal/_server.py +0 -0
- {modal-1.5.6.dev4 → modal-1.5.6.dev5}/modal/_supports_logs.py +0 -0
- {modal-1.5.6.dev4 → modal-1.5.6.dev5}/modal/_traceback.py +0 -0
- {modal-1.5.6.dev4 → modal-1.5.6.dev5}/modal/_tunnel.py +0 -0
- {modal-1.5.6.dev4 → modal-1.5.6.dev5}/modal/_tunnel.pyi +0 -0
- {modal-1.5.6.dev4 → modal-1.5.6.dev5}/modal/_type_manager.py +0 -0
- {modal-1.5.6.dev4 → modal-1.5.6.dev5}/modal/_utils/__init__.py +0 -0
- {modal-1.5.6.dev4 → modal-1.5.6.dev5}/modal/_utils/app_utils.py +0 -0
- {modal-1.5.6.dev4 → modal-1.5.6.dev5}/modal/_utils/async_utils.py +0 -0
- {modal-1.5.6.dev4 → modal-1.5.6.dev5}/modal/_utils/auth_token_manager.py +0 -0
- {modal-1.5.6.dev4 → modal-1.5.6.dev5}/modal/_utils/blob_utils.py +0 -0
- {modal-1.5.6.dev4 → modal-1.5.6.dev5}/modal/_utils/browser_utils.py +0 -0
- {modal-1.5.6.dev4 → modal-1.5.6.dev5}/modal/_utils/bytes_io_segment_payload.py +0 -0
- {modal-1.5.6.dev4 → modal-1.5.6.dev5}/modal/_utils/curl_utils.py +0 -0
- {modal-1.5.6.dev4 → modal-1.5.6.dev5}/modal/_utils/deprecation.py +0 -0
- {modal-1.5.6.dev4 → modal-1.5.6.dev5}/modal/_utils/display_utils.py +0 -0
- {modal-1.5.6.dev4 → modal-1.5.6.dev5}/modal/_utils/docker_utils.py +0 -0
- {modal-1.5.6.dev4 → modal-1.5.6.dev5}/modal/_utils/function_utils.py +0 -0
- {modal-1.5.6.dev4 → modal-1.5.6.dev5}/modal/_utils/git_utils.py +0 -0
- {modal-1.5.6.dev4 → modal-1.5.6.dev5}/modal/_utils/grpc_testing.py +0 -0
- {modal-1.5.6.dev4 → modal-1.5.6.dev5}/modal/_utils/hash_utils.py +0 -0
- {modal-1.5.6.dev4 → modal-1.5.6.dev5}/modal/_utils/http_utils.py +0 -0
- {modal-1.5.6.dev4 → modal-1.5.6.dev5}/modal/_utils/jwt_utils.py +0 -0
- {modal-1.5.6.dev4 → modal-1.5.6.dev5}/modal/_utils/logger.py +0 -0
- {modal-1.5.6.dev4 → modal-1.5.6.dev5}/modal/_utils/mount_utils.py +0 -0
- {modal-1.5.6.dev4 → modal-1.5.6.dev5}/modal/_utils/name_utils.py +0 -0
- {modal-1.5.6.dev4 → modal-1.5.6.dev5}/modal/_utils/package_utils.py +0 -0
- {modal-1.5.6.dev4 → modal-1.5.6.dev5}/modal/_utils/pattern_utils.py +0 -0
- {modal-1.5.6.dev4 → modal-1.5.6.dev5}/modal/_utils/proxy_support.py +0 -0
- {modal-1.5.6.dev4 → modal-1.5.6.dev5}/modal/_utils/rand_pb_testing.py +0 -0
- {modal-1.5.6.dev4 → modal-1.5.6.dev5}/modal/_utils/sandbox_fs_utils.py +0 -0
- {modal-1.5.6.dev4 → modal-1.5.6.dev5}/modal/_utils/shell_utils.py +0 -0
- {modal-1.5.6.dev4 → modal-1.5.6.dev5}/modal/_utils/task_command_router_client.py +0 -0
- {modal-1.5.6.dev4 → modal-1.5.6.dev5}/modal/_utils/time_utils.py +0 -0
- {modal-1.5.6.dev4 → modal-1.5.6.dev5}/modal/_vendor/__init__.py +0 -0
- {modal-1.5.6.dev4 → modal-1.5.6.dev5}/modal/_vendor/a2wsgi_wsgi.py +0 -0
- {modal-1.5.6.dev4 → modal-1.5.6.dev5}/modal/_vendor/cloudpickle.py +0 -0
- {modal-1.5.6.dev4 → modal-1.5.6.dev5}/modal/_vendor/tblib.py +0 -0
- {modal-1.5.6.dev4 → modal-1.5.6.dev5}/modal/_vendor/version.py +0 -0
- {modal-1.5.6.dev4 → modal-1.5.6.dev5}/modal/_watcher.py +0 -0
- {modal-1.5.6.dev4 → modal-1.5.6.dev5}/modal/_workspace.py +0 -0
- {modal-1.5.6.dev4 → modal-1.5.6.dev5}/modal/app.py +0 -0
- {modal-1.5.6.dev4 → modal-1.5.6.dev5}/modal/app.pyi +0 -0
- {modal-1.5.6.dev4 → modal-1.5.6.dev5}/modal/billing.py +0 -0
- {modal-1.5.6.dev4 → modal-1.5.6.dev5}/modal/billing.pyi +0 -0
- {modal-1.5.6.dev4 → modal-1.5.6.dev5}/modal/builder/2023.12.312.txt +0 -0
- {modal-1.5.6.dev4 → modal-1.5.6.dev5}/modal/builder/2023.12.txt +0 -0
- {modal-1.5.6.dev4 → modal-1.5.6.dev5}/modal/builder/2024.04.txt +0 -0
- {modal-1.5.6.dev4 → modal-1.5.6.dev5}/modal/builder/2024.10.txt +0 -0
- {modal-1.5.6.dev4 → modal-1.5.6.dev5}/modal/builder/2025.06.txt +0 -0
- {modal-1.5.6.dev4 → modal-1.5.6.dev5}/modal/builder/PREVIEW.txt +0 -0
- {modal-1.5.6.dev4 → modal-1.5.6.dev5}/modal/builder/README.md +0 -0
- {modal-1.5.6.dev4 → modal-1.5.6.dev5}/modal/builder/base-images.json +0 -0
- {modal-1.5.6.dev4 → modal-1.5.6.dev5}/modal/call_graph.py +0 -0
- {modal-1.5.6.dev4 → modal-1.5.6.dev5}/modal/cli/__init__.py +0 -0
- {modal-1.5.6.dev4 → modal-1.5.6.dev5}/modal/cli/_download.py +0 -0
- {modal-1.5.6.dev4 → modal-1.5.6.dev5}/modal/cli/_help.py +0 -0
- {modal-1.5.6.dev4 → modal-1.5.6.dev5}/modal/cli/_traceback.py +0 -0
- {modal-1.5.6.dev4 → modal-1.5.6.dev5}/modal/cli/app.py +0 -0
- {modal-1.5.6.dev4 → modal-1.5.6.dev5}/modal/cli/billing.py +0 -0
- {modal-1.5.6.dev4 → modal-1.5.6.dev5}/modal/cli/bootstrap.py +0 -0
- {modal-1.5.6.dev4 → modal-1.5.6.dev5}/modal/cli/changelog.py +0 -0
- {modal-1.5.6.dev4 → modal-1.5.6.dev5}/modal/cli/cluster.py +0 -0
- {modal-1.5.6.dev4 → modal-1.5.6.dev5}/modal/cli/config.py +0 -0
- {modal-1.5.6.dev4 → modal-1.5.6.dev5}/modal/cli/container.py +0 -0
- {modal-1.5.6.dev4 → modal-1.5.6.dev5}/modal/cli/curl.py +0 -0
- {modal-1.5.6.dev4 → modal-1.5.6.dev5}/modal/cli/dashboard.py +0 -0
- {modal-1.5.6.dev4 → modal-1.5.6.dev5}/modal/cli/dict.py +0 -0
- {modal-1.5.6.dev4 → modal-1.5.6.dev5}/modal/cli/endpoint.py +0 -0
- {modal-1.5.6.dev4 → modal-1.5.6.dev5}/modal/cli/entry_point.py +0 -0
- {modal-1.5.6.dev4 → modal-1.5.6.dev5}/modal/cli/environment.py +0 -0
- {modal-1.5.6.dev4 → modal-1.5.6.dev5}/modal/cli/image.py +0 -0
- {modal-1.5.6.dev4 → modal-1.5.6.dev5}/modal/cli/import_refs.py +0 -0
- {modal-1.5.6.dev4 → modal-1.5.6.dev5}/modal/cli/launch.py +0 -0
- {modal-1.5.6.dev4 → modal-1.5.6.dev5}/modal/cli/logo.py +0 -0
- {modal-1.5.6.dev4 → modal-1.5.6.dev5}/modal/cli/network_file_system.py +0 -0
- {modal-1.5.6.dev4 → modal-1.5.6.dev5}/modal/cli/profile.py +0 -0
- {modal-1.5.6.dev4 → modal-1.5.6.dev5}/modal/cli/programs/__init__.py +0 -0
- {modal-1.5.6.dev4 → modal-1.5.6.dev5}/modal/cli/programs/run_jupyter.py +0 -0
- {modal-1.5.6.dev4 → modal-1.5.6.dev5}/modal/cli/programs/vscode.py +0 -0
- {modal-1.5.6.dev4 → modal-1.5.6.dev5}/modal/cli/queues.py +0 -0
- {modal-1.5.6.dev4 → modal-1.5.6.dev5}/modal/cli/run.py +0 -0
- {modal-1.5.6.dev4 → modal-1.5.6.dev5}/modal/cli/secret.py +0 -0
- {modal-1.5.6.dev4 → modal-1.5.6.dev5}/modal/cli/selector.py +0 -0
- {modal-1.5.6.dev4 → modal-1.5.6.dev5}/modal/cli/shell.py +0 -0
- {modal-1.5.6.dev4 → modal-1.5.6.dev5}/modal/cli/skills.py +0 -0
- {modal-1.5.6.dev4 → modal-1.5.6.dev5}/modal/cli/token.py +0 -0
- {modal-1.5.6.dev4 → modal-1.5.6.dev5}/modal/cli/utils.py +0 -0
- {modal-1.5.6.dev4 → modal-1.5.6.dev5}/modal/cli/volume.py +0 -0
- {modal-1.5.6.dev4 → modal-1.5.6.dev5}/modal/cli/workspace.py +0 -0
- {modal-1.5.6.dev4 → modal-1.5.6.dev5}/modal/client.py +0 -0
- {modal-1.5.6.dev4 → modal-1.5.6.dev5}/modal/cloud_bucket_mount.py +0 -0
- {modal-1.5.6.dev4 → modal-1.5.6.dev5}/modal/cloud_bucket_mount.pyi +0 -0
- {modal-1.5.6.dev4 → modal-1.5.6.dev5}/modal/cls.py +0 -0
- {modal-1.5.6.dev4 → modal-1.5.6.dev5}/modal/cls.pyi +0 -0
- {modal-1.5.6.dev4 → modal-1.5.6.dev5}/modal/config.py +0 -0
- {modal-1.5.6.dev4 → modal-1.5.6.dev5}/modal/container_process.py +0 -0
- {modal-1.5.6.dev4 → modal-1.5.6.dev5}/modal/container_process.pyi +0 -0
- {modal-1.5.6.dev4 → modal-1.5.6.dev5}/modal/dict.py +0 -0
- {modal-1.5.6.dev4 → modal-1.5.6.dev5}/modal/dict.pyi +0 -0
- {modal-1.5.6.dev4 → modal-1.5.6.dev5}/modal/environments.py +0 -0
- {modal-1.5.6.dev4 → modal-1.5.6.dev5}/modal/environments.pyi +0 -0
- {modal-1.5.6.dev4 → modal-1.5.6.dev5}/modal/exception.py +0 -0
- {modal-1.5.6.dev4 → modal-1.5.6.dev5}/modal/experimental/__init__.py +0 -0
- {modal-1.5.6.dev4 → modal-1.5.6.dev5}/modal/experimental/flash.py +0 -0
- {modal-1.5.6.dev4 → modal-1.5.6.dev5}/modal/experimental/flash.pyi +0 -0
- {modal-1.5.6.dev4 → modal-1.5.6.dev5}/modal/experimental/ipython.py +0 -0
- {modal-1.5.6.dev4 → modal-1.5.6.dev5}/modal/file_io.py +0 -0
- {modal-1.5.6.dev4 → modal-1.5.6.dev5}/modal/file_io.pyi +0 -0
- {modal-1.5.6.dev4 → modal-1.5.6.dev5}/modal/file_pattern_matcher.py +0 -0
- {modal-1.5.6.dev4 → modal-1.5.6.dev5}/modal/functions.py +0 -0
- {modal-1.5.6.dev4 → modal-1.5.6.dev5}/modal/functions.pyi +0 -0
- {modal-1.5.6.dev4 → modal-1.5.6.dev5}/modal/image.py +0 -0
- {modal-1.5.6.dev4 → modal-1.5.6.dev5}/modal/image.pyi +0 -0
- {modal-1.5.6.dev4 → modal-1.5.6.dev5}/modal/io_streams.py +0 -0
- {modal-1.5.6.dev4 → modal-1.5.6.dev5}/modal/io_streams.pyi +0 -0
- {modal-1.5.6.dev4 → modal-1.5.6.dev5}/modal/mount.pyi +0 -0
- {modal-1.5.6.dev4 → modal-1.5.6.dev5}/modal/network_file_system.py +0 -0
- {modal-1.5.6.dev4 → modal-1.5.6.dev5}/modal/network_file_system.pyi +0 -0
- {modal-1.5.6.dev4 → modal-1.5.6.dev5}/modal/object.py +0 -0
- {modal-1.5.6.dev4 → modal-1.5.6.dev5}/modal/object.pyi +0 -0
- {modal-1.5.6.dev4 → modal-1.5.6.dev5}/modal/output.py +0 -0
- {modal-1.5.6.dev4 → modal-1.5.6.dev5}/modal/parallel_map.py +0 -0
- {modal-1.5.6.dev4 → modal-1.5.6.dev5}/modal/parallel_map.pyi +0 -0
- {modal-1.5.6.dev4 → modal-1.5.6.dev5}/modal/partial_function.py +0 -0
- {modal-1.5.6.dev4 → modal-1.5.6.dev5}/modal/partial_function.pyi +0 -0
- {modal-1.5.6.dev4 → modal-1.5.6.dev5}/modal/proxy.py +0 -0
- {modal-1.5.6.dev4 → modal-1.5.6.dev5}/modal/proxy.pyi +0 -0
- {modal-1.5.6.dev4 → modal-1.5.6.dev5}/modal/py.typed +0 -0
- {modal-1.5.6.dev4 → modal-1.5.6.dev5}/modal/queue.py +0 -0
- {modal-1.5.6.dev4 → modal-1.5.6.dev5}/modal/queue.pyi +0 -0
- {modal-1.5.6.dev4 → modal-1.5.6.dev5}/modal/retries.py +0 -0
- {modal-1.5.6.dev4 → modal-1.5.6.dev5}/modal/runner.py +0 -0
- {modal-1.5.6.dev4 → modal-1.5.6.dev5}/modal/runner.pyi +0 -0
- {modal-1.5.6.dev4 → modal-1.5.6.dev5}/modal/running_app.py +0 -0
- {modal-1.5.6.dev4 → modal-1.5.6.dev5}/modal/sandbox.py +0 -0
- {modal-1.5.6.dev4 → modal-1.5.6.dev5}/modal/sandbox.pyi +0 -0
- {modal-1.5.6.dev4 → modal-1.5.6.dev5}/modal/sandbox_fs.py +0 -0
- {modal-1.5.6.dev4 → modal-1.5.6.dev5}/modal/sandbox_fs.pyi +0 -0
- {modal-1.5.6.dev4 → modal-1.5.6.dev5}/modal/schedule.py +0 -0
- {modal-1.5.6.dev4 → modal-1.5.6.dev5}/modal/scheduler_placement.py +0 -0
- {modal-1.5.6.dev4 → modal-1.5.6.dev5}/modal/secret.py +0 -0
- {modal-1.5.6.dev4 → modal-1.5.6.dev5}/modal/secret.pyi +0 -0
- {modal-1.5.6.dev4 → modal-1.5.6.dev5}/modal/server.py +0 -0
- {modal-1.5.6.dev4 → modal-1.5.6.dev5}/modal/server.pyi +0 -0
- {modal-1.5.6.dev4 → modal-1.5.6.dev5}/modal/serving.py +0 -0
- {modal-1.5.6.dev4 → modal-1.5.6.dev5}/modal/serving.pyi +0 -0
- {modal-1.5.6.dev4 → modal-1.5.6.dev5}/modal/skills/modal/SKILL.md +0 -0
- {modal-1.5.6.dev4 → modal-1.5.6.dev5}/modal/snapshot.py +0 -0
- {modal-1.5.6.dev4 → modal-1.5.6.dev5}/modal/snapshot.pyi +0 -0
- {modal-1.5.6.dev4 → modal-1.5.6.dev5}/modal/stream_type.py +0 -0
- {modal-1.5.6.dev4 → modal-1.5.6.dev5}/modal/token_flow.py +0 -0
- {modal-1.5.6.dev4 → modal-1.5.6.dev5}/modal/token_flow.pyi +0 -0
- {modal-1.5.6.dev4 → modal-1.5.6.dev5}/modal/types.py +0 -0
- {modal-1.5.6.dev4 → modal-1.5.6.dev5}/modal/volume.py +0 -0
- {modal-1.5.6.dev4 → modal-1.5.6.dev5}/modal/volume.pyi +0 -0
- {modal-1.5.6.dev4 → modal-1.5.6.dev5}/modal/workspace.py +0 -0
- {modal-1.5.6.dev4 → modal-1.5.6.dev5}/modal/workspace.pyi +0 -0
- {modal-1.5.6.dev4 → modal-1.5.6.dev5}/modal.egg-info/SOURCES.txt +0 -0
- {modal-1.5.6.dev4 → modal-1.5.6.dev5}/modal.egg-info/dependency_links.txt +0 -0
- {modal-1.5.6.dev4 → modal-1.5.6.dev5}/modal.egg-info/entry_points.txt +0 -0
- {modal-1.5.6.dev4 → modal-1.5.6.dev5}/modal.egg-info/requires.txt +0 -0
- {modal-1.5.6.dev4 → modal-1.5.6.dev5}/modal.egg-info/top_level.txt +0 -0
- {modal-1.5.6.dev4 → modal-1.5.6.dev5}/modal_docs/__init__.py +0 -0
- {modal-1.5.6.dev4 → modal-1.5.6.dev5}/modal_docs/gen_cli_docs.py +0 -0
- {modal-1.5.6.dev4 → modal-1.5.6.dev5}/modal_docs/gen_cli_docs_main.py +0 -0
- {modal-1.5.6.dev4 → modal-1.5.6.dev5}/modal_docs/gen_reference_docs.py +0 -0
- {modal-1.5.6.dev4 → modal-1.5.6.dev5}/modal_docs/gen_reference_docs_main.py +0 -0
- {modal-1.5.6.dev4 → modal-1.5.6.dev5}/modal_docs/mdmd/__init__.py +0 -0
- {modal-1.5.6.dev4 → modal-1.5.6.dev5}/modal_docs/mdmd/mdmd.py +0 -0
- {modal-1.5.6.dev4 → modal-1.5.6.dev5}/modal_docs/mdmd/signatures.py +0 -0
- {modal-1.5.6.dev4 → modal-1.5.6.dev5}/modal_docs/mdmd/types.py +0 -0
- {modal-1.5.6.dev4 → modal-1.5.6.dev5}/modal_docs/reference_intro.md +0 -0
- {modal-1.5.6.dev4 → modal-1.5.6.dev5}/modal_proto/__init__.py +0 -0
- {modal-1.5.6.dev4 → modal-1.5.6.dev5}/modal_proto/api_grpc.py +0 -0
- {modal-1.5.6.dev4 → modal-1.5.6.dev5}/modal_proto/api_pb2.py +0 -0
- {modal-1.5.6.dev4 → modal-1.5.6.dev5}/modal_proto/api_pb2.pyi +0 -0
- {modal-1.5.6.dev4 → modal-1.5.6.dev5}/modal_proto/api_pb2_grpc.py +0 -0
- {modal-1.5.6.dev4 → modal-1.5.6.dev5}/modal_proto/api_pb2_grpc.pyi +0 -0
- {modal-1.5.6.dev4 → modal-1.5.6.dev5}/modal_proto/modal_api_grpc.py +0 -0
- {modal-1.5.6.dev4 → modal-1.5.6.dev5}/modal_proto/py.typed +0 -0
- {modal-1.5.6.dev4 → modal-1.5.6.dev5}/modal_proto/task_command_router_grpc.py +0 -0
- {modal-1.5.6.dev4 → modal-1.5.6.dev5}/modal_proto/task_command_router_pb2.py +0 -0
- {modal-1.5.6.dev4 → modal-1.5.6.dev5}/modal_proto/task_command_router_pb2.pyi +0 -0
- {modal-1.5.6.dev4 → modal-1.5.6.dev5}/modal_proto/task_command_router_pb2_grpc.py +0 -0
- {modal-1.5.6.dev4 → modal-1.5.6.dev5}/modal_proto/task_command_router_pb2_grpc.pyi +0 -0
- {modal-1.5.6.dev4 → modal-1.5.6.dev5}/modal_version/__main__.py +0 -0
- {modal-1.5.6.dev4 → modal-1.5.6.dev5}/pyproject.toml +0 -0
- {modal-1.5.6.dev4 → modal-1.5.6.dev5}/setup.cfg +0 -0
|
@@ -199,16 +199,23 @@ class ConnectionManager:
|
|
|
199
199
|
self._client = client
|
|
200
200
|
# This metadata is injected into all requests on all channels created by this manager.
|
|
201
201
|
self._metadata = metadata
|
|
202
|
-
self._channels: dict[str, grpclib.client.Channel] = {}
|
|
202
|
+
self._channels: dict[str, asyncio.Future[grpclib.client.Channel]] = {}
|
|
203
203
|
|
|
204
204
|
async def get_or_create_channel(self, server_url: str) -> grpclib.client.Channel:
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
|
|
205
|
+
fut = self._channels.get(server_url)
|
|
206
|
+
if fut is None or (fut.done() and (fut.cancelled() or fut.exception() is not None)):
|
|
207
|
+
# Cache the attempt rather than the channel, so callers racing to connect share one.
|
|
208
|
+
fut = asyncio.ensure_future(create_channel_with_fallbacks(server_url, self._metadata))
|
|
209
|
+
self._channels[server_url] = fut
|
|
210
|
+
# Shielded so one caller giving up doesn't cancel the connection for the others.
|
|
211
|
+
return await asyncio.shield(fut)
|
|
208
212
|
|
|
209
213
|
def close(self):
|
|
210
|
-
for
|
|
211
|
-
|
|
214
|
+
for fut in self._channels.values():
|
|
215
|
+
if fut.done() and not fut.cancelled() and fut.exception() is None:
|
|
216
|
+
fut.result().close()
|
|
217
|
+
else:
|
|
218
|
+
fut.cancel()
|
|
212
219
|
self._channels.clear()
|
|
213
220
|
|
|
214
221
|
|
|
@@ -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.dev5",
|
|
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.dev5",
|
|
281
281
|
*,
|
|
282
282
|
oauth_credentials: typing.Optional[_OAuthCredentials] = None,
|
|
283
283
|
):
|
|
@@ -851,7 +851,7 @@ async def _create_single_client_dependency_mount(
|
|
|
851
851
|
print(f"📦 Building {mount_name}.") # noqa: T201
|
|
852
852
|
requirements = os.path.join(os.path.dirname(__file__), f"builder/{builder_version}.txt")
|
|
853
853
|
cmd = [
|
|
854
|
-
"uv",
|
|
854
|
+
os.environ.get("MODAL_UV_PATH", "uv"),
|
|
855
855
|
"pip",
|
|
856
856
|
"install",
|
|
857
857
|
"--strict",
|
|
@@ -867,6 +867,11 @@ async def _create_single_client_dependency_mount(
|
|
|
867
867
|
"--python",
|
|
868
868
|
python_version,
|
|
869
869
|
]
|
|
870
|
+
# A directory holding wheels for every pin in the requirements file, for
|
|
871
|
+
# building mounts where no package index is reachable.
|
|
872
|
+
find_links = os.environ.get("MODAL_BUILDER_WHEEL_DIR")
|
|
873
|
+
if find_links:
|
|
874
|
+
cmd += ["--no-index", "--find-links", find_links]
|
|
870
875
|
# Retry uv pip install on transient failures (e.g. network blips,
|
|
871
876
|
# resource contention). uv exits with non-zero on recoverable errors
|
|
872
877
|
# like rate limits or connection resets.
|
|
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
|
|
File without changes
|