mò %U²Ic@sÔdklZdkZdklZdklZdkZdkZ dk l Z dk Z dk Z dZd„Zdeifd„ƒYZd „Zd fd „ƒYZd fd „ƒYZdfd„ƒYZdfd„ƒYZdfd„ƒYZdfd„ƒYZdfd„ƒYZdklZlZd„Zdeifd„ƒYZdefd„ƒYZdefd„ƒYZ d eifd!„ƒYZ!d"Z"hd#e"RR6R3((Rt test_delitemgs  cCsûtdƒ}t|ƒ}t|ƒ}|idƒ|idi |ƒdƒt|ƒ}|idƒ|idi |ƒdƒ|iƒ|it|ƒ|ƒxÈt |dƒD]¶}t|ƒ}t|ƒ}|i|ƒx!t |ƒD]}|idƒqåW|it|ƒt|ƒƒ|i| ƒ|it|ƒ|ƒ|i||ƒ|it|ƒ|ƒq­WxÈt |dƒD]¶}t|ƒ}t|ƒ}|i| ƒx!t |ƒD]}|idƒq±W|it|ƒt|ƒƒ|i|ƒ|it|ƒ|ƒ|i||ƒ|it|ƒ|ƒqxWt|ƒ}t|ƒ}|itdƒ|i}xt tdƒD] }|ƒquW|it|ƒt|ƒƒ|it|id ƒ|it|idd ƒtƒ}|iƒ|i|tƒƒdS( NtabcdeiRteabcdiÿÿÿÿtbcdeaiiR%i (ttupleR2RR3RRtrotateR R tjoinRRR!R6tBIGtdrR+R,(R R!RRR6R3R2RH((Rt test_rotateusb                     cCsõtdƒ}|it|ƒdƒ|iƒ|it|ƒdƒ|iƒ|it|ƒdƒ|it|iƒ|it|ƒdƒ|i dƒ|it|ƒdƒ|i dƒ|it|ƒdƒ|i ƒ|it|ƒdƒdS(NRiiitcR( RRR R RRRR+R8R R tclear(R R((Rttest_lenªs      cCs3tƒ}|it|iƒ|it|iƒdS(N(RRR R+R8RR(R R((Rttest_underflowºs cCs‚ttdƒƒ}|it|ƒdƒ|iƒ|it|ƒdƒ|it|ƒgƒ|iƒ|it|ƒgƒdS(Nidi(RRRR R RRKR(R R((Rt test_clear¿s  cCsjttdƒƒ}tt|ƒƒ}|it|ƒt|ƒƒ|i |ƒ|i dt|ƒjƒdS(NiÈs...( RRRtevaltreprR!R R RR R?(R R!R((Rt test_reprÈs  cCs™ttdƒƒ}|i|ƒzXttidƒ}||I|iƒttidƒ}|i |i ƒt |ƒƒWd|iƒt itiƒXdS(NiÈtwbtrb(RRRR topent test_supporttTESTFNtfotcloseR R treadRPtostremove(R RRW((Rt test_printÏs     cCs-|ittddƒ|ittdƒdS(NRii(R R+R,R(R ((Rt test_initÜscCs|itttdƒƒdS(NR(R R+R,thashR(R ((Rt test_hashàscCs³x¬dD]¤}tt|ƒƒ}|i|i}}xSt|tƒD]B}||ƒ|ƒ}|||jo|i |||ƒqBqBW|i t |ƒt t|tƒƒqWdS(Niiiidiè(iiiidiè(tsizeRRRR RRRGRR%R R RR(R RRRR%R R`((Rt#test_long_steadystate_queue_popleftãs  cCsÅx¾dD]¶}ttt|ƒƒƒ}|i|i}}xSt|tƒD]B}||ƒ|ƒ}|||jo|i |||ƒqHqHW|i t tt |ƒƒƒtt|tƒƒqWdS(Niiiidiè(iiiidiè(R`RR RRR RR RGRR%R R RR(R RRRR%R R`((Rt$test_long_steadystate_queue_poprightîs  cCs‚tƒ}|i|i}}xttƒD]}||ƒq)Wx>ttƒD]0}|ƒ}||jo|i ||ƒqJqJWdS(N( RRR RRRRGRR%R R (R RRRR%R ((Rttest_big_queue_popleftùs     cCs‚tƒ}|i|i}}xttƒD]}||ƒq)Wx>ttƒD]0}|ƒ}||jo|i ||ƒqJqJWdS(N( RRR RR RRGRR%R R (R RRRR%R ((Rttest_big_queue_poprights     cCsžtƒ}|i|i}}xttƒD]}||ƒq)WxDtttƒƒD]0}|ƒ}||jo|i ||ƒqPqPW|i t |ƒdƒdS(Ni( RRR RRRGRR R%R R R(R RRRR%R ((Rttest_big_stack_rights    cCsžtƒ}|i|i}}xttƒD]}||ƒq)WxDt ttƒƒD]0}|ƒ}||jo|i ||ƒqPqPW|i t |ƒdƒdS(Ni(RRR RR RRRGRR R%R R R(R RRRR%R ((Rttest_big_stack_lefts    cCsZttdƒƒ}t|ƒ}|it|ƒt|ƒƒ|it|ƒt|ƒƒdS(NiÈ( RRRR!R tassertNotEqualtidR R(R R!R((Rttest_roundtrip_iter_init$s cCs€ttdƒƒ}xgdD]_}ti||ƒ}ti|ƒ}|i t |ƒt |ƒƒ|i t |ƒt |ƒƒqWdS(NiÈiii(iii(RRRRtpickletdumpsR2tloadsR!R RgRhR R(R R!RRR2((Rt test_pickle*scCs…tdƒ}|i|ƒxedD]]}titi||ƒƒ}|i t |ƒt |ƒƒ|i t |ƒt |dƒƒq WdS(NRiiiiÿÿÿÿ(iii( RRR RRjRlRkR!R RgRhR (R R!RR((Rttest_pickle_recursive2s  cCs‰dg}t|gƒ}ti|ƒ}|it|ƒt|ƒƒd|d<|i t |ƒt |ƒƒ|i t|ƒt|ƒƒdS(Ni i i( tmutRRtcopytdeepcopyR!R R RRgRh(R RoR!R((Rt test_deepcopy:s  cCs‰dg}t|gƒ}ti|ƒ}|it|ƒt|ƒƒd|d<|it |ƒt |ƒƒ|it|ƒt|ƒƒdS(Ni i i( RoRRRpR!R R RRgRh(R RoR!R((Rt test_copyCs  cCsOxHdtdƒfD]4}|ittt|ƒƒƒtt|ƒƒƒqWdS(NR*iÐ(RR2R R RR R(R R2((Rt test_reversedLscCsDdk}tƒ}x+tdƒD]}|idƒ|iƒqWdS(Nidi(tgcRRRRR tcollect(R RRRu((Rttest_gc_doesnt_blowupPs     (t__name__t __module__RR(R.R0R:R;R@RIRLRMRNRQR\R]R_RaRbRcRdReRfRiRmRnRrRsRtRw(((RRs8      5         ccsx|D] }|VqWdS(sRegular generatorN(tseqnR(RzR((RtRYstGcBs tZdZd„Zd„ZRS(sSequence using __getitem__cCs ||_dS(N(RzR (R Rz((RR`scCs |i|S(N(R RzR(R R((RR9bs(RxRyt__doc__RR9(((RR|^s  tIcBs)tZdZd„Zd„Zd„ZRS(s Sequence using iterator protocolcCs||_d|_dS(Ni(RzR R(R Rz((RRgs cCs|S(N(R (R ((Rt__iter__jscCsF|it|iƒjo t‚n|i|i}|id7_|S(Ni(R RRRzt StopIterationtv(R R((Rtnextls  (RxRyR}RRR‚(((RR~es   tIgcBs tZdZd„Zd„ZRS(s9Sequence using iterator protocol defined with a generatorcCs||_d|_dS(Ni(RzR R(R Rz((RRts ccsx|iD] }|Vq WdS(N(R RzR>(R R>((RRws (RxRyR}RR(((RRƒrs  tXcBs tZdZd„Zd„ZRS(s Missing __getitem__ and __iter__cCs||_d|_dS(Ni(RzR R(R Rz((RR}s cCsF|it|iƒjo t‚n|i|i}|id7_|S(Ni(R RRRzR€R(R R((RR‚€s  (RxRyR}RR‚(((RR„{s  tNcBs tZdZd„Zd„ZRS(sIterator missing next()cCs||_d|_dS(Ni(RzR R(R Rz((RRˆs cCs|S(N(R (R ((RR‹s(RxRyR}RR(((RR…†s  tEcBs)tZdZd„Zd„Zd„ZRS(sTest propagation of exceptionscCs||_d|_dS(Ni(RzR R(R Rz((RRs cCs|S(N(R (R ((RR“scCs dddS(Nii((R ((RR‚•s(RxRyR}RRR‚(((RR†Žs   tScBs)tZdZd„Zd„Zd„ZRS(sTest immediate stopcCsdS(N((R Rz((RRšscCs|S(N(R (R ((RRœscCs t‚dS(N(R€(R ((RR‚žs(RxRyR}RRR‚(((RR‡˜s   (schainsimapcCs(ttd„ttt|ƒƒƒƒƒS(s Test multiple tiers of iteratorscCs|S(N(R%(R%((Rt¤sN(tchaintimapR{RƒR|Rz(Rz((RtL¢stTestVariousIteratorArgscBstZd„Zd„ZRS(NcCsÒxËddtdƒd tdddƒfD]¢}xNttttttfD]4}|i t t ||ƒƒƒt ||ƒƒƒqGW|itt t|ƒƒ|itt t|ƒƒ|itt t|ƒƒq(WdS( Nt123Riètdof1.2iÐi˜i(RŽf1.2(RRR2R|R~RƒR‡R‹R{tgR R RRR+R,R„R…tZeroDivisionErrorR†(R RR2((Rttest_constructor©s(2cCs9tdƒ}t|ƒ}|iƒ|it|iƒdS(Ntabcdefg( RRtitertitRR R+t RuntimeErrorR‚(R RR”((Rttest_iter_with_altered_data±s   (RxRyR‘R–(((RRŒ§s tDequecBstZRS(N(RxRy(((RR—·stDequeWithBadItercBstZd„ZRS(NcCs t‚dS(N(R,(R ((RR»s(RxRyR(((RR˜ºst TestSubclasscBs5tZd„Zd„Zd„Zd„Zd„ZRS(NcCs©ttdƒƒ}|itddƒƒx$tddƒD]}|i|ƒq8Wx*ttddƒƒD]}|i|ƒqeW|i t |ƒt ddƒƒ|i t |ƒdƒg}tdƒD]}||iƒqÂ~}|i |t ddƒƒ|i t |ƒt ddƒƒg}tdƒD]}||iƒq'~}|iƒ|i |t d dƒƒ|i t |ƒt dd ƒƒ|iƒ|i t |ƒdƒdS( NidiÈii8ÿÿÿiiXiúi2i–(R—RRRRR R R R R RRRRRRRRRRK(R RRRRR((RRÀs&--  cCs tdƒ}|iƒ}|it|ƒt|ƒƒ|it|ƒt|ƒƒt|ƒ}|it|ƒt|ƒƒ|it|ƒt|ƒƒti |ƒ}ti |ƒ}|i t |ƒt |ƒƒ|it|ƒt|ƒƒ|it|ƒt|ƒƒdS(NR(R—Rt__copy__R!R R R"RRjRkR2RlRgRh(R R!RR2((Rttest_copy_pickleÖs   cCstdƒ}|i|ƒtiti|ƒƒ}|it |ƒt |ƒƒ|i t |ƒt |ƒƒ|i ƒ}|i ƒ}|i t |ƒt |ƒƒ|i ||ƒ||_titi|ƒƒ}|i t |ƒt |iƒƒtdƒ}|itti|ƒdS(NR(R—RR RjRlRkR!R RgRhR R"RtddteeR%R˜R+R,(R R!RRRœ((RRmès      cCsQtdƒ}t|ƒ}|it|ƒt|ƒƒd}|it t|ƒdS(Ntgallahad( RRtproxytpR R tstrtNoneR+tReferenceError(R RR ((Rt test_weakrefûs   cCsNdtfd„ƒY}|dddgƒ}|dddgƒ}||jdS( NR„cBstZd„ZRS(NcCs tgƒS(N(R“(R ((RRs(RxRyR(((RR„siiiiii(RR„td1td2(R R„R¥R¦((Rttest_strange_subclasss(RxRyRR›RmR¤R§(((RR™¾s     s‘ Example from the Library Reference: Doc/lib/libcollections.tex >>> from collections import deque >>> d = deque('ghi') # make a new deque with three items >>> for elem in d: # iterate over the deque's elements ... print elem.upper() G H I >>> d.append('j') # add a new entry to the right side >>> d.appendleft('f') # add a new entry to the left side >>> d # show the representation of the deque deque(['f', 'g', 'h', 'i', 'j']) >>> d.pop() # return and remove the rightmost item 'j' >>> d.popleft() # return and remove the leftmost item 'f' >>> list(d) # list the contents of the deque ['g', 'h', 'i'] >>> d[0] # peek at leftmost item 'g' >>> d[-1] # peek at rightmost item 'i' >>> list(reversed(d)) # list the contents of a deque in reverse ['i', 'h', 'g'] >>> 'h' in d # search the deque True >>> d.extend('jkl') # add multiple elements at once >>> d deque(['g', 'h', 'i', 'j', 'k', 'l']) >>> d.rotate(1) # right rotation >>> d deque(['l', 'g', 'h', 'i', 'j', 'k']) >>> d.rotate(-1) # left rotation >>> d deque(['g', 'h', 'i', 'j', 'k', 'l']) >>> deque(reversed(d)) # make a new deque in reverse order deque(['l', 'k', 'j', 'i', 'h', 'g']) >>> d.clear() # empty the deque >>> d.pop() # cannot pop from an empty deque Traceback (most recent call last): File "", line 1, in -toplevel- d.pop() IndexError: pop from an empty deque >>> d.extendleft('abc') # extendleft() reverses the input order >>> d deque(['c', 'b', 'a']) >>> def delete_nth(d, n): ... d.rotate(-n) ... d.popleft() ... d.rotate(n) ... >>> d = deque('abcdef') >>> delete_nth(d, 2) # remove the entry at d[2] >>> d deque(['a', 'b', 'd', 'e', 'f']) >>> def roundrobin(*iterables): ... pending = deque(iter(i) for i in iterables) ... while pending: ... task = pending.popleft() ... try: ... yield task.next() ... except StopIteration: ... continue ... pending.append(task) ... >>> for value in roundrobin('abc', 'd', 'efgh'): ... print value ... a d e b f c g h >>> def maketree(iterable): ... d = deque(iterable) ... while len(d) > 1: ... pair = [d.popleft(), d.popleft()] ... d.append(pair) ... return list(d) ... >>> print maketree('abcdefgh') [[[['a', 'b'], ['c', 'd']], [['e', 'f'], ['g', 'h']]]] t libreftestcCsÀdk}tttf}ti|Œ|ost|dƒocdk }dgd}xAt t |ƒƒD]-}ti|Œ|iƒ|iƒ||          ÿI       Og