
    [c                         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dS )    N)takefirstsecondsorted
merge_withreducemergeoperator)defaultdict)import_module)addc                  d    t           t          d          g d                    ddgk    sJ d S )N      r      r   )listr        8lib/python3.11/site-packages/toolz/tests/test_curried.py	test_taker   
   s9    Q			""##1v------r   c                  :    t           t          j        j         u sJ d S N)r   toolz	itertoolzr   r   r   
test_firstr      s    EO)))))))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 d S )Nc                  *    t          t                    S r   r   intr   r   r   <lambda>ztest_merge.<locals>.<lambda>   s    S!1!1 r   )factoryr   c                  *    t          t                    S r   r   r   r   r   r!   ztest_merge.<locals>.<lambda>   s    S)9)9 r   )r	   r   r   r   
test_merger$      s    2511222Aq6::q!fDDDD!Q==QF""""!Q!9!9:::q!fDDDDDDr   c                  Z     t          t                    ddiddi          ddik    sJ d S )Nr   r   r   r   sumr   r   r   test_merge_withr(      s7    :c??Aq6Aq6**q!f444444r   c                  L    t          t          ddiddig          ddik    sJ d S )Nar   r   r   r&   r   r   r   test_merge_with_listr+      s4    cS!HsAh/00S!H<<<<<<r   c                  V     t          t                    ddg          ddgk    sJ d S )N)key)r   r   )r   r   )r   r   r   r   r   test_sortedr.       s8    6fvv.//FF3CCCCCCCr   c                  L     t          t                    d          dk    sJ d S )Nr      )r   r   r   r   r   test_reducer1   $   s)    6#;;y!!Q&&&&&&r   c                  4    t           j        j        dk    sJ d S )Nztoolz.curried)r   curried__name__r   r   r   test_module_namer5   (   s    =!_444444r   c                     t          |           rt          | t          j                  rdS t          j                            |           }||dk    rdS |dk    ot          j                            |           S )NFr   T)callable
isinstancer   curry	functoolznum_required_argshas_keywords)funcnargss     r   should_curryr?   ,   st    D>> Zek:: uO--d33E 	 tA:<%/66t<<<r   c                  H   dd l } t          t                                                    D ]\  }}t	          |          st          |t          j                  sK	  |d           n># t          $ r1 	  |d           Y T# t          $ r Y nw xY wt          d|z            w xY wt          t          | |                    t          |t          j                  k    s
J |            t          t          t          t                              h dz            dk    sJ d S )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   sQ   OOOS		!! S S1{{ 	!U[)) 	! 	 	 	AcFFF H !   D %?!C  	 GHa0011Z5;5O5OORRQRRRRR s499~~ 5 5 5566!;;;;;;s*   A''
B"2A??
B	B"BB"c                     t          d          } i }d } |t          t                              } |t          |                     }|                    t          j        ||                     t          j        t          |          }t          j        t          t          j        j                  }||k    rt          |          t          |          z
  }|r2t          dd                    t          |                    z            t          |          t          |          z
  }|r2t          dd                    t          |                    z            t          j        t          ||          }t          j        d |          }g }	t          |                                          D ]x\  }
\  }}|
|v r|	                    d|
z             %t#          t%          t          |
                    r|	                    d|
z             `|	                    d	|
z             yt          d
                    |	                    d S )Nztoolz.curried.exceptionsc                 >    d |                                  D             S )Nc                 h    i | ]/\  }}d |v	|t          |          rt          j        |          n|0S )__)r?   r   r9   ).0namefs      r   
<dictcomp>zCtest_curried_namespace.<locals>.curry_namespace.<locals>.<dictcomp>V   sO     
 
 
aT)9
LOO:%+a...
 
 
r   )rF   )nss    r   curry_namespacez/test_curried_namespace.<locals>.curry_namespaceU   s+    
 
88::
 
 
 	
r   z4There are missing functions in toolz.curried:
    %sz    
z2There are extra functions in toolz.curried:
    %sc                 &    | d         | d         k    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	namespacerX   
from_toolzfrom_exceptionscurried_namespacemissingextraunequalmessagesrT   	orig_func	auto_funcs                r   test_curried_namespacerk   P   sL   9::JI
 
 
 !e--J%od:&6&677OU[_==>>>)44I%-2HII%% 2i..3'8#9#99 	C !X#+==#A#A"B C C C%&&Y7 	A !V#+==#?#?"@ A A A"44EFF/"8"8'BB,27==??,C,C 	W 	W(D(9i& W NQU UVVVVgeT2233 W AD HIIII NQU UVVVVTYYx00111'2 2r   )r   toolz.curriedr   r   r   r   r   r   r	   r
   rE   collectionsr   	importlibr   r   r   r   r$   r(   r+   r.   r1   r5   r?   rN   rk   r   r   r   <module>ro      si       3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 # # # # # # # # # # # #      . . .* * *E E E5 5 5= = =D D D' ' '5 5 5= = =< < <6%2 %2 %2 %2 %2r   