Files
PartDB_Helper_App/jobs.py

55 lines
2.2 KiB
Python

from dataclasses import dataclass
from typing import Optional, List
from parsers.values import e_series_values, value_to_code
def rc0805fr_mpn_from_ohms(value: float) -> str:
if value == 0: return "RC0805JR-070RL"
return f"RC0805FR-07{value_to_code(value)}L"
def rc0603fr_mpn_from_ohms(value: float) -> str:
if value == 0: return "RC0603JR-070RL"
return f"RC0603FR-07{value_to_code(value)}L"
def generate_rc0805fr_e32() -> List[str]:
values = [0.0] + e_series_values(32, rmin=1.0, rmax=1e7)
return [rc0805fr_mpn_from_ohms(v) for v in values]
def generate_rc0603fr_e32() -> List[str]:
values = [0.0] + e_series_values(32, rmin=1.0, rmax=1e7)
return [rc0603fr_mpn_from_ohms(v) for v in values]
CAP_PLAN = [
("1pF","X7R","10%","50V"), ("2.2pF","X7R","10%","50V"), ("4.7pF","X7R","10%","50V"),
("10pF","X7R","10%","50V"), ("22pF","X7R","10%","50V"), ("47pF","X7R","10%","50V"),
("100pF","X7R","10%","50V"),("220pF","X7R","10%","50V"),("470pF","X7R","10%","50V"),
("1nF","X7R","10%","50V"), ("2.2nF","X7R","10%","50V"),("4.7nF","X7R","10%","50V"),
("10nF","X7R","10%","50V"), ("22nF","X7R","10%","50V"), ("47nF","X7R","10%","50V"),
("100nF","X7R","10%","50V"),("220nF","X7R","10%","50V"),("470nF","X7R","10%","50V"),
("1uF","X7R","10%","50V"), ("2.2uF","X7R","10%","25V"),("4.7uF","X5R","10%","10V"),
("10uF","X5R","10%","6.3V"),
]
def _mk_cap_query(case: str, val: str, diel: str, tol: str, volt: str) -> str:
return f"{case} {diel} {tol} {volt} {val}"
def generate_caps_0805_queries() -> List[str]:
return [_mk_cap_query("0805", v, d, t, u) for (v,d,t,u) in CAP_PLAN]
def generate_caps_1206_dupes_for_low_v(threshold_v: float, target_v: str|None) -> List[str]:
out = []
def _volt_to_float(vs: str) -> float:
try: return float(vs.lower().replace("v","").strip())
except: return 0.0
for (v,d,t,u) in CAP_PLAN:
if _volt_to_float(u) < threshold_v:
new_u = target_v or u
out.append(_mk_cap_query("1206", v, d, t, new_u))
return out
@dataclass
class Job:
category: str
manufacturer: str
footprint: Optional[str]
seeds: List[str]
kind: str # "resistor" | "capacitor"