U
    /eN                     @   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   s   | d dkS )N   r    xr   r   >/tmp/pip-unpacked-wheel-zr66a21f/toolz/tests/test_functoolz.pyiseven   s    r   c                 C   s   | d dkS )Nr      r   r   r   r   r   isodd   s    r   c                 C   s   | d S Nr   r   r   r   r   r   inc   s    r   c                 C   s   d|  S Nr   r   r   r   r   r   double   s    r   c                   @   s    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   s   dS NTr   selfotherr   r   r   __eq__   s    zAlwaysEquals.__eq__c                 C   s   dS NFr   r#   r   r   r   __ne__!   s    zAlwaysEquals.__ne__N__name__
__module____qualname____doc__r&   r(   r   r   r   r   r       s   r    c                   @   s    e Zd ZdZdd Zdd ZdS )NeverEqualsr!   c                 C   s   dS r'   r   r#   r   r   r   r&   (   s    zNeverEquals.__eq__c                 C   s   dS r"   r   r#   r   r   r   r(   +   s    zNeverEquals.__ne__Nr)   r   r   r   r   r.   %   s   r.   c                   C   sH   t tddkstttt tttgdddgdks6tttt sDtd S )N   
   i  i@  )   i  i>  )r   r   AssertionErrortuplemapr   r   	TypeErrorr   r   r   r   
test_apply/   s    $r6   c                   C   sf   t ddkstt dtdks"tt dttdks6tt dttdksJtt dtdftdksbtd S )Nr         r/      )r   r2   r   r   r   r   r   r   r   test_thread_first5   s
    r:   c                   C   sn   t tdddgttfttfddgks*tt tdddgttfttfdgksRttdtdft	dksjtd S )Nr   r   r7   r8   r/   r9   )
listr   r4   r   filterr   r2   r   r   r   r   r   r   r   test_thread_last=   s    *(r=   c                     sj   dg  fdd} t | ddddks2t dgks@tj| jksPtttfddsft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   r7   r   c                      s
    di S r   r   r   mfr   r   <lambda>O       ztest_memoize.<locals>.<lambda>)r   r2   r-   r   r5   rB   r   )rA   rD   r   test_memoizeC   s    rH   c                  C   s   dg} ddd}t |}|d|dks,t|dd|ddksDt|ddd|dddks`t|ddd|dddks|td S )	Nr   c                 S   s   | | S Nr   r?   r   r   r   rB   U   s    ztest_memoize_kwargs.<locals>.fr   r   r@   r7   )r   r   r2   )rA   rB   rD   r   r   r   test_memoize_kwargsR   s    
rL   c                  C   sL   t ddd} | dd}t|}|d|dks4t|d|dksHtd S )Nr   c                 S   s   | | S rI   r   r?   r   r   r   rB   a   s    ztest_memoize_curried.<locals>.fr   rJ   r7   )r   )r   r   r2   rB   f2Zfm2r   r   r   test_memoize_curried`   s    
rO   c                  C   sJ   ddd} t | dd}t|}|d|dks2t|d|dksFtd S )Nr   c                 S   s   | | S rI   r   r?   r   r   r   rB   m   s    ztest_memoize_partial.<locals>.fr   rJ   r7   )r   )r   r   r2   rM   r   r   r   test_memoize_partiall   s
    
rP   c                      s  t dd ddid  ddks$t ddks4tt dd ddd	d  ddksZt ddksjt dddks|t dddkst d
dkstt dd d
did  dddkst dddksttt fddstt dd ddid   dkstt ddddtdfdddid  ddddksHt dddks\t ddddksrt dddkst ddkst d
dkstt dddd tdfdddid   dkst dddkst ddkstd S )Nc                 S   s   dS r'   r   r   r   r   r   rE   y   rF   z,test_memoize_key_signature.<locals>.<lambda>r   Tcacher   Fc                 W   s   dS r'   r   )r   argsr   r   r   rE   ~   rF   )r   r   r   rU   c                 S   s   dS r'   r   r?   r   r   r   rE      rF   r7   c                      s    dS )NrU   r   r   rC   r   r   rE      rF   c                   S   s   dS r'   r   r   r   r   r   rE      rF   r   r   c                 S   s   dS r'   r   r?   r   r   r   rE      rF   rT   ))r@   r   )rU   NrJ   c                 S   s   dS r'   r   r   r   r   r   rE      rF   ))r   r   )rT   Nr   )r   )r   )r   r2   r   r5   	frozensetr   r   rC   r   test_memoize_key_signaturew   sD    
  rW   c                  C   s:   t ddiddd } | ddks&t| ddks6td S )Nr   TrQ   c                 S   s   dS r'   r   r   r   r   r   rB      s    z#test_memoize_curry_cache.<locals>.fr   FrK   rG   r   r   r   test_memoize_curry_cache   s    
rX   c                  C   s>   t dd ddd } | dddks(t| dddks:td S )	Nc                 S   s   | d S Nr   r   )rS   kwargsr   r   r   rE      rF   z"test_memoize_key.<locals>.<lambda>)keyc                 _   s   | | S rI   r   )r   r@   rS   rZ   r   r   r   rB      s    ztest_memoize_key.<locals>.fr   r   r7   rK   rG   r   r   r   test_memoize_key   s    
r\   c                  C   s"   dd } t | }|j| kstd S )Nc                   S   s   dS )z
        Docstring
        Nr   r   r   r   r   foo   s    z!test_memoize_wrapped.<locals>.foo)r   __wrapped__r2   )r]   Zmemoized_foor   r   r   test_memoize_wrapped   s    r_   c                  C   s   t t} | d}t|st|ddks,tt| ttks@tt t}t|tdddgdddgkslttt	dd s~ttt	d	d std S )
Nr   r0   r1   r   r7   r8   c                   S   s   t  S rI   r   r   r   r   r   rE      rF   z#test_curry_simple.<locals>.<lambda>c                   S   s   t ddiS Nr   r   r`   r   r   r   r   rE      rF   )
r   r   callabler2   reprr4   r;   r   r   r5   )Zcmulr   Zcmapr   r   r   test_curry_simple   s    $rd   c                     s^  ddd} t | } | ddddks&t| ddddks<t| dddksNt| ddd	ddksft| dd	dddks~tddd}t |dd   dkst dddkst d
ddkst d
dddkst d
dksttt fddsttfdd}t |dd
ks$tt |tdddks@tt |tdddksZtd S )Nr0   c                 S   s   | | | S rI   r   abcr   r   r   rB      s    ztest_curry_kwargs.<locals>.fr   r   r7   	      rh   r   c                 S   s   | | | S rI   r   re   r   r   r   g   s    ztest_curry_kwargs.<locals>.g)rg   r8   rf   rf   rg   c                      s
    ddS ra   r   r   Zcgr   r   rE      rF   z#test_curry_kwargs.<locals>.<lambda>c                 S   s   || S rI   r   )r   funcr   r   r   h   s    ztest_curry_kwargs.<locals>.hg        )rp   z0.0)r0   )r   r0   r   )r   r2   r   r5   intstr)rB   rl   rq   r   ro   r   test_curry_kwargs   s&    

rt   c                      sd   t dd   dddksttt fdds4ttt fddsJttt fd	ds`td S )
Nc                 S   s   t | tst | | S rI   )
isinstancerr   r5   rn   r   r   r   rB      s    
z#test_curry_passes_errors.<locals>.fr   r   r7   c                      s
    ddS N1r   r   r   rG   r   r   rE      rF   z*test_curry_passes_errors.<locals>.<lambda>c                      s    ddS rv   r   r   rG   r   r   rE      rF   c                      s    dddS )Nr   r   r7   r   r   rG   r   r   rE      rF   r   r2   r   r5   r   r   rG   r   test_curry_passes_errors   s    
ry   c                  C   sP   dd } t | }|j| jks tt|t| ks4t| dd|ddksLtd S )Nc                 S   s   | S )r>   r   r?   r   r   r   rB      s    ztest_curry_docstring.<locals>.fr   r   )r   r-   r2   rs   )rB   rl   r   r   r   test_curry_docstring   s
    rz   c                  C   s"  ddd} t | dddt| ddd }}|j|jks:t|j|jksJt|d|dks^tt | dt| d }}|j|jkst|j|jkst|d|dkst|ddd|dddkstt | ddt| dd }}|j|jkst|j|jkst|dd|ddkstd S )Nr   c                 S   s   | | | S rI   r   re   r   r   r   r]     s    z'test_curry_is_like_partial.<locals>.foor   rk   r7   )r   )r   r   keywordsr2   rS   )r]   prh   r   r   r   test_curry_is_like_partial  s    
 r}   c                  C   s   ddd} t | ddd}t |}t|t s.tt|t s<tt|jt rLtt|jdr\t|j|jkslt|j|jks|t|j|jkstd S )Nr   c                 S   s   | | | S rI   r   re   r   r   r   r]     s    z%test_curry_is_idempotent.<locals>.foor   rk   rp   )r   )r   ru   r2   rp   hasattrrS   r{   )r]   rB   rl   r   r   r   test_curry_is_idempotent  s    
r   c                     s   ddd} t | ddd tt fdds.ttt fddsDttt fd	dsZttt fd
dspttt fddsttt fddstd S )Nr   c                 S   s   | | | S rI   r   re   r   r   r   r]   *  s    z+test_curry_attributes_readonly.<locals>.foor   rk   c                      s   t  ddS )NrS   )r   setattrr   rG   r   r   rE   .  rF   z0test_curry_attributes_readonly.<locals>.<lambda>c                      s   t  dddiS )Nr{   rh   r7   r   r   rG   r   r   rE   /  rF   c                      s   t  d S Nrp   r   r   rG   r   r   rE   0  rF   c                      s
   t  dS )NrS   delattrr   rG   r   r   rE   1  rF   c                      s
   t  dS )Nr{   r   r   rG   r   r   rE   2  rF   c                      s
   t  dS r   r   r   rG   r   r   rE   3  rF   )r   )r   r   AttributeErrorr2   )r]   r   rG   r   test_curry_attributes_readonly)  s    
r   c                  C   s   ddd} d| _ t| ddd}|j dks,td|_d|_d	|_d
|_ |jdksRt|jdks`t|jd	ksnt|j d
ks|tt|dr|j|jkstd S )Nr   c                 S   s   | | | S rI   r   re   r   r   r   r]   7  s    z+test_curry_attributes_writable.<locals>.foozthis.is.foor   rk   ZnewnameZnewdocZ	newmoduleZnewqualname	func_name)r   )r,   r   r2   r*   r-   r+   r~   r   )r]   rB   r   r   r   test_curry_attributes_writable6  s    

r   c                  C   s   ddl m}  | jdkstd S )Nr   mergeztoolz.curried.exceptions)Ztoolz.curried.exceptionsr   r+   r2   r   r   r   r   test_curry_moduleH  s    r   c            	         s8  ddd} t | ddd}t | ddd}t | ddd}t | dd}|dd}| }||ks\t||krht||kstt||krt||kst||kst||kstddd}t |ddd}||kst|||||||| h||||hkstt | g  tt fd	d
stt | g dttfdd
s4td S )Nr   c                 S   s   | | | S rI   r   re   r   r   r   r]   N  s    z"test_curry_comparable.<locals>.foor   rk   r7   c                 S   s   | | | S rI   r   re   r   r   r   bar_  s    z"test_curry_comparable.<locals>.barc                      s   t  S rI   hashr   )unhash1r   r   rE   h  rF   z'test_curry_comparable.<locals>.<lambda>c                      s   t  S rI   r   r   )unhash2r   r   rE   j  rF   )r   )r   rx   )	r]   f1rN   Zg1h1h2h3r   Z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:td S )	Nr   c                 S   s   | | S rI   r   r?   r   r   r   rB   q  s    z*test_curry_doesnot_transmogrify.<locals>.fr   rJ   r   r7   )r   r   r2   )rB   cfr   r   r   test_curry_doesnot_transmogrifym  s    
r   c                  C   sF  G dd dt } | d}|dddks,t|dddksBt| |dddksXt| |dddksrt|dddkst|dddkst| dddkst| dddkst|dddkst|dddkst| dddkst| dddkstt|jts0tt| jtsBt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>.Ar0   c                 S   s
   || _ d S rI   BASEr$   baser   r   r   __init__|  s    z.test_curry_on_classmethods.<locals>.A.__init__c                 S   s   | j | | S rI   r   r$   r   r@   r   r   r   	addmethod  s    z/test_curry_on_classmethods.<locals>.A.addmethodc                 S   s   | j | | S rI   r   clsr   r@   r   r   r   addclass  s    z.test_curry_on_classmethods.<locals>.A.addclassc                 S   s   | | S rI   r   r?   r   r   r   	addstatic  s    z/test_curry_on_classmethods.<locals>.A.addstaticN)r*   r+   r,   r   r   r   r   classmethodr   staticmethodr   r   r   r   r   Ay  s   
r   d   r7   r8   k         )objectr   r2   r   r   ru   r   r   rf   r   r   r   test_curry_on_classmethodsx  s     r   c                  C   s   G dd dt } | d}|dddks,t| |dddksBtd|_|dddks\td|_|dddksvt|ddd	kst| ddd	kstd
| _| ddd	kstd
| _| ddd	kst|dddkst| dddkst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>.Ar0   c                 S   s
   || _ d S rI   r   r   r   r   r   r     s    z0test_memoize_on_classmethods.<locals>.A.__init__c                 S   s   | j | | S rI   r   r   r   r   r   r     s    z1test_memoize_on_classmethods.<locals>.A.addmethodc                 S   s   | j | | S rI   r   r   r   r   r   r     s    z0test_memoize_on_classmethods.<locals>.A.addclassc                 S   s   | | S rI   r   r?   r   r   r   r     s    z1test_memoize_on_classmethods.<locals>.A.addstaticc                 S   s   | j S rI   )HASHr$   r   r   r   __hash__  s    z0test_memoize_on_classmethods.<locals>.A.__hash__N)r*   r+   r,   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r     s   
r   r   r7   r8   r         r   r1   r   )r   r   r2   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"t dd ddks>t dd ddks\td S )Nc                 S   s   | | S rI   r   r?   r   r   r   r     s    ztest_curry_call.<locals>.addc                      s
     dS r   )callr   r   r   r   rE     rF   z!test_curry_call.<locals>.<lambda>r   r   )r   r   r5   r2   r   r   r   r   r   test_curry_call  s
    
r   c                  C   s   t d	dd} |  | ddks"t| dd| ddks>t| dd | ddks^t| jdddd| ddks~t| jddjdd | ddkstd S )
Nr   r   c                 S   s   | | S rI   r   r?   r   r   r   r     s    ztest_curry_bind.<locals>.addr0   r1   r   rJ   )r   r   )r   r2   bindr   r   r   r   test_curry_bind  s      r   c                     s   dd  t  fdd} |  ddddks2t| ddddksJt| ddddks`t| ddddkstt| dddd	| dddd	kstd S )
Nc                 S   s   | | | S rI   r   )r   r@   zr   r   r   add3  s    z%test_curry_unknown_args.<locals>.add3c                     s    |  S rI   r   )rS   r   r   r   rB     s    z"test_curry_unknown_args.<locals>.fr   r   r7      r8   r   rG   r   r   r   test_curry_unknown_args  s    r   c                   C   s   t tdd std S )Nc                   S   s   t dS r   r`   r   r   r   r   rE     rF   z&test_curry_bad_types.<locals>.<lambda>)r   r5   r2   r   r   r   r   test_curry_bad_types  s    r   c                  C   sv   G dd dt } | dd }t|t s*tt|| s8tt|d| sJtt| d| s^t|dddksrtd S )Nc                   @   s   e Zd ZdS )z(test_curry_subclassable.<locals>.mycurryN)r*   r+   r,   r   r   r   r   mycurry  s   r   c                 S   s   | | S rI   r   r?   r   r   r   rE     rF   z)test_curry_subclassable.<locals>.<lambda>r   r   r7   )r   ru   r2   )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.
    r0   c                 S   s   | | | S rI   r   re   r   r   r   add_then_multiply  s    z6generate_compose_test_cases.<locals>.add_then_multiplyr   )r   r   r   r   )r7   FalserU   3rh   r7   10)r0   )r   r   rs   r   r   )r   r   r   r   generate_compose_test_cases  s@    
   
   r   c                  C   s.   t  D ]"\} }}}t|  |||kstqd S rI   )r   r   r2   )compose_argsrS   kwexpectedr   r   r   test_compose9  s    r   c                     s  dd } dd }t | |jdks(tjdks6tt }t | |jdksTtjdksbttd	| |ksztt | |kstt kstt || krtt krtt krtt || kstt kstt kstt | |kr
tt krtt	t	t | |ks6tt	t	t || ksRtt t
d
d d$dd G  fddd}|ddkst|jddddkst|ddkst|  dkst| jdddkst| ddkst| dddkstt | |j|ks*tttdrNt | |jjd ksNtdd }dd }tt
ttttd |_tt
d!|_t ||t}|jt|jkst|jt
kstG fd"dd}tt| jjd#kstd S )%Nc                 S   s   | S rI   r   rm   r   r   r   rB   A  s    z test_compose_metadata.<locals>.fc                 S   s   | S rI   r   rm   r   r   r   rl   D  s    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   rE   c  rF   z'test_compose_metadata.<locals>.<lambda>r   c                 S   s   t | | S rI   )rr   r?   r   r   r   rE   c  rF   c                       s    e Zd Zdd Z Ze ZdS )&test_compose_metadata.<locals>.MyClassc                 S   s   dS )N   r   r   r   r   r   __int__g  s    z.test_compose_metadata.<locals>.MyClass.__int__N)r*   r+   r,   r   	my_methodr   my_static_methodr   )bindabler   r   MyClasse  s   r   r7   6r   rJ   r   4Z16Z220r   2Zsandboxc                 _   s   dS )Nr8   r   )rf   rg   rh   der   r   r   myfunc{  s    z%test_compose_metadata.<locals>.myfuncc                 S   s
   d | S )Nz
result: {})formatrG   r   r   r   	otherfunc~  s    z(test_compose_metadata.<locals>.otherfunc)rf   rg   rh   r   r   return)rB   r   c                       s   e Zd Z ZdS )r   N)r*   r+   r,   methodr   )composedr   r   r     s   r8   )r   )r   r*   r2   r-   r   rc   r   r    r.   r   rs   r   r   r^   r~   toolz	__class__rr   floatbool__annotations__inspect	signature
parametersreturn_annotationlenr   )rB   rl   rq   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 rI   )r3   reversed).0r   rS   rZ   r   r   r   r   	<genexpr>  s   
z3generate_compose_left_test_cases.<locals>.<genexpr>)r3   r   r   r   r   r    generate_compose_left_test_cases  s    r   c                  C   s.   t  D ]"\} }}}t|  |||kstqd S rI   )r   r   r2   )Zcompose_left_argsrS   r   r   r   r   r   test_compose_left  s    r   c                   C   s@   t dtdkstt dttdks&tt dtttdks<td S )Nr   r   r7   F)r   r   r2   r   r   r   r   r   r   	test_pipe  s    r   c                  C   s  t dd  stt dd  r$tt tds4tt tdrDtt t tdsXtt t tdrltdd } t | ddstt | ddrtt dd  stt dd  stt d	d  stt d
d  stt dd  rtt dd  rtt dd  rtd S )Nc                   S   s   dS r'   r   r   r   r   r   rE     rF   z!test_complement.<locals>.<lambda>c                   S   s   dS r"   r   r   r   r   r   rE     rF   r   r   c                 S   s   t | ot |S rI   )r   rn   r   r   r   rE     rF   c                   S   s   dS )N r   r   r   r   r   rE     rF   c                   S   s   dS rY   r   r   r   r   r   rE     rF   c                   S   s   d S rI   r   r   r   r   r   rE     rF   c                   S   s   g S rI   r   r   r   r   r   rE     rF   c                   S   s   dS )Nr   r   r   r   r   r   rE     rF   c                   S   s   dS r   r   r   r   r   r   rE     rF   c                   S   s   dgS r   r   r   r   r   r   rE     rF   )r	   r2   r   r   )Z	both_evenr   r   r   test_complement  s     r   c                  C   sD   dd } t | ddkstg }t |jddks2t|dgks@td S )Nc                 S   s   | d S r   r   r   r   r   r   rE     rF   ztest_do.<locals>.<lambda>r   )r
   r2   append)r   logr   r   r   test_do  s
    r   c                  C   sF   t td} tdd tdD }|| dks2t|| dksBtd S )Nr0   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>r/   )r   r   r8   r   r   )r;   ranger   r2   )dataZjuxtfuncr   r   r   test_juxt_generator_input  s    r   c                  C   s    dd } t | dddkstd S )Nc                 S   s   | |fS rI   r   rn   r   r   r   rB     s    ztest_flip.<locals>.frf   rg   )rg   rf   )r   r2   rG   r   r   r   	test_flip  s    r   c                     s  t jdkstdt jkstdd } dd }t t| |  ddksHt d	dksXt d
dksht jdksvtd jkstd jkstd jkstdd }t ttf|  g d kst dgdkst i d kst ddidkst jdkstd jkstd jks,td jks<tdd }t ttf|  td ksdt td ksvttt fddsttt	 fddstt t
 t
 t
   jdkst jt jkst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   )indexrm   r   r   r   idx  s    ztest_excepts.<locals>.idxc                 S   s   t | tstdS )zhandler docstring
        )ru   
ValueErrorr2   )r   r   r   r   handler  s    ztest_excepts.<locals>.handlerr   r   r   r7   r   Zidx_excepting_ValueErrorzidx docstringr   zhandler docstringc                 S   s   | d S )zgetzero docstring
        r   r   rm   r   r   r   getzero  s    ztest_excepts.<locals>.getzeroZ(getzero_excepting_IndexError_or_KeyErrorzgetzero docstringZreturn_nonezReturns Nonec                 S   s
   |  dS )zHA function that raises an instance of the exception type given.
        Nr   rm   r   r   r   raise_  s    ztest_excepts.<locals>.raise_c                      s    t S rI   )r5   r   	exceptingr   r   rE     rF   ztest_excepts.<locals>.<lambda>c                      s    t S rI   )NotImplementedErrorr   r   r   r   rE     rF   r  )r   r*   r2   r-   r   
IndexErrorKeyErrorr   r5   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    r.   r6   r:   r=   rH   rL   rO   rP   rW   rX   r\   r_   rd   rt   ry   rz   r}   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r  r   r   r   r   <module>   sf   <

,		 *-	*Y	