mς qγΈEc@sdZdklZdkZd„Zd„Zdefd„ƒYZd„Zdefd „ƒYZd „Z d efd „ƒYZ d e fd„ƒYZ d„Z de fd„ƒYZ d„Zd„ZdklZdkZd„ZedjoeiƒndS(sOBasic pickling tests $Id: test_pickle.py 29896 2005-04-07 04:48:06Z tim_one $ (s PersistentNcCsW|iƒ}|iƒddig}|D]\}}|d||fq*~ƒGHdS(Ns{%s}s, s%r: %r(tdtitemstsorttjoint_[1]tktv(RRRR((t;/data/zmath/zope/lib/python/persistent/tests/test_pickle.pyt print_dicts  cGscx\|D]T}|d djoqntt||dƒt||dƒƒ}|o|SqqWdS(Nit_v_t_p_i(R R (tattrstattrtcmptgetattrtselftNonetothertc(RRR RR ((Rtcmpattrss' tSimplecBstZd„Zd„ZRS(NcKs/||_|ii|ƒd|_d|_dS(Ntbluetbar(tnameRt__name__t__dict__tupdatetkwt_v_favorite_colort_p_foo(RRR((Rt__init__(s  cCst||d|iiƒŒS(Nt __class__(RRRRtkeys(RR((Rt__cmp__.s(Rt __module__RR!(((RR's cCsdS(so >>> x = Simple('x', aaa=1, bbb='foo') >>> print_dict(x.__getstate__()) {'__name__': 'x', 'aaa': 1, 'bbb': 'foo'} >>> f, (c,), state = x.__reduce__() >>> f.__name__ '__newobj__' >>> f.__module__ 'copy_reg' >>> c.__name__ 'Simple' >>> print_dict(state) {'__name__': 'x', 'aaa': 1, 'bbb': 'foo'} >>> pickle.loads(pickle.dumps(x)) == x 1 >>> pickle.loads(pickle.dumps(x, 0)) == x 1 >>> pickle.loads(pickle.dumps(x, 1)) == x 1 >>> pickle.loads(pickle.dumps(x, 2)) == x 1 >>> x.__setstate__({'z': 1}) >>> x.__dict__ {'z': 1} N((((Rttest_basic_pickling1s tCustomcBs5tZd„Zd„Zd„Zd„Zd„ZRS(NcCs&ti|ƒ}|||_|_|S(N(t Persistentt__new__tclstrtxty(R'R)R*R(((RR&UscCs d|_dS(Ni*(Rta(RR)R*((RRZscCs|i|ifS(N(RR)R*(R((Rt__getnewargs__]scCs|iS(N(RR+(R((Rt __getstate__`scCs ||_dS(N(R+R(RR+((Rt __setstate__cs(RR"R&RR,R-R.(((RR$Ss     cCsdS(s½ >>> x = Custom('x', 'y') >>> x.a = 99 >>> (f, (c, ax, ay), a) = x.__reduce__() >>> f.__name__ '__newobj__' >>> f.__module__ 'copy_reg' >>> c.__name__ 'Custom' >>> ax, ay, a ('x', 'y', 99) >>> pickle.loads(pickle.dumps(x)) == x 1 >>> pickle.loads(pickle.dumps(x, 0)) == x 1 >>> pickle.loads(pickle.dumps(x, 1)) == x 1 >>> pickle.loads(pickle.dumps(x, 2)) == x 1 N((((Rttest_pickling_w_overridesgstSlottedcBstZdZd„ZRS(Nts1ts2t_p_splatt_v_eekcCs)|||_|_d|_d|_dS(Nii(R1R2RR4R3(RR1R2((RRƒs (ss1ss2s_p_splats_v_eek(RR"t __slots__R(((RR0st SubSlottedcBs tZdZd„Zd„ZRS(Nts3ts4cCs ti|||ƒ||_dS(N(R0RRR1R2R7(RR1R2R7((RRŠscCst||dddddƒS(NRR1R2R7R8(RRR(RR((RR!s(ss3ss4(RR"R5RR!(((RR6ˆs cCsdS(s» >>> x = SubSlotted('x', 'y', 'z') >>> d, s = x.__getstate__() >>> d >>> print_dict(s) {'s1': 'x', 's2': 'y', 's3': 'z'} >>> pickle.loads(pickle.dumps(x)) == x 1 >>> pickle.loads(pickle.dumps(x, 0)) == x 1 >>> pickle.loads(pickle.dumps(x, 1)) == x 1 >>> pickle.loads(pickle.dumps(x, 2)) == x 1 >>> x.s4 = 'spam' >>> d, s = x.__getstate__() >>> d >>> print_dict(s) {'s1': 'x', 's2': 'y', 's3': 'z', 's4': 'spam'} >>> pickle.loads(pickle.dumps(x)) == x 1 >>> pickle.loads(pickle.dumps(x, 0)) == x 1 >>> pickle.loads(pickle.dumps(x, 1)) == x 1 >>> pickle.loads(pickle.dumps(x, 2)) == x 1 N((((Rttest_pickling_w_slots_only“s"t SubSubSlottedcBstZd„Zd„ZRS(NcKs<ti||||ƒ|ii|ƒd|_ d|_ dS(NRR( R6RRR1R2R7RRRRR(RR1R2R7R((RRΉs c Cs(t||ddddd|iiƒŒS(NRR1R2R7R8(RRRRR (RR((RR!Ώs (RR"RR!(((RR:·s cCsdS(s" >>> x = SubSubSlotted('x', 'y', 'z', aaa=1, bbb='foo') >>> d, s = x.__getstate__() >>> print_dict(d) {'aaa': 1, 'bbb': 'foo'} >>> print_dict(s) {'s1': 'x', 's2': 'y', 's3': 'z'} >>> pickle.loads(pickle.dumps(x)) == x 1 >>> pickle.loads(pickle.dumps(x, 0)) == x 1 >>> pickle.loads(pickle.dumps(x, 1)) == x 1 >>> pickle.loads(pickle.dumps(x, 2)) == x 1 >>> x.s4 = 'spam' >>> d, s = x.__getstate__() >>> print_dict(d) {'aaa': 1, 'bbb': 'foo'} >>> print_dict(s) {'s1': 'x', 's2': 'y', 's3': 'z', 's4': 'spam'} >>> pickle.loads(pickle.dumps(x)) == x 1 >>> pickle.loads(pickle.dumps(x, 0)) == x 1 >>> pickle.loads(pickle.dumps(x, 1)) == x 1 >>> pickle.loads(pickle.dumps(x, 2)) == x 1 N((((Rttest_pickling_w_slotsΔs$cCsdS(sδ >>> x = SubSubSlotted('x', 'y', 'z') >>> d, s = x.__getstate__() >>> print_dict(d) {} >>> print_dict(s) {'s1': 'x', 's2': 'y', 's3': 'z'} >>> pickle.loads(pickle.dumps(x)) == x 1 >>> pickle.loads(pickle.dumps(x, 0)) == x 1 >>> pickle.loads(pickle.dumps(x, 1)) == x 1 >>> pickle.loads(pickle.dumps(x, 2)) == x 1 >>> x.s4 = 'spam' >>> d, s = x.__getstate__() >>> print_dict(d) {} >>> print_dict(s) {'s1': 'x', 's2': 'y', 's3': 'z', 's4': 'spam'} >>> pickle.loads(pickle.dumps(x)) == x 1 >>> pickle.loads(pickle.dumps(x, 0)) == x 1 >>> pickle.loads(pickle.dumps(x, 1)) == x 1 >>> pickle.loads(pickle.dumps(x, 2)) == x 1 N((((Rt"test_pickling_w_slots_w_empty_dictκs$(s DocTestSuitecCstitƒfƒS(N(tunittestt TestSuitet DocTestSuite(((Rt test_suitest__main__(t__doc__t persistentR%tpickleRRRR#R$R/R0R6R9R:R;R<tzope.testing.doctestR?R=R@Rtmain(RR0R6RRDR#R%R:R$R/R9R<R@R;R=RR?((Rt?s&     "  $ & &