modal 1.4.1.dev2__tar.gz → 1.4.1.dev4__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {modal-1.4.1.dev2 → modal-1.4.1.dev4}/PKG-INFO +1 -1
- {modal-1.4.1.dev2 → modal-1.4.1.dev4}/modal/_utils/sandbox_fs_utils.py +13 -1
- {modal-1.4.1.dev2 → modal-1.4.1.dev4}/modal/client.pyi +2 -2
- {modal-1.4.1.dev2 → modal-1.4.1.dev4}/modal.egg-info/PKG-INFO +1 -1
- {modal-1.4.1.dev2 → modal-1.4.1.dev4}/modal_version/__init__.py +1 -1
- {modal-1.4.1.dev2 → modal-1.4.1.dev4}/LICENSE +0 -0
- {modal-1.4.1.dev2 → modal-1.4.1.dev4}/README.md +0 -0
- {modal-1.4.1.dev2 → modal-1.4.1.dev4}/modal/__init__.py +0 -0
- {modal-1.4.1.dev2 → modal-1.4.1.dev4}/modal/__main__.py +0 -0
- {modal-1.4.1.dev2 → modal-1.4.1.dev4}/modal/_billing.py +0 -0
- {modal-1.4.1.dev2 → modal-1.4.1.dev4}/modal/_clustered_functions.py +0 -0
- {modal-1.4.1.dev2 → modal-1.4.1.dev4}/modal/_clustered_functions.pyi +0 -0
- {modal-1.4.1.dev2 → modal-1.4.1.dev4}/modal/_container_entrypoint.py +0 -0
- {modal-1.4.1.dev2 → modal-1.4.1.dev4}/modal/_functions.py +0 -0
- {modal-1.4.1.dev2 → modal-1.4.1.dev4}/modal/_grpc_client.py +0 -0
- {modal-1.4.1.dev2 → modal-1.4.1.dev4}/modal/_ipython.py +0 -0
- {modal-1.4.1.dev2 → modal-1.4.1.dev4}/modal/_load_context.py +0 -0
- {modal-1.4.1.dev2 → modal-1.4.1.dev4}/modal/_location.py +0 -0
- {modal-1.4.1.dev2 → modal-1.4.1.dev4}/modal/_logs.py +0 -0
- {modal-1.4.1.dev2 → modal-1.4.1.dev4}/modal/_object.py +0 -0
- {modal-1.4.1.dev2 → modal-1.4.1.dev4}/modal/_output/__init__.py +0 -0
- {modal-1.4.1.dev2 → modal-1.4.1.dev4}/modal/_output/manager.py +0 -0
- {modal-1.4.1.dev2 → modal-1.4.1.dev4}/modal/_output/pty.py +0 -0
- {modal-1.4.1.dev2 → modal-1.4.1.dev4}/modal/_output/rich.py +0 -0
- {modal-1.4.1.dev2 → modal-1.4.1.dev4}/modal/_output/status.py +0 -0
- {modal-1.4.1.dev2 → modal-1.4.1.dev4}/modal/_partial_function.py +0 -0
- {modal-1.4.1.dev2 → modal-1.4.1.dev4}/modal/_resolver.py +0 -0
- {modal-1.4.1.dev2 → modal-1.4.1.dev4}/modal/_resources.py +0 -0
- {modal-1.4.1.dev2 → modal-1.4.1.dev4}/modal/_runtime/__init__.py +0 -0
- {modal-1.4.1.dev2 → modal-1.4.1.dev4}/modal/_runtime/asgi.py +0 -0
- {modal-1.4.1.dev2 → modal-1.4.1.dev4}/modal/_runtime/container_io_manager.py +0 -0
- {modal-1.4.1.dev2 → modal-1.4.1.dev4}/modal/_runtime/container_io_manager.pyi +0 -0
- {modal-1.4.1.dev2 → modal-1.4.1.dev4}/modal/_runtime/execution_context.py +0 -0
- {modal-1.4.1.dev2 → modal-1.4.1.dev4}/modal/_runtime/execution_context.pyi +0 -0
- {modal-1.4.1.dev2 → modal-1.4.1.dev4}/modal/_runtime/gpu_memory_snapshot.py +0 -0
- {modal-1.4.1.dev2 → modal-1.4.1.dev4}/modal/_runtime/telemetry.py +0 -0
- {modal-1.4.1.dev2 → modal-1.4.1.dev4}/modal/_runtime/user_code_event_loop.py +0 -0
- {modal-1.4.1.dev2 → modal-1.4.1.dev4}/modal/_runtime/user_code_imports.py +0 -0
- {modal-1.4.1.dev2 → modal-1.4.1.dev4}/modal/_serialization.py +0 -0
- {modal-1.4.1.dev2 → modal-1.4.1.dev4}/modal/_server.py +0 -0
- {modal-1.4.1.dev2 → modal-1.4.1.dev4}/modal/_traceback.py +0 -0
- {modal-1.4.1.dev2 → modal-1.4.1.dev4}/modal/_tunnel.py +0 -0
- {modal-1.4.1.dev2 → modal-1.4.1.dev4}/modal/_tunnel.pyi +0 -0
- {modal-1.4.1.dev2 → modal-1.4.1.dev4}/modal/_type_manager.py +0 -0
- {modal-1.4.1.dev2 → modal-1.4.1.dev4}/modal/_utils/__init__.py +0 -0
- {modal-1.4.1.dev2 → modal-1.4.1.dev4}/modal/_utils/app_utils.py +0 -0
- {modal-1.4.1.dev2 → modal-1.4.1.dev4}/modal/_utils/async_utils.py +0 -0
- {modal-1.4.1.dev2 → modal-1.4.1.dev4}/modal/_utils/auth_token_manager.py +0 -0
- {modal-1.4.1.dev2 → modal-1.4.1.dev4}/modal/_utils/blob_utils.py +0 -0
- {modal-1.4.1.dev2 → modal-1.4.1.dev4}/modal/_utils/browser_utils.py +0 -0
- {modal-1.4.1.dev2 → modal-1.4.1.dev4}/modal/_utils/bytes_io_segment_payload.py +0 -0
- {modal-1.4.1.dev2 → modal-1.4.1.dev4}/modal/_utils/deprecation.py +0 -0
- {modal-1.4.1.dev2 → modal-1.4.1.dev4}/modal/_utils/docker_utils.py +0 -0
- {modal-1.4.1.dev2 → modal-1.4.1.dev4}/modal/_utils/function_utils.py +0 -0
- {modal-1.4.1.dev2 → modal-1.4.1.dev4}/modal/_utils/git_utils.py +0 -0
- {modal-1.4.1.dev2 → modal-1.4.1.dev4}/modal/_utils/grpc_testing.py +0 -0
- {modal-1.4.1.dev2 → modal-1.4.1.dev4}/modal/_utils/grpc_utils.py +0 -0
- {modal-1.4.1.dev2 → modal-1.4.1.dev4}/modal/_utils/hash_utils.py +0 -0
- {modal-1.4.1.dev2 → modal-1.4.1.dev4}/modal/_utils/http_utils.py +0 -0
- {modal-1.4.1.dev2 → modal-1.4.1.dev4}/modal/_utils/jwt_utils.py +0 -0
- {modal-1.4.1.dev2 → modal-1.4.1.dev4}/modal/_utils/logger.py +0 -0
- {modal-1.4.1.dev2 → modal-1.4.1.dev4}/modal/_utils/mount_utils.py +0 -0
- {modal-1.4.1.dev2 → modal-1.4.1.dev4}/modal/_utils/name_utils.py +0 -0
- {modal-1.4.1.dev2 → modal-1.4.1.dev4}/modal/_utils/package_utils.py +0 -0
- {modal-1.4.1.dev2 → modal-1.4.1.dev4}/modal/_utils/pattern_utils.py +0 -0
- {modal-1.4.1.dev2 → modal-1.4.1.dev4}/modal/_utils/rand_pb_testing.py +0 -0
- {modal-1.4.1.dev2 → modal-1.4.1.dev4}/modal/_utils/shell_utils.py +0 -0
- {modal-1.4.1.dev2 → modal-1.4.1.dev4}/modal/_utils/task_command_router_client.py +0 -0
- {modal-1.4.1.dev2 → modal-1.4.1.dev4}/modal/_utils/time_utils.py +0 -0
- {modal-1.4.1.dev2 → modal-1.4.1.dev4}/modal/_vendor/__init__.py +0 -0
- {modal-1.4.1.dev2 → modal-1.4.1.dev4}/modal/_vendor/a2wsgi_wsgi.py +0 -0
- {modal-1.4.1.dev2 → modal-1.4.1.dev4}/modal/_vendor/cloudpickle.py +0 -0
- {modal-1.4.1.dev2 → modal-1.4.1.dev4}/modal/_vendor/tblib.py +0 -0
- {modal-1.4.1.dev2 → modal-1.4.1.dev4}/modal/_vendor/version.py +0 -0
- {modal-1.4.1.dev2 → modal-1.4.1.dev4}/modal/_watcher.py +0 -0
- {modal-1.4.1.dev2 → modal-1.4.1.dev4}/modal/app.py +0 -0
- {modal-1.4.1.dev2 → modal-1.4.1.dev4}/modal/app.pyi +0 -0
- {modal-1.4.1.dev2 → modal-1.4.1.dev4}/modal/billing.py +0 -0
- {modal-1.4.1.dev2 → modal-1.4.1.dev4}/modal/builder/2023.12.312.txt +0 -0
- {modal-1.4.1.dev2 → modal-1.4.1.dev4}/modal/builder/2023.12.txt +0 -0
- {modal-1.4.1.dev2 → modal-1.4.1.dev4}/modal/builder/2024.04.txt +0 -0
- {modal-1.4.1.dev2 → modal-1.4.1.dev4}/modal/builder/2024.10.txt +0 -0
- {modal-1.4.1.dev2 → modal-1.4.1.dev4}/modal/builder/2025.06.txt +0 -0
- {modal-1.4.1.dev2 → modal-1.4.1.dev4}/modal/builder/PREVIEW.txt +0 -0
- {modal-1.4.1.dev2 → modal-1.4.1.dev4}/modal/builder/README.md +0 -0
- {modal-1.4.1.dev2 → modal-1.4.1.dev4}/modal/builder/base-images.json +0 -0
- {modal-1.4.1.dev2 → modal-1.4.1.dev4}/modal/call_graph.py +0 -0
- {modal-1.4.1.dev2 → modal-1.4.1.dev4}/modal/cli/__init__.py +0 -0
- {modal-1.4.1.dev2 → modal-1.4.1.dev4}/modal/cli/_download.py +0 -0
- {modal-1.4.1.dev2 → modal-1.4.1.dev4}/modal/cli/_traceback.py +0 -0
- {modal-1.4.1.dev2 → modal-1.4.1.dev4}/modal/cli/app.py +0 -0
- {modal-1.4.1.dev2 → modal-1.4.1.dev4}/modal/cli/billing.py +0 -0
- {modal-1.4.1.dev2 → modal-1.4.1.dev4}/modal/cli/changelog.py +0 -0
- {modal-1.4.1.dev2 → modal-1.4.1.dev4}/modal/cli/cluster.py +0 -0
- {modal-1.4.1.dev2 → modal-1.4.1.dev4}/modal/cli/config.py +0 -0
- {modal-1.4.1.dev2 → modal-1.4.1.dev4}/modal/cli/container.py +0 -0
- {modal-1.4.1.dev2 → modal-1.4.1.dev4}/modal/cli/dashboard.py +0 -0
- {modal-1.4.1.dev2 → modal-1.4.1.dev4}/modal/cli/dict.py +0 -0
- {modal-1.4.1.dev2 → modal-1.4.1.dev4}/modal/cli/entry_point.py +0 -0
- {modal-1.4.1.dev2 → modal-1.4.1.dev4}/modal/cli/environment.py +0 -0
- {modal-1.4.1.dev2 → modal-1.4.1.dev4}/modal/cli/import_refs.py +0 -0
- {modal-1.4.1.dev2 → modal-1.4.1.dev4}/modal/cli/launch.py +0 -0
- {modal-1.4.1.dev2 → modal-1.4.1.dev4}/modal/cli/network_file_system.py +0 -0
- {modal-1.4.1.dev2 → modal-1.4.1.dev4}/modal/cli/profile.py +0 -0
- {modal-1.4.1.dev2 → modal-1.4.1.dev4}/modal/cli/programs/__init__.py +0 -0
- {modal-1.4.1.dev2 → modal-1.4.1.dev4}/modal/cli/programs/run_jupyter.py +0 -0
- {modal-1.4.1.dev2 → modal-1.4.1.dev4}/modal/cli/programs/vscode.py +0 -0
- {modal-1.4.1.dev2 → modal-1.4.1.dev4}/modal/cli/queues.py +0 -0
- {modal-1.4.1.dev2 → modal-1.4.1.dev4}/modal/cli/run.py +0 -0
- {modal-1.4.1.dev2 → modal-1.4.1.dev4}/modal/cli/secret.py +0 -0
- {modal-1.4.1.dev2 → modal-1.4.1.dev4}/modal/cli/selector.py +0 -0
- {modal-1.4.1.dev2 → modal-1.4.1.dev4}/modal/cli/shell.py +0 -0
- {modal-1.4.1.dev2 → modal-1.4.1.dev4}/modal/cli/token.py +0 -0
- {modal-1.4.1.dev2 → modal-1.4.1.dev4}/modal/cli/utils.py +0 -0
- {modal-1.4.1.dev2 → modal-1.4.1.dev4}/modal/cli/volume.py +0 -0
- {modal-1.4.1.dev2 → modal-1.4.1.dev4}/modal/client.py +0 -0
- {modal-1.4.1.dev2 → modal-1.4.1.dev4}/modal/cloud_bucket_mount.py +0 -0
- {modal-1.4.1.dev2 → modal-1.4.1.dev4}/modal/cloud_bucket_mount.pyi +0 -0
- {modal-1.4.1.dev2 → modal-1.4.1.dev4}/modal/cls.py +0 -0
- {modal-1.4.1.dev2 → modal-1.4.1.dev4}/modal/cls.pyi +0 -0
- {modal-1.4.1.dev2 → modal-1.4.1.dev4}/modal/config.py +0 -0
- {modal-1.4.1.dev2 → modal-1.4.1.dev4}/modal/container_process.py +0 -0
- {modal-1.4.1.dev2 → modal-1.4.1.dev4}/modal/container_process.pyi +0 -0
- {modal-1.4.1.dev2 → modal-1.4.1.dev4}/modal/dict.py +0 -0
- {modal-1.4.1.dev2 → modal-1.4.1.dev4}/modal/dict.pyi +0 -0
- {modal-1.4.1.dev2 → modal-1.4.1.dev4}/modal/environments.py +0 -0
- {modal-1.4.1.dev2 → modal-1.4.1.dev4}/modal/environments.pyi +0 -0
- {modal-1.4.1.dev2 → modal-1.4.1.dev4}/modal/exception.py +0 -0
- {modal-1.4.1.dev2 → modal-1.4.1.dev4}/modal/experimental/__init__.py +0 -0
- {modal-1.4.1.dev2 → modal-1.4.1.dev4}/modal/experimental/flash.py +0 -0
- {modal-1.4.1.dev2 → modal-1.4.1.dev4}/modal/experimental/flash.pyi +0 -0
- {modal-1.4.1.dev2 → modal-1.4.1.dev4}/modal/experimental/ipython.py +0 -0
- {modal-1.4.1.dev2 → modal-1.4.1.dev4}/modal/file_io.py +0 -0
- {modal-1.4.1.dev2 → modal-1.4.1.dev4}/modal/file_io.pyi +0 -0
- {modal-1.4.1.dev2 → modal-1.4.1.dev4}/modal/file_pattern_matcher.py +0 -0
- {modal-1.4.1.dev2 → modal-1.4.1.dev4}/modal/functions.py +0 -0
- {modal-1.4.1.dev2 → modal-1.4.1.dev4}/modal/functions.pyi +0 -0
- {modal-1.4.1.dev2 → modal-1.4.1.dev4}/modal/image.py +0 -0
- {modal-1.4.1.dev2 → modal-1.4.1.dev4}/modal/image.pyi +0 -0
- {modal-1.4.1.dev2 → modal-1.4.1.dev4}/modal/io_streams.py +0 -0
- {modal-1.4.1.dev2 → modal-1.4.1.dev4}/modal/io_streams.pyi +0 -0
- {modal-1.4.1.dev2 → modal-1.4.1.dev4}/modal/mount.py +0 -0
- {modal-1.4.1.dev2 → modal-1.4.1.dev4}/modal/mount.pyi +0 -0
- {modal-1.4.1.dev2 → modal-1.4.1.dev4}/modal/network_file_system.py +0 -0
- {modal-1.4.1.dev2 → modal-1.4.1.dev4}/modal/network_file_system.pyi +0 -0
- {modal-1.4.1.dev2 → modal-1.4.1.dev4}/modal/object.py +0 -0
- {modal-1.4.1.dev2 → modal-1.4.1.dev4}/modal/object.pyi +0 -0
- {modal-1.4.1.dev2 → modal-1.4.1.dev4}/modal/output.py +0 -0
- {modal-1.4.1.dev2 → modal-1.4.1.dev4}/modal/parallel_map.py +0 -0
- {modal-1.4.1.dev2 → modal-1.4.1.dev4}/modal/parallel_map.pyi +0 -0
- {modal-1.4.1.dev2 → modal-1.4.1.dev4}/modal/partial_function.py +0 -0
- {modal-1.4.1.dev2 → modal-1.4.1.dev4}/modal/partial_function.pyi +0 -0
- {modal-1.4.1.dev2 → modal-1.4.1.dev4}/modal/proxy.py +0 -0
- {modal-1.4.1.dev2 → modal-1.4.1.dev4}/modal/proxy.pyi +0 -0
- {modal-1.4.1.dev2 → modal-1.4.1.dev4}/modal/py.typed +0 -0
- {modal-1.4.1.dev2 → modal-1.4.1.dev4}/modal/queue.py +0 -0
- {modal-1.4.1.dev2 → modal-1.4.1.dev4}/modal/queue.pyi +0 -0
- {modal-1.4.1.dev2 → modal-1.4.1.dev4}/modal/retries.py +0 -0
- {modal-1.4.1.dev2 → modal-1.4.1.dev4}/modal/runner.py +0 -0
- {modal-1.4.1.dev2 → modal-1.4.1.dev4}/modal/runner.pyi +0 -0
- {modal-1.4.1.dev2 → modal-1.4.1.dev4}/modal/running_app.py +0 -0
- {modal-1.4.1.dev2 → modal-1.4.1.dev4}/modal/sandbox.py +0 -0
- {modal-1.4.1.dev2 → modal-1.4.1.dev4}/modal/sandbox.pyi +0 -0
- {modal-1.4.1.dev2 → modal-1.4.1.dev4}/modal/sandbox_fs.py +0 -0
- {modal-1.4.1.dev2 → modal-1.4.1.dev4}/modal/sandbox_fs.pyi +0 -0
- {modal-1.4.1.dev2 → modal-1.4.1.dev4}/modal/schedule.py +0 -0
- {modal-1.4.1.dev2 → modal-1.4.1.dev4}/modal/scheduler_placement.py +0 -0
- {modal-1.4.1.dev2 → modal-1.4.1.dev4}/modal/secret.py +0 -0
- {modal-1.4.1.dev2 → modal-1.4.1.dev4}/modal/secret.pyi +0 -0
- {modal-1.4.1.dev2 → modal-1.4.1.dev4}/modal/server.py +0 -0
- {modal-1.4.1.dev2 → modal-1.4.1.dev4}/modal/server.pyi +0 -0
- {modal-1.4.1.dev2 → modal-1.4.1.dev4}/modal/serving.py +0 -0
- {modal-1.4.1.dev2 → modal-1.4.1.dev4}/modal/serving.pyi +0 -0
- {modal-1.4.1.dev2 → modal-1.4.1.dev4}/modal/snapshot.py +0 -0
- {modal-1.4.1.dev2 → modal-1.4.1.dev4}/modal/snapshot.pyi +0 -0
- {modal-1.4.1.dev2 → modal-1.4.1.dev4}/modal/stream_type.py +0 -0
- {modal-1.4.1.dev2 → modal-1.4.1.dev4}/modal/token_flow.py +0 -0
- {modal-1.4.1.dev2 → modal-1.4.1.dev4}/modal/token_flow.pyi +0 -0
- {modal-1.4.1.dev2 → modal-1.4.1.dev4}/modal/volume.py +0 -0
- {modal-1.4.1.dev2 → modal-1.4.1.dev4}/modal/volume.pyi +0 -0
- {modal-1.4.1.dev2 → modal-1.4.1.dev4}/modal.egg-info/SOURCES.txt +0 -0
- {modal-1.4.1.dev2 → modal-1.4.1.dev4}/modal.egg-info/dependency_links.txt +0 -0
- {modal-1.4.1.dev2 → modal-1.4.1.dev4}/modal.egg-info/entry_points.txt +0 -0
- {modal-1.4.1.dev2 → modal-1.4.1.dev4}/modal.egg-info/requires.txt +0 -0
- {modal-1.4.1.dev2 → modal-1.4.1.dev4}/modal.egg-info/top_level.txt +0 -0
- {modal-1.4.1.dev2 → modal-1.4.1.dev4}/modal_docs/__init__.py +0 -0
- {modal-1.4.1.dev2 → modal-1.4.1.dev4}/modal_docs/gen_cli_docs.py +0 -0
- {modal-1.4.1.dev2 → modal-1.4.1.dev4}/modal_docs/gen_cli_docs_main.py +0 -0
- {modal-1.4.1.dev2 → modal-1.4.1.dev4}/modal_docs/gen_reference_docs.py +0 -0
- {modal-1.4.1.dev2 → modal-1.4.1.dev4}/modal_docs/gen_reference_docs_main.py +0 -0
- {modal-1.4.1.dev2 → modal-1.4.1.dev4}/modal_docs/mdmd/__init__.py +0 -0
- {modal-1.4.1.dev2 → modal-1.4.1.dev4}/modal_docs/mdmd/mdmd.py +0 -0
- {modal-1.4.1.dev2 → modal-1.4.1.dev4}/modal_docs/mdmd/signatures.py +0 -0
- {modal-1.4.1.dev2 → modal-1.4.1.dev4}/modal_proto/__init__.py +0 -0
- {modal-1.4.1.dev2 → modal-1.4.1.dev4}/modal_proto/api_grpc.py +0 -0
- {modal-1.4.1.dev2 → modal-1.4.1.dev4}/modal_proto/api_pb2.py +0 -0
- {modal-1.4.1.dev2 → modal-1.4.1.dev4}/modal_proto/api_pb2.pyi +0 -0
- {modal-1.4.1.dev2 → modal-1.4.1.dev4}/modal_proto/api_pb2_grpc.py +0 -0
- {modal-1.4.1.dev2 → modal-1.4.1.dev4}/modal_proto/api_pb2_grpc.pyi +0 -0
- {modal-1.4.1.dev2 → modal-1.4.1.dev4}/modal_proto/modal_api_grpc.py +0 -0
- {modal-1.4.1.dev2 → modal-1.4.1.dev4}/modal_proto/py.typed +0 -0
- {modal-1.4.1.dev2 → modal-1.4.1.dev4}/modal_proto/task_command_router_grpc.py +0 -0
- {modal-1.4.1.dev2 → modal-1.4.1.dev4}/modal_proto/task_command_router_pb2.py +0 -0
- {modal-1.4.1.dev2 → modal-1.4.1.dev4}/modal_proto/task_command_router_pb2.pyi +0 -0
- {modal-1.4.1.dev2 → modal-1.4.1.dev4}/modal_proto/task_command_router_pb2_grpc.py +0 -0
- {modal-1.4.1.dev2 → modal-1.4.1.dev4}/modal_proto/task_command_router_pb2_grpc.pyi +0 -0
- {modal-1.4.1.dev2 → modal-1.4.1.dev4}/modal_version/__main__.py +0 -0
- {modal-1.4.1.dev2 → modal-1.4.1.dev4}/pyproject.toml +0 -0
- {modal-1.4.1.dev2 → modal-1.4.1.dev4}/setup.cfg +0 -0
|
@@ -28,6 +28,7 @@ _EXEC_SANDBOX_UNAVAILABLE_ERROR_TYPES = (NotFoundError, ServiceError, Connection
|
|
|
28
28
|
class ErrorPayload:
|
|
29
29
|
error_kind: str
|
|
30
30
|
message: str
|
|
31
|
+
detail: str = ""
|
|
31
32
|
|
|
32
33
|
|
|
33
34
|
def _stderr_to_text(stderr: Union[str, bytes]) -> str:
|
|
@@ -51,11 +52,18 @@ def try_parse_error_payload(stderr: Union[str, bytes]) -> Optional[ErrorPayload]
|
|
|
51
52
|
return None
|
|
52
53
|
if not isinstance(message, str) or not message.strip():
|
|
53
54
|
return None
|
|
54
|
-
|
|
55
|
+
detail = payload.get("detail", "")
|
|
56
|
+
if not isinstance(detail, str):
|
|
57
|
+
detail = ""
|
|
58
|
+
return ErrorPayload(error_kind=error_kind, message=message, detail=detail)
|
|
55
59
|
|
|
56
60
|
|
|
57
61
|
def raise_read_file_error(returncode: int, stderr: Union[str, bytes], remote_path: str) -> NoReturn:
|
|
58
62
|
if payload := try_parse_error_payload(stderr):
|
|
63
|
+
logger.debug(
|
|
64
|
+
f"sandbox-fs-tools read error: path={remote_path}, "
|
|
65
|
+
f"error_kind={payload.error_kind}, message={payload.message}, detail={payload.detail}"
|
|
66
|
+
)
|
|
59
67
|
if payload.error_kind == "NotFound":
|
|
60
68
|
raise SandboxFilesystemNotFoundError(f"{payload.message}: {remote_path}")
|
|
61
69
|
if payload.error_kind == "IsDirectory":
|
|
@@ -106,6 +114,10 @@ def translate_exec_unexpected_error(operation: str, path: str, exc: Exception) -
|
|
|
106
114
|
|
|
107
115
|
def raise_write_file_error(returncode: int, stderr: Union[str, bytes], remote_path: str) -> NoReturn:
|
|
108
116
|
if payload := try_parse_error_payload(stderr):
|
|
117
|
+
logger.debug(
|
|
118
|
+
f"sandbox-fs-tools write error: path={remote_path}, "
|
|
119
|
+
f"error_kind={payload.error_kind}, message={payload.message}, detail={payload.detail}"
|
|
120
|
+
)
|
|
109
121
|
if payload.error_kind == "NotDirectory" or payload.error_kind == "AlreadyExists":
|
|
110
122
|
raise SandboxFilesystemNotADirectoryError(f"{payload.message}: {remote_path}")
|
|
111
123
|
if payload.error_kind == "IsDirectory":
|
|
@@ -35,7 +35,7 @@ class _Client:
|
|
|
35
35
|
server_url: str,
|
|
36
36
|
client_type: int,
|
|
37
37
|
credentials: typing.Optional[tuple[str, str]],
|
|
38
|
-
version: str = "1.4.1.
|
|
38
|
+
version: str = "1.4.1.dev4",
|
|
39
39
|
):
|
|
40
40
|
"""mdmd:hidden
|
|
41
41
|
The Modal client object is not intended to be instantiated directly by users.
|
|
@@ -171,7 +171,7 @@ class Client:
|
|
|
171
171
|
server_url: str,
|
|
172
172
|
client_type: int,
|
|
173
173
|
credentials: typing.Optional[tuple[str, str]],
|
|
174
|
-
version: str = "1.4.1.
|
|
174
|
+
version: str = "1.4.1.dev4",
|
|
175
175
|
):
|
|
176
176
|
"""mdmd:hidden
|
|
177
177
|
The Modal client object is not intended to be instantiated directly by users.
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|