From 95b700d6eb6aed66c0718c75b079999b01b09622 Mon Sep 17 00:00:00 2001 From: David Rice Date: Mon, 13 Apr 2026 14:12:21 +0100 Subject: [PATCH] Updates --- ...1000037326_Offre Elemaster_2023 12 26.xlsx | Bin 0 -> 79390 bytes nexarxclaude.py | 69 ++++++++++++------ 2 files changed, 45 insertions(+), 24 deletions(-) create mode 100644 BOM/ELP1000037326_Offre Elemaster_2023 12 26.xlsx diff --git a/BOM/ELP1000037326_Offre Elemaster_2023 12 26.xlsx b/BOM/ELP1000037326_Offre Elemaster_2023 12 26.xlsx new file mode 100644 index 0000000000000000000000000000000000000000..5bfb6131a39a7cf6cc52829f297bb1aff27e28c5 GIT binary patch literal 79390 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 literal 0 HcmV?d00001 diff --git a/nexarxclaude.py b/nexarxclaude.py index 9fbe40f..c211621 100644 --- a/nexarxclaude.py +++ b/nexarxclaude.py @@ -252,9 +252,40 @@ def normalise(s: str) -> str: return re.sub(r"[^a-z0-9]", "", s.lower()) -def _prefix_match(a: str, b: str) -> bool: - """True if normalised strings match or one is a prefix of the other.""" - na, nb = normalise(a), normalise(b) + +_MFR_ALIASES = { + "ti": "texasinstruments", + "texas": "texasinstruments", + "texasinstruments": "texasinstruments", + "onsemi": "onsemi", + "onsemiconductor": "onsemi", + "onsemin": "onsemi", + "nxp": "nxp", + "nxpsemiconductors": "nxp", + "st": "stmicro", + "stmicro": "stmicro", + "stmicroelectronics": "stmicro", + "abracon": "abracon", + "abraconcorporation": "abracon", + "ck": "ck", + "ckcomponents": "ck", + "murata": "murata", + "muratamfg": "murata", + "muratamanufacturing": "murata", + "kingbright": "kingbright", + "kingbight": "kingbright", # known Nexar typo +} + + +def _norm_mfr(s: str) -> str: + """Normalise a manufacturer name, resolving known abbreviations and aliases.""" + n = normalise(s) + return _MFR_ALIASES.get(n, n) + + +def _mfr_match(a: str, b: str) -> bool: + """True if two manufacturer names refer to the same company (alias-aware, prefix-tolerant).""" + na, nb = _norm_mfr(a), _norm_mfr(b) return bool(na and nb and (na == nb or na.startswith(nb) or nb.startswith(na))) @@ -290,6 +321,8 @@ def _elec_match(a: str, b: str) -> bool: return na == nb or nb.startswith(na) or na.startswith(nb) + + def load_bom_data(bom_path: str) -> list | None: """Load BOM xlsx and return a list of entry dicts. Returns None if no 'bom' tab is found.""" @@ -350,27 +383,29 @@ def _find_bom_match(bom_data: list, mfr_name: str, mpn: str) -> dict | None: """Return the highest unit cost BOM entry that prefix-matches both manufacturer and MPN.""" candidates = [ e for e in bom_data - if _prefix_match(e["manufacturer"], mfr_name) and _mpn_match(e["mpn"], mpn) + if _mfr_match(e["manufacturer"], mfr_name) and _mpn_match(e["mpn"], mpn) ] return max(candidates, key=lambda e: e["unit_cost"]) if candidates else None def _extract_r_vals(s: str) -> tuple: """Extract (resistance_norm, footprint) from a description string using word boundaries.""" + s = re.sub(r'(\d),(\d)', r'\1.\2', s) # normalise European decimal comma rm = re.search(r'\b(\d+\.?\d*\s*(?:kohms?|mohms?|k[\s\-]?ohms?|ohms?|k|m|r))\b', s, re.IGNORECASE) resistance = _norm_elec(rm.group(1)) if rm else "" - fm = re.search(r'\b(0\d{3})\b', s) + fm = re.search(r'\b(\d{4})\b', s) footprint = fm.group(1) if fm else "" return resistance, footprint def _extract_c_vals(s: str) -> tuple: """Extract (capacitance_norm, voltage_norm, case) from a description string.""" + s = re.sub(r'(\d),(\d)', r'\1.\2', s) # normalise European decimal comma cm = re.search(r'\b(\d+\.?\d*\s*(?:p|n|u|µ|μ|m)\s*f)\b', s, re.IGNORECASE) capacitance = _norm_elec(cm.group(1)) if cm else "" vm = re.search(r'\b(\d+\.?\d*\s*v)\b', s, re.IGNORECASE) voltage = _norm_elec(vm.group(1)) if vm else "" - fm = re.search(r'\b(0\d{3})\b', s) + fm = re.search(r'\b(\d{4})\b', s) case = fm.group(1) if fm else "" return capacitance, voltage, case @@ -435,13 +470,11 @@ def _find_passive_bom_match(bom_data: list, designator: str, nexar_params: dict, desc = e.get("description", "") if not desc or "cap" not in desc.lower(): continue - bom_c, bom_v, bom_case = _extract_c_vals(desc) + bom_c, _, bom_case = _extract_c_vals(desc) if not bom_c or not _elec_match(bom_c, capacitance): continue if not bom_case or bom_case.lower() != case.lower().strip(): continue - if voltage and bom_v and not _elec_match(bom_v, voltage): - continue candidates.append(e) return max(candidates, key=lambda e: e["unit_cost"]) if candidates else None @@ -528,22 +561,10 @@ def export_to_xlsx(project_name: str, variant_name: str, schematics: list, bom_d f"(BOM: '{mpn_in_bom['manufacturer']}' vs Nexar: '{valid_pairs[0][0]}')" ) else: - # Check if BOM has the manufacturer but with a different MPN - mfr_in_bom = next( - (e for e in bom_data for mfr, _ in valid_pairs if _prefix_match(e["manufacturer"], mfr)), - None + print( + f" NO MATCH [{designator}] {ref}: " + f"Not on Manufacturer's BoM" ) - if mfr_in_bom: - print( - f" NO MATCH [{designator}] {ref}: " - f"manufacturer '{mfr_in_bom['manufacturer']}' found in BOM " - f"but MPN differs (BOM: '{mfr_in_bom['mpn']}' vs Nexar: {tried_mpns})" - ) - else: - print( - f" NO MATCH [{designator}] {ref}: " - f"Nexar MPN(s) {tried_mpns} not found in BOM at all" - ) if match: row += [match["manufacturer"], match["mpn"], match["unit_cost"]]