from .nucleon import Nucleon from .electron import Electron import heurams.services.hasher as hasher import pathlib import toml import json def load_nucleon(path: pathlib.Path, fmt = "toml"): with open(path, "r") as f: dictdata = dict() dictdata = toml.load(f) # type: ignore lst = list() nested_data = dict() # 修正 toml 解析器的不管嵌套行为 for key, value in dictdata.items(): if "__metadata__" in key: # 以免影响句号 if '.' in key: parts = key.split('.') current = nested_data for part in parts[:-1]: if part not in current: current[part] = {} current = current[part] current[parts[-1]] = value else: nested_data[key] = value # print(nested_data) for item, attr in nested_data.items(): if item == "__metadata__": continue lst.append((Nucleon(hasher.hash(item), attr), nested_data["__metadata__"]["orbital"])) return lst def load_electron(path: pathlib.Path, fmt = "json") -> dict: with open(path, "r") as f: dictdata = dict() dictdata = json.load(f) # type: ignore dic = dict() for item, attr in dictdata.items(): dic["item"] = (Electron(hasher.hash(item), attr)) return dic