B
    T\!                 @   s`  d dl Z d dlZd dlZd dlZd dlZd dlm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mZmZmZmZmZ d dl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$dd Z%dd Z&dd Z'dd Z(dd Z)d d! Z*ej+j,ed"d#d$d% Z-d&d' Z.d(d) Z/d*d+ Z0d,d- Z1d.d/ Z2d0d1 Z3d2d3 Z4d4d5 Z5dS )6    N)PY2)takes_multiple_argumentsDispatchrandom_state_datamemory_reprmethodcallerMskip_doctestSerializableLockfuncnamendeepmapensure_dictextra_titles
asciitable
itemgetterpartial_by_orderhas_keyword)inc)HighLevelGraphc              C   s   t tstt trtdd } G dd dt}G dd dt}t | sLtt |rXtt |sdtdd }t |rxtd	d
 }t |stt |ddrtd S )Nc             S   s
   | ||fS )N )abcr   r   4lib/python3.7/site-packages/dask/tests/test_utils.pymulti   s    z,test_takes_multiple_arguments.<locals>.multic               @   s   e Zd Zdd ZdS )z/test_takes_multiple_arguments.<locals>.Singularc             S   s   d S )Nr   )selfr   r   r   r   __init__   s    z8test_takes_multiple_arguments.<locals>.Singular.__init__N)__name__
__module____qualname__r   r   r   r   r   Singular   s   r    c               @   s   e Zd Zdd ZdS )z,test_takes_multiple_arguments.<locals>.Multic             S   s   d S )Nr   )r   r   r   r   r   r   r      s    z5test_takes_multiple_arguments.<locals>.Multi.__init__N)r   r   r   r   r   r   r   r   Multi   s   r!   c               S   s   d S )Nr   r   r   r   r   f%   s    z(test_takes_multiple_arguments.<locals>.fc              W   s   d S )Nr   )argsr   r   r   vararg*   s    z-test_takes_multiple_arguments.<locals>.varargF)Zvarargs)r   mapAssertionErrorsumobject)r   r    r!   r"   r$   r   r   r   test_takes_multiple_arguments   s    r)   c                 s   t    tdd   tdd   t fdd dd }  t|  G dd dt}| } d	d
kstt td	d
kst ddkst ||kst d	d|fd
d|fkst j| jkstd S )Nc             S   s   | d S )N   r   )r   r   r   r   <lambda>3   s    ztest_dispatch.<locals>.<lambda>c             S   s   | d S )Nr*   r   )r   r   r   r   r+   4   s    c                s   t  fdd| D S )Nc             3   s   | ]} |V  qd S )Nr   ).0i)foor   r   	<genexpr>5   s    z2test_dispatch.<locals>.<lambda>.<locals>.<genexpr>)tuple)r   )r.   r   r   r+   5   s    c             S   s   | S )z My Docstring r   )r   r   r   r   r"   7   s    ztest_dispatch.<locals>.fc               @   s   e Zd ZdS )ztest_dispatch.<locals>.BarN)r   r   r   r   r   r   r   Bar=   s   r1   r*      g      ?g        g       @)	r   registerintfloatr0   r(   r&   dispatch__doc__)r"   r1   r   r   )r.   r   test_dispatch1   s    r8   c              C   s0   t  } | tddd | ddddks,td S )	N
   c             S   s   | | S )Nr   )r   r   r   r   r   r+   K   s    z&test_dispatch_kwargs.<locals>.<lambda>r*      )r      )r9   )r   r3   r4   r&   )r.   r   r   r   test_dispatch_kwargsI   s    r<   c              C   sN   t  } | tdd  | tdd  | dddks8t| ddd	ksJtd S )
Nc             S   s   | | S )Nr   )r   r   r   r   r   r+   R   s    z:test_dispatch_variadic_on_first_argument.<locals>.<lambda>c             S   s   | | S )Nr   )r   r   r   r   r   r+   S   s    r*   r2      g      ?g       @)r   r3   r4   r5   r&   )r.   r   r   r   (test_dispatch_variadic_on_first_argumentP   s
    r?   c                 s   t    tdd  dd l} dd  d fdd} | jksRt | d	| d
ksnt d	d	ks~td S )Nc             S   s   | S )Nr   )r   r   r   r   r+   \   s    z$test_dispatch_lazy.<locals>.<lambda>r   c             S   s   | d S )Nr*   r   )r   r   r   r   foo_deca   s    z#test_dispatch_lazy.<locals>.foo_decdecimalc                 s   dd l }  | j d S )Nr   )rA   r3   Decimal)rA   )r.   r@   r   r   register_decimald   s    z,test_dispatch_lazy.<locals>.register_decimalr*   r2   )r   r3   r4   rA   Zregister_lazyr6   rB   r&   )rA   rC   r   )r.   r@   r   test_dispatch_lazyY   s    rD   c              C   s   d} t j| }d}t|| }t||ks.tt||}x4t||D ]&\}}|jdksZt||k sDtqDW tdd}tddd d }x&t||D ]\}}||k stqW d S )N%   i'  )ip  r9   i  r:   )	npZrandomZRandomStater   lenr&   zipshapeall)ZseedstatenZstatesZstates2s1s2r   r   r   test_random_state_datao   s    


rO   c              C   s6   x0t ddddgD ]\} }td|  |kstqW d S )Nz	1.0 bytesz1.0 KBz1.0 MBz1.0 GBi   )	enumerater   r&   )ZpowerZmem_reprr   r   r   test_memory_repr   s    rQ   c              C   s   dddddg} t d}|| d| dks.tt d|ks>ttj|ksLttt||ksdtdttksttdtt dkstdt	t dkstd S )Nr*   r2   r=   count)
r   rR   r&   r   pickleloadsdumpsdirstrrepr)r   r"   r   r   r   test_method_caller   s    rY   c              C   sH   d} t | }|dkstt d dks(td} d}t | }||ksDtd S )Nz!>>> xxx
>>>
>>> # comment
>>> xxxzE>>> xxx  # doctest: +SKIP
>>>
>>> # comment
>>> xxx  # doctest: +SKIP z"
>>> 1 + 2  # doctest: +ELLIPSES
3z)
>>> 1 + 2  # doctest: +ELLIPSES, +SKIP
3)r	   r&   )exampleresexpectedr   r   r   test_skip_doctest   s    
r^   c              C   s   d} d}t | |kstd S )NzR

    Notes
    -----
    hello

    Foo
    ---

    Notes
    -----
    bar
    z^

    Notes
    -----
    hello

    Foo
    ---

    Extra Notes
    -----------
    bar
    )r   r&   )r[   r]   r   r   r   test_extra_titles   s    r_   c              C   s&   t ddgddddg} | dks"td S )NZfruitZcolor)Zapplered)ZbananaZyellow)Ztomator`   )ZpearZgreenz+--------+--------+
| fruit  | color  |
+--------+--------+
| apple  | red    |
| banana | yellow |
| tomato | red    |
| pear   | green  |
+--------+--------+)r   r&   )r\   r   r   r   test_asciitable   s    ra   c        	      C   sf  t  } t  }|  W d Q R X |  | W d Q R X W d Q R X |  | drPtW d Q R X tt| }tt| }tt|}xH| |||gD ]8}x2| |||gD ]"}| |drtW d Q R X qW qW tt|}tt|}xl| |||gD ]\}xT|||gD ]F}| | W d Q R X W d Q R X | | W d Q R X W d Q R X qW qW d S )NF)r
   acquirer&   rS   rT   rU   )	r   r   Za2Za3Za4xyZb2Zb3r   r   r   test_SerializableLock   s4    
 re   c              C   s\   t d} t d}t d}t  }| j|jk	s.t| j|jks>t|j| j|j|jfksXtd S )Nr   r   )r
   lockr&   )r   r   r   dr   r   r   $test_SerializableLock_name_collision  s    rh   c           	   C   s@   t d} |  rt|  |  s&tW d Q R X |  r<td S )Nr   )r
   lockedr&   )r   r   r   r   test_SerializableLock_locked  s
    rj   z no blocking= keyword in Python 2)reasonc              C   s4   t d} | jddst| jddr(t|   d S )Nr   T)ZblockingF)r
   rb   r&   release)r   r   r   r   &test_SerializableLock_acquire_blocking  s    rm   c              C   s   dd } t | dkstt tj| dddks2tt tjdksDtt dd d	ksXtG d
d dt}t |dksxtdt | kstd S )Nc             S   s   d S )Nr   )r   r   r   r   r   r   r.      s    ztest_funcname.<locals>.foor.   r*   )r   r'   c               S   s   dS )Nr*   r   r   r   r   r   r+   &  s    ztest_funcname.<locals>.<lambda>lambdac               @   s   e Zd ZdS )ztest_funcname.<locals>.FooN)r   r   r   r   r   r   r   Foo(  s   ro   )r   r&   	functoolspartialr   r'   r(   )r.   ro   r   r   r   test_funcname  s    rr   c              C   s@   t d} | jdd }t|dks(tt|ddks<td S )Ntoolzc             S   s   d S )Nr   )r   r   r   r   r   r   r.   2  s    z test_funcname_toolz.<locals>.foor.   r*   )pytestimportorskipZcurryr   r&   )rs   r.   r   r   r   test_funcname_toolz/  s    
rv   c              C   sN   t d} | tttdd }t|dks0tttj|dddksJtd S )NZmultipledispatchc             S   s   d S )Nr   )r   r   r   r   r   r   r.   =  s    z+test_funcname_multipledispatch.<locals>.foor.   r*   )r   )rt   ru   r6   r4   r   r&   rp   rq   )mdr.   r   r   r   test_funcname_multipledispatch:  s    
rx   c              C   s   d} t dt| dkstdg} t dt| dks2tdddg} t dt| dddgksVtddgddgg} t dt| ddgddggkstddgdddggdgg gg} t dt| ddgdddggdgg ggkstd S )	Nr*   r   r2   r=               )r   r   r&   )Lr   r   r   test_ndeepmapE  s    
 r~   c              C   s   ddi} t | | ksttd| }tt |tks8tt || ksHtG dd dt}| }d|d< tt |tksztt || kstd S )Nrc   r*   c               @   s   e Zd ZdS )z test_ensure_dict.<locals>.mydictN)r   r   r   r   r   r   r   mydict]  s   r   )r   r&   r   Zfrom_collectionstypedict)rg   Zhlgr   rw   r   r   r   test_ensure_dictV  s    r   c              C   sT   dddg} t d}|| dks"ttt|}|| dksBt|jdksPtd S )Nr*   r2   r=   )r   r&   rS   rT   rU   index)datagZg2r   r   r   test_itemgetterf  s    
r   c               C   s   t dtjdgddkstd S )Nrz   )r*   r:   )Zfunctionother   )r   operatoraddr&   r   r   r   r   test_partial_by_ordero  s    r   c              C   sb   ddd} t | dstt | ds&tt | ds4ttj| dd}t |dsPtt |ds^td S )	Nc             S   s   d S )Nr   )r   r   r   r   r   r   r.   t  s    ztest_has_keyword.<locals>.foor   r   r   r*   )r   )N)r   r&   rp   rq   )r.   Zbarr   r   r   test_has_keywords  s    
r   )6rp   r   rS   ZnumpyrF   rt   Zdask.compatibilityr   Z
dask.utilsr   r   r   r   r   r   r	   r
   r   r   r   r   r   r   r   r   Zdask.utils_testr   Zdask.highlevelgraphr   r)   r8   r<   r?   rD   rO   rQ   rY   r^   r_   ra   re   rh   rj   ZmarkZskipifrm   rr   rv   rx   r~   r   r   r   r   r   r   r   r   <module>   s>   H	 #	