示例#1
0
 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)
示例#2
0
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"))
示例#3
0
    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