from pathlib import Path
import sys,shutil,re,json
R=Path(__file__).resolve().parent;B=R.parent
sys.path.insert(0,str(B/'parity_metadata_closure_A22'));from prepare_candidates import forms,run,sha
S=Path('work/tri-product-continuation-2026-10-09.nosync/hardware_source_localization_v140/硬件/lamp_safety/evt');D=R/'baseline';D.mkdir(exist_ok=True)
name='lamp_safety_evt_a0'
for ext in ['kicad_pcb','kicad_pro','kicad_sch']:shutil.copy2(S/(name+'.'+ext),D/(name+'.'+ext))
p=D/(name+'.kicad_sch');s=p.read_text();s=re.sub(r'\(project\s+"[^"]+"','(project "'+name+'"',s);p.write_text(s)
lib=list(forms(s,'lib_symbols'))[0][2];lib=re.sub(r'^\(\s*lib_symbols\s+','',lib)[:-1];lib=re.sub(r'(\(symbol\s+")Project:',r'\1',lib)
(D/'Project.kicad_sym').write_text('(kicad_symbol_lib (version 20241209) (generator "kicad_symbol_editor")\n'+lib+'\n)\n')
(D/'sym-lib-table').write_text('(sym_lib_table (version 7) (lib (name "Project") (type "KiCad") (uri "${KIPRJMOD}/Project.kicad_sym") (options "") (descr "Exact embedded symbols")))\n')
run(['sch','erc','--severity-all','--format','json','--output',str(D/'erc.json'),str(p)],D/'erc.log')
run(['pcb','drc','--severity-all','--all-track-errors','--schematic-parity','--refill-zones','--save-board','--format','json','--output',str(D/'drc.json'),str(D/(name+'.kicad_pcb'))],D/'drc.log')
for n in ['erc','drc']:
 j=json.loads((D/(n+'.json')).read_text());print(n,{k:len(v) for k,v in j.items() if isinstance(v,list)})
