o
    Nrf                     @   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
 d dlmZ d dlmZ d dl	m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S )    N)takefirstsecondsorted
merge_withreducemergeoperator)defaultdict)import_module)addc                   C   s$   t tdg dddgksJ d S )N      r      r   )listr    r   r   a/var/www/html/software/conda/envs/catlas/lib/python3.10/site-packages/toolz/tests/test_curried.py	test_take
   s   $r   c                   C   s   t tjj u sJ d S N)r   toolzZ	itertoolzr   r   r   r   
test_first      r   c                   C   s^   t dd 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ddiks-J d S )Nc                   S      t tS r   r
   intr   r   r   r   <lambda>       ztest_merge.<locals>.<lambda>)factoryr   c                   S   r   r   r   r   r   r   r   r      r   )r   r   r   r   r   
test_merge   s   "$r   c                   C   s&   t tddiddiddiksJ d S )Nr   r   r   r   sumr   r   r   r   test_merge_with      &r"   c                   C   s&   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   r   test_merge_with_list   r#   r%   c                   C   s"   t tdddgddgksJ d S )N)key)r   r   )r   r   )r   r   r   r   r   r   test_sorted    s   "r'   c                   C   s   t tddks
J d S )Nr      )r   r   r   r   r   r   test_reduce$   s   r)   c                   C   s   t jjdksJ d S )Nztoolz.curried)r   curried__name__r   r   r   r   test_module_name(   r   r,   c                 C   sL   t | r
t| tjrdS tj| }|d u s|dkrdS |dko%tj| S )NFr   T)callable
isinstancer   curryZ	functoolzZnum_required_argsZhas_keywords)funcnargsr   r   r   should_curry,   s   r2   c                  C   s   dd l } tt D ]F\}}t|sq
t|tjs?z|d W n ty>   z|d W n	 ty5   Y nw Y q
t	d| w t
t| |t|tjksPJ |q
tttth d@ dksaJ d S )Nr   r   xz)toolz.curried.operator.%s is not curried!>   submulr   r   )r	   varscopitemsr-   r.   r   r/   	TypeErrorAssertionErrorr2   getattrlenset)r	   kvr   r   r   test_curried_operator5   s(   $
$r@   c                  C   sH  t d} i }dd }|tt}|t| }|t|| tt|}tttjj}||krt	|t	| }|rFt
ddt| t	|t	| }|r[t
ddt| tt||}tdd |}g }	t| D ](\}
\}}|
|v r|	d	|
  qrttt|
r|	d
|
  qr|	d|
  qrt
d|	d S )Nztoolz.curried.exceptionsc                 S   s   dd |   D S )Nc                 S   s0   i | ]\}}d |vr|t |rt|n|qS )__)r2   r   r/   ).0namefr   r   r   
<dictcomp>V   s    zCtest_curried_namespace.<locals>.curry_namespace.<locals>.<dictcomp>)r8   )nsr   r   r   curry_namespaceU   s   z/test_curried_namespace.<locals>.curry_namespacez4There are missing functions in toolz.curried:
    %sz    
z2There are extra functions in toolz.curried:
    %sc                 S   s   | d | d kS )Nr   r   r   )r3   r   r   r   r   l   s    z(test_curried_namespace.<locals>.<lambda>z,%s should come from toolz.curried.exceptionsz%s should be curried from toolzz,%s should come from toolz and NOT be curried
)r   r6   r   updater   Z	valfilterr-   r*   __dict__r=   r:   joinr   r   r   r8   appendr2   r;   )
exceptions	namespacerG   Z
from_toolzZfrom_exceptionsZcurried_namespacemissingextraZunequalmessagesrC   Z	orig_funcZ	auto_funcr   r   r   test_curried_namespaceP   s<   rR   )r   Ztoolz.curriedr   r   r   r   r   r   r   r	   r7   collectionsr
   	importlibr   r   r   r   r   r"   r%   r'   r)   r,   r2   r@   rR   r   r   r   r   <module>   s"    (	