B
    ]X3D                 @   s  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/m0Z0 d dl1m2Z2m3Z3 d d	l4m5Z5m6Z6 e
e	d
Z7dd Z8dd Z9dd Z:dd Z;dd Z<dd Z=dd Z>dd Z?dd Z@dd ZAdd  ZBd!d" ZCd#d$ ZDd%d& ZEd'd( ZFd)d* ZGd+d, ZHd-d. ZId/d0 ZJd1d2 ZKd3d4 ZLd5d6 ZMd7d8 ZNd9d: ZOd;d< ZPd=d> ZQd?d@ ZRdAdB ZSdCdD ZTdEdF ZUdGdH ZVdIdJ ZWdKdL ZXdMdN ZYdOdP ZZdQdR Z[dSdT Z\dUdV Z]dWdX Z^dYdZ Z_d[d\ Z`d]d^ Zad_d` Zbdadb Zcdcdd Zddedf Zedgdh Zfdidj Zgdkdl Zhdmdn Zidodp Zjdqdr Zkdsdt Zldudv ZmdS )w    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random_sample)rangefilter)addmulZ__no__default__c             C   s   | S )N )xr1   r1   9lib/python3.7/site-packages/toolz/tests/test_itertoolz.pyidentity   s    r4   c             C   s   | d dkS )N   r   r1   )r2   r1   r1   r3   iseven   s    r6   c             C   s   | d dkS )Nr5      r1   )r2   r1   r1   r3   isodd!   s    r8   c             C   s   | d S )Nr7   r1   )r2   r1   r1   r3   inc%   s    r9   c             C   s   d|  S )Nr5   r1   )r2   r1   r1   r3   double)   s    r:   c              C   s@   t ttd} t| tk	stt| ttttdks<td S )N   )r   r6   r-   typelistAssertionErrorr.   r8   )rr1   r1   r3   test_remove-   s    r@   c               C   s,   t tddddgddgddgdks(td S )Nr7   r5         )TF)r	   r6   r>   r1   r1   r1   r3   test_groupby3   s    rC   c               C   s   t dddddgddgddgdks(tt dgddddgddgddgdksRtt ddgddddgddgddgdks~td S )Nr   )r7   r5   )r7   rA   )r5   r5   )r5   rB   ))r7   )r5   ))r7   r7   )r5   r5   )r	   r>   r1   r1   r1   r3   test_groupby_non_callable7   s    rD   c           
   C   s  t tdddgdddgddddddgks.tt tdddgdddgddddddgks\tt tdgddgdgg ddddgkstt tdddgdddgg dd d	ddddddgkstt tdddgdddgd
d d	ddddddgkstt tddgddgdd d	ddddgks$tdtddddks@tdtdddtd	dks`tdtddddd d	dkstt tdgdddgtd	ddddgkstdddgdddgdddgg} t t| ddd idddddddddg	kstt t g kstt tdddgdddgks4tt tdddgddgdddddgks`tt tdddgddgtd	dddddgkstt tddgdgddgddgtd	dddddddgkstd S )Nr7   r5   rA   r;   rB      c             S   s   |  S )Nr1   )r2   r1   r1   r3   <lambda>J   s    z#test_merge_sorted.<locals>.<lambda>)keyc             S   s   | d S )NrA   r1   )r2   r1   r1   r3   rF   L   s    c             S   s   | d S )NrA   r1   )r2   r1   r1   r3   rF   N   s     abcZ	aaabbbcccZcbac             S   s
   t |  S )N)ord)r2   r1   r1   r3   rF   R   s    Z	cccbbbaaa)r7   r5   )r   rB   )rA   rE   )r;   rA   )rE   r;   )   rK   )	   r7   )rL   rK   )rL   rL   rG   c             S   s   | d S )Nr7   r1   )r2   r1   r1   r3   rF   W   s       )r=   r
   r>   r(   rJ   r4   )datar1   r1   r3   test_merge_sortedE   s2    ..*""  ,","rO   c               C   s0   d tddkstd tddks,td S )NrH   )ABCZ123ZA1B2C3)rP   1ZA1BC)r(   r   r>   r1   r1   r1   r3   test_interleaveb   s    rR   c               C   sD   t tddkstt tddks(tt tdtddks@td S )N)r7   r5   rA   )r7   r5   r7   rA   )rG   )r7   r5   )tupler   r>   r6   r1   r1   r1   r3   test_uniqueg   s    rT   c               C   s:   t dddgdkstt ddks&tt ddks6td S )Nr7   r5   rA   TrI   r;   F)r   r>   r1   r1   r1   r3   test_isiterablem   s    rU   c               C   s   t dddgdkstt dddgdks,tt ddks<tt ddksLtt tdddgdksftt tdddgdkstd S )Nr7   r5   rA   TFZHelloZWorld)r   r>   iterr1   r1   r1   r3   test_isdistincts   s    rW   c               C   s   t dddkstt dtddks(tt dddks:tt dddidksPtttd	d
 sbtt dddksttttdd
 std S )Nr5   ABCDECr7   )rA   r5   r7   r   foobarc               S   s   t dddiS )N
   rZ   )r   r1   r1   r1   r3   rF      s    ztest_nth.<locals>.<lambda>Dc               S   s   t dtdS )Nr]   rX   )r   rV   r1   r1   r1   r3   rF      s    )r   r>   rV   r   StopIteration
ValueErrorr1   r1   r1   r3   test_nth~   s    ra   c               C   s<   t ddkstt ddks ttt dddts8td S )NrX   A)rA   r5   r7   rA   zeroone)r   r7   )r   r>   
isinstanceintr1   r1   r1   r3   
test_first   s    rg   c               C   s<   t ddkstt ddks ttt dddts8td S )NrX   B)rA   r5   r7   r5   rc   rd   )r   r7   )r   r>   re   rf   r1   r1   r1   r3   test_second   s    ri   c               C   s<   t ddkstt ddks ttt dddts8td S )NrX   E)rA   r5   r7   r7   rc   rd   )r   r7   )r   r>   re   rf   r1   r1   r1   r3   	test_last   s    rk   c               C   s4   t tdt dkstt tdt dks0td S )NrX   ZBCDE)rA   r5   r7   )r5   r7   )r=   r   r>   r1   r1   r1   r3   	test_rest   s    rl   c               C   s8   t tddt dkstt tddt dks4td S )NrA   rX   rP   r5   )rA   r5   r7   )rA   r5   )r=   r   r>   r1   r1   r1   r3   	test_take   s    rm   c               C   sV   t tddt dkstt tdtdt dks8tt tddt dksRtd S )NrA   rX   ZCDEr5   )rA   r5   r7   )r5   r7   )r=   r   r>   rV   r1   r1   r1   r3   	test_tail   s    rn   c               C   s8   t tddt dkstt tddt dks4td S )NrA   rX   ZDEr7   )rA   r5   r7   )r5   r7   )r=   r   r>   r1   r1   r1   r3   	test_drop   s    ro   c               C   s   t tddt dkstd S )Nr5   rX   ZACE)r=   r&   r>   r1   r1   r1   r3   test_take_nth   s    rp   c               C   s<  t dddksttt ddgdtdks0tt ddddddksJtt dd	gddddd
kshtt di dddks~tt i dddgdddkstt ddgdddkstt dgddkstt g ddkstttdd stttdd stttdd stttdd s$tttdd s8td S )Nr7   rX   rh   rA   ZBDar5   )rq   bcrr   )r7   r5   rZ   r[   )defaultr   ZABrY   )rb   rY   )rb   r1   c               S   s
   t ddS )Nr\   rP   )r   r1   r1   r1   r3   rF      s    ztest_get.<locals>.<lambda>c               S   s   t dddiS )Nr\   rq   r7   )r   r1   r1   r1   r3   rF      s    c               S   s   t i dddgS )Nr7   r5   rA   )r   r1   r1   r1   r3   rF      s    c               S   s   t dddgdd S )Nr7   r5   rA   )r   r1   r1   r1   r3   rF      s    c               S   s   t di tdS )NrZ   )rt   )r   no_default2r1   r1   r1   r3   rF      s    )r   r>   r=   r   
IndexErrorKeyError	TypeErrorr1   r1   r1   r3   test_get   s    ry   c              C   s   t ttdddgdddggddddddgks2tt ttddddgdddgdd	d
ggt tdksjtdd } dddd
d	dgt ttt| dddgdd
d	ggkstd S )Nr7   r5   rA   rB   r;   rE   r   rL   rK   rM   r\   c             S   s   | d S )Nr7   r1   )ir1   r1   r3   rF      s    ztest_mapcat.<locals>.<lambda>)r=   r   r4   r>   reversedr-   r   map)r9   r1   r1   r3   test_mapcat   s    &r}   c               C   s$   t tdddgdddgks td S )Nr7   r5   rA   )r=   r   r>   r1   r1   r1   r3   	test_cons   s    r~   c               C   sN   t tg g g gg kstt tdtddgtdgdddddgksJtd S )Nr;   rq   rr   i ʚ;r   r7   r5   )r=   r   r>   r   r-   r1   r1   r1   r3   test_concat   s    r   c               C   sJ   t tg g g g kstt tdtddgtddddddgksFtd S )Nr;   rq   rr   i ʚ;r   r7   r5   )r=   r   r>   r   r-   r1   r1   r1   r3   test_concatv   s    r   c               C   s   dt ttdtdkstddtddks6tttdtdd	dddddddgksbtttd
dddgdd
dd
dgkstd S )Nrq   i ʚ;ZtXaXrXzXaXnrH   XZtarzanr   r7   rB   .rr   rs   )	r   r   r   r-   r>   r(   r=   	itertoolsrepeatr1   r1   r1   r3   test_interpose   s    ,r   c            
   C   s`   t ddddddddgdddddks*tt g i ks:tt d	ddddd
ddddks\td S )Ncatpigeeldogr5   r7   rA   )r   r   r   r   ZonomatopoeiarB   )rq   erz   monpt)r   r>   r1   r1   r1   r3   test_frequencies   s    
r   c              C   s   dddddg} dd }t |t| dd	d
dks2tt |t| ddddksNtddddddddddddddddg}t dd dd |ddddkstt ddd |ddddkstd S )Nr7   r5   rA   rB   r;   c             S   s   | d dkS )Nr5   r   r1   )r2   r1   r1   r3   rF      s    ztest_reduceby.<locals>.<lambda>r   rL   rE   )FT   rK   zbuild roadsCAi@B )namestatecostzfight crimeILi zhelp farmersi i@ c             S   s   | d S )Nr   r1   )r2   r1   r1   r3   rF      s    c             S   s   | |d  S )Nr   r1   )accr2   r1   r1   r3   rF      s    iO i   )r   r   r   c             S   s   | |d  S )Nr   r1   )r   r2   r1   r1   r3   rF     s    )r   r/   r>   r0   )rN   r6   Zprojectsr1   r1   r3   test_reduceby   s    


r   c               C   sJ   t ttddddgdddks"tt ttddddgtdddksFtd S )Nr7   r5   rA   rB   rE   )TF)r   r6   r/   r>   ru   r1   r1   r1   r3   test_reduce_by_init  s    "r   c           	   C   sD   dd } t t| ddddddgttddgtddgdks@td S )Nc             S   s   |  | | S )N)r/   )srz   r1   r1   r3   set_add  s    
z0test_reduce_by_callable_default.<locals>.set_addr7   r5   rA   rB   )TF)r   r6   setr>   )r   r1   r1   r3   test_reduce_by_callable_default  s    r   c               C   sR   t tttddddddddgks*tt tdttdddddgksNtd S )Nr   r;   r7   r5   rA   rB   rK   )r=   r   islicer    r9   r>   r   r:   r1   r1   r1   r3   test_iterate  s    *r   c              C   s   t ttdddddgdddddgks*tt ttdddddgdddd	d
gksTtt ttdddddgdddddddgkstdd } t }t t| g ||gkstt ttdddgtdddgkstd S )Nr7   r5   rA   rB   r;   rE   r\   r      x   r   rL      c             S   s   t dd S )Nzbinop should not be called)r>   )rq   rr   r1   r1   r3   binop  s    ztest_accumulate.<locals>.binop)r=   r!   r/   r>   r0   objectru   )r   startr1   r1   r3   test_accumulate  s    **.r   c               C   s$   t tttddddgks td S )N)r7   r5   rA   r7   rA   rE   )r=   r!   r/   rV   r>   r1   r1   r1   r3   -test_accumulate_works_on_consumable_iterables'  s    r   c               C   sJ   t tdddddgdddgks$tt tdddddgdd	gksFtd S )
Nr5   r7   rA   rB   )r7   r5   )r5   rA   )rA   rB   )r7   r5   rA   )r5   rA   rB   )r=   r"   r>   r1   r1   r1   r3   test_sliding_window+  s    $r   c               C   s   t tdddgg kstd S )NrA   r7   r5   )r=   r"   r>   r1   r1   r1   r3   %test_sliding_window_of_short_iterator0  s    r   c               C   s|   t tdddddgddgks"tt tdtddd	gks@tt tdtdd
dddgksbtt tdg g ksxtd S )Nr5   r7   rA   rB   )r7   r5   )rA   rB   rM   )r   r7   r5   )rA   rB   r;   r   )Zpad)rA   r   r   )r=   r$   r>   r-   r1   r1   r1   r3   test_partition4  s
    "r   c               C   sZ   t tdddddgddgks"tt tdtdddgks@tt tdg g ksVtd S )	Nr5   r7   rA   rB   )r7   r5   )rA   rB   r;   )r   r7   r5   )r=   r%   r>   r-   r1   r1   r1   r3   test_partition_all<  s    "r   c               C   s\   t ddkstt g dks tt tddks4tt ddksDtt tddksXtd S )N)r7   r5   rA   rA   r   )r7   r5   rA   rB   rB   Zhellor;   )r#   r>   rV   r1   r1   r1   r3   
test_countB  s
    r   c              C   s  t tdddgddgddggdddgks.tt tddgdddgdddggddgks\tt tddgddggd d dgkstdd	d
ddddg} t td| ddgkstt td| dddgkstt tddg| ddgkstt tdg| ddgks
tt tddg| dddgks,tttdd s@tttdd sTtt tdddgddgddggtdddgkstttdd std S )Nr   r7   r5   rA   rB   r;   )r   r7   )rA   rB   cheese)idr   pies)r   r   pricer   r   r   )r7   r   )r5   r   )r   )r   other)r   r   )r7   r   c               S   s   t tddggS )Nr7   r   )r=   r'   r1   r1   r1   r3   rF   W  s    ztest_pluck.<locals>.<lambda>c               S   s   t tdddigS )Nr   r   r7   )r=   r'   r1   r1   r1   r3   rF   X  s    c               S   s   t tddggtS )Nr7   r   )r=   r'   ru   r1   r1   r1   r3   rF   [  s    )r=   r'   r>   r   rv   rw   ru   )rN   r1   r1   r3   
test_pluckK  s    ..&"2r   c              C   s   dddg} ddddg}dd	 }t tttt| t|}t d
dddg}||ksRtt tttt| t|ttd}||ks|td S )N)r7   rd   )r5   two)rA   three)appler7   )oranger7   )bananar5   )coconutr5   c             S   s   | d | d  S )Nr   r7   r1   )Zpairr1   r1   r3   addpairb  s    ztest_join.<locals>.addpair)r7   rd   r   r7   )r7   rd   r   r7   )r5   r   r   r5   )r5   r   r   r5   )left_defaultright_default)r   r   r/   r(   r   r   r>   ru   )namesfruitr   resultexpectedr1   r1   r3   	test_join^  s    
r   c               C   sB   t dddkstt dgddks*tt g ddks>td S )Nr   Alicerb   )rb   r1   )r   r>   r1   r1   r1   r3   test_gettert  s    r   c              C   s   dd t dD } dd t dD }ttd| d|ttdd | dd |ksTtd	d }ttdd
g| dd
g|tt|| ||kstdd }ttdg| dg|tt|| ||kstd S )Nc             S   s   g | ]}||d  fqS )r5   r1   ).0rz   r1   r1   r3   
<listcomp>{  s    z&test_key_as_getter.<locals>.<listcomp>r;   c             S   s   g | ]}||d  |d fqS )r5   rA   r1   )r   rz   r1   r1   r3   r   |  s    r   c             S   s   | d S )Nr   r1   )r2   r1   r1   r3   rF   ~  s    z$test_key_as_getter.<locals>.<lambda>c             S   s   | d S )Nr   r1   )r2   r1   r1   r3   rF     s    c             S   s   | d | d fS )Nr   r7   r1   )r2   r1   r1   r3   rF     s    r7   c             S   s
   | d fS )Nr   r1   )r2   r1   r1   r3   rF     s    )r-   r   r(   r>   )ZsquaresZpowsr   r1   r1   r3   test_key_as_getterz  s     r   c           	   C   sZ   dddddg} dddd	g}t tttt| t|}t d
dddddddg}||ksVtd S )N)r7   rd   )r5   r   )rA   r   )r7   uno)r5   dos)r   r7   )r   r7   )r   r5   )r   r5   )r7   rd   r   r7   )r7   rd   r   r7   )r5   r   r   r5   )r5   r   r   r5   )r7   r   r   r7   )r7   r   r   r7   )r5   r   r   r5   )r5   r   r   r5   )r   r   r/   r(   r   r   r>   )r   r   r   r   r1   r1   r3   test_join_double_repeats  s    r   c              C   sD   dddg} ddg}t tttt| t|}t dg}||ks@td S )N)r7   rd   )r5   r   )rA   r   )r   r;   )r   r7   )r7   rd   r   r7   )r   r   r/   r(   r   r   r>   )r   r   r   r   r1   r1   r3   test_join_missing_element  s
    

r   c              C   s:   t ttddgtddgd d} t ddg}| |ks6td S )Nr7   r5   rA   )r   )r5   r5   )NrA   )r   r(   r4   r>   )r   r   r1   r1   r3   test_left_outer_join  s    r   c              C   s:   t ttddgtddgd d} t ddg}| |ks6td S )Nr7   r5   rA   )r   )r5   r5   )r7   N)r   r(   r4   r>   )r   r   r1   r1   r3   test_right_outer_join  s    r   c           	   C   s>   t ttddgtddgd d d} t dddg}| |ks:td S )Nr7   r5   rA   )r   r   )r5   r5   )r7   N)NrA   )r   r(   r4   r>   )r   r   r1   r1   r3   test_outer_join  s    r   c                 s  t tdd stt tdd s$tt tdd s6tttddgdtddgg ksZtttdddgd	tddd
gddgkstttddgd
gdgkstttddgd
gd dddgkstt tdd stt tdd stt tdd stt tdd stttddgdgks.tddddddg} ddddddg}ddd  fdd}tt| ||dddddddfgk d S ) Nc               S   s
   t t S )N)r=   r)   r1   r1   r1   r3   rF     s    ztest_diff.<locals>.<lambda>c               S   s   t tddgS )Nr7   r5   )r=   r)   r1   r1   r1   r3   rF     s    c               S   s   t tddgdS )Nr7   r5   rA   )r=   r)   r1   r1   r1   r3   rF     s    r7   r5   )r7   r5   rA   )r7   r\   rA   r\   )r5   r\   r5   )rA   rA   r\   )r7   r\   )rt   )r5   Nc               S   s   t tg S )N)r=   r)   r1   r1   r1   r3   rF     s    c               S   s   t tg gS )N)r=   r)   r1   r1   r1   r3   rF     s    c               S   s   t tddggS )Nr7   r5   )r=   r)   r1   r1   r1   r3   rF     s    c               S   s   t tddgdgS )Nr7   r5   rA   )r=   r)   r1   r1   r1   r3   rF     s    )r7   rA   )r5   rA   dollar)r   currencyd   yeni,  g{Gz?)r   r   c                s    | d  | d  S )Nr   r   r1   )item)conversionsr1   r3   	indollars  s    ztest_diff.<locals>.indollars)rG   )r   rx   r>   r=   r)   rV   )Zdata1Zdata2r   r1   )r   r3   	test_diff  s*    $$
r   c               C   s  t dddddgdkstt dddddgdd dd	ks<tt dtddddgd
d dd	ksbtt dddddddddddddgddddddddfkstt dddddddddddddgddddddddfkstt ddddddgddkstd S )Nr5   rB   r7   r;   )r;   rB   c             S   s   |  S )Nr1   )r2   r1   r1   r3   rF     s    ztest_topk.<locals>.<lambda>)rG   )r7   r5   c             S   s   |  S )Nr1   )r2   r1   r1   r3   rF     s    r\   )rq   rr   rL   rq   rr   )r   rB   )r7   rA   )r5   r5   )rA   r7   )rB   r   r   ))rB   r   )rA   r7   )r*   r>   rV   r1   r1   r1   r3   	test_topk  s    "&r   c               C   s*   t dddddddgdd d	d
ks&td S )NrB   r;   rL   r5   r7   rA   c             S   s   dS )Nr7   r1   )r2   r1   r1   r3   rF     s    z%test_topk_is_stable.<locals>.<lambda>)rG   )r;   rL   r5   r7   )r*   r>   r1   r1   r1   r3   test_topk_is_stable  s    r   c              C   sH   dddg} t | \}}|| d k t|| ks2tttdd sDtd S )Nr   ZBobZCarolr   c               S   s   t g S )N)r+   r1   r1   r1   r3   rF     s    ztest_peek.<locals>.<lambda>)r+   r=   r>   r   r_   )alistelementZblistr1   r1   r3   	test_peek  s
    
r   c                 s   t td t td dd ks&td fdd	 } |  ksHtd}td}||ksht| |ksttttksttt kstdd	kstttfd
dstd S )Nr   r7   i  )probseqrandom_statec                s   t td | dS )Ng?)r   r   r   )r=   r,   )Zrs)r   r1   r3   rF     s   z$test_random_sample.<locals>.<lambda>i     arq   c                  s    g S )Nr1   r1   )
mk_rsampler1   r3   rF     s    )r7   )r=   r-   r,   r>   r   r   r   rx   )Zrsample1Zrsample2Zrandobjr1   )r   r   r3   test_random_sample  s    r   )nr   r   Ztoolz.utilsr   	functoolsr   Zrandomr   pickler   r   Z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,   Ztoolz.compatibilityr-   r.   operatorr/   r0   ru   r4   r6   r8   r9   r:   r@   rC   rD   rO   rR   rT   rU   rW   ra   rg   ri   rk   rl   rm   rn   ro   rp   ry   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   r1   r1   r1   r3   <module>   s~   

				