B l ìþ¾D'¯ã,@sªddlZddlZddlZddlZddlZddlZddlZddlZddlZddl Z ddl Z ddl Z ddl Z ddl Z ddlmZddlmZddlmZddlmZmZmZmZmZmZmZmZmZddlmZe  e j dkd¡Z!e"ej#d ƒZ$d d „Z%d d „Z&Gdd„dej'ƒZ(Gdd„dƒZ)Gdd„dƒZ*Gdd„de*ƒZ+Gdd„de*ƒZ,Gdd„de-ƒZ.Gdd„de-ƒZ/ddl0Z0e*e0_*de*_1e+e0_+de+_1e,e0_,de,_1e.e0_.de._1e/e0_/de/_1Gdd„de2ƒZ3Gdd „d e*ƒZ4Gd!d"„d"e5ƒZ6Gd#d$„d$e-e6d%Z7Gd&d'„d'e5ƒZ8d(d)„Z9d*Z:d+Z;d,Zd/Z?d0Z@d1ZAd2ZBd3ZCd4ZDd5ZEd6ZFd7ZGeHeIeJeKeLeMeNeOePeQeReSeTeUeVeWeXeYeZe[e\e]e^e_e`eaebecedeeefegeheiejekelemeneoepeqeresf,Ztd8Zud9Zvd:d;„ZwGdd?„d?e jxƒZzGd@dA„dAe jxƒZ{GdBdC„dCe-ƒZ|GdDdE„dEe-ƒZ}GdFdG„dGe-ƒZ~GdHdI„dIe-ƒZGdJdK„dKe-ƒZ€GdLdM„dMe-ƒZGdNdO„dOe-ƒZ‚GdPdQ„dQe2ƒZƒGdRdS„dSe„ƒZ…GdTdU„dUe†ƒZ‡GdVdW„dWeˆƒZ‰GdXdY„dYeˆƒZŠGdZd[„d[e‹ƒZŒGd\d]„d]eƒZŽGd^d_„d_eƒZGd`da„dae‘ƒZ’Gdbdc„dce“ƒZ”eƒe…e‡e‰eŠeŒeŽee’e”g Z•Gddde„deeŽƒZ–Gdfdg„dge2ƒa—Gdhdi„dit—ƒZ˜Gdjdk„dkt—ƒZ™Gdldm„dmƒZšGdndo„doe jxƒZ›Gdpdq„dqe jxƒZœGdrds„dse jxƒZGdtdu„due jxƒZždvZŸGdwdx„dxe-ƒZ Gdydz„dze-ƒZ¡Gd{d|„d|e jxƒZ¢e£dkr¦dd}lm¤Z¤ewƒZ¥x°e"ej#d ƒD]žZ¦e §e¥e¦¡Z¨e©d~ ªe¦¡ƒxd?„ƒZ$d@dA„Z%dBdC„Z&dDdE„Z'dFdG„Z(dHdI„Z)dJdK„Z*dLdM„Z+dNdO„Z,dPdQ„Z-dRdS„Z.dTdU„Z/e0dVdW„ƒZ1dS)YÚAbstractUnpickleTestsNcCsÜ|dkrd ||¡}|j|||d|jt|ƒt|ƒ|dt|dƒrn|j|j|j|d|j|j|j|dt|dƒrØ|j|j |j |dxJ|j D]@}|jt||ƒt||ƒ|d|jt ||dƒt ||dƒ|dq”WdS)zKUtility method to verify if two objects are copies of each others. Nz{!r} is not a copy of {!r})Úmsgr3Ú __slots__) ÚformatÚ assertEqualÚassertIsrHÚhasattrZassertDictEqualr3Z assertIsNotZassertListEqualr]Úgetattr)rÚobjZobjcopyr\ZslotrrrÚassert_is_copys    z$AbstractUnpickleTests.assert_is_copyc Cs†|j|dp| |¡Zy| |¡WnDtk rl}z&tjdkrZtd||jj|fƒ‚Wdd}~XYnXWdQRXWdQRXdS)N)Údatarz%-32r - %s: %s) ÚsubTestÚ assertRaisesÚloadsÚ BaseExceptionrÚverboseÚprintÚ __class__r&)rÚerrorsreÚexcrrrÚcheck_unpickling_error¯s  z,AbstractUnpickleTests.check_unpickling_errorcCs| |j| t¡¡dS)N)rdÚ _testdatarhÚDATA0)rrrrÚtest_load_from_data0ºsz*AbstractUnpickleTests.test_load_from_data0cCs| |j| t¡¡dS)N)rdrprhÚDATA1)rrrrÚtest_load_from_data1½sz*AbstractUnpickleTests.test_load_from_data1cCs| |j| t¡¡dS)N)rdrprhÚDATA2)rrrrÚtest_load_from_data2Àsz*AbstractUnpickleTests.test_load_from_data2cCs| |j| t¡¡dS)N)rdrprhÚDATA3)rrrrÚtest_load_from_data3Ãsz*AbstractUnpickleTests.test_load_from_data3cCs| |j| t¡¡dS)N)rdrprhÚDATA4)rrrrÚtest_load_from_data4Æsz*AbstractUnpickleTests.test_load_from_data4cCsšx”tdftdftdfgD]z\}}|j d¡}d d|¡}| ||Ž| |¡¡d d|¡}| ||Ž| |¡¡d d|¡}| ||Ž| |¡¡qWdS)Nr)rAÚasciis(i__main__ X p0 (dp1 b.óXs(c__main__ X qoq}qb.s€(c__main__ X qoq}qb.)r2r6r8r&ÚencodeÚreplacerdrh)rÚXrZxnameZpickle0Zpickle1Zpickle2rrrÚtest_load_classic_instanceÉs  z0AbstractUnpickleTests.test_load_classic_instancecCsVd}dt|ƒ d¡d}| |¡}| ||¡dt|ƒ d¡d}| t|¡dS)NlÿÿÿÿóIr{s .sJUNK .)r@r}rhrdroÚ ValueError)rZmaxint64reÚgotrrrÚ test_maxint64s   z#AbstractUnpickleTests.test_maxint64cCs\| t¡}| |tddgƒ¡| t¡}| t|ƒttdƒƒ¡| t|ƒttdƒƒ¡| t¡}| t|ƒt ¡| t|  ¡ƒdg¡| |dj d¡x:t D]2}t  d|j d¡¡}| |¡}| t|ƒ|¡q W| t  dd ¡¡}| t|ƒt¡| t¡}| t|ƒt¡| |jd ¡| |jd¡| |jd¡| |jd¡| |jd ¡dS) NrrOrrSÚkeyr<ó?r{s StandardErrorrTZbad)rhÚDATA_SETr_ÚsetÚ DATA_XRANGErHÚrangeÚlistÚ DATA_COOKIErÚkeysr<Úpython2_exceptions_without_argsÚexception_pickler~r&r}r`Ú ExceptionÚ DATA_UEERRÚUnicodeEncodeErrorÚobjectÚencodingÚstartÚendÚreason)rÚloadedrnrerrrÚtest_unpickle_from_2x s,      z+AbstractUnpickleTests.test_unpickle_from_2xcCsF| |jdddd¡| |jdddd¡| |jdddd¡dS)NsS'a\x00\xa0' .Úbytes)r”sa sUa .s€Ua .)r_rh)rrrrÚtest_load_python2_str_as_bytes*s      z4AbstractUnpickleTests.test_load_python2_str_as_bytescCsF| |jdddd¡| |jdddd¡| |jdddd¡dS)Ns V\u03c0 .rš)r”uÏ€sXÏ€.s €XÏ€.)r_rh)rrrrÚ test_load_python2_unicode_as_str5s      z6AbstractUnpickleTests.test_load_python2_unicode_as_strcCs2| |jtjt dd¡dtjddd¡dS)Nzddddddddd d d d d g }x|D]}| tj|¡q$WdS)NsS' .sS" .sS' .sS" .sS'" .sS"' .sS' ' .sS" " .sS '' .sS "" .sS .sS .sS.)rorr¨)rÚ badpicklesÚprrrÚtest_badly_quoted_string¬s z.AbstractUnpickleTests.test_badly_quoted_stringcCs4ddddg}x"|D]\}}| | |¡|¡qWdS)N)sS'' .r¢)sS"" .r¢)sS"\n" .Ú )sS'\n' .rÀ)r_rh)rZ goodpicklesr¾ÚexpectedrrrÚtest_correctly_quoted_string¾s z2AbstractUnpickleTests.test_correctly_quoted_stringcCsd}| | |¡d¡dS)Ns€•I42 .é*)r_rh)rr´rrrÚtest_frame_readlineÆsz)AbstractUnpickleTests.test_frame_readlinec Csd}| |¡}| t|ƒt¡| |tddƒ¡| t|ƒddddddg¡d }| | |¡tj¡d }| | |¡tj ¡xBd D]:}d |d }| |¡}| t|ƒt ¡| t |ƒd¡q‚WxJdD]B}d|d}| |¡}| t|ƒt j ¡| |t   ddi¡¡qÆWdS)Ns€c__builtin__ xrange KKK‡R.rérOéérSés€c__builtin__ reduce .s€cwhichdb whichdb .)s Exceptions StandardErrors€cexceptions s Uugh…R.Zugh)sUserDictsIterableUserDicts €(cUserDict s o}Udata}KKssb.)rhr`rHrŠr_r‹Ú functoolsÚreduceÚdbmÚwhichdbrr@Ú collectionsÚUserDict)rr´rµrLrrrÚtest_compat_unpickleÎs(      z*AbstractUnpickleTests.test_compat_unpicklecCs.| | d¡d¡| td¡| td¡dS)Nscbuiltins int )R.rsN)R.scbuiltins int NR.)r_rhroÚ TypeError)rrrrÚtest_bad_reduceés z%AbstractUnpickleTests.test_bad_reducecCs8tjtf}| | d¡d¡| |d¡| |d¡dS)Nscbuiltins int ).rscbuiltins len ).scbuiltins int N.)rr¨rÐr_rhro)rÚerrorrrrÚtest_bad_newobjîs  z%AbstractUnpickleTests.test_bad_newobjcCsDtjtf}| | d¡d¡| |d¡| |d¡| |d¡dS)Nscbuiltins int )}’.rscbuiltins len )}’.scbuiltins int N}’.scbuiltins int )N’.)rr¨rÐr_rhro)rrÒrrrÚtest_bad_newobj_exôs    z(AbstractUnpickleTests.test_bad_newobj_exc,Cs|ddddddddd d d d d ddddddddddddddddddd d!d"d#d$d%d&d'd(d)d*d+d,g,}x|D]}| |j|¡qbWdS)-Nó.ó0ó1ó2s(2óRs)RóasNaóbsNbódóes(esibuiltins list ólóos(osp1 sqsróssNssNNsótóus(us}(Nuós)ó…ó†sN†ó‡sN‡sNN‡ós(ó‘ó’s)}’ó“sVlist “ó”)roÚbad_stack_errors)rr½r¾rrrÚtest_bad_stackûs\ z$AbstractUnpickleTests.test_bad_stackcCs`ddddddddd d d d d dddddddddddddddddg}x|D]}| |j|¡qFWdS)NsN(.sN(2scbuiltins list )(Rscbuiltins list ()Rs]N(ascbuiltins ValueError )R}(bscbuiltins ValueError )R(}bs(NdsN(p1 sN(qsN(rs}NN(ss}N(Nss}(NNss}((uscbuiltins list )(scbuiltins list ()sN(…sNN(†sN(N†sNNN(‡sNN(N‡sN(NN‡s]((scbuiltins list )}(’scbuiltins list )(}’scbuiltins list ()}’sVbuiltins (Vlist “sVbuiltins Vlist (“sN(”)rorì)rr½r¾rrrÚ test_bad_mark-s@ z#AbstractUnpickleTests.test_bad_markcQCsÞ| td¡| td¡ddddddd d d d d ddddddddddddddddddd d!d"d#d$d%d&d'd(d)d*d+d,d-d.d/d0d1d2d3d4d5d6d7d8d9d:d;dd?d@dAdBdCdDdEdFdGdHdIdJdKdLdMdNdOdPdQdRdSgQ}x|D]}| |j|¡qÄWdS)TNóóNóBsBsBsBabóCsCsCabóFsF0.0sF0.00óGsGrsI0óJsJóKóLsL0sL10sL0LsL10LóMsMóSsS'abc'óTsTsTsTabóUsUsUabóVsVabcr|sXsXsXabs(cs (cbuiltinss (cbuiltins s(cbuiltins listsNgsNg0s(is (ibuiltinss (ibuiltins s(ibuiltins listsNhsNjsNjsNpsNp0sNqsNrsNró€ó‚óƒs„ó„s„óŠó‹s‹óŒsŒsŒabóss s abóŽsŽs Žs Žabó•s•s •s •N)roÚEOFErrorZtruncated_errors)rr½r¾rrrÚtest_truncated_dataTsª   z)AbstractUnpickleTests.test_truncated_datac s^tdƒ}tdƒ}t t¡| tjt¡tj  dt¡| tjj t¡t tj  td¡dƒ}|  | d¡¡WdQRXt tj  td¡dƒ}|  | d¡¡WdQRX| td¡| td ¡ddl}d ‰g‰t d ¡‰‡‡‡fd d „}tj|d}tj|d}| ¡| ¡ˆ ¡|j ¡|  ¡|  ¡ddlm}| dd„ˆDƒ|gd¡dS)NzI import threading barrier = threading.Barrier(2) zs import locker locker.barrier.wait() class ToBeUnpickled(object): pass rz locker.pyÚwbzutf-8zlocking_import.pyÚlockerÚlocking_imports'€clocking_import ToBeUnpickled q)q.rÆcsˆ ¡ˆ t ˆ¡¡dS)N)ÚwaitrWrrhr)ÚbarrierÚ pickle_bytesÚresultsrrÚtÔsz:AbstractUnpickleTests.test_unpickle_module_race..t)Útarget)Ú ToBeUnpickledcSsg|] }t|ƒ‘qSr)rH)Ú.0rArrrú èszCAbstractUnpickleTests.test_unpickle_module_race..rO)rÚosÚmkdirrZ addCleanupÚshutilZrmtreeÚsysÚpathÚinsertÚremoveÚopenÚjoinÚwriter}r r Ú threadingZBarrierZThreadr•r r r rr_) rZ locker_moduleZlocking_import_moduleÚfr rZt1Út2rr)r rrrÚtest_unpickle_module_race¯s>         z/AbstractUnpickleTests.test_unpickle_module_race)N)2r&r'r(rZrprdrorrrtrvrxrzr€r„r™r›rœr r¡r¤r¦r§Ú requires_32brªr«r¬r¯r°r±r²r³r¶r·r¸r¹rºr»r¼r¿rÂrÄrÏrÑrÓrÔrírîrr r"rrrrr[˜sX  9        2'[r[c@sìeZdZdZejZdd„ZejZdd„Zdd„Z dd „Z d d „Z d d „Z dd„Z dd„Zdd„Zdd„Zdd„Zdd„Zdd„Zdd„Zdd„Zd d!„Zd"d#„Zd$d%„Zd&d'„Zd(d)„Zd*d+„Zd,d-„Zd.d/„Zd0d1„Zd2d3„Zd4d5„Z d6d7„Z!d8d9„Z"d:d;„Z#dd?„Z%e&d@dAdBƒdCdD„ƒZ'dEdF„Z(dGdH„Z)dIdJ„Z*dKdL„Z+dMdN„Z,dOdP„Z-dQdR„Z.dSdT„Z/dUdV„Z0dWdX„Z1dYdZ„Z2d[d\„Z3d]d^„Z4d_d`„Z5dadb„Z6dcdd„Z7dedf„Z8dgdh„Z9didj„Z:dkdl„Z;dmdn„Zdsdt„Z?dudv„Z@dwdx„ZAdydz„ZBd{d|„ZCd}d~„ZDdd€„ZEdd‚„ZFdƒd„„ZGd…d†„ZHd‡dˆ„ZIeJd‰dŠ„ƒZKd‹dŒ„ZLddŽ„ZMdd„ZNd‘d’„ZOd“d”„ZPd•d–„ZQd—d˜„ZRd™dš„ZSd›dœ„ZTdZUdžZVdŸd „ZWd¡d¢„ZXd£d¤„ZYd¥d¦„ZZd§d¨„Z[d©dª„Z\d«d¬„Z]d­d®„Z^d¯d°„Z_d±d²„Z`d³d´„ZadµS)¶ÚAbstractPickleTestsFcCsdS)Nr)rrrrÚsetUpôszAbstractPickleTests.setUpcCsŽxˆtD]€}tdƒ}| ||¡}| |¡}| ||¡d}| ||¡}| |¡}| ||¡td|ƒ}| ||¡}| |¡}| ||¡qWdS)NrÇ)rrr)Ú protocolsr?ÚdumpsrhrdrB)rÚprotorAÚsrYrrrÚ test_miscùs          zAbstractPickleTests.test_misccCs:|j}x.tD]&}| ||¡}| |¡}| ||¡q WdS)N)rpr&r'rhrd)rrÁr(r)rƒrrrÚtest_roundtrip_equality s    z+AbstractPickleTests.test_roundtrip_equalitycCsnddlm}ddlm}xPdtfdtffD]<\}}| |j|¡}|ƒ}|||d| ¡}|  ||¡q*WdS)Nr)ÚStringIO)Údisr)Úout) r"r,rr-Ú DATA0_DISÚ DATA1_DISr'rpÚgetvaluer_)rr,r-r(rÁr)ZfilelikerƒrrrÚdont_test_disassemblys   z)AbstractPickleTests.dont_test_disassemblycCsbg}| |¡xNtD]F}| ||¡}| |¡}| |t¡| t|ƒd¡| |d|¡qWdS)Nrr) rWr&r'rhÚassertIsInstancer‹r_Úlenr`)rÚlr(r)rArrrÚtest_recursive_list%s     z'AbstractPickleTests.test_recursive_listcCsgf}|d |¡xvtD]n}| ||¡}| |¡}| |t¡| t|ƒd¡| |dt¡| t|dƒd¡|  |dd|¡qWdS)Nrr) rWr&r'rhr3Útupler_r4r‹r`)rrr(r)rArrrÚtest_recursive_tuple_and_list/s    z1AbstractPickleTests.test_recursive_tuple_and_listcCsfi}||d<xTtD]L}| ||¡}| |¡}| |t¡| t| ¡ƒdg¡| |d|¡qWdS)Nr) r&r'rhr3rKr_r‹rr`)rÚdr(r)rArrrÚtest_recursive_dict;s    z'AbstractPickleTests.test_recursive_dictcCsŽi}t|ƒ}d||<xttD]l}| ||¡}| |¡}| |t¡| t| ¡ƒd¡| t | ¡ƒdt¡|  t | ¡ƒdj |¡qWdS)Nrr) r;r&r'rhr3rKr_r4rr‹r`r<)rr9Úkr(r)rArrrÚtest_recursive_dict_keyEs    z+AbstractPickleTests.test_recursive_dict_keycCs’tƒ}t|ƒ}| |¡xttdtjdƒD]`}| ||¡}| |¡}| |t¡|  t |ƒd¡| t |ƒdt¡|  t |ƒdj |¡q*WdS)NrÇrr)rˆr;ÚaddrŠrÚHIGHEST_PROTOCOLr'rhr3r_r4r‹r`r<)rrYr;r(r)rArrrÚtest_recursive_setQs    z&AbstractPickleTests.test_recursive_setcCsptƒ}| |¡xZtdtjdƒD]F}| ||¡}| |¡}| |t¡| t |ƒd¡|  |d|¡q"WdS)NrOrr) ÚMyListrWrŠrr>r'rhr3r_r4r`)rrYr(r)rArrrÚtest_recursive_list_subclass]s    z0AbstractPickleTests.test_recursive_list_subclasscCsttƒ}||d<x`tdtjdƒD]L}| ||¡}| |¡}| |t¡| t|  ¡ƒdg¡|  |d|¡q WdS)NrrO) ÚMyDictrŠrr>r'rhr3r_r‹rr`)rr9r(r)rArrrÚtest_recursive_dict_subclassgs   z0AbstractPickleTests.test_recursive_dict_subclasscCs tƒ}t|ƒ}d||<x„tdtjdƒD]p}| ||¡}| |¡}| |t¡| t t |  ¡ƒƒd¡| t |  ¡ƒdt¡|  t |  ¡ƒdj |¡q(WdS)NrrOr)rBr;rŠrr>r'rhr3r_r4r‹rr`r<)rr9r;r(r)rArrrÚ test_recursive_dict_subclass_keyqs   z4AbstractPickleTests.test_recursive_dict_subclass_keycCsbtƒ}||_xPtD]H}| ||¡}| |¡}| |t¡| t|ƒt|ƒ¡| |j|¡qWdS)N) r2Úattrr&r'rhr3r_Údirr`)rÚir(r)rArrrÚtest_recursive_inst}s    z'AbstractPickleTests.test_recursive_instcCs²g}d|i}tƒ}||_| |¡xŠtD]‚}| ||¡}| |¡}| |t¡| t |ƒd¡| t |dƒt |ƒ¡| t|dj  ¡ƒdg¡|  |djd|k¡q(WdS)Nrr) r2rErWr&r'rhr3r‹r_r4rFrÚ assertTrue)rr5r9rGr(r)rArrrÚtest_recursive_multi‡s     z(AbstractPickleTests.test_recursive_multicCsˆtƒ}||gƒ}||_xltD]d}| ||¡}| |¡}| |t|ƒ¡| t|ƒd¡| t |ƒdt¡|  t |ƒdj|¡qWdS)Nrr) r:rEr&r'rhr3rHr_r4r‹r`)rÚfactoryÚhrYr(r)rArrrÚ#check_recursive_collection_and_inst–s    z7AbstractPickleTests.check_recursive_collection_and_instcCs| t¡dS)N)rMr‹)rrrrÚtest_recursive_list_and_inst¢sz0AbstractPickleTests.test_recursive_list_and_instcCs| t¡dS)N)rMr7)rrrrÚtest_recursive_tuple_and_inst¥sz1AbstractPickleTests.test_recursive_tuple_and_instcCs| tj¡dS)N)rMrKÚfromkeys)rrrrÚtest_recursive_dict_and_inst¨sz0AbstractPickleTests.test_recursive_dict_and_instcCs| t¡dS)N)rMrˆ)rrrrÚtest_recursive_set_and_inst«sz/AbstractPickleTests.test_recursive_set_and_instcCs| t¡dS)N)rMÚ frozenset)rrrrÚ!test_recursive_frozenset_and_inst®sz5AbstractPickleTests.test_recursive_frozenset_and_instcCs| t¡dS)N)rMr@)rrrrÚ%test_recursive_list_subclass_and_inst±sz9AbstractPickleTests.test_recursive_list_subclass_and_instcCs| t¡dS)N)rMÚMyTuple)rrrrÚ&test_recursive_tuple_subclass_and_inst´sz:AbstractPickleTests.test_recursive_tuple_subclass_and_instcCs| tj¡dS)N)rMrBrP)rrrrÚ%test_recursive_dict_subclass_and_inst·sz9AbstractPickleTests.test_recursive_dict_subclass_and_instcCs| t¡dS)N)rMÚMySet)rrrrÚ$test_recursive_set_subclass_and_instºsz8AbstractPickleTests.test_recursive_set_subclass_and_instcCs| t¡dS)N)rMÚ MyFrozenSet)rrrrÚ*test_recursive_frozenset_subclass_and_inst½sz>AbstractPickleTests.test_recursive_frozenset_subclass_and_instcCsTdddddddg}xu<\ሴ>z< >z<\>u<\ð’…>u<í²€>)r&r'rhrd)rZendcasesr(Úur¾Zu2rrrÚ test_unicodeÀs    z AbstractPickleTests.test_unicodecCs8d}x.tD]&}| ||¡}| |¡}| ||¡q WdS)Nuð’…)r&r'rhrd)rrr(r¾r!rrrÚtest_unicode_high_planeËs    z+AbstractPickleTests.test_unicode_high_planecCs²x¬tD]¤}x*dD]"}| ||¡}| || |¡¡qWx8dd„tdƒDƒD]"}| ||¡}| || |¡¡qJWx8dd„tdƒDƒD]"}| ||¡}| || |¡¡q„WqWdS)N)rïsxyzs,xyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyzcSsg|]}t|gƒ‘qSr)rš)rrGrrrr×sz2AbstractPickleTests.test_bytes..écSsg|]}t||gƒ‘qSr)rš)rrGrrrrÚs)r&r'rdrhrŠ)rr(r)r¾rrrÚ test_bytesÒs     zAbstractPickleTests.test_bytescCs`xZtD]R}tj}xF|rVx4| |fD]&}| ||¡}| |¡}| ||¡q"W|d?}qWqWdS)Nr)r&rÚmaxsizer'rhrd)rr(rrÁr)Zn2rrrÚ test_intsÞs   zAbstractPickleTests.test_intsc CsÖxttD]l}xfdD]^}d|>}xP|d||dfD]:}x4|| fD]&}| ||¡}| |¡}| ||¡q@Wq0WqWqWtddƒ}||d>7}xD|| fD]6}| |d¡}| |¡}| t|ƒt¡| ||¡q˜WdS)N)réiðiøiirZdeadbeeffeedfaceéi@BrO)r&r'rhrdÚintr`rHr_) rr(ZnbitsZnbaseZnposrrrƒr¾rrrÚ test_longès        zAbstractPickleTests.test_longc Csnddddddddd d d g }|d d „|Dƒ}x)FcSsg|] }| ‘qSrr)rrArrrrsz2AbstractPickleTests.test_float..)r&r'rhrd)rZ test_valuesr(r<rrƒrrrÚ test_floatÿs     zAbstractPickleTests.test_floatÚLC_ALLZde_DEZfr_FRcCs | | dd¡dd…d¡dS)Ng333333ó?rrÆsF1.)r_r')rrrrÚtest_float_format sz%AbstractPickleTests.test_float_formatcCs:x4tD],}tƒ}| ||¡}| |¡}| |t¡qWdS)N)r&ÚAAAr'rhr_ÚREDUCE_A)rr(Úinstr¥r˜rrrÚ test_reduces    zAbstractPickleTests.test_reducecCs>x8tD]0}tddƒ}| ||¡}| |¡}| ||¡qWdS)NrrO)r&rBr'rhrd)rr(rmr¥r˜rrrÚtest_getinitargss     z$AbstractPickleTests.test_getinitargscCs>tƒ}x2tD]*}| ||¡}| |¡}| |j|j¡q WdS)N)rFr&r'rhr_rl)rrCr(r)rDrrrÚtest_metaclasss    z"AbstractPickleTests.test_metaclasscCsbtdtfƒ}t ttj¡xBtD]:}| ||¡}| |¡}|  ||¡|  t |ƒt |ƒ¡q WdS)NZmy_dynamic_class) rJr“r*rrGr=r&r'rhr_r`rH)rrCr(r)rDrrrÚtest_dynamic_class#s     z&AbstractPickleTests.test_dynamic_classcCs¼ddl}ddl}| ¡}xžtD]–}| ||¡}| |¡}| ||¡t|dƒr|| |j ¡}| ||¡}| |¡}| ||¡t|dƒr|  |j ¡}| ||¡}| |¡}| ||¡qWdS)NrÚstatÚstatvfs) ÚtimerZ localtimer&r'rhrdrarrÚcurdirrs)rrtrrr(r)r]rrrÚtest_structseq,s"             z"AbstractPickleTests.test_structseqcCs4x.tD]&}| d|¡}| |¡}| d|¡qWdS)N.)r&r'rhr`)rr(r)r]rrrÚ test_ellipsis@s   z!AbstractPickleTests.test_ellipsiscCs4x.tD]&}| t|¡}| |¡}| t|¡qWdS)N)r&r'ÚNotImplementedrhr`)rr(r)r]rrrÚtest_notimplementedFs   z'AbstractPickleTests.test_notimplementedcCsTddtg}xD|D]<}x6tD].}| t|ƒ|¡}| |¡}| t|ƒ|¡qWqWdS)N.)rxr&r'rHrhr`)rZ singletonsZ singletonr(r)r]rrrÚtest_singleton_typesLs     z(AbstractPickleTests.test_singleton_typesc CsÔxVtD]N}| d|¡}|dkr@tjt|gƒ}| | |¡¡q| ttj|ƒd¡qWtdd}tj tj }tjt|gƒ|}y|  |¡Wn2t k rÄ}z|  dt|ƒ¡Wdd}~XYn X| d¡dS)NrOrrQrzunsupported pickle protocolz0expected bad protocol number to raise ValueError)r&r'rÚPROTOršrIÚ startswithr_rÚNONErŸrhr‚ÚassertInr@Zfail)rr(r´Z proto_headerZoobZ build_noneZ badpickleÚerrrrrÚ test_protoWs    "zAbstractPickleTests.test_protocCsPd}xFtD]>}| ||¡}| |¡}| ||¡| ttj|ƒ|dk¡q WdS)NlèUJ^w,3ƒ| rO)r&r'rhrdr_rrZLONG1)rrAr(r)rYrrrÚ test_long1js     zAbstractPickleTests.test_long1cCsTdd>}xFtD]>}| ||¡}| |¡}| ||¡| ttj|ƒ|dk¡qWdS)NlèUJ^w,3ƒ| irO)r&r'rhrdr_rrZLONG4)rrAr(r)rYrrrÚ test_long4rs     zAbstractPickleTests.test_long4c CsÜtjtjtjtjtjtjtjtjtjtjtjtjtjtjtjtjtjtjtjtjdœ}d}d}d}d}d}xltD]d}x^|||||fD]L}| ||¡} | | ¡} |  || ¡|t |dƒt |ƒf} |  t | | ƒ¡q„WqpWdS)N))rr)rr)rrO)rrÆ)rrÇ)rr)rr)rrO)rrÆ)rrÇ)rOr)rOr)rOrO)rOrÆ)rOrÇ)rÆr)rÆr)rÆrO)rÆrÆ)rÆrÇr)r)rrO)rrOrÆ)rrOrÆrÇrÆ)rZTUPLEZ EMPTY_TUPLEZTUPLE1ZTUPLE2ZTUPLE3r&r'rhrdÚminr4rIr) rÚexpected_opcoderCrDrXr9Úer(rAr)rYrÁrrrÚtest_short_tupleszs@     z%AbstractPickleTests.test_short_tuplesc Cs¦tjtjtjtjtjtjtjtjtjtjtjtjdœ }xjtD]b}x\dD]T}| ||¡}| |¡}| ||k||||f¡|t |dƒ|f}| t ||ƒ¡qFWq.CcSstddgdfS)Nr)r‹)rrrrr=äszBAbstractPickleTests.test_reduce_bad_iterator..C.__reduce__N)r&r'r(r=rrrrr2ãsr2c@seZdZdd„ZdS)z7AbstractPickleTests.test_reduce_bad_iterator..DcSstdddgfS)Nr)rK)rrrrr=èszBAbstractPickleTests.test_reduce_bad_iterator..D.__reduce__N)r&r'r(r=rrrrr6çsr6)r“r&r'rÚ PicklingError)rr2r6r(rrrÚtest_reduce_bad_iteratoràs z,AbstractPickleTests.test_reduce_bad_iteratorc Cs†dd„tdƒDƒ}tdd„|Dƒƒ}t|ƒt|ƒt|ƒg}xFtD]>}|j|d(| ||¡}| |¡}| ||¡WdQRXq@WdS)Ncss|]}dt|ƒVqdS)ZaaaN)r@)rrGrrrú úsz>AbstractPickleTests.test_many_puts_and_gets..r­css|]}|dddgfVqdS)rÇrSrÈNr)rr;rrrrÄûs)r()rŠrKr&rfr'rhrd)rrZ large_dictrcr(r¥r˜rrrÚtest_many_puts_and_gets÷s   z+AbstractPickleTests.test_many_puts_and_getsc CsrxltD]d}tƒ}d|_d|_| ||¡}| |¡}t|jƒ}t|jƒ}x"t||ƒD]\}}|  ||¡qRWqWdS)NrÃrˆ) r&r2rTrUr'rhÚsortedr3Úzipr`) rr(rAr)rYZx_keysZy_keysZx_keyZy_keyrrrÚtest_attribute_name_internings     z1AbstractPickleTests.test_attribute_name_interningcCs>| tdƒd¡}| |t¡| tdgƒd¡}| |t¡dS)NrSrOrÆ)r'rŠr_r‰rˆÚ DATA_SET2)rr¥rrrÚtest_pickle_to_2xs z%AbstractPickleTests.test_pickle_to_2xcCsXxRtD]J}dtddtf}| ||¡}| |¡}| t|ƒt|ƒ¡| ||¡qWdS)Nrsxyix)r&rƒr4r'rhr_)rr(rer¥r˜rrrÚtest_large_pickless    z&AbstractPickleTests.test_large_picklesc sˆx‚tD]z‰ˆjˆdd‡‡fdd„tdƒDƒ}ttt|ƒƒ}ˆ t|ƒ|¡ˆdkrvx|D]}ˆ t t j |ƒ¡q\WWdQRXqWdS)N)r(csg|]}ˆ d|ˆ¡‘qS)rO)r')rr)r(rrrr*szDAbstractPickleTests.test_int_pickling_efficiency..éFrO) r&rfrŠr‹Úmapr4r_rÆršrrZLONG)rZpicklesZsizesr¾r)r(rrÚtest_int_pickling_efficiency&s  z0AbstractPickleTests.test_int_pickling_efficiencycCs6| ||¡}| t||ƒ¡| |¡}| ||¡dS)N)r'rIrrhr_)rrcrœr(r´rµrrrÚ_check_pickling_with_opcode2s  z/AbstractPickleTests._check_pickling_with_opcodecCsJtdddgƒ}x6tD].}|dkr2| |tj|¡q| |tj|¡qWdS)NrrOrÆr)ÚREX_sixr&rÏrZAPPENDr¤)rrcr(rrrÚtest_appends_on_non_lists8s  z-AbstractPickleTests.test_appends_on_non_listscCsLtddddœƒ}x6tD].}|dkr4| |tj|¡q| |tj|¡qWdS)NrQéþÿÿÿéýÿÿÿ)rrOrÆr)Ú REX_sevenr&rÏrZSETITEMr¦)rrcr(rrrÚtest_setitems_on_non_dictsAs  z.AbstractPickleTests.test_setitems_on_non_dictsrÇicCs>d}}ddddh}xèt |¡D]Ú\}}}|dk rJ| ||¡||krJd}|dk r~| |jd¡|j|krÖ| t|ƒ|j¡nX|jdks |j|krÀt|ƒ|jkrÀ|dk rÖ| |||j¡d}n|dkrÖ|jdkrÖ|}|jdkr |  ||j¡|d|}q Wt|ƒ}|dk r|  ||¡n|dk r:| |||j¡dS) a Check the arguments of FRAME opcodes in a protocol 4+ pickle. Note that binary objects that are larger than FRAME_SIZE_TARGET are not framed by default and are therefore considered a frame by themselves in the following consistency check. NÚBINBYTESÚ BINUNICODEÚ BINBYTES8Ú BINUNICODE8ÚFRAMEr{é ) rrÚassertLessEqualÚassertNotEqualrLr4ÚFRAME_SIZE_TARGETÚ assertLessÚFRAME_SIZE_MINr¨r_)rr´Z frame_endZframeless_startZframeless_opcodesrr7ÚposrrrÚcheck_frame_opcodesNs8         z'AbstractPickleTests.check_frame_opcodesc Cs¦ttdƒƒ}x”tdtjdƒD]€}|j|dj| ||¡}| |¡}| ||¡t|ƒt tj |ƒ}|  ||j d¡|  ||j d¡| |¡WdQRXqWdS)Ni †rÇr)r(rO)r‹rŠrr>rfr'rhr_r4rrÚÚ assertGreaterrÞrÜrâ)rrcr(r´rµZbytes_per_framerrrÚtest_framing_many_objects|s      z-AbstractPickleTests.test_framing_many_objectsc Csd}dd„tdƒDƒ}d|f|d|d|f•}xätdtjd ƒD]Ð}xÊd D]Â}|j||d ª|st| ||¡}n:t|d ƒs€wNt ¡}|j||d }||_ |  |¡|  ¡}|  |¡} |  dd„|Dƒdd„| Dƒ¡|  || ¡ttj|ƒ} |  | d ¡| |¡WdQRXqNWqDWdS)NicSsg|] }|g‘qSrr)rrGrrrrszBAbstractPickleTests.test_framing_large_objects..r£óxóyÚzrÇr)FT)r(ÚfastÚpickler)ÚprotocolcSsg|] }t|ƒ‘qSr)r4)rrArrrr¡scSsg|] }t|ƒ‘qSr)r4)rrArrrr¢s)rŠrr>rfr'rar"ÚBytesIOrérèÚdumpr1rhr_rrÚrâ) rÚNZ small_itemsrcr(rèr´ZbufrérµÚn_framesrrrÚtest_framing_large_objects‹s,       z.AbstractPickleTests.test_framing_large_objectscsÌtjdkrdSd dd„}|j‰d}‡fdd„t|ƒDƒ}xŽtdtjdƒD]z}| ||¡}||ƒ}| ttj|ƒd¡| || |¡¡||d d „ƒ}|  ttj|ƒttj|ƒ¡| || |¡¡qJWdS) NrÇc Ssg}d}x,t |¡D]\}}}|jdkr| |¡qWtƒ}d}x:t|ƒD].\} }|r`|| ƒr`qJ||||…7}||}qJW|||d…7}|S)z+Remove frame opcodes from the given pickle.rÛrÚrN)rrrLrWÚ bytearrayÚ enumerate) r´Z keep_frameZ frame_startsZframe_opcode_sizerœÚ_ráZ newpickleZlast_frame_endrGrrrÚ remove_frames¯s   z?AbstractPickleTests.test_optional_frames..remove_framesécsi|]}t|gƒˆ|“qSr)rš)rrG)Ú frame_sizerrú Æsz.rrcSs|dS)NrOr)rGrrrÚÏrïz:AbstractPickleTests.test_optional_frames..)N) rr>rÞrŠr'r_rrÚrhrß)rróZ num_framesrcr(r´Zframeless_pickleZsome_frames_pickler)rõrÚtest_optional_frames«s   z(AbstractPickleTests.test_optional_framesc sŠGdd„dƒ}xttdtjdƒD]^}dd„ttdƒƒDƒ}| dˆjd d¡|ƒ}ˆ ||¡ |¡| ¡}ˆ  |¡}ˆ  ||¡ˆ  t |j ƒd¡~t ¡ˆ  | ¡|¡t |ƒdˆjd}ˆ t |j ƒ|¡ˆ t |j ƒd |d ¡d d„|j Dƒ}‡fd d„|Dƒ} ‡fdd„|Dƒ} dd„|Dƒ} x"| D]} ˆ | d ˆj|¡qBWˆ t | ƒt | ƒt | ƒd |¡q"WdS)Nc@s(eZdZdZdd„Zdd„Zdd„ZdS) zYAbstractPickleTests.test_framed_write_sizes_with_delayed_writer..ChunkAccumulatorz2Accumulate pickler output in a list of raw chunks.cSs g|_dS)N)Úchunks)rrrrr.×szbAbstractPickleTests.test_framed_write_sizes_with_delayed_writer..ChunkAccumulator.__init__cSs|j |¡dS)N)rùrW)rÚchunkrrrrÙsz_AbstractPickleTests.test_framed_write_sizes_with_delayed_writer..ChunkAccumulator.writecSs d |j¡S)Nrï)rrù)rrrrÚconcatenate_chunksÛszlAbstractPickleTests.test_framed_write_sizes_with_delayed_writer..ChunkAccumulator.concatenate_chunksN)r&r'r(Ú__doc__r.rrûrrrrÚChunkAccumulatorÕsrýrÇrcSs,g|]$}t|ƒ d¡|ddt|ƒif‘qS)r{rÃrG)r@r})rrGrrrrßszSAbstractPickleTests.test_framed_write_sizes_with_delayed_writer..gˆÃ@Z0123456789abcdefrerOrÆcSsg|] }t|ƒ‘qSr)r4)rrXrrrr scsg|]}|ˆjkr|‘qSr)rÞ)rr))rrrr scs*g|]"}d|krˆjkrnq|‘qS)rÛ)rÞ)rr))rrrr scSsg|]}|dkr|‘qS)rÛr)rr)rrrr s)rŠrr>rfrWrÞrérìrûrhr_rãr4rùrZ gc_collectr¨rÜrß) rrýr(ZobjectsÚwriterr´Z reconstructedrîZ chunk_sizesZ large_sizesZ medium_sizesZ small_sizesZ chunk_sizer)rrÚ+test_framed_write_sizes_with_delayed_writerÔs8      z?AbstractPickleTests.test_framed_write_sizes_with_delayed_writerc Cs‚Gdd„dƒaxnttjdƒD]\}xVtjtjjtjjjgD]<}|j||d$| |  ||¡¡}|  ||¡WdQRXq:WqWdS)Nc@seZdZGdd„dƒZdS)ÚNestedc@seZdZGdd„dƒZdS)zNested.Ac@seZdZGdd„dƒZdS)z Nested.A.Bc@s eZdZdS)z Nested.A.B.CN)r&r'r(rrrrr2 sr2N)r&r'r(r2rrrrrŽ srŽN)r&r'r(rŽrrrrÚA srN)r&r'r(rrrrrr srr)r(rc) rrŠrr>rrŽr2rfrhr'r`)rr(rcrµrrrÚtest_nested_names s z%AbstractPickleTests.test_nested_namesc CsxGdd„dƒatjtjt_dt_xLttjdƒD]:}|j |d$|  |  t|¡¡}|  |t¡WdQRXq2Wt`dS)Nc@s eZdZdS)Ú RecursiveN)r&r'r(rrrrr$ srzRecursive.mod.Recursiver)r() rrÚmodulesr'Úmodr(rŠrr>rfrhr'r`)rr(rµrrrÚtest_recursive_nested_names" sz/AbstractPickleTests.test_recursive_nested_namesc Cs Gdd„dƒatjtjtƒjtjjtjjt ¡jf}tjtftjjtjff}x¸tt j dƒD]¦}xH|D]@}|j ||d(|  |  ||¡¡}| |ƒ|ƒ¡WdQRXqfWxV|D]N\}}|ƒ}|j ||d,|  |  ||¡¡}| ||ƒ||ƒ¡WdQRXq°Wq\WdS)Nc@s:eZdZedd„ƒZedd„ƒZdd„ZGdd„dƒZd S) Ú PyMethodsTestcSsdS)NÚcheeserrrrrr1 szPyMethodsTest.cheesecSs|tks t‚dS)NÚwine)rÚAssertionError)Úclsrrrr 4 s zPyMethodsTest.winecSst|tƒst‚dS)NÚbiscuits)Ú isinstancerr )rrrrr 8 szPyMethodsTest.biscuitsc@s0eZdZdZedd„ƒZedd„ƒZdd„ZdS) zPyMethodsTest.Nestedz Nested classcSsdS)NÚketchuprrrrrr= szPyMethodsTest.Nested.ketchupcSs|tjkst‚dS)NÚmaple)rrr )r rrrr@ szPyMethodsTest.Nested.maplecSst|tjƒst‚dS)NÚpie)r rrr )rrrrrD szPyMethodsTest.Nested.pieN) r&r'r(rüÚ staticmethodrÚ classmethodrrrrrrr; s  rN) r&r'r(rrrr r rrrrrr0 s  rr)r(Úmethod)rrr r rrrrrŠrr>rfrhr'r_)rZ py_methodsZpy_unbound_methodsr(rrµr rcrrrÚtest_py_methods. s&  z#AbstractPickleTests.test_py_methodscCs&Gdd„dtƒadjdftjdfdddgjd ftjdddgffddhjd ftjddhdfftj d ft j d ftdddgƒj d ftj tdddgƒdfft  d ¡j dftj j t  d ¡dfff }xhttjdƒD]V}xP|D]H\}}|j||d,| | ||¡¡}| ||Ž||Ž¡WdQRXqÒWqÈWdS)Nc@seZdZGdd„deƒZdS)ÚSubclassc@s eZdZdS)zSubclass.NestedN)r&r'r(rrrrrb srN)r&r'r(r@rrrrrra srÚabcd)rX)rrXrrOrÆr)rO))rCr)rDrO)sabcsxyzZsweet)r…r…)r(r)r7rÚindexr@Ú__len__r‹Ú __contains__rˆrKrPrðÚ maketransÚcountrrŠrr>rfrhr'r_)rZ c_methodsr(rrrµrrrÚtest_c_methods_ s$ z"AbstractPickleTests.test_c_methodsc Csètddƒddfttdƒddftjddftjd d ftƒd d ft  ¡d d ft  ¡ddft  ¡ddfg}x€|D]x\}}}xltdƒD]`}|j t |ƒ|dD| ||¡}| d||f ¡|¡| t | |¡ƒt |ƒ¡WdQRXq|WqhWdS)NrrÅZ __builtin__ZxrangeZ123Ú itertoolsZimaprÊrÌÚ exceptionsrrÎZIterableUserDictÚUserListrÍÚ defaultdictrÆ)rHr(zc%s %s)rŠrÍrfrÉrÊrËrÌrrÍrÎrr rfrHr'r~r}r`rh)rZtestsÚvalrrLr(r´rrrÚtest_compat_pickle‚ s      z&AbstractPickleTests.test_compat_picklec Csðdd„}xFtdtjdƒD]2}| ttjf¡t | ||¡¡WdQRXqW|` xFtdtjdƒD]2}| ttjf¡t | ||¡¡WdQRXqfW|j |_ xFtdtjdƒD]2}| ttjf¡t | ||¡¡WdQRXq¶WdS)NcSsdS)Nrrrrrr — sz6AbstractPickleTests.test_local_lookup_error..frr) rŠrr>rgÚAttributeErrorrÂrr-r'r'r(r&)rr r(rrrÚtest_local_lookup_error” s  z+AbstractPickleTests.test_local_lookup_errorN)br&r'r(Z optimizedr[rpr%rdr*r+r2r6r8r:r<r?rArCrDrHrJrMrNrOrQrRrTrUrWrXrZr\r^r_rarcrgrhrrjrnrorprqrvrwryrzr€rr‚r†r‡r‰rŠrr•r™rŸr r¡r¢r¥r§r©r¬r®r°r²rµr¸rºr¼r¾rrÁrÃrÅrÈrÊrËrÎrÏrÑrÕràrÞrârärïrørÿrrrrr"r$rrrrr$ís¸                  '              . )A  1#r$c@szeZdZeeddddd„ƒZeeddddd„ƒZeedddd d „ƒZeed ddd d „ƒZ eed dddd„ƒZ dS)ÚBigmemPickleTestsgÍÌÌÌÌÌ @F)ÚsizeZmemuseZdry_runc Cstdd|>}z\xVtD]N}|dkr"q|j|d.| ttf¡|j||dWdQRXWdQRXqWWdd}XdS)NrrdrO)r()rê)r&rfrgr‚r©r')rr&rer(rrrÚtest_huge_long_32b® s  *z$BigmemPickleTests.test_huge_long_32bg@c Cs¢d|d}zŠx„tD]|}|dkr"q|j|d\zN|j||d}tjt dt|ƒ¡}| |¡}|  |||t|ƒ|…¡Wdd}XWdQRXqWWdd}XdS)NsabcdrÇrÆ)r()rêz szREX_three.__reduce__)r&r'r(r·r/r=rrrrr¹9 sr¹c@seZdZdZdZdd„ZdS)r»z(Calling base class method should succeedNcCs||_t ||¡S)N)r·r“r/)rr(rrrr/D szREX_four.__reduce_ex__)r&r'r(rür·r/rrrrr»A sr»c@seZdZdZdZdd„ZdS)r½z-This one used to fail with infinite recursionrcCsd|_t |¡S)Nr)r´r“r=)rrrrr=K szREX_five.__reduce__N)r&r'r(rür´r=rrrrr½H sr½c@s2eZdZdZd dd„Zdd„Zdd„Zd d „ZdS) rÐz]This class is used to check the 4th argument (list iterator) of the reduce protocol. NcCs|dk r |ng|_dS)N)Úitems)rr0rrrr.S szREX_six.__init__cCst|ƒt|ƒko|j|jkS)N)rHr0)rr4rrrr5U szREX_six.__eq__cCs|j |¡dS)N)r0rW)rÚitemrrrrWW szREX_six.appendcCst|ƒddt|jƒdfS)Nr)rHÚiterr0)rrrrr=Y szREX_six.__reduce__)N)r&r'r(rür.r5rWr=rrrrrÐO s  rÐc@s2eZdZdZd dd„Zdd„Zdd„Zd d „ZdS) rÔz]This class is used to check the 5th argument (dict iterator) of the reduce protocol. NcCs|dk r |ni|_dS)N)Útable)rr3rrrr.` szREX_seven.__init__cCst|ƒt|ƒko|j|jkS)N)rHr3)rr4rrrr5b szREX_seven.__eq__cCs||j|<dS)N)r3)rr…r<rrrÚ __setitem__d szREX_seven.__setitem__cCst|ƒdddt|j ¡ƒfS)Nr)rHr2r3r0)rrrrr=f szREX_seven.__reduce__)N)r&r'r(rür.r5r4r=rrrrrÔ\ s  rÔc@seZdZdZdS)r‘rN)r&r'r(rrrrrr‘l sr‘c@seZdZdZdS)ÚMyFloatgð?N)r&r'r(rrrrrr5o sr5c@seZdZdZdS)Ú MyComplexyð?N)r&r'r(rrrrrr6r sr6c@seZdZdZdS)ÚMyStrrˆN)r&r'r(rrrrrr7u sr7c@seZdZdZdS)Ú MyUnicodeu hello ሴN)r&r'r(rrrrrr8x sr8c@seZdZdZdS)rV)rrOrÆN)r&r'r(rrrrrrV{ srVc@seZdZdddgZdS)r@rrOrÆN)r&r'r(rrrrrr@~ sr@c@seZdZdddœZdS)rBrrO)rCrDN)r&r'r(rrrrrrB srBc@seZdZddhZdS)rYrCrDN)r&r'r(rrrrrrY„ srYc@seZdZeddhƒZdS)r[rCrDN)r&r'r(rSrrrrrr[‡ sr[c@seZdZdgZdS)r±rTN)r&r'r(r]rrrrr± sr±c@seZdZdd„Zdd„ZdS)r–cOs tdƒ‚dS)Nz3SimpleNewObj.__init__() didn't expect to get called)rÐ)rrÚkwargsrrrr.” szSimpleNewObj.__init__cCst|ƒt|ƒko|j|jkS)N)rfr3)rr4rrrr5— szSimpleNewObj.__eq__N)r&r'r(r.r5rrrrr–“ sr–c@seZdZdd„ZdS)r­cCs d|dfS)Nz%Xrer)rrrrÚ__getnewargs__› szComplexNewObj.__getnewargs__N)r&r'r(r:rrrrr­š sr­c@seZdZdd„ZdS)r¯cCsd|fddifS)Nz%XÚbaserer)rrrrÚ__getnewargs_ex__Ÿ sz!ComplexNewObjEx.__getnewargs_ex__N)r&r'r(r<rrrrr¯ž sr¯c@seZdZdd„ZdS)r¿cCs |jdS)N)rT)rr…rrrÚ __getattr__£ szBadGetattr.__getattr__N)r&r'r(r=rrrrr¿¢ sr¿c@sLeZdZdd„Zdd„Zdd„Zdd„Zd d „Zd d „Zd d„Z dd„Z dS)ÚAbstractPickleModuleTestsc Cs:ttdƒ}z| ¡| t|jd|¡Wdt t¡XdS)Nr é{)rrÚclosergr‚rìrÚunlink)rr rrrÚtest_dump_closed_file© s  z/AbstractPickleModuleTests.test_dump_closed_filec Cs:ttdƒ}z| ¡| t|jd|¡Wdt t¡XdS)Nr r?)rrr@rgr‚rìrrA)rr rrrÚtest_load_closed_file± s  z/AbstractPickleModuleTests.test_load_closed_filecCsBt ¡}didg}| ||¡| d¡| |¡}| ||¡dS)Nr?é|r)r"rërìr$Úloadr_)rÚstreamrerµrrrÚtest_load_from_and_dump_to_file¹ s     z9AbstractPickleModuleTests.test_load_from_and_dump_to_filecCs| tjd¡dS)NrÇ)r_rr>)rrrrÚtest_highest_protocolÁ sz/AbstractPickleModuleTests.test_highest_protocolcCs^t ¡}| d|d¡|jd|dd| dd¡|jddd| |d¡|j|dddS)Nr?rQ)Úfilerê)rê)r"rërìr'ÚPickler)rr rrrÚ test_callapiÅ s  z&AbstractPickleModuleTests.test_callapic CsJttdƒ}z&x tD]}| t|jd||¡qWWd| ¡t t¡XdS)NÚwr?) rrr&rgrÐrìr@rrA)rr r(rrrÚtest_dump_text_fileÏ s   z-AbstractPickleModuleTests.test_dump_text_filecCs(t d¡}| ttjtjf|j|¡dS)NsX''.) r"rërgrrrÒrr¨rE)rr)rrrÚtest_incomplete_inputØ s z/AbstractPickleModuleTests.test_incomplete_inputcCsNGdd„d|jƒ}Gdd„d|jƒ}| tj|ƒjd¡| tj|ƒj¡dS)Nc@seZdZdd„ZdS)z;AbstractPickleModuleTests.test_bad_init..BadPicklercSsdS)Nr)rrrrr.à rïzDAbstractPickleModuleTests.test_bad_init..BadPickler.__init__N)r&r'r(r.rrrrÚ BadPicklerß srOc@seZdZdd„ZdS)z=AbstractPickleModuleTests.test_bad_init..BadUnpicklercSsdS)Nr)rrrrr.ã rïzFAbstractPickleModuleTests.test_bad_init..BadUnpickler.__init__N)r&r'r(r.rrrrÚ BadUnpicklerâ srPr)rJZ UnpicklerrgrrÂrìr¨rE)rrOrPrrrÚ test_bad_initÜ sz'AbstractPickleModuleTests.test_bad_initN) r&r'r(rBrCrGrHrKrMrNrQrrrrr>§ s  r>c@s$eZdZdd„Zdd„Zdd„ZdS)ÚAbstractPersistentPicklerTestscCsNt|tƒr,|ddkr,|jd7_t|ƒS|dkrF|jd7_dSdSdS)NrOrrÚtest_false_valuer¢)r rfÚid_countr@Ú false_count)rr“rrrÚ persistent_idï sz,AbstractPersistentPicklerTests.persistent_idcCsD|s|jd7_dS|jd7_t|ƒ}|ddks}|dkr | dd¡qx"ddddtgD]}| ||¡q0WqWdS)NrrRsabc zabc rQg*\Âõ(¼¿)r&r^r@)rr(rcrrrÚtest_return_correct_type s  z?AbstractIdentityPersistentPicklerTests.test_return_correct_typecCsBd}| tj|j|d¡tj| d¡d}| tj|j|¡dS)Nu∅rzutf-8s .)rgrrÂr'ZPERSIDr}r¨rh)rZ non_ascii_strr´rrrÚtest_protocol0_is_ascii_only' szCAbstractIdentityPersistentPicklerTests.test_protocol0_is_ascii_onlyN)r&r'r(rVrYr^r_r`rrrrr\ s  r\c@s\eZdZdZdZdd„Zdd„Zdd„Zdd „Zd d „Z d d „Z dd„Z dd„Z dd„Z dS)Ú#AbstractPicklerUnpicklerObjectTestsNcCs|js t‚|jst‚dS)N)Ú pickler_classr Úunpickler_class)rrrrr%3 s z)AbstractPicklerUnpicklerObjectTests.setUpcCsªdddg}xštD]’}t ¡}| ||¡}| |¡| ¡}| d¡| ¡| |¡| ¡}| ¡| d¡| ¡| |¡| ¡}|  ||¡|  ||¡qWdS)NÚabcdefgé,r) r&r"rërbrìr1r$ÚtruncateZ clear_memorÝr_)rrer(r réÚ first_pickledZsecond_pickledZ third_pickledrrrÚtest_clear_pickler_memo7 s"         z;AbstractPicklerUnpicklerObjectTests.test_clear_pickler_memocCsjdddg}t ¡}| |¡}| |¡| ¡}t ¡}| |¡}|j|_| |¡| ¡}| ||¡dS)Nrdre)r"rërbrìr1ÚmemorÝ)rrer rérgÚprimedÚprimed_pickledrrrÚtest_priming_pickler_memoW s     z=AbstractPicklerUnpicklerObjectTests.test_priming_pickler_memoc CsÆdddg}t ¡}| |¡}| |¡| ¡}t ¡}| |¡}|j|_| |¡| ¡}| t |¡¡}| ¡}| ||¡| t |¡¡}|j|_| ¡} |j  ¡| | |¡|  | |k¡dS)Nrdre) r"rërbrìr1rircrEr_ÚclearrI) rrer rérgrjrkÚ unpicklerZunpickled_data1Zunpickled_data2rrrÚtest_priming_unpickler_memoi s&        z?AbstractPicklerUnpicklerObjectTests.test_priming_unpickler_memocCsÌdddg}t ¡}| |¡}| |¡| ¡}dddg}t ¡}| |¡}| |¡| ¡}t ¡}| |¡| d¡| |¡}| |  ¡|¡| d¡|  ¡| |¡| d¡| |  ¡|¡dS)Nrdrer) r"rërbrìr1rr$rcr_rErf)rÚdata1r réZpickled1Zdata2Zpickled2rnrrrÚtest_reusing_unpickler_objects‡ s(            zBAbstractPicklerUnpicklerObjectTests.test_reusing_unpickler_objectsc CsäxÞtD]Ö}|j|dÀdd„tdƒDƒdtg}|ƒ}|j||d}| |¡| ¡}d}|||ƒ}| |¡}xPt|ƒD]D} | ¡r|  ¡} |  |  ¡|¡| ¡r||  |  ¡| t|ƒ¡q|W|  t |j ¡WdQRXqWdS)N)r(cSsg|]}|t|ƒf‘qSr)r@)rrArrrr£ szSAbstractPicklerUnpicklerObjectTests._check_multiple_unpicklings..iÐsabcde)rêrS)r&rfrŠr4rbrìr1rcr!r%r_rErgr) rZioclassr(rpr rér´rírnrGrárrrÚ_check_multiple_unpicklings  s"    z?AbstractPicklerUnpicklerObjectTests._check_multiple_unpicklingscCs| tj¡dS)N)rrr"rë)rrrrÚ"test_multiple_unpicklings_seekable´ szFAbstractPicklerUnpicklerObjectTests.test_multiple_unpicklings_seekablecCs| t¡dS)N)rrr)rrrrÚ$test_multiple_unpicklings_unseekable· szHAbstractPicklerUnpicklerObjectTests.test_multiple_unpicklings_unseekablecCs€ttdƒƒ}xntD]f}x`tddƒD]R}tjt ¡|d}|j||d}| |¡| d¡|  |¡}|  |  ¡|¡q"WqWdS)Nr£ré )Ú buffer_size)rêr) r‹rŠr&r"ÚBufferedRandomrërbrìr$rcr_rE)rrer(Zbuf_sizer rérnrrrÚ"test_unpickling_buffering_readlineº s     zFAbstractPicklerUnpicklerObjectTests.test_unpickling_buffering_readline)r&r'r(rbrcr%rhrlrorqrrrsrtrxrrrrra. s raZreduce_Ac@seZdZdd„ZdS)rkcCs ttffS)N)r@rl)rrrrr=Í szAAA.__reduce__N)r&r'r(r=rrrrrkÌ srkc@s eZdZdS)ÚBBBN)r&r'r(rrrrryÐ sryc@s,eZdZdd„Zdd„Zdd„Zdd„Zd S) ÚAbstractDispatchTableTestsc CsDt ¡}| |d¡}| t¡ |jWdQRX| t|dƒ¡dS)NrÚdispatch_table)r"rërbrgr#r{ršra)rr r¾rrrÚtest_default_dispatch_tableÕ s   z6AbstractDispatchTableTests.test_default_dispatch_tablecs@ˆ ¡‰G‡fdd„dˆjƒ‰d‡‡‡fdd„ }ˆ |ˆ¡dS)NcseZdZ”ZdS)zGAbstractDispatchTableTests.test_class_dispatch_table..MyPicklerN)r&r'r(r{r)ÚdtrrÚ MyPicklerá sr~cs2t ¡}ˆ||ƒ}ˆ |jˆ¡| |¡| ¡S)N)r"rër_r{rìr1)rcrêr r¾)r~r}rrrr'ä s   zCAbstractDispatchTableTests.test_class_dispatch_table..dumps)N)Úget_dispatch_tablerbÚ_test_dispatch_table)rr'r)r~r}rrÚtest_class_dispatch_tableÝ sz4AbstractDispatchTableTests.test_class_dispatch_tablecs(ˆ ¡‰d‡‡fdd„ }ˆ |ˆ¡dS)Ncs:t ¡}ˆ ||¡}ˆ|_ˆ |jˆ¡| |¡| ¡S)N)r"rërbr{r_rìr1)rcrêr r¾)r}rrrr'ñ s   zFAbstractDispatchTableTests.test_instance_dispatch_table..dumps)N)rr€)rr'r)r}rrÚtest_instance_dispatch_tableí sz7AbstractDispatchTableTests.test_instance_dispatch_tablec sf‡fdd„}dd„}d}| ||ƒ|¡| ||ƒ|¡d‰‡fdd„}||t<| ||ƒˆ¡| ||ƒ|¡tƒ}tƒ}| ||ƒt¡| ||ƒt¡| ||ƒt¡| ||ƒt¡||t<| ||ƒt¡| ||ƒˆ¡| ||ƒt¡| ||ƒt¡d ‰‡fd d „} | |t<|t=| ||ƒˆ¡| ||ƒt¡| ||ƒt¡| ||ƒt¡dS) Ncst ˆ|dƒ¡S)Nr)rrh)rc)r'rrÚcustom_load_dumpü szIAbstractDispatchTableTests._test_dispatch_table..custom_load_dumpcSst t |d¡¡S)Nr)rrhr')rcrrrÚdefault_load_dumpÿ szJAbstractDispatchTableTests._test_dispatch_table..default_load_dumpyð?@Úreduce_1cs tˆffS)N)r@)rc)ÚREDUCE_1rrr… szAAbstractDispatchTableTests._test_dispatch_table..reduce_1Úreduce_2cs tˆffS)N)r@)rc)ÚREDUCE_2rrr‡! szAAbstractDispatchTableTests._test_dispatch_table..reduce_2)r_Úcomplexrkryrlr3) rr'r{rƒr„rçr…rCrDr‡r)r†rˆr'rr€û s:   z/AbstractDispatchTableTests._test_dispatch_tableN)r&r'r(r|rr‚r€rrrrrzÓ srz)r-z DATA{0} = (rôz {0!r}ú)z# Disassembly of DATA{0}zDATA{0}_DIS = """\z""")¯rÍr*rËr"rÉrrrrrrrZunittestr’ÚtextwraprZ http.cookiesrZtestrZ test.supportrrrrr r r r r rZ skipUnlessrbr#rŠr>r&rrrërr)r2r6r8r“r:r;r>r'rfr?rBrHrErFrGrJrqr/rsr0ruZ DATA2_DISrwZ DATA3_DISryZ DATA4_DISr‡r‰rŒrÉÚArithmeticErrorr r#riÚ BufferErrorÚ BytesWarningÚDeprecationWarningrÚEnvironmentErrorrÚFloatingPointErrorÚ FutureWarningÚ GeneratorExitÚIOErrorÚ ImportErrorÚ ImportWarningÚIndentationErrorÚ IndexErrorr®ÚKeyboardInterruptÚ LookupErrorÚ MemoryErrorÚ NameErrorrÚOSErrorr©ÚPendingDeprecationWarningÚReferenceErrorrÀÚRuntimeWarningÚ StopIterationÚ SyntaxErrorÚ SyntaxWarningÚ SystemErrorÚ SystemExitÚTabErrorrÐÚUnboundLocalErrorÚ UnicodeErrorÚUnicodeWarningÚ UserWarningr‚ÚWarningÚZeroDivisionErrorrŽrr‘rZZTestCaser[r$r%r³r¶r¹r»r½rÐrÔr‘Úfloatr5r‰r6r@r7r8r7rVr‹r@rKrBrˆrYrSr[r‹r±r–r­r¯r¿r>rRr\rarlrkryrzr&r-rArGr'r¾rkr^r4ÚjršrDrrrrÚs`   ,    cMDDLYF B(X