示例#1
0
 def __init__(self, connection):
     self.sio = BytesIO()
     self.pickler = Pickler(self.sio, PICKLE_PROTOCOL)
     self.pickler.persistent_id = method(call_if_persistent,
                                         self._persistent_id)
     self.objects_found = []
     self.refs = set()  # populated by _persistent_id()
     self.connection = connection
示例#2
0
 def get_state(self, data, load=True):
     self.load_count += 1
     s = BytesIO()
     s.write(data)
     s.seek(0)
     unpickler = self._get_unpickler(s)
     klass = unpickler.load()
     position = s.tell()
     if data[s.tell()] == COMPRESSED_START_BYTE:
         # This is almost certainly a compressed pickle.
         try:
             decompressed = decompress(data[position:])
         except zlib_error:
             pass  # let the unpickler try anyway.
         else:
             s.write(decompressed)
             s.seek(position)
     if load:
         return unpickler.load()
     else:
         return s.read()
示例#3
0
 def d(self):
     s = BytesIO(as_bytes('nope'))
     assert raises(AssertionError, Shelf, s, readonly=True)
     s = BytesIO(as_bytes("SHELF-1\nbogus"))
     assert raises(ShortRead, Shelf, s, readonly=True)