Skip to content
RPRichard PruittTech & Cyber
Navigation
repo://poppyup/wiring/build.py

wiring/build.py

2.7 KB · 39 lines · python · Download from the repository page

wiring/build.py
# Build every wiring sheet (SVG) + schedules from model.py.  Run:  python3 wiring/build.pyimport csv, importlib, os, sysHERE = os.path.dirname(os.path.abspath(__file__)); sys.path.insert(0, HERE); sys.path.insert(0, os.path.join(HERE, "src"))import model def build_schedules():  fn = os.path.join(HERE, "PU_Connection-Schedule_Rev-A.csv")  with open(fn, "w", newline="") as f:    w = csv.writer(f)    w.writerow(["ID","From equipment","From connector","To equipment","To connector","Medium","Signal / service","Class","Length","Status","Source","Sheets","Notes"])    for c in model.CONNECTIONS:      w.writerow([c["id"], model.EQUIPMENT[c["frm"][0]][0], c["frm"][1], model.EQUIPMENT[c["to"][0]][0], c["to"][1], c["medium"], c["signal"], c["cls"], c["length"], c["status"], c["source"], " ".join(model.sheet_no(s) for s in c["sheets"]), c["notes"]])    w.writerow([]); w.writerow(["On-board power links (main board unless noted)"])    w.writerow(["ID","From","To","Rail / voltage","Current","Status","Source","Notes"])    for p in model.POWER_LINKS: w.writerow(list(p))  md = [f"# PoppyUp — connection schedule (Rev {model.REV}, {model.DATE}, {model.STATUS})", "",        "Generated from `wiring/model.py`. Off-board connections first (cables, flexes, mated modules, bonds), then on-board power links.", "",        "| ID | From | To | Medium | Signal / service | Class | Length | Status | Source | Sheets |", "|---|---|---|---|---|---|---|---|---|---|"]  for c in model.CONNECTIONS:    md.append(f"| {c['id']} | {model.EQUIPMENT[c['frm'][0]][0]} {c['frm'][1]} | {model.EQUIPMENT[c['to'][0]][0]} {c['to'][1]} | {c['medium']} | {c['signal']} | {c['cls']} | {c['length']} | {c['status']} | {c['source']} | {' '.join(model.sheet_no(s) for s in c['sheets'])} |")  md += ["", "## Notes per connection", ""]  for c in model.CONNECTIONS:    if c["notes"]: md.append(f"- **{c['id']}** — {c['notes']}")  md += ["", "## On-board power links (PU-W-102)", "", "| ID | From | To | Rail | Current | Status | Source | Notes |", "|---|---|---|---|---|---|---|---|"]  for p in model.POWER_LINKS: md.append("| " + " | ".join(p) + " |")  md += ["", "## Mezzanine J3/J6 allocation (PU-W-201, from docs/09 §8.1)", "", "| Pins | Group | n | Main-board side | Reader-board side | Notes |", "|---|---|---|---|---|---|"]  for p in model.MEZZ_PINS: md.append("| " + " | ".join(str(x) for x in p) + " |")  open(os.path.join(HERE, "PU_Connection-Schedule_Rev-A.md"), "w").write("\n".join(md) + "\n") if __name__ == "__main__":  only = sys.argv[1:]  built = []  for n,_ in model.SHEETS:    if only and n not in only: continue    m = importlib.import_module(f"w{n}")    built.append(m.draw())  if not only: build_schedules()  print("\n".join(built))