def get_ext_state(self, project: rpr.Project, key: str, section: str = EXT_SECTION) -> str: size_str: str (_, _, _, _, size_str, _) = RPR.GetProjExtState( # type:ignore project.id, section, key + '_size', 'valOutNeedBig', 1001) if not size_str: raise self.no_ext_state(f'{section}:{key}') size = int(size_str) (_, _, _, _, result, _) = RPR.GetProjExtState( # type:ignore project.id, section, key, 'valOutNeedBig', size + 1) return ty.cast(str, result)
def proj_loads(project: rpr.Project, key: str) -> str: size_str: str (_, _, _, _, size_str, _) = RPR.GetProjExtState( # type:ignore project.id, SECTION, key + '_size', 'valOutNeedBig', 1001) if not size_str: return '' size = int(size_str) (_, _, _, _, dump, _) = RPR.GetProjExtState( # type:ignore project.id, SECTION, key, 'valOutNeedBig', size + 1) # rpr.print('get_size_str: ', size_str) # rpr.print(size) if dump == '': return '' return pickle.loads(codecs.decode(dump.encode(), "base64"))
def get_ext_state(self, section, key, pickled=False): """ Return external state of project. Parameters ---------- section : str key : str pickled: bool Whether data was pickled or not. Returns ------- value : str If key or section does not exist an empty string is returned. """ value = RPR.GetProjExtState(self.id, section, key, "", 2**31 - 1)[4] if value and pickled: value = pickle.loads(codecs.decode(value.encode(), "base64")) return value