Terminal / tools /diff_checker.py
GitHub Action
sync: backend da GitHub 2026-05-18T11:59:53Z
e6fbc88
Raw
History Blame
1.06 kB
"""diff_checker.py — Genera e valida diff tra versioni di file."""
import difflib, re
from pathlib import Path
def generate_diff(original:str,modified:str,filename:str="file")->dict:
a=original.splitlines(keepends=True); b=modified.splitlines(keepends=True)
lines=list(difflib.unified_diff(a,b,fromfile=f"a/{filename}",tofile=f"b/{filename}",lineterm=""))
diff="\n".join(lines)
added=sum(1 for l in lines if l.startswith("+") and not l.startswith("+++"))
removed=sum(1 for l in lines if l.startswith("-") and not l.startswith("---"))
return {"diff":diff,"added":added,"removed":removed,"has_changes":len(lines)>0}
def validate_python(code:str)->dict:
import ast
try: ast.parse(code); return {"valid":True,"errors":[]}
except SyntaxError as e: return {"valid":False,"errors":[f"L{e.lineno}: {e.msg}"]}
def file_diff(path_a:str,path_b:str)->dict:
try: return generate_diff(Path(path_a).read_text(encoding="utf-8"),Path(path_b).read_text(encoding="utf-8"),Path(path_a).name)
except Exception as e: return {"error":str(e),"diff":""}