ó {G_Tc@s”ddlmZddlZddlmZmZddlZddlZddlZddl Z ddl Z ddl Z dZ d„Zdfd„ƒYZdfd „ƒYZd ejfd „ƒYZd ejfd „ƒYZdefd„ƒYZdefd„ƒYZdejfd„ƒYZdefd„ƒYZdejfd„ƒYZdZied6Zed„ZedkredeƒndS(iÿÿÿÿ(tdequeN(t test_supportt seq_testsi †ccst‚dVdS(Ni(t SyntaxError(((s+/usr/local/lib/python2.7/test/test_deque.pytfail stBadCmpcBseZd„ZRS(cCs t‚dS(N(t RuntimeError(tselftother((s+/usr/local/lib/python2.7/test/test_deque.pyt__eq__s(t__name__t __module__R (((s+/usr/local/lib/python2.7/test/test_deque.pyRst MutateCmpcBseZd„Zd„ZRS(cCs||_||_dS(N(Rtresult(RRR ((s+/usr/local/lib/python2.7/test/test_deque.pyt__init__s cCs|jjƒ|jS(N(RtclearR (RR((s+/usr/local/lib/python2.7/test/test_deque.pyR s (R R RR (((s+/usr/local/lib/python2.7/test/test_deque.pyR s t TestBasiccBs^eZd„Zd„Zd„Zd„Zd„Zd„Zd„Zd„Z d„Z d „Z d „Z d „Z d „Zd „Zd„Zd„Zd„Zd„Zd„Zd„Zd„Zd„Zd„Zd„Zd„Zd„Zd„Zd„Zd„Zd„Zd„Z d„Z!d „Z"d!„Z#d"„Z$e%j&Z&e%j'd#„ƒZ(RS($cCsyttddƒƒ}|jtdƒƒx$tddƒD]}|j|ƒq8Wx*ttddƒƒD]}|j|ƒqeW|jt|ƒtddƒƒ|jt |ƒdƒgtdƒD]}|j ƒ^q¾}|j|tdd ƒƒ|jt|ƒtd dƒƒgtdƒD]}|j ƒ^q}|j ƒ|j|td dƒƒ|jt|ƒtd d ƒƒdS( NiûëÿÿixìÿÿiÈii8ÿÿÿiiXiúi2i–( RtxrangeRtappendtreversedt appendleftt assertEqualtlisttrangetlentpoplefttpoptreverse(Rtdtitlefttright((s+/usr/local/lib/python2.7/test/test_deque.pyt test_basicss%% cCsÉ|jttddƒ|jttddƒttdƒƒ}t|ddƒ}|jt|ƒgƒ|jt|ƒdƒ|jt|ƒtddƒƒ|j|ttdƒdƒƒ|jdƒ|jt|ƒtd d ƒƒ|j dƒ|jt|ƒtddƒƒ|j dd gƒ|jt|ƒtd d ƒƒ|j d dgƒ|jt|ƒtddƒƒtt d ƒddƒ}|j|ƒt jt jƒtt jdƒ}zF||I|jƒtt jdƒ}|j|jƒt|ƒƒWd|jƒt jt jƒXttdƒddƒ}|jt|ƒdƒtt jdƒ}zF||I|jƒtt jdƒ}|j|jƒt|ƒƒWd|jƒt jt jƒXdS(Ntabciÿÿÿÿiþÿÿÿi tmaxlenisdeque([7, 8, 9], maxlen=3)iii i i iÈtwbtrbs%deque([0, 1, 2, 3, 4, 5, 6, 7, 8, 9])(t assertRaisest ValueErrorRtiterRRRtreprRRtextendt extendleftRRtunlinktTESTFNtopentclosetreadtNone(RtitRtfo((s+/usr/local/lib/python2.7/test/test_deque.pyt test_maxlen2sJ           cCsÄttdƒƒ}t|ddƒ|jt|ƒgƒttdƒƒ}tddƒ}|j|ƒ|jt|ƒgƒttdƒƒ}tddƒ}|j|ƒ|jt|ƒgƒdS(NidR"i(R'RRRRR)R*(RR1R((s+/usr/local/lib/python2.7/test/test_deque.pyttest_maxlen_zero\s  cCs»|jtƒjdƒ|jtdƒjdƒ|jtdddƒjdƒ|jtdddƒjdƒ|jtdddƒjdƒ|jtƒtdƒ}d|_WdQXdS(NR!R"iiii (RRR"R0R%tAttributeError(RR((s+/usr/local/lib/python2.7/test/test_deque.pyttest_maxlen_attributeks cCsðxvdddddfD]]}t|ƒ}t|ƒ}x<dD]4}|j|j|ƒ|j|ƒ|||fƒq=WqW|jt|jƒ|jt|jddƒd dd „ƒY}tdd|ƒd gƒ}|jt|jdƒtddd gƒ}|jt|j|ƒƒd dd „ƒY}|ƒ}tddd |ddgƒ}||_|jt|jd ƒtdgdƒ}x't t |ƒƒD]}|j dƒq–W|j dƒ|j|jdƒdƒ|j|jdƒdƒdS(Ntt abracadabrat simsalabimiôR!tabcdefghijklmnopqrstuvwxyziit BadComparecBseZd„ZRS(cSs t‚dS(N(tArithmeticError(RR((s+/usr/local/lib/python2.7/test/test_deque.pyR ~s(R R R (((s+/usr/local/lib/python2.7/test/test_deque.pyR;}sitMutatingComparecBseZd„ZRS(cSs|jjƒtS(N(RRtTrue(RR((s+/usr/local/lib/python2.7/test/test_deque.pyR …s (R R R (((s+/usr/local/lib/python2.7/test/test_deque.pyR=„siiiiÿÿÿÿi((( RRRtcountR%t TypeErrorR<RRR0RRtrotate(RtsRtletterR;R=tmR((s+/usr/local/lib/python2.7/test/test_deque.pyt test_countus.   6   c Cs^tdƒ}|jƒx³|tdƒtdƒtƒt|ƒgD]‡}|j||kt|ƒt|ƒkoƒt|ƒt|ƒkƒ|j||kt|ƒt|ƒkoÃt|ƒt|ƒk ƒqAWttd ƒ}x||D]t}xk|D]c}|j||kt|ƒt|ƒk||fƒ|j||kt|ƒt|ƒk||fƒ|j||kt|ƒt|ƒk||fƒ|j||kt|ƒt|ƒk||fƒ|j||kt|ƒt|ƒk||fƒ|j||kt|ƒt|ƒk||fƒ|jt||ƒtt|ƒt|ƒƒ||fƒqïWqâWdS( NtxabcR!tabR7tatbtbatxbatcba( R7RHRIRGRJsabcRKRFRL(RRRRttypetmaptcmp(RRtetargstxty((s+/usr/local/lib/python2.7/test/test_deque.pyttest_comparisons–s 1@E  111111cCsxtdƒ}|jt|jdƒ|jdƒ|jt|ƒtdƒƒ|j|ƒ|jt|ƒtdƒƒdS(NRHitbcdtabcdtabcdabcd(RR%R@R)RR(RR((s+/usr/local/lib/python2.7/test/test_deque.pyt test_extend§s    cCs\tdƒ}|d7}|jt|ƒtdƒƒ||7}|jt|ƒtdƒƒdS(NRHRURVRW(RRR(RR((s+/usr/local/lib/python2.7/test/test_deque.pyt test_iadd¯s    cCsÛtdƒ}|jt|jdƒ|jdƒ|jt|ƒttdƒƒƒ|j|ƒ|jt|ƒtdƒƒtƒ}|jtdƒƒ|jt|ƒtttdƒƒƒƒ|jt|jt ƒƒdS(NRHiRURVtabcddcbaiè( RR%R@R*RRRRRR(RR((s+/usr/local/lib/python2.7/test/test_deque.pyttest_extendleft¶s  "  (cCsd}tt|ƒƒ}t|ƒ}x„t|ƒD]v}|jƒ|jdƒtjƒdkr}|j|ƒ|j|ƒnx'tdt|ƒt|ƒƒD]}qWq1Wtdƒ}|j|ddƒ|j|ddƒtƒ}|j t |j dƒ|j t |j dƒdS( NiÈigà?itsupermanRBiÿÿÿÿtn( RRRRRtrandomRRRR%t IndexErrort __getitem__(RR]RtlRtj((s+/usr/local/lib/python2.7/test/test_deque.pyt test_getitemÂs"    &  cCsÓd}tt|ƒƒ}x"t|ƒD]}d|||tFalseR)R R_(RRRPRRRStmatch((s+/usr/local/lib/python2.7/test/test_deque.pyt test_removeOs"    cCsgttdƒƒ}tt|ƒƒ}|jt|ƒt|ƒƒ|j|ƒ|jdt|ƒƒdS(NiÈs...(RRtevalR(RRRRg(RRRP((s+/usr/local/lib/python2.7/test/test_deque.pyt test_reprgs  cCs©ttdƒƒ}|j|ƒtjtjƒttjdƒ}zF||I|jƒttjdƒ}|j|j ƒt |ƒƒWd|jƒtjtjƒXdS(NiÈR#R$( RRRRR+R,R-R.RR/R((RRR2((s+/usr/local/lib/python2.7/test/test_deque.pyt test_printns     cCs0|jttdddƒ|jttdƒdS(NR!iii(R%R@R(R((s+/usr/local/lib/python2.7/test/test_deque.pyt test_init|scCs|jtttdƒƒdS(NR!(R%R@thashR(R((s+/usr/local/lib/python2.7/test/test_deque.pyt test_hash€scCs±xªdD]¢}tt|ƒƒ}|j|j}}xQt|tƒD]@}||ƒ|ƒ}|||krB|j|||ƒqBqBW|jt|ƒtt|tƒƒqWdS(Niiiidiè(iiiidiè(RRRRRtRRR(RtsizeRRRRRR((s+/usr/local/lib/python2.7/test/test_deque.pyt#test_long_steadystate_queue_popleftƒs   cCsÃx¼dD]´}ttt|ƒƒƒ}|j|j}}xQt|tƒD]@}||ƒ|ƒ}|||krH|j|||ƒqHqHW|jttt|ƒƒƒtt|tƒƒqWdS(Niiiidiè(iiiidiè( RRRRRRtRRR(RRŠRRRRRR((s+/usr/local/lib/python2.7/test/test_deque.pyt$test_long_steadystate_queue_poprightŽs   cCs€tƒ}|j|j}}xttƒD]}||ƒq)Wx<ttƒD].}|ƒ}||krJ|j||ƒqJqJWdS(N(RRRRRtR(RRRRRRR((s+/usr/local/lib/python2.7/test/test_deque.pyttest_big_queue_popleft™s   cCs€tƒ}|j|j}}xttƒD]}||ƒq)Wx<ttƒD].}|ƒ}||krJ|j||ƒqJqJWdS(N(RRRRRtR(RRRRRRR((s+/usr/local/lib/python2.7/test/test_deque.pyttest_big_queue_popright¤s   cCsœtƒ}|j|j}}xttƒD]}||ƒq)WxBtttƒƒD].}|ƒ}||krP|j||ƒqPqPW|jt|ƒdƒdS(Ni(RRRRRtRRR(RRRRRRR((s+/usr/local/lib/python2.7/test/test_deque.pyttest_big_stack_right®s   cCsœtƒ}|j|j}}xttƒD]}||ƒq)WxBtttƒƒD].}|ƒ}||krP|j||ƒqPqPW|jt|ƒdƒdS(Ni(RRRRRtRRR(RRRRRRR((s+/usr/local/lib/python2.7/test/test_deque.pyttest_big_stack_left¹s   cCsZttdƒƒ}t|ƒ}|jt|ƒt|ƒƒ|jt|ƒt|ƒƒdS(NiÈ(RRtassertNotEqualtidRR(RRRP((s+/usr/local/lib/python2.7/test/test_deque.pyttest_roundtrip_iter_initÄs cCsttdƒƒ}xtttjdƒD]_}tj||ƒ}tj|ƒ}|jt|ƒt|ƒƒ|j t |ƒt |ƒƒq&WdS(NiÈi( RRRtpickletHIGHEST_PROTOCOLtdumpstloadsR‘R’RR(RRRRBRP((s+/usr/local/lib/python2.7/test/test_deque.pyt test_pickleÊs cCs‰dg}t|gƒ}tj|ƒ}|jt|ƒt|ƒƒd|d<|jt|ƒt|ƒƒ|jt|ƒt|ƒƒdS(Ni i i(RtcopytdeepcopyRRR‘R’(RtmutRRP((s+/usr/local/lib/python2.7/test/test_deque.pyt test_deepcopyÚs  cCs‰dg}t|gƒ}tj|ƒ}|jt|ƒt|ƒƒd|d<|jt|ƒt|ƒƒ|jt|ƒt|ƒƒdS(Ni i i(RR™RRR‘R’(RR›RRP((s+/usr/local/lib/python2.7/test/test_deque.pyt test_copyãs  cCsOxHdtdƒfD]4}|jttt|ƒƒƒtt|ƒƒƒqWdS(NRViÐ(RRRRR(RRB((s+/usr/local/lib/python2.7/test/test_deque.pyt test_reversedìscCsGddl}tƒ}x+tdƒD]}|jdƒ|jƒq"WdS(Niÿÿÿÿidi(tgcRRRtcollect(RRŸRR((s+/usr/local/lib/python2.7/test/test_deque.pyttest_gc_doesnt_blowupðs    cCsºdtfd„ƒY}xtdƒD]}|ƒ}tj|ƒ}|dkrbt|dgƒ}ntt|dgƒƒ}t|ƒ|_~~tj ƒ|j |ƒdkdƒq#WdS(NtCcBseZRS((R R (((s+/usr/local/lib/python2.7/test/test_deque.pyR¢ûsiiisCycle was not collected( tobjectRtweakreftrefRRR'RRRŸR R€R0(RR¢RtobjR¥t container((s+/usr/local/lib/python2.7/test/test_deque.pyttest_container_iteratorùs   cCsåd}tjdƒ}tjd|ƒ}|jtjtƒƒ|ƒ|j}|tƒ||ƒ|tdƒ||ƒ|td|dƒ||ƒ|td|ddƒ|d|ƒ|tdd|ƒ|d|ƒdS( Ni>t2P4PlPs2P%dPRHiii*i+( Rt calcobjsizetstructtcalcsizeRR£t __sizeof__Rt check_sizeof(RtBLOCKLENtbasesizet blocksizetcheck((s+/usr/local/lib/python2.7/test/test_deque.pyt test_sizeof s '()R R R R3R4R6RERTRXRYR[RcRdRjRnRvRxRyRzRƒR…R†R‡R‰R‹RŒRRŽRRR“R˜RœRRžR¡R¨RR®t cpython_onlyR³(((s+/usr/local/lib/python2.7/test/test_deque.pyRsJ  *  !      5            tTestVariousIteratorArgscBs#eZd„Zd„Zd„ZRS(cCsíxæddtdƒd tdddƒfD]½}x`tjtjtjtjtjtjfD]4}|j t t ||ƒƒƒt ||ƒƒƒqYW|j t t tj|ƒƒ|j t t tj|ƒƒ|j tt tj|ƒƒq(WdS( Nt123R7iètdog333333ó?iÐi˜i(R·g333333ó?(RRRtSequencetIterFunctIterGent IterFuncStopt itermultititerfuncRRRR%R@t IterNextOnlyt IterNoNexttZeroDivisionErrort IterGenExc(RRBtg((s+/usr/local/lib/python2.7/test/test_deque.pyttest_constructors. 2cCs9tdƒ}t|ƒ}|jƒ|jt|jƒdS(Ntabcdefg(RR'RR%Rtnext(RRR1((s+/usr/local/lib/python2.7/test/test_deque.pyttest_iter_with_altered_data$s   cCs9tƒ}t|ƒ}|jdƒ|jt|jƒdS(Ni (RR'RR%RRÅ(RRR1((s+/usr/local/lib/python2.7/test/test_deque.pyt!test_runtime_error_on_empty_deque*s   (R R RÃRÆRÇ(((s+/usr/local/lib/python2.7/test/test_deque.pyRµs tDequecBseZRS((R R (((s+/usr/local/lib/python2.7/test/test_deque.pyRÈ0stDequeWithBadItercBseZd„ZRS(cCs t‚dS(N(R@(R((s+/usr/local/lib/python2.7/test/test_deque.pyt__iter__4s(R R RÊ(((s+/usr/local/lib/python2.7/test/test_deque.pyRÉ3st TestSubclasscBs,eZd„Zd„Zd„Zd„ZRS(cCs–ttdƒƒ}|jtdƒƒx$tddƒD]}|j|ƒq5Wx*ttddƒƒD]}|j|ƒqbW|jt|ƒtddƒƒ|jt |ƒdƒgtdƒD]}|j ƒ^q»}|j|tddƒƒ|jt|ƒtddƒƒgtdƒD]}|j ƒ^q}|j ƒ|j|td dƒƒ|jt|ƒtdd ƒƒ|j ƒ|jt |ƒdƒdS( NiiÈii8ÿÿÿiiXiúi2i–(RÈRRRRRRRRRRRRR(RRRRR((s+/usr/local/lib/python2.7/test/test_deque.pyR 9s"%%  cCstdƒ}|jƒ}|jt|ƒt|ƒƒ|jt|ƒt|ƒƒt|ƒ}|jt|ƒt|ƒƒ|jt|ƒt|ƒƒtj|ƒ}tj|ƒ}|jt |ƒt |ƒƒ|jt|ƒt|ƒƒ|jt|ƒt|ƒƒtdddƒ}|jƒ}|jt|ƒt|ƒƒ|jt|ƒt|ƒƒt|ƒ}|jt|ƒt|ƒƒ|jt|ƒt|ƒƒtj|ƒ}tj|ƒ}|jt |ƒt |ƒƒ|jt|ƒt|ƒƒ|jt|ƒt|ƒƒdS(NR!RoR"i( RÈt__copy__RRMRR”R–R—R‘R’(RRRPRB((s+/usr/local/lib/python2.7/test/test_deque.pyttest_copy_pickleOs0     cCsTtdƒ}tj|ƒ}|jt|ƒt|ƒƒd}|jtt|ƒdS(Ntgallahad(RR¤tproxyRtstrR0R%tReferenceError(RRtp((s+/usr/local/lib/python2.7/test/test_deque.pyt test_weakref„s  cCsNdtfd„ƒY}|dddgƒ}|dddgƒ}||kdS( NtXcBseZd„ZRS(cSs tgƒS(N(R'(R((s+/usr/local/lib/python2.7/test/test_deque.pyRÊs(R R RÊ(((s+/usr/local/lib/python2.7/test/test_deque.pyRÔŒsiiiiii(R(RRÔtd1td2((s+/usr/local/lib/python2.7/test/test_deque.pyttest_strange_subclass‹s(R R R RÍRÓR×(((s+/usr/local/lib/python2.7/test/test_deque.pyRË7s  5 tSubclassWithKwargscBseZdd„ZRS(icCstj|ƒdS(N(RR(Rtnewarg((s+/usr/local/lib/python2.7/test/test_deque.pyR–s(R R R(((s+/usr/local/lib/python2.7/test/test_deque.pyRØ•stTestSubclassWithKwargscBseZd„ZRS(cCstddƒdS(NRÙi(RØ(R((s+/usr/local/lib/python2.7/test/test_deque.pyttest_subclass_with_kwargsšs(R R RÛ(((s+/usr/local/lib/python2.7/test/test_deque.pyRÚ™ss‘ 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Éddl}ttttf}tj|Œ|r¥t|dƒr¥ddl}dgd}xAt t |ƒƒD]-}tj|Œ|j ƒ|j ƒ||(((s+/usr/local/lib/python2.7/test/test_deque.pyts2        ÿü^i