
    [cG                     p   d dl Z d dl mZ d dlmZ d dlmZ d dlmZ d dlm	Z	m
Z
 d dlmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZm Z m!Z!m"Z"m#Z#m$Z$m%Z%m&Z&m'Z'm(Z(m)Z)m*Z*m+Z+m,Z,m-Z-m.Z.m/Z/m0Z0m1Z1 d dl2m3Z3m4Z4  e
 e	d	                    Z5d
 Z6d Z7d Z8d Z9d Z:d Z;d Z<d Z=d Z>d Z?d Z@d ZAd ZBd ZCd ZDd ZEd ZFd ZGd ZHd ZId ZJd ZKd  ZLd! ZMd" ZNd# ZOd$ ZPd% ZQd& ZRd' ZSd( ZTd) ZUd* ZVd+ ZWd, ZXd- ZYd. ZZd/ Z[d0 Z\d1 Z]d2 Z^d3 Z_d4 Z`d5 Zad6 Zbd7 Zcd8 Zdd9 Zed: Zfd; Zgd< Zhd= Zid> Zjd? Zkd@ ZldS )A    N)starmap)raises)partial)Random)dumpsloads)&removegroupbymerge_sortedconcatconcatv
interleaveunique
isiterablegettermapcat
isdistinctfirstsecondnthtaketaildrop	interposegetrestlastconsfrequenciesreducebyiterate
accumulatesliding_windowcount	partitionpartition_alltake_nthpluckjoindifftopkpeekpeeknrandom_sample)addmul__no__default__c                     | S N xs    :lib/python3.11/site-packages/toolz/tests/test_itertoolz.pyidentityr8      s    H    c                     | dz  dk    S N   r   r4   r5   s    r7   isevenr=          q5A:r9   c                     | dz  dk    S )Nr<      r4   r5   s    r7   isoddrA       r>   r9   c                     | dz   S Nr@   r4   r5   s    r7   incrD   $       q5Lr9   c                     d| z  S )Nr<   r4   r5   s    r7   doublerG   (   rE   r9   c            	          t          t          t          d                    } t          |           t          usJ t	          |           t	          t          t          t          d                              k    sJ d S )N   )r	   r=   rangetypelistfilterrA   )rs    r7   test_removerO   ,   sc    vuQxx  A77$77d6%q2233333333r9   c                  N    t          t          g d          ddgddgdk    sJ d S )Nr@   r<         r<   rS   r@   rR   TF)r
   r=   r4   r9   r7   test_groupbyrU   2   s7    6<<<((Aq61a&,I,IIIIIIIr9   c                      t          dg d          ddgddgdk    sJ t          dgg d          ddgddgdk    sJ t          ddgg d          ddgddgdk    sJ d S )	Nr   )r@   r<   r@   rR   r<   r<   r<   rS   rW   rX   rY   rZ   )r@   r<   ))r@   r@   rY   )r
   r4   r9   r7   test_groupby_non_callabler]   6   s    166677VV	 	    A388899	! 	!! ! ! ! Aq6;;;<<&!&!	# 	## # # # # #r9   c            	      |   t          t          g dg d                    g dk    sJ t          t          g dg d                    g dk    sJ t          t          dgddgd	gg                     g d
k    sJ t          t          g dg dg d                     g dk    sJ t          t          g dg dd                     g dk    sJ t          t          dd	gdd	gd                     g dk    sJ d                    t          ddd                    dk    sJ d                    t          dddt                              dk    sJ d                    t          dddd                     dk    sJ t          t          dgg dt                              g d
k    sJ g dg dg dg} t          t          | dd  i          g d!k    sJ t          t                                g k    sJ t          t          g d                    g dk    sJ t          t          g d"dd	g                    g d#k    sJ t          t          g d"dd	gt                              g d#k    sJ t          t          dd$gdgdd%gd	d&gt                              g d'k    sJ d S )(Nr@   r<   rR   )r@   r@   r<   r<   rR   rR   )r@   rR   rI   )r<   rS      r@   r<   rR   rS   rI   r`   r@   r<   rS   rR   rQ   )rI   rR   r@   )r`   rS   rR   c                     |  S r3   r4   r5   s    r7   <lambda>z#test_merge_sorted.<locals>.<lambda>I   s    A2 r9   key)r`   rI   rS   rR   rR   r@   )r<   r@   rR   c                     | dz  S NrR   r4   r5   s    r7   rc   z#test_merge_sorted.<locals>.<lambda>K   
    16 r9   )r<   r@   r@   r<   rR   rR   c                     | dz  S rg   r4   r5   s    r7   rc   z#test_merge_sorted.<locals>.<lambda>M   rh   r9   )r<   r@   rR   rR    abc	aaabbbccccbac                 "    t          |            S r3   )ordr5   s    r7   rc   z#test_merge_sorted.<locals>.<lambda>Q   s    s1vvg r9   	cccbbbaaar<   rR   rS   )rW   r   rS   rR   r`   )rI   rR   r`   rI      rw   )	   r@   ry   rw   ry   ry   re   c                     | d         S rC   r4   r5   s    r7   rc   z#test_merge_sorted.<locals>.<lambda>V   s
    !A$ r9   )	rx   rW   rt   rr   ru   rs   rv   rz   r{   )r@   rS   rI   r@   r<   rR   rS   rI   rI      r`   )r@   r<   rR   rS   rI   r`   r~   )rL   r   r)   ro   r8   datas    r7   test_merge_sortedr   D   s   YYY			22337I7I7IIIIIYYY			22337I7I7IIIIIaS1a&1#r2233|||CCCCYYY			2!-/ / / 0 03E3E3EF F F FYYY			!1!13 3 3 4 47I7I7IJ J J JaVaV!1!13 3 3 4 47C||D D D D77<ue4455DDDD77<ue===>>+MMMM77<ue$5$57 7 7 8 8;FG G G GaS))):::;;|||KKKK$$$&>&>&>$$$&Dd77788 =P =P =P P P P P2%%%%YYY''((III5555YYYA//00OOOCCCCYYYAH===>> C C C    aVaS1a&1a&hGGGHH M M M      r9   c                      d                     t          d                    dk    sJ d                     t          d                    dk    sJ d S )Nrj   )ABC123A1B2C3)r   1A1BC)r)   r   r4   r9   r7   test_interleaver   a   sR    77:n--..(::::77:l++,,666666r9   c                      t          t          d                    dk    sJ t          t          d                    dk    sJ t          t          dt                              dk    sJ d S )Nr_   )r@   r<   r@   rR   rd   rW   )tupler   r=   r4   r9   r7   test_uniquer   f   sp    	""##y0000%%&&)3333	v...//6999999r9   c                  |    t          g d          du sJ t          d          du sJ t          d          du sJ d S )Nr_   Trk   rI   F)r   r4   r9   r7   test_isiterabler   l   sU    iii  D((((e$$$$a==E!!!!!!r9   c                  .   t          g d          du sJ t          g d          du sJ t          d          du sJ t          d          du sJ t          t          g d                    du sJ t          t          g d                    du sJ d S )Nr_   T)r@   r<   r@   FHelloWorld)r   iterr4   r9   r7   test_isdistinctr   r   s    iii  D((((iii  E))))g%''''g$&&&&d999oo&&$....d999oo&&%//////r9   c                  `   t          dd          dk    sJ t          dt          d                    dk    sJ t          dd          dk    sJ t          dddi          dk    sJ t          t          d	           sJ t          d
d          dk    sJ t          t          d           sJ d S )Nr<   ABCDECr@   rR   r<   r@   r   foobarc                  &    t          dddi          S )N
   r   )r   r4   r9   r7   rc   ztest_nth.<locals>.<lambda>   s    R"e)=)= r9   Dc                  <    t          dt          d                    S )Nr   r   )r   r   r4   r9   r7   rc   ztest_nth.<locals>.<lambda>   s    c"d7mm&<&< r9   )r   r   r   StopIteration
ValueErrorr4   r9   r7   test_nthr   }   s    q'??c!!!!q$w--  C''''q)!!!!q5%.!!U****-!=!=>>>>>r7s""""*<<=======r9   c                      t          d          dk    sJ t          d          dk    sJ t          t          ddd          t                    sJ d S )Nr   Ar   rR   zerooner   r@   )r   
isinstanceintr4   r9   r7   
test_firstr      s^    >>S    q    e51122C8888888r9   c                      t          d          dk    sJ t          d          dk    sJ t          t          ddd          t                    sJ d S )Nr   Br   r<   r   r   r   )r   r   r   r4   r9   r7   test_secondr      s^    '??c!!!!)!!!!fE2233S9999999r9   c                      t          d          dk    sJ t          d          dk    sJ t          t          ddd          t                    sJ d S )Nr   Er   r@   r   r   r   )r   r   r   r4   r9   r7   	test_lastr      s\    ==C	??adv%001137777777r9   c                      t          t          d                    t          d          k    sJ t          t          d                    t          d          k    sJ d S )Nr   BCDEr   r<   r@   )rL   r   r4   r9   r7   	test_restr      sR    W$v,,....Y  DLL000000r9   c                      t          t          dd                    t          d          k    sJ t          t          dd                    t          d          k    sJ d S )NrR   r   r   r<   r   )rR   r<   )rL   r   r4   r9   r7   	test_taker      sZ    Q  !!T%[[0000Q	""##tF||333333r9   c                  @   t          t          dd                    t          d          k    sJ t          t          dt          d                              t          d          k    sJ t          t          dd                    t          d          k    sJ d S )NrR   r   CDEr<   r   r   )rL   r   r   r4   r9   r7   	test_tailr      s    Q  !!T%[[0000QW&&''4;;6666Q	""##tF||333333r9   c                      t          t          dd                    t          d          k    sJ t          t          dd                    t          d          k    sJ d S )NrR   r   DEr@   r   r   )rL   r   r4   r9   r7   	test_dropr      sZ    Q  !!T$ZZ////Q	""##tF||333333r9   c                  f    t          t          dd                    t          d          k    sJ d S )Nr<   r   ACE)rL   r'   r4   r9   r7   test_take_nthr      s1    G$$%%e444444r9   c                     t          dd          dk    sJ t          t          ddgd                    t          d          k    sJ t          ddddd          dk    sJ t          dd	gdddd          d
k    sJ t          di d          dk    sJ t          i g dd          dk    sJ t          ddgdd          dk    sJ t          dgd          dk    sJ t          g d          dk    sJ t          t          d           sJ t          t          d           sJ t          t
          d           sJ t          t
          d           sJ t          t          d           sJ d S )Nr@   r   r   rR   BDar<   r   bcr   rW   r   r   defaultr_   r   ABr   )r   r   r   r4   c                  "    t          dd          S )Nr   r   r   r4   r9   r7   rc   ztest_get.<locals>.<lambda>   s    c"enn r9   c                  &    t          dddi          S )Nr   r   r@   r   r4   r9   r7   rc   ztest_get.<locals>.<lambda>   s    CS!H$5$5 r9   c                  &    t          i g d          S )Nr_   r   r4   r9   r7   rc   ztest_get.<locals>.<lambda>   s    SYYY%7%7 r9   c                  (    t          g ddd           S )Nr_   r@   r   r4   r9   r7   rc   ztest_get.<locals>.<lambda>   s    SAt%<%< r9   c                  0    t          di t                    S )Nr   r   )r   no_default2r4   r9   r7   rc   ztest_get.<locals>.<lambda>   s    Cr;$G$G$G r9   )r   rL   r   
IndexErrorKeyError	TypeErrorr4   r9   r7   test_getr      s   q'??c!!!!QFG$$%%d3333s!!!,,--2222Sz3344>>>>ub%(((E1111r999e,,,55551vtS!!Z////sD>>V####r4==B*4455555(5566666)7788888)<<=====(GGHHHHHHHr9   c            	      ~   t          t          t          g dg dg                    g dk    sJ t          t          t          g dg dg dg                    t          t	          d                    k    sJ d } g d	t          t          t          t          |           g d
g dg                    k    sJ d S )Nr_   )rS   rI   r`   ra   )rR   r<   r@   r   )r`   rI   rS   )ry   rw   r~   r   c                     | dz   S rC   r4   )is    r7   rc   ztest_mapcat.<locals>.<lambda>   s
    AE r9   )rS   rI   r`   r~   rw   ry   rR   rS   rI   )r`   r~   rw   )rL   r   r8   reversedrJ   r   map)rD   s    r7   test_mapcatr      s    999iii"899::       <<<III"FGGHHrOO    /CS))IIIyyy+ABBCCD E E E E Er9   c                  T    t          t          dddg                    g dk    sJ d S )Nr@   r<   rR   r_   )rL   r   r4   r9   r7   	test_consr      s1    QA  III------r9   c                      t          t          g g g g                    g k    sJ t          t          dt          ddgt          d          g                              g dk    sJ d S NrI   r   r    ʚ;)r   r   r   r@   r<   )rL   r   r   rJ   r4   r9   r7   test_concatr      s~    B|$$%%++++a#sU:->-> ?@@AABB  ! ! ! ! !r9   c                      t          t          g g g                     g k    sJ t          t          dt          ddgt          d                                        g dk    sJ d S r   )rL   r   r   rJ   r4   r9   r7   test_concatvr      sy    B##$$****a#sU:->->??@@AA  ! ! ! ! !r9   c                     dt          t          t          dt          d                                        k    sJ dd                    t          dd                    k    sJ t          t          dt          j        dd	                              g d
k    sJ t          t          dg d                    g dk    sJ d S )Nr   r   tXaXrXzXaXnrj   Xtarzanr   r@   rS   )r@   r   r@   r   r@   r   r@   .r   )r   r   r   r   r   )r   r   r   rJ   r)   rL   	itertoolsrepeatr4   r9   r7   test_interposer      s    %YsE*,=,=>>??@@@@@@BGGIc8$<$<======	!Y-a3344559N9N9NNNNN	#//004M4M4MMMMMMMr9   c            
          t          g d          dddddk    sJ t          g           i k    sJ t          d          dddddddddk    sJ d S )	N)catpigr   eelr   dogr   r   r<   r@   rR   )r   r   r   r   onomatopoeiarS   )r   er   monpt)r   r4   r9   r7   test_frequenciesr      s     4 4 4 5 5a!445 6 6 6 r??b    ~&&01+K +K K K K K K Kr9   c                  2   g d} d }t          |t          | d          dddk    sJ t          |t          | d          dd	dk    sJ d
dddddddddddddddg}t          d d |d          dddk    sJ t          dd |d          dddk    sJ d S )Nr}   c                     | dz  dk    S r;   r4   r5   s    r7   rc   ztest_reduceby.<locals>.<lambda>   s    q1uz r9   r   ry   r`   )FTr@      rw   zbuild roadsCAi@B )namestatecostzfight crimeILi zhelp farmersi i@ c                     | d         S )Nr   r4   r5   s    r7   rc   ztest_reduceby.<locals>.<lambda>   s
    aj r9   c                     | |d         z   S Nr   r4   accr6   s     r7   rc   ztest_reduceby.<locals>.<lambda>       36? r9   iO i   )r   r   r   c                     | |d         z   S r  r4   r  s     r7   rc   ztest_reduceby.<locals>.<lambda>  r  r9   )r    r/   r0   )r   r=   projectss      r7   test_reducebyr     s+   ??D!!FFCq))Qa-@-@@@@@FCq))Rq-A-AAAAA&wGG&vFF'$HH'$GGIH ((22a! !+2'$B$BC C C C G22a! !+2'$B$BC C C C C Cr9   c                      t          t          t          g d          dddk    sJ t          t          t          g dt                    dddk    sJ d S )NrQ   r`   rS   rT   )r    r=   r/   r   r4   r9   r7   test_reduce_by_initr	    sw    FC..u2M2MMMMMFC{;;eGL@N @N N N N N N Nr9   c                  b    d } t          t          | g dt                    ddhddhdk    sJ d S )Nc                 0    |                      |           | S r3   )r/   )sr   s     r7   set_addz0test_reduce_by_callable_default.<locals>.set_add  s    	ar9   )r@   r<   rR   rS   r@   r<   r<   rS   r@   rR   rT   )r    r=   set)r  s    r7   test_reduce_by_callable_defaultr    s\       FG%7%7%7==1vq!f%%& & & & & &r9   c            	          t          t          j        t          t          d          dd                    g dk    sJ t          t          dt          t          d                              g dk    sJ d S )Nr   rI   )r   r@   r<   rR   rS   rS   r@   )r@   r<   rS   rw   )rL   r   islicer!   rD   r   rG   r4   r9   r7   test_iterater    sm    	 a!Q7788OOOKKKKQ**++,,<<<<<<r9   c                  &   t          t          t          g d                    g dk    sJ t          t          t          g d                    g dk    sJ t          t          t          g dd                    g dk    sJ d } t	                      }t          t          | g |                    |gk    sJ t          t          | g                     g k    sJ t          t          t          g dt
                              g dk    sJ d S )	Nr}   )r@   rR   r`   r   r   )r@   r<   r`      x   )r  r   r<   rI   ry      c                      t          d          )Nzbinop should not be called)AssertionErrorr   r   s     r7   binopztest_accumulate.<locals>.binop  s    9:::r9   r_   r@   rR   r`   )rL   r"   r/   r0   objectr   )r  starts     r7   test_accumulater    s%   
300115F5F5FFFFF
300115G5G5GGGGG
344559M9M9MMMMM; ; ; HHE
5"e,,--%8888
5"%%&&",,,,
3			;7788IIIEEEEEEr9   c                  t    t          t          t          t          d                              g dk    sJ d S )Nr_   r  )rL   r"   r/   r   r4   r9   r7   -test_accumulate_works_on_consumable_iterablesr!  '  s5    
3Y0011YYY>>>>>>r9   c                      t          t          dg d                    g dk    sJ t          t          dg d                    ddgk    sJ d S )Nr<   rQ   )rW   r<   rR   rR   rS   rR   r_   rq   rL   r#   r4   r9   r7   test_sliding_windowr&  +  sb    q,,,//004L4L4LLLLLq,,,//00Y	4JJJJJJJr9   c                      t          t          dddg                    g k    sJ t          t          dddg                    g k    sJ d S )NrR   r@   r<   r~   r%  r4   r9   r7   %test_sliding_window_of_short_iteratorr(  0  sV    q1a&))**b0000q1a&))**b000000r9   c                  f   t          t          dg d                    ddgk    sJ t          t          dt          d                              ddgk    sJ t          t          dt          d	          d
                    ddgk    sJ t          t          dg                     g k    sJ d S )Nr<   rQ   rW   r$  rR   r~   r   r@   r<   r   rS   r  )pad)rR   r  r  )rL   r%   rJ   r4   r9   r7   test_partitionr,  5  s    	!\\\**++/?????	!U1XX&&''Iy+AAAAA	!U1XX2...//I4?4A A A A A	!R  !!R''''''r9   c            	         t          t          dg d                    ddgk    sJ t          t          dt          d                              ddgk    sJ t          t          dg                     g k    sJ  G d d	t                    }  |             }||||f|||fg}t          t          d
|gdz                      |k    sJ t          t          d
t	          |gdz                                |k    sJ d S )Nr<   rQ   rW   r$  rR   rI   r*  c                       e Zd Zd ZdS )%test_partition_all.<locals>.NoComparec                 B    | j         |j         k    rdS t                      )NT)	__class__r   )selfothers     r7   __eq__z,test_partition_all.<locals>.NoCompare.__eq__D  s"    ~0 t,,r9   N)__name__
__module____qualname__r4  r4   r9   r7   	NoComparer/  C  s#        	 	 	 	 	r9   r8  rS   r~   )rL   r&   rJ   r  r   )r8  objresults      r7   test_partition_allr;  =  s-   a..//FF3CCCCCaq**++	6/BBBBBa$$%%++++    F   
 )++CCc"S#sO4Fa#q))**f4444aseAg//00F::::::r9   c                     t          d          dk    sJ t          g           dk    sJ t          t          d                    dk    sJ t          d          dk    sJ t          t          d                    dk    sJ d S )Nr_   rR   r   rQ   rS   hellorI   )r$   r   r4   r9   r7   
test_countr>  N  s    q    99>l##$$))))>>Qg1$$$$$$r9   c            	         t          t          dddgddgddgg                    g dk    sJ t          t          ddgg dg d	g                    d
dgk    sJ t          t          ddgddggd                     d dgk    sJ dddddddg} t          t          d|                     ddgk    sJ t          t          d| d                    ddgk    sJ t          t          ddg|                     ddgk    sJ t          t          dg|                     ddgk    sJ t          t          ddg| d                    ddgk    sJ t          t          d           sJ t          t          d           sJ t          t          dddgddgddggt
                              g dk    sJ t          t          d           sJ d S )Nr   r@   r<   rR   rS   rI   )r   r<   rS   r*  r   r   r$  cheese)idr   pies)rA  r   pricerA  rC  r   )r@   r@  )r<   rB  )r@  )rB  r3  )r   r   )r@   r   c                  @    t          t          ddgg                    S Nr@   r   rL   r(   r4   r9   r7   rc   ztest_pluck.<locals>.<lambda>c  s    d5aSE??&;&; r9   c                  B    t          t          dddig                    S )Nr   rA  r@   rF  r4   r9   r7   rc   ztest_pluck.<locals>.<lambda>d  s    Dvq	{)C)C$D$D r9   c                  L    t          t          ddggt                              S rE  )rL   r(   r   r4   r9   r7   rc   ztest_pluck.<locals>.<lambda>g  s    d5aSE;+G+G&H&H r9   )rL   r(   r   r   r   r   r   s    r7   
test_pluckrI  W  s)   a1a&1a&1a&12233yyy@@@@q!fyyy)))4556666:JJJJJa1#1v--..4);;;;h''6A)N)NODdD!!""q!f,,,,gtQ''((QF2222tVnd++,,0LLLLLvh%%&&;	*BBBBBw($22337GGGGG*;;<<<<<(DDEEEEEa1a&1a&1a&1;??@@IIIMMMM*HHIIIIIIIr9   c                  N   g d} g d}d }t          t          t          t          t          | t
          |                              }h d}||k    sJ t          t          t          t          t          | t
          |t          t                                        }||k    sJ d S )Nr@   r   r<   tworR   three)appler@   oranger@   )bananar<   )coconutr<   c                 $    | d         | d         z   S Nr   r@   r4   )pairs    r7   addpairztest_join.<locals>.addpairn  s    Awa  r9   >   r@   r   rR  r@   r@   r   rT  r@   r<   rN  rU  r<   r<   rN  rV  r<   left_defaultright_default)r  r   r/   r)   r   r   r   )namesfruitrZ  r:  expecteds        r7   	test_joinre  j  s    222EHHHE! ! ! d5%??@@AAF. . .H
 Xd5%0;1<> > > ? ? @ @F Xr9   c                       t          d          d          dk    sJ  t          dg          d          dk    sJ  t          g           d          dk    sJ d S )Nr   Alicer   r   r4   )r   r4   r9   r7   test_getterrh    sm    6!99W$$$$61#;;w6))))6"::g"$$$$$$r9   c            	         d t          d          D             } d t          d          D             }t          t          d| d|                    t          t          d | d |                    k    sJ d }t          t          ddg| ddg|                    t          t          || ||                    k    sJ d	 }t          t          dg| dg|                    t          t          || ||                    k    sJ d S )
Nc                     g | ]	}||d z  f
S r\   r4   .0r   s     r7   
<listcomp>z&test_key_as_getter.<locals>.<listcomp>  s     +++Q1a4y+++r9   rI   c                 $    g | ]}||d z  |dz  fS r#  r4   rk  s     r7   rm  z&test_key_as_getter.<locals>.<listcomp>  s&    ...Q1adO...r9   r   c                     | d         S Nr   r4   r5   s    r7   rc   z$test_key_as_getter.<locals>.<lambda>  
    ! r9   c                     | d         S rp  r4   r5   s    r7   rc   z$test_key_as_getter.<locals>.<lambda>  rq  r9   c                 "    | d         | d         fS rX  r4   r5   s    r7   rc   z$test_key_as_getter.<locals>.<lambda>  s    QqT1Q4L r9   r@   c                     | d         fS rp  r4   r5   s    r7   rc   z$test_key_as_getter.<locals>.<lambda>  s    QqTG r9   )rJ   r  r)   )squarespowsr   s      r7   test_key_as_getterrw    sf   ++%((+++G..U1XX...DtAw4(())Snng6Dnd2L 2L .M .M M M M M !
 CtQFGaVT2233s4W@CT<K <K 8L 8L L L L L 
CtQC1#t,,--T#w:=t6E 6E 2F 2F F F F F F Fr9   c                      g d} g d}t          t          t          t          t          | t
          |                              }h d}||k    sJ d S )N)rL  rM  rO  )r@   uno)r<   dosrQ  >   r@   ry  rR  r@   r@   ry  rT  r@   r<   rz  rU  r<   r<   rz  rV  r<   r[  r\  r]  r^  r  r   r/   r)   r   r   rb  rc  r:  rd  s       r7   test_join_double_repeatsr    sg    JJJEHHHEd5%??@@AAF. . .H Xr9   c                      g d} ddg}t          t          t          t          t          | t
          |                              }dh}||k    sJ d S )NrK  )rR  rI   rS  r\  r  r  s       r7   test_join_missing_elementr    s[    222E=)Ed5%??@@AAF'(HXr9   c            	      |    t          t          t          ddgt          ddgd                     } ddh}| |k    sJ d S )Nr@   r<   rR   )r`  rY   rg   r  r)   r8   r:  rd  s     r7   test_left_outer_joinr    sK    hA1a&tLLLMMF	"HXr9   c            	      |    t          t          t          ddgt          ddgd                     } ddh}| |k    sJ d S )Nr@   r<   rR   )ra  rY   r@   Nr  r  s     r7   test_right_outer_joinr    sK    hA1a&MMMNNF	"HXr9   c            
      ~    t          t          t          ddgt          ddgd d                     } h d}| |k    sJ d S )Nr@   r<   rR   r_  >   rg   r  rY   r  r  s     r7   test_outer_joinr    sY    hA1a&#'t= = = > >F---HXr9   c            
         t          t          d           sJ t          t          d           sJ t          t          d           sJ t          t          ddgdt	          ddg                              g k    sJ t          t          g ddt	          g d	                              d
dgk    sJ t          t          ddgdg                    dgk    sJ t          t          ddgdgd                     ddgk    sJ t          t          d           sJ t          t          d           sJ t          t          d           sJ t          t          d           sJ t          t          ddg                    dgk    sJ ddddddg} ddddddg}dddfd}t          t          | ||                    ddddddfgk     d S )Nc                  8    t          t                                S r3   rL   r*   r4   r9   r7   rc   ztest_diff.<locals>.<lambda>  s    T$&&\\ r9   c                  >    t          t          ddg                    S Nr@   r<   r  r4   r9   r7   rc   ztest_diff.<locals>.<lambda>  s    T$1v,,%7%7 r9   c                  @    t          t          ddgd                    S Nr@   r<   rR   r  r4   r9   r7   rc   ztest_diff.<locals>.<lambda>  s    T$1vq//%:%: r9   r@   r<   rW   r_   )r@   r   rR   )r@   r<   r   )r<   r   r<   )rR   rR   r   r   )r@   r   r   )r<   Nc                  :    t          t          g                     S r3   r  r4   r9   r7   rc   ztest_diff.<locals>.<lambda>  s    T$r((^^ r9   c                  <    t          t          g g                    S r3   r  r4   r9   r7   rc   ztest_diff.<locals>.<lambda>  s    T$t**%5%5 r9   c                  @    t          t          ddgg                    S r  r  r4   r9   r7   rc   ztest_diff.<locals>.<lambda>  s    T$Ax..%9%9 r9   c                  B    t          t          ddgdg                    S r  r  r4   r9   r7   rc   ztest_diff.<locals>.<lambda>  s    T$A{*;*;%<%< r9   rX   r#  dollar)r   currencyd   yeni,  g{Gz?)r  r  c                 2    | d                  | d         z  S )Nr  r   r4   )itemconversionss    r7   	indollarsztest_diff.<locals>.indollars  s    4
+,tF|;;r9   rd   )r   r   rL   r*   r   )data1data2r  r  s      @r7   	test_diffr    sn   )1122222)7788888)::;;;;;aVVT1a&\\2233r9999YYY
D,<,<==>>JC         aVbT""##y0000aVbT400011gy5IIIII)3344444)5566666)99:::::)<<=====ff%&&''F83333X..X..0E u--u--/E t,,K< < < < < 	eU		*	*	*++	*	*Se,L,LM0O O O O Or9   c            	         t          dg d          dk    sJ t          dg dd           dk    sJ t          dt          g d          d           dk    sJ t          dd	d
ddddd
d	ddddgd          d
d	ddddfk    sJ t          dd	d
ddddd
d	ddddgd          d	d
ddddfk    sJ t          dg dd          dk    sJ d S )Nr<   )rS   r@   rI   r<   )rI   rS   c                     |  S r3   r4   r5   s    r7   rc   ztest_topk.<locals>.<lambda>  s    r r9   rd   rW   )rI   r@   rS   r<   c                     |  S r3   r4   r5   s    r7   rc   ztest_topk.<locals>.<lambda>  s    aR r9   r@   r   r  ry   r   r   )rr   rX   rY   rR   r@   rS   r   r   )r  r  )r+   r   r4   r9   r7   	test_topkr    s   <<<  F****<<<\\222f<<<<4%%<<888FBBBB!"%%QQ'7'71%%QQ'7'79>AC C C		!!,,-. . . . !"%%QQ'7'71%%QQ'7'79>AC C Cr		!!,,-. . . . ;;;Q??     r9   c                  <    t          dg dd           dk    sJ d S )NrS   )rI   ry   r<   r@   rI   rR   c                     dS rC   r4   r5   s    r7   rc   z%test_topk_is_stable.<locals>.<lambda>  s    Q r9   rd   )rI   ry   r<   r@   )r+   r4   r9   r7   test_topk_is_stabler    s1    %%%;;777<GGGGGGr9   c                      g d} t          |           \  }}|| d         k    sJ t          |          | k    sJ t          t          d           sJ d S )Nrg  BobCarolr   c                       t          g           S r3   )r,   r4   r9   r7   rc   ztest_peek.<locals>.<lambda>  s    b r9   )r,   rL   r   r   )alistelementblists      r7   	test_peekr    sh    %%%E%[[NGUeAh;;%-!1!12222222r9   c                      d} t          d|           \  }}|| d d         k    sJ t          |          | k    sJ t          t          |           dz  |           \  }}|| k    sJ t          |          | k    sJ d S )Nr  r<   rS   )r-   r   len)r  elementsr  s      r7   
test_peeknr    s    %EAuooOHeuRaRy    <<5    CJJNE22OHeu<<5      r9   c                     t          t          d                    t          t          dd                    k    sJ d
fd	             } |              k    sJ  d          }t          d          }| |          k    sJ | |k    sJ  t	          t
                               t	          t
                              k    sJ  t	          t
                               t	          t                                          k    sJ  d           d          k    sJ t          t          fd	          sJ d S )Nr  r@   i  probseqrandom_statec                 B    t          t          d|                     S )Ng?r  )rL   r.   )rsr  s    r7   rc   z$test_random_sample.<locals>.<lambda>  s/    d=c5:>@$B $B $B C C r9   i     ar   c                        g           S r3   r4   )
mk_rsamples   r7   rc   z$test_random_sample.<locals>.<lambda>%  s    ZZ^^ r9   r[   )rL   rJ   r.   r   hashr  r   r   )rsample1rsample2randobjr  r  s      @@r7   test_random_sampler    sz   sE1%dCCCDDMMMMC C C C CJ z||Hzz||####z$HTllGzz'******x:d6ll##zz$v,,'?'?????:d6ll##zz$vxx..'A'AAAAA:dzz$//////)33334444444r9   )mr   r   toolz.utilsr   	functoolsr   randomr   pickler   r   toolz.itertoolzr	   r
   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r    r!   r"   r#   r$   r%   r&   r'   r(   r)   r*   r+   r,   r-   r.   operatorr/   r0   r   r8   r=   rA   rD   rG   rO   rU   r]   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r  r	  r  r  r  r!  r&  r(  r,  r;  r>  rI  re  rh  rw  r  r  r  r  r  r  r  r  r  r  r  r4   r9   r7   <module>r     s                                      	E 	E 	E 	E 	E 	E 	E 	E 	E 	E 	E 	E 	E 	E 	E 	E 	E 	E 	E 	E 	E 	E 	E 	E 	E 	E 	E 	E 	E 	E 	E 	E 	E 	E 	E 	E 	E 	E 	E 	E 	E 	E 	E 	E 	E 	E 	E 	E 	E 	E 	E 	E 	E 	E 	E 	E 	E 	E 	E 	E 	E 	E 	E 	E 	E 	E 	E 	E 	E 	E 	E 	E 	E 	E 	E 	E 	E 	E 	E 	E         eEE+,,--          4 4 4J J J# # #  :7 7 7
: : :" " "0 0 0> > >9 9 9: : :8 8 81 1 1
4 4 4
4 4 44 4 4
5 5 5I I I(	E 	E 	E. . .! ! !! ! !N N NK K KC C C&N N N& & &= = =
F F F? ? ?K K K
1 1 1
( ( (; ; ;"% % %J J J&  ,% % %F F F   $        O O O>   H H H3 3 3! ! !5 5 5 5 5r9   