B
    *d|X  ã               @   sª   d dl T d dl Z d dlZ d dlZd dlmZmZ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e jG dd„ deƒƒZdd„ Zdd„ ZdS )é    )Ú*N)ÚPY3ÚPY33ÚPY34)Ú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.7/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   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funcs)r   r   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   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   )ÚpZp2r   r   r   Útest_instanceproperty%   s    r!   c             C   s   | |fS )Nr   )ÚxÚyr   r   r   r   0   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_flip4   s    ,r'   c              C   s(   t  t  tjj¡¡} | tjjks$t‚d S )N)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 )N)r"   r#   )Úselfr"   r#   r   r   r   Ú__init__G   s    zGlobalCurried.__init__c             C   s   | j | j | | S )N)r"   r#   )r+   ÚaÚbr   r   r   Úf1K   s    zGlobalCurried.f1c             C   s   d S )Nr   )r+   r   r   r   r%   O   s    zGlobalCurried.g1c             C   s   t | j| jffS )z0Allow us to serialize instances of GlobalCurried)r*   r"   r#   )r+   r   r   r   Ú
__reduce__R   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 )N)r"   r#   )r+   r"   r#   r   r   r   r,   X   s    z$GlobalCurried.NestedCurried.__init__c             C   s   | j | j | | S )N)r"   r#   )r+   r-   r.   r   r   r   Úf2\   s    zGlobalCurried.NestedCurried.f2c             C   s   d S )Nr   )r+   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#   )r+   r   r   r   r0   c   s    z&GlobalCurried.NestedCurried.__reduce__N)	Ú__name__Ú
__module__Ú__qualname__r,   r   r   r1   r&   r0   r   r   r   r   r2   V   s   r2   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 )N)r"   r#   )r+   r"   r#   r   r   r   r,   h   s    zGlobalCurried.Nested.__init__c             C   s   | j | j | | S )N)r"   r#   )r+   r-   r.   r   r   r   Úf3l   s    zGlobalCurried.Nested.f3c             C   s   d S )Nr   )r+   r   r   r   Úg3p   s    zGlobalCurried.Nested.g3N)r3   r4   r5   r,   r   r   r6   r7   r   r   r   r   ÚNestedg   s   r8   N)r3   r4   r5   r,   r   r   r/   r%   r0   Úobjectr2   r8   r   r   r   r   r*   E   s   r*   c        	      C   sÀ  t sd S dd„ } | tƒst‚| tjjƒs,t‚| tjjƒs<t‚| tjjjjƒsPt‚| tjjjƒsbt‚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	s6t‚|dƒ|dƒ  krVdks\n t‚tj d¡}t	 
t	 |¡¡}||k	s†t‚|dƒ dd¡|dƒ dd¡  kr¶dks¼n t‚d S )Nc             S   s   t  t  | ¡¡| kS )N)r   r   r   )Úobjr   r   r   Úpreserves_identityx   s    z1test_curried_qualname.<locals>.preserves_identityr   r   r   é   é
   )r   r*   r   Úfuncr/   r2   r1   r8   r6   r   r   r   )	r;   Zglobal_curried1Zglobal_curried2Zglobal_curried3Zglobal_curried4Zfunc1Zfunc2Znested_curried1Znested_curried2r   r   r   Útest_curried_qualnamet   s0    2.&r?   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)r3   r4   r5   r   r   r   r   ÚBad¿   s   r@   c                  s
   t  ˆ ¡S )N)r   r   r   )r@   r   r   Ú<lambda>Ã   s    z+test_curried_bad_qualname.<locals>.<lambda>)r   r   r9   r   r   ZPicklingErrorr   r   r   )r@   r   Útest_curried_bad_qualname¾   s    rB   )r   Ztoolz.curriedr   Ztoolz.compatibilityr   r   r   Ztoolz.utilsr   r   r   r   r   r!   r   r'   r)   r   r9   r*   r?   rB   r   r   r   r   Ú<module>   s"   	.J