import json from pathlib import Path from ..Errors import OutOfDictionaryException def nanos_vocabulary2json_str(vocabulary: dict[tuple[int, int], int]) -> str: JSON: dict[str, int] = {} for key, item in vocabulary.items(): TUPLE_STR = f"{key}" JSON[TUPLE_STR] = item return json.dumps(JSON) def nanos_json_str2vocabulary(json_string: str) -> dict[tuple[int, int], int]: JSON: dict[str, int] = json.loads(json_string) VOCABULARY: dict[tuple[int, int], int] = {} for key, item in JSON.items(): REDUCED_KEY = len(key) - 1 KEY_STR = key[1:REDUCED_KEY] VOC_KEY = tuple(map(int, KEY_STR.split(","))) if len(VOC_KEY) != 2: raise OutOfDictionaryException() # Checked for weird things above VOCABULARY[VOC_KEY] = item # type: ignore return VOCABULARY def save_nanos_vocabulary(vocabulary: dict[tuple[int, int], int], path: Path): json_string = nanos_vocabulary2json_str(vocabulary) FILE = open(path, "w") FILE.write(json_string) FILE.close() def load_nanos_vocabulary(path: Path) -> dict[tuple[int, int], int]: FILE = open(path, "r") json_string = FILE.read() FILE.close() return nanos_json_str2vocabulary(json_string)