
    bi                         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
 d dlmZ d dlmZ d dl	mZ d Zd Zd Zd	 Zd
 Zd Zd Zd Zd Zd Zd Zy)    N)takefirstsecondsorted
merge_withreducemergeoperator)defaultdict)import_module)addc                  J    t         t        d      g d            ddgk(  sJ y )N      r      r   )listr        S/home/cdr/jupyterlab/.venv/lib/python3.12/site-packages/toolz/tests/test_curried.py	test_taker   
   s$    Q	"#1v---r   c                  H    t         t        j                  j                   u sJ y N)r   toolz	itertoolzr   r   r   
test_firstr      s    EOO)))))r   c                       t        d       ddi      ddik(  sJ t        ddi      ddik(  sJ t        ddid       ddik(  sJ y )Nc                       t        t              S r   r   intr   r   r   <lambda>ztest_merge.<locals>.<lambda>   s    S!1 r   )factoryr   c                       t        t              S r   r   r   r   r   r!   ztest_merge.<locals>.<lambda>   s    S)9 r   )r	   r   r   r   
test_merger$      s]    2512Aq6:q!fDDD!Q=QF"""!Q!9:q!fDDDr   c                  F     t        t              ddiddi      ddik(  sJ y )Nr   r   r   r   sumr   r   r   test_merge_withr(      s)    :c?Aq6Aq6*q!f444r   c                  >    t        t        ddiddig      ddik(  sJ y )Nar   r   r   r&   r   r   r   test_merge_with_listr+      s(    cS!HsAh/0S!H<<<r   c                  B     t        t              ddg      ddgk(  sJ y )N)key)r   r   )r   r   )r   r   r   r   r   test_sortedr.       s&    6fvv./FF3CCCCr   c                  8     t        t              d      dk(  sJ y )Nr      )r   r   r   r   r   test_reducer1   $   s    6#;y!Q&&&r   c                  B    t         j                  j                  dk(  sJ y )Nztoolz.curried)r   curried__name__r   r   r   test_module_namer5   (   s    ==!!_444r   c                     t        |       rt        | t        j                        ryt        j                  j                  |       }||dkD  ry|dk(  xr t        j                  j                  |       S )NFr   T)callable
isinstancer   curry	functoolznum_required_argshas_keywords)funcnargss     r   should_curryr?   ,   sY    D>Zekk:OO--d3E}	A:<%//66t<<r   c                     dd l } t        t              j                         D ]k  \  }}t	        |      st        |t        j                        s		  |d       t        t        | |            t        |t        j                        k(  rfJ |        t        t        t        t                    h dz        dk(  sJ y # t        $ r) 	  |d       Y # t        $ r Y nw xY wt        d|z        w xY w)Nr   r   xz)toolz.curried.operator.%s is not curried!>   r   mulsubr   )r
   varscopitemsr7   r8   r   r9   	TypeErrorAssertionErrorr?   getattrlenset)r
   kvs      r   test_curried_operatorrN   5   s    S	! S1{!U[[)! GHa01Z5;;5OORQRRO%S* s49~ 556!;;;  	cF  !  %?!C 	s*   B<<	C.C	CC.CC.c                     t        d      } i }d } |t        t                    } |t        |             }|j                  t        j                  ||             t        j
                  t        |      }t        j
                  t        t        j                  j                        }||k7  rKt        |      t        |      z
  }|r&t        ddj                  t        |            z        t        |      t        |      z
  }|r&t        ddj                  t        |            z        t        j                  t        ||      }t        j
                  d |      }g }	t        |j                               D ]c  \  }
\  }}|
|v r|	j!                  d|
z         "t#        t%        t        |
            r|	j!                  d|
z         P|	j!                  d	|
z         e t        d
j                  |	            y )Nztoolz.curried.exceptionsc                     | j                         D ci c],  \  }}d|vr#|t        |      rt        j                  |      n|. c}}S c c}}w )N__)rF   r?   r   r9   )nsnamefs      r   curry_namespacez/test_curried_namespace.<locals>.curry_namespaceU   sJ     88:
aT)9 LO%++a.:
 	
 
s   1A	z4There are missing functions in toolz.curried:
    %sz    
z2There are extra functions in toolz.curried:
    %sc                     | d   | d   k7  S )Nr   r   r   )rA   s    r   r!   z(test_curried_namespace.<locals>.<lambda>l   s    AaDAaDL r   z,%s should come from toolz.curried.exceptionsz%s should be curried from toolzz,%s should come from toolz and NOT be curried
)r   rD   r   updater	   	valfilterr7   r3   __dict__rK   rH   joinr   r   r   rF   appendr?   rI   )
exceptions	namespacerU   
from_toolzfrom_exceptionscurried_namespacemissingextraunequalmessagesrS   	orig_func	auto_funcs                r   test_curried_namespacerh   P   s   9:JI
 !e-J%d:&67OU[[_=>)4I%--2H2HI%%i.3'8#99 !X#+==#A"B C C%&Y7 !V#+==#?"@ A A""44EF//"8'B,27==?,C 	W(D(9i& NQU UVgeT23 AD HI NQU UV	W TYYx011' &r   )r   toolz.curriedr   r   r   r   r   r   r	   r
   rE   collectionsr   	importlibr   r   r   r   r$   r(   r+   r.   r1   r5   r?   rN   rh   r   r   r   <module>rl      s\     3 3 3 # # .*E5=D'5=<6%2r   