U
    /e                     @   s6  d dl Z d dlmZ d dlZd dlmZmZmZmZm	Z	m
Z
mZmZmZmZmZ d dlmZmZmZ dd Zdd Zd	d
 Zdd ZG dd de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#G d%d& d&Z$d'd( Z%d)d* Z&d+d, Z'd-d. Z(d/d0 Z)d1d2 Z*d3d4 Z+dS )5    N)
namedtuple)flattengetget_dependenciesget_depsgetcycle	has_tasksistaskliteralpreorder_traversalquotesubs)GetFunctionTestMixinaddincc                    s   t  fdd| D S )zs

    >>> contains({'x': 1, 'y': 2}, {'x': 1})
    True
    >>> contains({'x': 1, 'y': 2}, {'z': 3})
    False
    c                 3   s    | ]\}}  ||kV  qd S N)r   ).0kva 8/tmp/pip-unpacked-wheel-dbjnr7gq/dask/tests/test_core.py	<genexpr>   s     zcontains.<locals>.<genexpr>)allitems)r   br   r   r   contains   s    r   c                  C   sL   t tdfstt drtt dr(ttdddg} t | tdrHtd S )N   )r      fxyr   )r	   r   AssertionErrorr   sum)r    r   r   r   test_istask!   s
    r%   c                  C   s   dddgddt dfgtdfgddgddgddgd} t| | d rFtt| | d sXtt| | d sjtt| | d s|tt| | d	 stt| | d
 std S )Nr   r      r   r   r   r   cder    r(   r)   r*   r    )r   r$   r   r#   dskr   r   r   test_has_tasks)   s    
r-   c                  C   s   t ddf} tt| t ddgks$tt t ddft ddff} tt| t t ddt ddgks\tt tddgfdf} tt| t ttdddgkstd S )Nr   r   r&      )r   listr   r#   r$   )tr   r   r   test_preorder_traversal:   s    
"r1   c                   @   s   e Zd ZeeZdS )TestGetN__name__
__module____qualname__staticmethodr   r   r   r   r   r2   C   s   r2   c                  C   sF   G dd dt } |  }tt|j G dd dt }| }|  d S )Nc                   @   s   e Zd Zedd ZdS )z:test_GetFunctionTestMixin_class.<locals>.TestCustomGetFailc                 S   s   dS )Nr   r   )r!   r"   r   r   r   <lambda>I       zCtest_GetFunctionTestMixin_class.<locals>.TestCustomGetFail.<lambda>Nr3   r   r   r   r   TestCustomGetFailH   s   r:   c                   @   s   e Zd ZeeZdS )z:test_GetFunctionTestMixin_class.<locals>.TestCustomGetPassNr3   r   r   r   r   TestCustomGetPassN   s   r;   )r   pytestraisesr#   Ztest_get)r:   Zcustom_testgetr;   r   r   r   test_GetFunctionTestMixin_classG   s    r>   c                  C   sR   ddt tdggfdfd} t| dddhks0ttt| dddddgksNtd S 	Nr   r   r!   r"   r!   r"   zrA   Tas_list)r   r   r   r#   sortedr+   r   r   r   test_get_dependencies_nestedU   s    rE   c                  C   s8   dt fi} t| dt kstt| dddg ks4td S )Nr!   TrB   )r   r   setr#   r+   r   r   r   test_get_dependencies_empty\   s    
rG   c                  C   sN   dddt dfggd} t| dddhks,ttt| dddddgksJtd S r?   )r   r   r#   rD   r+   r   r   r   test_get_dependencies_listb   s    rH   c                  C   sP   dddt dfggd} t| t dfddhks0tt| t dfdddgksLtd S )	Nr   r   r!   r"   r@   taskTrJ   rC   )r   r   r#   r+   r   r   r   test_get_dependencies_taskh   s    rL   c                	   C   s"   t t ti  W 5 Q R X d S r   )r<   r=   
ValueErrorr   r   r   r   r   test_get_dependencies_nothingn   s    rN   c                     s   dddgddt dfgtdfgdddgddgddgd  fd	d
dD } t | d}|dddhksftt | dd}t|dddgkstt g d}|t kstt g dd}|g kstd S )Nr   r   r&   r   r(   r   zzzr'   c                    s   g | ]} | qS r   r   )r   r   r+   r   r   
<listcomp>}   s     z.test_get_dependencies_many.<locals>.<listcomp>)r)   r    rI   TrK   )r   r$   r   r#   rD   rF   )Ztaskssr   r+   r   test_get_dependencies_manys   s     
	rR   c                  C   s&   dd i} t | | d dt ks"td S )NfoorI   )r   rF   r#   r+   r   r   r   test_get_dependencies_task_none   s    rT   c                  C   s   dddgddt dfgtdfgdddgddgddgd} t| \}}|t dht dhdhddhdksjt|dd	hd
d	hdht t t dkstd S )Nr   r   r&   r   r(   r   rO   r'   r    r*   r)   )r   r$   r   rF   r#   )r,   ZdependenciesZ
dependentsr   r   r   test_get_deps   s0    
rU   c                   C   s.   t tdg kstt tddgks*td S )Nr   rS   )r/   r   r#   r   r   r   r   test_flatten   s    rV   c                   C   sP   t tddgfddtddgfks$tt tddggfddtddggfksLtd S )Nr   r!   r   )r   r$   r#   r   r   r   r   	test_subs   s    $rW   c                   @   s   e Zd ZdZdd ZdS )
MutateOnEqr   c                 C   s   |  j d7  _ dS )Nr   F)hit_eqselfotherr   r   r   __eq__   s    zMutateOnEq.__eq__N)r4   r5   r6   rY   r]   r   r   r   r   rX      s   rX   c                  C   sD   t  } t| dd | jdks ttt| dfdd | jdks@td S )Nr!   r   r   )rX   r   rY   r#   r   r   r   r   r   test_subs_no_key_data_eq   s
    r^   c                     s   zdd l } W n tk
r"   Y d S X | j| ddgf}t|dd|kdksPtG dd dt G  fdd	d	}| }t|dd|kstd S )
Nr   r   r   )r.      Tc                   @   s   e Zd ZdS )z1test_subs_with_unfriendly_eq.<locals>.MyExceptionN)r4   r5   r6   r   r   r   r   MyException   s   r`   c                       s   e Zd Z fddZdS )z'test_subs_with_unfriendly_eq.<locals>.Fc                    s
     d S r   r   rZ   r`   r   r   r]      s    z.test_subs_with_unfriendly_eq.<locals>.F.__eq__N)r4   r5   r6   r]   r   ra   r   r   F   s   rb   )ZnumpyImportErrorr$   arrayr   r#   	Exception)nprJ   rb   r   ra   r   test_subs_with_unfriendly_eq   s    rg   c                  C   sD   zdd l } W n tk
r"   Y d S X |  }t|dd|ks@td S )Nr   r!   r   )Zpandasrc   Z	DataFramer   r#   )pdZdfr   r   r   'test_subs_with_surprisingly_friendly_eq   s    ri   c                      s6   G  fddd t t  f  dtdfks2td S )Nc                       s(   e Zd Zdd Zdd Z fddZdS )z@test_subs_unexpected_hashable_key.<locals>.UnexpectedButHashablec                 S   s
   d| _ d S )Nr   )namer[   r   r   r   __init__   s    zItest_subs_unexpected_hashable_key.<locals>.UnexpectedButHashable.__init__c                 S   s
   t | jS r   )hashrj   rk   r   r   r   __hash__   s    zItest_subs_unexpected_hashable_key.<locals>.UnexpectedButHashable.__hash__c                    s
   t | S r   )
isinstancerZ   UnexpectedButHashabler   r   r]      s    zGtest_subs_unexpected_hashable_key.<locals>.UnexpectedButHashable.__eq__N)r4   r5   r6   rl   rn   r]   r   rp   r   r   rq      s   rq   r   )r   idr#   r   r   rp   r   !test_subs_unexpected_hashable_key   s    
rs   c                  C   sZ   dddgt ddfdddggt dt ddffddig} | D ]}tdt|id|ks6tq6d S )Nr   r   r&   r!   )r   r   r   r#   )literalslr   r   r   
test_quote   s    2rv   c                  C   s2   t tddf} tt| jtddfks.td S )Nr   r   )r
   r   pickleloadsdumpsdatar#   )ru   r   r   r   test_literal_serializable   s    r{   c                  C   s  ddddddddddg
dddd	dd
ddddg
dd	ddddddddg
dddddddd	dd	g
ddddd
ddd	d
d	g
ddddddddddg
dddd
dddd
ddg
d
ddddddd	ddg
ddddddddd
dg
dddd
dd
ddd
dg
d
} t t| t| dkstd	ddddd
d	d	ddg
ddddddddddg
dddd	d dddddg
dd!dd
d dd"dddg
ddddddddd#dg
d dddd$dddd%dg
dddd dddddd g
dddddd
d"ddd
g
ddd&ddd dddd&g
d d'd ddd"d#d(ddg
d
} t t| t| dkstd S ))N      	   r&               r      r.   r_      r   r               
   )
r   r   r   r&   r.   r_   r   r|   r   r~            #               $      &   %   "   '   !                )lenr   r/   r#   r+   r   r   r   test_getcycle  s0    r   ),rw   collectionsr   r<   Z	dask.corer   r   r   r   r   r   r	   r
   r   r   r   Zdask.utils_testr   r   r   r   r%   r-   r1   r2   r>   rE   rG   rH   rL   rN   rR   rT   rU   rV   rW   rX   r^   rg   ri   rs   rv   r{   r   r   r   r   r   <module>   s8   4	
