importbase64importenumimportuuidfromtypingimportTYPE_CHECKING,Any,Dictimportnumpyasnpfromsimdb.remote.modelsimportRangeValueifTYPE_CHECKING:importjsonelse:try:importsimplejsonasjsonexceptImportError:importjsondef_custom_hook(obj:Dict[str,str])->Any:if"_type"inobj:ifobj["_type"]=="uuid.UUID":returnuuid.UUID(obj["hex"])elifobj["_type"]=="numpy.ndarray":np_bytes=base64.decodebytes(obj["bytes"].encode())returnnp.frombuffer(np_bytes,dtype=obj["dtype"])else:obj_type=obj["_type"]raiseValueError(f"Unknown type to deserialise {obj_type}.")returnobj