o
    Nrf	Q                     @   s(  d dl Z 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 ejjdkoQejjdkoQejjdk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* Z0d+d, Z1d-d. Z2d/d0 Z3d1d2 Z4d3d4 Z5d5d6 Z6d7d8 Z7d9d: Z8d;d< Z9d=d> Z:d?d@ Z;dAdB Z<dCdD Z=dEdF Z>dGdH Z?dIdJ Z@dKdL ZAdMdN ZBdOdP ZCdQdR ZDdSdT ZEdUdV ZFdWdX ZGdYdZ ZHd[d\ ZId]d^ ZJd_d` ZKdadb ZLdcdd ZMdS )e    N)thread_firstthread_lastmemoizecurrycomposecompose_leftpipe
complementdojuxtflipexceptsapply)addmul
itemgetter)raises)partialpypy   	   c                 C      | d dkS )N   r    xr   r   e/var/www/html/software/conda/envs/catlas/lib/python3.10/site-packages/cytoolz/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__(   r0   zAlwaysEquals.__ne__N__name__
__module____qualname____doc__r/   r2   r   r   r   r   r(   "       r(   c                   @   r'   )NeverEqualsr)   c                 C   r*   r1   r   r,   r   r   r   r/   /   r0   zNeverEquals.__eq__c                 C   r*   r+   r   r,   r   r   r   r2   2   r0   zNeverEquals.__ne__Nr3   r   r   r   r   r9   ,   r8   r9   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   
   )r;   i  i@  )   i  i>  )r   r&   tuplemapr#   r   	TypeErrorr   r   r   r   
test_apply6   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   r      r:      )r   r#   r&   r   r   r   r   r   test_thread_first<   s
   rC   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   rA   r   r:   rB   )	listr   r>   r#   filterr   r    r   r&   r   r   r   r   test_thread_lastD   s   (&rG   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   fM   s   ztest_memoize.<locals>.fr   r   r   c                      s
    di S r"   r   r   mfr   r   <lambda>V      
 ztest_memoize.<locals>.<lambda>)r   r7   r   r?   rL   r   )rK   rN   r   test_memoizeJ   s   rR   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   rI   r   r   r   rL   \   r$   ztest_memoize_kwargs.<locals>.fr   r   rJ   r   r   r   )rK   rL   rN   r   r   r   test_memoize_kwargsY   s   
 rX   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   rS   rT   r   rI   r   r   r   rL   h      ztest_memoize_curried.<locals>.fr   rU   r   rV   )r   r   rL   f2Zfm2r   r   r   test_memoize_curriedg   s   
r\   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   rS   rT   r   rI   r   r   r   rL   t   r$   ztest_memoize_partial.<locals>.fr   rU   r   rV   )r   r   rZ   r   r   r   test_memoize_partials   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*   r1   r   r   r   r   r   rO          z,test_memoize_key_signature.<locals>.<lambda>r   Tcacher   Fc                 W   r*   r1   r   )r   argsr   r   r   rO      r^   )r   r   r   rc   c                 S   r*   r1   r   rI   r   r   r   rO      r^   r   c                      s    dS )Nrc   r   r   rM   r   r   rO          c                   S   r*   r1   r   r   r   r   r   rO      r^   r   r   c                 S   r*   r1   r   rI   r   r   r   rO      r^   rb   ))rJ   r   )rc   NrU   c                 S   r*   r1   r   r   r   r   r   rO      r^   ))r   r   )rb   Nr   rV   )r   r   r?   	frozensetr   r   rM   r   test_memoize_key_signature~   s@   
rf   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*   r1   r   r   r   r   r   rL         z#test_memoize_curry_cache.<locals>.fr   FrW   rQ   r   r   r   test_memoize_curry_cache   s   
rh   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   )ra   kwargsr   r   r   rO      rd   z"test_memoize_key.<locals>.<lambda>)keyc                 _   rS   rT   r   )r   rJ   ra   rk   r   r   r   rL      rY   ztest_memoize_key.<locals>.fr   r   r   rW   rQ   r   r   r   test_memoize_key   s   
rm   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__)rn   Zmemoized_foor   r   r   test_memoize_wrapped   s   rp   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   r;   r<   rD   )r   r   rA   c                   S   s   t  S rT   r   r   r   r   r   rO          z#test_curry_simple.<locals>.<lambda>c                   S   s   t ddiS Nr   r   rq   r   r   r   r   rO          )	r   r   callablereprr>   rE   r#   r   r?   )Zcmulr&   Zcmapr   r   r   test_curry_simple   s    rw   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 )Nr;   c                 S      | | | S rT   r   abcr   r   r   rL      r   ztest_curry_kwargs.<locals>.fr   r   r   r      r|   r   c                 S      | | | S rT   r   ry   r   r   r   g   r   ztest_curry_kwargs.<locals>.g)r{   rA   rz   rz   r{   c                      
    ddS rs   r   r   Zcgr   r   rO      rP   z#test_curry_kwargs.<locals>.<lambda>c                 S   s   || S rT   r   )r   funcr   r   r   h   r$   ztest_curry_kwargs.<locals>.hg        )r   z0.0r;   )r   r;   r   )r   r   r?   intstr)rL   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 rT   )
isinstancer   r?   r   r   r   r   rL      s   
z#test_curry_passes_errors.<locals>.fr   r   r   c                      r   N1r   r   r   rQ   r   r   rO      rP   z*test_curry_passes_errors.<locals>.<lambda>c                      s    ddS r   r   r   rQ   r   r   rO      rt   c                      s    dddS )Nr   r   r   r   r   rQ   r   r   rO      rt   r   r   r?   r   r   rQ   r   test_curry_passes_errors   s   
r   c                  C   sT   dd } t | }ts|j| jksJ t|t| ksJ | dd|ddks(J d S )Nc                 S      | S )rH   r   rI   r   r   r   rL     rg   ztest_curry_docstring.<locals>.fr   r   )r   IS_PYPY_GE_39r7   r   )rL   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   rT   r   ry   r   r   r   rn     r   z'test_curry_is_like_partial.<locals>.foor   r~   r   rb   )r   r   keywordsra   )rn   pr|   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   rT   r   ry   r   r   r   rn   #  r   z%test_curry_is_idempotent.<locals>.foor   r~   r   rb   )r   r   r   hasattrra   r   )rn   rL   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   rT   r   ry   r   r   r   rn   2  r   z+test_curry_attributes_readonly.<locals>.foor   r~   c                      s   t  ddS )Nra   )r   setattrr   rQ   r   r   rO   6  rt   z0test_curry_attributes_readonly.<locals>.<lambda>c                      s   t  dddiS )Nr   r|   r   r   r   rQ   r   r   rO   7      c                      s   t  d S Nr   r   r   rQ   r   r   rO   8  rt   c                      
   t  dS )Nra   delattrr   rQ   r   r   rO   9  rP   c                      r   )Nr   r   r   rQ   r   r   rO   :  rP   c                      r   r   r   r   rQ   r   r   rO   ;  rP   rb   )r   r   AttributeError)rn   r   rQ   r   test_curry_attributes_readonly1  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   rT   r   ry   r   r   r   rn   ?  r   z+test_curry_attributes_writable.<locals>.foozthis.is.foor   r~   ZnewnameZnewdocZ	newmoduleZnewqualname	func_namerb   )r6   r   r4   r7   r5   r   r   )rn   rL   r   r   r   test_curry_attributes_writable>  s    

r   c                  C   s   ddl m}  | jdksJ d S )Nr   mergezcytoolz.curried.exceptions)Zcytoolz.curried.exceptionsr   r5   r   r   r   r   test_curry_moduleP  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   rT   r   ry   r   r   r   rn   V  r   z"test_curry_comparable.<locals>.foor   r~   r   c                 S   r   rT   r   ry   r   r   r   barg  r   z"test_curry_comparable.<locals>.barc                         t  S rT   hashr   )unhash1r   r   rO   p  rd   z'test_curry_comparable.<locals>.<lambda>c                      r   rT   r   r   )unhash2r   r   rO   r  rd   rb   r   )	rn   f1r[   g1Zh1Zh2Zh3r   b1r   )r   r   r   test_curry_comparableU  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   rS   rT   r   rI   r   r   r   rL   y  r$   z*test_curry_doesnot_transmogrify.<locals>.fr   rU   r   r   rV   rq   )rL   cfr   r   r   test_curry_doesnot_transmogrifyu  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>.Ar;   c                 S   
   || _ d S rT   BASEr-   baser   r   r   __init__     
z.test_curry_on_classmethods.<locals>.A.__init__c                 S      | j | | S rT   r   r-   r   rJ   r   r   r   	addmethod     z/test_curry_on_classmethods.<locals>.A.addmethodc                 S   r   rT   r   clsr   rJ   r   r   r   addclass     z.test_curry_on_classmethods.<locals>.A.addclassc                 S   rS   rT   r   rI   r   r   r   	addstatic     z/test_curry_on_classmethods.<locals>.A.addstaticN)r4   r5   r6   r   r   r   r   classmethodr   staticmethodr   r   r   r   r   A  s    
r   d   r   rA   k         )objectr   r   r   r   r   r   rz   r   r   r   test_curry_on_classmethods  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>.Ar;   c                 S   r   rT   r   r   r   r   r   r     r   z0test_memoize_on_classmethods.<locals>.A.__init__c                 S   r   rT   r   r   r   r   r   r     r   z1test_memoize_on_classmethods.<locals>.A.addmethodc                 S   r   rT   r   r   r   r   r   r     r   z0test_memoize_on_classmethods.<locals>.A.addclassc                 S   rS   rT   r   rI   r   r   r   r     r   z1test_memoize_on_classmethods.<locals>.A.addstaticc                 S   s   | j S rT   )HASHr-   r   r   r   __hash__  s   z0test_memoize_on_classmethods.<locals>.A.__hash__N)r4   r5   r6   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r     s    
r   r   r   rA   r         r   r<   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   rS   rT   r   rI   r   r   r   r     rY   ztest_curry_call.<locals>.addc                      s
     dS r"   )callr   r   r   r   rO     rP   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   rS   rT   r   rI   r   r   r   r     rY   ztest_curry_bind.<locals>.addr;   r<   r   rU   rc   )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   rT   r   )r   rJ   zr   r   r   add3  r   z%test_curry_unknown_args.<locals>.add3c                     s    |  S rT   r   )ra   r   r   r   rL     rY   z"test_curry_unknown_args.<locals>.fr   r   r      rA   rq   rQ   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"   rq   r   r   r   r   rO     rd   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)r4   r5   r6   r   r   r   r   mycurry  s    r   c                 S   rS   rT   r   rI   r   r   r   rO     rd   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.
    r;   c                 S   rx   rT   r   ry   r   r   r   add_then_multiply  r   z6generate_compose_test_cases.<locals>.add_then_multiplyr   rV   r   r   r   )r   Falserc   3r|   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 rT   )r   r   )compose_argsra   kwexpectedr   r   r   test_composeA     r   c                     s  dd } dd }t | |jdksJ tsjdksJ t }t | |jdks,J ts5jdks5J td	| |ksAJ t | |ksJJ t ksQJ t || krZJ t kraJ t krhJ t || ksqJ t ksxJ 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sJ 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sOJ |jt
ksWJ G fd"dd}tt| jjd#ksoJ d S )%Nc                 S   r   rT   r   r   r   r   r   rL   I  r0   z test_compose_metadata.<locals>.fc                 S   r   rT   r   r   r   r   r   r   L  r0   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   rO   m  rd   z'test_compose_metadata.<locals>.<lambda>r   c                 S   s   t | | S rT   )r   rI   r   r   r   rO   m  rt   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__q  r0   z.test_compose_metadata.<locals>.MyClass.__int__N)r4   r5   r6   r   	my_methodr   my_static_methodr   )bindabler   r   MyClasso  s    r   r   6r   rU   r   4Z16Z220r   2Zsandboxc                 _   r*   )NrA   r   )rz   r{   r|   der   r   r   myfunc  r0   z%test_compose_metadata.<locals>.myfuncc                 S   s
   d | S )Nz
result: {})formatrQ   r   r   r   	otherfunc  r   z(test_compose_metadata.<locals>.otherfunc)rz   r{   r|   r   r   return)rL   r   c                       s   e Zd Z ZdS )r   N)r4   r5   r6   methodr   )composedr   r   r     s    rA   rV   )r   r4   r   r7   r   rv   r   r(   r9   r   r   r   r   ro   r   cytoolz	__class__r   floatbool__annotations__inspect	signature
parametersreturn_annotationlenr   )rL   r   r   r   r   r   sigr   )r   r   r   test_compose_metadataF  sh   



"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 rT   )r=   reversed).0r   ra   rk   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   rT   )r  r   )Zcompose_left_argsra   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*   r1   r   r   r   r   r   rO     r^   z!test_complement.<locals>.<lambda>c                   S   r*   r+   r   r   r   r   r   rO     r^   r   r   c                 S   s   t | ot |S rT   )r   r   r   r   r   rO     r   c                   S   r*   )N r   r   r   r   r   rO     r^   c                   S   r*   rj   r   r   r   r   r   rO     r^   c                   S   s   d S rT   r   r   r   r   r   rO     r^   c                   S   s   g S rT   r   r   r   r   r   rO     r^   c                   S   r*   )Nr   r   r   r   r   r   rO     r^   c                   S   r*   r"   r   r   r   r   r   rO     r^   c                   S   s   dgS r"   r   r   r   r   r   rO     rr   )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   rO     rd   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 )Nr;   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   rA   r   r   )rE   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 rT   r   r   r   r   r   rL     r$   ztest_flip.<locals>.frz   r{   )r{   rz   )r   rQ   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 tsRd jv sDJ d jv sKJ d jv sRJ dd }t ttf|  g d u seJ  dgdksnJ  i d u svJ  ddidksJ  jdksJ tsd 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   ri   )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 rT   )r?   r   	exceptingr   r   rO   #  rd   ztest_excepts.<locals>.<lambda>c                      r!  rT   )NotImplementedErrorr   r"  r   r   rO   $  rd   r#  )r   r4   r7   r  r   
IndexErrorKeyErrorr   r?   r$  r   )r  r  r  r   r   r"  r   test_excepts  sF   r'  )Nr  sysr   Zcytoolz.functoolzr   r   r   r   r   r   r   r	   r
   r   r   r   r   operatorr   r   r   Zcytoolz.utilsr   	functoolsr   implementationnameversion_infomajorminorr   r   r    r#   r&   r   r(   r9   r@   rC   rG   rR   rX   r\   r]   rf   rh   rm   rp   rw   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>   st    <



,		 *-	*[	