def check(Pickler): for proto in range(pickle.HIGHEST_PROTOCOL + 1): f = io.BytesIO() pickler = Pickler(f, proto) pickler.dump('abc') self.assertEqual(self.loads(f.getvalue()), 'abc') pickler = Pickler(io.BytesIO()) self.assertEqual(pickler.persistent_id('def'), 'def') r = weakref.ref(pickler) del pickler self.assertIsNone(r())
def __setitem__(self, key, value): if type(value) is dict: blue = Blue_dict(key, value, self, self) self.__vars__[key] = blue self.__blues__[key] = blue with open(f'{self.name}.blue', 'wb') as fp: p = Pickler(fp) p.dump(self) else: self.__vars__[key] = value with open(f'{self.name}.blue', 'wb') as fp: p = Pickler(fp) p.dump(self) self.__base_reload__()
def __init__(self, name, **kwargs): self.name = name self.__vars__ = {} self.__blues__ = {} try: with open(f'{self.name}.blue', 'rb') as fp: p = Unpickler(fp) q = p.load() self.__vars__ = q.__vars__ self.__blues__ = q.__blues__ self.__loaded__ = q except: with open(f'{self.name}.blue', 'wb') as fp: p = Pickler(fp) p.dump(self)
def saveturn(): filename = 'lastturn' if lexists(filename): file = open(filename, 'wb') else: file = open(filename, 'xb') saver = Pickler(file) saver.dump(summoners) saver.dump(teams) saver.dump(board) saver.dump(boardwidth) saver.dump(boardheight) saver.dump(modifiers) saver.dump(gamemods) saver.dump(whoseturn) saver.dump(phase) saver.dump(subphase) #cannot save action, because will give error with inner methods (like render). file.close()
def test_custom_pickler_dispatch_table_memleak(self): # See https://github.com/python/cpython/issues/89988 class Pickler(self.pickler): def __init__(self, *args, **kwargs): self.dispatch_table = table super().__init__(*args, **kwargs) class DispatchTable: pass table = DispatchTable() pickler = Pickler(io.BytesIO()) self.assertIs(pickler.dispatch_table, table) table_ref = weakref.ref(table) self.assertIsNotNone(table_ref()) del pickler del table support.gc_collect() self.assertIsNone(table_ref())
def save_input(): print("Saving...") pf = open(options.pickle, "wb") Pickler(pf).dump(inp) pf.close()
def __delitem__(self, key): del self.__vars__[key] with open(f'{self.name}.blue', 'wb') as thing: p = Pickler(thing) p.dump(self) self.__base_reload__()