o
    Si                     @   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   N/home/ubuntu/.local/lib/python3.10/site-packages/cytoolz/tests/test_curried.py	test_take
   s   $r   c                   C   s   t tjj u sJ d S N)r   cytoolz	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cytoolz.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   curry	functoolznum_required_argshas_keywords)funcnargsr   r   r   should_curry,   s   r6   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+cytoolz.curried.operator.%s is not curried!>   r   mulsubr   )r	   varscopitemsr.   r/   r   r0   	TypeErrorAssertionErrorr6   getattrlenset)r	   kvr   r   r   test_curried_operator5   s(   $
$rD   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cytoolz.curried.exceptionsc                 S   s   dd |   D S )Nc                 S   s0   i | ]\}}d |vr|t |rt|n|qS )__)r6   r   r0   ).0namefr   r   r   
<dictcomp>V   s    zCtest_curried_namespace.<locals>.curry_namespace.<locals>.<dictcomp>)r<   )nsr   r   r   curry_namespaceU   s   z/test_curried_namespace.<locals>.curry_namespacez6There are missing functions in cytoolz.curried:
    %sz    
z4There are extra functions in cytoolz.curried:
    %sc                 S   s   | d | d kS )Nr   r   r   )r7   r   r   r   r   l   s    z(test_curried_namespace.<locals>.<lambda>z.%s should come from cytoolz.curried.exceptionsz!%s should be curried from cytoolzz.%s should come from cytoolz and NOT be curried
)r   r:   r   updater   	valfilterr.   r+   __dict__rA   r>   joinr   r   r   r<   appendr6   r?   )
exceptions	namespacerK   from_cytoolzfrom_exceptionscurried_namespacemissingextraunequalmessagesrG   	orig_func	auto_funcr   r   r   test_curried_namespaceP   s<   r]   )r   cytoolz.curriedr   r   r   r   r   r   r   r	   r;   collectionsr
   	importlibr   r   r   r   r    r#   r&   r(   r*   r-   r6   rD   r]   r   r   r   r   <module>   s"    (	