From 70b2b6acc33960bf00f9469fc21797c3825dcdf6 Mon Sep 17 00:00:00 2001 From: David Rice Date: Thu, 30 Apr 2026 12:39:48 +0100 Subject: [PATCH] Updates --- ...exio_Conduent Subsystem Cost Analysis.xlsx | Bin 182229 -> 182391 bytes bom_extract.py | 98 ++++-- bom_parts.xlsx | Bin 11283 -> 0 bytes bom_price_checker.py | 80 +++-- bom_prices.xlsx | Bin 10301 -> 0 bytes octo_fill.py | 320 ++++++++++++++++++ 6 files changed, 431 insertions(+), 67 deletions(-) delete mode 100644 bom_parts.xlsx delete mode 100644 bom_prices.xlsx create mode 100644 octo_fill.py diff --git a/BoM/Axio4_Nexio_Conduent Subsystem Cost Analysis.xlsx b/BoM/Axio4_Nexio_Conduent Subsystem Cost Analysis.xlsx index 28a9d1985832a0caa36f66b833f2207ef9265457..6de1e0853a03e520934bb5bc67159083d240ec2f 100644 GIT binary patch delta 71991 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 delta 71660 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

VqZ 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 diff --git a/bom_extract.py b/bom_extract.py index b0a7882..2f5d64e 100644 --- a/bom_extract.py +++ b/bom_extract.py @@ -20,7 +20,8 @@ import openpyxl import pandas as pd BOM_DIR = Path("BoM") -OUTPUT_FILE = Path("bom_parts.xlsx") +OUTPUT_DIR = Path("OUTPUT") +CHUNK_SIZE = 500 SKIP_MPNS = { "", "tbd", "n/a", "na", "-", "--", "---", "?", "none", @@ -41,43 +42,61 @@ def _cell(value) -> str: def _find_tables(indexed_rows: list[tuple[int, tuple]]) -> list[tuple[str, str]]: - """Return all (manufacturer, mpn) pairs found across every table in the row list.""" + """ + Return all (manufacturer, mpn) pairs found across every table in the row list. + Handles multiple tables side-by-side on the same header row. + """ parts: list[tuple[str, str]] = [] i = 0 while i < len(indexed_rows): _, row = indexed_rows[i] row_str = [_cell(v) for v in row] - mfr_col = next((c for c, v in enumerate(row_str) if v.lower() == "manufacturer"), None) - mpn_col = next((c for c, v in enumerate(row_str) if v.lower() == "mpn"), None) + mfr_cols = [c for c, v in enumerate(row_str) if v.lower() == "manufacturer"] + mpn_cols = [c for c, v in enumerate(row_str) if v.lower() == "mpn"] - if mfr_col is None or mpn_col is None: + if not mfr_cols or not mpn_cols: i += 1 continue - j = i + 1 - empty_streak = 0 - while j < len(indexed_rows): - _, dr = indexed_rows[j] - mfr = _cell(dr[mfr_col] if mfr_col < len(dr) else None) - mpn = _cell(dr[mpn_col] if mpn_col < len(dr) else None) - - if not mfr and not mpn: - empty_streak += 1 - if empty_streak >= 3: - break - j += 1 - continue - empty_streak = 0 - - if mfr.lower() == "manufacturer" and mpn.lower() == "mpn": + # Pair each mfr_col with its nearest unpaired mpn_col + pairs: list[tuple[int, int]] = [] + used_mpn: set[int] = set() + for mfr_col in mfr_cols: + available = [c for c in mpn_cols if c not in used_mpn] + if not available: break + best_mpn = min(available, key=lambda c: abs(c - mfr_col)) + pairs.append((mfr_col, best_mpn)) + used_mpn.add(best_mpn) - if mpn and mpn.lower() not in SKIP_MPNS: - parts.append((mfr, mpn)) - j += 1 + max_j = i + 1 + for mfr_col, mpn_col in pairs: + j = i + 1 + empty_streak = 0 + while j < len(indexed_rows): + _, dr = indexed_rows[j] + mfr = _cell(dr[mfr_col] if mfr_col < len(dr) else None) + mpn = _cell(dr[mpn_col] if mpn_col < len(dr) else None) - i = j + if not mfr and not mpn: + empty_streak += 1 + if empty_streak >= 3: + break + j += 1 + continue + empty_streak = 0 + + if mfr.lower() == "manufacturer" and mpn.lower() == "mpn": + break + + if mpn and mpn.lower() not in SKIP_MPNS: + parts.append((mfr, mpn)) + j += 1 + + max_j = max(max_j, j) + + i = max_j return parts @@ -117,18 +136,29 @@ def extract(bom_dir: Path) -> list[tuple[str, str]]: return parts -def write(parts: list[tuple[str, str]], output: Path) -> None: +def write_chunks(parts: list[tuple[str, str]], output_dir: Path) -> None: + output_dir.mkdir(exist_ok=True) + df = pd.DataFrame(parts, columns=["Manufacturer", "MPN"]) df.sort_values(["Manufacturer", "MPN"], inplace=True, ignore_index=True) - with pd.ExcelWriter(output, engine="openpyxl") as writer: - df.to_excel(writer, index=False, sheet_name="Parts") - ws = writer.sheets["Parts"] - for col in ws.columns: - width = max(len(str(cell.value or "")) for cell in col) - ws.column_dimensions[col[0].column_letter].width = min(width + 3, 60) + total = len(df) + n_files = (total + CHUNK_SIZE - 1) // CHUNK_SIZE - log.info(f"Written → {output} ({len(parts)} unique parts)") + for idx in range(n_files): + chunk = df.iloc[idx * CHUNK_SIZE : (idx + 1) * CHUNK_SIZE] + out = output_dir / f"bom_parts_{idx + 1}_of_{n_files}.xlsx" + + with pd.ExcelWriter(out, engine="openpyxl") as writer: + chunk.to_excel(writer, index=False, sheet_name="Parts") + ws = writer.sheets["Parts"] + for col in ws.columns: + width = max(len(str(cell.value or "")) for cell in col) + ws.column_dimensions[col[0].column_letter].width = min(width + 3, 60) + + log.info(f" Written → {out} ({len(chunk)} parts)") + + log.info(f"Done – {total} unique parts across {n_files} file(s) in {output_dir}/") if __name__ == "__main__": @@ -137,4 +167,4 @@ if __name__ == "__main__": sys.exit(1) parts = extract(BOM_DIR) - write(parts, OUTPUT_FILE) + write_chunks(parts, OUTPUT_DIR) diff --git a/bom_parts.xlsx b/bom_parts.xlsx deleted file mode 100644 index 1002e1cda59be0e8f6bd19ff1d73a73de5f3f05a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 11283 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 list[TableLocation]: """ Scan a list of (1-based-row-num, row-values-tuple) pairs for sub-tables that have both a 'Manufacturer' and 'MPN' header column. + Handles multiple tables side-by-side on the same header row. """ tables: list[TableLocation] = [] i = 0 @@ -175,46 +176,59 @@ def _find_tables(indexed_rows: list[tuple[int, tuple]]) -> list[TableLocation]: row_num, row = indexed_rows[i] row_str = [_cell(v) for v in row] - mfr_col_0 = next((c for c, v in enumerate(row_str) if v.lower() == "manufacturer"), None) - mpn_col_0 = next((c for c, v in enumerate(row_str) if v.lower() == "mpn"), None) + mfr_cols = [c for c, v in enumerate(row_str) if v.lower() == "manufacturer"] + mpn_cols = [c for c, v in enumerate(row_str) if v.lower() == "mpn"] - if mfr_col_0 is None or mpn_col_0 is None: + if not mfr_cols or not mpn_cols: i += 1 continue - # Found a header row – consume data rows below it - data: list[tuple[int, str, str]] = [] - j = i + 1 - empty_streak = 0 - while j < len(indexed_rows): - dr_num, dr = indexed_rows[j] - mfr = _cell(dr[mfr_col_0] if mfr_col_0 < len(dr) else None) - mpn = _cell(dr[mpn_col_0] if mpn_col_0 < len(dr) else None) - - if not mfr and not mpn: - empty_streak += 1 - if empty_streak >= 3: - break - j += 1 - continue - empty_streak = 0 - - # Another header row signals the end of this table - if mfr.lower() == "manufacturer" and mpn.lower() == "mpn": + # Pair each mfr_col with its nearest unpaired mpn_col + pairs: list[tuple[int, int]] = [] + used_mpn: set[int] = set() + for mfr_col_0 in mfr_cols: + available = [c for c in mpn_cols if c not in used_mpn] + if not available: break + best_mpn = min(available, key=lambda c: abs(c - mfr_col_0)) + pairs.append((mfr_col_0, best_mpn)) + used_mpn.add(best_mpn) - if mpn and not _skip(mpn): - data.append((dr_num, mfr, mpn)) - j += 1 + max_j = i + 1 + for mfr_col_0, mpn_col_0 in pairs: + data: list[tuple[int, str, str]] = [] + j = i + 1 + empty_streak = 0 + while j < len(indexed_rows): + dr_num, dr = indexed_rows[j] + mfr = _cell(dr[mfr_col_0] if mfr_col_0 < len(dr) else None) + mpn = _cell(dr[mpn_col_0] if mpn_col_0 < len(dr) else None) - tables.append(TableLocation( - sheet_name="", # filled by caller - header_row=row_num, - mfr_col=mfr_col_0 + 1, # convert to 1-based - mpn_col=mpn_col_0 + 1, - data=data, - )) - i = j # jump past the table we just consumed + if not mfr and not mpn: + empty_streak += 1 + if empty_streak >= 3: + break + j += 1 + continue + empty_streak = 0 + + if mfr.lower() == "manufacturer" and mpn.lower() == "mpn": + break + + if mpn and not _skip(mpn): + data.append((dr_num, mfr, mpn)) + j += 1 + + max_j = max(max_j, j) + tables.append(TableLocation( + sheet_name="", + header_row=row_num, + mfr_col=mfr_col_0 + 1, # convert to 1-based + mpn_col=mpn_col_0 + 1, + data=data, + )) + + i = max_j return tables diff --git a/bom_prices.xlsx b/bom_prices.xlsx deleted file mode 100644 index 41e9e4640cb861c47cefd897b624e9e6714594a2..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 10301 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 tuple[dict[tuple[str,str], float], dict[str, float]]: + """ + Returns: + exact_map – (manufacturer_lower, mpn_lower) → lowest unit price + mpn_map – mpn_lower → lowest unit price (fallback) + """ + log.info(f"Reading Octopart data from {path}") + wb = openpyxl.load_workbook(path, data_only=True, read_only=True) + + exact_map: dict[tuple[str, str], float] = {} + mpn_map: dict[str, float] = {} + + for sheet_name in wb.sheetnames: + ws = wb[sheet_name] + headers: Optional[dict[str, int]] = None # col_name → 0-based index + + for row in ws.iter_rows(values_only=True): + row = list(row) + if headers is None: + # Find header row + row_lower = [str(v).strip().lower() if v is not None else "" for v in row] + if "original part" in row_lower and "original manufacturer" in row_lower: + headers = {str(row[i]).strip(): i for i in range(len(row)) if row[i] is not None} + continue + + if not any(row): + continue + + mpn_col = _find_col(headers, "original part") + mfr_col = _find_col(headers, "original manufacturer") + price_col = _find_col(headers, "unit price") + + if mpn_col is None or price_col is None: + continue + + mpn = str(row[mpn_col]).strip() if mpn_col < len(row) and row[mpn_col] is not None else "" + mfr = str(row[mfr_col]).strip() if mfr_col is not None and mfr_col < len(row) and row[mfr_col] is not None else "" + price_raw = row[price_col] if price_col < len(row) else None + + if not mpn or mpn.lower() in SKIP_MPNS: + continue + + try: + price = float(price_raw) + except (TypeError, ValueError): + continue + + if price <= 0: + continue + + key = (mfr.lower(), mpn.lower()) + if key not in exact_map or price < exact_map[key]: + exact_map[key] = price + + mpn_k = mpn.lower() + if mpn_k not in mpn_map or price < mpn_map[mpn_k]: + mpn_map[mpn_k] = price + + wb.close() + + log.info(f" Loaded {len(exact_map)} unique (manufacturer, part) entries from Octopart") + return exact_map, mpn_map + + +def _find_col(headers: dict[str, int], prefix: str) -> Optional[int]: + """Case-insensitive prefix match on header names.""" + for name, idx in headers.items(): + if name.lower().startswith(prefix.lower()): + return idx + return None + + +# ── BoM table finding ────────────────────────────────────────────────────────── + +def _cell(value) -> str: + return str(value).strip() if value is not None else "" + + +def _find_tables(indexed_rows: list[tuple[int, tuple]]): + """ + Yields TableInfo dicts per component table found. + Handles multiple tables side-by-side on the same row by finding ALL + Manufacturer+MPN column pairs in a header row, not just the first. + Includes 'start_col' so the cost-column search stays within each table. + """ + i = 0 + while i < len(indexed_rows): + row_num, row = indexed_rows[i] + row_str = [_cell(v) for v in row] + + # All column positions that are "manufacturer" or "mpn" + mfr_cols = [c for c, v in enumerate(row_str) if v.lower() == "manufacturer"] + mpn_cols = [c for c, v in enumerate(row_str) if v.lower() == "mpn"] + + if not mfr_cols or not mpn_cols: + i += 1 + continue + + # Pair each mfr_col with its nearest unpaired mpn_col + pairs: list[tuple[int, int]] = [] + used_mpn: set[int] = set() + for mfr_col in mfr_cols: + available = [c for c in mpn_cols if c not in used_mpn] + if not available: + break + best_mpn = min(available, key=lambda c: abs(c - mfr_col)) + pairs.append((mfr_col, best_mpn)) + used_mpn.add(best_mpn) + + max_j = i + 1 + for mfr_col, mpn_col in pairs: + data: list[tuple[int, str, str]] = [] + j = i + 1 + empty_streak = 0 + while j < len(indexed_rows): + dr_num, dr = indexed_rows[j] + mfr = _cell(dr[mfr_col] if mfr_col < len(dr) else None) + mpn = _cell(dr[mpn_col] if mpn_col < len(dr) else None) + + if not mfr and not mpn: + empty_streak += 1 + if empty_streak >= 3: + break + j += 1 + continue + empty_streak = 0 + + if mfr.lower() == "manufacturer" and mpn.lower() == "mpn": + break + + if mpn and mpn.lower() not in SKIP_MPNS: + data.append((dr_num, mfr, mpn)) + j += 1 + + max_j = max(max_j, j) + yield { + "header_row": row_num, + "mfr_col": mfr_col + 1, # 1-based + "mpn_col": mpn_col + 1, + "start_col": min(mfr_col, mpn_col) + 1, # leftmost col of this table + "data": data, + } + + i = max_j + + +# ── Write back to BoM files ──────────────────────────────────────────────────── + +def fill_boms( + bom_dir: Path, + exact_map: dict[tuple[str, str], float], + mpn_map: dict[str, float], +) -> None: + files = sorted(f for f in bom_dir.iterdir() if f.suffix.lower() in {".xlsx", ".xlsm"}) + if not files: + log.error(f"No .xlsx/.xlsm files found in {bom_dir}/") + sys.exit(1) + + total_filled = 0 + total_skipped = 0 + total_missing = 0 + + for f in files: + log.info(f"Processing {f.name}") + try: + wb = openpyxl.load_workbook(f) + except Exception as exc: + log.error(f" Cannot open {f.name}: {exc}") + continue + + for sheet_name in wb.sheetnames: + ws = wb[sheet_name] + indexed = [ + (i, tuple(row)) + for i, row in enumerate(ws.iter_rows(values_only=True), start=1) + ] + + for table in _find_tables(indexed): + header_row = table["header_row"] + log.info( + f" Sheet '{sheet_name}' row {header_row}: " + f"table at col {table['start_col']}, {len(table['data'])} parts" + ) + + # Find or create the cost column. + # Accept either of the two known column names (the primary + # COST_HEADER or the name used by the earlier write-back script). + KNOWN_COST_HEADERS = { + COST_HEADER.lower(), + "unit cost 1000x data", + } + cost_col = None + last_used = table["start_col"] + max_col = ws.max_column or 1 + # Search only within this table's column range (from its + # leftmost column rightward) so side-by-side tables don't + # steal each other's cost column. + for c in range(table["start_col"], max_col + 1): + val = ws.cell(header_row, c).value + if val is not None: + last_used = c + if str(val).strip().lower() in KNOWN_COST_HEADERS: + cost_col = c + break + + if cost_col is None: + cost_col = last_used + 1 + while isinstance(ws.cell(header_row, cost_col), MergedCell): + cost_col += 1 + ws.cell(header_row, cost_col).value = COST_HEADER + + for row_num, mfr, mpn in table["data"]: + cell = ws.cell(row_num, cost_col) + if isinstance(cell, MergedCell): + continue + existing = cell.value + if existing is not None and str(existing).strip() not in ("", "0") and existing != 0: + total_skipped += 1 + continue + + # Look up price: exact match first, then MPN-only fallback + price = exact_map.get((mfr.lower(), mpn.lower())) + if price is None: + price = mpn_map.get(mpn.lower()) + if price is not None: + log.debug(f" MPN-only match: {mpn} (mfr '{mfr}' not matched)") + + if price is not None: + cell.value = price + total_filled += 1 + else: + total_missing += 1 + log.info(f" No match in Octopart: [{mfr}] [{mpn}]") + + try: + wb.save(f) + log.info(f" Saved {f.name}") + except PermissionError: + log.error(f" Cannot save {f.name} – close it in Excel first.") + except Exception as exc: + log.error(f" Save failed for {f.name}: {exc}") + + log.info( + f"Done – filled: {total_filled}, " + f"already populated (skipped): {total_skipped}, " + f"no match in Octopart: {total_missing}" + ) + + +# ── Main ─────────────────────────────────────────────────────────────────────── + +if __name__ == "__main__": + for p in (BOM_DIR, OCTO_FILE): + if not p.exists(): + log.error(f"Not found: {p}") + sys.exit(1) + + exact_map, mpn_map = load_octo(OCTO_FILE) + fill_boms(BOM_DIR, exact_map, mpn_map)