o
    SiL                     @   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   P/home/ubuntu/.local/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   "rJ   c                   C   s(   t tg dddgddgdksJ d S )Nr<   r9         r9   rM   r<   rL   TF)r	   r:   r2   r2   r2   r5   test_groupby2   s   (rO   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<   rL   r9   r9   r9   rM   rP   rQ   rR   rS   )r<   r9   ))r<   r<   rR   )r	   r2   r2   r2   r5   test_groupby_non_callable6   s   rV   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   rL   )r<   r<   r9   r9   rL   rL   )r<   rL   rD   )r9   rM      r<   r9   rL   rM   rD   rX   r<   r9   rM   rL   rK   )rD   rL   r<   )rX   rM   rL   c                 S      |  S r1   r2   r3   r2   r2   r5   <lambda>I       z#test_merge_sorted.<locals>.<lambda>key)rX   rD   rM   rL   rL   r<   )r9   r<   rL   c                 S      | d S NrL   r2   r3   r2   r2   r5   r[   K       )r9   r<   r<   r9   rL   rL   c                 S   r_   r`   r2   r3   r2   r2   r5   r[   M   ra   )r9   r<   rL   rL    abc	aaabbbccccbac                 S   s
   t |  S r1   )ordr3   r2   r2   r5   r[   Q      
 	cccbbbaaar9   rL   rM   )rP   r   rM   rL   rX   )rD   rL   rX   rD      ro   )	   r<   rq   ro   rq   rq   r^   c                 S      | d S r?   r2   r3   r2   r2   r5   r[   V   ra   )	rp   rP   rl   rj   rm   rk   rn   rr   rs   )r<   rM   rD   r<   r9   rL   rM   rD   rD      rX   )r<   r9   rL   rM   rD   rX   rv   )rG   r
   r(   rf   r6   datar2   r2   r5   test_merge_sortedD   sF   ""&$""(6ry   c                   C   s0   d tddksJ d tddksJ d S )Nrb   )ABC123A1B2C3)rz   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 )NrW   )r<   r9   r<   rL   r]   rP   )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   rW   Trc   rD   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 )NrW   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<   rL   r9   r<   r   foobarc                   S   s   t dddiS )N
   r   )r   r2   r2   r2   r5   r[          ztest_nth.<locals>.<lambda>Dc                   S   s   t dtdS )Nr   r   )r   r   r2   r2   r2   r5   r[      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   rL   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<   )rG   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 )NrL   r   rz   r9   r   )rL   r9   )rG   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 )NrL   r   CDEr9   r   r   )rG   r   r   r2   r2   r2   r5   	test_tail   s   r   c                   C   r   )NrL   r   DEr<   r   r   )rG   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)rG   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   rL   BDr   r9   r   r   rP   r   r   defaultrW   r   ABr   )r   r   r   r2   c                   S   s
   t ddS )Nr   rz   r   r2   r2   r2   r5   r[      rg   ztest_get.<locals>.<lambda>c                   S   s   t dddiS )Nr   r   r<   r   r2   r2   r2   r5   r[      r   c                   S   s   t i g dS )NrW   r   r2   r2   r2   r5   r[      r   c                   S   s   t g ddd S )NrW   r<   r   r2   r2   r2   r5   r[          c                   S   s   t di tdS )Nr   r   )r   no_default2r2   r2   r2   r5   r[      r   )r   rG   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 )NrW   )rM   rD   rX   rY   )rL   r9   r<   r   )rX   rD   rM   )rq   ro   rv   r   c                 S   r>   r?   r2   )ir2   r2   r5   r[      ra   ztest_mapcat.<locals>.<lambda>)rM   rD   rX   rv   ro   rq   rL   rM   rD   )rX   rv   ro   )rG   r   r6   reversedrE   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   rL   rW   )rG   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 NrD   r   r    ʚ;)r   r   r   r<   r9   )rG   r   r   rE   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   )rG   r   r   rE   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   tXaXrXzXaXnrb   Xtarzanr   r<   rM   )r<   r   r<   r   r<   r   r<   .r   )r   r   r   r   r   )r   r   r   rE   r(   rG   	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<   rL   )r   r   r   r   onomatopoeiarM   )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 )Nru   c                 S   r7   r8   r2   r3   r2   r2   r5   r[         ztest_reduceby.<locals>.<lambda>r   rq   rX   )FTr<      ro   zbuild roadsCAi@B )namestatecostzfight crimeILi zhelp farmersi i@ c                 S   rt   )Nr   r2   r3   r2   r2   r5   r[     ra   c                 S      | |d  S Nr   r2   accr4   r2   r2   r5   r[     r   iO i   )r   r   r   c                 S   r   r   r2   r   r2   r2   r5   r[     r   )r   r.   r/   )rx   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 )NrK   rX   rM   rN   )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   rL   rM   r<   r9   r9   rM   r<   rL   rN   )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   rD   )r   r<   r9   rL   rM   rM   r<   )r<   r9   rM   ro   )rG   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 )
Nru   )r<   rL   rX   r   r   )r<   r9   rX      x   )r  r   r9   rD   rq      c                 S   s   t d)Nzbinop should not be called)AssertionErrorr   r   r2   r2   r5   binop7  rA   ztest_accumulate.<locals>.binoprW   r<   rL   rX   )rG   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 )NrW   r  )rG   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   rK   )rP   r9   rL   rL   rM   rL   rW   ri   rG   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 )NrL   r<   r9   rv   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   rK   rP   r  rL   rv   r   r<   r9   r   rM   r  )pad)rL   r  r  )rG   r$   rE   r2   r2   r2   r5   test_partitionN  s   
r  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	} |  }||||f|||fg}t td
|gd |ksLJ t td
t|gd |ks\J G dd dt }|ddgdd tt fddswJ |ddgddttfddsJ d S )Nr9   rK   rP   r  rL   rD   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  rM   rv   c                       s*   e Zd Zd fdd	Z fddZ  ZS )z-test_partition_all.<locals>.ListWithBadLengthr<   c                    s   || _ t | d S r1   )off_bysuper__init__)r   contentsr  r  r2   r5   r  h  s   z6test_partition_all.<locals>.ListWithBadLength.__init__c                    s   t   | j S r1   )r  __len__r  r   r  r2   r5   r  l     z5test_partition_all.<locals>.ListWithBadLength.__len__rT   )r   r   r   r  r  __classcell__r2   r2   r  r5   ListWithBadLengthg  s    r   r<   )r  c                         t td S rC   rG   r%   r2   )too_long_listr2   r5   r[   p  r   z$test_partition_all.<locals>.<lambda>r  c                      r!  rC   r"  r2   )too_short_listr2   r5   r[   r  r   )rG   r%   rE   r   r   LookupError)r  objresultr   r2   )r#  r$  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 )NrW   rL   r   rK   rM   hellorD   )r#   r   r2   r2   r2   r5   
test_countu  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   rL   rM   rD   )r   r9   rM   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   rG   r'   r2   r2   r2   r5   r[         ztest_pluck.<locals>.<lambda>c                   S   s   t tdddigS )Nr   r,  r<   r0  r2   r2   r2   r5   r[         c                   S   s   t tddggtS r/  )rG   r'   r   r2   r2   r2   r5   r[     r2  )rG   r'   r   r   r   r   rw   r2   r2   r5   
test_pluck~  s   ,*& .r3  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rL   three)appler<   oranger<   )bananar9   )coconutr9   c                 S   s   | d | d  S Nr   r<   r2   )pairr2   r2   r5   addpair  r  ztest_join.<locals>.addpair>   r<   r   r;  r<   r<   r   r=  r<   r9   r7  r>  r9   r9   r7  r?  r9   left_defaultright_default)r   r   r.   r(   r   r   r   )namesfruitrB  r'  expectedr2   r2   r5   	test_join  s   
rM  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   rO  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 rU   r2   .0r   r2   r2   r5   
<listcomp>  s    z&test_key_as_getter.<locals>.<listcomp>rD   c                 S   s   g | ]}||d  |d fqS r  r2   rP  r2   r2   r5   rR    s    r   c                 S   rt   Nr   r2   r3   r2   r2   r5   r[     ra   z$test_key_as_getter.<locals>.<lambda>c                 S   rt   rS  r2   r3   r2   r2   r5   r[     ra   c                 S   s   | d | d fS r@  r2   r3   r2   r2   r5   r[     r   r<   c                 S   s
   | d fS rS  r2   r3   r2   r2   r5   r[     rg   )rE   r   r(   )squarespowsr   r2   r2   r5   test_key_as_getter  s    rV  c                  C   s@   g d} g d}t tttt| t|}h d}||ksJ d S )N)r5  r6  r8  )r<   uno)r9   dosr:  >   r<   rW  r;  r<   r<   rW  r=  r<   r9   rX  r>  r9   r9   rX  r?  r9   rC  rD  rE  rF  r   r   r.   r(   r   r   rJ  rK  r'  rL  r2   r2   r5   test_join_double_repeats  s
   	r_  c                  C   s>   g d} ddg}t tttt| t|}dh}||ksJ d S )Nr4  )r;  rD   r<  rD  r]  r^  r2   r2   r5   test_join_missing_element  s
   r`  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   rL   )rH  rR   r`   r   r(   r6   r'  rL  r2   r2   r5   test_left_outer_join     rd  c                  C   ra  )Nr<   r9   rL   )rI  rR   r<   Nrb  rc  r2   r2   r5   test_right_outer_join  re  rg  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   rL   rG  >   r`   rf  rR   rb  rc  r2   r2   r5   test_outer_join  s
   rh  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   rG   r)   r2   r2   r2   r5   r[     rg   ztest_diff.<locals>.<lambda>c                   S   s   t tddgS Nr<   r9   ri  r2   r2   r2   r5   r[     r   c                   S   s   t tddgdS Nr<   r9   rL   ri  r2   r2   r2   r5   r[     r1  r<   r9   rP   rW   )r<   r   rL   )r<   r9   r   )r9   r   r9   )rL   rL   r   r   )r<   r   r   )r9   Nc                   S   s   t tg S r1   ri  r2   r2   r2   r5   r[     r   c                   S   s   t tg gS r1   ri  r2   r2   r2   r5   r[     r   c                   S   s   t tddggS rj  ri  r2   r2   r2   r5   r[     r1  c                   S   s   t tddgdgS rk  ri  r2   r2   r2   r5   r[     r2  rQ   r  dollar)r   currencyd   yeni,  g{Gz?)rl  ro  c                    s    | d  | d  S )Nrm  r   r2   )r   conversionsr2   r5   	indollars  s   ztest_diff.<locals>.indollarsr]   )r   r   rG   r)   r   )data1data2rr  r2   rp  r5   	test_diff  s2   $
$

ru  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   )rM   r<   rD   r9   )rD   rM   c                 S   rZ   r1   r2   r3   r2   r2   r5   r[     r\   ztest_topk.<locals>.<lambda>r]   rP   )rD   r<   rM   r9   c                 S   rZ   r1   r2   r3   r2   r2   r5   r[     r\   r<   r   r  rq   r   r   )rj   rQ   rR   rL   r<   rM   r   r   )rw  rv  )r*   r   r2   r2   r2   r5   	test_topk  s(   "rx  c                   C   s"   t dg ddd ddksJ d S )NrM   )rD   rq   r9   r<   rD   rL   c                 S   s   dS r?   r2   r3   r2   r2   r5   r[      s    z%test_topk_is_stable.<locals>.<lambda>r]   )rD   rq   r9   r<   )r*   r2   r2   r2   r5   test_topk_is_stable  r   ry  c                  C   sJ   g d} t | \}}|| d ksJ t|| ksJ ttdd s#J d S )NrN  BobCarolr   c                   S   s   t g S r1   )r+   r2   r2   r2   r5   r[   )  ra   ztest_peek.<locals>.<lambda>)r+   rG   r   r   )alistelementblistr2   r2   r5   	test_peek#  s
   r  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 )Nrz  r9   rM   )r,   r   len)r}  elementsr  r2   r2   r5   
test_peekn,  s   r  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 )Nrn  r<   i  probseqrandom_statec                    s   t td | dS )Ng?r  )rG   r-   )rs)r}  r2   r5   r[   <  s    z$test_random_sample.<locals>.<lambda>i     ar   c                      s    g S r1   r2   r2   )
mk_rsampler2   r5   r[   L  ra   rT   )rG   rE   r-   r   hashr  r   r   )rsample1rsample2randobjr2   )r}  r  r5   test_random_sample7  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   rJ   rO   rV   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*  r3  rM  rO  rV  r_  r`  rd  rg  rh  ru  rx  ry  r  r  r  r2   r2   r2   r5   <module>   s    

				