o
    !wiwJ                     @   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/m0Z0m1Z1 d dl2m3Z3m4Z4 e
e	d	Z5d
d Z6d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/ ZHd0d1 ZId2d3 ZJd4d5 ZKd6d7 ZLd8d9 ZMd:d; ZNd<d= ZOd>d? ZPd@dA ZQdBdC ZRdDdE ZSdFdG ZTdHdI ZUdJdK ZVdLdM ZWdNdO ZXdPdQ ZYdRdS ZZdTdU Z[dVdW Z\dXdY Z]dZd[ Z^d\d] Z_d^d_ Z`d`da Zadbdc Zbddde Zcdfdg Zddhdi Zedjdk Zfdldm Zgdndo Zhdpdq Zidrds Zjdtdu Zkdvdw ZldS )x    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                 C   s   | S N xr2   r2   Y/home/ubuntu/sommelier/.venv/lib/python3.10/site-packages/cytoolz/tests/test_itertoolz.pyidentity   s   r6   c                 C      | d dkS N   r   r2   r3   r2   r2   r5   iseven      r:   c                 C   r7   )Nr9      r2   r3   r2   r2   r5   isodd    r;   r=   c                 C      | d S Nr<   r2   r3   r2   r2   r5   inc$      r@   c                 C   s   d|  S )Nr9   r2   r3   r2   r2   r5   double(   rA   rB   c                  C   s@   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filterr=   )rr2   r2   r5   test_remove,   s   "rI   c                   C   s(   t tg dddgddgdksJ d S )Nr<   r9         r9   rL   r<   rK   TF)r	   r:   r2   r2   r2   r5   test_groupby2   s   (rN   c                   C   sv   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s9J d S )	Nr   )r<   r9   r<   rK   r9   r9   r9   rL   rO   rP   rQ   rR   )r<   r9   ))r<   r<   rQ   )r	   r2   r2   r2   r5   test_groupby_non_callable6   s   rU   c                  C   sN  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s5J t tg dg dg dd dg dksKJ t tg dg ddd dg dks`J t tdd	gdd	gdd dg dksuJ dtddddksJ dtdddtddksJ dtddddd ddksJ t tdgg dtdg d
ksJ g dg dg dg} t t| d d!d ig d"ksJ t t g ksJ t tg dg dksJ t tg d#dd	gg d$ksJ t tg d#dd	gtdg d$ksJ t tdd%gdgdd&gd	d'gtdg d(ks%J d S ))Nr<   r9   rK   )r<   r<   r9   r9   rK   rK   )r<   rK   rC   )r9   rL      r<   r9   rK   rL   rC   rW   r<   r9   rL   rK   rJ   )rC   rK   r<   )rW   rL   rK   c                 S      |  S r1   r2   r3   r2   r2   r5   <lambda>I       z#test_merge_sorted.<locals>.<lambda>key)rW   rC   rL   rK   rK   r<   )r9   r<   rK   c                 S      | d S NrK   r2   r3   r2   r2   r5   rZ   K       )r9   r<   r<   r9   rK   rK   c                 S   r^   r_   r2   r3   r2   r2   r5   rZ   M   r`   )r9   r<   rK   rK    abc	aaabbbccccbac                 S   s
   t |  S r1   )ordr3   r2   r2   r5   rZ   Q      
 	cccbbbaaar9   rK   rL   )rO   r   rL   rK   rW   )rC   rK   rW   rC      rn   )	   r<   rp   rn   rp   rp   r]   c                 S      | d S r?   r2   r3   r2   r2   r5   rZ   V   r`   )	ro   rO   rk   ri   rl   rj   rm   rq   rr   )r<   rL   rC   r<   r9   rK   rL   rC   rC      rW   )r<   r9   rK   rL   rC   rW   ru   )rF   r
   r(   re   r6   datar2   r2   r5   test_merge_sortedD   sF   ""&$""(6rx   c                   C   s0   d tddksJ d tddksJ d S )Nra   )ABC123A1B2C3)ry   1A1BC)r(   r   r2   r2   r2   r5   test_interleavea   s   r~   c                   C   sD   t tddks
J t tddksJ t tdtddks J d S )NrV   )r<   r9   r<   rK   r\   rO   )tupler   r:   r2   r2   r2   r5   test_uniquef   s   r   c                  C   s   G dd d} G dd d}G dd d}G dd d}t g d	d
u s&J t dd
u s.J t |  d
u s7J t | d
u s@J t ddu sHJ t | du sQJ t | du sZJ d S )Nc                   @      e Zd Zdd ZdS )z%test_isiterable.<locals>.IterIterablec                 S   s   t g dS Nabc)iter)selfr2   r2   r5   __iter__p   r;   z.test_isiterable.<locals>.IterIterable.__iter__N__name__
__module____qualname__r   r2   r2   r2   r5   IterIterableo       r   c                   @   r   )z(test_isiterable.<locals>.GetItemIterablec                 S      g d| S r   r2   r   itemr2   r2   r5   __getitem__t   r;   z4test_isiterable.<locals>.GetItemIterable.__getitem__N)r   r   r   r   r2   r2   r2   r5   GetItemIterables   r   r   c                   @   s   e Zd ZdZdS )z$test_isiterable.<locals>.NotIterableNr   r2   r2   r2   r5   NotIterabley   s    r   c                   @   s   e Zd ZdZdd ZdS )z3test_isiterable.<locals>.NotIterableEvenWithGetItemNc                 S   r   r   r2   r   r2   r2   r5   r      r;   z?test_isiterable.<locals>.NotIterableEvenWithGetItem.__getitem__)r   r   r   r   r   r2   r2   r2   r5   NotIterableEvenWithGetItem|   s    r   rV   Trb   rC   F)r   )r   r   r   r   r2   r2   r5   test_isiterablel   s   r   c                   C   s|   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 s0J t tg ddu s<J d S )NrV   T)r<   r9   r<   FHelloWorld)r   r   r2   r2   r2   r5   test_isdistinct   s   r   c                   C   s   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	d
 s1J t dddks:J ttdd
 sCJ d S )Nr9   ABCDECr<   rK   r9   r<   r   foobarc                   S   s   t dddiS )N
   r   )r   r2   r2   r2   r5   rZ          ztest_nth.<locals>.<lambda>Dc                   S   s   t dtdS )Nr   r   )r   r   r2   r2   r2   r5   rZ      r   )r   r   r   StopIteration
ValueErrorr2   r2   r2   r5   test_nth   s   r   c                   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   rK   zerooner   r<   )r   
isinstanceintr2   r2   r2   r5   
test_first      r   c                   C   r   )Nr   Br   r9   r   r   r   )r   r   r   r2   r2   r2   r5   test_second   r   r   c                   C   r   )Nr   Er   r<   r   r   r   )r   r   r   r2   r2   r2   r5   	test_last   r   r   c                   C   s4   t tdt dksJ t tdt dksJ d S )Nr   BCDEr   r9   r<   )rF   r   r2   r2   r2   r5   	test_rest   s   r   c                   C   8   t tddt dksJ t tddt dksJ d S )NrK   r   ry   r9   r   )rK   r9   )rF   r   r2   r2   r2   r5   	test_take      r   c                   C   sV   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 )NrK   r   CDEr9   r   r   )rF   r   r   r2   r2   r2   r5   	test_tail   s   r   c                   C   r   )NrK   r   DEr<   r   r   )rF   r   r2   r2   r2   r5   	test_drop   r   r   c                   C   s   t tddt dksJ d S )Nr9   r   ACE)rF   r&   r2   r2   r2   r5   test_take_nth   s   r   c                   C   s4  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s4J t di dddks?J t i g ddddksLJ t ddgdddksXJ t dgddksbJ t g ddkskJ ttdd stJ ttdd s}J ttdd sJ ttdd sJ ttdd sJ d S )Nr<   r   r   rK   BDr   r9   r   r   rO   r   r   defaultrV   r   ABr   )r   r   r   r2   c                   S   s
   t ddS )Nr   ry   r   r2   r2   r2   r5   rZ      rf   ztest_get.<locals>.<lambda>c                   S   s   t dddiS )Nr   r   r<   r   r2   r2   r2   r5   rZ      r   c                   S   s   t i g dS )NrV   r   r2   r2   r2   r5   rZ      r   c                   S   s   t g ddd S )NrV   r<   r   r2   r2   r2   r5   rZ          c                   S   s   t di tdS )Nr   r   )r   no_default2r2   r2   r2   r5   rZ      r   )r   rF   r   
IndexErrorKeyError	TypeErrorr2   r2   r2   r5   test_get   s   r   c                  C   s   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d	 } g d
t ttt| g dg dgksEJ d S )NrV   )rL   rC   rW   rX   )rK   r9   r<   r   )rW   rC   rL   )rp   rn   ru   r   c                 S   r>   r?   r2   )ir2   r2   r5   rZ      r`   ztest_mapcat.<locals>.<lambda>)rL   rC   rW   ru   rn   rp   rK   rL   rC   )rW   ru   rn   )rF   r   r6   reversedrD   r   map)r@   r2   r2   r5   test_mapcat   s   
r   c                   C   s"   t tdddgg dksJ d S )Nr<   r9   rK   rV   )rF   r   r2   r2   r2   r5   	test_cons      "r   c                   C   sH   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 NrC   r   r    ʚ;)r   r   r   r<   r9   )rF   r   r   rD   r2   r2   r2   r5   test_concat   s   r   c                   C   sD   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   )rF   r   r   rD   r2   r2   r2   r5   test_concatv   s   r   c                   C   sz   dt ttdtdksJ ddtddksJ ttdtdd	g d
ks,J ttdg dg dks;J d S )Nr   r   tXaXrXzXaXnra   Xtarzanr   r<   rL   )r<   r   r<   r   r<   r   r<   .r   )r   r   r   r   r   )r   r   r   rD   r(   rF   	itertoolsrepeatr2   r2   r2   r5   test_interpose   s   ""r   c                
   C   sT   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   r9   r<   rK   )r   r   r   r   onomatopoeiarL   )r   er   monpt)r   r2   r2   r2   r5   test_frequencies  s   
r   c                  C   s   g d} 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ddksLJ t ddd |ddddks\J d S )Nrt   c                 S   r7   r8   r2   r3   r2   r2   r5   rZ         ztest_reduceby.<locals>.<lambda>r   rp   rW   )FTr<      rn   zbuild roadsCAi@B )namestatecostzfight crimeILi zhelp farmersi i@ c                 S   rs   )Nr   r2   r3   r2   r2   r5   rZ     r`   c                 S      | |d  S Nr   r2   accr4   r2   r2   r5   rZ     r   iO i   )r   r   r   c                 S   r   r   r2   r   r2   r2   r5   rZ     r   )r   r.   r/   )rw   r:   projectsr2   r2   r5   test_reduceby  s*   



r   c                   C   sB   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 )NrJ   rW   rL   rM   )r   r:   r.   r   r2   r2   r2   r5   test_reduce_by_init  s   r   c                  C   s4   dd } t t| g dtddhddhdksJ d S )	Nc                 S   s   |  | | S r1   )r.   )sr   r2   r2   r5   set_add%  s   
z0test_reduce_by_callable_default.<locals>.set_add)r<   r9   rK   rL   r<   r9   r9   rL   r<   rK   rM   )r   r:   set)r   r2   r2   r5   test_reduce_by_callable_default$  s   r   c                   C   sH   t tttdddg dksJ t tdttdg dks"J d S )Nr   rC   )r   r<   r9   rK   rL   rL   r<   )r<   r9   rL   rn   )rF   r   islicer    r@   r   rB   r2   r2   r2   r5   test_iterate-  s   $$r   c                  C   s   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d } t }t t| g ||gksBJ t t| g g ksMJ t ttg dtg d	ks]J d S )
Nrt   )r<   rK   rW   r   r   )r<   r9   rW      x   )r   r   r9   rC   rp      c                 S   s   t d)Nzbinop should not be called)AssertionErrorr   r   r2   r2   r5   binop7  rA   ztest_accumulate.<locals>.binoprV   r<   rK   rW   )rF   r!   r.   r/   objectr   )r  startr2   r2   r5   test_accumulate2  s    $r  c                   C   s"   t tttdg dksJ d S )NrV   r  )rF   r!   r.   r   r2   r2   r2   r5   -test_accumulate_works_on_consumable_iterables@  r   r	  c                   C   s@   t tdg dg dksJ t tdg dddgksJ d S )Nr9   rJ   )rO   r9   rK   rK   rL   rK   rV   rh   rF   r"   r2   r2   r2   r5   test_sliding_windowD  s   "r  c                   C   s8   t tdddgg ksJ t tdddgg ksJ d S )NrK   r<   r9   ru   r  r2   r2   r2   r5   %test_sliding_window_of_short_iteratorI  r   r  c                   C   sx   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dgks/J t tdg g ks:J d S )Nr9   rJ   rO   r  rK   ru   r   r<   r9   r   rL   r   )pad)rK   r   r   )rF   r$   rD   r2   r2   r2   r5   test_partitionN  s   
r  c                  C   s   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	 d	t} |  }||||f|||fg}t td
|gd |ksMJ t td
t|gd |ks]J d S )Nr9   rJ   rO   r  rK   rC   r  c                   @   r   )z%test_partition_all.<locals>.NoComparec                 S   s   | j |j krdS t )NT)	__class__r   )r   otherr2   r2   r5   __eq__]  s   z,test_partition_all.<locals>.NoCompare.__eq__N)r   r   r   r  r2   r2   r2   r5   	NoCompare\  r   r  rL   ru   )rF   r%   rD   r  r   )r  objresultr2   r2   r5   test_partition_allV  s   $r  c                   C   s\   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 )NrV   rK   r   rJ   rL   hellorC   )r#   r   r2   r2   r2   r5   
test_countg  s
   r  c                  C   s  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sVJ t td| dddgksdJ t tddg| ddgkssJ t tdg| ddgksJ t tddg| dddgksJ ttdd sJ ttdd sJ t tdddgddgddggtg dksJ ttdd sJ d S )Nr   r<   r9   rK   rL   rC   )r   r9   rL   r  r   r   r  cheese)idr   pies)r  r   pricer  r  r   )r<   r  )r9   r  )r  )r  r  )r   r   )r<   r   c                   S   s   t tddggS Nr<   r   rF   r'   r2   r2   r2   r5   rZ   |      ztest_pluck.<locals>.<lambda>c                   S   s   t tdddigS )Nr   r  r<   r   r2   r2   r2   r5   rZ   }      c                   S   s   t tddggtS r  )rF   r'   r   r2   r2   r2   r5   rZ     r"  )rF   r'   r   r   r   r   rv   r2   r2   r5   
test_pluckp  s   ,*& .r#  c                  C   sr   g d} g d}dd }t tttt| t|}h d}||ks"J t tttt| t|ttd}||ks7J d S )Nr<   r   r9   tworK   three)appler<   oranger<   )bananar9   )coconutr9   c                 S   s   | d | d  S Nr   r<   r2   )pairr2   r2   r5   addpair  s   ztest_join.<locals>.addpair>   r<   r   r+  r<   r<   r   r-  r<   r9   r'  r.  r9   r9   r'  r/  r9   left_defaultright_default)r   r   r.   r(   r   r   r   )namesfruitr2  r  expectedr2   r2   r5   	test_join  s   
r=  c                   C   sB   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   r2   )r   r2   r2   r2   r5   test_getter  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s*J d	d }ttdd
g| dd
g|tt|| ||ksFJ dd }ttdg| dg|tt|| ||ks`J d S )Nc                 S   s   g | ]}||d  fqS rT   r2   .0r   r2   r2   r5   
<listcomp>  s    z&test_key_as_getter.<locals>.<listcomp>rC   c                 S   s   g | ]}||d  |d fqS r
  r2   r@  r2   r2   r5   rB    s    r   c                 S   rs   Nr   r2   r3   r2   r2   r5   rZ     r`   z$test_key_as_getter.<locals>.<lambda>c                 S   rs   rC  r2   r3   r2   r2   r5   rZ     r`   c                 S   s   | d | d fS r0  r2   r3   r2   r2   r5   rZ     r   r<   c                 S   s
   | d fS rC  r2   r3   r2   r2   r5   rZ     rf   )rD   r   r(   )squarespowsr   r2   r2   r5   test_key_as_getter  s    rF  c                  C   s@   g d} g d}t tttt| t|}h d}||ksJ d S )N)r%  r&  r(  )r<   uno)r9   dosr*  >   r<   rG  r+  r<   r<   rG  r-  r<   r9   rH  r.  r9   r9   rH  r/  r9   r3  r4  r5  r6  r   r   r.   r(   r   r   r:  r;  r  r<  r2   r2   r5   test_join_double_repeats  s
   	rO  c                  C   s>   g d} ddg}t tttt| t|}dh}||ksJ d S )Nr$  )r+  rC   r,  r4  rM  rN  r2   r2   r5   test_join_missing_element  s
   rP  c                  C   6   t ttddgtddgd d} ddh}| |ksJ d S )Nr<   r9   rK   )r8  rQ   r_   r   r(   r6   r  r<  r2   r2   r5   test_left_outer_join     rT  c                  C   rQ  )Nr<   r9   rK   )r9  rQ   r<   NrR  rS  r2   r2   r5   test_right_outer_join  rU  rW  c               	   C   s8   t ttddgtddgd d d} h d}| |ksJ d S )Nr<   r9   rK   r7  >   r_   rV  rQ   rR  rS  r2   r2   r5   test_outer_join  s
   rX  c                     s  t tdd s	J t tdd sJ t td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sAJ ttddgdgdgksPJ ttddgdgd dddgksbJ t tdd skJ t tdd stJ t tdd s}J t tdd sJ ttddgdgksJ 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 r1   rF   r)   r2   r2   r2   r5   rZ     rf   ztest_diff.<locals>.<lambda>c                   S   s   t tddgS Nr<   r9   rY  r2   r2   r2   r5   rZ     r   c                   S   s   t tddgdS Nr<   r9   rK   rY  r2   r2   r2   r5   rZ     r!  r<   r9   rO   rV   )r<   r   rK   )r<   r9   r   )r9   r   r9   )rK   rK   r   r   )r<   r   r   )r9   Nc                   S   s   t tg S r1   rY  r2   r2   r2   r5   rZ     r   c                   S   s   t tg gS r1   rY  r2   r2   r2   r5   rZ     r   c                   S   s   t tddggS rZ  rY  r2   r2   r2   r5   rZ     r!  c                   S   s   t tddgdgS r[  rY  r2   r2   r2   r5   rZ     r"  rP   r
  dollar)r   currencyd   yeni,  g{Gz?)r\  r_  c                    s    | d  | d  S )Nr]  r   r2   )r   conversionsr2   r5   	indollars  s   ztest_diff.<locals>.indollarsr\   )r   r   rF   r)   r   )data1data2rb  r2   r`  r5   	test_diff  s2   $
$

re  c                   C   s   t dg ddksJ t dg ddd ddksJ t dtg dd	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dfksNJ 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sqJ t dg dddks}J d S )Nr9   )rL   r<   rC   r9   )rC   rL   c                 S   rY   r1   r2   r3   r2   r2   r5   rZ     r[   ztest_topk.<locals>.<lambda>r\   rO   )rC   r<   rL   r9   c                 S   rY   r1   r2   r3   r2   r2   r5   rZ     r[   r<   r   r  rp   r   r   )ri   rP   rQ   rK   r<   rL   r   r   )rg  rf  )r*   r   r2   r2   r2   r5   	test_topk  s(   "rh  c                   C   s"   t dg ddd ddksJ d S )NrL   )rC   rp   r9   r<   rC   rK   c                 S   s   dS r?   r2   r3   r2   r2   r5   rZ     s    z%test_topk_is_stable.<locals>.<lambda>r\   )rC   rp   r9   r<   )r*   r2   r2   r2   r5   test_topk_is_stable  r   ri  c                  C   sJ   g d} t | \}}|| d ksJ t|| ksJ ttdd s#J d S )Nr>  BobCarolr   c                   S   s   t g S r1   )r+   r2   r2   r2   r5   rZ     r`   ztest_peek.<locals>.<lambda>)r+   rF   r   r   )alistelementblistr2   r2   r5   	test_peek  s
   rp  c                  C   sl   d} t d| \}}|| d d ksJ t|| ksJ t t| d | \}}|| ks,J t|| ks4J d S )Nrj  r9   rL   )r,   r   len)rm  elementsro  r2   r2   r5   
test_peekn  s   rs  c                     s   t td t td dd ksJ d fdd	 } |  ks$J d}td}||ks4J | |ks:J ttttksHJ tttt ksWJ dd	ksaJ ttfd
dslJ d S )Nr^  r<   i  probseqrandom_statec                    s   t td | dS )Ng?rt  )rF   r-   )rs)rm  r2   r5   rZ   .  s    z$test_random_sample.<locals>.<lambda>i     ar   c                      s    g S r1   r2   r2   )
mk_rsampler2   r5   rZ   >  r`   rS   )rF   rD   r-   r   hashr  r   r   )rsample1rsample2randobjr2   )rm  rz  r5   test_random_sample)  s   r  )mr   r   cytoolz.utilsr   	functoolsr   randomr   pickler   r   cytoolz.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.   r/   r   r6   r:   r=   r@   rB   rI   rN   rU   rx   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?  rF  rO  rP  rT  rW  rX  re  rh  ri  rp  rs  r  r2   r2   r2   r5   <module>   s    

				