def __init__(self, globs=lambda: globals(), json=json): self.globs = globs self.json = json self.methods = [ method('tuple', tuple, freezer=lambda obj, self: str( tuple([self.flatten(i) for i in obj])), defreezer=lambda obj, self: tuple( [self.restore(i) for i in eval(obj[8:])])), method('exception', BaseException, freezer=lambda obj, self: str( [str(i) for i in obj.__reduce__()]), defreezer=lambda obj, self: (lambda x=eval(obj[12:]): __builtins__.eval('%s(*%s)' % (x[ 0][8:-2], x[1])))()), method( 'set', set, freezer=lambda obj, self: str([self.flatten(i) for i in obj]), defreezer=lambda obj, self: set( [self.restore(i) for i in eval(obj[6:])])), method( 'frozenset', frozenset, freezer=lambda obj, self: str([self.flatten(i) for i in obj]), defreezer=lambda obj, self: frozenset( [self.restore(i) for i in eval(obj[12:])])), method('complex', complex, freezer=lambda obj, self: str(obj), defreezer=lambda obj, self: complex(obj[10:])), method('type', type, freezer=classes.freeze, defreezer=classes.defreeze), method('list', list, freezer=lambda obj, self: [self.flatten(i) for i in obj], defreezer=lambda obj, self: [self.restore(i) for i in obj]), method( 'dict', dict, freezer=lambda obj, self: {(self.flatten(i) if not isinstance( i, (bool, float, complex)) else str(type(i))[ 8:-2] + '-->' + str(i)): self.flatten(obj[i]) for i in obj}, defreezer=lambda obj, self: {self.restore(i): self.restore(obj[i]) for i in obj}) ] if type(range) == type(abs): self.methods.append( method('function', type(lambda: None), freezer=lambda obj, self: str(self.freezef(obj)), defreezer=lambda obj, self: self.defreezef(obj[11:]))) else: self.methods.append( method('function', type(lambda: None), freezer=lambda obj, self: str(self.freezef(obj)), defreezer=lambda obj, self: self.defreezef( eval(obj[11:])))) if type(range) != type(abs): self.methods.append( method('range', range, freezer=lambda obj, self: str(obj)[5:], defreezer=lambda obj, self: range(*eval(x[8:])))) if hasattr(__builtins__, 'bytes'): self.methods.append( method('bytes', bytes, freezer=lambda obj, self: obj.decode('utf8'), defreezer=lambda obj, self: bytes(obj[8:], encoding='utf8'))) if hasattr(__builtins__, 'bytearray'): self.methods.append( method('bytearray', bytearray, freezer=lambda obj, self: str([i for i in obj]), defreezer=lambda obj, self: bytearray(eval(obj[12:])))) if hasattr(__builtins__, 'memoryview'): self.methods.append( method( 'memoryview', memoryview, freezer=lambda obj, self: self.flatten(obj.obj), defreezer=lambda obj, self: memoryview(self.restore(obj))))
and bytes(x[8:], encoding = 'utf8') or x.startswith('int://') and int(x[6:]) or x.startswith('float://') and float(x[8:]) or x.startswith('long://') and long(x[7:]) or x.startswith('set://') and set([restore(i,globs) for i in eval(x[6:])]) or x.startswith('frozenset://') and frozenset([restore(i,globs) for i in eval(x[12:])]) or x.startswith('bool://') and eval(x[7:]) or x.startswith('exception://') and (lambda x = eval(x[12:]): __builtins__.eval('%s(*%s)'%(x[0][8:-2],x[1])))() or x.startswith('range://') and range(*eval(x[8:])) or x.startswith('bytearray://') and bytearray(eval(x[12:])) or x.startswith('memoryview://') and memoryview(bytearray(eval(x[13:]))) or x.startswith('complex://') and complex(x[10:]) or x.startswith('type://') and (lambda x = eval(x[7:]):type(x[0],tuple((globs()[i]) if i in globs() else __builtins__.eval(i) for i in [(i[9:] if i.startswith('__main__.') else i) for i in [(i[8:-2] if i.endswith('>') else i[8:-3]) for i in x[1][1:-1].split(', ')]]),restore(x[2],globs)))() or x.startswith('function://')