import git
import typer
import yaml
+from doc_parsing_utils import check_translation
from github import Github
from pydantic_ai import Agent
from rich import print
]
)
prompt = "\n\n".join(prompt_segments)
- print(f"Running agent for {out_path}")
- result = agent.run_sync(prompt)
- out_content = f"{result.output.strip()}\n"
+
+ MAX_ATTEMPTS = 3
+ for attempt_no in range(1, MAX_ATTEMPTS + 1):
+ print(f"Running agent for {out_path} (attempt {attempt_no}/{MAX_ATTEMPTS})")
+ result = agent.run_sync(prompt)
+ out_content = f"{result.output.strip()}\n"
+ try:
+ check_translation(
+ doc_lines=out_content.splitlines(),
+ en_doc_lines=original_content.splitlines(),
+ lang_code=language,
+ auto_fix=False,
+ path=str(out_path),
+ )
+ break # Exit loop if no errors
+ except ValueError as e:
+ print(
+ f"Translation check failed on attempt {attempt_no}/{MAX_ATTEMPTS}: {e}"
+ )
+ continue # Retry if not reached max attempts
+ else: # Max retry attempts reached
+ print(f"Translation failed for {out_path} after {MAX_ATTEMPTS} attempts")
+ raise typer.Exit(code=1)
+
print(f"Saving translation to {out_path}")
out_path.write_text(out_content, encoding="utf-8", newline="\n")