o
    NrfN                     @   s  d dl Z d dl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 d dlmZmZmZ d dlmZ d dlmZ dd Zdd	 Zd
d Zdd ZG dd deZG dd deZdd Zdd Z dd Z!dd Z"dd Z#dd Z$dd Z%d d! Z&d"d# Z'd$d% Z(d&d' Z)d(d) Z*d*d+ Z+d,d- Z,d.d/ Z-d0d1 Z.d2d3 Z/d4d5 Z0d6d7 Z1d8d9 Z2d:d; Z3d<d= Z4d>d? Z5d@dA Z6dBdC Z7dDdE Z8dFdG Z9dHdI Z:dJdK Z;dLdM Z<dNdO Z=dPdQ Z>dRdS Z?dTdU Z@dVdW ZAdXdY ZBdZd[ ZCd\d] ZDd^d_ ZEd`da ZFdS )b    N)thread_firstthread_lastmemoizecurrycomposecompose_leftpipe
complementdojuxtflipexceptsapply)addmul
itemgetter)raises)partialc                 C      | d dkS )N   r    xr   r   c/var/www/html/software/conda/envs/catlas/lib/python3.10/site-packages/toolz/tests/test_functoolz.pyiseven      r   c                 C   r   )Nr      r   r   r   r   r   isodd   r   r   c                 C      | d S Nr   r   r   r   r   r   inc      r    c                 C   s   d|  S Nr   r   r   r   r   r   double   r!   r#   c                   @       e Zd ZdZdd Zdd ZdS )AlwaysEquals=useful to test correct __eq__ implementation of other objectsc                 C      dS NTr   selfotherr   r   r   __eq__      zAlwaysEquals.__eq__c                 C   r'   NFr   r)   r   r   r   __ne__!   r-   zAlwaysEquals.__ne__N__name__
__module____qualname____doc__r,   r/   r   r   r   r   r%          r%   c                   @   r$   )NeverEqualsr&   c                 C   r'   r.   r   r)   r   r   r   r,   (   r-   zNeverEquals.__eq__c                 C   r'   r(   r   r)   r   r   r   r/   +   r-   zNeverEquals.__ne__Nr0   r   r   r   r   r6   %   r5   r6   c                   C   sF   t tddks	J ttt tttgg ddksJ ttt s!J d S )N   
   )r8   i  i@  )   i  i>  )r   r#   tuplemapr    r   	TypeErrorr   r   r   r   
test_apply/   s   "r=   c                   C   sf   t ddksJ t dtdksJ t dttdksJ t dttdks%J t dtdftdks1J d S )Nr         r7      )r   r    r#   r   r   r   r   r   test_thread_first5   s
   rA   c                   C   sj   t tg dttfttfddgksJ t tg dttfttfdgks'J tdtdftdks3J d S )Nr   r   r>   r   r?   r>   r7   r@   )	listr   r;   r    filterr   r   r   r#   r   r   r   r   test_thread_last=   s   (&rE   c                     sj   dg  fdd} t | ddddu sJ  dgks J j| jks(J ttfdds3J d S )	Nr   c                    s    d  d7  < | | S ) A docstring r   r   r   r   y)fn_callsr   r   fF   s   ztest_memoize.<locals>.fr   r>   r   c                      s
    di S r   r   r   mfr   r   <lambda>O      
 ztest_memoize.<locals>.<lambda>)r   r4   r   r<   rJ   r   )rI   rL   r   test_memoizeC   s   rP   c                  C   s   dg} ddd}t |}|d|dksJ |dd|ddks"J |ddd|dddks0J |ddd|dddks>J d S )	Nr   c                 S      | | S Nr   rG   r   r   r   rJ   U   r!   ztest_memoize_kwargs.<locals>.fr   r   rH   r>   r   r   )rI   rJ   rL   r   r   r   test_memoize_kwargsR   s   
 rV   c                  C   sL   t ddd} | dd}t|}|d|dksJ |d|dks$J d S )Nr   c                 S   rQ   rR   r   rG   r   r   r   rJ   a      ztest_memoize_curried.<locals>.fr   rS   r>   rT   )r   r   rJ   f2Zfm2r   r   r   test_memoize_curried`   s   
rZ   c                  C   sJ   ddd} t | dd}t|}|d|dksJ |d|dks#J d S )Nr   c                 S   rQ   rR   r   rG   r   r   r   rJ   m   r!   ztest_memoize_partial.<locals>.fr   rS   r>   rT   )r   r   rX   r   r   r   test_memoize_partiall   s
   
r[   c                      s  t dd ddid  ddu sJ  ddu sJ t dd ddd	d  ddu s-J  ddu s5J  dddu s>J  dddksGJ  d
du sOJ t dd d
did  dddu sbJ  dddu skJ tt fddsvJ t dd ddid   du sJ t ddddtdfdddid  ddddksJ  dddksJ  ddddu sJ  dddu sJ  ddu sJ  d
du sJ t dddd tdfdddid   du sJ  dddksJ  ddksJ d S )Nc                 S   r'   r.   r   r   r   r   r   rM   y       z,test_memoize_key_signature.<locals>.<lambda>r   Tcacher   Fc                 W   r'   r.   r   )r   argsr   r   r   rM   ~   r\   )r   r   r   ra   c                 S   r'   r.   r   rG   r   r   r   rM      r\   r>   c                      s    dS )Nra   r   r   rK   r   r   rM          c                   S   r'   r.   r   r   r   r   r   rM      r\   r   r   c                 S   r'   r.   r   rG   r   r   r   rM      r\   r`   ))rH   r   )ra   NrS   c                 S   r'   r.   r   r   r   r   r   rM      r\   ))r   r   )r`   Nr   rT   )r   r   r<   	frozensetr   r   rK   r   test_memoize_key_signaturew   s@   
rd   c                  C   s:   t ddiddd } | ddu sJ | ddu sJ d S )Nr   Tr]   c                 S   r'   r.   r   r   r   r   r   rJ         z#test_memoize_curry_cache.<locals>.fr   FrU   rO   r   r   r   test_memoize_curry_cache   s   
rf   c                  C   s>   t dd ddd } | dddksJ | dddksJ d S )	Nc                 S      | d S Nr   r   )r_   kwargsr   r   r   rM      rb   z"test_memoize_key.<locals>.<lambda>)keyc                 _   rQ   rR   r   )r   rH   r_   ri   r   r   r   rJ      rW   ztest_memoize_key.<locals>.fr   r   r>   rU   rO   r   r   r   test_memoize_key   s   
rk   c                  C   s"   dd } t | }|j| u sJ d S )Nc                   S   r'   )z
        Docstring
        Nr   r   r   r   r   foo   s   z!test_memoize_wrapped.<locals>.foo)r   __wrapped__)rl   Zmemoized_foor   r   r   test_memoize_wrapped   s   rn   c                  C   s   t t} | d}t|sJ |ddksJ t| ttks J t t}t|tg dg dks4J ttdd s=J ttdd sFJ d S )	Nr   r8   r9   rB   )r   r>   r?   c                   S   s   t  S rR   r   r   r   r   r   rM          z#test_curry_simple.<locals>.<lambda>c                   S   s   t ddiS Nr   r   ro   r   r   r   r   rM          )	r   r   callablereprr;   rC   r    r   r<   )Zcmulr#   Zcmapr   r   r   test_curry_simple   s    ru   c                     sV  ddd} t | } | ddddksJ | ddddksJ | dddks'J | ddd	ddks3J | dd	dddks?J ddd}t |dd   dksQJ  dddksZJ  d
ddkscJ  d
dddksmJ  d
dksuJ tt fddsJ tfdd}t |dd
ksJ t |tdddksJ t |tdddksJ d S )Nr8   c                 S      | | | S rR   r   abcr   r   r   rJ      r   ztest_curry_kwargs.<locals>.fr   r   r>   	      rz   r   c                 S      | | | S rR   r   rw   r   r   r   g   r   ztest_curry_kwargs.<locals>.g)ry   r?   rx   rx   ry   c                      
    ddS rq   r   r   Zcgr   r   rM      rN   z#test_curry_kwargs.<locals>.<lambda>c                 S   s   || S rR   r   )r   funcr   r   r   h   r!   ztest_curry_kwargs.<locals>.hg        )r   z0.0r8   )r   r8   r   )r   r   r<   intstr)rJ   r   r   r   r   r   test_curry_kwargs   s&   

r   c                      sd   t dd   dddksJ tt fddsJ tt fdds%J tt fd	ds0J d S )
Nc                 S   s   t | tst | | S rR   )
isinstancer   r<   r   r   r   r   rJ      s   
z#test_curry_passes_errors.<locals>.fr   r   r>   c                      r   N1r   r   r   rO   r   r   rM      rN   z*test_curry_passes_errors.<locals>.<lambda>c                      s    ddS r   r   r   rO   r   r   rM      rr   c                      s    dddS )Nr   r   r>   r   r   rO   r   r   rM      rr   r   r   r<   r   r   rO   r   test_curry_passes_errors   s   
r   c                  C   sP   dd } t | }|j| jksJ t|t| ksJ | dd|ddks&J d S )Nc                 S      | S )rF   r   rG   r   r   r   rJ      re   ztest_curry_docstring.<locals>.fr   r   )r   r4   r   )rJ   r   r   r   r   test_curry_docstring   s
   r   c                  C   s  ddd} t | dddt| ddd}}|j|jksJ |j|jks%J |d|dks/J t | dt| d}}|j|jksCJ |j|jksKJ |d|dksUJ |ddd|dddkscJ t | ddt| dd}}|j|jksyJ |j|jksJ |dd|ddksJ d S )Nr   c                 S   r~   rR   r   rw   r   r   r   rl     r   z'test_curry_is_like_partial.<locals>.foor   r}   r>   r`   )r   r   keywordsr_   )rl   prz   r   r   r   test_curry_is_like_partial  s   
 r   c                  C   s   ddd} t | ddd}t |}t|t sJ t|t sJ t|jt r&J t|jdr.J |j|jks6J |j|jks>J |j|jksFJ d S )Nr   c                 S   r~   rR   r   rw   r   r   r   rl     r   z%test_curry_is_idempotent.<locals>.foor   r}   r   r`   )r   r   r   hasattrr_   r   )rl   rJ   r   r   r   r   test_curry_is_idempotent  s   
r   c                     s   ddd} t | ddd tt fddsJ tt fdds"J tt fd	ds-J tt fd
ds8J tt fddsCJ tt fddsNJ d S )Nr   c                 S   r~   rR   r   rw   r   r   r   rl   *  r   z+test_curry_attributes_readonly.<locals>.foor   r}   c                      s   t  ddS )Nr_   )r   setattrr   rO   r   r   rM   .  rr   z0test_curry_attributes_readonly.<locals>.<lambda>c                      s   t  dddiS )Nr   rz   r>   r   r   rO   r   r   rM   /      c                      s   t  d S Nr   r   r   rO   r   r   rM   0  rr   c                      
   t  dS )Nr_   delattrr   rO   r   r   rM   1  rN   c                      r   )Nr   r   r   rO   r   r   rM   2  rN   c                      r   r   r   r   rO   r   r   rM   3  rN   r`   )r   r   AttributeError)rl   r   rO   r   test_curry_attributes_readonly)  s   
r   c                  C   s   ddd} d| _ t| ddd}|j dksJ d|_d|_d	|_d
|_ |jdks)J |jdks0J |jd	ks7J |j d
ks>J t|drK|j|jksMJ d S d S )Nr   c                 S   r~   rR   r   rw   r   r   r   rl   7  r   z+test_curry_attributes_writable.<locals>.foozthis.is.foor   r}   ZnewnameZnewdocZ	newmoduleZnewqualname	func_namer`   )r3   r   r1   r4   r2   r   r   )rl   rJ   r   r   r   test_curry_attributes_writable6  s    

r   c                  C   s   ddl m}  | jdksJ d S )Nr   mergeztoolz.curried.exceptions)Ztoolz.curried.exceptionsr   r2   r   r   r   r   test_curry_moduleH  s   r   c            	         s4  ddd} t | ddd}t | ddd}t | ddd}t | dd}|dd}| }||ks.J ||kr4J ||ks:J ||kr@J ||ksFJ ||ksLJ ||ksRJ ddd}t |ddd}||ksdJ |||||||| h||||hkswJ t | g  tt fd	d
sJ t | g dttfdd
sJ d S )Nr   c                 S   r~   rR   r   rw   r   r   r   rl   N  r   z"test_curry_comparable.<locals>.foor   r}   r>   c                 S   r~   rR   r   rw   r   r   r   bar_  r   z"test_curry_comparable.<locals>.barc                         t  S rR   hashr   )unhash1r   r   rM   h  rb   z'test_curry_comparable.<locals>.<lambda>c                      r   rR   r   r   )unhash2r   r   rM   j  rb   r`   r   )	rl   f1rY   g1Zh1Zh2Zh3r   b1r   )r   r   r   test_curry_comparableM  s,   


&
r   c                  C   s>   ddd} t | }|ddddddd| ddksJ d S )	Nr   c                 S   rQ   rR   r   rG   r   r   r   rJ   q  r!   z*test_curry_doesnot_transmogrify.<locals>.fr   rS   r   r>   rT   ro   )rJ   cfr   r   r   test_curry_doesnot_transmogrifym  s   
,r   c                  C   s>  G dd dt } | d}|dddksJ |dddks!J | |dddks,J | |dddks9J |dddksCJ |dddksNJ | dddksXJ | dddkscJ |dddksmJ |dddksxJ | dddksJ | dddksJ t|jtsJ t| jtsJ d S )	Nc                   @   sD   e Zd ZdZdd Zedd Zeedd Ze	edd	 Z
d
S )z%test_curry_on_classmethods.<locals>.Ar8   c                 S   
   || _ d S rR   BASEr*   baser   r   r   __init__|     
z.test_curry_on_classmethods.<locals>.A.__init__c                 S      | j | | S rR   r   r*   r   rH   r   r   r   	addmethod     z/test_curry_on_classmethods.<locals>.A.addmethodc                 S   r   rR   r   clsr   rH   r   r   r   addclass     z.test_curry_on_classmethods.<locals>.A.addclassc                 S   rQ   rR   r   rG   r   r   r   	addstatic     z/test_curry_on_classmethods.<locals>.A.addstaticN)r1   r2   r3   r   r   r   r   classmethodr   staticmethodr   r   r   r   r   Ay  s    
r   d   r>   r?   k         )objectr   r   r   r   r   r   rx   r   r   r   test_curry_on_classmethodsx  s    r   c                  C   s   G dd dt } | d}|dddksJ | |dddks!J d|_|dddks.J d|_|dddks;J |ddd	ksEJ | ddd	ksOJ d
| _| ddd	ks\J d
| _| ddd	ksiJ |dddkssJ | dddks}J d S )Nc                   @   sP   e Zd ZdZdZdd Zedd Zeedd Z	e
edd	 Zd
d ZdS )z'test_memoize_on_classmethods.<locals>.Ar8   c                 S   r   rR   r   r   r   r   r   r     r   z0test_memoize_on_classmethods.<locals>.A.__init__c                 S   r   rR   r   r   r   r   r   r     r   z1test_memoize_on_classmethods.<locals>.A.addmethodc                 S   r   rR   r   r   r   r   r   r     r   z0test_memoize_on_classmethods.<locals>.A.addclassc                 S   rQ   rR   r   rG   r   r   r   r     r   z1test_memoize_on_classmethods.<locals>.A.addstaticc                 S   s   | j S rR   )HASHr*   r   r   r   __hash__  s   z0test_memoize_on_classmethods.<locals>.A.__hash__N)r1   r2   r3   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r     s    
r   r   r>   r?   r         r   r9   r   )r   r   r   r   r   r   r   r   r   r   test_memoize_on_classmethods  s    r   c                      s`   t dd  tt fddsJ  dd ddksJ  dd ddks.J d S )Nc                 S   rQ   rR   r   rG   r   r   r   r     rW   ztest_curry_call.<locals>.addc                      s
     dS r   )callr   r   r   r   rM     rN   z!test_curry_call.<locals>.<lambda>r   r   )r   r   r<   r   r   r   r   r   test_curry_call  s
   
"r   c                  C   s   t d	dd} |  | ddksJ | dd| ddksJ | dd | ddks/J | jdddd| ddks?J | jddjdd | ddksQJ d S )
Nr   r   c                 S   rQ   rR   r   rG   r   r   r   r     rW   ztest_curry_bind.<locals>.addr8   r9   r   rS   ra   )r   bindr   r   r   r   test_curry_bind  s     (r   c                     s   dd  t  fdd} |  ddddksJ | ddddks%J | ddddks0J | ddddks:J | dddd	| dddd	ksKJ d S )
Nc                 S   r~   rR   r   )r   rH   zr   r   r   add3  r   z%test_curry_unknown_args.<locals>.add3c                     s    |  S rR   r   )r_   r   r   r   rJ     rW   z"test_curry_unknown_args.<locals>.fr   r   r>      r?   ro   rO   r   r   r   test_curry_unknown_args  s   &r   c                   C   s   t tdd s	J d S )Nc                   S   s   t dS r   ro   r   r   r   r   rM     rb   z&test_curry_bad_types.<locals>.<lambda>)r   r<   r   r   r   r   test_curry_bad_types  s   r   c                  C   sv   G dd dt } | dd }t|t sJ t|| sJ t|d| s%J t| d| s/J |dddks9J d S )Nc                   @   s   e Zd ZdS )z(test_curry_subclassable.<locals>.mycurryN)r1   r2   r3   r   r   r   r   mycurry  s    r   c                 S   rQ   rR   r   rG   r   r   r   rM     rb   z)test_curry_subclassable.<locals>.<lambda>r   r   r>   )r   r   )r   r   r   r   r   test_curry_subclassable  s   r   c               	   C   sf   ddd} ddi dft fdi dftt fdi dfttt tfd	i d
fttfdi dftt | fdddidffS )zM
    Generate test cases for parametrized tests of the compose function.
    r8   c                 S   rv   rR   r   rw   r   r   r   add_then_multiply  r   z6generate_compose_test_cases.<locals>.add_then_multiplyr   rT   r   r   r   )r>   Falsera   3rz   r>   10Nr   )r    r#   r   r   r   )r   r   r   r   generate_compose_test_cases  s4   

r   c                  C   2   t  D ]\} }}}t|  |i ||ksJ qd S rR   )r   r   )compose_argsr_   kwexpectedr   r   r   test_compose9     r   c                     s  dd } dd }t | |jdksJ jdksJ t }t | |jdks*J jdks1J td	| |ks=J t | |ksFJ t ksMJ t || krVJ t kr]J t krdJ t || ksmJ t kstJ t ks{J t | |krJ t krJ ttt | |ksJ ttt || ksJ t t	d
d d$dd G  fddd}|
ddksJ |j
ddddksJ |ddksJ | 
 dksJ | j
dddksJ | ddksJ | dddksJ t | |j|u s
J ttdrt | |jjd u sJ dd }dd }tt	ttttd |_tt	d!|_t ||t}|jt|jksJJ |jt	ksRJ G fd"dd}tt| jjd#ksjJ d S )%Nc                 S   r   rR   r   r   r   r   r   rJ   A  r-   z test_compose_metadata.<locals>.fc                 S   r   rR   r   r   r   r   r   r   D  r-   z test_compose_metadata.<locals>.gZf_of_gz-lambda *args, **kwargs: f(g(*args, **kwargs))ZComposezA composition of functionszCompose({!r}, {!r})c                 S   s   | d S r"   r   r   r   r   r   rM   c  rb   z'test_compose_metadata.<locals>.<lambda>r   c                 S   s   t | | S rR   )r   rG   r   r   r   rM   c  rr   c                       s    e Zd Zdd Z Ze ZdS )&test_compose_metadata.<locals>.MyClassc                 S   r'   )N   r   r   r   r   r   __int__g  r-   z.test_compose_metadata.<locals>.MyClass.__int__N)r1   r2   r3   r   	my_methodr   my_static_methodr   )bindabler   r   MyClasse  s    r   r>   6r   rS   r   4Z16Z220r   2Zsandboxc                 _   r'   )Nr?   r   )rx   ry   rz   der   r   r   myfunc{  r-   z%test_compose_metadata.<locals>.myfuncc                 S   s
   d | S )Nz
result: {})formatrO   r   r   r   	otherfunc~  r   z(test_compose_metadata.<locals>.otherfunc)rx   ry   rz   r   r   return)rJ   r   c                       s   e Zd Z ZdS )r   N)r1   r2   r3   methodr   )composedr   r   r     s    r?   rT   )r   r1   r4   r   rt   r   r%   r6   r   r   r   r   rm   r   toolz	__class__r   floatbool__annotations__inspect	signature
parametersreturn_annotationlenr   )rJ   r   r   r   r   r   sigr   )r   r   r   test_compose_metadata>  sd   



"r  c                   C   s   t dd t D S )z
    Generate test cases for parametrized tests of the compose function.

    These are based on, and equivalent to, those produced by
    enerate_compose_test_cases().
    c                 s   s,    | ]\}}}}t t||||fV  qd S rR   )r:   reversed).0r   r_   ri   r   r   r   r   	<genexpr>  s
    

z3generate_compose_left_test_cases.<locals>.<genexpr>)r:   r   r   r   r   r    generate_compose_left_test_cases  s   r  c                  C   r   rR   )r  r   )Zcompose_left_argsr_   r   r   r   r   r   test_compose_left  r   r  c                   C   s@   t dtdks	J t dttdksJ t dtttdu sJ d S )Nr   r   r>   F)r   r    r#   r   r   r   r   r   	test_pipe  s   r  c                  C   s  t dd  s	J t dd  rJ t tdsJ t tdr"J t t tds,J t t tdr6J dd } t | ddsCJ t | ddrLJ t dd  sUJ t dd  s^J t d	d  sgJ t d
d  spJ t dd  ryJ t dd  rJ t dd  rJ d S )Nc                   S   r'   r.   r   r   r   r   r   rM     r\   z!test_complement.<locals>.<lambda>c                   S   r'   r(   r   r   r   r   r   rM     r\   r   r   c                 S   s   t | ot |S rR   )r   r   r   r   r   rM     r   c                   S   r'   )N r   r   r   r   r   rM     r\   c                   S   r'   rh   r   r   r   r   r   rM     r\   c                   S   s   d S rR   r   r   r   r   r   rM     r\   c                   S   s   g S rR   r   r   r   r   r   rM     r\   c                   S   r'   )Nr   r   r   r   r   r   rM     r\   c                   S   r'   r   r   r   r   r   r   rM     r\   c                   S   s   dgS r   r   r   r   r   r   rM     rp   )r	   r   r   )Z	both_evenr   r   r   test_complement  s    r  c                  C   sD   dd } t | ddksJ g }t |jddksJ |dgks J d S )Nc                 S   r   r   r   r   r   r   r   rM     rb   ztest_do.<locals>.<lambda>r   )r
   append)r    logr   r   r   test_do  s
   r  c                  C   sF   t td} tdd tdD }|| dksJ || dks!J d S )Nr8   c                 s   s    | ]	}t d | V  qdS )r   N)r   )r	  ir   r   r   r
    s    z,test_juxt_generator_input.<locals>.<genexpr>r7   )r   r   r?   r   r   )rC   ranger   )dataZjuxtfuncr   r   r   test_juxt_generator_input  s   r  c                  C   s    dd } t | dddksJ d S )Nc                 S   s   | |fS rR   r   r   r   r   r   rJ     r!   ztest_flip.<locals>.frx   ry   )ry   rx   )r   rO   r   r   r   	test_flip  s   r  c                     s  t jdksJ dt jv sJ dd } dd }t t| |  ddks$J  d	dks,J  d
dks4J  jdks;J d jv sBJ d jv sIJ d jv sPJ dd }t ttf|  g d u scJ  dgdkslJ  i d u stJ  ddidks~J  jdksJ d jv sJ d jv sJ d jv sJ dd }t ttf|  td u sJ  td u sJ tt fddsJ tt fddsJ t t	 t	 t	   jdksJ  jt jksJ d S )Nr   zOA wrapper around a function to catch exceptions and
    dispatch to a handler.
c                 S   s   ddg | S )zidx docstring
        r   r   )indexr   r   r   r   idx  r   ztest_excepts.<locals>.idxc                 S   s   t | tsJ dS )zhandler docstring
        )r   
ValueError)r   r   r   r   handler  s   ztest_excepts.<locals>.handlerr   r   r   r>   r  Zidx_excepting_ValueErrorzidx docstringr  zhandler docstringc                 S   rg   )zgetzero docstring
        r   r   r   r   r   r   getzero  r   ztest_excepts.<locals>.getzeroZ(getzero_excepting_IndexError_or_KeyErrorzgetzero docstringZreturn_nonezReturns Nonec                 S   s   |  )zHA function that raises an instance of the exception type given.
        r   r   r   r   r   raise_  s   ztest_excepts.<locals>.raise_c                          t S rR   )r<   r   	exceptingr   r   rM     rb   ztest_excepts.<locals>.<lambda>c                      r  rR   )NotImplementedErrorr   r   r   r   rM     rb   r!  )
r   r1   r4   r  
IndexErrorKeyErrorr   r<   r"  r   )r  r  r  r  r   r   r   test_excepts  sB   r%  )Gr  r   Ztoolz.functoolzr   r   r   r   r   r   r   r	   r
   r   r   r   r   operatorr   r   r   Ztoolz.utilsr   	functoolsr   r   r   r    r#   r   r%   r6   r=   rA   rE   rP   rV   rZ   r[   rd   rf   rk   rn   ru   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r  r  r  r  r  r  r  r  r%  r   r   r   r   <module>   sh    <

,		 *-	*Y	