"""In-process fake backend for tests. Returns a canned string so the driver path can be exercised without an Ollama install. Configurable via ``DECNET_REALISM_FAKE_OUTPUT`` (env) or the ``output`` constructor arg — the env-var path lets integration tests run the worker end-to-end with deterministic output. """ from __future__ import annotations import os import time from typing import Optional from decnet.realism.llm.base import LLMBackend, LLMResult _DEFAULT_OUTPUT = ( "Subject: Quick update\n\n" "Hi,\n\nFollowing up on the topic.\n\nBest regards,\nFake Persona\n" ) class FakeBackend(LLMBackend): def __init__( self, *, model: str = "fake-model", timeout: float = 1.0, output: Optional[str] = None, success: bool = True, ) -> None: self.model = model self.timeout = timeout self._output = ( output if output is not None else os.environ.get("DECNET_REALISM_FAKE_OUTPUT", _DEFAULT_OUTPUT) ) self._success = success async def generate(self, prompt: str) -> LLMResult: # noqa: ARG002 t0 = time.monotonic() latency_ms = int((time.monotonic() - t0) * 1000) return LLMResult( success=self._success, text=self._output if self._success else "", model=self.model, latency_ms=latency_ms, extra={"rc": 0 if self._success else 1}, )