
    biL                     b   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@ Zly)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    U/home/cdr/jupyterlab/.venv/lib/python3.12/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 y N   )r	   r=   rangetypelistfilterrA   )rs    r7   test_removerP   ,   sF    vuQx A7$7d6%q23333r9   c                  @    t        t        g d      ddgddgdk(  sJ y )Nr@   r<         r<   rT   r@   rS   TF)r
   r=   r4   r9   r7   test_groupbyrV   2   s$    6<(Aq61a&,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 y )	Nr   )r@   r<   r@   rS   r<   r<   r<   rT   rX   rY   rZ   r[   )r@   )r<   ))r@   r@   rZ   )r
   r4   r9   r7   test_groupby_non_callabler]   6   s    167VV	   A389	!! ! ! Aq6;<&!&!	## # #r9   c            	      X   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j                  t        ddd            dk(  sJ dj                  t        dddt                    dk(  sJ dj                  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 y )(Nr@   r<   rS   )r@   r@   r<   r<   rS   rS   )r@   rS   rJ   )r<   rT      r@   r<   rS   rT   rJ   r`   r@   r<   rT   rS   rR   )rJ   rS   r@   )r`   rT   rS   c                     |  S r3   r4   r5   s    r7   <lambda>z#test_merge_sorted.<locals>.<lambda>I   s    A2 r9   key)r`   rJ   rT   rS   rS   r@   )r<   r@   rS   c                     | dz  S NrS   r4   r5   s    r7   rc   z#test_merge_sorted.<locals>.<lambda>K   
    16 r9   )r<   r@   r@   r<   rS   rS   c                     | dz  S rg   r4   r5   s    r7   rc   z#test_merge_sorted.<locals>.<lambda>M   rh   r9   )r<   r@   rS   rS    abc	aaabbbccccbac                     t        |        S r3   )ordr5   s    r7   rc   z#test_merge_sorted.<locals>.<lambda>Q   s    s1vg r9   	cccbbbaaar<   rS   rT   )rX   r   rT   rS   r`   )rJ   rS   r`   rJ      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   rX   rt   rr   ru   rs   rv   rz   r{   )r@   rT   rJ   r@   r<   rS   rT   rJ   rJ      r`   )r@   r<   rS   rT   rJ   r`   r~   )rM   r   r)   ro   r8   datas    r7   test_merge_sortedr   D   sa   Y	237IIIIY	237IIIIaS1a&1#r23|CCCY	2!-/ 03EF F FY	!13 47IJ J JaVaV!13 47CD D D77<ue45DDD77<ue=>+MMM77<ue$57 8;FG G GaS):;|KKK$&>$&Dd778 =P P P P2%%%Y'(I555YA/0OCCCYAH=> C   aVaS1a&1a&hGH M   r9   c                      dj                  t        d            dk(  sJ dj                  t        d            dk(  sJ y )Nrj   )ABC123A1B2C3)r   1A1BC)r)   r   r4   r9   r7   test_interleaver   a   s:    77:n-.(:::77:l+,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 y )Nr_   )r@   r<   r@   rS   rd   rX   )tupler   r=   r4   r9   r7   test_uniquer   f   sL    	"#y000%&)333	v./6999r9   c                  R    G d d      }  G d d      } G d d      } G d d      }t        g d	      d
u sJ t        d      d
u sJ t         |              d
u sJ t         |             d
u sJ t        d      du sJ t         |             du sJ t         |             du sJ y )Nc                       e Zd Zd Zy)%test_isiterable.<locals>.IterIterablec                     t        g d      S Nabc)iter)selfs    r7   __iter__z.test_isiterable.<locals>.IterIterable.__iter__p   s    ((r9   N__name__
__module____qualname__r   r4   r9   r7   IterIterabler   o       	)r9   r   c                       e Zd Zd Zy)(test_isiterable.<locals>.GetItemIterablec                     g d|   S r   r4   r   items     r7   __getitem__z4test_isiterable.<locals>.GetItemIterable.__getitem__t       "4((r9   N)r   r   r   r   r4   r9   r7   GetItemIterabler   s   r   r9   r   c                       e Zd ZdZy)$test_isiterable.<locals>.NotIterableNr   r4   r9   r7   NotIterabler   y   s    r9   r   c                       e Zd ZdZd Zy)3test_isiterable.<locals>.NotIterableEvenWithGetItemNc                     g d|   S r   r4   r   s     r7   r   z?test_isiterable.<locals>.NotIterableEvenWithGetItem.__getitem__   r   r9   )r   r   r   r   r   r4   r9   r7   NotIterableEvenWithGetItemr   |   s    	)r9   r   r_   Trk   rJ   F)r   )r   r   r   r   s       r7   test_isiterabler   l   s    ) )) ) ) ) i D(((e$$$ln%---o'(D000a=E!!!km$---023u<<<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 y )Nr_   T)r@   r<   r@   FHelloWorld)r   r   r4   r9   r7   test_isdistinctr      s|    i D(((i E)))g%'''g$&&&d9o&$...d9o&%///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 y )Nr<   ABCDECr@   rS   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"d7m&< 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 y )Nr   Ar   rS   zerooner   r@   )r   
isinstanceintr4   r9   r7   
test_firstr      sA    >S   q   e512C888r9   c                      t        d      dk(  sJ t        d      dk(  sJ t        t        ddd      t              sJ y )Nr   Br   r<   r   r   r   )r   r   r   r4   r9   r7   test_secondr      sA    '?c!!!)!!!fE23S999r9   c                      t        d      dk(  sJ t        d      dk(  sJ t        t        ddd      t              sJ y )Nr   Er   r@   r   r   r   )r   r   r   r4   r9   r7   	test_lastr      s@    =C	?adv%013777r9   c                      t        t        d            t        d      k(  sJ t        t        d            t        d      k(  sJ y )Nr   BCDEr   r<   r@   )rM   r   r4   r9   r7   	test_restr      s8    W$v,...Y DL000r9   c                      t        t        dd            t        d      k(  sJ t        t        dd            t        d      k(  sJ y )NrS   r   r   r<   r   )rS   r<   )rM   r   r4   r9   r7   	test_taker      s>    Q !T%[000Q	"#tF|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 y )NrS   r   CDEr<   r   r   )rM   r   r   r4   r9   r7   	test_tailr      s`    Q !T%[000QW&'4;666Q	"#tF|333r9   c                      t        t        dd            t        d      k(  sJ t        t        dd            t        d      k(  sJ y )NrS   r   DEr@   r   r   )rM   r   r4   r9   r7   	test_dropr      s>    Q !T$Z///Q	"#tF|333r9   c                  J    t        t        dd            t        d      k(  sJ y )Nr<   r   ACE)rM   r'   r4   r9   r7   test_take_nthr      s     G$%e444r9   c                  D   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 y )Nr@   r   r   rS   BDr   r<   r   r   rX   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"en 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 r9   c                      t        i g d      S )Nr_   r   r4   r9   r7   rc   ztest_get.<locals>.<lambda>   s    SY%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                  &    t        di t              S )Nr   r   )r   no_default2r4   r9   r7   rc   ztest_get.<locals>.<lambda>   s    Cr;$G r9   )r   rM   r   
IndexErrorKeyError	TypeErrorr4   r9   r7   test_getr      s<   q'?c!!!QFG$%d333s!!!,-222Sz34>>>ub%(E111r9e,5551vtS!Z///sD>V###r4=B*4555(5666)7888)<===(G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 y )Nr_   )rT   rJ   r`   ra   )rS   r<   r@   r   )r`   rJ   rT   )ry   rw   r~   r   c                     | dz   S rC   r4   )is    r7   rc   ztest_mapcat.<locals>.<lambda>   s
    AE r9   )rT   rJ   r`   r~   rw   ry   rS   rT   rJ   )r`   r~   rw   )rM   r   r8   reversedrK   r   map)rD   s    r7   test_mapcatr      s    9i"89:    <I"FGHrO   CS)Iy+ABCD E Dr9   c                  @    t        t        dddg            g dk(  sJ y )Nr@   r<   rS   r_   )rM   r   r4   r9   r7   	test_consr      s    QA I---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 y NrJ   r   r    ʚ;)r   r   r   r@   r<   )rM   r   r   rK   r4   r9   r7   test_concatr      sT    B|$%+++a#sU:-> ?@A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 y r   )rM   r   r   rK   r4   r9   r7   test_concatvr      sO    B#$***a#sU:->?@A  !  r9   c                  8   dt        t        t        dt        d                        k(  sJ ddj	                  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 y )Nr   r   tXaXrXzXaXnrj   Xtarzanr   r@   rT   )r@   r   r@   r   r@   r   r@   .r   )r   r  r   r  r   )r   r   r   rK   r)   rM   	itertoolsrepeatr4   r9   r7   test_interposer     s    %YsE*,=>?@@@@BGGIc8$<====	!Y--a3459NNNN	#/04M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 y )	N)catpigr  eelr  dogr	  r	  r<   r@   rS   )r  r  r  r	  onomatopoeiarT   )r   er   monpt)r   r4   r9   r7   test_frequenciesr    so     4 5a!45 6 5 r?b   ~&01+K K K Kr9   c                     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 y )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&wG&vF'$H'$GIH (2a!+2'$BC C C G2a!+2'$B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 y )NrR   r`   rT   rU   )r    r=   r/   r   r4   r9   r7   test_reduce_by_initr$    sJ    FC.u2MMMMFC{;eGL@N N N Nr9   c                  R    d } t        t        | g dt              ddhddhdk(  sJ y )Nc                 (    | j                  |       | S r3   )r/   )sr   s     r7   set_addz0test_reduce_by_callable_default.<locals>.set_add%  s    	ar9   )r@   r<   rS   rT   r@   r<   r<   rT   r@   rS   rU   )r    r=   set)r(  s    r7   test_reduce_by_callable_defaultr*  $  s7     FG%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 y )Nr   rJ   )r   r@   r<   rS   rT   rT   r@   )r@   r<   rT   rw   )rM   r  islicer!   rD   r   rG   r4   r9   r7   test_iterater-  -  sK    	  a!Q78O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 y )	Nr}   )r@   rS   r`   r   r  )r@   r<   r`      x   )r1  r   r<   rJ   ry      c                     t        d      )Nzbinop should not be called)AssertionErrorr   r   s     r7   binopztest_accumulate.<locals>.binop7  s    9::r9   r_   r@   rS   r`   )rM   r"   r/   r0   objectr   )r6  starts     r7   test_accumulater:  2  s    
3015FFFF
3015GGGG
3459MMMM; HE
5"e,-%888
5"%&",,,
3	;78IEEEr9   c                  V    t        t        t        t        d                  g dk(  sJ y )Nr_   r7  )rM   r"   r/   r   r4   r9   r7   -test_accumulate_works_on_consumable_iterablesr<  @  s     
3Y01Y>>>r9   c                  |    t        t        dg d            g dk(  sJ t        t        dg d            ddgk(  sJ y )Nr<   rR   )rX   r<   rS   rS   rT   rS   r_   rq   rM   r#   r4   r9   r7   test_sliding_windowrA  D  s<    q,/04LLLLq,/0Y	4JJJJr9   c                  t    t        t        dddg            g k(  sJ t        t        dddg            g k(  sJ y )NrS   r@   r<   r~   r@  r4   r9   r7   %test_sliding_window_of_short_iteratorrC  I  s>    q1a&)*b000q1a&)*b000r9   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t        d	      d
            ddgk(  sJ t        t        dg             g k(  sJ y )Nr<   rR   rX   r?  rS   r~   r   r@   r<   r   rT   r1  )pad)rS   r1  r1  )rM   r%   rK   r4   r9   r7   test_partitionrG  N  s    	!\*+/????	!U1X&'Iy+AAAA	!U1X2./I4?4A 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	      }  |        }||||f|||fg}t        t        d
|gdz              |k(  sJ t        t        d
t        |gdz                    |k(  sJ  G d dt               } |ddgd      t	        t
        fd      sJ  |ddgd      t	        t
        fd      sJ y )Nr<   rR   rX   r?  rS   rJ   rE  c                       e Zd Zd Zy)%test_partition_all.<locals>.NoComparec                 J    | j                   |j                   k(  ryt               )NT)	__class__r   )r   others     r7   __eq__z,test_partition_all.<locals>.NoCompare.__eq__]  s    ~~0,r9   N)r   r   r   rN  r4   r9   r7   	NoComparerJ  \  s    	r9   rO  rT   r~   c                   *     e Zd Zd fd	Z fdZ xZS )-test_partition_all.<locals>.ListWithBadLengthc                 2    || _         t        | 	  |       y r3   )off_bysuper__init__)r   contentsrS  rL  s      r7   rU  z6test_partition_all.<locals>.ListWithBadLength.__init__h  s     DKGX&r9   c                 :    t         |          | j                  z   S r3   )rT  __len__rS  )r   rL  s    r7   rX  z5test_partition_all.<locals>.ListWithBadLength.__len__l  s    7?$t{{22r9   r\   )r   r   r   rU  rX  __classcell__)rL  s   @r7   ListWithBadLengthrQ  g  s    	'	3 	3r9   rZ  r@   )rS  c                  .    t        t        d             S rI   rM   r&   )too_long_lists   r7   rc   z$test_partition_all.<locals>.<lambda>p  s    tM!],K'L r9   r1  c                  .    t        t        d             S rI   r\  )too_short_lists   r7   rc   z$test_partition_all.<locals>.<lambda>r  s    tM!^,L'M r9   )rM   r&   rK   r   r   LookupError)rO  objresultrZ  r]  r_  s       @@r7   test_partition_allrc  V  s   a./FF3CCCCaq*+	6/BBBBa$%+++ 
 +CCc"S#sO4Fa#q)*f444aseAg/0F:::3D 3 &q!fR8M+LMMM&1vb9N+MNNNr9   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 y )Nr_   rS   r   rR   rT   hellorJ   )r$   r   r4   r9   r7   
test_countrf  u  sf    q   9>>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 y )Nr   r@   r<   rS   rT   rJ   )r   r<   rT   rE  r   r   r?  cheese)idr  pies)ri  r  priceri  rk  r  )r@   rh  )r<   rj  )rh  )rj  rM  )r   r   )r@   r   c                  0    t        t        ddgg            S Nr@   r   rM   r(   r4   r9   r7   rc   ztest_pluck.<locals>.<lambda>  s    d5aSE?&; r9   c                  2    t        t        dddig            S )Nr  ri  r@   rn  r4   r9   r7   rc   ztest_pluck.<locals>.<lambda>  s    Dvq	{)C$D r9   c                  :    t        t        ddggt                    S rm  )rM   r(   r   r4   r9   r7   rc   ztest_pluck.<locals>.<lambda>  s    d5aSE;+G&H r9   )rM   r(   r   r   r   r   r   s    r7   
test_pluckrq  ~  s   a1a&1a&1a&123y@@@q!fy)45666:JJJJa1#1v-.4);;;h'6A)NODdD!"q!f,,,gtQ'(QF222tVnd+,0LLLLvh%&;	*BBBBw($237GGGG*;<<<(DEEEa1a&1a&1a&1;?@IMMM*HIIIr9   c                     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 y )Nr@   r   r<   tworS   three)appler@   oranger@   )bananar<   )coconutr<   c                     | d   | d   z   S Nr   r@   r4   )pairs    r7   addpairztest_join.<locals>.addpair  s    Awa  r9   >   r@   r   rz  r@   r@   r   r|  r@   r<   rv  r}  r<   r<   rv  r~  r<   left_defaultright_default)r)  r   r/   r)   r   r   r   )namesfruitr  rb  expecteds        r7   	test_joinr    s    2EHE! d5%?@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 y )Nr   Alicer   r   r4   )r   r4   r9   r7   test_getterr    sO    6!9W$$$61#;w6)))6":g"$$$r9   c            	         t        d      D  cg c]	  } | | dz  f }} t        d      D  cg c]  } | | dz  | dz  f }} 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 y c c} w c c} w )
NrJ   r<   rS   r   c                     | d   S Nr   r4   r5   s    r7   rc   z$test_key_as_getter.<locals>.<lambda>  
    ! r9   c                     | d   S r  r4   r5   s    r7   rc   z$test_key_as_getter.<locals>.<lambda>  r  r9   c                     | d   | d   fS r  r4   r5   s    r7   rc   z$test_key_as_getter.<locals>.<lambda>  s    QqT1Q4L r9   r@   c                     | d   fS r  r4   r5   s    r7   rc   z$test_key_as_getter.<locals>.<lambda>  s    QqTG r9   )rK   r)  r)   )r   squarespowsr   s       r7   test_key_as_getterr    s"   "'(+Q1a4y+G+%*1X.Q1adO.D.tAw4()Sng6Dd2L .M M M M !CtQFGaVT23s4W@CT<K 8L L L L CtQC1#t,-T#w:=t6E 2F F F F ,.s
   C!C&c                      g d} g d}t        t        t        t        t        | t
        |                  }h d}||k(  sJ y )N)rt  ru  rw  )r@   uno)r<   dosry  >   r@   r  rz  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  rb  r  s       r7   test_join_double_repeatsr    s?    JEHEd5%?@AF.H Xr9   c                      g d} ddg}t        t        t        t        t        | t
        |                  }dh}||k(  sJ y )Nrs  )rz  rJ   r{  r  r  r  s       r7   test_join_missing_elementr    sC    2E=)Ed5%?@AF'(HXr9   c            	      d    t        t        t        ddgt        ddgd             } ddh}| |k(  sJ y )Nr@   r<   rS   )r  rZ   rg   r)  r)   r8   rb  r  s     r7   test_left_outer_joinr    s9    hA1a&tLMF	"HXr9   c            	      d    t        t        t        ddgt        ddgd             } ddh}| |k(  sJ y )Nr@   r<   rS   )r  rZ   r@   Nr  r  s     r7   test_right_outer_joinr    s9    hA1a&MNF	"HXr9   c            
      f    t        t        t        ddgt        ddgd d             } h d}| |k(  sJ y )Nr@   r<   rS   r  >   rg   r  rZ   r  r  s     r7   test_outer_joinr    s;    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(   y )Nc                  (    t        t                     S r3   rM   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 r9   c                  0    t        t        ddgd            S Nr@   r<   rS   r  r4   r9   r7   rc   ztest_diff.<locals>.<lambda>  s    T$1vq/%: r9   r@   r<   rX   r_   )r@   r   rS   )r@   r<   r   )r<   r   r<   )rS   rS   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 r9   c                  0    t        t        ddgg            S r  r  r4   r9   r7   rc   ztest_diff.<locals>.<lambda>  s    T$Ax.%9 r9   c                  2    t        t        ddgdg            S r  r  r4   r9   r7   rc   ztest_diff.<locals>.<lambda>  s    T$A{*;%< r9   rY   r>  dollar)r  currencyd   yeni,  g{Gz?)r  r  c                      | d      | d   z  S )Nr  r  r4   )r   conversionss    r7   	indollarsztest_diff.<locals>.indollars  s    4
+,tF|;;r9   rd   )r   r   rM   r*   r   )data1data2r  r  s      @r7   	test_diffr    s   )1222)7888):;;;aVVT1a&\23r999Y
D,<=>JC       aVbT"#y000aVbT401gy5IIII)3444)5666)9:::)<===ff%&'F8333X.X.0E u-u-/E t,K< 	eU		*+	*Se,LM0O Or9   c            	      h   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 y )Nr<   )rT   r@   rJ   r<   )rJ   rT   c                     |  S r3   r4   r5   s    r7   rc   ztest_topk.<locals>.<lambda>  s    r r9   rd   rX   )rJ   r@   rT   r<   c                     |  S r3   r4   r5   s    r7   rc   ztest_topk.<locals>.<lambda>  s    aR r9   r@   r   r5  ry   r   r   )rr   rY   rZ   rS   r@   rT   r   r   )r  r  )r+   r   r4   r9   r7   	test_topkr    s   < F***<\2f<<<4%<8FBBB!"%QQ'71%QQ'79>AC	!!,-. . . !"%QQ'71%QQ'79>ACr	!!,-. . . ;Q?  r9   c                  0    t        dg dd       dk(  sJ y )NrT   )rJ   ry   r<   r@   rJ   rS   c                      yrC   r4   r5   s    r7   rc   z%test_topk_is_stable.<locals>.<lambda>   s    r9   rd   )rJ   ry   r<   r@   )r+   r4   r9   r7   test_topk_is_stabler    s    %;7<GGGr9   c                      g d} t        |       \  }}|| d   k(  sJ t        |      | k(  sJ t        t        d       sJ y )Nr  BobCarolr   c                      t        g       S r3   )r,   r4   r9   r7   rc   ztest_peek.<locals>.<lambda>)  s
    b r9   )r,   rM   r   r   )alistelementblists      r7   	test_peekr  #  sI    %E%[NGUeAh;%-!1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 y )Nr  r<   rT   )r-   r   len)r  elementsr  s      r7   
test_peeknr  ,  st    %EAuoOHeuRay   <5   CJNE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 | |k7  sJ  t	        t
                     t	        t
                    k(  sJ  t	        t
                     t	        t                           k7  sJ  d       d      k(  sJ t        t        fd	      sJ y )Nr  r@   i  probseqrandom_statec                 2    t        t        d|             S )Ng?r  )rM   r.   )rsr  s    r7   rc   z$test_random_sample.<locals>.<lambda><  s    d=c5:>@$B C r9   i     ar   c                        g       S r3   r4   )
mk_rsamples   r7   rc   z$test_random_sample.<locals>.<lambda>L  s    Z^ r9   r\   )rM   rK   r.   r   hashr8  r   r   )rsample1rsample2randobjr  r  s      @@r7   test_random_sampler  7  s    sE1%dCDMMMCJ |Hz|###$HTlGz'****xd6l#z$v,'????d6l#z$vx.'AAAAdz#...)3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   rP   rV   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<  rA  rC  rG  rc  rf  rq  r  r  r  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+,-4J#:7
:=>0>9:81
4
44
5I(	E.!!NKC&N&=
F?K
1
(O>%J&,%F $O> H3!5r9   