Source code for agenter.post_validators.syntax
"""Syntax validator for Python files."""
import ast
from ..data_models import ValidationResult
[docs]
class SyntaxValidator:
"""Validates Python syntax using AST parsing.
Fast, zero-dependency validation that catches syntax errors immediately.
"""
is_blocking: bool = True
[docs]
async def validate(self, files: dict[str, str], cwd: str) -> ValidationResult:
"""Check Python files for syntax errors."""
errors = []
for path, content in files.items():
if not path.endswith(".py"):
continue
try:
ast.parse(content, filename=path)
except SyntaxError as e:
line = e.lineno or 0
msg = e.msg or "syntax error"
errors.append(f"{path}:{line}: {msg}")
return ValidationResult(passed=len(errors) == 0, errors=errors)