a zeޕ@svddlZddlmZddlTddlZddlmZddlmZddl Z ddl Z ddl Z ddl Z ddl mZddlZddlZddlZddlZejZe dZdd Zd d Zd d ZddZddZddZddZddZGdddZddZddZ ddZ!d d!Z"d"d#Z#d$d%Z$d&d'e%e j&dDZ'Gd(d)d)ej(Z)Gd*d+d+ej(Z*Gd,d-d-ej(Z+Gd.d/d/ej(Z,d0d1Z-Gd2d3d3Z.Gd4d5d5Z/Gd6d7d7Z0Gd8d9d9Z1Gd:d;d;Z2Gdd?d?Z4d@dAZ5GdBdCdCej(Z6GdDdEdEej(Z7GdFdGdGej(Z8GdHdIdIej(Z9ej:GdJdKdKej(Z;dLZe?dPkrre>dQdRdS)TN)support)*)Decimal)Fraction)reducecGs tt|SN)listzipargsr G/opt/bitninja-python-dojo/embedded/lib/python3.9/test/test_itertools.pylzipsrcCsd|S)zTest function of one argumentr xr r roneargsrcGstdS)z"Test function that raises an errorN) ValueErrorr r r rerrfuncsrccsdD] }|VqdS)zNon-restartable source sequencerrrNr ir r rgen3srcCs |ddkS)Test predicaterrr rr r risEven$srcCs |ddkS)rrrr rr r risOdd(srcGs|Srr r r r rtupleize,srccst|D] }|VqdSrrangenrr r rirange/s r"c@s eZdZdZddZddZdS)StopNowz"Class emulating an empty iterable.cCs|Srr selfr r r__iter__5szStopNow.__iter__cCstdSr StopIterationr$r r r__next__7szStopNow.__next__N)__name__ __module__ __qualname____doc__r&r)r r r rr#3sr#cCstt||S)zHConvenience function for partially consuming a long of infinite iterabler islice)r!seqr r rtake:sr1cCsttj|dSNr)roperatormuliterabler r rprod>sr7cCsttd|dS)Z Factorialr)r7rr!r r rfactAsr9cCs|dSNrr rr r rtestRFsr=cCs|dSNrr r;r r rtestR2Isr?cCs|dkS)N r rr r rundertenLsrAcCsg|]}|fddqS)cSstt||Sr)pickleloadsdumps)sprotor r rOz.r ).0rFr r r OsrJc@s(eZdZdoddZddZdd Zd d Zd d ZddZddZ e j ddZ e dddZddZe j ddZe dddZddZe j dd Ze dd!d"Zd#d$Zd%d&Zd'd(Zd)d*Zd+d,Zd-d.Zd/d0Zd1d2Zd3d4Zd5d6Ze dd7d8Zd9d:Z e dd;d<Z!d=d>Z"d?d@Z#dAdBZ$dCdDZ%e j dEdFZ&e ddGdHZ'dIdJZ(dKdLZ)dMdNZ*dOdPZ+dQdRZ,dSdTZ-dUdVZ.dWdXZ/dYdZZ0d[d\Z1d]d^Z2d_d`Z3dadbZ4dcddZ5e j6dedfZ7e j6dgdhZ8e j6didjZ9e j6dkdlZ:e j6dmdnZ;dS)p TestBasicOpsrNcsdfdd t||}t|}|t|t|||}} ||| |rp|} ||| t|} d} z"t|D]} t| | d7} qWntyYn0t| |}t|}| |}} ||| |r || d} ||| dS)zITest that an iterator is the same after pickling, also when part-consumedrcs\dkrtdt|tr|Sztt|}WntyF|YS0fdd|DS)Nr@zinfinite recursion encounteredcsg|]}|dqS)rr rIe)expandrr rrJ`rHz;TestBasicOps.pickletest..expand..) RuntimeError isinstancestrr r/ TypeError)itrlrOstoprrrOVs   z'TestBasicOps.pickletest..expandrN)r)rBrDrC assertEqualtypernextr()r%protocolrTrWr1comparedumpZi2abcZi3ZtookrZi4r rVr pickletestTs0          zTestBasicOps.pickletestc Csx|tttdgd|tttddgdttttfD]0}|ttt|tdtt|gdqF|ttdgd|ttgg|ttdgdg| t ttddd| t t|j t ttdd | t ttd gggd }|tt|t gd |tt|t gd |tt|t jgd| t tt|tWdn1s0Yttjd D]2}||ttd||ttdddq|ttgdddgd|ttgdddgd|ttgdddg| t "ttddgdWdn1sj0YdS)Nr@) rrr@$-r5abc)r^abrircrr) r rlrkrrbrLrrc) rrrrrrrrrr) rrmrnrnrnrnrnrnrnrn) riirrrrr)initial)r@rlr)r@rdrod)rrnst)rXr accumulaterintcomplexrrmap assertRaisesrSminmaxr3r4chrrBHIGHEST_PROTOCOLra)r%typrErFr r rtest_accumulate}sL  .   zTestBasicOps.test_accumulatecCsdd}t|fD]z}|t|ddtd|t|dtd|t|dg|td|ddtd|tt|d d qdS) Ncws|D]}|D] }|Vq qdS)zPure python version in the docsNr ) iterablesrTelementr r rchain2sz'TestBasicOps.test_chain..chain2ridefabcdefrLabcdrrb)chainrXr r1r{rS)r%rr`r r r test_chains zTestBasicOps.test_chaincCs|ttddgtd|ttdgtd|ttdgg|tdtddgtd|tttddgdS) NrirrrrLrrrb)rXr r from_iterabler1r{rSr$r r rtest_chain_from_iterables  z%TestBasicOps.test_chain_from_iterablec CstjgtD]}tdd}|t||td|t|d|t||td|t|tdg|td|tddtd|t t|td d q t t j d D]}|j |tddtdd qdS) Nrirrr^ZbcdefrrLrrrbrr\)copydeepcopy picklecopiersrrXr rZr1r{rSrrBrra)r%ZoperrTrFr r rtest_chain_reducibles  z!TestBasicOps.test_chain_reduciblecCs|ttjd|ttjg|ttjd|ttjgf|ttjtggft}|tddgf|t|gdt}|tddgtdgf|t|gddS)Nr rrir)r^r_r`drNfghi)rr^r_r`rrNr)r{rSr __setstate__iterrXr r%rTr r rtest_chain_setstatesz TestBasicOps.test_chain_setstatec s|ttd|ttddd|ttd|ttddddgtD]}|t|tddg|t|tddgd tdd}t||t||gd |t|ttd d gd ttd d }t||t||gdqLdd}dd}dd}tdD]}ddt|Dt|dD]Z}tt|}|t |||krtdnt |t |t |||t |t t |||t ||D]x|t ||t t ||tt | tfddD|tfddDq||t||||t||||t||ttjdD]} || t|qqHq$dS)NrirrcSs|Srr r^r r rrGrHz0TestBasicOps.test_combinations.. ABCDABrCrDrrrrrr)rrrrrrLrbrrrrbrrrbrrrb)rrrc3st|t}||krdStt|}tfdd|DVtt|D]}|||||krLqnqLdS||d7<t|d|D]}||dd||<qtfdd|DVq@dS)%Pure python version shown in the docsNc3s|]}|VqdSrr rIrpoolr r rHzHTestBasicOps.test_combinations..combinations1..rc3s|]}|VqdSrr rrr rrrHtuplelenr rreversed)r6r<r!indicesrjr rr combinations1s z5TestBasicOps.test_combinations..combinations1c3sPt|t}tt||D],}t|t|krtfdd|DVqdS)rc3s|]}|VqdSrr rrr rrrHzHTestBasicOps.test_combinations..combinations2..N)rr permutationsrsortedr r6r<r!rr rr combinations2s z5TestBasicOps.test_combinations..combinations2c3sPt|t}tt||D],}tt||krtfdd|DVqdS)zPure python version from cwr()c3s|]}|VqdSrr rrr rr rHzHTestBasicOps.test_combinations..combinations3..N)rrcombinations_with_replacementrsetrr rr combinations3s z5TestBasicOps.test_combinations..combinations3rkcSsg|]}d|dqSrl r rIrr r rrJ rHz2TestBasicOps.test_combinations..rc3s|]}|vVqdSrr rMvaluesr rrrHz1TestBasicOps.test_combinations..csg|]}|vr|qSr r rMr`r rrJrH)r{rS combinationsrrrXr rZrrr9rr assertTrueallrBrra) r%optestIntermediaterrrr!r<resultrFr r`rrtest_combinationssZ 6 zTestBasicOps.test_combinationscCs<|ttftddWdn1s.0YdS)NAAi )r{ OverflowError MemoryErrorrr$r r rtest_combinations_overflow sz'TestBasicOps.test_combinations_overflowz"tuple reuse is specific to CPythonc CsH|tttttddd|ttttttddddSNabcderbr)rXrrrzidrassertNotEqualr r$r r rtest_combinations_tuple_reuse&s z*TestBasicOps.test_combinations_tuple_reusec sft}|t|d|t|ddd|t|d|t|ddddgtD]L}|t||ddgd|dd}t||t||gd qPd d }d d }dd}tdD]}ddt|Dt|dD]z}t||} |t | ||||t | t t | || t | tt |} |dksV|dkrd|| | n| t | t | k| D]|t |ddtD} |t | t t | |tt | tfddD|| fddDq~|| t|||| t||ttjdD]} || ||qDqqdS)NrirrrcSs|Srr rr r rrG2rHzATestBasicOps.test_combinations_with_replacement..ABC)rrrrrrrrr)rrrrrc3st|t}|s|rdSdg|}tfdd|DVtt|D]}|||dkrJqhqJdS||dg||||d<tfdd|DVq>dS)rNrc3s|]}|VqdSrr rrr rrCrHzPTestBasicOps.test_combinations_with_replacement..cwr1..rc3s|]}|VqdSrr rrr rrKrH)rrrr)r6r<r!rrr rrcwr1;s z=TestBasicOps.test_combinations_with_replacement..cwr1c3sRt|t}tt||dD],}t|t|kr tfdd|DVq dS)rrepeatc3s|]}|VqdSrr rrr rrSrHzPTestBasicOps.test_combinations_with_replacement..cwr2..N)rrproductrrr rr rrcwr2Ms z=TestBasicOps.test_combinations_with_replacement..cwr2cSs4|s|r dSdSt||dt|t|dSNrr)r9)r!r<r r rnumcombsUs zATestBasicOps.test_combinations_with_replacement..numcombsrkcSsg|]}d|dqSrr rr r rrJ[rHzCTestBasicOps.test_combinations_with_replacement..rcSsg|] \}}|qSr r )rIkvr r rrJkrHc3s|]}|vVqdSrr rMrr rrnrHzBTestBasicOps.test_combinations_with_replacement..csg|]}|vr|qSr r rMrr rrJprH)rr{rSrrrXr rZrrrrrrgroupbyrrBrra) r%cwrrrrrrr!r<rZ regular_combsZnorunsrFr rr"test_combinations_with_replacement+sR z/TestBasicOps.test_combinations_with_replacementcCs<|ttftddWdn1s.0YdS)Nr@)r{rrrr$r r r+test_combinations_with_replacement_overflowwsz8TestBasicOps.test_combinations_with_replacement_overflowc CsLt}|tttt|ddd|ttttt|ddddSr)rrXrrrzrrr )r%rr r r.test_combinations_with_replacement_tuple_reuse}s z;TestBasicOps.test_combinations_with_replacement_tuple_reusec s|tt|ttddd|ttd|ttdd|ttddg|ttdd|tttddgddd d }dd d }td D]`}ddt|Dt|dD]:}tt|}|t|||krdnt|t|||t|tt |||t ||D]F}|t|||tt ||| t fdd|Dq,||t||||t||||kr||ttd||tttt jdD]}||t|qqqdS)NrirrrrrErb)rrrrrrrr)rr)rrc3s:t|t}|dur|n|}||kr,dStt|}tt||d|dddd}tfdd|d|DV|r6tt|D]}||d8<||dkr||dd|||d||d<||||<q||}|| ||||<|| <tfdd|d|DVq|qdSq|dS)rNrc3s|]}|VqdSrr rrr rrrHzHTestBasicOps.test_permutations..permutations1..rc3s|]}|VqdSrr rrr rrrHr)r6r<r!rZcyclesrrr rr permutations1s& $  ( z5TestBasicOps.test_permutations..permutations1c3sbt|t}|dur|n|}tt||dD],}tt||kr0tfdd|DVq0dS)rNrc3s|]}|VqdSrr rrr rrrHzHTestBasicOps.test_permutations..permutations2..)rrrrrrr rr permutations2s z5TestBasicOps.test_permutations..permutations2rkcSsg|]}d|dqSrr rr r rrJrHz2TestBasicOps.test_permutations..rc3s|]}|vVqdSrr rMrr rrrHz1TestBasicOps.test_permutations..)N)N)r{rSrrrXr rrr9rrrrrBrra)r%rrr!r<rprFr rrtest_permutationss:   ,  zTestBasicOps.test_permutationscCs<|ttftddWdn1s.0YdS)Nrr)r{rrrr$r r rtest_permutations_overflowsz'TestBasicOps.test_permutations_overflowc CsH|tttttddd|ttttttddddSr)rXrrrzrrrr r$r r rtest_permutations_tuple_reuses z*TestBasicOps.test_permutations_tuple_reusec stdD] }dd|}tdD]tt|d}tt|}tt|}tt|}|t|||t||rt|dtt|dn |t||krdnt|t||t||krdnt|tt|||t t |||t t |||t t |||t t |||dd|D||fd d|D||d d|D||fd d|D||tt t |j |||tt t |j |||t t |t |@q"qdS) NrcABCDEFGrmrrrcSs g|]}t|t|kr|qSr rr rItr r rrJrHz3TestBasicOps.test_combinatorics..cs g|]}tt|kr|qSr rrrr;r rrJrHcSs g|]}t|t|kr|qSr rrr r rrJrHcs g|]}tt|kr|qSr rrr;r rrJrH) rr rrrrrXrr9rrfilter __contains__)r%r!rEr7rpermcombr r;rtest_combinatoricss, :,4zTestBasicOps.test_combinatoricsc Cs0|ttdgddtd|ttdgdtd|ttdgdtd|ttdgdtd|ttdgdtd |ttd gd td d }tttd|}ttd}|tt||gd||ttdtd|tttdd|tttd|tttddddddgt D]}dgdddfdgdddfdgdddfdgdd dfd gd d dffD]|\}}}}|t|t||dt||t|t||t|t||}|rt ||t||t|qq\dS)NABCDEFrrrrrr)data selectorsACEF)rrrrrrr)rrrrrrrrrZACr)rrrrrrZBC'rcrrrbrlcSs t|Sr)rrr r rrGrHz,TestBasicOps.test_compress..cSs t|Sr)rrrr r rrGrHZCEFZBCDEFr) rXr compressrrrrr{rSrrZ)r%r!rrrZresult1Zresult2rr r r test_compresss6   zTestBasicOps.test_compressc CsZ|tdtgd|tdtdgd|tdtdtdddg|tdtdtdd d g|tdtdtd d d g|ttddd|ttd|tdttdtt tdtd|tdtt dtt t dt d|tdtdgd|tdtdgd|tdtt dt dt dt dg|tdtt ddt ddt ddt ddgdd>}|tdt|||d|dgtd}|t |dt ||t |dtd}|t |dt ||t |d |t td!d"|t td#d$|tt td#ttj dtj dd%dd&dtjdtjdfD](}t t|}d'|}|||qd dtdtdfD]`}t|}|t t|||t t||t tjdD]}||t|q$qtdtdtdS)(Nrir^rr_rr`rrb)r^rbr_rL)r`rlrr r r)r^r)r_r)r^r)r_rrLr^r@rl @)rg@g@ @)ry@@1.1z2.1z3.1rmrzcount(3)zcount(4)z count(-9)ig$@z count(10.25)g$@z count(10.0)r count(%r))rXrcountr1r r{rSmaxsizer rrrreprrZrYfloatsys__mod__rrrBrraexc_info)r%BIGINTr`rr1r2valuerFr r r test_countsZ   $4  zTestBasicOps.test_countc CsX|tdtddgd|tdtdddgd|tdtddgd|ttd d |tdtdd gd |tdtdd gd|tdtddgd|tdttddtdttdtdd|tdtt ddtdtt dt dd|tdtdtdttdddtdtd|tdtddgd|tdtddgd|tdtt dt dt dt dt dg|tdtt ddt d dt ddt ddt ddgd d>}|tdt|dd |d|g|t tdtdd t gd!tdd}|t |d"t ||t |d#td$d }|t |d%t ||t |d%td$d&}|t |d't ||t |d(|t |d(|t td)dd*|t td)d d+|t td)d,d-|t tdd,d.tdd,}|t t |t|t t |ttj dtj dd/dd dtjdtjdfD]}tj dtj dd/dd d dtjdtjdf D]h}t t||}|d kr d0|}n d1||f}|||ttjd D]}||t||q2qqdS)2Nrirrb)r^r)r_rl)r`rm)startstepr)r%)r )r_r)r`rr^r_r)r#)r_rr r)r#)r_rb)r`rLrvrdrrr@rlg?)rrg@r)rry!@ rz.1z1.2z1.3rkrerg@)r@g)@g.@z count(3, 5)z count(8, 5)rz count(-9, 0)rz count(-9, -3)zcount(-12, -3)g%@zcount(10.5, 1.25)z count(10.5)g?zcount(10.5, 1.0)zcount(10, 1.0)rrz count(%r, %r))rXrrr{rSr1rrr rrrrZrYrxrrrBrra)r%rr`rrrr rFr r rtest_count_with_stride?sp28"$    46    z#TestBasicOps.test_count_with_stridec s|tdtdtd|ttdg|tt|ttd|ttttdgdtd|td|tdt tdt t j d D]d}|tdt t |tdt|tdt t |td ttqt t j d D]}||tdqt t j d D]}td }t|fd d t dD}t |}t |}|td|tdtd }t|fdd t dD}t |}t |}|td|tdqDdS)Nr@riZ abcabcabcarrl) rrrrrrrrrrr^Z bcabcabcabrZ cabcabcabcrcsg|] }tqSr rZrrr rrJrHz+TestBasicOps.test_cycle..rrvZcdeabcdeabcdeabcdeabcsg|] }tqSr r(rrr rrJrHrk)rXr1cycler r{rSr/rrZrrrrBrrCrDrar)r%rFrT_rrr rr test_cyclevsB       zTestBasicOps.test_cyclecCs^td}|tddf|td|tdtd}|tddf|td|td|t&tdtddgWdn1s0Y|t*td}|tddfWdn1s0Ytd||t&tdtddfWdn1s&0Y|ttd jd |ttd jgfdS) NdefgrirrvZdefgabcdefgabcdefgababcdefgrrrr )r)rr rXr1r{rSr)r%r`r r rtest_cycle_setstates  4 0  6z TestBasicOps.test_cycle_setstatec s|gttg|gttgtd|tttdg|ttd|ttddddgd}g}t|ddD],\}}|D]}|||d||qq~|||ttj d D]Z}g}t t t|t |D],\}}|D]}|||d||qq|||qg}t|t D]V\}}t|t D]@\}}|D]0}|||d|||d ||qNqBq0|||ttj d D]}g}t t t|t |D]d\}}t t t|t |D]@\}}|D]0}|||d|||d ||qqq|||qd d t|t D} td d |D} |t| | |t| t| ttdtd}t|t } t| \} } t| \} }t| \} }|t| g|t|g|t|dt| |t|gttj d D]J}t|t } t| \} }t| t| |tt t ||gqd}dd tt|D}||gddd tt|D}||gddd tt|D}||gdtdd tt|Ddddd}||gdGdddtd(fdd }dtfd!d"}|||d|||d Gfd#d$d$}||dg}|j||td%|||fd&d'd_||dgd _||ddgdS))NkeyricSs|Srr rr r rrGrHz+TestBasicOps.test_groupby..r@))rr@rv)r re)rrre)r re)r)rrdr4)rbro)rbr&r5cSs|dSr:r r;r r rrGrHrrrcSsg|] \}}|qSr r rIrgr r rrJrHz-TestBasicOps.test_groupby..cSsg|] }|dqS)rr )rIr<r r rrJrHZ AABBBAAAArn)rrlZ abracadabracSsg|] \}}|qSr r r6r r rrJrH)r^r_r`rr<cSs$g|]\}}tt|ddr|qSrr.r6r r rrJrH)r^r_r<cSs g|]\}}tt||fqSr rr r6r r rrJrH)rlr^rr_)rr`)rrrr<cSs g|]\}}tt||fqSr r8r6r r rrJrHT)reverserb)r9r;r:c@s eZdZdS)z0TestBasicOps.test_groupby..ExpectedErrorN)r*r+r,r r r r ExpectedErrorsr=c3st|D] }dVqdS)NZyorr r=r r delayed_raise!s z0TestBasicOps.test_groupby..delayed_raisecsfddt||DS)Ncsg|]\}}|qSr r r6funcr rrJ&rHz;TestBasicOps.test_groupby..gulp..)r)r6ZkeyprAr r@rgulp%sz'TestBasicOps.test_groupby..gulpcseZdZfddZdS)z+TestBasicOps.test_groupby..DummyCmpcsdSrr )r%dstr>r r__eq__/sz2TestBasicOps.test_groupby..DummyCmp.__eq__N)r*r+r,rDr r>r rDummyCmp.srEr@cs$jdkrjd8_|SdSr)skip)objr=keyfuncr rrI9s z*TestBasicOps.test_groupby..keyfunc)r)rXr rrr{rSappendrrBrrCrDr=r?rrr rZr ExceptionrF)r%rEduprr7elemrFZikZigkeysZ expectedkeysrTr*Zg1Zg2Zg3r<r?rBrEr rHr test_groupbys           "&zTestBasicOps.test_groupbyc Cs|ttttdgd|ttdgdddg|tttgdddg|tdtttgd|t t|t tdd |t td d tdd |t ttd |t t ttdtdgd}tttd}|tt ||tttd}|tt ||tt jdD]`}tttd}|tt t |||t ||tt t |||ddq:tt jdD] }tttd}|||qdS) Nrc)rrrLrrrrrrrrL)rrrLrccSs|Srr rr r rrGLrHz*TestBasicOps.test_filter..cSs|Srr rr r rrGMrHrkrb)rXr rrrboolr1rr{rSrZrrrBrrCrDrar%ansr`rFr r r test_filterFs, *zTestBasicOps.test_filtercCs |ttttdgd|ttdgdgd|tttgdgd|tdtttgd|t t|t tdd|t td dtdd |t ttd |t t ttdtdtt j d D]}| |tttdqdS) NrcrrPrrrrL)rrbrlrkcSs|Srr rr r rrGgrHz/TestBasicOps.test_filterfalse..cSs|Srr rr r rrGhrHrkrbr)rXr filterfalserrrQr1rr{rSrZrBrrar%rFr r rtest_filterfalseas zTestBasicOps.test_filterfalsecCs(ddtdtD}||gd|ttdtdtdtd|ttdtdtdtd|tdtdttdtd|ttdtd|ttt|ttd|tttdd|ddtdd Dtdd |d dtdd Dtdd dS) NcSsg|]\}}||fqSr r rIryr r rrJprHz)TestBasicOps.test_zip..rirrcrrbcSsg|]}tt|qSr rr rIZpairr r rrJyrHrcSsg|]}|qSr r r\r r rrJ{rH) r rrXr rrr1r{rS)r%rSr r rtest_zipns$$$zTestBasicOps.test_zipc Cs~ttttdd}|t|t|tttttdd}|tt |t|ddt tdt D}||gdddt tdt D}||gdt tjdD]8}ddtttdt |D}||gdqt tjdD]F}tdt }t|d dtt||D}||d d gqt tjdD]}||tdt q^dS) NrircSsg|]\}}||fqSr r rYr r rrJrHz5TestBasicOps.test_zip_tuple_reuse..rcSsg|]\}}||fqSr r rYr r rrJrHrcSsg|]\}}||fqSr r rYr r rrJrHcSsg|]\}}||fqSr r rYr r rrJrHr r )r rzrr rXr|r}rdictfromkeysrrrrrBrrCrDrZra)r%idsrSrFrr r rtest_zip_tuple_reuse~s$$ z!TestBasicOps.test_zip_tuple_reusec sXdtdgtddgtdtddtddgtdtdtddtd td gtdtdtddtd td tdgfD]fd d ttttD}|tt||ttii|d d |D}|ttitdd|qz|tdtdt tt dtd|tttt |ttgtt g|ttdtt d|ttdiitt tddgd| t td| t ttdddD]>}zt |ttWnt yYn0|d|q|dd tddDtt dd|dd tddDtt dddS)Nrircri4i i riics"g|]tfddDqS)cs$g|]}t|kr|ndqSrr)rIargrr rrJrHz;TestBasicOps.test_ziplongest...r)rIr rrrJsz0TestBasicOps.test_ziplongest..cSsg|]}tdd|DqS)css|]}|durdp|VqdS)NXr rMr r rrrHz:TestBasicOps.test_ziplongest...rerr r rrJrHrf fillvaluerbrr,)zzip_longest('abc', fv=1)z3zip_longest('abc', fillvalue=1, bogus_keyword=None)zDid not raise Type in: cSsg|]}tt|qSr r[r\r r rrJrHrcSsg|]}|qSr r r\r r rrJrH)rir,)rr}rzrrXr zip_longestr^r1rr r{rSevalglobalslocalsZfail)r%targetZstmtr r rtest_ziplongestsD  "( "(  zTestBasicOps.test_ziplongestcCs^ttttdd}|t|t|tttttdd}|tt |t|dS)Nrir) r rzrrirXr|r}rr^r_)r%r`r r rtest_zip_longest_tuple_reusesz)TestBasicOps.test_zip_longest_tuple_reusec CsdttjdD]P}||tdd||tdd||tdddd||tddqdS)NrrirZdefghrgr)rrBrrarirWr r rtest_zip_longest_picklings z&TestBasicOps.test_zip_longest_picklingcs^tGfddd}|t}t|Wdn1sB0Y||jdS)NcseZdZfddZdS)z?TestBasicOps.test_zip_longest_bad_iterable..BadIterablecsdSrr r$ exceptionr rr&szHTestBasicOps.test_zip_longest_bad_iterable..BadIterable.__iter__N)r*r+r,r&r rqr r BadIterablesrs)rSr{riZassertIsrr)r%rscmr rqrtest_zip_longest_bad_iterables  (z*TestBasicOps.test_zip_longest_bad_iterablecCsGddd}|ddt}|ddt}dd}||||gd |ddt}|ddt}t||d d }|t|d |t|d |t|d |tt|dS) Nc@s$eZdZddZddZddZdS)z,TestBasicOps.test_bug_7244..RepeatercSs||_t||_||_dSr)orxrrN)r%rvrrNr r r__init__s z5TestBasicOps.test_bug_7244..Repeater.__init__cSs|Srr r$r r rr&sz5TestBasicOps.test_bug_7244..Repeater.__iter__cSs(|jdkr|jd8_|jS|jdSr)rrvrNr$r r rr)s z5TestBasicOps.test_bug_7244..Repeater.__next__N)r*r+r,rwr&r)r r r rRepeatersrxrrbrrLc Ssdg}t||ddD]L\}}tdt||fWdn1sF0Y|||fq|S)Nrrgstdout)rirZcaptured_outputprintrJ)rr rrrr r rruns  *z'TestBasicOps.test_bug_7244..run)rrrrrrgr)r(rXrPrirZr{)r%rxrr r{rTr r r test_bug_7244s    zTestBasicOps.test_bug_7244c sgdgfdgddgftdtdggdftdtdtdggftdtdtdggftdtdtdggffD]V\}}|tt||td D]0}|tt||tt|it|d qqv|ttttd gd d |tttd ddd}dd}dddtdtd tddddtdtdt tdg tdD]}fddtt dD}t t t|}|ttt|||tt|t|||tt|t||t t|}|ttt||qTdS)Nr rjrr_rrb)rrrrr)rrrrrLrrkrcicsttt||dd}t|}|dkr4dVdStdd|DrJdSdg|}tddt||DVtt|D]h}||t||dkrqz||d7<t|d|D] }d||<qtddt||DVqnqzdSqndS) Nrrrr css|]}t|dkVqdS)rNrc)rIrr r rrrHz>TestBasicOps.test_product..product1..css|]\}}||VqdSrr rIrrr r rrrHcss|]\}}||VqdSrr rr r rr&rH) r rzrgetranyr rr)r kwdspoolsr!rrrr r rproduct1s$  z+TestBasicOps.test_product..product1c?sTttt||dd}gg}|D]fdd|D}q$|D]}t|Vq@dS)z Pure python version used in docsrrcs g|]}D]}||gq qSr r rYrr rrJ0rHz?TestBasicOps.test_product..product2..N)r rzrr)r rrrr7r rrproduct2+s z+TestBasicOps.test_product..product2rrir)r^r_r`r-r1r2rrcsg|]}tqSr )randomchoice)rIrargtypesr rrJ7rHz-TestBasicOps.test_product..rl)rrXr rr^rr{rSrrr randranger7rzr)r%r rr<rrrZ expected_lenr rr test_products6   "   zTestBasicOps.test_productcCsF|ttf$tdgdddiWdn1s80YdS)Nrjrri)r{rrrr$r r rtest_product_overflow?sz"TestBasicOps.test_product_overflowc CsH|tttttddd|ttttttddddS)Nrirr)rXrrrzrrrr r$r r rtest_product_tuple_reuseDs z%TestBasicOps.test_product_tuple_reusec CsgdgfdgddgftdtdggdftdtdtdggftdtdtdggftdtdtdggffD]`\}}|ttt|||ttt||ttjd D]}||t|qqvdS) Nr rjrr}rrbr~rr) rrXr rrrrBrra)r%r rrFr r rtest_product_picklingIs  z"TestBasicOps.test_product_picklingcCsLtdd}|d|t|dtddd}|d|tt|dS)Nr)rb)r)rrbr )rrr)rrrXrZr{r()r%rr r rtest_product_issue_25021Xs     z%TestBasicOps.test_product_issue_25021cCs|ttdddgd|ttdtdgd|ttddgd|tdtdgd|ttddg|ttddg|tt|ttddd|ttddtd }|t|d td d }|t|d t||t|d tddd}|t |d|tdt |td|tdt |tdtt j dD]}||tdddqtdS)Nr^rb)objecttimes)r^r^r^))rr^)rr^)rr^rrrLy?zrepeat((1+0j))rlzrepeat((1+0j), 5)zrepeat((1+0j), 0)r@rZaar)rXr rrrr1r{rSrrZrrrBrra)r%r<r`rFr r r test_repeatbs.   zTestBasicOps.test_repeatcCs`|ttddd|ttddd|ttdddd|ttdddddS)Nr^rzrepeat('a', 0)rr)rXrrr$r r rtest_repeat_with_negative_times|sz,TestBasicOps.test_repeat_with_negative_timesc Cs|tttjtdtddgd|tttdtdgd|tttdtgd|tdttdtd d g|tttjgg| t t| t ttdtdtd| t ttj | t t td td| t t ttd gdg| t t ttd gdggd}ttdt}|tt||ttdt}|tt||ttjdD] }ttdt}|||qdS) Nrbrrkrrrmrirlrrr r r@rL)rXr rzr3powrrrr1r{rSnegrZrrrrrrBrrarRr r rtest_maps6 zTestBasicOps.test_mapc Cs|tttjttdtddgd|tdttjtttdgd|tttjgg|tttjt ddggdg| t tttjdg| t t| t ttjdgd | t t td dg| t t ttdg| t t ttdggd}ttjttdtdd}|tt||ttjttdtdd}|tt||ttjdD].}ttjttdtdd}|||qdS) NrbrrkrrLrlirLrlextrar@)rXr starmapr3rr rr1rrr{rSrZrrrrrrBrrarRr r r test_starmaps," $ zTestBasicOps.test_starmapc CsRdD],}|tttdg|Rtt|qdD]0\}}|tttdg|Rtt|q6|tttddttd|tttdddttd|tttddddttd|tttdddttdd|tttddddttdddttd}|tt|dttd|t|ttddttd}|tt|ddg|t|ttddtd}|tt||tt|dddd|tt|d dd|tt|dd d |tt|ddd |tt|ddd |tt|d |tt|d d|tt|dd |tt|d dd|tt|dd d|tttt ddt dt }|tt|ddd dg|t |ddD]}|tt ttdg|Rtt||tt ttdg|Rtt|ttjdD]"}||ttdg|RqBqdddD}t|}t|d}||t|t||Gdddt}|tttd|dttd|tttd|d|d ttdd |tttd|d|d |dttdd ddS)N)r@rvrbr@rbrvr@rv)r@r@r@rbrvrr)))r@rsrb)r@rrrb))r@rs)r@rr))rs)rrr@rrrbrLrrr^2)rrrrrcss|] }|VqdSrr rr r rrrHz+TestBasicOps.test_islice..rc@seZdZddZddZdS)z)TestBasicOps.test_islice..IntLikecSs ||_dSrvalr%rr r rrwsz2TestBasicOps.test_islice..IntLike.__init__cSs|jSrrr$r r r __index__sz3TestBasicOps.test_islice..IntLike.__index__N)r*r+r,rwrr r r rIntLikesrrl)rXr r/rrr{rSrrrrrZrrrBrraweakrefrefZassertIsNotNoner gc_collectZ assertIsNoner) r%r ZtgtargsrTZrar`rFwrrr r r test_islicesv   "$&&*       $    & $zTestBasicOps.test_islicecCs2gd}|ttt|gd|tttgg|tt|tttj|tttjdgd|tttddg|t ttt dgtt gd}|t|gd|t t||tt tt|gd|tt tt|gdttjdD]}||tt|qdS) NrrbrlrvrrLrcrmrrrr@)rrrrrrrrrr)rXr takewhilerAr{rSr3rrZrrrQr(rrrrBrra)r%rrrFr r rtest_takewhiles"  zTestBasicOps.test_takewhilecCsgd}|ttt|gd|tttgg|tt|tttj|tttjdgd|tttddg|t ttt dg|tt tt|gd|tt tt|gdt tjdD]}||tt|qdS)Nr)rvrrLrcrmrrr@r)rXr dropwhilerAr{rSr3rrZrrrrrrBrra)r%rrFr r rtest_dropwhile-s  zTestBasicOps.test_dropwhilecCs d}tg\}}|t|g|t|gtt|\}}|t||tt|t|tt|\}}|t|tt||t|tt|tt|\}}tdD]}|t||q~|t|tt|tt|\}}tdD]}|t||q~|t|ttd|tdD]}dg|dg|}t|ggf}tt|}|D] }t||} || | qv||dtt|||dtt|q<| t t| t td| t tddgd| t tddgddtd \}}t |d } |t| td ttd d\}}} tdD]}|t||qX|t|ttd |t| t| gttd|t|ttdd |t| ttdd | t td d | t tgd tdD]P}td |} |t | t|t| ||dd| Dtd g|qtd \}}t|\} } ||| utd \} }t | }| t || t |d|| }|t| t|kot|kotd knttd\}}t|}|t|dt |~t| tt|dtd }ttd}td \}}|tt|||tt||tttd\}}|tt|||tt||td \}}td|td||tt||dd|tt||dd|t||dd|t||ddttd\}}td|td||tt||dd|tt||dd|t||dd|t||ddtd \}}|tt|||tt|||t|||t||ttd\}}|tt|||tt|||t|||t||td \}}td|td||tt||dd|tt||dd|t||dd|t||ddttd\}}td|td||tt||dd|tt||dd|t||dd|t||ddttjdD]F}||ttd td \}}|j|||d|j|||dqdS)NrrrlrrrbrrrirrbinvalidrcSsg|] }t|qSr r rr r rrJ~rHz)TestBasicOps.test_tee..r@ __class__r<r)teerXr r"rrrZrshufflerJr{rSrYrrrrrproxygetattrrrReferenceErrorrr1rrBrrar)r%r!r^r_rrorderZlistsZitsr!r`rrt1t2ZtnewZt3rrSZlong_ansrFr r rtest_tee>s               $    <               zTestBasicOps.test_teecCs8ttdd\}}zt|~Wn~~Yn0dS)Ni-1)rrr)r%ZforwardZbackwardr r rtest_tee_del_backwardsz"TestBasicOps.test_tee_del_backwardcsXGfddd}t|\}|tdt|Wdn1sJ0YdS)Ncs$eZdZdZddZfddZdS)z(TestBasicOps.test_tee_reenter..ITcSs|Srr r$r r rr&sz1TestBasicOps.test_tee_reenter..I.__iter__cs|j}d|_|rtSdSNF)firstrZ)r%rr}r rr)sz1TestBasicOps.test_tee_reenter..I.__next__N)r*r+r,rr&r)r r}r rIsrr)rassertRaisesRegexrPrZ)r%rr^r r}rtest_tee_reenters zTestBasicOps.test_tee_reentercsttGfddd}t|\}}tjt|gd}|zP|tdt|Wdn1s~0YW | n | 0dS)Ncs"eZdZddZfddZdS)z+TestBasicOps.test_tee_concurrent..IcSs|Srr r$r r rr&sz4TestBasicOps.test_tee_concurrent..I.__iter__csdSr)rwaitr$Zfinishr$r rr)sz4TestBasicOps.test_tee_concurrent..I.__next__N)r*r+r,r&r)r rr rrsr)rmr r) threadingEventrThreadrZr$rrrPrjoin)r%rr^r_threadr rrtest_tee_concurrents( z TestBasicOps.test_tee_concurrentcCs$|tttttttfD]*}|tt|g|tt|tq|tttgd|ttttdt g\}}|tt||tt|t t\}}|tt||tt||ttt ddt t t tttfD]6}|tt|ddg|tt|ddtqdS)NrcSs|Srr rr r rrGrHz1TestBasicOps.test_StopIteration..cSs|Srr rr r rrGrH)r{r(rZr rr)rr#r/rrrrVrzrrr)r%rrqr r rtest_StopIterations  zTestBasicOps.test_StopIterationcCs6tdggd}t|t|tt|dSr2)rrZgccollectr is_trackedrr r rtest_combinations_result_gcsz(TestBasicOps.test_combinations_result_gccCs6tdggd}t|t|tt|dSr2)rrZrrrrrr r r,test_combinations_with_replacement_result_gc%sz9TestBasicOps.test_combinations_with_replacement_result_gccCs6tdggd}t|t|tt|dSr2)rrZrrrrrr r rtest_permutations_result_gc-sz(TestBasicOps.test_permutations_result_gccCs4tdgg}t|t|tt|dSr)rrZrrrrrr r rtest_product_result_gc5s z#TestBasicOps.test_product_result_gccCs*tgg}t|tt|dSr)rirrrrrZrr r rtest_zip_longest_result_gc=s z'TestBasicOps.test_zip_longest_result_gc)rLrN).rrLrcrLr)rcrLr)rXr rr$r r rr|szTestExamples.test_dropwhilecCsT|ddtdDtd|ddtdDtdtdtd td gdS) NcSsg|] \}}|qSr r r6r r rrJrHz-TestExamples.test_groupby..ZAAAABBBCCDAABBBZABCDABcSsg|]\}}t|qSr rr6r r rrJrHZ AAAABBBCCDZAAAAZBBBZCCr)rXrr r$r r rrOs zTestExamples.test_groupbycCs&|ttddtdgddS)NcSs|dSr>r rr r rrGrHz*TestExamples.test_filter..r@)rrbrlrkrn)rXr rrr$r r rrTszTestExamples.test_filtercCs&|ttddtdgddS)NcSs|dSr>r rr r rrGrHz/TestExamples.test_filterfalse..r@)rrrLrcrm)rXr rVrr$r r rrXszTestExamples.test_filterfalsecCs |tttddgddS)N)rrbr@)rlrrbrrnr)rXr rzrr$r r rrszTestExamples.test_mapcCst|ttddtd|ttdddtd|ttdddtd|ttddddtddS) NrrABrLCDCDEFGrACEG)rXr r/r$r r rrszTestExamples.test_islicecCs|ttddddgdS)NrxyrrrrZ)rXr r r$r r rr]szTestExamples.test_zipcCs"|ttddddgddS)Nrr-rg)rr)rr)rr)rXr rir$r r rtest_zip_longestszTestExamples.test_zip_longestcCsD|ttddtttd|tttdgddS)Nrrz#AB AC AD BA BC BD CA CB CD DA DB DCrb)r)rrr)rrr)rrr)rrr)rrr)rXr rrzrsplitrr$r r rrs zTestExamples.test_permutationscCsH|ttddtttd|tttdddgddS)NrrzAx Ay Bx By Cx Cy Dx Dyrrbr)rU)rrr)rrr)rrr)rrrr)rrrr)rXr rrzrrrr$r r rrs zTestExamples.test_productcCs|ttddgddS)Nr@rb)r@r@r@)rXr rr$r r rrszTestExamples.test_repeatcCs"|tttgdgddS)N))rrl)rbrrr)rXr rrr$r r r test_stapmapszTestExamples.test_stapmapcCs&|ttddgdddgdS)NcSs|dkSrr rr r rrGrHz-TestExamples.test_takewhile..rrrL)rXr rr$r r rrszTestExamples.test_takewhileN)r*r+r,rrrrrrrrr"r+rrOrTrXrrr]rrrrrrr r r rrEs. rc@s eZdZeddZddZdS)TestPurePythonRoughEquivalentsc gst|}|jpd|jptj|jp"d}}}tt|||}z t|}Wn,t ytt t||D]\}} qdYdS0z,t |D]\}} ||kr| Vt|}qWn0t yt t|d||D]\}} qYn0dSr) slicer$rWrrr%rrrZr(r enumerate) r6r rEr$rWr%rTZnextirrr r rr/s"$   z%TestPurePythonRoughEquivalents.islicec Cs6|t|ddtd|t|dddtd|t|dddtd|t|ddddtdttd }|t||d ttd |t|ttd d ttd }|t||d d g|t|ttd d t}|t||d d d d g|t|d dS) NrrrrLrrrrr@rbrr)rXr r/rrrrZ)r%rTr`r r rtest_islice_recipes    z1TestPurePythonRoughEquivalents.test_islice_recipeN)r*r+r, staticmethodr/rr r r rrs rc@seZdZddZddZddZddZd d Zd d Zd dZ ddZ ddZ ddZ ddZ ddZddZddZddZdd Zd!d"Zd#d$Zd%d&Zd'd(Zd)d*Zd+d,Zd-d.Zd/S)0TestGCcCs||t|~~dSr)rJrZ)r%iterator containerr r r makecycles zTestGC.makecyclecCs g}|tdd|dg|dSNrrrb)rrwr%r^r r rrszTestGC.test_accumulatecCsg}|t||dSr)rrrr r rrszTestGC.test_chaincCsg}|t|g|dSr)rrrrr r rrszTestGC.test_chain_from_iterablecCs"g}|tdd|dgd|dSr)rrrr r rrszTestGC.test_combinationscCs"g}|tdd|dgd|dSr)rrrr r rrsz)TestGC.test_combinations_with_replacementcCsg}|tdgd|dS)Nr)rrrrrr)rrrr r rrszTestGC.test_compresscCs6g}tdtft|d}|t|d|d|dS)NIntrrr)rYrxr^rr)r%r^rr r rr"szTestGC.test_countcCsg}|t|gd|dSr>)rr)rr r rr+szTestGC.test_cyclecCs g}|ttd||g|dSr:)rrrQrr r rrszTestGC.test_dropwhilecCs$g}|t|gddd|dS)NrcSs|Srr rr r rrG rHz%TestGC.test_groupby..)rrrr r rrO szTestGC.test_groupbycCs>d}dd}tt||dD]\}}|jdg|qdS)Nr@cSs|Srr rr r rrGrHz'TestGC.test_issue2246..r/r)rr__dict__ setdefaultrJ)r%r!rIrrr r rtest_issue2246 szTestGC.test_issue2246cCs$g}|tdd|gd|dS)NcSsdS)NTr rr r rrGrHz$TestGC.test_filter..r)rrrr r rrTszTestGC.test_filtercCsg}|tdd||dS)NcSsdSrr rr r rrGrHz)TestGC.test_filterfalse..)rrVrr r rrXszTestGC.test_filterfalsecCs&g}|t|gd|gd|dS)Nrrb)rr rr r rr]szTestGC.test_zipcCsPg}|t|gd|gd||dg}|t|gd|gd|d|dS)Nrrbrg)rri)r%r^r_r r rr szTestGC.test_zip_longestcCs$g}|tdd|gd|dS)NcSs|Srr rr r rrG(rHz!TestGC.test_map..r)rrzrr r rr&szTestGC.test_mapcCs g}|t|gdd|dSr>)rr/rr r rr*szTestGC.test_islicecCs"g}|tdd|dgd|dSr)rrrr r rr.szTestGC.test_permutationscCs$g}|tdd|dgdd|dS)Nrrrbr)rrrr r rr2szTestGC.test_productcCsg}|t||dSr)rrrr r rr6szTestGC.test_repeatcCs(g}|tdd||fgd|dS)NcWs|Srr rr r rrG<rHz%TestGC.test_starmap..r)rrrr r rr:szTestGC.test_starmapcCs"g}|ttdd||g|dS)Nrr)rrrQrr r rr>szTestGC.test_takewhileN)r*r+r,rrrrrrrr"r+rrOrrTrXr]rrrrrrrrr r r rrs.rccs|D] }|VqdS)zRegular generatorNr seqnrr r rRBsrc@s eZdZdZddZddZdS)GzSequence using __getitem__cCs ||_dSrrr%rr r rrwIsz G.__init__cCs |j|Srr)r%rr r r __getitem__Ksz G.__getitem__N)r*r+r,r-rwrr r r rrGsrc@s(eZdZdZddZddZddZdS) rz Sequence using iterator protocolcCs||_d|_dSr:rrr r rrwPsz I.__init__cCs|Srr r$r r rr&Ssz I.__iter__cCs2|jt|jkrt|j|j}|jd7_|Sr2rrrr(r%rr r rr)Us z I.__next__Nr*r+r,r-rwr&r)r r r rrNsrc@s eZdZdZddZddZdS)Igz9Sequence using iterator protocol defined with a generatorcCs||_d|_dSr:rrr r rrw]sz Ig.__init__ccs|jD] }|VqdSrrrr r rr&`s z Ig.__iter__Nr*r+r,r-rwr&r r r rr [sr c@s eZdZdZddZddZdS)rfz Missing __getitem__ and __iter__cCs||_d|_dSr:rrr r rrwfsz X.__init__cCs2|jt|jkrt|j|j}|jd7_|Sr2r r r r rr)is z X.__next__N)r*r+r,r-rwr)r r r rrfdsrfc@s eZdZdZddZddZdS)NzIterator missing __next__()cCs||_d|_dSr:rrr r rrwqsz N.__init__cCs|Srr r$r r rr&tsz N.__iter__Nr r r r rrosrc@s(eZdZdZddZddZddZdS) EzTest propagation of exceptionscCs||_d|_dSr:rrr r rrwysz E.__init__cCs|Srr r$r r rr&|sz E.__iter__cCs dddS)Nrbrr r$r r rr)~sz E.__next__Nr r r r rrwsrc@s(eZdZdZddZddZddZdS) SzTest immediate stopcCsdSrr rr r rrwsz S.__init__cCs|Srr r$r r rr&sz S.__iter__cCstdSrr'r$r r rr)sz S.__next__Nr r r r rrsrcCsttddttt|S)z Test multiple tiers of iteratorscSs|Srr rr r rrGrHzL..)rrzrr rrr r rLsrc@seZdZddZddZddZddZd d Zd d Zd dZ ddZ ddZ ddZ ddZ ddZddZddZddZdd Zd!S)"TestVariousIteratorArgscCsgd}gd}t|}tttttfD]}|tt|||q&|ttt |g| t tt || t tt || tttt|dSr)rrrr rrrXr rwrr{rSrfrZeroDivisionErrorr)r%rEr<r!r7r r rrsz'TestVariousIteratorArgs.test_accumulatec CsddtddtdddfD]}ttttttfD]V}|tt ||t|||tt ||||t||t||q.| t tt t || t tt t || ttt t|qdSN123rrZdog333333?rbrl)rrrr rrrrXr rr{rSrfrrrr%rEr7r r rrs 4z"TestVariousIteratorArgs.test_chainc CsddtddtdddfD]}t|}ttttttfD]*}|t t ||t dt ||q6| t t t|t d| t t t|t d| tt t t|t dqdS) Nrrrrrbrrlr)rrrrr rrrrXr rrr{rSrfrrr)r%rEr!r7r r rrs(z%TestVariousIteratorArgs.test_compresscCsZddtddtdddfD]:}|ttt||ttt||ttt|qdSr)rr{rSrrfrrr)r%rEr r rrsz$TestVariousIteratorArgs.test_productcCsddtddtdddfD]}ttttttfD]B}t|d}t||d}tt t |||}| ||q.| t t t|| t t t|| ttt t|qdS) Nrrrrrbrrlrb)rrrr rrrrr r/r)rXr{rSrfrrr)r%rEr7ZtgtlenZexpectedactualr r rr+s z"TestVariousIteratorArgs.test_cyclecCstdtdtddtdddfD]z}ttttttfD]*}|dd t||Dt ||q6| t tt || t tt || tt tt|q"dS) Nr@rrrkr1rbrrlcSsg|] \}}|qSr r )rIrZsbr r rrJrHz8TestVariousIteratorArgs.test_groupby..)rrrr rrrrXrr r{rSrfrrrrr r rrOs &(z$TestVariousIteratorArgs.test_groupbyc CstdtdtddtdddfD]}ttttttfD],}|tt t ||dd ||Dq6| t t t t || t t t t|| ttt t t|q"dS) Nr@rrrrbrrlcSsg|]}t|r|qSr )rrr r rrJrHz7TestVariousIteratorArgs.test_filter..)rrrr rrrrXr rrr{rSrfrrrrr r rrTs&z#TestVariousIteratorArgs.test_filterc CstdtdtddtdddfD]}ttttttfD],}|tt t ||dd ||Dq6| t t t t || t t t t|| ttt t t|q"dS) Nr@rrrrbrrlcSsg|]}t|r|qSr )rrr r rrJrHz.)rrrr rrrrXr rVrr{rSrfrrrrr r rrXs&z(TestVariousIteratorArgs.test_filterfalsec CsddtddtdddfD]}ttttttfD]P}|tt ||t |||tt ||||t ||||q.| t t t || t t t|| ttt t|qdSr)rrrr rrrrXr r rr{rSrfrrrrr r rr]s .z TestVariousIteratorArgs.test_zipc CsddtddtdddfD]}ttttttfD]X}|tt ||tt |||tt ||||tt ||||q.| t t t || t t t|| ttt t|qdSr)rrrr rrrrXr rir r{rSrfrrrrr r rrns$2z'TestVariousIteratorArgs.test_ziplongestc CstdtdtddtdddfD]}ttttttfD]\}|tt t ||dd ||D|tt t j ||||d d ||Dq6| tt t t|| tt t t|| ttt t t|q"dS) Nr@rrrrrvrrlcSsg|] }t|qSr )rrr r rrJrHz4TestVariousIteratorArgs.test_map..cSsg|] }||qSr r rr r rrJrH)rrrr rrrrXr rzrr3rr{rSrfrrrrr r rrs&z TestVariousIteratorArgs.test_mapc CsddtddtdddfD]}ttttttfD]4}|tt ||ddd t||ddd q.| t t t |d | t t t |d | ttt t|d qdS) NZ12345rrrrbrrlrrr@)rrrr rrrrXr r/r{rSrfrrrrr r rrs 2z#TestVariousIteratorArgs.test_islicec CstdtdtddtdddfD]}ttttttfD]8}t||}|t t t j ||dd ||Dq6| tt t j t|| tt t j t|| tt t t j t|q"dS) Nr@rrrrrvrrlcSsg|] }||qSr r rr r rrJrHz8TestVariousIteratorArgs.test_starmap..)rrrr rrrrrXr rr3rr{rSrfrrr)r%rEr7ssr r rrs& z$TestVariousIteratorArgs.test_starmapc CstdtdtddtdddfD]}ttttttfD]F}g}||D]}t|sVqb||qF| t t t|||q6| t t tt|| t t tt|| tt t tt|q"dSNr@rrrrbrrl)rrrr rrrrrJrXr rr{rSrfrrrr%rEr7ZtgtrMr r rrs&   z&TestVariousIteratorArgs.test_takewhilec CstdtdtddtdddfD]}ttttttfD]H}g}||D]}|sXt|rXqF||qF| t t t|||q6| t t tt|| t t tt|| tt t tt|q"dSr)rrrr rrrrrJrXr rr{rSrfrrrrr r rrs&  z&TestVariousIteratorArgs.test_dropwhilecCsddtddtdddfD]}ttttttfD]D}t||\}}|t |t |||t |t ||q.| t tt || t tt || tt tt|dqdS) Nrrrrrbrrlr)rrrr rrrrrXr r{rSrfrrr)r%rEr7Zit1Zit2r r rr sz TestVariousIteratorArgs.test_teeN)r*r+r,rrrrr+rOrTrXr]rnrrrrrrr r r rrs             rc@seZdZddZddZdS)LengthTransparencycCsL|ttddd|ttddd|ttddddS)NrrrrXr3 length_hintrr$r r rr,szLengthTransparency.test_repeatcCsh|ttddd|ttddd|ttdddd|ttdddddS)Nrrrrrr$r r rr1sz2LengthTransparency.test_repeat_with_negative_timesN)r*r+r,rrr r r rr*src@s:eZdZddZddZejddZddZd d Z d S) RegressionTestscs<dd}fdd}g|d|dtt}||dS)NcsTdgffdd }t|}t||dd<t||}t|gt|tdS)Nrcs|r|dd=t|Srr()r!rrzr rr7@s  z@RegressionTests.test_sf_793826..mutatingtuple..g)r rzr rrZ)Ztuple1rZtuple2r7itemsgenr r"r mutatingtuple<s  z5RegressionTests.test_sf_793826..mutatingtuplecs|attdd<dSr)Tr rrr rrKsz)RegressionTests.test_sf_793826..fr)rLrlrc)r r'rX)r%r&rsecondr r(rtest_sf_7938269s   zRegressionTests.test_sf_793826csfdd}fdd}g|ttt||d|ddgg|ttt||d|ddgg|ttt||ddgdS) Nc3s,ddVdtddS)Nrrr)rJAssertionErrorr Zhistr rgen1Zs   z,RegressionTests.test_sf_950057..gen1c3sddVddS)NrbrrL)rJrr,r rgen2as z,RegressionTests.test_sf_950057..gen2FrrT)r{r+r rrXr))r%r-r.r r,rtest_sf_950057Vs  zRegressionTests.test_sf_950057cCsNtddtdD}|tt|Wdn1s@0YdS)Ncss|] }dVqdS)r Nr )rIZunusedr r rrwrHzERegressionTests.test_long_chain_of_empty_iterables..i)rrrr{r(rZrr r r"test_long_chain_of_empty_iterablesrs z2RegressionTests.test_long_chain_of_empty_iterablescs0fdd}ttd|D]\}tqdS)Ncs|dkrt|dkS)Nrlrcrr8r}r rr|sz,RegressionTests.test_issue30347_1..fr@)rrr )r%rrr r}rtest_issue30347_1{s z!RegressionTests.test_issue30347_1csJGfddd}dtttd|dtdD]}tdq6dS)Ncs"eZdZddZfddZdS)z,RegressionTests.test_issue30347_2..KcSsdSrr r r r rrwsz5RegressionTests.test_issue30347_2..K.__init__csd7dkrtddS)NrTr()r%otherr7rr rrDs z3RegressionTests.test_issue30347_2..K.__eq__N)r*r+r,rwrDr r3r rKsr4rr@rr)rZrr)r%r4rr r3rtest_issue30347_2s   z!RegressionTests.test_issue30347_2N) r*r+r,r*r/rZskip_if_pgo_taskr0r1r5r r r rr!7s  r!c@seZdZddZdS)SubclassWithKwargsTestc stttttttttt t t f D]^Gfddd}z|ddWqt yx}z| d|jdWYd}~qd}~00qdS)NcseZdZdfdd ZdS)zBSubclassWithKwargsTest.test_keywords_in_subclass..SubclassNcsj|g|RdSr)rw)r%newargr clsr rrwszKSubclassWithKwargsTest.test_keywords_in_subclass..Subclass.__init__)N)r*r+r,rwr r8r rSubclasssr:r)r7zkeyword argumentsr)rr rrVrrzrr/rrr)rrSZ assertNotInr )r%r:errr r8rtest_keywords_in_subclasss  z0SubclassWithKwargsTest.test_keywords_in_subclassN)r*r+r,r<r r r rr6sr6c@s:eZdZddZejZddZddZddZd d Z d S) SizeofTestcCstd|_dS)Nr!)structcalcsizessize_tr$r r rsetUpszSizeofTest.setUpcCsFtd}|j}|tdd|d|j|td|d|jdS)NZ3PirjZ12r) ririririririririririr@)r calcobjsize check_sizeofrr@r%basesizecheckr r rtest_product_sizeofs zSizeofTest.test_product_sizeofcCsLtd}|j}|tdd|d|j|ttdd|d|jdSNZ3Pnirrbr@rL)rrBrCrr@rrDr r rtest_combinations_sizeofs z#SizeofTest.test_combinations_sizeofcCsPt}td}|j}||dd|d|j||tdd|d|jdSrH)rrrBrCr@r)r%rrErFr r r)test_combinations_with_replacement_sizeofs  z4SizeofTest.test_combinations_with_replacement_sizeofcCstd}|j}|td|d|jd|j|tdd|d|jd|j|tdd|d|jd|j|ttdd|d|jd|jdS)NZ4PnirrLrbrrlr@)rrBrCrr@rrDr r rtest_permutations_sizeofs   z#SizeofTest.test_permutations_sizeofN) r*r+r,rArrCrGrIrJrKr r r rr=s r=a" Doctest for examples in the library reference: libitertools.tex >>> amounts = [120.15, 764.05, 823.14] >>> for checknum, amount in zip(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 map(operator.pow, range(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.items()), key=itemgetter(1)) >>> for k, g in groupby(di, itemgetter(1)): ... print(k, list(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(list(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 prepend(value, iterator): ... "Prepend a single value in front of an iterator" ... # prepend(1, [2, 3, 4]) -> 1 2 3 4 ... return chain([value], iterator) >>> def enumerate(iterable, start=0): ... return zip(count(start), iterable) >>> def tabulate(function, start=0): ... "Return function(0), function(1), ..." ... return map(function, count(start)) >>> import collections >>> def consume(iterator, n=None): ... "Advance the iterator n-steps ahead. If n is None, consume entirely." ... # Use functions that consume iterators at C speed. ... if n is None: ... # feed the entire iterator into a zero-length deque ... collections.deque(iterator, maxlen=0) ... else: ... # advance to the empty slice starting at position n ... next(islice(iterator, n, n), None) >>> def nth(iterable, n, default=None): ... "Returns the nth item or a default value" ... return next(islice(iterable, n, None), default) >>> def all_equal(iterable): ... "Returns True if all the elements are equal to each other" ... g = groupby(iterable) ... return next(g, True) and not next(g, False) >>> def quantify(iterable, pred=bool): ... "Count how many times the predicate is true" ... return sum(map(pred, iterable)) >>> def pad_none(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(map(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) ... try: ... next(b) ... except StopIteration: ... pass ... return zip(a, b) >>> def grouper(n, iterable, fillvalue=None): ... "grouper(3, 'ABCDEFG', 'x') --> ABC DEF Gxx" ... args = [iter(iterable)] * n ... return zip_longest(*args, fillvalue=fillvalue) >>> 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 map(next, map(itemgetter(1), groupby(iterable, key))) >>> def first_true(iterable, default=False, pred=None): ... '''Returns the first true value in the iterable. ... ... If no true value is found, returns *default* ... ... If *pred* is not None, returns the first item ... for which pred(item) is true. ... ... ''' ... # first_true([a,b,c], x) --> a or b or c or x ... # first_true([a,b], x, f) --> a if f(a) else b if f(b) else x ... return next(filter(pred, iterable), default) >>> def nth_combination(iterable, r, index): ... 'Equivalent to list(combinations(iterable, r))[index]' ... pool = tuple(iterable) ... n = len(pool) ... if r < 0 or r > n: ... raise ValueError ... c = 1 ... k = min(r, n-r) ... for i in range(1, k+1): ... c = c * (n - k + i) // i ... if index < 0: ... index += c ... if index < 0 or index >= c: ... raise IndexError ... result = [] ... while r: ... c, n, r = c*r//n, n-1, r-1 ... while index >= c: ... index -= c ... c, n = c*(n-r)//n, n-1 ... result.append(pool[-1-n]) ... return tuple(result) 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(prepend(1, [2, 3, 4])) [1, 2, 3, 4] >>> list(enumerate('abc')) [(0, 'a'), (1, 'b'), (2, 'c')] >>> list(islice(tabulate(lambda x: 2*x), 4)) [0, 2, 4, 6] >>> it = iter(range(10)) >>> consume(it, 3) >>> next(it) 3 >>> consume(it) >>> next(it, 'Done') 'Done' >>> nth('abcde', 3) 'd' >>> nth('abcde', 9) is None True >>> [all_equal(s) for s in ('', 'A', 'AAAA', 'AAAB', 'AAABA')] [True, True, True, False, False] >>> quantify(range(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, map(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(pad_none('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'] >>> first_true('ABC0DEF1', '9', str.isdigit) '0' >>> population = 'ABCDEFGH' >>> for r in range(len(population) + 1): ... seq = list(combinations(population, r)) ... for i in range(len(seq)): ... assert nth_combination(population, r, i) == seq[i] ... for i in range(-len(seq), 0): ... assert nth_combination(population, r, i) == seq[i] libreftestc Cstttttttttf }t j ||rxt t drxddl }dgd}tt|D]"}t j ||t ||<qLt|t t jt|dS)Ngettotalrefcountrrl)rKrrr!rr6rrr=rZ run_unittesthasattrrrrrrrMrzZ run_doctestmodulesr*)verboseZ test_classesrcountsrr r r test_main s    rR__main__T)rP)N)@Zunittesttestr itertoolsrdecimalrZ fractionsrr3rrrB functoolsrrr>rrZMAX_Py_ssize_trZminsizerrrrrrrr"r#r1r7r9r=r?rArrrZTestCaserKrrrrrrr rfrrrrrrr!r6rr=rLZ__test__rRr*r r r rs      ~n*e      \&;