U
    ª/eŸ  ã                   @   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   úB/tmp/pip-unpacked-wheel-zr66a21f/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   Ú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sˆt‚d S )Nr   Fr   T)	ÚtoolzÚ	functoolzZInstancePropertyr   Ú__get__r   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ks$t‚| tƒ}t  t  |¡¡}|ddƒ|ddƒ  krbtddƒkshn t‚| tƒdƒ}t  t  |¡¡}|dƒ|dƒ  kr¦tddƒks¬n 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%   r4   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#   r0   r   r   r   Úf2[   s    zGlobalCurried.NestedCurried.f2c                 C   s   d S r"   r   r4   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%   r4   r   r   r   r5   b   s    z&GlobalCurried.NestedCurried.__reduce__N)	Ú__name__Ú
__module__Ú__qualname__r/   r   r   r6   r(   r5   r   r   r   r   r7   U   s
   
r7   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#   r0   r   r   r   Úf3k   s    zGlobalCurried.Nested.f3c                 C   s   d S r"   r   r4   r   r   r   Úg3o   s    zGlobalCurried.Nested.g3N)r8   r9   r:   r/   r   r   r;   r<   r   r   r   r   ÚNestedf   s   
r=   N)r8   r9   r:   r/   r   r   r3   r'   r5   Úobjectr7   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rªdks°n t‚|dƒ}t 	t 
|¡¡}||k	sÔt‚| dd¡| dd¡  krødksþn 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rªdks°n 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   Úfuncr3   r7   r6   r=   r;   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*&rD   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)r8   r9   r:   r   r   r   r   ÚBad¼   s   rE   c                      s
   t  ˆ ¡S r"   )r   r
   r   ©rE   r   r   Ú<lambda>À   ó    z+test_curried_bad_qualname.<locals>.<lambda>)r   r   r>   r   r   ÚPicklingErrorr   r   r   rF   r   Útest_curried_bad_qualname»   s    rJ   )r   Ztoolz.curriedr   Ztoolz.utilsr   r   r   r   r   r!   r   r)   r+   r   r>   r,   rD   rJ   r   r   r   r   Ú<module>   s    	.H