Check Python syntax using ast.parse. Returns a human-readable error string on failure, None if valid.
(content: str, filename: str = "<string>")
| 38 | # ── Syntax check (free, no external tools) ──────────────────────────────────── |
| 39 | |
| 40 | def check_syntax(content: str, filename: str = "<string>") -> Optional[str]: |
| 41 | """ |
| 42 | Check Python syntax using ast.parse. |
| 43 | Returns a human-readable error string on failure, None if valid. |
| 44 | """ |
| 45 | try: |
| 46 | ast.parse(content, filename=filename) |
| 47 | return None |
| 48 | except SyntaxError as e: |
| 49 | return f"SyntaxError at line {e.lineno}: {e.msg}" |
| 50 | except Exception as e: |
| 51 | return f"Parse error: {e}" |
| 52 | |
| 53 | |
| 54 | # ── Output parsers ───────────────────────────────────────────────────────────── |
no outgoing calls
no test coverage detected