Treat KiCad Value/PNM as the IC MPN when the MPN column is empty.

Those 13 U* were in the BOM (TPS22965, TPD2E007, TMP117, …) but never entered ic_mpns, so review skipped them as missing PDFs. Also try the BOM Datasheet URL first.

Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
2026-08-28 10:38:40 +02:00
co-authored by Cursor
parent 96e2590a3c
commit cb001a8bbb
6 changed files with 82 additions and 15 deletions
+15 -2
View File
@@ -382,10 +382,13 @@ async def _from_digikey(mpn: str) -> DatasheetHit | None:
return DatasheetHit(mpn, error=result.error, url=result.url, source="digikey")
async def find_datasheet(mpn: str, lcsc_id: str | None = None) -> DatasheetHit:
async def find_datasheet(
mpn: str, lcsc_id: str | None = None, url_hint: str | None = None,
) -> DatasheetHit:
"""Find and download a datasheet PDF for ``mpn``.
Tries LCSC, then TI (when the MPN looks like a TI part), then DigiKey.
Tries an explicit BOM URL first, then LCSC, then TI (when the MPN
looks like a TI part), then DigiKey.
"""
mpn = (mpn or "").strip()
if not mpn:
@@ -394,6 +397,16 @@ async def find_datasheet(mpn: str, lcsc_id: str | None = None) -> DatasheetHit:
errors: list[str] = []
last_url: str | None = None
hint = (url_hint or "").strip()
if hint.startswith("http"):
try:
pdf = await _download_pdf(hint)
return DatasheetHit(mpn, pdf_bytes=pdf, url=hint, source="bom")
except Exception as exc:
log.info("BOM datasheet URL missed %s: %s", mpn, exc)
errors.append(f"bom: {exc}")
last_url = hint
for source_fn in (_from_lcsc, _from_ti, _from_digikey):
try:
if source_fn is _from_lcsc: