a 5dg@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 //usr/local/lib/python3.9/test/test_itertools.pylzipsrcCsd|SNr xr r roneargsrcGstdSr) ValueErrorr r r rerrfuncsrccsdD] }|VqdS)Nrrrr ir r rgen3srcCs |ddkS)Nrrr rr r risEven$srcCs |ddkS)Nrrr rr r risOdd(srcGs|Srr r r r rtupleize,srccst|D] }|VqdSrrangenrr r rirange/s r"c@seZdZddZddZdS)StopNowcCs|Srr selfr r r__iter__5szStopNow.__iter__cCstdSr StopIterationr$r r r__next__7szStopNow.__next__N__name__ __module__ __qualname__r&r)r r r rr#3sr#cCstt||Srr islice)r!seqr r rtake:sr1cCsttj|dSNr)roperatormuliterabler r rprod>sr7cCsttd|dSr2)r7rr!r r rfactAsr9cCs|dSNrr rr r rtestRFsr=cCs|dSrr r;r r rtestR2Isr>cCs|dkS)N r rr r rundertenLsr@cCsg|]}|fddqS)cSstt||Sr)pickleloadsdumps)sprotor r rOz.r ).0rEr r r OsrIc@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)Nrcs\dkrtdt|tr|Sztt|}WntyF|YS0fdd|DS)Nr?zinfinite recursion encounteredcsg|]}|dqS)rr rHe)expandrr rrI`rGz;TestBasicOps.pickletest..expand..) RuntimeError isinstancestrr r/ TypeError)itrlrNstoprrrNVs   z'TestBasicOps.pickletest..expandr)r)rArCrB assertEqualtypernextr()r%protocolrSrVr1comparedumpZi2abcZi3ZtookrZi4r rUr 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]abrhrbrr) r rkrjrrarKrrb) rrrrrrrrrr) rrlrmrmrmrmrmrmrmrm) riirrrrr)initial)r?rkr)r?rcrnd)rqnst)rWr accumulaterintcomplexrrmap assertRaisesrRminmaxr3r4chrrAHIGHEST_PROTOCOLr`)r%typrDrEr 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 qdSrr ) iterablesrSelementr r rchain2sz'TestBasicOps.test_chain..chain2rhdefabcdefrKabcdrra)chainrWr r1rzrR)r%rr_r r r test_chains zTestBasicOps.test_chaincCs|ttddgtd|ttdgtd|ttdgg|tdtddgtd|tttddgdS) NrhrrrrKrrra)rWr r from_iterabler1rzrRr$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) Nrhrrr]ZbcdefrrKrrrarr[)copydeepcopy picklecopiersrrWr rYr1rzrRrrAr~r`)r%ZoperrSrEr r rtest_chain_reducibles  z!TestBasicOps.test_chain_reduciblecCs|ttjd|ttjg|ttjd|ttjgf|ttjtggft}|tddgf|t|gdt}|tddgtdgf|t|gddS)Nr rrhr)r]r^r_drMfghi)rr]r^r_rrMr)rzrRr __setstate__iterrWr r%rSr 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)NrhrrcSs|Srr r]r r rrFrGz0TestBasicOps.test_combinations.. ABCDABrCrDrrrrrr)rrrrrrKrarrrrarrrarrra)rrrc3st|t}||krdStt|}tfdd|DVtt|D]}|||||krLqnqLdS||d7<t|d|D]}||dd||<qtfdd|DVq@dS)Nc3s|]}|VqdSrr rHrpoolr r rGzHTestBasicOps.test_combinations..combinations1..rc3s|]}|VqdSrr rrr rrrGtuplelenr rreversed)r6r<r!indicesrjr rr combinations1s z5TestBasicOps.test_combinations..combinations1c3sPt|t}tt||D],}t|t|krtfdd|DVqdS)Nc3s|]}|VqdSrr rrr rrrGzHTestBasicOps.test_combinations..combinations2..)rr permutationsrsortedr r6r<r!rr rr combinations2s z5TestBasicOps.test_combinations..combinations2c3sPt|t}tt||D],}tt||krtfdd|DVqdS)Nc3s|]}|VqdSrr rrr rr rGzHTestBasicOps.test_combinations..combinations3..)rrcombinations_with_replacementrsetrr rr combinations3s z5TestBasicOps.test_combinations..combinations3rjcSsg|]}d|dqSrk r rHrr r rrI rGz2TestBasicOps.test_combinations..rc3s|]}|vVqdSrr rLvaluesr rrrGz1TestBasicOps.test_combinations..csg|]}|vr|qSr r rLr_r rrIrG)rzrR combinationsrrrWr rYrrr9rr assertTrueallrAr~r`) r%optestIntermediaterrrr!r<resultrEr r_rrtest_combinationssZ 6 zTestBasicOps.test_combinationscCs<|ttftddWdn1s.0YdS)NAAi )rz OverflowError MemoryErrorrr$r r rtest_combinations_overflow sz'TestBasicOps.test_combinations_overflowz"tuple reuse is specific to CPythonc CsH|tttttddd|ttttttddddSNabcderar)rWrrryidrassertNotEqualr 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)NrhrrrcSs|Srr rr r rrF2rGzATestBasicOps.test_combinations_with_replacement..ABC)rrrrrrrrr)rrrrrc3st|t}|s|rdSdg|}tfdd|DVtt|D]}|||dkrJqhqJdS||dg||||d<tfdd|DVq>dS)Nrc3s|]}|VqdSrr rrr rrCrGzPTestBasicOps.test_combinations_with_replacement..cwr1..rc3s|]}|VqdSrr rrr rrKrG)rrrr)r6r<r!rrr rrcwr1;s z=TestBasicOps.test_combinations_with_replacement..cwr1c3sRt|t}tt||dD],}t|t|kr tfdd|DVq dS)Nrepeatc3s|]}|VqdSrr rrr rrSrGzPTestBasicOps.test_combinations_with_replacement..cwr2..)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..numcombsrjcSsg|]}d|dqSrr rr r rrI[rGzCTestBasicOps.test_combinations_with_replacement..rcSsg|] \}}|qSr r )rHkvr r rrIkrGc3s|]}|vVqdSrr rLrr rrnrGzBTestBasicOps.test_combinations_with_replacement..csg|]}|vr|qSr r rLrr rrIprG)rrzrRrrrWr rYrrrrrrgroupbyrrAr~r`) r%cwrrrrrrr!r<rZ regular_combsZnorunsrEr rr"test_combinations_with_replacement+sR z/TestBasicOps.test_combinations_with_replacementcCs<|ttftddWdn1s.0YdS)Nr@)rzrrrr$r r r+test_combinations_with_replacement_overflowwsz8TestBasicOps.test_combinations_with_replacement_overflowc CsLt}|tttt|ddd|ttttt|ddddSr)rrWrrryrrr )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)NrhrrrrrDra)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)Nrc3s|]}|VqdSrr rrr rrrGzHTestBasicOps.test_permutations..permutations1..rc3s|]}|VqdSrr rrr rrrGr)r6r<r!rZcyclesrrr rr permutations1s& $  ( z5TestBasicOps.test_permutations..permutations1c3sbt|t}|dur|n|}tt||dD],}tt||kr0tfdd|DVq0dS)Nrc3s|]}|VqdSrr rrr rrrGzHTestBasicOps.test_permutations..permutations2..)rrrrrrr rr permutations2s z5TestBasicOps.test_permutations..permutations2rjcSsg|]}d|dqSrr rr r rrIrGz2TestBasicOps.test_permutations..rc3s|]}|vVqdSrr rLrr rrrGz1TestBasicOps.test_permutations..)N)N)rzrRrrrWr rrr9rrrrrAr~r`)r%rrr!r<rprEr rrtest_permutationss:   ,  zTestBasicOps.test_permutationscCs<|ttftddWdn1s.0YdS)Nrr)rzrrrr$r r rtest_permutations_overflowsz'TestBasicOps.test_permutations_overflowc CsH|tttttddd|ttttttddddSr)rWrrryrrrr 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) NrbABCDEFGrlrrrcSs g|]}t|t|kr|qSr rr rHtr r rrIrGz3TestBasicOps.test_combinatorics..cs g|]}tt|kr|qSr rrrr;r rrIrGcSs g|]}t|t|kr|qSr rrr r rrIrGcs g|]}tt|kr|qSr rrr;r rrIrG) rr rrrrrWrr9rrfilter __contains__)r%r!rDr7rpermcombr 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'rbrrrarkcSs t|Sr)rrr r rrFrGz,TestBasicOps.test_compress..cSs t|Sr)rrrr r rrFrGZCEFZBCDEFr) rWr compressrrrrrzrRrrY)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)(Nrhr]rr^rr_rra)r]rar^rK)r_rkrr r r)r]r)r^r)r]r )r^rrKr]r?rk @)r g@g@ @)ry@@1.1z2.1z3.1rlrzcount(3)zcount(4)z count(-9)ig$@z count(10.25)g$@z count(10.0)r count(%r))rWrcountr1r rzrRmaxsizer rrrreprrYrXfloatsys__mod__rrrAr~r`exc_info)r%BIGINTr_rr1r2valuerEr 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)2Nrhrra)r]r)r^rk)r_rl)startstepr)r#)r)r^r)r_rr]r^r)r!)r^rr r)r!)r^ra)r_rKrurcrqr?rkg?)rr g@r)rry!@ rz.1z1.2z1.3rjrdrg@)r?g)@g.@z count(3, 5)z count(8, 5)rz count(-9, 0)r z 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))rWrrrzrRr1rrr rrrrYrXrwrrrAr~r`)r%rr_rrrrrEr 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?rhZ abcabcabcarrk) rrrrrrrrrrr]Z bcabcabcabrZ cabcabcabcrcsg|] }tqSr rYrrr rrIrGz+TestBasicOps.test_cycle..rruZcdeabcdeabcdeabcdeabcsg|] }tqSr r&rrr rrIrGrj)rWr1cycler rzrRr/rrYrrrrAr~rBrCr`r)r%rErS_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) NdefgrhrruZdefgabcdefgabcdefgababcdefgrrrr )r'rr rWr1rzrRr)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))NkeyrhcSs|Srr rr r rrFrGz+TestBasicOps.test_groupby..r?))rr?ru)r rd)rrrd)r rd)r)rrcr2)rarn)rar$r3cSs|dSr:r r;r r rrFrGrrrcSsg|] \}}|qSr r rHrgr r rrIrGz-TestBasicOps.test_groupby..cSsg|] }|dqS)rr )rHr<r r rrIrGZ AABBBAAAArm)rrkZ abracadabracSsg|] \}}|qSr r r4r r rrIrG)r]r^r_rr<cSs$g|]\}}tt|ddr|qSrr.r4r r rrIrG)r]r^r<cSs g|]\}}tt||fqSr rr r4r r rrIrG)rkr]rr^)rr_)rrrr<cSs g|]\}}tt||fqSr r6r4r r rrIrGT)reversera)r7r9r8c@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 r4funcr rrI&rGz;TestBasicOps.test_groupby..gulp..)r)r6Zkeypr?r 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-rBr r<r rDummyCmp.srCr>cs$jdkrjd8_|SdSr)skip)objr;keyfuncr rrG9s z*TestBasicOps.test_groupby..keyfunc)r)rWr rrrzrRappendrrAr~rBrCr=r>rrr rYr ExceptionrD)r%rDduprr5elemrEZikZigkeysZ expectedkeysrSr(Zg1Zg2Zg3r<r=r@rCr rFr 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) Nrb)rrrKrrrrrrrrK)rrrKrbcSs|Srr rr r rrFLrGz*TestBasicOps.test_filter..cSs|Srr rr r rrFMrGrjra)rWr rrrboolr1rrzrRrYrrrAr~rBrCr`r%ansr_rEr 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) NrbrrNrrrrK)rrarkrjcSs|Srr rr r rrFgrGz/TestBasicOps.test_filterfalse..cSs|Srr rr r rrFhrGrjrar)rWr filterfalserrrOr1rrzrRrYrAr~r`r%rEr r rtest_filterfalseas zTestBasicOps.test_filterfalsecCs(ddtdtD}||gd|ttdtdtdtd|ttdtdtdtd|tdtdttdtd|ttdtd|ttt|ttd|tttdd|ddtdd Dtdd |d dtdd Dtdd dS) NcSsg|]\}}||fqSr r rHryr r rrIprGz)TestBasicOps.test_zip..rhrrbrracSsg|]}tt|qSr rr rHZpairr r rrIyrGrcSsg|]}|qSr r rZr r rrI{rG) r rrWr rrr1rzrR)r%rQr 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) NrhrcSsg|]\}}||fqSr r rWr r rrIrGz5TestBasicOps.test_zip_tuple_reuse..rcSsg|]\}}||fqSr r rWr r rrIrGrcSsg|]\}}||fqSr r rWr r rrIrGcSsg|]\}}||fqSr r rWr r rrIrGrr )r ryrr rWr{r|rdictfromkeysrrrrrAr~rBrCrYr`)r%idsrQrErr 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)Nrhrbri4i i riics"g|]tfddDqS)cs$g|]}t|kr|ndqSrr)rHargrr rrIrGz;TestBasicOps.test_ziplongest...r)rHr rrrIsz0TestBasicOps.test_ziplongest..cSsg|]}tdd|DqS)css|]}|durdp|VqdS)NXr rLr r rrrGz:TestBasicOps.test_ziplongest...rcrr r rrIrGrd fillvaluerarr*)zzip_longest('abc', fv=1)z3zip_longest('abc', fillvalue=1, bogus_keyword=None)zDid not raise Type in: cSsg|]}tt|qSr rYrZr r rrIrGrcSsg|]}|qSr r rZr r rrIrG)rhr*)rr|ryrrWr zip_longestr\r1rr rzrRevalglobalslocalsZfail)r%targetZstmtr r rtest_ziplongestsD  "( "(  zTestBasicOps.test_ziplongestcCs^ttttdd}|t|t|tttttdd}|tt |t|dS)Nrhr) r ryrrgrWr{r|rr\r])r%r^r r rtest_zip_longest_tuple_reusesz)TestBasicOps.test_zip_longest_tuple_reusec CsdttjdD]P}||tdd||tdd||tdddd||tddqdS)NrrhrZdefghrer)rrAr~r`rgrUr 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 ror r BadIterablesrq)rRrzrgZassertIsrp)r%rqcmr rortest_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)orwrrM)r%rtrrMr 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)rrtrMr$r r rr)s z5TestBasicOps.test_bug_7244..Repeater.__next__Nr+r,r-rur&r)r r r rRepeatersrwrrarrKc Ssdg}t||ddD]L\}}tdt||fWdn1sF0Y|||fq|S)Nrrestdout)rgrZcaptured_outputprintrH)rrrrrr r rruns  *z'TestBasicOps.test_bug_7244..run)rrrrrrer)r(rWrOrgrYrz)r%rwrrrzrSr 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 rirr^rra)rrrrr)rrrrrKrrjrbicsttt||dd}t|}|dkr4dVdStdd|DrJdSdg|}tddt||DVtt|D]h}||t||dkrqz||d7<t|d|D] }d||<qtddt||DVqnqzdSqndS) Nrrrr css|]}t|dkVqdS)rNra)rHrr r rrrGz>TestBasicOps.test_product..product1..css|]\}}||VqdSrr rHrrr r rrrGcss|]\}}||VqdSrr r~r r rr&rG) r ryrgetranyr rr)r kwdspoolsr!rrrr r rproduct1s$  z+TestBasicOps.test_product..product1c?sTttt||dd}gg}|D]fdd|D}q$|D]}t|Vq@dS)Nrrcs g|]}D]}||gq qSr r rWrr rrI0rGz?TestBasicOps.test_product..product2..)r ryrr)r rrrr7r rrproduct2+s z+TestBasicOps.test_product..product2rrhr)r]r^r_r+r/r0rqcsg|]}tqSr )randomchoice)rHrargtypesr rrI7rGz-TestBasicOps.test_product..rk)rrWr rr\rrzrRrrr randranger7ryr)r%r rr<rrrZ expected_lenr rr test_products6   "   zTestBasicOps.test_productcCsF|ttf$tdgdddiWdn1s80YdS)Nrirri)rzrrrr$r r rtest_product_overflow?sz"TestBasicOps.test_product_overflowc CsH|tttttddd|ttttttddddS)Nrhrr)rWrrryrrrr r$r r rtest_product_tuple_reuseDs z%TestBasicOps.test_product_tuple_reusec CsgdgfdgddgftdtdggdftdtdtdggftdtdtdggftdtdtdggffD]`\}}|ttt|||ttt||ttjd D]}||t|qqvdS) Nr rirr|rrar}rr) rrWr rrrrAr~r`)r%r rrEr r rtest_product_picklingIs  z"TestBasicOps.test_product_picklingcCsLtdd}|d|t|dtddd}|d|tt|dS)Nr)ra)r)rrar )rrr)rrrWrYrzr()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]ra)objecttimes)r]r]r]))rr])rr])rr]rr rKy?zrepeat((1+0j))rkzrepeat((1+0j), 5)zrepeat((1+0j), 0)r?rZaar)rWr rrrr1rzrRrrYrrrAr~r`)r%r<r_rEr r r test_repeatbs.   zTestBasicOps.test_repeatcCs`|ttddd|ttddd|ttdddd|ttdddddS)Nr]rzrepeat('a', 0)rr)rWrrr$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) Nrarrjrrrlrhrkrrrrr?rK)rWr ryr3powrrrr1rzrRnegrYrrrrrrAr~r`rPr 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) NrarrjrrKrkirKrkextrar?)rWr starmapr3rr rr1rrrzrRrYrrrrrrAr~r`rPr 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?rurar?rarur?ru)r?r?r?rarurq)))r?rrra)r?rqra))r?rr)r?rq))rr)rqr?rrrarKrrr]2)rrrrrcss|] }|VqdSrr rr r rrrGz+TestBasicOps.test_islice..rc@seZdZddZddZdS)z)TestBasicOps.test_islice..IntLikecSs ||_dSrvalr%rr r rrusz2TestBasicOps.test_islice..IntLike.__init__cSs|jSrrr$r r r __index__sz3TestBasicOps.test_islice..IntLike.__index__N)r+r,r-rurr r r rIntLikesrrk)rWr r/rrrzrRrrrrrYrrrAr~r`weakrefrefZassertIsNotNoner gc_collectZ assertIsNoner) r%r ZtgtargsrSZrar_rEwrrr 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) NrrarkrurrKrbrlrrrr?)rrrrrrrrrr)rWr takewhiler@rzrRr3rrYrrrOr(rrrrAr~r`)r%rrrEr 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)rurrKrbrlrrr?r)rWr dropwhiler@rzrRr3rrYrrrrrrAr~r`)r%rrEr r rtest_dropwhile-s  zTestBasicOps.test_dropwhilecCsd}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 |~| 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)Nrqrkrrrarrrhrr`invalidrcSsg|] }t|qSr r rr r rrI~rGz)TestBasicOps.test_tee..r? __class__r<r)teerWr r"rrrYrshufflerHrzrRrXrrrrrproxygetattrReferenceErrorrr1rrAr~r`r)r%r!r]r^rrorderZlistsZitsrr_rrt1t2ZtnewZt3rrQZlong_ansrEr 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)firstrY)r%rr|r rr)sz1TestBasicOps.test_tee_reenter..I.__next__N)r+r,r-rr&r)r r|r rIsrr)rassertRaisesRegexrOrY)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__Nr*r rr rrsr)rkr r) threadingEventrThreadrYr"rrrOrjoin)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 rrFrGz1TestBasicOps.test_StopIteration..cSs|Srr rr r rrFrG)rzr(rYr rr'rr#r/rrrrTryrrr)r%rrqr r rtest_StopIterations  zTestBasicOps.test_StopIterationcCs6tdggd}t|t|tt|dSr2)rrYgccollectr is_trackedrr r rtest_combinations_result_gcsz(TestBasicOps.test_combinations_result_gccCs6tdggd}t|t|tt|dSr2)rrYrrrrrr r r,test_combinations_with_replacement_result_gc$sz9TestBasicOps.test_combinations_with_replacement_result_gccCs6tdggd}t|t|tt|dSr2)rrYrrrrrr r rtest_permutations_result_gc,sz(TestBasicOps.test_permutations_result_gccCs4tdgg}t|t|tt|dSr)rrYrrrrrr r rtest_product_result_gc4s z#TestBasicOps.test_product_result_gccCs*tgg}t|tt|dSr)rgrrrrrYrr r rtest_zip_longest_result_gc<s z'TestBasicOps.test_zip_longest_result_gc)rKrN).rrKrbrKr)rbrKr)rWr rr$r r rr{szTestExamples.test_dropwhilecCsT|ddtdDtd|ddtdDtdtdtd td gdS) NcSsg|] \}}|qSr r r4r r rrIrGz-TestExamples.test_groupby..ZAAAABBBCCDAABBBZABCDABcSsg|]\}}t|qSr rr4r r rrIrGZ AAAABBBCCDZAAAAZBBBZCCr)rWrr r$r r rrM~s zTestExamples.test_groupbycCs&|ttddtdgddS)NcSs|dSrr rr r rrFrGz*TestExamples.test_filter..r?)rrarkrjrm)rWr rrr$r r rrRszTestExamples.test_filtercCs&|ttddtdgddS)NcSs|dSrr rr r rrFrGz/TestExamples.test_filterfalse..r?)rrrKrbrl)rWr rTrr$r r rrVszTestExamples.test_filterfalsecCs |tttddgddS)N)rrar?)rkrrarrmr)rWr ryrr$r r rrszTestExamples.test_mapcCst|ttddtd|ttdddtd|ttdddtd|ttddddtddS) NrrABrKCDCDEFGrACEG)rWr r/r$r r rrszTestExamples.test_islicecCs|ttddddgdS)NrxyrrrrX)rWr r r$r r rr[szTestExamples.test_zipcCs"|ttddddgddS)Nrr-re)rr)rr)rr)rWr rgr$r r rtest_zip_longestszTestExamples.test_zip_longestcCsD|ttddtttd|tttdgddS)Nrrz#AB AC AD BA BC BD CA CB CD DA DB DCra)r)rrr)rrr)rrr)rrr)rrr)rWr rryrsplitrr$r r rrs zTestExamples.test_permutationscCsH|ttddtttd|tttdddgddS)NrrzAx Ay Bx By Cx Cy Dx Dyrrar)rS)rrr)rrr)rrr)rrrr)rrrr)rWr rryrrrr$r r rrs zTestExamples.test_productcCs|ttddgddS)Nr?ra)r?r?r?)rWr rr$r r rrszTestExamples.test_repeatcCs"|tttgdgddS)N))rrk)rarrr)rWr rrr$r r r test_stapmapszTestExamples.test_stapmapcCs&|ttddgdddgdS)NcSs|dkSrr rr r rrFrGz-TestExamples.test_takewhile..rrrK)rWr rr$r r rrszTestExamples.test_takewhileN)r+r,r-rrrrrrrrr r)rrMrRrVrrr[rrrrrrr r r rrDs. 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"rVrrr#rrrYr(r enumerate) r6r rDr"rVr#rSZnextirrr 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) NrrrrKrrrrr?rarr)rWr r/rrrrY)r%rSr_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)rHrY)r%iterator containerr r r makecycles zTestGC.makecyclecCs g}|tdd|dg|dSNrrra)rrvr%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)rXrwr\rr)r%r]rr r rr szTestGC.test_countcCsg}|t|gd|dSr)rr'rr r rr)szTestGC.test_cyclecCs g}|ttd||g|dSr:)rrrOrr r rrszTestGC.test_dropwhilecCs$g}|t|gddd|dS)NrcSs|Srr rr r rrF rGz%TestGC.test_groupby..)rrrr r rrMszTestGC.test_groupbycCs>d}dd}tt||dD]\}}|jdg|qdS)Nr?cSs|Srr rr r rrFrGz'TestGC.test_issue2246..r-r)rr__dict__ setdefaultrH)r%r!rGrrr r rtest_issue2246 szTestGC.test_issue2246cCs$g}|tdd|gd|dS)NcSsdS)NTr rr r rrFrGz$TestGC.test_filter..r)rrrr r rrRszTestGC.test_filtercCsg}|tdd||dS)NcSsdSrr rr r rrFrGz)TestGC.test_filterfalse..)rrTrr r rrVszTestGC.test_filterfalsecCs&g}|t|gd|gd|dS)Nrra)rr rr r rr[szTestGC.test_zipcCsPg}|t|gd|gd||dg}|t|gd|gd|d|dS)Nrrare)rrg)r%r]r^r r rrszTestGC.test_zip_longestcCs$g}|tdd|gd|dS)NcSs|Srr rr r rrF'rGz!TestGC.test_map..r)rryrr 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)Nrrrar)rrrr r rr1szTestGC.test_productcCsg}|t||dSr)rrrr r rr5szTestGC.test_repeatcCs(g}|tdd||fgd|dS)NcWs|Srr rr r rrF;rGz%TestGC.test_starmap..r)rrrr r rr9szTestGC.test_starmapcCs"g}|ttdd||g|dS)Nrr)rrrOrr r rr=szTestGC.test_takewhileN)r+r,r-rrrrrrrr r)rrMrrRrVr[rrrrrrrrr r r rrs.rccs|D] }|VqdSrr seqnrr r rRAsrc@seZdZddZddZdS)GcCs ||_dSrrr%rr r rruHsz G.__init__cCs |j|Srr)r%rr r r __getitem__Jsz G.__getitem__N)r+r,r-rurr r r rrFsrc@s$eZdZddZddZddZdS)rcCs||_d|_dSr:rrr r rruOsz I.__init__cCs|Srr r$r r rr&Rsz I.__iter__cCs2|jt|jkrt|j|j}|jd7_|Sr2rrrr(r%rr r rr)Ts z I.__next__Nrvr r r rrMsrc@seZdZddZddZdS)IgcCs||_d|_dSr:rrr r rru\sz Ig.__init__ccs|jD] }|VqdSrrrr r rr&_s z Ig.__iter__Nr+r,r-rur&r r r rr Zsr c@seZdZddZddZdS)rdcCs||_d|_dSr:rrr r rruesz X.__init__cCs2|jt|jkrt|j|j}|jd7_|Sr2rr r r rr)hs z X.__next__N)r+r,r-rur)r r r rrdcsrdc@seZdZddZddZdS)NcCs||_d|_dSr:rrr r rrupsz N.__init__cCs|Srr r$r r rr&ssz N.__iter__Nr r r r rr nsr c@s$eZdZddZddZddZdS)EcCs||_d|_dSr:rrr r rruxsz E.__init__cCs|Srr r$r r rr&{sz E.__iter__cCs dddS)Nrarr r$r r rr)}sz E.__next__Nrvr r r rr vsr c@s$eZdZddZddZddZdS)ScCsdSrr rr r rrusz S.__init__cCs|Srr r$r r rr&sz S.__iter__cCstdSrr'r$r r rr)sz S.__next__Nrvr r r rrsrcCsttddttt|S)NcSs|Srr rr r rrFrGzL..)rryrr 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 rrrWr rvrrzrRrdr ZeroDivisionErrorr )r%rDr<r!r5r r rrsz'TestVariousIteratorArgs.test_accumulatec CsddtddtdddfD]}ttttttfD]V}|tt ||t|||tt ||||t||t||q.| t tt t || t tt t || ttt t|qdSN123rrZdog333333?r`rk)rrrr rrrrWr rrzrRrdr rr r%rDr5r 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) Nrrrrr`rrkr)rrrrr rrrrWr rrrzrRrdr rr )r%rDr!r5r r rrs(z%TestVariousIteratorArgs.test_compresscCsZddtddtdddfD]:}|ttt||ttt||ttt|qdSr)rrzrRrrdr rr )r%rDr r rrsz$TestVariousIteratorArgs.test_productcCsddtddtdddfD]}ttttttfD]B}t|d}t||d}tt t |||}| ||q.| t t t|| t t t|| ttt t|qdS) Nrrrrr`rrkra)rrrr rrrrr r/r'rWrzrRrdr rr )r%rDr5ZtgtlenZexpectedactualr r rr)s z"TestVariousIteratorArgs.test_cyclecCstdtdtddtdddfD]z}ttttttfD]*}|dd t||Dt ||q6| t tt || t tt || tt tt|q"dS) Nr?rrrjr/r`rrkcSsg|] \}}|qSr r )rHrZsbr r rrIrGz8TestVariousIteratorArgs.test_groupby..)rrrr rrrrWrr rzrRrdr rr rr r rrMs &(z$TestVariousIteratorArgs.test_groupbyc CstdtdtddtdddfD]}ttttttfD],}|tt t ||dd ||Dq6| t t t t || t t t t|| ttt t t|q"dS) Nr?rrrr`rrkcSsg|]}t|r|qSr )rrr r rrIrGz7TestVariousIteratorArgs.test_filter..)rrrr rrrrWr rrrzrRrdr rr rr r rrRs&z#TestVariousIteratorArgs.test_filterc CstdtdtddtdddfD]}ttttttfD],}|tt t ||dd ||Dq6| t t t t || t t t t|| ttt t t|q"dS) Nr?rrrr`rrkcSsg|]}t|r|qSr )rrr r rrIrGz.)rrrr rrrrWr rTrrzrRrdr rr rr r rrVs&z(TestVariousIteratorArgs.test_filterfalsec CsddtddtdddfD]}ttttttfD]P}|tt ||t |||tt ||||t ||||q.| t t t || t t t|| ttt t|qdSr)rrrr rrrrWr r rrzrRrdr rr rr 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 rrrrWr rgr rzrRrdr rr rr r rrls$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?rrqrrurrkcSsg|] }t|qSr )rrr r rrIrGz4TestVariousIteratorArgs.test_map..cSsg|] }||qSr r rr r rrIrG)rrrr rrrrWr ryrr3rrzrRrdr rr rr 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) NZ12345rrrr`rrkrrr?)rrrr rrrrWr r/rzrRrdr rr rr 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?rrqrrurrkcSsg|] }||qSr r rr r rrIrGz8TestVariousIteratorArgs.test_starmap..)rrrr rrrrrWr rr3rrzrRrdr rr )r%rDr5ssr 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?rrrr`rrk)rrrr rrrrrHrWr rrzrRrdr rr r%rDr5ZtgtrKr 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 rrrrrHrWr rrzrRrdr rr rr r rrs&  z&TestVariousIteratorArgs.test_dropwhilecCsddtddtdddfD]}ttttttfD]D}t||\}}|t |t |||t |t ||q.| t tt || t tt || tt tt|dqdS) Nrrrrr`rrkr)rrrr rrrrrWr rzrRrdr rr )r%rDr5Zit1Zit2r r rrsz TestVariousIteratorArgs.test_teeN)r+r,r-rrrrr)rMrRrVr[rlrrrrrrr r r rrs             rc@seZdZddZddZdS)LengthTransparencycCsL|ttddd|ttddd|ttddddS)NrrrrWr3 length_hintrr$r r rr+szLengthTransparency.test_repeatcCsh|ttddd|ttddd|ttdddd|ttdddddS)Nrrrrrr$r r rr0sz2LengthTransparency.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&)rrrzr rr5?s  z@RegressionTests.test_sf_793826..mutatingtuple..g)r ryr rrY)Ztuple1rZtuple2r5itemsgenr r r mutatingtuple;s  z5RegressionTests.test_sf_793826..mutatingtuplecs|attdd<dSr)Tr rrr rrJsz)RegressionTests.test_sf_793826..fr)rKrkrb)r r%rW)r%r$rsecondr r&rtest_sf_7938268s   zRegressionTests.test_sf_793826csfdd}fdd}g|ttt||d|ddgg|ttt||d|ddgg|ttt||ddgdS) Nc3s,ddVdtddS)Nrrr)rHAssertionErrorr Zhistr rgen1Ys   z,RegressionTests.test_sf_950057..gen1c3sddVddS)NrarrK)rHrr*r rgen2`s z,RegressionTests.test_sf_950057..gen2FrrT)rzr)r rrWr')r%r+r,r r*rtest_sf_950057Us  zRegressionTests.test_sf_950057cCsNtddtdD}|tt|Wdn1s@0YdS)Ncss|] }dVqdS)r Nr )rHZunusedr r rrvrGzERegressionTests.test_long_chain_of_empty_iterables..i)rrrrzr(rYrr r r"test_long_chain_of_empty_iterablesqs z2RegressionTests.test_long_chain_of_empty_iterablescs0fdd}ttd|D]\}tqdS)Ncs|dkrt|dkS)Nrkrbrr8r|r rr{sz,RegressionTests.test_issue30347_1..fr?)rrr )r%rrr r|rtest_issue30347_1zs z!RegressionTests.test_issue30347_1csJGfddd}dtttd|dtdD]}tdq6dS)Ncs"eZdZddZfddZdS)z,RegressionTests.test_issue30347_2..KcSsdSrr r r r rrusz5RegressionTests.test_issue30347_2..K.__init__csd7dkrtddS)NrTr&)r%otherr5rr rrBs z3RegressionTests.test_issue30347_2..K.__eq__N)r+r,r-rurBr r1r rKsr2rr?rr)rYrr)r%r2rr r1rtest_issue30347_2s   z!RegressionTests.test_issue30347_2N) r+r,r-r(r-rZskip_if_pgo_taskr.r/r3r r r rr6s  rc@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)ru)r%newargr clsr rruszKSubclassWithKwargsTest.test_keywords_in_subclass..Subclass.__init__)N)r+r,r-rur r6r rSubclasssr8r)r5zkeyword argumentsr)rr rrTrryrr/rrr'rrRZ assertNotInr )r%r8errr r6rtest_keywords_in_subclasss  z0SubclassWithKwargsTest.test_keywords_in_subclassN)r+r,r-r:r r r rr4sr4c@s:eZdZddZejZddZddZddZd d Z d S) SizeofTestcCstd|_dS)Nr!)structcalcsizessize_tr$r r rsetUpszSizeofTest.setUpcCsFtd}|j}|tdd|d|j|td|d|jdS)NZ3PiriZ12r) rhrhrhrhrhrhrhrhrhrhr?)r calcobjsize check_sizeofrr>r%basesizecheckr r rtest_product_sizeofs zSizeofTest.test_product_sizeofcCsLtd}|j}|tdd|d|j|ttdd|d|jdSNZ3Pnirrar?rK)rr@rArr>rrBr r rtest_combinations_sizeofs z#SizeofTest.test_combinations_sizeofcCsPt}td}|j}||dd|d|j||tdd|d|jdSrF)rrr@rAr>r)r%rrCrDr 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)NZ4PnirrKrarrkr?)rr@rArr>rrBr r rtest_permutations_sizeofs   z#SizeofTest.test_permutations_sizeofN) r+r,r-r?rrArErGrHrIr 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)Ngettotalrefcountrrk)rJrrrrr4rrr;rZ run_unittesthasattrrrrrrrKryZ run_doctestmodulesr+)verboseZ test_classesrcountsrr r r test_main s    rP__main__T)rN)N)@Zunittesttestr itertoolsrdecimalrZ fractionsrr3rrrA functoolsrrr<rrZMAX_Py_ssize_trZminsizerrrrrrrr"r#r1r7r9r=r>r@rr~rZTestCaserJrrrrrrr rdr r rrrrrr4rr;rJZ__test__rPr+r r r rs      }n*e      \&;