U
    |cc                     @   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eZdd Zdd ZdS )    )*N)raisesc                  C   s2   t tt} tt| }| d|dks.td S )N)      )ZcomposestrsumpickleloadsdumpsAssertionErrorfg r   =lib/python3.8/site-packages/toolz/tests/test_serialization.pytest_compose   s    
r   c                  C   s<   t tt} tt| }t| dt|dks8td S )N)r   r      )currymapr   r   r	   r
   listr   r   r   r   r   
test_curry   s    r   c                  C   sD   t ttt} tt| }| d|dks0t| j|jks@td S )Nr   )	Zjuxtr   intboolr   r	   r
   r   Zfuncsr   r   r   r   	test_juxt   s    r   c                  C   sd   t t} | ddkst| ddks(ttt| }| d|dksLt| d|dks`td S )NTF)Z
complementr   r   r   r	   r
   r   r   r   r   test_complement   s    r   c                  C   s   t jt} | d d kst| ddks0t| ddksBttt| }|d d ksdt|ddksvt|ddkstd S )Nr   Fr   T)	toolz	functoolzZInstancePropertyr   __get__r   r   r	   r
   )pZ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ks$t| t}t t |}|dd|dd  krbtddkshn t| td}t t |}|d|d  krtddksn td S )Nr   r   )r   r	   r
   r   r   flipr   r   )r$   g1g2r   r   r   	test_flip3   s    ,r'   c                  C   s(   t t tjj} | tjjks$td S r    )r   r	   r
   r   Zcurriedmerger   )r(   r   r   r   test_curried_exceptions>   s    r)   c                   @   sX   e Zd Zdd Zejdd Zdd Zdd ZejG d	d
 d
e	Z
G dd de	ZdS )GlobalCurriedc                 C   s   || _ || _d S r    r!   selfr"   r#   r   r   r   __init__F   s    zGlobalCurried.__init__c                 C   s   | j | j | | S r    r!   r,   abr   r   r   f1J   s    zGlobalCurried.f1c                 C   s   d S r    r   r,   r   r   r   r%   N   s    zGlobalCurried.g1c                 C   s   t | j| jffS )z0Allow us to serialize instances of GlobalCurried)r*   r"   r#   r2   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   s   || _ || _d S r    r!   r+   r   r   r   r-   W   s    z$GlobalCurried.NestedCurried.__init__c                 C   s   | j | j | | S r    r!   r.   r   r   r   f2[   s    zGlobalCurried.NestedCurried.f2c                 C   s   d S r    r   r2   r   r   r   r&   _   s    zGlobalCurried.NestedCurried.g2c                 C   s   t j| j| jffS )z0Allow us to serialize instances of NestedCurried)r*   NestedCurriedr"   r#   r2   r   r   r   r3   b   s    z&GlobalCurried.NestedCurried.__reduce__N)	__name__
__module____qualname__r-   r   r   r4   r&   r3   r   r   r   r   r5   U   s
   
r5   c                   @   s*   e Zd Zdd Zejdd Zdd ZdS )zGlobalCurried.Nestedc                 C   s   || _ || _d S r    r!   r+   r   r   r   r-   g   s    zGlobalCurried.Nested.__init__c                 C   s   | j | j | | S r    r!   r.   r   r   r   f3k   s    zGlobalCurried.Nested.f3c                 C   s   d S r    r   r2   r   r   r   g3o   s    zGlobalCurried.Nested.g3N)r6   r7   r8   r-   r   r   r9   r:   r   r   r   r   Nestedf   s   
r;   N)r6   r7   r8   r-   r   r   r1   r%   r3   objectr5   r;   r   r   r   r   r*   D   s   
r*   c            	      C   s  dd } | t st| t jjs$t| t jjs4t| t jjjjsHt| t jjjsZtt d}t	t
|}||k	s~t|ddd|ddd  krdksn t|d}t	t
|}||k	st|dd|dd  krdksn t|dd}t	t
|}||k	s*t|d|d  krJdksPn tt jd}t	t
|}||k	szt|ddd|ddd  krdksn td S )Nc                 S   s   t t | | kS r    )r   r	   r
   )objr   r   r   preserves_identityu   s    z1test_curried_qualname.<locals>.preserves_identityr   r   r      
   )r*   r   funcr1   r5   r4   r;   r9   r   r	   r
   )	r>   Zglobal_curried1Zglobal_curried2Zglobal_curried3Zglobal_curried4Zfunc1Zfunc2Znested_curried1Znested_curried2r   r   r   test_curried_qualnames   s,    2*&rB   c                      s2   t jG dd dt ttj fdds.t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)r6   r7   r8   r   r   r   r   Bad   s   rC   c                      s
   t  S r    )r   r
   r   rC   r   r   <lambda>       z+test_curried_bad_qualname.<locals>.<lambda>)r   r   r<   r   r   ZPicklingErrorr   r   r   rD   r   test_curried_bad_qualname   s    rG   )r   Ztoolz.curriedr   Ztoolz.utilsr   r   r   r   r   r   r   r'   r)   r   r<   r*   rB   rG   r   r   r   r   <module>   s    	.H