o
    Nrf/                     @  s  d dl m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
 d dlZedZd dlmZmZ ejjdkrMe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 z
d dlmZm Z  W n e!yz   d
Z"dZ dZY nw dZ"ejje"dd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/d*d+ Z0d,d- Z1d.d/ Z2d0d1 Z3d2d3 Z4d4d5 Z5d6d7 Z6d8d9 Z7d:d; Z8ej9d<ej:d=e e#d>ej:d?e ejj;d@ddAd>dBe<dfdCe<dfej:dDee#d>gejj;ej=dEkdFddAdGdH Z>ej9d<ej:d=e e#d>ej:d?e ejj;d@ddAd>dBe<dfdCe<dfej:dDee#d>gejj;ej=dEkdFddAdIdJ Z?e#ejj;ej=dEkdFddAdKdL Z@dMdN ZAej9dOej:dPdDdQee#d>dRddRe<dfej:dRdDdSee#d>ej:dPddTe e#d>ej:dSddSee#d>gejj;ej=dEkdFddAdUdV ZBdWdX ZCej9dYeegdZd[ ZDdS )\    )annotationsN)partial)addnegipycytoscape)_to_cytoscape_jsoncytoscape_graph   graphviz)	dot_graphlabel
task_labelto_graphvizTz'graphviz exception with Python -OO flag)reason)delayed)ensure_not_exists)SVGImageFzIPython not installedz.*\[label=(.*?) shape=(.*?)\]c                 C     t | }|r|dS d S N   label_rematchgrouplinem r   \/var/www/html/software/conda/envs/catlas/lib/python3.10/site-packages/dask/tests/test_dot.py	get_label+      

r    c                 C  r   )Nr	   r   r   r   r   r   	get_shape1   r!   r"   r   abcde)r#   r$   r%   r&   r'   fc                   C  sL   t ttddfdksJ t tdfdksJ t ttddffdks$J d S )Nr   r   r	   zadd(...))r   r   r   r   r   r   r   test_task_labelA   s   r)   c                  C  s   t ddksJ t ddksJ i } t d| d}|dksJ t d| d}|dks*J t| dks2J t d| d}|dks>J t| d	ksFJ t d| d}|dksRJ t| d	ksZJ t d| ddksdJ t| d	kslJ d S )
Nxz)elemwise-ffcd9aa2231d466b5aa91e8bfa9e9487z
elemwise-#)cachezelemwise-#0r   z)elemwise-e890b510984f344edea9a5e5fe05c0dbzelemwise-#1r	   )r   len)r+   resultr   r   r   
test_labelG   s    r.   c                  C  sp   t t} ttd tt| j}t|dksJ t|h dks!J ttd tt	| j}t|ddhks6J d S )N
      r(   r%   r'   r&   ""boxcircle
r   dsklistfiltermapr    bodyr,   setr"   glabelsshapesr   r   r   test_to_graphviz_   s   r?   c                  C  st   t tdddiiddddid} ttd tt| j}|h d	ks#J ttd tt| j}t|h d
ks8J d S )Nr#   shapesquarer%   neg_cellipse)r   r@   )data_attributesfunction_attributes>   r(   rB   r'   r&   r1   >   r2   rC   r3   rA   )	r   r5   r:   r7   r8   r    r9   r6   r"   r;   r   r   r   test_to_graphviz_customh   s   
rF   c              
   C  s   t tt| d ddddddidd	id
}|j}|j}tdd |D d }tdd |D d }|d dks9J |d d	ksAJ |d dksIJ |d dksQJ |d dksYJ |d dksaJ d S )Nmydask.htmlLR      r	   z
line-colorredzbackground-colorgreen)filenamerankdirZnode_sepZedge_sepZspacing_factorZ
edge_styleZ
node_stylec                 s       | ]}|d  dkr|V  qdS )selectornodeNr   .0sr   r   r   	<genexpr>       z.test_cytoscape_graph_custom.<locals>.<genexpr>stylec                 s  rO   )rP   edgeNr   rR   r   r   r   rU      rV   ZrankDirZnodeSepZedgeSepZspacingFactor)r   r5   osfsdecodeZcytoscape_styleZcytoscape_layoutnext)Ztmp_pathr<   ZstyZlayoutZnode_styZedge_styr   r   r   test_cytoscape_graph_customt   s(   
r\   c                    sp   t d ddlm}  | dtjdd}|jjd jd  | dtjddd	}t	 fd
d|jjD s6J d S )Nzmatplotlib.pyplotr   )Delayedr(   Z	cytoscape)enginecolororder)r^   r_   c                 3  s    | ]
}|j d   kV  qdS )r_   N)data)rS   nZ
init_colorr   r   rU      s    z-test_cytoscape_graph_color.<locals>.<genexpr>)
pytestimportorskipZdask.delayedr]   r5   Z	visualizegraphnodesra   any)r]   r<   r   rc   r   test_cytoscape_graph_color   s   
"ri   c                   C  sp   t tjd dksJ t tddjd dksJ t tddidjd dks'J t tddidjd dks6J d S )	NrN   ZBTrH   )rN   r_   white)	node_attr)	edge_attr)r   r5   Z
graph_attrrk   rl   r   r   r   r   test_to_graphviz_attributes   s   "rm   c                  C  sR   t ddd} ttd tt| j}t|dksJ t| jt| dks'J d S )Nr   r*   r*   yr	   )r   r6   r7   r8   r    r9   r,   )r<   r=   r   r   r   test_aliases   s   rp   c                  C  t   t tdd} ttd tt| j}t|dksJ t|h dks#J ttd tt	| j}t|ddhks8J d S )NTverboser/      r$   r(   r%   r'   r&   r#   r2   r3   r4   r;   r   r   r   test_to_graphviz_verbose      ru   c                  C  t   t tdd} ttdd | d }t|dksJ t|h dks#J ttdd | d }t|d	d
hks8J d S )NTrr   c                 S     | d d S Nra   r   r   r*   r   r   r   <lambda>       z1test__to_cytoscape_json_verbose.<locals>.<lambda>rg   r/   rt   c                 S  rx   Nra   r@   r   rz   r   r   r   r{      r|   rC   	rectangler   r5   r6   r8   r,   r:   ra   r=   r>   r   r   r   test__to_cytoscape_json_verbose   rv   r   c                  C  rq   )NTcollapse_outputs   r0   r2   r3   r4   r;   r   r   r   !test_to_graphviz_collapse_outputs   rv   r   c                  C  rw   )NTr   c                 S  rx   ry   r   rz   r   r   r   r{      r|   z:test__to_cytoscape_json_collapse_outputs.<locals>.<lambda>rg   r   >    r(   r%   r'   r&   c                 S  rx   r}   r   rz   r   r   r   r{      r|   rC   r~   r   r   r   r   r   (test__to_cytoscape_json_collapse_outputs   rv   r   c                  C  sv   t tddd} ttd tt| j}t|dksJ t|h dks$J ttd tt	| j}t|ddhks9J d S )NTr   rs   r   rt   r2   r3   r4   r;   r   r   r   -test_to_graphviz_collapse_outputs_and_verbose      r   c                  C  sv   t tddd} ttdd | d }t|dksJ t|h dks$J ttdd | d }t|d	d
hks9J d S )NTr   c                 S  rx   ry   r   rz   r   r   r   r{      r|   zFtest__to_cytoscape_json_collapse_outputs_and_verbose.<locals>.<lambda>rg   r   rt   c                 S  rx   r}   r   rz   r   r   r   r{      r|   rC   r~   r   r   r   r   r   4test__to_cytoscape_json_collapse_outputs_and_verbose   r   r   c                  C  s   t  } d| d< t| dd}ttd tt|j}t|dks!J t	|h dks+J tt ddd}ttd tt|j}t|dksEJ t	|h d	ksOJ d S )
N   r<   Trr      >   r$   r(   r%   r'   r<   r&   r#   )rs   r   r   rt   )
r5   copyr   r6   r7   r8   r    r9   r,   r:   )Zdsk2r<   r=   r   r   r   &test_to_graphviz_with_unconnected_node   s   r   z
format,typpng)ZmarksZjpegz jpeg not always supported in dot)r   strictdotZpdfsvgwin32z:graphviz/pango on conda-forge currently broken for windowsc                 C  sz   t | d}d||g}t| z%tt||d}tjdr"J tj|s*J t	||s1J W t| d S t| w )Nz#$(touch should_not_get_created.txt).rM   formatzshould_not_get_created.txt)
strjoinr   r   r5   rY   pathexistsisfile
isinstance)tmpdirr   typrM   targetr-   r   r   r   test_dot_graph   s   r   c                 C  s<   |   }ttd |d}|   }||ksJ t||sJ d S Nr   )listdirr   r5   r   )r   r   r   beforer-   afterr   r   r   test_dot_graph_no_filename  s
   r   c                  C  s^   d} d}d | |g}t| ztt}tj|sJ t|ts#J W t| d S t| w )NZmydaskr   r   )	r   r   r   r5   rY   r   r   r   r   )default_namedefault_formatr   r-   r   r   r   test_dot_graph_defaults.  s   r   c                 C  sZ   t | d}t| ztt|}tj|sJ t|t	j
s!J W t| d S t| w )NrG   )r   r   r   r   r5   rY   r   r   r   r   ZCytoscapeWidget)r   r   r-   r   r   r   test_cytoscape_graphC  s   
r   z+filename,format,target,expected_result_typeZ	mydaskpdfzmydaskpdf.svgz
mydask.pdfzmydask.pdf.svgzmydaskpdf.pngc                 C  s<   t tt| ||d}| | sJ t||sJ d S r   )r   r5   r   r   r   r   )r   rM   r   r   Zexpected_result_typer-   r   r   r   test_filenames_and_formatsN  s   r   c                  C  sF   d	dd} t | ddd}t|j|j }d|v sJ d|vs!J d S )
NTc                 S  s   | | S )Nr   rn   r   r   r   r(   p     z$test_delayed_kwargs_apply.<locals>.fr   r	   )ro   r(   apply)T)r   r   daskkey)r(   r*   r   r   r   r   test_delayed_kwargs_applyo  s
   
r   viz_funcc                 C  sp   dd }|df|dft ddfd}di i}di i}t|}t|}| |||d ||ks0J ||ks6J d S )	Nc                 S  s   | d S r   r   rz   r   r   r   inc{  r   z&test_immutable_attributes.<locals>.incr   r	   r#   r$   )r#   r$   r%   )rE   rD   )r   r   deepcopy)r   r   r5   Z
attrs_funcZ
attrs_dataZattrs_func_testZattrs_data_testr   r   r   test_immutable_attributesy  s   

r   )E
__future__r   r   rY   resys	functoolsr   operatorr   r   rd   re   r   Zdask.dotr   r   flagsoptimizer   r   r   r   markZskipifZ
pytestmarkr   r   Z
dask.utilsr   IPython.displayr   r   ImportErrorZipython_not_installedZipython_not_installed_markcompiler   r    r"   sumr5   r)   r.   r?   rF   r\   ri   rm   rp   ru   r   r   r   r   r   r   ZparametrizeparamZxfailtypeplatformr   r   r   r   r   r   r   r   r   r   r   <module>   s   




							



	



