def Decoder(self, raw): """Safe Unpickling. Unpickle only safe primitives like tuples, dicts and strings. Specifically does not allow arbitrary instances to be recovered. """ now = time.time() unpickler = RestrictedPickler(raw) try: decoded = unpickler.load() except Exception: raise io_manager.DecodeError("Unable to unpickle cached object") result = self.renderer.decoder.Decode(decoded) self.session.logging.debug("Decoded in %s sec.", time.time() - now) return result
def Decoder(self, raw): """Safe Unpickling. Unpickle only safe primitives like tuples, dicts and strings. Specifically does not allow arbitrary instances to be recovered. """ unpickler = cPickle.Unpickler(cStringIO.StringIO(raw)) unpickler.find_global = None json_renderer_obj = json_renderer.JsonRenderer(session=self.session) decoder = json_renderer.JsonDecoder(self.session, json_renderer_obj) try: decoded = unpickler.load() except Exception: raise io_manager.DecodeError("Unable to unpickle cached object") return decoder.Decode(decoded)