def convert_str_to_keys(info): if isinstance(info, list): return [convert_keys_to_str(elem) for elem in info] if isinstance(info, dict): return {(NodeId.from_json_str(k[7:]) if k.startswith('NodeId_') else k): \ convert_str_to_keys(v) for k, v in info.items()} return info
def object_hook(self, obj): if '__type' in obj: if obj['__type'] == 'QType': return QType(bits=obj['bits'], q=obj['q'], signed=obj['signed']) if obj['__type'] == 'MemoryDeviceInfos': return MemoryDeviceInfos.fromdict(obj['infos']) if obj['__type'] == 'NodeId': return NodeId.from_json_str(obj['val']) if obj['__type'].startswith('QuantizationRecord'): return QuantizationRecord.from_dict(obj) if 'qstats' in obj: # fix qstats int dictionary index. JSON converts to string. obj['qstats'] = {int(k):v for k, v in obj['qstats'].items()} return obj