import ast
import sys
from pathlib import Path

for path in sorted(Path('.').rglob('*.py')):
    try:
        source = path.read_text(encoding='utf-8')
    except UnicodeDecodeError:
        source = path.read_text(encoding='latin1')
    try:
        ast.parse(source, filename=str(path))
    except SyntaxError as exc:
        print(f"SyntaxError in {path}:{exc.lineno}:{exc.offset}")
        if exc.text:
            print(exc.text.rstrip())
        caret = ' ' * (exc.offset - 1) + '^' if exc.offset else ''
        if caret:
            print(caret)
        sys.exit(1)
print('AST OK')
