o
    Si                     @   s   d dl T d dl Z d dlZ d dl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e jG dd dZdd Zdd ZdS )    )*N)raisesc                  C   s2   t tt} tt| }| d|dksJ d S )N)      )composestrsumpickleloadsdumpsfg r   R/home/ubuntu/.local/lib/python3.10/site-packages/toolz/tests/test_serialization.pytest_compose   s   
r   c                  C   s<   t tt} tt| }t| dt|dksJ d S )N)r   r      )currymapr   r	   r
   r   listr   r   r   r   
test_curry   s    r   c                  C   sD   t ttt} tt| }| d|dksJ | j|jks J d S )Nr   )juxtr   intboolr	   r
   r   funcsr   r   r   r   	test_juxt   s   r   c                  C   sd   t t} | ddu sJ | ddu sJ tt| }| d|dks&J | d|dks0J d S )NTF)
complementr   r	   r
   r   r   r   r   r   test_complement   s   r   c                  C   s   t jt} | d d u sJ | ddu sJ | ddu s!J tt| }|d d u s2J |ddu s;J |ddu sDJ d S )Nr   Fr   T)toolz	functoolzInstancePropertyr   __get__r	   r
   r   )pp2r   r   r   test_instanceproperty$   s   r$   c                 C   s   | |fS Nr   xyr   r   r   r   /   s   r   c                  C   s   t t tjj} | tjju sJ | t}t t |}|dd|dd  kr2tddks5J  J | td}t t |}|d|d  krUtddksXJ  J d S )Nr   r   )r	   r
   r   r   r   flipr   )r)   g1g2r   r   r   	test_flip3   s   ..r,   c                  C   s(   t t tjj} | tjju sJ d S r%   )r	   r
   r   r   curriedmerge)r.   r   r   r   test_curried_exceptions>   s   r/   c                   @   sT   e Zd Zdd Zejdd Zdd Zdd ZejG d	d
 d
Z	G dd dZ
dS )GlobalCurriedc                 C      || _ || _d S r%   r&   selfr'   r(   r   r   r   __init__F      
zGlobalCurried.__init__c                 C      | j | j | | S r%   r&   r3   abr   r   r   f1J      zGlobalCurried.f1c                 C      d S r%   r   r3   r   r   r   r*   N      zGlobalCurried.g1c                 C   s   t | j| jffS )z0Allow us to serialize instances of GlobalCurried)r0   r'   r(   r=   r   r   r   
__reduce__Q   s   zGlobalCurried.__reduce__c                   @   s2   e Zd Zdd Zejdd Zdd Zdd Zd	S )
zGlobalCurried.NestedCurriedc                 C   r1   r%   r&   r2   r   r   r   r4   W   r5   z$GlobalCurried.NestedCurried.__init__c                 C   r6   r%   r&   r7   r   r   r   f2[   r;   zGlobalCurried.NestedCurried.f2c                 C   r<   r%   r   r=   r   r   r   r+   _   r>   zGlobalCurried.NestedCurried.g2c                 C   s   t j| j| jffS )z0Allow us to serialize instances of NestedCurried)r0   NestedCurriedr'   r(   r=   r   r   r   r?   b   s   z&GlobalCurried.NestedCurried.__reduce__N)	__name__
__module____qualname__r4   r   r   r@   r+   r?   r   r   r   r   rA   U   s    
rA   c                   @   s*   e Zd Zdd Zejdd Zdd ZdS )zGlobalCurried.Nestedc                 C   r1   r%   r&   r2   r   r   r   r4   g   r5   zGlobalCurried.Nested.__init__c                 C   r6   r%   r&   r7   r   r   r   f3k   r;   zGlobalCurried.Nested.f3c                 C   r<   r%   r   r=   r   r   r   g3o   r>   zGlobalCurried.Nested.g3N)rB   rC   rD   r4   r   r   rE   rF   r   r   r   r   Nestedf   s
    
rG   N)rB   rC   rD   r4   r   r   r:   r*   r?   rA   rG   r   r   r   r   r0   D   s    
r0   c            	      C   s  dd } | t s
J | t jjsJ | t jjsJ | t jjjjs$J | t jjjs-J t d}tt	|}||us?J |ddd|ddd  krVdksYJ  J |d}tt	|}||uskJ |dd|dd  kr~dksJ  J |dd}tt	|}||usJ |d|d  krdksJ  J t jd}tt	|}||usJ |ddd|ddd  krdksJ  J d S )Nc                 S   s   t t | | u S r%   )r	   r
   r   )objr   r   r   preserves_identityu   s   z1test_curried_qualname.<locals>.preserves_identityr   r   r      
   )
r0   funcr:   rA   r@   rG   rE   r	   r
   r   )	rI   global_curried1global_curried2global_curried3global_curried4func1func2nested_curried1nested_curried2r   r   r   test_curried_qualnames   s,   4,$8rU   c                      s0   t jG dd d ttj fddsJ d S )Nc                   @   s   e Zd ZdZdS )z&test_curried_bad_qualname.<locals>.Badz toolz.functoolz.not.a.valid.pathN)rB   rC   rD   r   r   r   r   Bad   s    rV   c                      s
   t  S r%   )r	   r   r   rV   r   r   <lambda>   s   
 z+test_curried_bad_qualname.<locals>.<lambda>)r   r   r   r	   PicklingErrorr   r   rW   r   test_curried_bad_qualname   s   rZ   )r   toolz.curriedr	   toolz.utilsr   r   r   r   r   r$   r   r,   r/   r   r0   rU   rZ   r   r   r   r   <module>   s"    	.H