
    bi/                    z   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j                  d      Zd dlmZmZ ej"                  j$                  dk7  r ej                  d       d d	lmZmZmZmZ nej.                  j1                  d
d      Zd dlmZ d dlmZ 	 d dlmZm Z  dZ!ej.                  j1                  e!d      Z# ejH                  d      Z%d Z&d Z'dde
dfe
dfe	ddfe(ddgfdZ)d Z*d Z+d Z,d Z-d  Z.d! Z/d" Z0d# Z1d$ Z2d% Z3d& Z4d' Z5d( Z6d) Z7d* Z8ej.                  js                  d+ ejt                  d,e e#-       ejt                  d.e ej.                  jw                  d/d0      -      d1 e<d      fd2 e<d      f ejt                  d3ee#-      g      ej.                  jw                  ejz                  d4k(  d5d0      d6               Z>ej.                  js                  d+ ejt                  d,e e#-       ejt                  d.e ej.                  jw                  d/d0      -      d1 e<d      fd2 e<d      f ejt                  d3ee#-      g      ej.                  jw                  ejz                  d4k(  d5d0      d7               Z?e#ej.                  jw                  ejz                  d4k(  d5d0      d8               Z@d9 ZAej.                  js                  d: ejt                  d;d3d<ee#-      d=dd= e<d      f ejt                  d=d3d>ee#-       ejt                  d;dd?e e#-       ejt                  d>dd>ee#-      g      ej.                  jw                  ejz                  d4k(  d5d0      d@               ZBdA ZCej.                  js                  dBeeg      dC        ZDy# e"$ r
 d
Z!dZ dZY 
w xY w)D    )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                T    t         j                  |       }|r|j                  d      S y N   label_rematchgrouplinems     N/home/cdr/jupyterlab/.venv/lib/python3.12/site-packages/dask/tests/test_dot.py	get_labelr    +   &    tAwwqz 	    c                T    t         j                  |       }|r|j                  d      S y )Nr
   r   r   s     r   	get_shaper$   1   r!   r"   r   abcde)r%   r&   r'   r(   r)   fc                     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 y )Nr   r   r
   zadd(...))r   r   r    r"   r   test_task_labelr-   A   sU    wsA*+u444sAh5(((sS!QK()Z777r"   c                    t        d      dk(  sJ t        d      dk(  sJ i } t        d|       }|dk(  sJ t        d|       }|dk(  sJ t        |       dk(  sJ t        d|       }|dk(  sJ t        |       d	k(  sJ t        d|       }|dk(  sJ t        |       d	k(  sJ t        d|       dk(  sJ t        |       d	k(  sJ y )
Nxz)elemwise-ffcd9aa2231d466b5aa91e8bfa9e9487z
elemwise-#)cachezelemwise-#0r   z)elemwise-e890b510984f344edea9a5e5fe05c0dbzelemwise-#1r
   )r   len)r0   results     r   
test_labelr3   G   s    :<=MMME>eLF]""">eLF]"""u:??>eLF]"""u:??>eLF]"""u:??E"c)))u:??r"   c            	     >   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(  sJ y )N
   >   r'   r(   r)   r*   ""boxcircle
r   dsklistfiltermapr    bodyr1   setr$   glabelsshapess      r   test_to_graphvizrD   _   s    CA&s9aff567Fv;"v;4444&s9aff567Fv;5(++++r"   c            	     $   t        t        dddiiddddi      } t        t        d t	        t
        | j                                    }|h d	k(  sJ t        t        d t	        t        | j                                    }t        |      h d
k(  sJ y )Nr%   shapesquarer'   neg_cellipse)r   rF   )data_attributesfunction_attributes>   r(   r)   r*   rH   r6   >   r7   r8   rG   rI   )	r   r:   r?   r<   r=   r    r>   r;   r$   r@   s      r   test_to_graphviz_customrL   h   s    w12 Gi"HI	A
 c)QVV456F3333&s9aff567Fv;@@@@r"   c                b   t        t        t        j                  | dz        ddddddidd	i
      }|j                  }|j
                  }t        d |D              d   }t        d |D              d   }|d   dk(  sJ |d   d	k(  sJ |d   dk(  sJ |d   dk(  sJ |d   dk(  sJ |d   dk(  sJ y )Nmydask.htmlLR      r
   z
line-colorredzbackground-colorgreen)filenamerankdirnode_sepedge_sepspacing_factor
edge_style
node_stylec              3  2   K   | ]  }|d    dk(  s|  yw)selectornodeNr,   .0ss     r   	<genexpr>z.test_cytoscape_graph_custom.<locals>.<genexpr>        >!a
mv&=A>   stylec              3  2   K   | ]  }|d    dk(  s|  yw)r\   edgeNr,   r^   s     r   ra   z.test_cytoscape_graph_custom.<locals>.<genexpr>   rb   rc   rankDirnodeSepedgeSepspacingFactor)r	   r:   osfsdecodecytoscape_stylecytoscape_layoutnext)tmp_pathrA   stylayoutnode_styedge_stys         r   test_cytoscape_graph_customru   t   s    X56 %(&0		A 

CF>s>>wGH>s>>wGHL!U***&'7222)$$$)""")"""/"a'''r"   c                 R   t        j                  d       ddlm}   | dt              j                  d      }|j                  j                  d   j                  d    | dt              j                  dd	      }t        fd
|j                  j                  D              sJ y )Nzmatplotlib.pyplotr   )Delayedr*   	cytoscape)enginecolororder)ry   rz   c              3  B   K   | ]  }|j                   d    k7    yw)rz   N)data)r_   n
init_colors     r   ra   z-test_cytoscape_graph_color.<locals>.<genexpr>   s     Dqvvg*,Ds   )
pytestimportorskipdask.delayedrw   r:   	visualizegraphnodesr}   any)rw   rA   r   s     @r   test_cytoscape_graph_colorr      s    
+,$S##;#7Aq!&&w/JS##;g#FADaggmmDDDDr"   c                     t        t              j                  d   dk(  sJ t        t        d      j                  d   dk(  sJ t        t        ddi      j                  d   dk(  sJ t        t        ddi      j                  d   dk(  sJ y )	NrU   BTrO   )rU   rz   white)	node_attr)	edge_attr)r   r:   
graph_attrr   r   r,   r"   r   test_to_graphviz_attributesr      s    s&&y1T999sD)44Y?4GGGsw&89CCGLPWWWWsw&89CCGLPWWWWr"   c            	         t        ddd      } t        t        d t        t        | j
                                    }t        |      dk(  sJ t        | j
                        t        |      z
  dk(  sJ y )Nr   r/   r/   yr
   )r   r;   r<   r=   r    r>   r1   )rA   rB   s     r   test_aliasesr      s^    !#&'A&s9aff567Fv;!qvv;V$)))r"   c            	     B   t        t        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(  sJ y )NTverboser5   >   r%   r&   r'   r(   r)   r*   r7   r8   r9   r@   s      r   test_to_graphviz_verboser      s    C&A&s9aff567Fv;"v;8888&s9aff567Fv;5(++++r"   c                     t        t        d      } t        t        d | d               }t	        |      dk(  sJ t        |      h dk(  sJ t        t        d | d               }t        |      dd	hk(  sJ y )
NTr   c                    | d   d   S Nr}   r   r,   r/   s    r   <lambda>z1test__to_cytoscape_json_verbose.<locals>.<lambda>       &	' 2 r"   r   r5   >   r%   r&   r'   r(   r)   r*   c                    | d   d   S Nr}   rF   r,   r   s    r   r   z1test__to_cytoscape_json_verbose.<locals>.<lambda>   r   r"   rI   	rectangler   r:   r;   r=   r1   r?   r}   rB   rC   s      r   test__to_cytoscape_json_verboser      sv    c40D#2DMBCFv;"v;8888#2DMBCFv;9k2222r"   c            	     B   t        t        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(  sJ y )NTcollapse_outputs   >   r'   r(   r)   r*   r6   r7   r8   r9   r@   s      r   !test_to_graphviz_collapse_outputsr      s    C$/A&s9aff567Fv;!v;4444&s9aff567Fv;5(++++r"   c                     t        t        d      } t        t        d | d               }t	        |      dk(  sJ t        |      h dk(  sJ t        t        d | d               }t        |      dd	hk(  sJ y )
NTr   c                    | d   d   S r   r,   r   s    r   r   z:test__to_cytoscape_json_collapse_outputs.<locals>.<lambda>   r   r"   r   r   >    r'   r(   r)   r*   c                    | d   d   S r   r,   r   s    r   r   z:test__to_cytoscape_json_collapse_outputs.<locals>.<lambda>   r   r"   rI   r   r   r   s      r   (test__to_cytoscape_json_collapse_outputsr      sv    cD9D#2DMBCFv;!v;2222#2DMBCFv;9k2222r"   c            	     D   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(  sJ y )NTr   r   r   >   r%   r&   r'   r(   r)   r*   r7   r8   r9   r@   s      r   -test_to_graphviz_collapse_outputs_and_verboser      s    C$=A&s9aff567Fv;!v;8888&s9aff567Fv;5(++++r"   c                     t        t        dd      } t        t        d | d               }t	        |      dk(  sJ t        |      h dk(  sJ t        t        d | d               }t        |      dd	hk(  sJ y )
NTr   c                    | d   d   S r   r,   r   s    r   r   zFtest__to_cytoscape_json_collapse_outputs_and_verbose.<locals>.<lambda>   r   r"   r   r   >   r%   r&   r'   r(   r)   r*   c                    | d   d   S r   r,   r   s    r   r   zFtest__to_cytoscape_json_collapse_outputs_and_verbose.<locals>.<lambda>   r   r"   rI   r   r   r   s      r   4test__to_cytoscape_json_collapse_outputs_and_verboser      sx    cD$GD#2DMBCFv;!v;8888#2DMBCFv;9k2222r"   c            	        t         j                         } d| d<   t        | d      }t        t	        d t        t        |j                                    }t        |      dk(  sJ t        |      h dk(  sJ t        t         dd      }t        t	        d t        t        |j                                    }t        |      dk(  sJ t        |      h d	k(  sJ y )
N   rA   Tr      >   r%   r&   r'   r(   r)   r*   rA   )r   r   r   >   r%   r&   r'   r(   r)   r*   )
r:   copyr   r;   r<   r=   r    r>   r1   r?   )dsk2rA   rB   s      r   &test_to_graphviz_with_unconnected_noder      s    88:DDID$'A&s9aff567Fv;"v;====C=A&s9aff567Fv;!v;8888r"   z
format,typpng)marksjpegz jpeg not always supported in dot)r   strictdotpdfsvgwin32z:graphviz/pango on conda-forge currently broken for windowsc                r   t        | j                  d            }dj                  ||g      }t        |       	 t        t        ||      }t
        j                  j                  d      rJ t
        j                  j                  |      sJ t        ||      sJ 	 t        |       y # t        |       w xY w)Nz#$(touch should_not_get_created.txt).rT   formatzshould_not_get_created.txt)
strjoinr   r   r:   rk   pathexistsisfile
isinstance)tmpdirr   typrT   targetr2   s         r   test_dot_graphr      s    0 6;;DEFHXXx()Ff"3&A77>>">???ww~~f%%%&#&&&&!&!s   A"B) )B6c                    | j                         }t        t        d |      }| j                         }||k(  sJ t        ||      sJ y Nr   )listdirr   r:   r   )r   r   r   beforer2   afters         r   test_dot_graph_no_filenamer     sF    , ^^FsT&9FNNEU??fc"""r"   c                    d} d}dj                  | |g      }t        |       	 t        t              }t        j
                  j                  |      sJ t        |t              sJ 	 t        |       y # t        |       w xY w)Nmydaskr   r   )	r   r   r   r:   rk   r   r   r   r   )default_namedefault_formatr   r2   s       r   test_dot_graph_defaultsr   .  so     LNXX|^45Ff"3ww~~f%%%&%(((&!&!s   AA3 3B c                "   t        | j                  d            }t        |       	 t        t        |      }t
        j                  j                  |      sJ t        |t        j                        sJ 	 t        |       y # t        |       w xY w)NrN   )r   r   r   r	   r:   rk   r   r   r   r   CytoscapeWidget)r   r   r2   s      r   test_cytoscape_graphr   C  sl    ]+,Ff" f-ww~~f%%%&,">">???&!&!s   AB Bz+filename,format,target,expected_result_type	mydaskpdfzmydaskpdf.svgz
mydask.pdfzmydask.pdf.svgzmydaskpdf.pngc                    t        t        t        | j                  |            |      }| j                  |      j	                         sJ t        ||      sJ y r   )r   r:   r   r   r   r   )r   rT   r   r   expected_result_typer2   s         r   test_filenames_and_formatsr   N  sL    8 sSX)>%?OF;;v%%'''f2333r"   c                     dd}  t        |       dd      }t        |j                  |j                           }d|v sJ d|vsJ y )Nc                    | |z   S )Nr,   r   s     r   r*   z$test_delayed_kwargs_apply.<locals>.fp      1ur"   r   r
   )r   r*   apply)T)r   r   daskkey)r*   r/   r   s      r   test_delayed_kwargs_applyr   o  sK     	
1Aqvvaee}%E%<<%r"   viz_funcc                    d }|df|dft         ddfd}di i}di i}t        j                  |      }t        j                  |      } | |||       ||k(  sJ ||k(  sJ y )Nc                    | dz   S r   r,   r   s    r   incz&test_immutable_attributes.<locals>.inc{  r   r"   r   r
   r%   r&   )r%   r&   r'   )rK   rJ   )r   r   deepcopy)r   r   r:   
attrs_func
attrs_dataattrs_func_testattrs_data_tests          r   test_immutable_attributesr   y  s     aQxsCo
>CrJrJmmJ/OmmJ/O&" j(((j(((r"   )E
__future__r   r   rk   resys	functoolsr   operatorr   r   r   r   r   dask.dotr   r	   flagsoptimizer   r   r   r   markskipif
pytestmarkr   r   
dask.utilsr   IPython.displayr   r   ipython_not_installedImportErroripython_not_installed_markcompiler   r    r$   sumr:   r-   r3   rD   rL   ru   r   r   r   r   r   r   r   r   r   r   parametrizeparamxfailtypeplatformr   r   r   r   r   r   r   r,   r"   r   <module>r
     s[   "  	 	 
   "v"">2 899F
#BB##> $ J  ("* "#[[//"9 0   2::67 
	

s
s
sC
Sz	80,	A(2EX*,3,3,39 UE)CD++##9% $ 	
 
T
	T
UC'AB  LLGG  
"!*"" UE)CD++##9% $ 	
 
T
	T
UC'AB  LLGG  
#!*# LLGG  
" "" 1<V	
 
t\4:6%!13>X	
 	=W	
 	,	
, LLGG  
4-64  k3E%FG) H)}
   E
Cs   %N+ +N:9N: