Files
hermes-agent/scripts/syntax_guard.py

42 lines
1.3 KiB
Python
Executable File

#!/usr/bin/env python3
"""Syntax guard — compile all Python files to catch syntax errors before merge."""
import py_compile
import re
import sys
from pathlib import Path
# List of regex patterns for cloud inference APIs
CLOUD_API_PATTERNS = [
r'https?://(?:api\.)?(openai\.com|anthropic\.ai|anthropic\.com|openrouter\.ai|nous\.ai|kimi\.ai|groq\.com)',
r'https?://(?:api\.)?gitea\.com', # if Gitea is cloud-hosted
]
errors = []
for p in Path(".").rglob("*.py"):
if ".venv" in p.parts or "__pycache__" in p.parts:
continue
try:
py_compile.compile(str(p), doraise=True)
except py_compile.PyCompileError as e:
errors.append(f"SYNTAX ERROR: {p}: {e}")
print(f"SYNTAX ERROR: {p}: {e}", file=sys.stderr)
# Read file content to check for cloud API calls
try:
content = p.read_text()
for pattern in CLOUD_API_PATTERNS:
if re.search(pattern, content, re.IGNORECASE):
errors.append(f"CLOUD API CALL: {p}")
print(f"CLOUD API CALL: {p} — matches pattern: {pattern}", file=sys.stderr)
break
except Exception as e:
print(f"ERROR reading {p}: {e}", file=sys.stderr)
if errors:
print(f"\n{len(errors)} issue(s) found", file=sys.stderr)
sys.exit(1)
print("All Python files compile and are cloud API-free")