
    tf	Q                     V   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j2                  j4                  dk(  xr4 ej6                  j8                  dk(  xr ej6                  j:                  dk\  Zd	 Zd
 Z d Z!d Z" G d de#      Z$ G d de#      Z%d Z&d Z'd Z(d Z)d Z*d Z+d Z,d Z-d Z.d Z/d Z0d Z1d Z2d Z3d Z4d  Z5d! Z6d" Z7d# Z8d$ Z9d% Z:d& Z;d' Z<d( Z=d) Z>d* Z?d+ Z@d, ZAd- ZBd. ZCd/ ZDd0 ZEd1 ZFd2 ZGd3 ZHd4 ZId5 ZJd6 ZKd7 ZLd8 ZMy)9    N)thread_firstthread_lastmemoizecurrycomposecompose_leftpipe
complementdojuxtflipexceptsapply)addmul
itemgetter)raises)partialpypy   	   c                     | dz  dk(  S )N   r    xs    f/var/www/html/software/conda/envs/higlass/lib/python3.12/site-packages/cytoolz/tests/test_functoolz.pyisevenr          q5A:    c                     | dz  dk(  S )Nr      r   r   s    r   isoddr#      r   r    c                     | dz   S Nr"   r   r   s    r   incr&          q5Lr    c                     d| z  S Nr   r   r   s    r   doubler*      r'   r    c                       e Zd ZdZd Zd Zy)AlwaysEquals=useful to test correct __eq__ implementation of other objectsc                      yNTr   selfothers     r   __eq__zAlwaysEquals.__eq__%       r    c                      yNFr   r0   s     r   __ne__zAlwaysEquals.__ne__(       r    N__name__
__module____qualname____doc__r3   r7   r   r    r   r,   r,   "   s    Gr    r,   c                       e Zd ZdZd Zd Zy)NeverEqualsr-   c                      yr6   r   r0   s     r   r3   zNeverEquals.__eq__/   r8   r    c                      yr/   r   r0   s     r   r7   zNeverEquals.__ne__2   r4   r    Nr9   r   r    r   r?   r?   ,   s    Gr    r?   c                      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 y )N   
   )rD   i  i@  )   i  i>  )r   r*   tuplemapr&   r   	TypeErrorr   r    r   
test_applyrI   6   sK    r!!!UVS&1?CDHXXXX)U###r    c                      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(  sJ y )Nr   r      rC      )r   r&   r*   r   r   r    r   test_thread_firstrM   <   sr    ?a31$$$3$)))63'1,,,C8V,222r    c                     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(  sJ y )Nr"   r   r   r   rK   r   rC   rL   )	listr   rG   r&   filterr   r#   r   r*   r   r    r   test_thread_lastrR   D   sl    ISzFF3CDE!QOOOISzFE?CDKKKq3(F+r111r    c                      dgfd} t        |        dd       dd      u sJ dgk(  sJ j                  | j                  k(  sJ t        t        fd      sJ y )Nr   c                 (    dxx   dz  cc<   | |z   S ) A docstring r   r"   r   )r   yfn_callss     r   fztest_memoize.<locals>.fM   s    q1ur    r   r   r"   c                        di       S r%   r   mfs   r   <lambda>ztest_memoize.<locals>.<lambda>V   s    R2Y r    )r   r=   r   rH   )rX   rW   r[   s    @@r   test_memoizer]   J   si    sH 
Ba8r!Qxs??::""").///r    c                      dg} dd}t        |      } |d       |d      k(  sJ  |dd       |dd      k(  sJ  |dd       |dd      k(  sJ  |dd       |dd      k(  sJ y )Nr   c                     | |z   S Nr   r   rV   s     r   rX   ztest_memoize_kwargs.<locals>.f\       1ur    r"   r   rV   r   r   r   )rW   rX   r[   s      r   test_memoize_kwargsrf   Y   s{    sH 
Ba5AaD==a8qAwa1:1"""a1:1"""r    c                      t         dd       }  | d      }t        |      } |d       |d      k(  sJ  |d       |d      k(  sJ y )Nc                     | |z   S r`   r   ra   s     r   rX   ztest_memoize_curried.<locals>.fh       1ur    r"   rc   r   rd   )r   r   rX   f2fm2s      r   test_memoize_curriedrm   g   sP    
  
QB
"+Cq6RU??q6RU??r    c                      dd} t        | d      }t        |      } |d       |d      k(  sJ  |d       |d      k(  sJ y )Nc                     | |z   S r`   r   ra   s     r   rX   ztest_memoize_partial.<locals>.ft   rb   r    r"   rc   r   rd   )r   r   rj   s      r   test_memoize_partialrp   s   sE     
aB
"+Cq6RU??q6RU??r    c                      t        d ddi         d      du sJ   d      du sJ t        d ddd         d      du sJ   d      du sJ   dd      du sJ   dd      dk(  sJ   d	      du sJ t        d
 d	di         dd      du sJ   dd      du sJ t        t         fd      sJ t        d ddi                du sJ t        dddt        d      fdddi         dd      dk(  sJ   dd      dk(  sJ   dd      du sJ   dd      du sJ   d      du sJ   d	      du sJ t        ddd t        d      fdddi                du sJ   d      dk(  sJ   d      dk(  sJ y )Nc                      yr6   r   r   s    r   r\   z,test_memoize_key_signature.<locals>.<lambda>       r    r"   Tcacher   Fc                      yr6   r   )r   argss     r   r\   z,test_memoize_key_signature.<locals>.<lambda>   rs   r    )r"   r"   r   ry   c                      yr6   r   ra   s     r   r\   z,test_memoize_key_signature.<locals>.<lambda>   rs   r    r   c                        d      S )Nry   r   rZ   s   r   r\   z,test_memoize_key_signature.<locals>.<lambda>   s    RZ r    c                       yr6   r   r   r    r   r\   z,test_memoize_key_signature.<locals>.<lambda>   rs   r    r   c                      yr6   r   ra   s     r   r\   z,test_memoize_key_signature.<locals>.<lambda>   rs   r    rx   ))rV   r   )ry   Nrc   c                      yr6   r   r   s    r   r\   z,test_memoize_key_signature.<locals>.<lambda>   rs   r    ))r   r"   )rx   Nr   rd   )r   r   rH   	frozensetrZ   s   @r   test_memoize_key_signaturer   ~   s   	D		2Ba5D==a5E>> 
'dA/F	GBa5D==a5E>>a8ua8q==f: 
#FD>	:Ba8ta8u)/000 
r4j	1B44<< 
%y56&+
,B a1:??a8q==a1:a8ua5E>>f: 
"D)K2H+I1+7+< 
=B45==7a<<a5A::r    c                  \    t        ddi      d        }  | d      du sJ  | d      du sJ y )Nr"   Trt   c                      yr6   r   r   s    r   rX   z#test_memoize_curry_cache.<locals>.f   s    r    r   Fre   rX   s    r   test_memoize_curry_cacher      s?    At9  Q44<<Q45==r    c                  b    t        d       d        }  | dd      dk(  sJ  | dd      dk(  sJ y )Nc                     | d   S Nr   r   )rw   kwargss     r   r\   z"test_memoize_key.<locals>.<lambda>   s
    d1g r    )keyc                     | |z   S r`   r   )r   rV   rw   r   s       r   rX   ztest_memoize_key.<locals>.f   ri   r    r"   r   r   re   r   s    r   test_memoize_keyr      s@    -. / Q7a<<Q7a<<r    c                  @    d } t        |       }|j                  | u sJ y )Nc                       y)z
        Docstring
        Nr   r   r    r   fooz!test_memoize_wrapped.<locals>.foo   s     	r    )r   __wrapped__)r   memoized_foos     r   test_memoize_wrappedr      s&    
 3<L##s***r    c                  R   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(  sJ t        t        d       sJ t        t        d       sJ y )Nr   rD   rE   rO   )r   r   rK   c                      t               S r`   r   r   r    r   r\   z#test_curry_simple.<locals>.<lambda>   s    UW r    c                      t        ddi      S Nr"   r   r   r   r    r   r\   z#test_curry_simple.<locals>.<lambda>   s    UAq6] r    )	r   r   callablereprrG   rP   r&   r   rH   )cmulr*   cmaps      r   test_curry_simpler      s    :D!WFF"::c""":D	S	)$%222)_---)2333r    c                  f   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k(  sJ   | d      dd      dk(  sJ dd	}t        |d
              dk(  sJ  d
      dk(  sJ  d      dk(  sJ  dd      dk(  sJ  d      dk(  sJ t        t        fd      sJ t        fd} t        |      d      dk(  sJ   t        |      t              d      dk(  sJ  t        |t              d      dk(  sJ y )Nc                     | |z   |z  S r`   r   abcs      r   rX   ztest_curry_kwargs.<locals>.f       A{r    r"   r   r   r      r   r   c                     | |z   |z   S r`   r   r   s      r   gztest_curry_kwargs.<locals>.g       1uqyr    )r   rK   r   r   r   c                        dd      S r   r   )cgs   r   r\   z#test_curry_kwargs.<locals>.<lambda>   s    R1X r    c                      ||       S r`   r   )r   funcs     r   hztest_curry_kwargs.<locals>.h   s    Awr    g        )r   z0.0rD   )r"   rD   r   )r   r   rH   intstr)rX   r   r   r   s      @r   test_curry_kwargsr      sX    	aAQ1:??1Q41:??Q7b==1Q!9Q<11q6!Q<1 
qAB41997a<<7a<<Q<1a5A::)-...  58C=A858c"e+++5c"e+++r    c                       t         d           dd      dk(  sJ t        t         fd      sJ t        t         fd      sJ t        t         fd      sJ y )Nc                 @    t        | t              s
t               | |z   S r`   )
isinstancer   rH   r   s     r   rX   z#test_curry_passes_errors.<locals>.f   s    !S!+1ur    r"   r   r   c                        dd      S N1r   r   r   s   r   r\   z*test_curry_passes_errors.<locals>.<lambda>   s    QsAY r    c                          d      d      S r   r   r   s   r   r\   z*test_curry_passes_errors.<locals>.<lambda>   s    VQsVAY r    c                        ddd      S )Nr"   r   r   r   r   s   r   r\   z*test_curry_passes_errors.<locals>.<lambda>   s    Qq!QZ r    r   r   rH   r   s   @r   test_curry_passes_errorsr      s\    
 
 Q7a<<).///).///)/000r    c                      d } t        |       }t        s|j                  | j                  k(  sJ t        |      t        |       k(  sJ  | dd       |dd      k(  sJ y )Nc                     | S )rU   r   ra   s     r   rX   ztest_curry_docstring.<locals>.f  s    r    r"   r   )r   IS_PYPY_GE_39r=   r   )rX   r   s     r   test_curry_docstringr     s[     	aAyyAII%%%q6SVQ7a1gr    c                     dd} t        | dd       t        |       dd      }}|j                  |j                  k(  sJ |j                  |j                  k(  sJ  |d       |d      k(  sJ t        | d       t        |       d      }}|j                  |j                  k(  sJ |j                  |j                  k(  sJ  |d       |d      k(  sJ  |dd       |dd      k(  sJ t        | d       t        |       d      }}|j                  |j                  k(  sJ |j                  |j                  k(  sJ  |dd       |dd      k(  sJ y )Nr"   c                     | |z   |z   S r`   r   r   s      r   r   z'test_curry_is_like_partial.<locals>.foo  r   r    r   r   r   rx   )r   r   keywordsrw   )r   pr   s      r   test_curry_is_like_partialr     s;    3QsA!3qA::###66QVVQ41Q4<<3?JE#JqMqA::###66QVVQ41Q4<<Q!9!q	!!!3!jeCj1oqA::###66QVVQ7a1gr    c                     dd} t        | dd      }t        |      }t        |t               sJ t        |t               sJ t        |j                  t               rJ t        |j                  d      rJ |j                  |j                  k(  sJ |j                  |j                  k(  sJ |j
                  |j
                  k(  sJ y )Nr"   c                     | |z   |z   S r`   r   r   s      r   r   z%test_curry_is_idempotent.<locals>.foo#  r   r    r   r   r   rx   )r   r   r   hasattrrw   r   )r   rX   r   s      r   test_curry_is_idempotentr   "  s     	c1AaAaa!&&%(((qvvv&&&66QVV66QVV::###r    c                  &   dd} t        | dd      t        t        fd      sJ t        t        fd      sJ t        t        fd      sJ t        t        fd      sJ t        t        fd	      sJ t        t        fd
      sJ y )Nr"   c                     | |z   |z   S r`   r   r   s      r   r   z+test_curry_attributes_readonly.<locals>.foo2  r   r    r   r   c                      t         dd      S )Nrw   )r   setattrr   s   r   r\   z0test_curry_attributes_readonly.<locals>.<lambda>6  s    '!VT*B r    c                  "    t         dddi      S )Nr   r   r   r   r   s   r   r\   z0test_curry_attributes_readonly.<locals>.<lambda>7  s    '!Z#q*J r    c                      t         d       S Nr   r   r   s   r   r\   z0test_curry_attributes_readonly.<locals>.<lambda>8  s    '!VQ*? r    c                      t         d      S )Nrw   delattrr   s   r   r\   z0test_curry_attributes_readonly.<locals>.<lambda>9      '!V*< r    c                      t         d      S )Nr   r   r   s   r   r\   z0test_curry_attributes_readonly.<locals>.<lambda>:  s    '!Z*@ r    c                      t         d      S r   r   r   s   r   r\   z0test_curry_attributes_readonly.<locals>.<lambda>;  r   r    rx   )r   r   AttributeErrorr   rX   s    @r   test_curry_attributes_readonlyr   1  s~     	c1A."BCCC."JKKK."?@@@."<===."@AAA."<===r    c                  h   dd} d| _         t        | dd      }|j                   dk(  sJ d|_        d|_        d|_        d	|_         |j                  dk(  sJ |j                  dk(  sJ |j                  dk(  sJ |j                   d	k(  sJ t        |d
      r|j                  |j                  k(  sJ y y )Nr"   c                     | |z   |z   S r`   r   r   s      r   r   z+test_curry_attributes_writable.<locals>.foo?  r   r    zthis.is.foor   r   newnamenewdoc	newmodulenewqualname	func_namerx   )r<   r   r:   r=   r;   r   r   r   s     r   test_curry_attributes_writabler   >  s    $Cc1A>>]***AJAIAL"AN::"""99   <<;&&&>>]***q+zzQ[[((( r    c                  2    ddl m}  | j                  dk(  sJ y )Nr   mergezcytoolz.curried.exceptions)cytoolz.curried.exceptionsr   r;   r   s    r   test_curry_moduler   P  s    0;;;;r    c            	        	
 d	d} t        | dd      }t        | dd      }t        | dd      }t        | d      } |d      } |       }||k(  sJ ||k7  rJ ||k7  sJ ||k(  rJ ||k7  sJ ||k(  sJ ||k(  sJ d	d}t        |dd      }||k7  sJ ||||||| |       h||||hk(  sJ t        | g       	t        t        	fd      sJ t        | g       
t        t        
fd      sJ y )
Nr"   c                     | |z   |z   S r`   r   r   s      r   r   z"test_curry_comparable.<locals>.fooV  r   r    r   r   r   c                     | |z   |z   S r`   r   r   s      r   barz"test_curry_comparable.<locals>.barg  r   r    c                      t               S r`   hash)unhash1s   r   r\   z'test_curry_comparable.<locals>.<lambda>p      T'] r    c                      t               S r`   r   )unhash2s   r   r\   z'test_curry_comparable.<locals>.<lambda>r  r   r    rx   r   )r   f1rk   g1h1h2h3r   b1r   r   s            @@r   test_curry_comparabler   U  s   	sA	B	sA	B	sA	B	saB	aB	B8O8b>8O8b>8O88O88O8	sA	B8O8BBB-"b"b1AAAA CnG)2333C2G)2333r    c                  t    dd} t        |       }    |d      d      d      d       | dd      k(  sJ y )Nc                     | |z   S r`   r   ra   s     r   rX   z*test_curry_doesnot_transmogrify.<locals>.fy  rb   r    r"   rc   r   r   rd   r   )rX   cfs     r   test_curry_doesnot_transmogrifyr   u  s>     
qB<727Q<!Q1Q7***r    c                      G d dt               }  | d      }|j                  dd      dk(  sJ  |j                  d      d      dk(  sJ | j                  |dd      dk(  sJ   | j                  |      d      d      dk(  sJ |j                  dd      dk(  sJ  |j                  d      d      dk(  sJ | j                  dd      dk(  sJ  | j                  d      d      dk(  sJ |j                  dd      dk(  sJ  |j                  d      d      dk(  sJ | j                  dd      dk(  sJ  | j                  d      d      dk(  sJ t	        |j                  t
              sJ t	        | j                  t
              sJ y )	Nc                   Z    e Zd ZdZd Zed        Zeed               Ze	ed               Z
y)%test_curry_on_classmethods.<locals>.ArD   c                     || _         y r`   BASEr1   bases     r   __init__z.test_curry_on_classmethods.<locals>.A.__init__  	    DIr    c                 &    | j                   |z   |z   S r`   r  r1   r   rV   s      r   	addmethodz/test_curry_on_classmethods.<locals>.A.addmethod      99q=1$$r    c                 &    | j                   |z   |z   S r`   r  clsr   rV   s      r   addclassz.test_curry_on_classmethods.<locals>.A.addclass       88a<!##r    c                     | |z   S r`   r   ra   s     r   	addstaticz/test_curry_on_classmethods.<locals>.A.addstatic       q5Lr    N)r:   r;   r<   r  r  r   r
  classmethodr  staticmethodr  r   r    r   Ar     sX    	 
	% 
	% 
		$ 
 
	$ 
		 
 
	r    r  d   r   rK   k         )objectr
  r  r  r   r   r  r   s     r   test_curry_on_classmethodsr    s   F ( 	
#A;;q!###1;;q>!###;;q!Q3&&&>1;;q>!Q3&&&::ar!!!1::a=r!!!::ar!!!1::a=r!!!;;q!!!!1;;q>!!!!;;q!!!!1;;q>!!!! akk5)))akk5)))r    c                  8    G d dt               }  | d      }|j                  dd      dk(  sJ | j                  |dd      dk(  sJ d|_        |j                  dd      dk(  sJ d|_        |j                  dd      dk(  sJ |j	                  dd      d	k(  sJ | j	                  dd      d	k(  sJ d
| _        | j	                  dd      d	k(  sJ d
| _        | j	                  dd      d	k(  sJ |j                  dd      dk(  sJ | j                  dd      dk(  sJ y )Nc                   d    e Zd ZdZdZd Zed        Zeed               Z	e
ed               Zd Zy)'test_memoize_on_classmethods.<locals>.ArD   c                     || _         y r`   r  r  s     r   r  z0test_memoize_on_classmethods.<locals>.A.__init__  r  r    c                 &    | j                   |z   |z   S r`   r  r	  s      r   r
  z1test_memoize_on_classmethods.<locals>.A.addmethod  r  r    c                 &    | j                   |z   |z   S r`   r  r  s      r   r  z0test_memoize_on_classmethods.<locals>.A.addclass  r  r    c                     | |z   S r`   r   ra   s     r   r  z1test_memoize_on_classmethods.<locals>.A.addstatic  r  r    c                     | j                   S r`   )HASHr1   s    r   __hash__z0test_memoize_on_classmethods.<locals>.A.__hash__  s    99r    N)r:   r;   r<   r  r&  r  r   r
  r  r  r  r  r(  r   r    r   r  r     sb    	 
	% 
	% 
		$ 
 
	$ 
		 
 
		r    r  r  r   rK   r        r  rE   r  )r  r
  r  r&  r  r  r  s     r   test_memoize_on_classmethodsr+    s1   F 0 	
#A;;q!###;;q!Q3&&&AF;;q!###AF;;q!###::ar!!!::ar!!!AF::ar!!!AF::ar!!!;;q!!!!;;q!!!!r    c                       t         d         t        t         fd      sJ    d      d        j                  dd      k(  sJ    d      d        d      j                  d      k(  sJ y )Nc                     | |z   S r`   r   ra   s     r   r   ztest_curry_call.<locals>.add  ri   r    c                  (      j                   d      S r%   )callr   s   r   r\   z!test_curry_call.<locals>.<lambda>  s    XSXXa[ r    r"   r   )r   r   rH   r/  r0  s   @r   test_curry_callr1    sn    
 )01113q6!9A&&&3q6!9AA&&&r    c                     t         dd       }  |         | dd      k(  sJ   | j                  d      d       | dd      k(  sJ   | j                  d      j                  d              | dd      k(  sJ   | j                  d      d       | dd      k(  sJ   | j                  d      j                  d              | dd      k(  sJ y )	Nr"   r   c                     | |z   S r`   r   ra   s     r   r   ztest_curry_bind.<locals>.add  ri   r    rD   rE   r   rc   ry   )r   bindr0  s    r   test_curry_bindr5    s    
 5C1I8388B<s2r{*** 8388B<R "c"bk1118388b>B3r2;...$8388b>$&#b"+555r    c                     d t         fd       }     |        d      d      d      dk(  sJ    | d      d      d      dk(  sJ   | dd      d      dk(  sJ  | ddd      dk(  sJ   | dd      dd       | dddd      k(  sJ y )Nc                     | |z   |z   S r`   r   )r   rV   zs      r   add3z%test_curry_unknown_args.<locals>.add3  r   r    c                       |  S r`   r   )rw   r9  s    r   rX   z"test_curry_unknown_args.<locals>.f  s    T{r    r"   r   r      rK   r   )rX   r9  s    @r   test_curry_unknown_argsr<    s       6313q6!9Q<141Q471:??1Q71:??Q1:??1Q71a=AaAqM)))r    c                  *    t        t        d       sJ y )Nc                      t        d      S r%   r   r   r    r   r\   z&test_curry_bad_types.<locals>.<lambda>  s
    U1X r    )r   rH   r   r    r   test_curry_bad_typesr?    s    )-...r    c                       G d dt               }  | d       }t        |t               sJ t        ||       sJ t         |d      |       sJ t          |       d      |       sJ   |d      d      dk(  sJ y )Nc                       e Zd Zy)(test_curry_subclassable.<locals>.mycurryN)r:   r;   r<   r   r    r   mycurryrB    s    r    rC  c                     | |z   S r`   r   ra   s     r   r\   z)test_curry_subclassable.<locals>.<lambda>  s
    qs r    r"   r   r   )r   r   )rC  r   s     r   test_curry_subclassablerE    s    %  "
#Cc5!!!c7###c!fg&&&eceAh(((3q6!9>>
r    c            	          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.
    c                     | |z   |z  S r`   r   r   s      r   add_then_multiplyz6generate_compose_test_cases.<locals>.add_then_multiply  r   r    r   rd   r   r"   r   )r   Falsery   3r   r   10r   )r&   r*   r   r   r   )rH  s    r   generate_compose_test_casesrL    s    

 "	
 F"	
 SM"	
 &#v&"	
 #JB	
 #()S!H	
5 r    c                  R    t               D ]  \  } }}} t        |  |i ||k(  rJ  y r`   )rL  r   )compose_argsrw   kwexpecteds       r   test_composerQ  A  s<    .I.K ?*tR%w%t2r2h>>>?r    c                     d } d }t        | |      j                  dk(  sJ t        sj                  dk(  sJ t	               }t        | |      j                  dk(  sJ t        sj                  dk(  sJ t              dj                  | |      k(  sJ t        | |      k(  sJ t               k(  sJ t        ||       k(  rJ t	               k(  rJ t               k(  rJ t        ||       k7  sJ t               k7  sJ t	               k7  sJ t        | |      k7  rJ t               k7  rJ t              t        t        | |            k(  sJ t              t        t        ||             k7  sJ t        t        d dd
       G fdd      }|j                  d      dk(  sJ |j                  dd      dk(  sJ |j                  d      dk(  sJ  |       j                         dk(  sJ  |       j                  d      dk(  sJ  |       j                  d	      dk(  sJ  |       j                  d	d      dk(  sJ t        | |      j                  |u sJ t        t        d      r"t        | |      j                   j                  J d }d }t"        t        t$        t"        t&        t"        d|_        t"        t        d|_        t        ||      t+        j,                        }|j.                  t+        j,                  |      j.                  k(  sJ |j0                  t        k(  sJ  G fdd      }t3        t+        j,                   |       j4                        j.                        dk(  sJ y ) Nc                     | S r`   r   r   s    r   rX   z test_compose_metadata.<locals>.fI      r    c                     | S r`   r   r   s    r   r   z test_compose_metadata.<locals>.gL  rT  r    f_of_gz-lambda *args, **kwargs: f(g(*args, **kwargs))ComposezA composition of functionszCompose({!r}, {!r})c                     | dz  S r)   r   r   s    r   r\   z'test_compose_metadata.<locals>.<lambda>m  s
    ac r    r   c                     t        |       |z   S r`   )r   ra   s     r   r\   z'test_compose_metadata.<locals>.<lambda>m  s    #a&1* r    c                   ,    e Zd Zd ZW  Z eW        Zy)&test_compose_metadata.<locals>.MyClassc                      y)N   r   r'  s    r   __int__z.test_compose_metadata.<locals>.MyClass.__int__q  s    r    N)r:   r;   r<   r^  	my_methodr  my_static_method)bindables   r   MyClassr[  o  s    	 	'1r    rb  r   6r   rc   rK  416220r"   2sandboxc                      y)NrK   r   )r   r   r   des        r   myfuncz%test_compose_metadata.<locals>.myfunc  s    r    c                 $    dj                  |       S )Nz
result: {})formatr   s    r   	otherfuncz(test_compose_metadata.<locals>.otherfunc  s    ""1%%r    )r   r   r   rk  rl  return)rX   rq  c                       e Zd ZW  Zy)r[  N)r:   r;   r<   method)composeds   r   rb  z&test_compose_metadata.<locals>.MyClass  s    r    rK   rd   )r   r:   r   r=   r  r   ro  r,   r?   r   r   r_  r`  r   r   cytoolz	__class__r   floatbool__annotations__inspect	signature
parametersreturn_annotationlenrs  )	rX   r   r   rb  rm  rp  sigra  rt  s	          @@r   test_compose_metadatar  F  sn    q!}H(((#RRRR 	Aq!}H	)))#????>299!Q????wq!}$$$|~%%%71a=(((68###;=(((wq!}$$${}$$$vx71a=(((<>)))>T'!Q-0000>T'!Q-0000sM+DEH2 2 Q3&&&Q!$,,,##A&#---9 D(((9#t+++9%%a(C///9%%a+s2221a=$$)))w	"q!}&&22:::&
 F '*S 9Iy&)H


H
%C>>W..v6AAAAA  C'''  w  !1!12==>!CCCr    c                  6    t        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              3   V   K   | ]!  \  }}}}t        t        |            |||f # y wr`   )rF   reversed).0rN  rw   r   rP  s        r   	<genexpr>z3generate_compose_left_test_cases.<locals>.<genexpr>  s3      2\4 
x%	&fh?s   '))rF   rL  r   r    r    generate_compose_left_test_casesr    s#       '(  r    c                  R    t               D ]  \  } }}} t        |  |i ||k(  rJ  y r`   )r  r   )compose_left_argsrw   rO  rP  s       r   test_compose_leftr    s@    3S3U I/	D"h/|./<<HHHIr    c                      t        dt              dk(  sJ t        dt        t              dk(  sJ t        dt        t        t              du sJ y )Nr"   r   r   F)r	   r&   r*   r   r   r    r   	test_piper    sF    3<13!!!63'5000r    c                      t        d              sJ  t        d              rJ  t        t              d      sJ  t        t              d      rJ  t        t        t                    d      sJ  t        t        t                    d      rJ d }  t        |       dd      sJ  t        |       dd      rJ  t        d              sJ  t        d              sJ  t        d              sJ  t        d	              sJ  t        d
              rJ  t        d              rJ  t        d              rJ y )Nc                       yr6   r   r   r    r   r\   z!test_complement.<locals>.<lambda>  rs   r    c                       yr/   r   r   r    r   r\   z!test_complement.<locals>.<lambda>  rs   r    r"   r   c                 2    t        |       xr t        |      S r`   )r   r   s     r   r\   z!test_complement.<locals>.<lambda>  s    VAY46!9 r    c                       y)N r   r   r    r   r\   z!test_complement.<locals>.<lambda>  rs   r    c                       yr   r   r   r    r   r\   z!test_complement.<locals>.<lambda>  rs   r    c                       y r`   r   r   r    r   r\   z!test_complement.<locals>.<lambda>  rs   r    c                      g S r`   r   r   r    r   r\   z!test_complement.<locals>.<lambda>  s    b r    c                       y)Nr   r   r   r    r   r\   z!test_complement.<locals>.<lambda>  rs   r    c                       yr%   r   r   r    r   r\   z!test_complement.<locals>.<lambda>  rs   r    c                      dgS r%   r   r   r    r   r\   z!test_complement.<locals>.<lambda>  s    1# r    )r
   r   r#   )	both_evens    r   test_complementr    sG   $:m$&&&'z,'))) :fa   !z&!!$$$):j()!,,,,z*U+,Q/// 5I :i A&&&$z)$Q*** ":j!### :i """#:l#%%%!:j!###&z+&((($z)$&&&&z+&((((r    c                  v    d } t        | d      dk(  sJ g }t        |j                  d      dk(  sJ |dgk(  sJ y )Nc                     | dz   S r%   r   r   s    r   r\   ztest_do.<locals>.<lambda>  s
    AE r    r"   )r   append)r&   logs     r   test_dor    sE    
Cc1:??
Ccjj!!!!1#::r    c                      t        t        d            } t        d t        d      D              } ||       dk(  sJ  ||       dk(  sJ y )NrD   c              3   8   K   | ]  }t        d |z          yw)r   N)r   )r  is     r   r  z,test_juxt_generator_input.<locals>.<genexpr>  s     6JqsO6s   rC   )r   r   rK   r;  r]  )rP   ranger   )datajuxtfuncs     r   test_juxt_generator_inputr    sG    b	?D6U1X66HD>_,,,D>_,,,r    c                  .    d } t        | dd      dk(  sJ y )Nc                 
    | |fS r`   r   r   s     r   rX   ztest_flip.<locals>.f  s    !tr    r   r   )r   r   )r   r   s    r   	test_flipr    s      3
***r    c                     t         j                  dk(  sJ dt         j                  v sJ d } d }t        t        | |       d      dk(  sJ  d      dk(  sJ  d      d	k(  sJ j                  d
k(  sJ t        s0dj                  v sJ dj                  v sJ dj                  v sJ d }t        t
        t        f|       g       J  dg      dk(  sJ  i       J  ddi      dk(  sJ j                  dk(  sJ t        s0dj                  v sJ dj                  v sJ dj                  v sJ d }t        t        t        f|       t              J  t              J t        t        fd      sJ t        t        fd      sJ t        t               t               t                     j                  dk(  sJ j                  t         j                  k(  sJ y )Nr   zOA wrapper around a function to catch exceptions and
    dispatch to a handler.
c                 (    ddgj                  |       S )zidx docstring
        r"   r   )indexr   s    r   idxztest_excepts.<locals>.idx  s     1v||Ar    c                 (    t        | t              sJ y)zhandler docstring
        )r   
ValueError)rl  s    r   handlerztest_excepts.<locals>.handler  s     !Z(((r    r"   r   r   r   r  idx_excepting_ValueErrorzidx docstringr  zhandler docstringc                     | d   S )zgetzero docstring
        r   r   r   s    r   getzeroztest_excepts.<locals>.getzero
  s     tr    (getzero_excepting_IndexError_or_KeyErrorzgetzero docstringreturn_nonezReturns Nonec                      |        )zHA function that raises an instance of the exception type given.
        r   r   s    r   raise_ztest_excepts.<locals>.raise_  s     c	r    c                        t               S r`   )rH   	exceptings   r   r\   ztest_excepts.<locals>.<lambda>#  s    Yy%9 r    c                        t               S r`   )NotImplementedErrorr  s   r   r\   ztest_excepts.<locals>.<lambda>$  s    y9L/M r    r  )r   r:   r=   r  r   
IndexErrorKeyErrorr   rH   r  r  )r  r  r  r  r  s       @r   test_exceptsr    s*   y(((	'	  

 
C1IQ<1Q<1Q<2!;;;;)"3"3333y00000"i&7&7777
 X.8IR=   aS>QR=   aV!!!!KKKK"i&7&7777	 1 1111!2!2222
 X.7IZ (((X&&&)9:::%'MNNN&(FH5I,,,///r    )Nrz  sysru  cytoolz.functoolzr   r   r   r   r   r   r	   r
   r   r   r   r   r   operatorr   r   r   cytoolz.utilsr   	functoolsr   implementationnameversion_infomajorminorr   r   r#   r&   r*   r  r,   r?   rI   rM   rR   r]   rf   rm   rp   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r  r+  r1  r5  r<  r?  rE  rL  rQ  r  r  r  r  r  r  r  r  r  r   r    r   <module>r     sz    
 3 3 3 3 * )    v% $!#$!# 6 & $320#	)X+4,>
1	*$
>)$<
4@+'*T*"Z'6*/2'T?
XDvI
1)6-+<0r    