a
     dN                     @   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   c/var/www/html/stable-diffusion-webui/venv/lib/python3.9/site-packages/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   sF   t tddksJ ttt tttgg ddks4J ttt sBJ d S )N   
   )r0   i  i@  )   i  i>  )r   r   tuplemapr   r   	TypeErrorr   r   r   r   
test_apply/   s    "r5   c                   C   sf   t ddksJ t dtdks"J t dttdks6J t dttdksJJ t dtdftdksbJ d S )Nr         r/      )r   r   r   r   r   r   r   r   test_thread_first5   s
    r9   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sNJ tdtdftdksfJ d S )Nr   r   r6   r   r7   r6   r/   r8   )	listr   r3   r   filterr   r   r   r   r   r   r   r   test_thread_last=   s    (&r=   c                     sj   dg  fdd} t | ddddu s2J  dgks@J j| jksPJ ttfddsfJ 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   r6   r   c                      s
    di S r   r   r   mfr   r   <lambda>O       ztest_memoize.<locals>.<lambda>)r   r-   r   r4   rB   r   )rA   rD   r   test_memoizeC   s    rH   c                  C   s   dg} ddd}t |}|d|dks,J |dd|ddksDJ |ddd|dddks`J |ddd|dddks|J d S )	Nr   c                 S   s   | | S Nr   r?   r   r   r   rB   U   s    ztest_memoize_kwargs.<locals>.fr   r   r@   r6   )r   r   )rA   rB   rD   r   r   r   test_memoize_kwargsR   s    
rL   c                  C   sL   t ddd} | dd}t|}|d|dks4J |d|dksHJ d S )Nr   c                 S   s   | | S rI   r   r?   r   r   r   rB   a   s    ztest_memoize_curried.<locals>.fr   rJ   r6   )r   )r   r   rB   f2Zfm2r   r   r   test_memoize_curried`   s    
rO   c                  C   sJ   ddd} t | dd}t|}|d|dks2J |d|dksFJ d S )Nr   c                 S   s   | | S rI   r   r?   r   r   r   rB   m   s    ztest_memoize_partial.<locals>.fr   rJ   r6   )r   )r   r   rM   r   r   r   test_memoize_partiall   s
    
rP   c                      s  t dd ddid  ddu s$J  ddu s4J t dd ddd	d  ddu sZJ  ddu sjJ  dddu s|J  dddksJ  d
du sJ t dd d
did  dddu sJ  dddu sJ tt fddsJ t dd ddid   du sJ t ddddtdfdddid  ddddksHJ  dddks\J  ddddu srJ  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sJ 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   r6   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   r   r4   	frozensetr   r   rC   r   test_memoize_key_signaturew   s@    
rW   c                  C   s:   t ddiddd } | ddu s&J | ddu s6J 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(J | dddks:J 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   r6   rK   rG   r   r   r   test_memoize_key   s    
r\   c                  C   s"   dd } t | }|j| u sJ d S )Nc                   S   s   dS )z
        Docstring
        Nr   r   r   r   r   foo   s    z!test_memoize_wrapped.<locals>.foo)r   __wrapped__)r]   Zmemoized_foor   r   r   test_memoize_wrapped   s    r_   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shJ ttdd szJ ttdd sJ d S )	Nr   r0   r1   r:   )r   r6   r7   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   callablereprr3   r;   r   r   r4   )Zcmulr   Zcmapr   r   r   test_curry_simple   s     rd   c                     s^  ddd} t | } | ddddks&J | ddddks<J | dddksNJ | ddd	ddksfJ | dd	dddks~J ddd}t |dd   dksJ  dddksJ  d
ddksJ  d
dddksJ  d
dksJ tt fddsJ tfdd}t |dd
ks$J t |tdddks@J t |tdddksZJ d S )Nr0   c                 S   s   | | | S rI   r   abcr   r   r   rB      s    ztest_curry_kwargs.<locals>.fr   r   r6   	      rh   r   c                 S   s   | | | S rI   r   re   r   r   r   g   s    ztest_curry_kwargs.<locals>.g)rg   r7   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   r   r4   intstr)rB   rl   rq   r   ro   r   test_curry_kwargs   s&    

rt   c                      sd   t dd   dddksJ tt fdds4J tt fddsJJ tt fd	ds`J d S )
Nc                 S   s   t | tst | | S rI   )
isinstancerr   r4   rn   r   r   r   rB      s    
z#test_curry_passes_errors.<locals>.fr   r   r6   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   r6   r   r   rG   r   r   rE      rF   r   r   r4   r   r   rG   r   test_curry_passes_errors   s    
ry   c                  C   sP   dd } t | }|j| jks J t|t| ks4J | dd|ddksLJ d S )Nc                 S   s   | S )r>   r   r?   r   r   r   rB      s    ztest_curry_docstring.<locals>.fr   r   )r   r-   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:J |j|jksJJ |d|dks^J t | dt| d }}|j|jksJ |j|jksJ |d|dksJ |ddd|dddksJ t | ddt| dd }}|j|jksJ |j|jksJ |dd|ddksJ d S )Nr   c                 S   s   | | | S rI   r   re   r   r   r   r]     s    z'test_curry_is_like_partial.<locals>.foor   rk   r6   )r   )r   r   keywordsrS   )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.J t|t s<J t|jt rLJ t|jdr\J |j|jkslJ |j|jks|J |j|jksJ 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   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.J tt fddsDJ tt fd	dsZJ tt fd
dspJ tt fddsJ tt fddsJ 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   r6   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   AttributeError)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,J d|_d|_d	|_d
|_ |jdksRJ |jdks`J |jd	ksnJ |j d
ks|J t|dr|j|jksJ 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   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J d S )Nr   mergeztoolz.curried.exceptions)Ztoolz.curried.exceptionsr   r+   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\J ||krhJ ||kstJ ||krJ ||ksJ ||ksJ ||ksJ ddd}t |ddd}||ksJ |||||||| h||||hksJ t | g  tt fd	d
sJ t | g dttfdd
s4J d S )Nr   c                 S   s   | | | S rI   r   re   r   r   r   r]   N  s    z"test_curry_comparable.<locals>.foor   rk   r6   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   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   s   | | S rI   r   r?   r   r   r   rB   q  s    z*test_curry_doesnot_transmogrify.<locals>.fr   rJ   r   r6   )r   r`   )rB   cfr   r   r   test_curry_doesnot_transmogrifym  s    
r   c                  C   sF  G dd dt } | d}|dddks,J |dddksBJ | |dddksXJ | |dddksrJ |dddksJ |dddksJ | dddksJ | dddksJ |dddksJ |dddksJ | dddksJ | dddksJ t|jts0J t| jtsBJ 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   r6   r7   k         )objectr   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,J | |dddksBJ d|_|dddks\J d|_|dddksvJ |ddd	ksJ | ddd	ksJ d
| _| ddd	ksJ d
| _| ddd	ksJ |dddksJ | dddksJ 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   r6   r7   r         r   r1   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   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   r4   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sJ 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   bindr   r   r   r   test_curry_bind  s      r   c                     s   dd  t  fdd} |  ddddks2J | ddddksJJ | ddddks`J | ddddkstJ | dddd	| dddd	ksJ 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   r6      r7   r`   rG   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   r`   r   r   r   r   rE     rF   z&test_curry_bad_types.<locals>.<lambda>)r   r4   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|| s8J t|d| sJJ t| d| s^J |dddksrJ 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   r6   )r   ru   )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   )r6   FalserU   3rh   r6   10)r0   )r   r   rs   r   r   )r   r   r   r   generate_compose_test_cases  s4    

r   c                  C   s2   t  D ]&\} }}}t|  |i ||ksJ qd S rI   )r   r   )compose_argsrS   kwexpectedr   r   r   test_compose9  s    r   c                     s  dd } dd }t | |jdks(J jdks6J t }t | |jdksTJ jdksbJ td	| |kszJ t | |ksJ t ksJ t || krJ t krJ t krJ t || ksJ t ksJ t ksJ t | |kr
J t krJ ttt | |ks6J ttt || ksRJ 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sJ t | |j|u s*J ttdrNt | |jjd u sNJ dd }dd }tt	ttttd |_tt	d!|_t ||t}|jt|jksJ |jt	ksJ G fd"dd}tt| jjd#ksJ 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   r6   6r   rJ   r   4Z16Z220r   2Zsandboxc                 _   s   dS )Nr7   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   r7   )r   )r   r*   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   )r2   reversed).0r   rS   rZ   r   r   r   r   	<genexpr>  s   
z3generate_compose_left_test_cases.<locals>.<genexpr>)r2   r   r   r   r   r    generate_compose_left_test_cases  s    r   c                  C   s2   t  D ]&\} }}}t|  |i ||ksJ qd S rI   )r   r   )Zcompose_left_argsrS   r   r   r   r   r   test_compose_left  s    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   r6   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s4J t tdrDJ t t tdsXJ t t tdrlJ dd } t | ddsJ t | ddrJ t dd  sJ t dd  sJ t d	d  sJ t d
d  sJ t dd  rJ t dd  rJ t dd  rJ 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	   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s2J |dgks@J d S )Nc                 S   s   | d S r   r   r   r   r   r   rE     rF   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s2J || dksBJ d S )Nr0   c                 s   s   | ]}t d | V  qdS )r   N)r   )r   ir   r   r   r     rF   z,test_juxt_generator_input.<locals>.<genexpr>r/   )r   r   r7   r   r   )r;   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 rI   r   rn   r   r   r   rB     s    ztest_flip.<locals>.frf   rg   )rg   rf   )r   rG   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sHJ  d	dksXJ  d
dkshJ  jdksvJ d jv sJ d jv sJ d jv sJ dd }t ttf|  g d u sJ  dgdksJ  i d u sJ  ddidksJ  jdksJ d jv sJ d jv s,J d jv s<J dd }t ttf|  td u sdJ  td u svJ 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   )indexrm   r   r   r   idx  s    ztest_excepts.<locals>.idxc                 S   s   t | tsJ dS )zhandler docstring
        )ru   
ValueError)r   r   r   r   handler  s    ztest_excepts.<locals>.handlerr   r   r   r6   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   )r4   r   	exceptingr   r   rE     rF   ztest_excepts.<locals>.<lambda>c                      s    t S rI   )NotImplementedErrorr   r   r   r   rE     rF   r  )
r   r*   r-   r   
IndexErrorKeyErrorr   r4   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.   r5   r9   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	