{
  "source_file": "src/summarization/batching.py",
  "generated_at": "2026-01-10T22:55:11.155090",
  "summary": {
    "purpose": "This file implements a batched summarization mechanism for repository files, optimizing for efficient LLM calls and caching.",
    "exports": [
      "FileForSummary",
      "SummaryResult",
      "BatchSummarizer",
      "parse_json_response",
      "_read_file_content"
    ],
    "imports": [
      "json",
      "os",
      "re",
      "time",
      "logging",
      "dataclasses",
      "pathlib",
      "typing",
      "from ..utils.formatting import _separator, _info",
      "from dataclasses import dataclass, field",
      "from ..core.config import SummarizerConfig, DEFAULT_CONFIG",
      "from ..utils.cache import SummaryCache, get_cache",
      "from .prompts import build_batch_summary_prompt, build_file_summary_prompt, build_chunk_reduce_prompt, build_reduce_prompt, build_json_fix_prompt, estimate_tokens, truncate_content, extract_code_header, extract_signatures"
    ],
    "key_components": [
      {
        "name": "FileForSummary",
        "type": "class",
        "description": "A class representing a file to be summarized, containing its path, absolute path, content, size in lines, language, and whether it's large."
      },
      {
        "name": "SummaryResult",
        "type": "class",
        "description": "A class representing the result of summarizing files, containing the summaries, errors, cache hits, LLM calls, and token counts."
      },
      {
        "name": "BatchSummarizer",
        "type": "class",
        "description": "A class responsible for batch summarization, including methods for logging and summarization."
      }
    ],
    "data_structures": "FileForSummary, SummaryResult",
    "algorithms": "MAP-then-REDUCE pattern, token estimation, file chunking, context overlap, cache lookups, JSON parsing with retry logic",
    "configuration": "SummarizerConfig, DEFAULT_CONFIG",
    "notes": "The file implements a mechanism for batch summarization of repository files, optimizing for efficient LLM calls and caching. It includes a class for summarizing files and a class for batch summarization, each with methods for logging and summarization."
  }
}