Пример #1
0
    def writeStr(self, fmt=None, **keywords):
        '''
        Convert the object to a pickled/jsonpickled string
        and return the string
        '''
        fmt = self.parseWriteFmt(fmt)
        storage = self.packStream(self.stream)

        if fmt == 'pickle':
            out = pickle.dumps(storage, protocol=-1)
        elif fmt == 'jsonpickle':
            out = jsonpickle.encode(storage, **keywords)
        else:
            raise FreezeThawException('bad StreamFreezer format: %s' % fmt)

        #self.teardownStream(self.stream)
        return out
Пример #2
0
    def writeStr(self, fmt=None, **keywords):
        '''
        Convert the object to a pickled/jsonpickled string
        and return the string
        '''
        fmt = self.parseWriteFmt(fmt)
        storage = self.packStream(self.stream)


        if fmt == 'pickle':
            out = pickle.dumps(storage, protocol=-1)
        elif fmt == 'jsonpickle':
            out = jsonpickle.encode(storage, **keywords)
        else:
            raise FreezeThawException('bad StreamFreezer format: %s' % fmt)

        #self.teardownStream(self.stream)
        return out
Пример #3
0
    def write(self, fmt='pickle', fp=None, zipType=None, **keywords):
        '''
        For a supplied Stream, write a serialized version to
        disk in either 'pickle' or 'jsonpickle' format and
        return the filepath to the file.

        jsonpickle is the better format for transporting from
        one computer to another, but slower and may have some bugs.

        If zipType == 'zlib' then zlib compression is done after serializing.
        No other compression types are currently supported.
        '''
        if zipType not in (None, 'zlib'):
            raise FreezeThawException('Cannot zip files except zlib...')

        fmt = self.parseWriteFmt(fmt)

        if fp is None:
            directory = environLocal.getRootTempDir()
            if fmt.startswith('json'):
                fp = self.getJsonFp(directory)
            else:
                fp = self.getPickleFp(directory)
        else:
            if not isinstance(fp, pathlib.Path):
                fp = pathlib.Path(fp)

            if not fp.is_absolute(): # assume its a complete path
                fp = environLocal.getRootTempDir() / fp

        storage = self.packStream(self.stream)

        environLocal.printDebug(['writing fp', str(fp)])

        if fmt == 'pickle':
            # a negative protocol value will get the highest protocol;
            # this is generally desirable
            # packStream() returns a storage dictionary
            pickleString = pickle.dumps(storage, protocol=pickle.HIGHEST_PROTOCOL)
            if zipType == 'zlib':
                pickleString = zlib.compress(pickleString)

            if isinstance(fp, pathlib.Path):
                fp = str(fp)
            with open(fp, 'wb') as f: # binary
                f.write(pickleString)
        elif fmt == 'jsonpickle':
            data = jsonpickle.encode(storage, **keywords)
            if zipType == 'zlib':
                data = zlib.compress(data)

            if isinstance(fp, pathlib.Path):
                fp = str(fp)
            with open(fp, 'w') as f:
                f.write(data)

        else:
            raise FreezeThawException('bad StreamFreezer format: %s' % fmt)

        ## must restore the passed-in Stream
        #self.teardownStream(self.stream)
        return fp
Пример #4
0
    def write(self, fmt='pickle', fp=None, zipType=None, **keywords):
        '''
        For a supplied Stream, write a serialized version to
        disk in either 'pickle' or 'jsonpickle' format and
        return the filepath to the file.

        jsonpickle is the better format for transporting from
        one computer to another, but slower and may have some bugs.

        If zipType == 'zlib' then zlib compression is done after serializing.
        No other compression types are currently supported.
        '''
        if zipType not in (None, 'zlib'):
            raise FreezeThawException('Cannot zip files except zlib...')

        fmt = self.parseWriteFmt(fmt)

        if fp is None:
            directory = environLocal.getRootTempDir()
            if fmt.startswith('json'):
                fp = self.getJsonFp(directory)
            else:
                fp = self.getPickleFp(directory)
        else:
            if not isinstance(fp, pathlib.Path):
                fp = pathlib.Path(fp)

            if not fp.is_absolute(): # assume its a complete path
                fp = environLocal.getRootTempDir() / fp

        storage = self.packStream(self.stream)

        environLocal.printDebug(['writing fp', str(fp)])

        if fmt == 'pickle':
            # a negative protocol value will get the highest protocol;
            # this is generally desirable
            # packStream() returns a storage dictionary
            pickleString = pickle.dumps(storage, protocol=pickle.HIGHEST_PROTOCOL)
            if zipType == 'zlib':
                pickleString = zlib.compress(pickleString)

            if isinstance(fp, pathlib.Path):
                fp = str(fp)
            with open(fp, 'wb') as f: # binary
                f.write(pickleString)
        elif fmt == 'jsonpickle':
            data = jsonpickle.encode(storage, **keywords)
            if zipType == 'zlib':
                data = zlib.compress(data)

            if isinstance(fp, pathlib.Path):
                fp = str(fp)
            with open(fp, 'w') as f:
                f.write(data)

        else:
            raise FreezeThawException('bad StreamFreezer format: %s' % fmt)

        ## must restore the passed-in Stream
        #self.teardownStream(self.stream)
        return fp