def process(part): # print(part) part_number = part["Part Number"] series = part_number[0:3] package = part_number[3:5] temp_code = part_number[6:8] volt_code = part_number[8:10] cap_code = part_number[10:12] cap_mul = part_number[12] cap_tol = part_number[13] if series != "GRM": print(f"Non-GRM part! {part_number}") return if not package in bases.keys(): return check_size(part, package) temp_characteristic = decode_temp(part, temp_code) rated_voltage = decode_voltage(part, volt_code) capacitance = decode_cap(part, cap_code, cap_mul) tolerance = decode_cap_tol(part, cap_tol) if temp_characteristic == None: return if not part_number[-1] == "#": print("Oops!") part_number = part_number[0:-1] datasheet = f"https://www.murata.com/en-us/products/productdetail.aspx?partno={part_number}%23" capacitance_format = util.format_si(capacitance, 1) + "F" tmpl["base"] = bases[package] tmpl["MPN"] = [False, part_number] tmpl["value"] = [False, capacitance_format] tmpl["description"] = [ False, f"MLCC General Purpose {capacitance_format}, {util.format_si(rated_voltage, 1)}V, {temp_characteristic}" ] tmpl["datasheet"] = [False, datasheet] tmpl["uuid"] = str(gen.get(part_number)) tmpl["parametric"]["wvdc"] = str(rated_voltage) tmpl["parametric"]["value"] = "%.4e" % capacitance tmpl["parametric"]["type"] = temp_characteristic if tolerance is not None: tmpl["parametric"]["tolerance"] = str(tolerance) else: tmpl["parametric"].pop("tolerance", None) path = pj(base_path, f"grm{package}") os.makedirs(path, exist_ok=True) with open(pj(path, f"{part_number}.json"), "w") as f: json.dump(tmpl, f, sort_keys=True, indent=4)
def local_directory(self, line=''): DIR_HEADER = '\x01' dir = os.getcwd() filenames = [] if os.path.isdir(line) or not line: if line: dir = line filenames = os.listdir(dir) else: specs = shlex.split(line) for spec in specs: filenames.extend(glob.glob(spec)) entries = [] for filename in filenames: abspath = os.path.join(dir, filename) if os.path.isdir(abspath): filename = '{}[{}]'.format(DIR_HEADER, filename) s = os.stat(abspath) filesize = s.st_size lastmodified = s.st_mtime entries.append((lastmodified, filesize, filename)) # Sort is stable. order_by = util.key_for_val(kprotocol.C['order-by'], self.config['order-by'].value) for ch in order_by[::-1]: if ch == 'd': entries.sort(key=lambda tup: tup[0]) elif ch == 's': entries.sort(key=lambda tup: tup[1]) elif ch == 'n': entries.sort(key=lambda tup: tup[2]) else: log.e('Bad field char {}'.format(ch)) oslope = self.config['oslope'].value for entry in entries[::oslope]: dt = datetime.datetime.fromtimestamp( entry[0]).strftime('%Y-%m-%d %H:%M') sz = util.format_si(entry[1]) nm = entry[2] if nm.startswith(DIR_HEADER): nm = nm[1:] log.i(' {} {} {}'.format(dt, sz, nm))
datasheet_url = row["catalog_url"]["raw"] pmax = pmax_pkg.get(pkg, 0) if "spec_item_code_006" in row : pmax = float(row["spec_item_code_006"]["raw"]) pmaxs.add(pmax) full_mpn = row["item_id"]["raw"] mpn = full_mpn[:-1] print(mpn, full_mpn) if mpn in parts.keys() : parts[mpn][1]["orderable_MPNs"][str(gen.get(full_mpn))] = full_mpn.replace("ERJ", "ERJ-") else : if pkg in bases : tmpl["base"] = bases[pkg] tmpl["MPN"] = [False, mpn.replace("ERJ", "ERJ-")] tmpl["datasheet"] = [False, datasheet_url] tmpl["value"] = [False, util.format_si(value, 2) + "Ω"] tmpl["description"] = [False, "Chip Resistor %sΩ %d%% %gW"%(util.format_si(value, 2), tol, pmax)] tmpl["uuid"] = str(gen.get(mpn)) tmpl["parametric"]["pmax"] = str(pmax) tmpl["parametric"]["value"] = str(value) tmpl["parametric"]["tolerance"] = str(tol) tmpl["orderable_MPNs"] = {} tmpl["orderable_MPNs"][str(gen.get(full_mpn))] = full_mpn.replace("ERJ", "ERJ-") parts[mpn] = pkg, copy.deepcopy(tmpl) for mpn, (pkg, part) in parts.items() : print("write", mpn) path = pj(base_path, pkg) os.makedirs(path, exist_ok = True) with open(pj(path, mpn.replace("ERJ", "ERJ-")+".json"), "w") as fi: json.dump(part, fi, sort_keys=True, indent=4)
reader = csv.DictReader(fi) for row in reader: mpn = row['Part No.'] vmax = float(row['Rated Voltage [DC] / V']) tc = xlat_type(row['Temp. Chara.']) tcs.add(tc) captxt = row['Capacitance'] value = float(captxt[:-2]) * muls[captxt[-2:]] ds = row['Catalog / Data Sheet'].split()[-1] pkg = row['L x W Size'].split('[')[-1].split()[1][:-1] pkgs.add(pkg) print(mpn, captxt, value) if pkg in bases: tmpl["base"] = bases[pkg] tmpl["MPN"] = [False, mpn] tmpl["value"] = [False, util.format_si(value, 1) + "F"] tmpl["description"] = [ False, "Ceramic Capacitor %sF %sV %s" % (util.format_si(value, 1), util.format_si(vmax, 1), tc) ] tmpl["datasheet"] = [False, ds] tmpl["uuid"] = str(gen.get(mpn)) tmpl["parametric"]["wvdc"] = str(vmax) tmpl["parametric"]["value"] = "%.4e" % value tmpl["parametric"]["type"] = tc path = pj(base_path, pkg) os.makedirs(path, exist_ok=True) with open(pj(path, mpn + ".json"), "w") as fi: json.dump(tmpl, fi, sort_keys=True, indent=4) """
def local_space(self): st = os.statvfs(os.getcwd()) # Dep in 2.6. Removeed in 3. log.i(' Used: {}'.format( util.format_si((st.f_blocks - st.f_bavail) * st.f_frsize))) log.i(' Free: {}'.format(util.format_si(st.f_bavail * st.f_frsize))) log.i('Total: {}'.format(util.format_si(st.f_blocks * st.f_frsize)))
gen = util.UUIDGenerator("uu.txt") prs = set() for row in j_raw["rows"] : mpn = row["parnum"] vmax = float(row["ratvol"]) pkg = row["sizcd_eia"] tc = row["tc"] value = row["cap"]*muls[row["capuni"]] ds = "http://www.samsungsem.com" + (row["chadat"].strip() if len(row["chadat"].strip()) else row["spe"].strip()) tcs.add(tc) pkgs.add(pkg) prs.add(mpn[:2]) print(mpn, vmax, pkg, value, ds) if pkg in bases : tmpl["base"] = bases[pkg] tmpl["MPN"] = [False, mpn] tmpl["value"] = [False, util.format_si(value, 1) + "F"] tmpl["description"] = [False, "Ceramic Capacitor %sF %sV %s"%(util.format_si(value, 1), util.format_si(vmax, 1), tc)] tmpl["datasheet"] = [False, ds] tmpl["uuid"] = str(gen.get(mpn)) tmpl["parametric"]["wvdc"] = str(vmax) tmpl["parametric"]["value"] = "%.4e"%value tmpl["parametric"]["type"] = xlat_type(tc) path = pj(base_path, pkg) os.makedirs(path, exist_ok = True) with open(pj(path, mpn+".json"), "w") as fi: json.dump(tmpl, fi, sort_keys=True, indent=4)
mpn = row["parnum"] pkg = row["sizcd_eia"] rval = row["rval"][:-1] if rval[-1] in muls: value = float(rval[:-1]) * muls[rval[-1]] else: value = float(rval) tol = xlat_tol(row['tol']) pmax = row['ratpow'] pmax = xlat_pmax(pmax.split("W")[0]) if pkg in bases: pmaxs.add(row['ratpow']) tmpl["base"] = bases[pkg] tmpl["MPN"] = [False, mpn] tmpl["value"] = [False, util.format_si(value, 2) + "Ω"] tmpl["description"] = [ False, "Chip Resistor %sΩ %d%% %gW" % (util.format_si(value, 2), tol, pmax) ] tmpl["uuid"] = str(gen.get(mpn)) tmpl["parametric"]["pmax"] = str(pmax) tmpl["parametric"]["value"] = str(value) tmpl["parametric"]["tolerance"] = str(tol) path = pj(base_path, pkg) os.makedirs(path, exist_ok=True) with open(pj(path, mpn + ".json"), "w") as fi: json.dump(tmpl, fi, sort_keys=True, indent=4)