ó {G_Tc@s’ddlZddlmZddlTddlZddlmZddlmZddl Z ddl Z ddl Z ddl Z ddl Z ddlmZejZe dZd„Zd „Zd „Zd „Zd „Zd fd„ƒYZd„Zd„Zd„Zdejfd„ƒYZdejfd„ƒYZdejfd„ƒYZd„Z dfd„ƒYZ!dfd„ƒYZ"dfd„ƒYZ#dfd „ƒYZ$d!fd"„ƒYZ%d#fd$„ƒYZ&d%fd&„ƒYZ'd'„Z(d(ejfd)„ƒYZ)d*ejfd+„ƒYZ*d,ejfd-„ƒYZ+d.ejfd/„ƒYZ,d0Z-ie-d16Z.e/d2„Z0e1d3krŽe0d4e2ƒndS(5iÿÿÿÿN(t test_support(t*(tDecimal(tFraction(treduceicCsd|S(sTest function of one argumenti((tx((s//usr/local/lib/python2.7/test/test_itertools.pytoneargscGs t‚dS(s"Test function that raises an errorN(t ValueError(targs((s//usr/local/lib/python2.7/test/test_itertools.pyterrfuncsccsxdD] }|VqWdS(sNon-restartable source sequenceiiiN(iii((ti((s//usr/local/lib/python2.7/test/test_itertools.pytgen3s cCs|ddkS(sTest predicateii((R((s//usr/local/lib/python2.7/test/test_itertools.pytisEvenscCs|ddkS(sTest predicateii((R((s//usr/local/lib/python2.7/test/test_itertools.pytisOdd!stStopNowcBs eZdZd„Zd„ZRS(s"Class emulating an empty iterable.cCs|S(N((tself((s//usr/local/lib/python2.7/test/test_itertools.pyt__iter__'scCs t‚dS(N(t StopIteration(R((s//usr/local/lib/python2.7/test/test_itertools.pytnext)s(t__name__t __module__t__doc__RR(((s//usr/local/lib/python2.7/test/test_itertools.pyR%s cCstt||ƒƒS(sHConvenience function for partially consuming a long of infinite iterable(tlisttislice(tntseq((s//usr/local/lib/python2.7/test/test_itertools.pyttake,scCsttj|dƒS(Ni(Rtoperatortmul(titerable((s//usr/local/lib/python2.7/test/test_itertools.pytprod0scCsttd|dƒƒS(t Factoriali(Rtrange(R((s//usr/local/lib/python2.7/test/test_itertools.pytfact3st TestBasicOpscBs‹eZd„Zd„Zd„Zejdƒd„ƒZd„Zejdƒd„ƒZ d„Z ejdƒd„ƒZ d „Z d „Z d „Zd „Zd „Zd„Zd„Zd„Zd„Zejdƒd„ƒZd„Zejdƒd„ƒZd„Zd„Zejdƒd„ƒZd„Zd„Zd„Zd„Zd„Zd„Z d„Z!d„Z"d „Z#d!„Z$RS("cCsËd„}x»t|fD]­}|jt|ddƒƒtdƒƒ|jt|dƒƒtdƒƒ|jt|dƒƒgƒ|jtd|ddƒƒtdƒƒ|jtt|dd ƒƒqWdS( Ncws+x$|D]}x|D] }|VqWqWdS(sPure python version in the docsN((t iterablestittelement((s//usr/local/lib/python2.7/test/test_itertools.pytchain2:s  tabctdeftabcdeftitabcdii(tchaint assertEqualRRt assertRaisest TypeError(RR&tc((s//usr/local/lib/python2.7/test/test_itertools.pyt test_chain8s %"(cCsÉ|jttjddgƒƒtdƒƒ|jttjdgƒƒtdƒƒ|jttjdgƒƒgƒ|jtdtjddgƒƒtdƒƒ|jtttjddgƒƒdS( NR'R(R)R*iR+ii(R-RR,t from_iterableRR.R/(R((s//usr/local/lib/python2.7/test/test_itertools.pyttest_chain_from_iterableGs +(".c sÄ|jttdƒ|jttdddƒ|jttdƒ|jttddƒ|jttddƒƒgƒ|jtttdƒdƒƒddddgƒd „}d „}d „}xýtd ƒD]ï}gt|ƒD]}d |d^qà‰x¿t|dƒD]­}ttˆ|ƒƒ}|jt|ƒ||krGdn!t |ƒt |ƒt ||ƒƒ|jt|ƒtt |ƒƒƒ|j|t |ƒƒx´|D]¬}|jt|ƒ|ƒ|jtt |ƒƒ|ƒ|jt|ƒt |ƒƒ|j t ‡fd†|Dƒƒƒ|jt|ƒgˆD]} | |kr8| ^q8ƒq«W|j|t|ˆ|ƒƒƒ|j|t|ˆ|ƒƒƒ|j|t|ˆ|ƒƒƒq WqÍWdS(NR'iiiþÿÿÿi iiic3sõt|ƒ‰tˆƒ}||kr(dSt|ƒ}t‡fd†|DƒƒVxŸx:tt|ƒƒD]"}|||||krePqeqeWdS||cd7^sic3s|]}ˆ|VqdS(N((R4R (R5(s//usr/local/lib/python2.7/test/test_itertools.pys hs(ttupletlenR treversed(RtrRtindicesR tj((R5s//usr/local/lib/python2.7/test/test_itertools.pyt combinations1Ws    c3srt|ƒ‰tˆƒ}xStt|ƒ|ƒD]<}t|ƒt|ƒkr.t‡fd†|DƒƒVq.q.WdS(s%Pure python version shown in the docsc3s|]}ˆ|VqdS(N((R4R (R5(s//usr/local/lib/python2.7/test/test_itertools.pys psN(R6R7t permutationsR tsortedR(RR9RR:((R5s//usr/local/lib/python2.7/test/test_itertools.pyt combinations2js   c3srt|ƒ‰tˆƒ}xStt|ƒ|ƒD]<}tt|ƒƒ|kr.t‡fd†|DƒƒVq.q.WdS(sPure python version from cwr()c3s|]}ˆ|VqdS(N((R4R (R5(s//usr/local/lib/python2.7/test/test_itertools.pys xsN(R6R7tcombinations_with_replacementR tset(RR9RR:((R5s//usr/local/lib/python2.7/test/test_itertools.pyt combinations3rs   iii c3s|]}|ˆkVqdS(N((R4te(tvalues(s//usr/local/lib/python2.7/test/test_itertools.pys …s(iii(iii(iii(iii(R.R/t combinationstNoneRR-RR R7R!RAR>t assertTruetall( RR<R?RBRRR9tresultR0RC((RDs//usr/local/lib/python2.7/test/test_itertools.pyttest_combinationsNs6   'F" #*s"tuple reuse is specific to CPythonc Csf|jtttttddƒƒƒƒdƒ|jttttttddƒƒƒƒƒdƒdS(Ntabcdeii(R-R7RAtmaptidREtassertNotEqualR(R((s//usr/local/lib/python2.7/test/test_itertools.pyttest_combinations_tuple_reuseŒs.c sét}|jt|dƒ|jt|dddƒ|jt|dƒ|jt|ddƒ|jt|ddƒƒddddddgƒd „}d „}d „}x;td ƒD]-}gt|ƒD]}d |d^qljxýt|dƒD]ë}t|ˆ|ƒƒ}|jt|ƒ|||ƒƒ|jt|ƒtt |ƒƒƒ|j|t |ƒƒtt ˆ|ƒƒ} |dks‘|dkr¤|j|| ƒn|j t |ƒt | ƒkƒxÙ|D]Ñ} |jt| ƒ|ƒgt | ƒD]\} } | ^qó} |jt| ƒtt | ƒƒƒ|jt| ƒt | ƒƒ|j t‡fd†| Dƒƒƒ|j| gˆD]}|| kr||^q|ƒqÊW|j|t|ˆ|ƒƒƒ|j|t|ˆ|ƒƒƒqòWq´WdS(NR'iiiþÿÿÿtABCtAtBtCc3sÌt|ƒ‰tˆƒ}| r)|r)dSdg|}t‡fd†|DƒƒVxtx6tt|ƒƒD]}|||dkrgPqgqgWdS||dg||||)t‡fd†|DƒƒVqTdS(s%Pure python version shown in the docsNic3s|]}ˆ|VqdS(N((R4R (R5(s//usr/local/lib/python2.7/test/test_itertools.pys ¢sic3s|]}ˆ|VqdS(N((R4R (R5(s//usr/local/lib/python2.7/test/test_itertools.pys ªs(R6R7R8R (RR9RR:R ((R5s//usr/local/lib/python2.7/test/test_itertools.pytcwr1šs    c3sut|ƒ‰tˆƒ}xVtt|ƒd|ƒD]<}t|ƒt|ƒkr1t‡fd†|DƒƒVq1q1WdS(s%Pure python version shown in the docstrepeatc3s|]}ˆ|VqdS(N((R4R (R5(s//usr/local/lib/python2.7/test/test_itertools.pys ²sN(R6R7tproductR R>R(RR9RR:((R5s//usr/local/lib/python2.7/test/test_itertools.pytcwr2¬s   cSs>|s|rdSdSt||dƒt|ƒt|dƒS(Nii(R!(RR9((s//usr/local/lib/python2.7/test/test_itertools.pytnumcombs´siii ic3s|]}|ˆkVqdS(N((R4RC(RD(s//usr/local/lib/python2.7/test/test_itertools.pys Ís(RQRQ(RQRR(RQRS(RRRR(RRRS(RSRS(R@R.R/RFRR-RR R7RAR>RERGtgroupbyRH(RtcwrRTRWRXRRR9RIt regular_combsR0tktvtnorunsRC((RDs//usr/local/lib/python2.7/test/test_itertools.pyt"test_combinations_with_replacement‘s>   '" %"# *c Cslt}|jtttt|ddƒƒƒƒdƒ|jttttt|ddƒƒƒƒƒdƒdS(NRKii(R@R-R7RARLRMRNR(RRZ((s//usr/local/lib/python2.7/test/test_itertools.pyt.test_combinations_with_replacement_tuple_reuseÓs.c sª|jttƒ|jttdddƒ|jttdƒ|jttddƒ|jttddƒƒgƒ|jttddƒ|jtttdƒdƒƒddddddgƒdd „}dd „}xÍtd ƒD]¿}gt|ƒD]}d |d ^qö‰xt|dƒD]}}ttˆ|ƒƒ}|jt|ƒ||kr]dnt |ƒt ||ƒƒ|jt|ƒtt |ƒƒƒ|j|t |ƒƒxc|D][}|jt|ƒ|ƒ|jtt |ƒƒ|ƒ|j t ‡fd†|Dƒƒƒq·W|j|t|ˆ|ƒƒƒ|j|t|ˆ|ƒƒƒ||kr!|j|ttˆdƒƒƒ|j|ttˆƒƒƒq!q!WqãWdS(NR'iiiþÿÿÿi tsiic3sNt|ƒ‰tˆƒ}|dkr*|n|}||kr@dSt|ƒ}t|||dƒ}t‡fd†|| DƒƒVxÆ|rIx¹tt|ƒƒD]¡}||cd8<||dkrõ||d|||d!||)||||ìsiic3s|]}ˆ|VqdS(N((R4R (R5(s//usr/local/lib/python2.7/test/test_itertools.pys ös(R6R7RFR R8(RR9RR:tcyclesR R;((R5s//usr/local/lib/python2.7/test/test_itertools.pyt permutations1ãs&     ! c3st|ƒ‰tˆƒ}|dkr*|n|}xVtt|ƒd|ƒD]<}tt|ƒƒ|krIt‡fd†|DƒƒVqIqIWdS(s%Pure python version shown in the docsRUc3s|]}ˆ|VqdS(N((R4R (R5(s//usr/local/lib/python2.7/test/test_itertools.pys sN(R6R7RFRVR RA(RR9RR:((R5s//usr/local/lib/python2.7/test/test_itertools.pyt permutations2ûs   iii c3s|]}|ˆkVqdS(N((R4RC(RD(s//usr/local/lib/python2.7/test/test_itertools.pys s(ii(ii(ii(ii(ii(ii(R.R/R=RFRR-RR R7R!RAR>RGRH(RRcRdRRR9RItp((RDs//usr/local/lib/python2.7/test/test_itertools.pyttest_permutationsÙs4  '<" ' c Csf|jtttttddƒƒƒƒdƒ|jttttttddƒƒƒƒƒdƒdS(NRKii(R-R7RARLRMR=RNR(R((s//usr/local/lib/python2.7/test/test_itertools.pyttest_permutations_tuple_reuses.c Cs>x7tdƒD])}d| }xtdƒD]}tt|d|ƒƒ}tt||ƒƒ}tt||ƒƒ}tt||ƒƒ}|jt|ƒ||ƒ|jt|ƒ|rât||dƒt|ƒt|dƒn| ƒ|jt|ƒ||kr dnt|ƒt||ƒƒ|jt|ƒ||krGdn!t|ƒt|ƒt||ƒƒ|j|t t |ƒƒƒ|j|t t |ƒƒƒ|j|t t |ƒƒƒ|j|t t |ƒƒƒ|j|g|D]$}t |ƒt|ƒkrì|^qìƒ|j|g|D]$}tt |ƒƒ|kr'|^q'ƒ|j|g|D]$}t |ƒt|ƒkrb|^qbƒ|j|g|D]$}tt |ƒƒ|kr|^qƒ|j|t t |ƒj |ƒƒ|j|t t |ƒj |ƒƒ|j|t t |ƒt |ƒ@ƒƒq*Wq WdS(NitABCDEFGiRUii( R RRVR@R=RER-R7R!R>RAtfiltert __contains__( RRRaR9RRZtpermtcombtt((s//usr/local/lib/python2.7/test/test_itertools.pyttest_combinatoricss, I<F;;;;""c Cs|jttdddddddddgƒƒtdƒƒ|jttdddddddgƒƒtdƒƒ|jttdddddddgƒƒtdƒƒ|jttdddddddgƒƒtdƒƒ|jttddddgƒƒtdƒƒ|jttd ddddddgƒƒtd ƒƒd }tjttd ƒ|ƒƒ}tjtdƒƒ}|jtt||ƒƒdd dg|ƒ|jttdtd ƒƒ|jtttd ƒdƒ|jtttd ƒƒ|jtttd ƒdƒdS(NtdatatABCDEFt selectorsiitACEFR*tACRPtBCi'iii(ii( R-RtcompressR,R2RUR R.R/RF(RRRoRq((s//usr/local/lib/python2.7/test/test_itertools.pyt test_compress;s=777.7,c CsK|jtdtƒƒdddgƒ|jtdtdƒƒdddgƒ|jtdtdtdƒƒƒd d!gƒ|jtdtdtd ƒƒƒd"d#gƒ|jtdtdtd ƒƒƒd$d%gƒ|jttddd ƒ|jttdƒ|jttttd ƒdƒƒt td td ƒƒ|jtttt d ƒdƒƒt t d t d ƒƒtdƒ}|jt |ƒdƒ|j ƒ|jt |ƒdƒtdƒ}|jt |ƒdƒ|j ƒ|jt tdƒƒdƒ|j|j ƒdƒxt j d t j d dd ddt j d t j d fD]O}t t|ƒƒjddƒ}dj|ƒjddƒ}|j||ƒqWWxšd dt j d t j d fD]x}t|ƒ}|jt tj|ƒƒ|ƒ|jt tj|ƒƒ|ƒ|jt tjtj|ƒƒƒ|ƒqËWdS(&NR'taitbiR0iiiiiÿÿÿÿiýÿÿÿiþÿÿÿi scount(3)scount(4)i÷ÿÿÿs count(-9)g€$@s count(10.25)iøÿÿÿiöÿÿÿtLR*s count(%r)(Rwi(Rxi(R0i(Rwi(Rxi(R0i(Rwi(Rxi(Rwiÿÿÿÿ(Rxi(Rwiýÿÿÿ(Rxiþÿÿÿ(R-tziptcountRR.R/RRtmaxsizeR treprRtsystmaxinttreplacet__mod__tcopytdeepcopytpickletloadstdumps(RR0R tr1tr2tvalue((s//usr/local/lib/python2.7/test/test_itertools.pyt test_countKs6%(...:=    C' c Cs²|jtdtddƒƒd5d6d7gƒ|jtdtd dd dƒƒd8d9d:gƒ|jtdtd d ƒƒd;d<d=gƒ|jtdtdd ƒƒd>d?d@gƒ|jtdtddƒƒdAdBdCgƒ|jtdttddƒƒtdttdtddƒƒƒ|jtdtt ddƒƒtdtt dt ddƒƒƒ|jtdtddDƒƒddEdFgƒ|jtdttdƒtdƒƒƒtdƒtdƒtdƒgƒ|jtdttddƒtddƒƒƒtddƒtddƒtddƒgƒ|jttdtdd ƒƒƒtdd!d"gƒƒtddƒ}|jt|ƒd#ƒ|j ƒ|jt|ƒd$ƒtd%d ƒ}|jt|ƒd&ƒ|j ƒ|jt|ƒd&ƒtd%d'ƒ}|jt|ƒd(ƒ|j ƒ|jt|ƒd)ƒ|jt|ƒd)ƒ|jttd*d+ƒƒd,ƒ|jttd*dƒƒd-ƒ|jttd*d.ƒƒd/ƒxt j dt j dd0d d dt j dt j dfD]Â}x¹t j dt j dd0d d ddt j dt j df D]x}tt||ƒƒj d1d2ƒ}|dkrzd3|j d1d2ƒ}nd4||fj d1d2ƒ}|j||ƒq.WqèWdS(GNR'iiRwRxiR0itstarttstepiÿÿÿÿiiþÿÿÿiiiiidg @y@g@g!@y @s1.1s.1s1.2s1.3iiii g@g)@g.@s count(3, 5)s count(8, 5)i÷ÿÿÿs count(-9, 0)iýÿÿÿs count(-9, -3)scount(-12, -3)g%@gô?scount(10.5, 1.25)s count(10.5)gð?scount(10.5, 1.0)iöÿÿÿRyR*s count(%r)s count(%r, %r)(Rwi(Rxi(R0i(Rwi(Rxi(R0i(Rwi(Rxiÿÿÿÿ(R0iþÿÿÿ(Rwi(Rxi(R0i(Rwi(Rxi(R0iy @Ày@Ày!@ À( R-RzR{RR|R RRR}RR~RR€(RR0R R;R‡Rˆ((s//usr/local/lib/python2.7/test/test_itertools.pyttest_count_with_strideksL+!++CF+'"-+7   CF! c Cs®|jtdtdƒƒtdƒƒ|jttdƒƒgƒ|jttƒ|jttdƒ|jttttƒƒdƒƒddddddddddg ƒdS( Ni R't abcabcabcaR*iiii(R-RtcycleRR.R/RR (R((s//usr/local/lib/python2.7/test/test_itertools.pyt test_cycle•s %c sÂ|jgttgƒƒƒ|jgttgdtƒƒƒ|jtttdgƒƒ|jttdƒ|jttdd„dƒd(d)d*d+d,d-d.d/g}g}xRt|d„ƒD]>\}}x/|D]'}|j||dƒ|j|ƒqÓWqÀW|j||ƒg}x‰t|d„ƒD]u\}}xft|d„ƒD]R\}}xC|D];}|j||dƒ|j||dƒ|j|ƒq]WqJWq+W|j||ƒgt|d„ƒD]\}}|^qÇ}tg|D]} | d^qéƒ} |jt|ƒ| ƒ|jt |ƒt | ƒƒd}gtt |ƒƒD]\}}|^qM} |j| dddddgƒgtt |ƒƒD]*\}}tt |d dƒƒr—|^q—} |j| dddgƒgtt |ƒƒD]$\}}t t|ƒƒ|f^qó} |j| d0d1d2d3d4gƒt gtt |ƒƒD]$\}}t t|ƒƒ|f^qRdt ƒd } |j| d5d6d7gƒd t fd!„ƒY‰d‡fd"†} dtd#„} |jˆ| | dƒƒ|jˆ| | d ƒƒd$d8‡fd%†ƒY} | ƒ| ƒdg}|jˆ| |d&tƒ|jˆ| |ƒ‡‡fd'†‰dˆ_|jˆ| dgˆƒd ˆ_|jˆ| ddgˆƒdS(9NtkeyR'cSs|S(N((R((s//usr/local/lib/python2.7/test/test_itertools.pyt¢si iii ii ii iiiiiiiicSs|dS(Ni((R9((s//usr/local/lib/python2.7/test/test_itertools.pyR’¨scSs|dS(Ni((R9((s//usr/local/lib/python2.7/test/test_itertools.pyR’°scSs|dS(Ni((R9((s//usr/local/lib/python2.7/test/test_itertools.pyR’±scSs|dS(Ni((R9((s//usr/local/lib/python2.7/test/test_itertools.pyR’¹st abracadabraRwRxR0tdR9itreverset ExpectedErrorcBseZRS((RR(((s//usr/local/lib/python2.7/test/test_itertools.pyR–Îsc3s&xt|ƒD] }dVq Wˆ‚dS(Ntyo(R (RR (R–(s//usr/local/lib/python2.7/test/test_itertools.pyt delayed_raiseÐs cSs,gt||ƒD]\}}||ƒ^qS(N(RY(RtkeyptfuncR\tg((s//usr/local/lib/python2.7/test/test_itertools.pytgulpÔstDummyCmpcseZ‡fd†ZRS(cs ˆ‚dS(N((Rtdst(R–(s//usr/local/lib/python2.7/test/test_itertools.pyt__cmp__Þs(RRRŸ((R–(s//usr/local/lib/python2.7/test/test_itertools.pyRÝsRšcs,ˆjdkr"ˆjd8_|Sˆ‚dS(Nii(tskip(tobj(R–tkeyfunc(s//usr/local/lib/python2.7/test/test_itertools.pyR¢ès(ii i(ii i(ii i(ii i(iii(iii(iii(iii(iRw(iRx(iR0(iR”(iR9(iRw(iR9(iRx((R-RRYRMR.R/RFtappendRAR7R>RtTruet ExceptionR (RRatdupR\R›telemtiktigtkeysR9t expectedkeysR˜RœR((R–R¢s//usr/local/lib/python2.7/test/test_itertools.pyt test_groupbyœs`"  +#+C=M  c CsQ|jttttdƒƒƒdddgƒ|jttddddddgƒƒddgƒ|jtttdddddgƒƒddgƒ|jtdtttƒƒƒddddgƒ|j t tƒ|j t td„ƒ|j t td„tdƒdƒ|j t ttd ƒ|j t ttdƒtdƒƒj ƒdS( NiiiiicSs|S(N((R((s//usr/local/lib/python2.7/test/test_itertools.pyR’ûscSs|S(N((R((s//usr/local/lib/python2.7/test/test_itertools.pyR’üsii( R-RtifilterR R RFtboolRR{R.R/R(R((s//usr/local/lib/python2.7/test/test_itertools.pyt test_ifilterõs.441"c CsW|jttttdƒƒƒdddgƒ|jttddddddgƒƒdddgƒ|jtttdddddgƒƒdddgƒ|jtdtttƒƒƒddddgƒ|j t tƒ|j t td „ƒ|j t td „tdƒdƒ|j t ttdƒ|j t ttdƒtdƒƒj ƒdS( NiiiiiiiicSs|S(N((R((s//usr/local/lib/python2.7/test/test_itertools.pyR’scSs|S(N((R((s//usr/local/lib/python2.7/test/test_itertools.pyR’s( R-Rt ifilterfalseR R RFR®RR{R.R/R(R((s//usr/local/lib/python2.7/test/test_itertools.pyttest_ifilterfalses.771"cCsÍgtdtƒƒD]\}}||f^q}|j|d d dgƒ|jttdtdƒƒƒtdtdƒƒƒ|jttd td ƒƒƒtd td ƒƒƒ|jtd td tƒƒƒtd td ƒƒƒ|jttd ƒƒtd ƒƒ|jttƒƒtƒƒ|jttd ƒ|jtttd ƒd ƒ|jgtdd ƒD]}t t|ƒƒ^qitdd ƒƒ|jgtdd ƒD] }|^qªtdd ƒƒdS(NR'RwiRxiR0iiR)iR((Rwi(Rxi(R0i( tizipR{R-RR RzRR.R/R6(RRtytanstpair((s//usr/local/lib/python2.7/test/test_itertools.pyt test_izip s1444"1%cCs{tttddƒƒ}|jt|ƒt|ƒƒttttddƒƒƒ}|jttj |ƒƒt|ƒƒdS(NR'R(( RLRMR²R-tmintmaxRR7tdicttfromkeys(Rtids((s//usr/local/lib/python2.7/test/test_itertools.pyttest_izip_tuple_reusesc Cs|x®dtdƒgtdƒdgtdƒtddƒtddƒgtdƒtdƒtddƒtd ƒtd ƒgtdƒtdƒtddƒtd ƒtd ƒtdƒggD]õ}gtttt|ƒƒƒD]A}tg|D](}|t|ƒkr ||nd^qêƒ^qÚ}|jtt|Œƒ|ƒ|jtt|iŽƒ|ƒg|D]}td „|Dƒƒ^qc}|jtt|t d d ƒŽƒ|ƒq¸W|jt dtdt ƒƒƒt dtdƒƒƒ|jttƒƒt ƒƒ|jttgƒƒt gƒƒ|jttdƒƒt dƒƒ|jttddiƒt tdƒdgdƒƒ|j ttdƒ|j tttdƒdƒxSddgD]E}yt|tƒtƒƒWntk rìq¹X|jd|ƒq¹W|jgtddƒD]}tt|ƒƒ^qt ddƒƒ|jgtddƒD] }|^qYt ddƒƒdS(NR'iièiÐi4i¸ iê ii°iÜcss'|]}|dkrdp|VqdS(tXN(RF(R4RC((s//usr/local/lib/python2.7/test/test_itertools.pys /st fillvalueR½iR)tdefgsizip_longest('abc', fv=1)s4izip_longest('abc', fillvalue=1, bogus_keyword=None)sDid not raise Type in: R((R R¸RLR7R6RFR-Rt izip_longestR¹RR{RzR.R/tevaltglobalstlocalstfail(RRR targttargetRmtstmtRµ((s//usr/local/lib/python2.7/test/test_itertools.pyttest_iziplongest!s@$3F`),4""  1%cCs{tttddƒƒ}|jt|ƒt|ƒƒttttddƒƒƒ}|jttj |ƒƒt|ƒƒdS(NR'R(( RLRMRÀR-R·R¸RR7R¹Rº(RR»((s//usr/local/lib/python2.7/test/test_itertools.pyttest_izip_longest_tuple_reuseMscCsúdtfd„ƒY}|ddtƒ}|ddtƒ}d„}|j|||ƒd d d d gƒ|ddtƒ}|ddtƒ}t||d dƒ}|jt|ƒdƒ|jt|ƒdƒ|jt|ƒdƒ|jtt|ƒdS(NtRepeatercBs#eZd„Zd„Zd„ZRS(cSs%||_t|ƒ|_||_dS(N(totintRmRC(RRËRmRC((s//usr/local/lib/python2.7/test/test_itertools.pyt__init__Xs cSs|S(N((R((s//usr/local/lib/python2.7/test/test_itertools.pyR\scSs2|jdkr%|jd8_|jS|j‚dS(Nii(RmRËRC(R((s//usr/local/lib/python2.7/test/test_itertools.pyR^s(RRRÍRR(((s//usr/local/lib/python2.7/test/test_itertools.pyRÊVs  iiiicSsdg}xWt||ddƒD]@\}}tjdƒ||fGHWdQX|j||fƒqW|S(NR¾itstdout(RÀRtcaptured_outputR£(R‡RˆRIR R;((s//usr/local/lib/python2.7/test/test_itertools.pytrunis "iR¾(ii(ii(ii(ii(ii(ii(ii(tobjectRR-t RuntimeErrorRÀRR.(RRÊR‡RˆRÐR$((s//usr/local/lib/python2.7/test/test_itertools.pyt test_bug_7244Ts %c Csôx6gdgfdgddgftdƒtdƒgddddddgftdƒtdƒtdƒggftdƒtdƒtdƒggftdƒtdƒtdƒggfgD]w\}}|jtt|Œƒ|ƒxLtdƒD]>}|jtt||Œƒtt|td |ƒŽƒƒqóWq¾W|jttttd ƒgd Œƒƒdƒ|jtttd ƒdƒd „}d „}dddt dƒt dƒtddddddƒt dƒtdƒt tdƒƒg }xýtdƒD]ï}gtt j dƒƒD]}t j|ƒ^q}ttt|ƒƒ} |jttt|Œƒƒ| ƒ|jtt|Œƒt||Œƒƒ|jtt|Œƒt||Œƒƒtt|ƒ}|jttt|Œƒƒ| ƒqýWdS( NtabRwRxiiiiiRUiics+tt|ƒ|jddƒ}t|ƒ}|dkr@dVdStd„|DƒƒrZdSdg|}td„t||ƒDƒƒVxŸx™tt|ƒƒD]}||t||ƒdkrÅq›n||cd7’scss|]\}}||VqdS(N((R4R5R ((s//usr/local/lib/python2.7/test/test_itertools.pys •scss|]\}}||VqdS(N((R4R5R ((s//usr/local/lib/python2.7/test/test_itertools.pys s((RLR6tgetR7tanyRzR8R (RtkwdstpoolsRR:R R;((s//usr/local/lib/python2.7/test/test_itertools.pytproduct1Œs&   cs†tt|ƒ|jddƒ}gg}x;|D]3}g|D] }|D]}||g^qFq<}q/Wx|D]}t|ƒVqmWdS(s Pure python version used in docsRUiN(RLR6RÕ(RR×RØRIR5RR³R((s//usr/local/lib/python2.7/test/test_itertools.pytproduct2¢s   1 R*R'R0tabcdefgi i idi((Rw(Rx(ii(ii(ii(ii(ii(iii‘Ë(R R-RRVR¹R7R.R/RFtxrangeRAR6trandomt randrangetchoiceRRLtiter( RRRIR9RÙRÚtargtypesR R;t expected_len((s//usr/local/lib/python2.7/test/test_itertools.pyt test_product|s2 -$$4'/  3'1"((c Csf|jtttttddƒƒƒƒdƒ|jttttttddƒƒƒƒƒdƒdS(NR'R(i(R-R7RARLRMRVRNR(R((s//usr/local/lib/python2.7/test/test_itertools.pyttest_product_tuple_reuse¶s.cCs|jttddddƒƒdddgƒ|jttddddƒƒgƒ|jttddddƒƒgƒ|jttddddƒƒgƒ|jttdƒtdƒƒdddgƒ|jttddƒƒdddgƒ|jtdtdƒƒdddgƒ|jttddƒƒgƒ|jttdd ƒƒgƒ|jttƒ|jttddd ƒ|jttddƒtdƒ}|jt |ƒd ƒtddƒ}|jt |ƒdƒt|ƒ|jt |ƒdƒdS(NRÑRwttimesiiiÿÿÿÿiþÿÿÿiiiýÿÿÿiysrepeat((1+0j))isrepeat((1+0j), 5)srepeat((1+0j), 0)(iRw(iRw(iRwyð?yð?( R-RRURzRÜRR.R/RFR}(RR9((s//usr/local/lib/python2.7/test/test_itertools.pyt test_repeat»s&.%%%((  cCs†|jttddƒƒdƒ|jttddƒƒdƒ|jttdddƒƒdƒ|jttdddƒƒdƒdS(NRwiÿÿÿÿsrepeat('a', 0)iþÿÿÿRå(R-R}RU(R((s//usr/local/lib/python2.7/test/test_itertools.pyttest_repeat_with_negative_timesÐs"cCs‚|jtttjtdƒtddƒƒƒd ddgƒ|jttddtdƒƒƒdddgƒ|jttddtƒƒƒdddgƒ|jtdtddtƒƒƒddgƒ|jtttjgƒƒgƒ|j t tƒ|j t ttj ƒ|j t td tdƒƒj ƒ|j t ttd gdgƒj ƒ|j t ttd gdgƒj ƒdS(NiiiiiR'iRwRxR0i iiii(Rwi(Rxi(R0i(Rwi(Rxi(R0i(Rwi(Rxi(R-RtimapRtpowR RFR{RR.R/tnegRRR R(R((s//usr/local/lib/python2.7/test/test_itertools.pyt test_imapÖs-!! ""%c Cs‹|jtttjttdƒtddƒƒƒƒd d d gƒ|jtdttjtt ƒt dƒƒƒƒd ddgƒ|jtttjgƒƒgƒ|jtttjt ddgƒgƒƒdgƒ|j t tttjdgƒƒ|j t tƒ|j t ttjdgdƒ|j t td dgƒjƒ|j tttdgƒjƒ|j t ttdgƒjƒdS(Niiiiiiitextrai iiiiiii(ii(ii(ii(ii(R-RtstarmapRRéRzR RR²R{RàR.R/RFRRR R(R((s//usr/local/lib/python2.7/test/test_itertools.pyt test_starmapæs30"4"cCs%xHdddddgD]1}|jtttdƒ|Œƒt|ŒƒqWxZddfddfddfgD]7\}}|jtttdƒ|Œƒt|ŒƒqmW|jtttdƒdƒƒtdƒƒ|jtttdƒddƒƒtdƒƒ|jtttdƒdddƒƒtdƒƒ|jtttdƒddƒƒtddƒƒ|jtttdƒdddƒƒtdddƒƒttdƒƒ}|jtt|dƒƒtdƒƒ|jt|ƒtddƒƒ|jtttdƒƒ|jtttdƒddddƒ|jt ttdƒd ddƒ|jt ttdƒdd d ƒ|jt ttdƒddd ƒ|jt ttdƒddd ƒ|jt ttdƒd ƒ|jt ttdƒd dƒ|jt ttdƒdd ƒ|jt ttdƒd ddƒ|jt ttdƒdd dƒ|jt ttt ƒddt ƒƒƒdƒt ƒ}|jtt|ddd ƒƒdgƒ|jt |ƒdƒd„dDƒ}tj|ƒ}t|dƒ}|j|ƒƒt|ƒ|j|ƒƒdS(Ni iiidiniiiiûÿÿÿiÿÿÿÿiRwi2css|] }|VqdS(N((R4R((s//usr/local/lib/python2.7/test/test_itertools.pys &s(i ii(i ii(i i(i i(i(i ini(i idi(i in(i id(in(id(ii(R-RRRÜR RFRàR.R/RR7R{R|RtweakreftreftassertIsNotNonet assertIsNone(RRttgtargsR$R0twr((s//usr/local/lib/python2.7/test/test_itertools.pyt test_isliceôsR /  /+.117%%"""""". ( cCsHddddddddg}d „}|jtt||ƒƒdddgƒ|jtt|gƒƒgƒ|jttƒ|jtttjƒ|jtttjd gd ƒ|jttd dgƒjƒ|jttt dgƒjƒtt dddd d d gƒ}|jt|ƒdddgƒ|jt |jƒdS(NiiiiiiiicSs |dkS(Ni ((R((s//usr/local/lib/python2.7/test/test_itertools.pyR’/sRìi i(ii(ii(ii( R-Rt takewhileR.R/RRéRRR R®R(RRotundertenRm((s//usr/local/lib/python2.7/test/test_itertools.pyttest_takewhile-s (!cCsûddddddddg}d „}|jtt||ƒƒdddddgƒ|jtt|gƒƒgƒ|jttƒ|jtttjƒ|jtttjd gd ƒ|jttd d gƒjƒ|jttt dgƒjƒdS(NiiiiiiiicSs |dkS(Ni ((R((s//usr/local/lib/python2.7/test/test_itertools.pyR’=sRìi (ii(ii(ii( R-Rt dropwhileR.R/RRéRRR (RRoR÷((s//usr/local/lib/python2.7/test/test_itertools.pyttest_dropwhile;s .cCsªd}d„}tgƒ\}}|jt|ƒgƒ|jt|ƒgƒt||ƒƒ\}}|jt||ƒtt|ƒt|ƒƒƒt||ƒƒ\}}|jt|ƒt|ƒƒ|jt|ƒt|ƒƒt||ƒƒ\}}x*tdƒD]}|j|jƒ|ƒqW~|jt|ƒt|ƒƒt||ƒƒ\}}x*tdƒD]}|j|jƒ|ƒqlW~|jt|ƒtd|ƒƒx½tdƒD]¯}dg|dg|}tj|ƒggf}t||ƒƒ} x/|D]'}| |jƒ} ||j | ƒq W|j|dt|ƒƒ|j|dt|ƒƒq»W|j t tƒ|j t tdƒ|j t tddgd ƒ|j t tddgdd ƒtd ƒ\}}t |ƒd ƒ} |jt| ƒtd ƒƒttd ƒdƒ\}}} x*tdƒD]}|j|jƒ|ƒq7W|jt|ƒtd ƒƒ|j| jƒ| jƒgtdƒƒ|jt|ƒtdd ƒƒ|jt| ƒtdd ƒƒ|j t td d ƒ|j t tgdƒxutdƒD]g}td |ƒ} |jt | ƒtƒ|jt| ƒ|ƒ|jtt| ƒtd ƒg|ƒqWtd ƒ\}}t|ƒ\} } |j|| kƒtd ƒ\}}t |ƒ}|j t |ƒ|j t |dƒ||ƒ}|jt|ƒt|ƒkoAt|ƒkoAtd ƒknƒttdƒƒ\}}tj|ƒ}|jt|dƒt |ƒƒ~|j tt|dƒdS(NiÈcss xt|ƒD] }|Vq WdS(N(RÜ(RR ((s//usr/local/lib/python2.7/test/test_itertools.pytirangeHsidiiiiiRR'R(iÐtinvalidiÿÿÿÿi t __class__(tteeR-RRzR RÜRRÝtshuffleR£R.R/ttypeRR6R7RLRGRïtproxytgetattrtReferenceError(RRRûRwRxR R;tordertliststitsR‰R0RIR”tt1tt2ttnewtt3Re((s//usr/local/lib/python2.7/test/test_itertools.pyttest_teeFs‚ .   (*  FcCs,ttddƒƒ\}}t|ƒ~dS(Ni-1(RþRURFRÖ(Rtforwardtbackward((s//usr/local/lib/python2.7/test/test_itertools.pyttest_tee_del_backward s cCsš|jttƒjƒxOttttfD];}|jt|gƒjƒ|jt|tƒƒjƒq)W|jttgdƒjƒ|jtttƒdƒjƒt gƒ\}}|jt|jƒ|jt|jƒt tƒƒ\}}|jt|jƒ|jt|jƒ|jtt ddƒjƒxat t ttttfD]G}|jt|d„gƒjƒ|jt|d„tƒƒjƒqKWdS(NicSs|S(N((R((s//usr/local/lib/python2.7/test/test_itertools.pyR’¹scSs|S(N((R((s//usr/local/lib/python2.7/test/test_itertools.pyR’ºs(R.RR²RR,RRYRRRFRþRUR­R°RèRöRùRí(RtfRetq((s//usr/local/lib/python2.7/test/test_itertools.pyttest_StopIteration¥s  (%RRR1R3RJRt impl_detailROR_R`RfRgRnRvRŠRRR¬R¯R±R¶R¼RÈRÉRÓRãRäRæRçRëRîRõRøRúR RR(((s//usr/local/lib/python2.7/test/test_itertools.pyR"7sB   > B < !  *  Y  , ( :     9  Z t TestExamplescBs¼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„ZRS(cCs&|jdjtddƒƒdƒdS(NR*RPtDEFRp(R-tjoinR,(R((s//usr/local/lib/python2.7/test/test_itertools.pyR1¾scCs,|jdjtjddgƒƒdƒdS(NR*RPRRp(R-RR,R2(R((s//usr/local/lib/python2.7/test/test_itertools.pyR3Ásc Csf|jttddƒƒd d d dddgƒ|jtttdƒdƒƒddddgƒdS(NtABCDiRQRRRStDiiii(RQRR(RQRS(RQR(RRRS(RRR(RSR(iii(iii(iii(iii(R-RRER (R((s//usr/local/lib/python2.7/test/test_itertools.pyRJÄsc Cs5|jttddƒƒdddd d d gƒdS( NRPiRQRRRS(RQRQ(RQRR(RQRS(RRRR(RRRS(RSRS(R-RR@(R((s//usr/local/lib/python2.7/test/test_itertools.pyR_Êsc Cs;|jttdddddddgƒƒtdƒƒdS(NRpiiRr(R-RRu(R((s//usr/local/lib/python2.7/test/test_itertools.pyRvÎscCs8|jtttdƒdƒƒdddddgƒdS(Ni ii i i i(R-RRR{(R((s//usr/local/lib/python2.7/test/test_itertools.pyRŠÑscCs/|jtttdƒdƒƒtdƒƒdS(NRi t ABCDABCDABCD(R-RRR(R((s//usr/local/lib/python2.7/test/test_itertools.pyRÔsc Cs>|jttd„dddddgƒƒdddgƒdS(NcSs |dkS(Ni((R((s//usr/local/lib/python2.7/test/test_itertools.pyR’Øsiii(R-RRù(R((s//usr/local/lib/python2.7/test/test_itertools.pyRú×scCs’|jgtdƒD]\}}|^qtdƒƒ|jgtdƒD]\}}t|ƒ^qHtdƒtdƒtdƒtdƒgƒdS(NtAAAABBBCCDAABBBtABCDABt AAAABBBCCDtAAAAtBBBtCCR(R-RYR(RR\R›((s//usr/local/lib/python2.7/test/test_itertools.pyR¬Ús( .cCs;|jttd„tdƒƒƒdddddgƒdS(NcSs|dS(Ni((R((s//usr/local/lib/python2.7/test/test_itertools.pyR’ási iiiii (R-RR­R (R((s//usr/local/lib/python2.7/test/test_itertools.pyR¯àscCs;|jttd„tdƒƒƒdddddgƒdS(NcSs|dS(Ni((R((s//usr/local/lib/python2.7/test/test_itertools.pyR’äsi iiiii(R-RR°R (R((s//usr/local/lib/python2.7/test/test_itertools.pyR±ãscCs/|jtttdd ƒƒdddgƒdS( Niii ii i iè(iii (iii(R-RRèRé(R((s//usr/local/lib/python2.7/test/test_itertools.pyRëæscCs¤|jttddƒƒtdƒƒ|jttdddƒƒtdƒƒ|jttdddƒƒtdƒƒ|jttddddƒƒtdƒƒdS( NRhitABitCDtCDEFGitACEG(R-RRRF(R((s//usr/local/lib/python2.7/test/test_itertools.pyRõés%((cCs)|jttddƒƒddgƒdS( NRtxyRQRRRR³(RQR(RRR³(R-RR²(R((s//usr/local/lib/python2.7/test/test_itertools.pyR¶ïscCs5|jttddddƒƒd d d dgƒdS(NRR#R¾t-RQRRRR³RSR(RQR(RRR³(RSR$(RR$(R-RRÀ(R((s//usr/local/lib/python2.7/test/test_itertools.pyttest_izip_longestòsc Csf|jttddƒƒttdjƒƒƒ|jtttdƒƒƒddd d d d gƒdS( NRis#AB AC AD BA BC BD CA CB CD DA DB DCiii(iii(iii(iii(iii(iii(iii(R-RR=RLR6tsplitR (R((s//usr/local/lib/python2.7/test/test_itertools.pyRfösc Csr|jttddƒƒttdjƒƒƒ|jtttdƒddƒƒd d d d d dddgƒdS(NRR#sAx Ay Bx By Cx Cy Dx DyiRUiii(iii(iii(iii(iii(iii(iii(iii(iii(R-RRVRLR6R&R (R((s//usr/local/lib/python2.7/test/test_itertools.pyRãüs ! cCs,|jttddƒƒdddgƒdS(Ni i(R-RRU(R((s//usr/local/lib/python2.7/test/test_itertools.pyRæscCs5|jtttdd d gƒƒdddgƒdS( Niiii i i iè(ii(ii(i i(R-RRíRé(R((s//usr/local/lib/python2.7/test/test_itertools.pyt test_stapmaps!c Cs;|jttd„dddddgƒƒddgƒdS(NcSs |dkS(Ni((R((s//usr/local/lib/python2.7/test/test_itertools.pyR’ siii(R-RRö(R((s//usr/local/lib/python2.7/test/test_itertools.pyRø s(RRR1R3RJR_RvRŠRRúR¬R¯R±RëRõR¶R%RfRãRæR'Rø(((s//usr/local/lib/python2.7/test/test_itertools.pyR¼s(                   tTestGCcBsÎ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„ZRS(cCs!|j|ƒ|jƒ~~dS(N(R£R(Rtiteratort container((s//usr/local/lib/python2.7/test/test_itertools.pyt makecycles  cCs g}|jt|ƒ|ƒdS(N(R+R,(RRw((s//usr/local/lib/python2.7/test/test_itertools.pyR1scCs&g}|jtj|gƒ|ƒdS(N(R+R,R2(RRw((s//usr/local/lib/python2.7/test/test_itertools.pyR3scCs/g}|jtdd|dgdƒ|ƒdS(Niii(R+RE(RRw((s//usr/local/lib/python2.7/test/test_itertools.pyRJscCs/g}|jtdd|dgdƒ|ƒdS(Niii(R+R@(RRw((s//usr/local/lib/python2.7/test/test_itertools.pyR_!sc Cs5g}|jtdddddddgƒ|ƒdS(NRpii(R+Ru(RRw((s//usr/local/lib/python2.7/test/test_itertools.pyRv%scCsMg}tdtftd|ƒƒ}|jt|dƒ|dƒƒ|ƒdS(NtIntRii(RRÌR¹R+R{(RRwR,((s//usr/local/lib/python2.7/test/test_itertools.pyRŠ)scCs'g}|jt|gdƒ|ƒdS(Ni(R+R(RRw((s//usr/local/lib/python2.7/test/test_itertools.pyR.scCs,g}|jttd||gƒ|ƒdS(Ni(R+RùR®(RRw((s//usr/local/lib/python2.7/test/test_itertools.pyRú2scCs-g}|jt|gdd„ƒ|ƒdS(NicSs|S(N((R((s//usr/local/lib/python2.7/test/test_itertools.pyR’8s(R+RY(RRw((s//usr/local/lib/python2.7/test/test_itertools.pyR¬6scCsXd}d„}xBtt|ƒd|ƒD](\}}|jjdgƒj|ƒq(WdS(Ni cSs|S(N((R((s//usr/local/lib/python2.7/test/test_itertools.pyR’=sR‘R(RYRÜt__dict__t setdefaultR£(RRR¢R R;((s//usr/local/lib/python2.7/test/test_itertools.pyttest_issue2246:s %cCs-g}|jtd„|gdƒ|ƒdS(NcSstS(N(R¤(R((s//usr/local/lib/python2.7/test/test_itertools.pyR’Csi(R+R­(RRw((s//usr/local/lib/python2.7/test/test_itertools.pyR¯AscCs&g}|jtd„|ƒ|ƒdS(NcSstS(N(tFalse(R((s//usr/local/lib/python2.7/test/test_itertools.pyR’Gs(R+R°(RRw((s//usr/local/lib/python2.7/test/test_itertools.pyR±EscCs1g}|jt|gd|gdƒ|ƒdS(Nii(R+R²(RRw((s//usr/local/lib/python2.7/test/test_itertools.pyR¶IscCsjg}|jt|gd|gdƒ|ƒ|dg}|jt|gd|gdd|ƒ|ƒdS(NiiR¾(R+RÀRF(RRwRx((s//usr/local/lib/python2.7/test/test_itertools.pyR%Ms' cCs-g}|jtd„|gdƒ|ƒdS(NcSs|S(N((R((s//usr/local/lib/python2.7/test/test_itertools.pyR’Usi(R+Rè(RRw((s//usr/local/lib/python2.7/test/test_itertools.pyRëSscCs*g}|jt|gddƒ|ƒdS(Ni(R+RRF(RRw((s//usr/local/lib/python2.7/test/test_itertools.pyRõWscCs/g}|jtdd|dgdƒ|ƒdS(Niii(R+R=(RRw((s//usr/local/lib/python2.7/test/test_itertools.pyRf[scCs2g}|jtdd|dgddƒ|ƒdS(NiiiRU(R+RV(RRw((s//usr/local/lib/python2.7/test/test_itertools.pyRã_scCs g}|jt|ƒ|ƒdS(N(R+RU(RRw((s//usr/local/lib/python2.7/test/test_itertools.pyRæcscCs3g}|jtd„||fgdƒ|ƒdS(NcWs|S(N((Rm((s//usr/local/lib/python2.7/test/test_itertools.pyR’isi(R+Rí(RRw((s//usr/local/lib/python2.7/test/test_itertools.pyRîgscCs/g}|jttdd||gƒ|ƒdS(Nii(R+RöR®(RRw((s//usr/local/lib/python2.7/test/test_itertools.pyRøks(RRR+R1R3RJR_RvRŠRRúR¬R/R¯R±R¶R%RëRõRfRãRæRîRø(((s//usr/local/lib/python2.7/test/test_itertools.pyR(s,                     ccsx|D] }|VqWdS(sRegular generatorN((tseqnR ((s//usr/local/lib/python2.7/test/test_itertools.pytRos tGcBs eZdZd„Zd„ZRS(sSequence using __getitem__cCs ||_dS(N(R1(RR1((s//usr/local/lib/python2.7/test/test_itertools.pyRÍvscCs |j|S(N(R1(RR ((s//usr/local/lib/python2.7/test/test_itertools.pyt __getitem__xs(RRRRÍR4(((s//usr/local/lib/python2.7/test/test_itertools.pyR3ts tIcBs)eZdZd„Zd„Zd„ZRS(s Sequence using iterator protocolcCs||_d|_dS(Ni(R1R (RR1((s//usr/local/lib/python2.7/test/test_itertools.pyRÍ}s cCs|S(N((R((s//usr/local/lib/python2.7/test/test_itertools.pyR€scCsD|jt|jƒkr!t‚n|j|j}|jd7_|S(Ni(R R7R1R(RR]((s//usr/local/lib/python2.7/test/test_itertools.pyR‚s  (RRRRÍRR(((s//usr/local/lib/python2.7/test/test_itertools.pyR5{s  tIgcBs eZdZd„Zd„ZRS(s9Sequence using iterator protocol defined with a generatorcCs||_d|_dS(Ni(R1R (RR1((s//usr/local/lib/python2.7/test/test_itertools.pyRÍŠs ccsx|jD] }|Vq WdS(N(R1(Rtval((s//usr/local/lib/python2.7/test/test_itertools.pyRs(RRRRÍR(((s//usr/local/lib/python2.7/test/test_itertools.pyR6ˆs R½cBs eZdZd„Zd„ZRS(s Missing __getitem__ and __iter__cCs||_d|_dS(Ni(R1R (RR1((s//usr/local/lib/python2.7/test/test_itertools.pyRÍ“s cCsD|jt|jƒkr!t‚n|j|j}|jd7_|S(Ni(R R7R1R(RR]((s//usr/local/lib/python2.7/test/test_itertools.pyR–s  (RRRRÍR(((s//usr/local/lib/python2.7/test/test_itertools.pyR½‘s tNcBs eZdZd„Zd„ZRS(sIterator missing next()cCs||_d|_dS(Ni(R1R (RR1((s//usr/local/lib/python2.7/test/test_itertools.pyRÍžs cCs|S(N((R((s//usr/local/lib/python2.7/test/test_itertools.pyR¡s(RRRRÍR(((s//usr/local/lib/python2.7/test/test_itertools.pyR8œs tEcBs)eZdZd„Zd„Zd„ZRS(sTest propagation of exceptionscCs||_d|_dS(Ni(R1R (RR1((s//usr/local/lib/python2.7/test/test_itertools.pyRͦs cCs|S(N((R((s//usr/local/lib/python2.7/test/test_itertools.pyR©scCs dddS(Nii((R((s//usr/local/lib/python2.7/test/test_itertools.pyR«s(RRRRÍRR(((s//usr/local/lib/python2.7/test/test_itertools.pyR9¤s  tScBs)eZdZd„Zd„Zd„ZRS(sTest immediate stopcCsdS(N((RR1((s//usr/local/lib/python2.7/test/test_itertools.pyRͰscCs|S(N((R((s//usr/local/lib/python2.7/test/test_itertools.pyR²scCs t‚dS(N(R(R((s//usr/local/lib/python2.7/test/test_itertools.pyR´s(RRRRÍRR(((s//usr/local/lib/python2.7/test/test_itertools.pyR:®s  cCs(ttd„ttt|ƒƒƒƒƒS(s Test multiple tiers of iteratorscSs|S(N((R((s//usr/local/lib/python2.7/test/test_itertools.pyR’¹s(R,RèR2R6R3(R1((s//usr/local/lib/python2.7/test/test_itertools.pyRy·stTestVariousIteratorArgscBseZd„Zd„Zd„Zd„Zd„Zd„Zd„Zd„Z d„Z d „Z d „Z d „Z d „Zd „Zd„ZRS(cCs+x$ddtdƒd tdddƒfD]û}x•ttttttfD]{}|jt t ||ƒƒƒt ||ƒƒƒ|jt t ||ƒ||ƒƒƒt ||ƒƒt ||ƒƒƒqGW|j t t t t |ƒƒƒ|j t t t t|ƒƒƒ|j tt t t|ƒƒƒq(WdS( Nt123R*iètdog333333ó?iÐi˜i(R=g333333ó?(R RÜR3R5R6R:RyR2R-RR,R.R/R½R8tZeroDivisionErrorR9(RRaR›((s//usr/local/lib/python2.7/test/test_itertools.pyR1¾s..KcCsxddtdƒd tdddƒfD]Þ}t|ƒ}xWttttttfD]=}|j t t ||ƒt d ƒƒƒt ||ƒƒƒqSW|j tt t|ƒt d ƒƒ|j tt t t|ƒt d ƒƒƒ|j tt t t|ƒt d ƒƒƒq(WdS( NR<R*ièR=g333333ó?iÐi˜ii(sdog333333ó?(R RÜR7R3R5R6R:RyR2R-RRuRUR.R/R½R8R>R9(RRaRR›((s//usr/local/lib/python2.7/test/test_itertools.pyRvÇs. ;"(cCsxzddtdƒd tdddƒfD]Q}|jttt|ƒƒ|jttt|ƒƒ|jttt|ƒƒq(WdS( NR<R*ièR=g333333ó?iÐi˜i(sdog333333ó?( R RÜR.R/RVR½R8R>R9(RRa((s//usr/local/lib/python2.7/test/test_itertools.pyRãÐs.cCsxddtdƒd tdddƒfD]×}xwttttttfD]]}t|ƒd }t ||ƒƒd }t t t ||ƒƒ|ƒƒ}|j ||ƒqGW|j tt t|ƒƒ|j tt t t|ƒƒƒ|j tt t t|ƒƒƒq(WdS( NR<R*ièR=g333333ó?iÐi˜ii(sdog333333ó?(R RÜR3R5R6R:RyR2R7RRRR-R.R/R½R8R>R9(RRaR›ttgtlentexpectedtactual((s//usr/local/lib/python2.7/test/test_itertools.pyRÖs.!cCsýxötdƒtdƒtdƒd tdddƒfD]Á}xattttttfD]G}|jgt ||ƒƒD]\}}|^qrt ||ƒƒƒqSW|j t t t |ƒƒ|j t t t t|ƒƒƒ|j tt t t|ƒƒƒq4WdS( Ni iièii iÐi˜i(ii (R RÜR3R5R6R:RyR2R-RYRR.R/R½R8R>R9(RRaR›R\tsb((s//usr/local/lib/python2.7/test/test_itertools.pyR¬ás :EcCsùxòtdƒtdƒtdƒd tdddƒfD]½}xTttttttfD]:}|jt t t ||ƒƒƒt t ||ƒƒƒqSW|j tt t t|ƒƒ|j tt t t t|ƒƒƒ|j tt t t t|ƒƒƒq4WdS( Ni iièii iÐi˜i(ii (R RÜR3R5R6R:RyR2R-RR­R RiR.R/R½R8R>R9(RRaR›((s//usr/local/lib/python2.7/test/test_itertools.pyR¯és :8"cCsùxòtdƒtdƒtdƒd tdddƒfD]½}xTttttttfD]:}|jt t t ||ƒƒƒt t ||ƒƒƒqSW|jtt t t|ƒƒ|jtt t t t|ƒƒƒ|jtt t t t|ƒƒƒq4WdS( Ni iièii iÐi˜i(ii (R RÜR3R5R6R:RyR2R-RR°R RiR R.R/R½R8R>R9(RRaR›((s//usr/local/lib/python2.7/test/test_itertools.pyR±ñs :8"cCsxddtdƒd tdddƒfD]î}xŽttttttfD]t}|jt t ||ƒƒƒt ||ƒƒƒ|jt t ||ƒ||ƒƒƒt ||ƒ||ƒƒƒqGW|j t t t|ƒƒ|j t t t t|ƒƒƒ|j tt t t|ƒƒƒq(WdS( NR<R*ièR=g333333ó?iÐi˜i(sdog333333ó?(R RÜR3R5R6R:RyR2R-RR²RzR.R/R½R8R>R9(RRaR›((s//usr/local/lib/python2.7/test/test_itertools.pyR¶ùs..DcCsxddtdƒd tdddƒfD]î}xŽttttttfD]t}|jt t ||ƒƒƒt ||ƒƒƒ|jt t ||ƒ||ƒƒƒt ||ƒ||ƒƒƒqGW|j t t t|ƒƒ|j t t t t|ƒƒƒ|j tt t t|ƒƒƒq(WdS( NR<R*ièR=g333333ó?iÐi˜i(sdog333333ó?(R RÜR3R5R6R:RyR2R-RRÀRzR.R/R½R8R>R9(RRaR›((s//usr/local/lib/python2.7/test/test_itertools.pyRÈs..Dc CsEx>tdƒtdƒtdƒd tdddƒfD] }x ttttttfD]†}|jt t t ||ƒƒƒt t ||ƒƒƒ|jt t t j||ƒ||ƒƒƒt t j||ƒ||ƒƒƒqSW|jtt t t|ƒƒ|jtt t t t|ƒƒƒ|jtt t t t|ƒƒƒq4WdS( Ni iidii ii2i(ii (R RÜR3R5R6R:RyR2R-RRèRRLRRéR.R/R½R8R>R9(RRaR›((s//usr/local/lib/python2.7/test/test_itertools.pyRë s:4P"c Csýxöddtdƒd tdddƒfD]Í}xdttttttfD]J}|jt t ||ƒd dd ƒƒt ||ƒƒd dd …ƒqGW|j t t t|ƒd ƒ|j t t t t|ƒd ƒƒ|j tt t t|ƒd ƒƒq(WdS( Nt12345R*ièR=g333333ó?iÐi˜iiii (sdog333333ó?(R RÜR3R5R6R:RyR2R-RRRFR.R/R½R8R>R9(RRaR›((s//usr/local/lib/python2.7/test/test_itertools.pyRõs .H"c Cs xtdƒtdƒtdƒd tdddƒfD]ä}xrttttttfD]X}t||ƒ}|j t t t j ||ƒƒƒtt j ||ƒ||ƒƒƒqSW|jtt t j t|ƒƒ|jtt t t j t|ƒƒƒ|jtt t t j t|ƒƒƒq4WdS( Ni iidii ii2i(ii (R RÜR3R5R6R:RyR2RzR-RRíRRéRLR.R/R½R8R>R9(RRaR›tss((s//usr/local/lib/python2.7/test/test_itertools.pyRîs:G%cCs$xtdƒtdƒtdƒd tdddƒfD]è}xttttttfD]e}g}x1||ƒD]#}t|ƒs‚Pn|j |ƒqlW|j t t t||ƒƒƒ|ƒqSW|j tt tt|ƒƒ|j tt t tt|ƒƒƒ|j tt t tt|ƒƒƒq4WdS( Ni iièii iÐi˜i(ii (R RÜR3R5R6R:RyR2R R£R-RRöR.R/R½R8R>R9(RRaR›ttgtR§((s//usr/local/lib/python2.7/test/test_itertools.pyRø%s: )"cCs-x&tdƒtdƒtdƒd tdddƒfD]ñ}xˆttttttfD]n}g}x:||ƒD],}| r‹t|ƒr‹qln|j |ƒqlW|j t t t||ƒƒƒ|ƒqSW|j tt tt|ƒƒ|j tt t tt|ƒƒƒ|j tt t tt|ƒƒƒq4WdS( Ni iièii iÐi˜i(ii (R RÜR3R5R6R:RyR2R R£R-RRùR.R/R½R8R>R9(RRaR›RER§((s//usr/local/lib/python2.7/test/test_itertools.pyRú1s:)"cCsx ddtdƒd tdddƒfD]ä}x|ttttttfD]b}t||ƒƒ\}}|j t |ƒt ||ƒƒƒ|j t |ƒt ||ƒƒƒqGW|j t tt |ƒƒ|j t t tt|ƒƒd ƒ|j tt tt|ƒƒd ƒq(WdS( NR<R*ièR=g333333ó?iÐi˜ii(sdog333333ó?(R RÜR3R5R6R:RyR2RþR-RR.R/R½R8R>R9(RRaR›tit1tit2((s//usr/local/lib/python2.7/test/test_itertools.pyR =s."&#(RRR1RvRãRR¬R¯R±R¶RÈRëRõRîRøRúR (((s//usr/local/lib/python2.7/test/test_itertools.pyR;¼s      tLengthTransparencycBseZd„ZRS(cCsLddlm}|j|tddƒƒdƒ|jt|tdƒƒdS(Niÿÿÿÿ(R7i2(ttest.test_iterlenR7R-RURFR.R/(RR7((s//usr/local/lib/python2.7/test/test_itertools.pyRæIs(RRRæ(((s//usr/local/lib/python2.7/test/test_itertools.pyRHGstRegressionTestscBseZd„Zd„ZRS(csNd„}‡fd†}g‰|d |d ƒttƒ}|jˆ|ƒdS( Ncsmdg‡‡fd†}t|ƒ}t|ƒ|dd+t||ƒ}t|gt|ƒŒ‰ˆjƒdS(Nics!|r|2ˆˆjƒƒn|S(N(R(R‰tfirst(Rtz(s//usr/local/lib/python2.7/test/test_itertools.pyR›Ws(RRèR²R7R(ttuple1Rttuple2R›titemstgen((RRLs//usr/local/lib/python2.7/test/test_itertools.pyt mutatingtupleSs  cs|attƒˆ(dS(N(tTR(Rm(RK(s//usr/local/lib/python2.7/test/test_itertools.pyRbsiiiiii(iii(iii(RRRR-(RRQRtsecond((RKs//usr/local/lib/python2.7/test/test_itertools.pyttest_sf_793826Ps   cs܇fd†}‡fd†}g‰|jttt|ƒ|tƒƒƒ|jˆddgƒg‰|jttt|ƒ|tƒƒƒ|jˆddgƒg‰|jttt|ƒƒƒ|jˆddgƒdS(Nc3s6ˆjdƒdVˆjdƒt‚ˆjdƒdS(Niii(R£tAssertionError((thist(s//usr/local/lib/python2.7/test/test_itertools.pytgen1qs   c3s2ˆjdƒdVˆjdƒ|r.t‚ndS(Niii(R£R(R(RV(s//usr/local/lib/python2.7/test/test_itertools.pytgen2xs   ii(R.RURR,R0R-R¤R(RRWRX((RVs//usr/local/lib/python2.7/test/test_itertools.pyttest_sf_950057ms%%(RRRTRY(((s//usr/local/lib/python2.7/test/test_itertools.pyRJNs tSubclassWithKwargsTestcBseZd„ZRS(c s“xŒtttttttttt t t f D]`‰dˆf‡fd†ƒY}y|ddƒWq+t k rŠ}|j d|jdƒq+Xq+WdS(NtSubclasscseZd‡fd†ZRS(csˆj||ŒdS(N(RÍ(RtnewargR(tcls(s//usr/local/lib/python2.7/test/test_itertools.pyRÍ‘sN(RRRFRÍ((R](s//usr/local/lib/python2.7/test/test_itertools.pyR[sR\isdoes not take keyword argumentsi(RUR²R­R°R,RèRíRRöRùRRuR/t assertNotInR(RR[terr((R]s//usr/local/lib/python2.7/test/test_itertools.pyttest_keywords_in_subclassŒs(RRR`(((s//usr/local/lib/python2.7/test/test_itertools.pyRZ‹ssY Doctest for examples in the library reference: libitertools.tex >>> amounts = [120.15, 764.05, 823.14] >>> for checknum, amount in izip(count(1200), amounts): ... print 'Check %d is for $%.2f' % (checknum, amount) ... Check 1200 is for $120.15 Check 1201 is for $764.05 Check 1202 is for $823.14 >>> import operator >>> for cube in imap(operator.pow, xrange(1,4), repeat(3)): ... print cube ... 1 8 27 >>> reportlines = ['EuroPython', 'Roster', '', 'alex', '', 'laura', '', 'martin', '', 'walter', '', 'samuele'] >>> for name in islice(reportlines, 3, None, 2): ... print name.title() ... Alex Laura Martin Walter Samuele >>> from operator import itemgetter >>> d = dict(a=1, b=2, c=1, d=2, e=1, f=2, g=3) >>> di = sorted(sorted(d.iteritems()), key=itemgetter(1)) >>> for k, g in groupby(di, itemgetter(1)): ... print k, map(itemgetter(0), g) ... 1 ['a', 'c', 'e'] 2 ['b', 'd', 'f'] 3 ['g'] # Find runs of consecutive numbers using groupby. The key to the solution # is differencing with a range so that consecutive numbers all appear in # same group. >>> data = [ 1, 4,5,6, 10, 15,16,17,18, 22, 25,26,27,28] >>> for k, g in groupby(enumerate(data), lambda t:t[0]-t[1]): ... print map(operator.itemgetter(1), g) ... [1] [4, 5, 6] [10] [15, 16, 17, 18] [22] [25, 26, 27, 28] >>> def take(n, iterable): ... "Return first n items of the iterable as a list" ... return list(islice(iterable, n)) >>> def enumerate(iterable, start=0): ... return izip(count(start), iterable) >>> def tabulate(function, start=0): ... "Return function(0), function(1), ..." ... return imap(function, count(start)) >>> def nth(iterable, n, default=None): ... "Returns the nth item or a default value" ... return next(islice(iterable, n, None), default) >>> def quantify(iterable, pred=bool): ... "Count how many times the predicate is true" ... return sum(imap(pred, iterable)) >>> def padnone(iterable): ... "Returns the sequence elements and then returns None indefinitely" ... return chain(iterable, repeat(None)) >>> def ncycles(iterable, n): ... "Returns the sequence elements n times" ... return chain(*repeat(iterable, n)) >>> def dotproduct(vec1, vec2): ... return sum(imap(operator.mul, vec1, vec2)) >>> def flatten(listOfLists): ... return list(chain.from_iterable(listOfLists)) >>> def repeatfunc(func, times=None, *args): ... "Repeat calls to func with specified arguments." ... " Example: repeatfunc(random.random)" ... if times is None: ... return starmap(func, repeat(args)) ... else: ... return starmap(func, repeat(args, times)) >>> def pairwise(iterable): ... "s -> (s0,s1), (s1,s2), (s2, s3), ..." ... a, b = tee(iterable) ... for elem in b: ... break ... return izip(a, b) >>> def grouper(n, iterable, fillvalue=None): ... "grouper(3, 'ABCDEFG', 'x') --> ABC DEF Gxx" ... args = [iter(iterable)] * n ... return izip_longest(fillvalue=fillvalue, *args) >>> def roundrobin(*iterables): ... "roundrobin('ABC', 'D', 'EF') --> A D E B F C" ... # Recipe credited to George Sakkis ... pending = len(iterables) ... nexts = cycle(iter(it).next for it in iterables) ... while pending: ... try: ... for next in nexts: ... yield next() ... except StopIteration: ... pending -= 1 ... nexts = cycle(islice(nexts, pending)) >>> def powerset(iterable): ... "powerset([1,2,3]) --> () (1,) (2,) (3,) (1,2) (1,3) (2,3) (1,2,3)" ... s = list(iterable) ... return chain.from_iterable(combinations(s, r) for r in range(len(s)+1)) >>> def unique_everseen(iterable, key=None): ... "List unique elements, preserving order. Remember all elements ever seen." ... # unique_everseen('AAAABBBCCDAABBB') --> A B C D ... # unique_everseen('ABBCcAD', str.lower) --> A B C D ... seen = set() ... seen_add = seen.add ... if key is None: ... for element in iterable: ... if element not in seen: ... seen_add(element) ... yield element ... else: ... for element in iterable: ... k = key(element) ... if k not in seen: ... seen_add(k) ... yield element >>> def unique_justseen(iterable, key=None): ... "List unique elements, preserving order. Remember only the element just seen." ... # unique_justseen('AAAABBBCCDAABBB') --> A B C D A B ... # unique_justseen('ABBCcAD', str.lower) --> A B C A D ... return imap(next, imap(itemgetter(1), groupby(iterable, key))) This is not part of the examples but it tests to make sure the definitions perform as purported. >>> take(10, count()) [0, 1, 2, 3, 4, 5, 6, 7, 8, 9] >>> list(enumerate('abc')) [(0, 'a'), (1, 'b'), (2, 'c')] >>> list(islice(tabulate(lambda x: 2*x), 4)) [0, 2, 4, 6] >>> nth('abcde', 3) 'd' >>> nth('abcde', 9) is None True >>> quantify(xrange(99), lambda x: x%2==0) 50 >>> a = [[1, 2, 3], [4, 5, 6]] >>> flatten(a) [1, 2, 3, 4, 5, 6] >>> list(repeatfunc(pow, 5, 2, 3)) [8, 8, 8, 8, 8] >>> import random >>> take(5, imap(int, repeatfunc(random.random))) [0, 0, 0, 0, 0] >>> list(pairwise('abcd')) [('a', 'b'), ('b', 'c'), ('c', 'd')] >>> list(pairwise([])) [] >>> list(pairwise('a')) [] >>> list(islice(padnone('abc'), 0, 6)) ['a', 'b', 'c', None, None, None] >>> list(ncycles('abc', 3)) ['a', 'b', 'c', 'a', 'b', 'c', 'a', 'b', 'c'] >>> dotproduct([1,2,3], [4,5,6]) 32 >>> list(grouper(3, 'abcdefg', 'x')) [('a', 'b', 'c'), ('d', 'e', 'f'), ('g', 'x', 'x')] >>> list(roundrobin('abc', 'd', 'ef')) ['a', 'd', 'e', 'b', 'f', 'c'] >>> list(powerset([1,2,3])) [(), (1,), (2,), (3,), (1, 2), (1, 3), (2, 3), (1, 2, 3)] >>> all(len(list(powerset(range(n)))) == 2**n for n in range(18)) True >>> list(powerset('abcde')) == sorted(sorted(set(powerset('abcde'))), key=len) True >>> list(unique_everseen('AAAABBBCCDAABBB')) ['A', 'B', 'C', 'D'] >>> list(unique_everseen('ABBCcAD', str.lower)) ['A', 'B', 'C', 'D'] >>> list(unique_justseen('AAAABBBCCDAABBB')) ['A', 'B', 'C', 'D', 'A', 'B'] >>> list(unique_justseen('ABBCcAD', str.lower)) ['A', 'B', 'C', 'A', 'D'] t libreftestcCs½tttttttf}tj|Œ|r¢t t dƒr¢ddl }dgd}xAt t|ƒƒD]-}tj|Œ|jƒt jƒ||s\                  ÿÿÿˆRa      ‹=ð