import sys, hashlib sys.path.insert(0, '.') from gcmp import compare, prims OLD="../in/03-Architecture-Hardware/kicad"; NEW="../inb" LAY=(("F_Cu","gtl"),("In1_Cu","g1"),("In2_Cu","g2"),("B_Cu","gbl")) def row(tag,a,b): fs,ds,xa,blobs=compare(a,b) print(f" {tag:34s} flashes={fs!s:5} draws={ds!s:5} fill-xor={xa:.3f} mm2 blobs={len(blobs)}", [f"{ar:.2f}@({x1},{y1})-({x2},{y2}){t}" for ar,x1,y1,x2,y2,t in blobs[:4]]) for v,b,prod in (("v56","v5","HBOX_v5_Rev6_PROD"),("v57","v57","HBOX_v5_Rev7_PROD")): print("=====",v) for lay,e in LAY: saved=f"{NEW}/{v}/gerber-saved/hbox-watchdog-{b}-{lay}.gbr" rfn=f"{NEW}/{v}/rf/gerber/hbox-watchdog-{b}-{lay}.gbr" pkg=f"{NEW}/pkg{v[1:]}/hbox-watchdog-{b}-{lay}.{e}" rfo=f"{OLD}/_to_delete/audit-20261022/{v}/rf/gerber/hbox-watchdog-{b}-{lay}.gbr" pko=f"{OLD}/production/{prod}/hbox-watchdog-{b}-{lay}.{e}" print(f" [{lay}]") row("A saved-fill vs fresh refill (P-1)", saved, rfn) row("B new package vs saved-fill", pkg, saved) row("C new refill vs morning refill", rfn, rfo) row("D new package vs morning package", pkg, pko) # non-copper layers: primitive sets for lay,e in (("F_Mask","gts"),("B_Mask","gbs"),("F_Paste","gtp"),("B_Paste","gbp"),("F_Silkscreen","gto"),("B_Silkscreen","gbo"),("Edge_Cuts","gm1")): a=f"{NEW}/pkg{v[1:]}/hbox-watchdog-{b}-{lay}.{e}"; o=f"{OLD}/production/{prod}/hbox-watchdog-{b}-{lay}.{e}" fa,da=prims(a); fo,do=prims(o) print(f" {lay:12s} new pkg vs morning pkg: flashes={fa==fo} draws={da==do}") for d in ("PTH.drl","NPTH.drl"): a=open(f"{NEW}/pkg{v[1:]}/hbox-watchdog-{b}-{d}").read().splitlines(); o=open(f"{OLD}/production/{prod}/hbox-watchdog-{b}-{d}").read().splitlines() body=lambda L:[l for l in L if not l.startswith(";")] print(f" {d:12s} new pkg vs morning pkg: same={body(a)==body(o)} ({len(body(a))} lines)")