U
    /eS-                  	   @   s\  d dl Z d dlZd dlZd dlmZmZ d dlZd dlmZm	Z	m
Z
 d dlmZ d dlmZ d dlmZmZ d dlmZ zd dlZW n ek
r   dZY nX zd dlZW n ek
r   dZY nX e	 Zdd	ed
dfed
dfeddfdZdd	ed
dfdZdd Zdd Zdd Zejddd Zejddd Z dd Z!ej"de	ej#dd ejdd egd!d" Z$ejd#d$d% Z%ejd#d&d' Z&ejd#d(d) Z'ejd#ejdd*d+ Z(ejd#d,d- Z)ejd#d.d/ Z*ejd#ejdd0d1 Z+ejd#d2d3 Z,ejd#d4d5 Z-ejd#d6d7 Z.dS )8    N)addmul)CacheProfilerProfilerResourceProfiler)BOKEH_VERSION)get)applytmpfile)slowadd      abcd)r   r   r   r   er   r   r   c               	   C   s   t  ttd} W 5 Q R X | dks&ttt jdd d}dd |D }|dd	dgksXtd
d |D }|tddftddftdd	fgkstt   t jg kstd S )Nr      c                 S   s   | j S Nkey)r    r   H/tmp/pip-unpacked-wheel-dbjnr7gq/dask/diagnostics/tests/test_profiler.py<lambda>"       ztest_profiler.<locals>.<lambda>r   c                 S   s   g | ]
}|j qS r   r   .0ir   r   r   
<listcomp>#   s     z!test_profiler.<locals>.<listcomp>r   r   c                 S   s   g | ]
}|j qS r   )taskr   r   r   r   r   %   s     r   r   )	profr   dskAssertionErrorsortedresultsr   r   clear)outZ	prof_datakeysZtasksr   r   r   test_profiler   s    $r)   c               
   C   s   dd } | ddf| ddf| ddfd}t t  t t|d	 W 5 Q R X W 5 Q R X td
d tjD sntttjdkstd S )Nc                 S   s   | | S r   r   xyr   r   r   r   ,   r   z1test_profiler_works_under_error.<locals>.<lambda>r   r+   r   r,   r   )r+   r,   zr-   c                 s   s   | ]}t |d kV  qdS    N)len)r   vr   r   r   	<genexpr>3   s     z2test_profiler_works_under_error.<locals>.<genexpr>)	
contextlibsuppressZeroDivisionErrorr!   r   allr%   r#   r0   )divr"   r   r   r   test_profiler_works_under_error+   s    r8   c               	   C   s   t  ttd W 5 Q R X tt j} tddftddfd}t  t|d W 5 Q R X tt j}t $ ttd t|d ttd W 5 Q R X tt j| | |  kstd S )Nr   r   r   r+   r*   r,   )r!   r   r"   r0   r%   r   r#   )ndsk2mr   r   r   test_two_gets7   s    



r<   z
not psutilc               	   C   s   t dd} ttd W 5 Q R X | j}t|dks6ttdd |D sLt|  rXt|   | jg ksnt| 	  |  rt|  ttd W 5 Q R X t| jdkstd S )N{Gz?dtr   r   c                 s   s$   | ]}t |tot|d kV  qdS    N
isinstancetupler0   r   r   r   r   r2   P   s     z)test_resource_profiler.<locals>.<genexpr>)
r   r   r:   r%   r0   r#   r6   _is_runningr&   closerprofr%   r   r   r   test_resource_profilerJ   s    rI   c               	   C   s   t dd,} ttd t| jdks(tttd W 5 Q R X | j}tdd |D sXt|   |   ttd t| jdkstttd | 	  | j}tdd |D st| 
  |  rtd S )Nr=   r>   r   r   c                 s   s$   | ]}t |tot|d kV  qdS r@   rB   r   r   r   r   r2   i   s     z7test_resource_profiler_multiple_gets.<locals>.<genexpr>c                 s   s$   | ]}t |tot|d kV  qdS r@   rB   r   r   r   r   r2   s   s     )r   r   r:   r0   r%   r#   r6   r&   register
unregisterrF   rE   rG   r   r   r   $test_resource_profiler_multiple_getsb   s     


rL   c               	      s   t  } ttd W 5 Q R X | j}tdd |D s8t|   | jg ksNtdg  fdd}t |} ttd W 5 Q R X | j} d t|kst d |d jkst| j	dkstt |d	d
j	d	kstd S )Nr   c                 s   s$   | ]}t |tot|d kV  qdS r.   rB   r   r   r   r   r2   }   s     z&test_cache_profiler.<locals>.<genexpr>r   c                    s    d  d7  <  d S )Nr   r   r   )resZticsr   r   nbytes   s    z#test_cache_profiler.<locals>.nbytesrO   foo)metricmetric_name)
r   r   r:   r%   r6   r#   r&   r0   rR   Z_metric_name)cprofr%   rO   r   rN   r   test_cache_profilery   s    
rU   profilerc                   C   s
   t ddS )Nr=   r>   )r   r   r   r   r   r      r   r   )Zmarksc                 C   s^   |  }zH|  ttd t|j}|dks0tttd t|j|ksLtW 5 |   X d S )Nr   r   )rK   rJ   r   r:   r0   r%   r#   )rV   r!   r9   r   r   r   test_register   s    


rW   z	not bokehc                  C   s   ddl m}  dddd}tddgddgd	dggf}| ||ksBtdddgddd}tddddggddgd	dggf}| ||kstdddg}dddg}| ||kstd S )
Nr   )unquoter   r   rA   r   r   r   r   )"dask.diagnostics.profile_visualizerX   dictr#   )rX   tZ	task_daskr   r   r   test_unquote   s     

r\   c               
   C   s  ddl m}  dddddh}| tddf|d	ks2t| ttddff|d
ksNtd}| tddtddfgf||kstt| tdf|dkstt| tt|d f|dk st| tt|d f|dkst| tddtddgfddgd f|dkst| tddtdtdddgfgfddgf|dks*tddd}t|tddgft	dddggddggff}| ||dksptt|tddgft	dddggddggff}| ||dkstd S )Nr   )pprint_taskr   r   r   r   r   r   z	add(_, *)zadd(add(_, *))zsum([*, _, add(_, *)]))r   r   rA      r/   r      zsum(*)d   zsum([_, _, _, ...])r   r^   r/   r   zsum([*, *, sum([_, *]), ...])rA   z$sum([*, *, sum([_, sum(...)]), ...])r   c                 S   s   | | t | | S r   )sum)wr+   r,   r-   r   r   r   rQ      s    ztest_pprint_task.<locals>.foor,   r-   zfoo(_, _, y=[_, _], z=_)zfoo(_, _, y=[_, *], z=*))r   rA   )
rY   r]   r   r#   ra   r0   listr	   rD   rZ   )r]   r(   rM   rQ   r    r   r   r   test_pprint_task   s,    """(
((rd   c               	   C   s   t  ttd W 5 Q R X t jddddddd} t jdk rZ| jdksJt| jdksvtn| j	dksht| j
dksvtt| jd	kstt| jd
 tjjst| jjdkstt   tjdd}t jddd W 5 Q R X |rtd S )Nr     ,  hoverNot the defaultFwidthheighttoolstitleshowsaverA   r   r   Trecordrn   ro   )r!   r   r"   	visualizer   major
plot_widthr#   plot_heightrj   rk   r0   rl   rC   bokehmodels	HoverToolrm   textr&   warningscatch_warnings)prq   r   r   r   test_profiler_plot   s,    r~   c               
   C   sz  t dd} ttd W 5 Q R X | jddddddd	}t jd
k r`|jdksPt|jdks|tn|j	dksnt|j
dks|tt|jdkstt|jd tjjst|jjdkst|   g dgfD ]}|| _tjdd}| jddd}W 5 Q R X |rt|jjdkst|jjdks&t|jjdks8t|jjdksJt|jd jdks`t|jd jdkstqd S )Nr=   r>   r   re   rf   rg   rh   Fri   rA   r   r   )g      ?r   r   Trp   rr   r`   Zmemory)r   r   r:   rs   r   rt   ru   r#   rv   rj   rk   r0   rl   rC   rw   rx   ry   rm   rz   r&   r%   r{   r|   Zx_rangestartendZy_rangeZextra_y_ranges)rH   r}   r%   rq   r   r   r   test_resource_profiler_plot   s<    
r   c               	   C   s  t dd} ttd W 5 Q R X | jddddddd	}t jd
k r`|jdksPt|jdks|tn|j	dksnt|j
dks|tt|jdkstt|jd tjjst|jjdkst|jd jdkst|   tjdd}| jddd W 5 Q R X |rtd S )Nnon-standardrS   r   re   rf   rg   rh   Fri   rA   r   r   zCache Size (non-standard)Trp   rr   )r   r   r"   rs   r   rt   ru   r#   rv   rj   rk   r0   rl   rC   rw   rx   ry   rm   rz   Zaxis
axis_labelr&   r{   r|   )rT   r}   rq   r   r   r   test_cache_profiler_plot  s.    r   c               	   C   sJ   t dd} ttd W 5 Q R X tjtdd | jdd W 5 Q R X d S )Nr   r   r   foo_bar)matchZfake)r   )r   r   r"   pytestZraisesAttributeErrorrs   )rT   r   r   r   >test_cache_profiler_plot_with_invalid_bokeh_kwarg_raises_error:  s    r   c               
   C   s  ddl m}  tdd }t ttd W 5 Q R X W 5 Q R X | t|gddddd	}t jd
k rvdd |jd jD }ndd |jD }t	|dkst
|d jjdkst
|d jd jd kst
|d jd kst
|d jd jdkst
t  |  | t|gddd d S )Nr   )rs   r=   r>   r   2   rh   F)Z
label_sizerm   rn   ro   rA   c                 S   s   g | ]}|d  qS r   r   r   rr   r   r   r   P  s     z&test_plot_multiple.<locals>.<listcomp>r   c                 S   s   g | ]}|d  qS r   r   r   r   r   r   r   R  s     r   zTime (s)rr   )rY   rs   r   r!   r   r:   r   rt   childrenr0   r#   rm   rz   Zxaxisr   r&   )rs   rH   r}   Zfiguresr   r   r   test_plot_multipleB  s,        r   c               
   C   sx   t df} t ttd W 5 Q R X tjd| d tj| sBtt	| }d|
  ks`tW 5 Q R X W 5 Q R X d S )Nhtmlr   F)rn   filename)r
   r!   r   r"   rs   ospathexistsr#   openreadlower)fnfr   r   r   test_saves_file^  s    

r   c               
   C   s   t d} t ttd W 5 Q R X tt}tjd| d W 5 Q R X dt|  kr`dksfn t	dt
|d jks|t	t|dkrd	t
|d
 jkst	W 5 Q R X d S )Nr   r   F)rn   	file_pathr   r   z(file_path keyword argument is deprecatedrP   z/`np.bool8` is a deprecated alias for `np.bool_`r   )r
   r!   r   r"   r   ZwarnsFutureWarningrs   r0   r#   strmessage)r   rq   r   r   r   test_saves_file_path_deprecatedk  s    
r   c                     s0  ddl m} m}m} ddlm} ttd}|d|}t|t|k sJt	t
t|dks^t	ttd}|d|}tt||  | fdd|D kst	dd	dd	dd	g}|d
|}t
t|dkst	ttd}|d|}t
t|dkst	ttd}|d|}t
t|t
t|d ks,t	d S )Nr   )Blues5Blues256Viridis)
get_colors   ZBluesr/   c                    s   g | ]} | qS r   r   r   Zlkr   r   r     s     z#test_get_colors.<locals>.<listcomp>r   ZBrBGr   r`   r   rf      )Zbokeh.palettesr   r   r   rY   r   rc   rangesetr#   r0   rZ   zip)r   r   r   r   funcsZcmapr   r   r   test_get_colors~  s&    




r   )/r3   r   r{   operatorr   r   r   Zdask.diagnosticsr   r   r   rY   r   Zdask.threadedr   Z
dask.utilsr	   r
   Zdask.utils_testr   rw   ImportErrorZpsutilr!   r"   r:   r)   r8   r<   markZskipifrI   rL   rU   ZparametrizeparamrW   r\   rd   r~   r   r   r   r   r   r   r   r   r   r   r   <module>   sz   

"



 










%










