B
    T\              
   @   s  d dl Z d dlmZ d dlZd dlmZmZ d dlZd dlZej	j
dkZesped d dlmZmZmZmZ nejjddd	Zd d
lmZ d dlmZ d dlmZmZ edZdd Zdd Zddedfedfeddfe ddgfdZ!dd Z"dd Z#dd Z$dd  Z%d!d" Z&d#d$ Z'ej(d%d&efej)d'eejj*d(d	d)d*e+dfd+e+dfd,efgd-d. Z,ej(d%d&efej)d'eejj*d(d	d)d*e+dfd+e+dfd,efgd/d0 Z-d1d2 Z.d3d4 Z/d5d6 Z0dS )7    N)partial)addneg   Zgraphviz)	dot_graph
task_labellabelto_graphvizTz'graphviz exception with Python -OO flag)reason)delayed)ensure_not_exists)ImageSVGz.*\[label=(.*?) shape=(.*?)\]c             C   s   t | }|r|dS d S )N   )label_rematchgroup)linem r   2lib/python3.7/site-packages/dask/tests/test_dot.py	get_label   s    
r   c             C   s   t | }|r|dS d S )Nr   )r   r   r   )r   r   r   r   r   	get_shape   s    
r   r   abcde)r   r   r   r   r   fc               C   sL   t ttddfdkstt tdfdks.tt ttddffdksHtd S )Nr   r   r   zadd(...))r   r   r   AssertionErrorr   r   r   r   test_task_label-   s    r    c              C   s   t ddkstt ddks ti } t d| d}|dks<tt d| d}|dksTtt| dksdtt d| d}|dks|tt| d	kstt d| d}|dkstt| d	kstt d| ddkstt| d	kstd S )
Nxz)elemwise-ffcd9aa2231d466b5aa91e8bfa9e9487z
elemwise-#)cachezelemwise-#0r   z)elemwise-e890b510984f344edea9a5e5fe05c0dbzelemwise-#1r   )r   r   len)r"   resultr   r   r   
test_label3   s     r%   c              C   sv   t t} ttd tt| j}t|dks.tt	|dddddhksHtttd tt
| j}t	|t	dksrtd S )N
   r   r   r   r   z"")boxcircle)r	   dsklistfiltermapr   bodyr#   r   setr   )glabelsshapesr   r   r   test_to_graphvizK   s    r2   c              C   sz   t tdddiiddddid} ttd tt| j}|dd	d
ddhksLtttd tt	| j}t|tdksvtd S )Nr   shapesquarer   Zneg_cellipse)r   r3   )Zdata_attributesZfunction_attributesr   r   r   z"")r'   r(   r4   r5   )
r	   r)   r.   r+   r,   r   r-   r   r*   r   )r/   r0   r1   r   r   r   test_to_graphviz_customT   s    
r6   c               C   sp   t tjd dkstt tddjd dks0tt tddidjd dksNtt tddidjd dksltd S )	NrankdirZBTZLR)r7   ZcolorZwhite)	node_attr)	edge_attr)r	   r)   Z
graph_attrr   r8   r9   r   r   r   r   test_to_graphviz_attributes`   s    r:   c              C   sR   t ddd} ttd tt| j}t|dks4tt| jt| dksNtd S )Nr   r!   )r!   yr   )r	   r*   r+   r,   r   r-   r#   r   )r/   r0   r   r   r   test_aliasesg   s    r<   z
format,typpngjpegz jpeg not always supported in dot)Zmarksdotpdfsvgc             C   st   t | d}d||g}t| z@tt||d}tjdrDttj	|sTtt
||sbtW d t| X d S )Nz#$(touch should_not_get_created.txt).)filenameformatzshould_not_get_created.txt)strjoinr   r   r)   ospathexistsr   isfile
isinstance)tmpdirrD   typrC   targetr$   r   r   r   test_dot_graphn   s    
rO   c             C   s<   |   }ttd |d}|   }||ks*tt||s8td S )N)rC   rD   )listdirr   r)   r   rK   )rL   rD   rM   Zbeforer$   Zafterr   r   r   test_dot_graph_no_filename   s
    rQ   c              C   sX   d} d}d | |g}t| z*tt}tj|s8tt|t	sFtW d t| X d S )NZmydaskr=   rB   )
rF   r   r   r)   rG   rH   rJ   r   rK   r   )Zdefault_nameZdefault_formatrN   r$   r   r   r   test_dot_graph_defaults   s    rR   c        	      C   s   dddddg} dd dd d g}dddddg}t t td td td}x`t| ||D ]P\}}}||dd	  }tt||d
}tj	|st
t||st
t| qPW d S )NZ	mydaskpdfz
mydask.pdfzmydask.pdf.svgrA   zmydaskpdf.svgzmydaskpdf.png)r=   r>   r?   r@   rA   rB   )rC   rD   )r   typer   zipsplitr   r)   rG   rH   rJ   r   rK   r   )		filenamesZformatsZtargetsZresult_typesrC   rD   rN   Zexpected_result_typer$   r   r   r   test_filenames_and_formats   s    rX   c              C   sF   d	dd} t | ddd}t|j|j }d|ks6td|ksBtd S )
NTc             S   s   | | S )Nr   )r!   r;   r   r   r   r      s    z$test_delayed_kwargs_apply.<locals>.fr   r   )r;   r   Zapply)T)r   r   daskkeyr   )r   r!   r   r   r   r   test_delayed_kwargs_apply   s
    
r[   )1rG   	functoolsr   reoperatorr   r   sysZpytestflagsoptimizeZ	optimize2ZimportorskipZdask.dotr   r   r   r	   ZmarkZskipifZ
pytestmarkrY   r   Z
dask.utilsr   ZIPython.displayr   r   compiler   r   r   sumr)   r    r%   r2   r6   r:   r<   ZparametrizeZparamZxfailrT   rO   rQ   rR   rX   r[   r   r   r   r   <module>   sX   

	



