Source code for ralph.mcp.tools._exec_run_deps
"""Injectable dependencies and type aliases for exec tool command execution."""
from __future__ import annotations
from collections.abc import Callable
from dataclasses import dataclass
from pathlib import Path
from typing import TYPE_CHECKING
if TYPE_CHECKING:
from ralph.mcp.tools._exec_completed_process import _CompletedProcessAdapter
from ralph.process.manager import ProcessManager
type CwdProvider = Callable[[], Path]
type CommandRunner = Callable[[list[str], Path, float | None], _CompletedProcessAdapter]
type OutputChunkCallback = Callable[[str], None]
[docs]
@dataclass(frozen=True)
class ExecRunDeps:
"""Injectable dependencies for exec tool command execution."""
runner: CommandRunner | None = None
cwd_provider: CwdProvider | None = None
process_manager: ProcessManager | None = None
on_output_chunk: OutputChunkCallback | None = None
#: Directory for oversized-output spill files. Defaults to the OS temp dir
#: (``tempfile.gettempdir()``) so the OS reclaims them; injectable for tests.
spill_dir: Path | None = None