| """Validator sandbox executor adapters.""" |
|
|
| from __future__ import annotations |
|
|
| import os |
| from typing import Any, Callable |
|
|
| from .codebase_archive import CodebaseArchiveStore, create_codebase_archive_store |
| from .codebase_executor import ( |
| DEFAULT_SNAPSHOT_ROOT, |
| CodebaseSandboxExecutor, |
| _daytona_validator_backend, |
| _local_validator_backend, |
| ) |
|
|
|
|
| class SandboxValidatorExecutor(CodebaseSandboxExecutor): |
| """Restores Run codebase archives into a sandbox before running checks.""" |
|
|
|
|
| def create_validator_executor( |
| archive_store: CodebaseArchiveStore | None = None, |
| provider: str | None = None, |
| ) -> SandboxValidatorExecutor: |
| provider = (provider or os.getenv("VALIDATOR_SANDBOX_PROVIDER") or "local").lower() |
| store = archive_store or create_codebase_archive_store() |
| return SandboxValidatorExecutor( |
| backend_factory=_validator_backend_factory(provider), |
| archive_store=store, |
| root_dir=DEFAULT_SNAPSHOT_ROOT, |
| ) |
|
|
|
|
| def _validator_backend_factory(provider: str) -> Callable[[], Any]: |
| if provider == "local": |
| return _local_validator_backend |
| if provider == "daytona": |
| return _daytona_validator_backend |
| raise ValueError(f"unsupported validator sandbox provider: {provider}") |
|
|