
    tf$                       d dl mZ d dlZd dlZd dlZd dlmZ d dlm	Z	 d dl
Z
d dlZd dlmZ d dlmZmZ d dlmZmZmZmZ d dlmZ d	 Zd
 Zd Zd Zd Zd Zd Zd Zd Z e
jB                  jE                  dddide ig      d        Z#d Z$d Z%d Z&d Z'e
jB                  jE                  dddg      d        Z(d Z)d  Z*d! Z+y)"    annotationsN)Set)ThreadPoolExecutor)tokenize)	Blockwiseblockwise_token)HighLevelGraphLayerMaterializedLayerto_graphviz)incc                T   t        j                  d       t        j                  d       t        j                  d      }t        |       }|j                  dd      }|dz   }|dz   }||z   }|j                  j                  |       t        j                  j                  |      sJ y )	Nnumpygraphviz
dask.array
      chunks      )	pytestimportorskipstronesdask	visualizeospathexists)tmpdirdafnabcds          c/var/www/html/software/conda/envs/higlass/lib/python3.12/site-packages/dask/tests/test_highgraph.pytest_visualizer+      s    
 

#			\	*B	VB
4 A	AA	AA	AAFFR77>>"    c                     ddi} dt         dfi}| |d}t               dhd}t        ||      }t        |      dt         dfdk(  sJ t	        d |j
                  j                         D              sJ y )Nxr   yr&   r'   r&   r.   r/   c              3  <   K   | ]  }t        |t                y w)N)
isinstancer   ).0layers     r*   	<genexpr>ztest_basic.<locals>.<genexpr>'   s     HEz%'Hs   )r   setr
   dictalllayersvaluesr&   r'   r:   dependencieshgs        r*   
test_basicr?      sy    	aA	sCjA1FcU+L		-B8Qc3Z0000HRYY5E5E5GHHHHr,   c                 8   t        j                  d       t        j                  d      } | j                  dd      }|dz   }|dz   }||z   }|j                  }|j	                         |j                         |j                         }}}t        |t              sJ t        |      t        |      k(  sJ t        |      |D 	cg c]  }	||	   	 c}	k(  sJ t        |      t        t        ||            k(  sJ |j                         t        |      k(  sJ y c c}	w )Nr   r   r   r   r   r   r   )r   r   r   r   keysr;   itemsr3   r   listzipto_dictr8   )
r$   r&   r'   r(   r)   r>   rA   r;   rB   is
             r*   &test_keys_values_items_to_dict_methodsrG   *   s    
 			\	*B
4 A	AA	AA	AA	
B'')RYY["((*%&DdC   :b!!!<2.aBqE....;$s401111::<48### /s   Dc                    t        ddddddidt               t               d      } | d   dk(  sJ | d	   dk(  sJ | d
   dk(  sJ | d   dk(  sJ dD ])  }t        j                  t              5  | |    d d d        +  G d d      } |        |       ffD ])  }t        j                  t
              5  | |    d d d        + y # 1 sw Y   {xY w# 1 sw Y   BxY w)Nr   r      r&   r&   r   r'   r(      r0   r&   rK   r'   )r)    r    c                      e Zd ZdZy) test_getitem.<locals>.UnhashableN)__name__
__module____qualname____hash__rN   r,   r*   
UnhashablerP   L   s    r,   rU   )r
   r7   r   raisesKeyError	TypeError)r>   krU   s      r*   test_getitemrZ   ;   s    	+3(;35su=U
B c7a<<f:??c7a<<c7a<< ]]8$ 	qE	 	  lZ\O, ]]9% 	qE	 		 		 	s   /C4CC	C	c                     t        ddiddiddht               d      } | j                          | j                  sJ | j	                         }dD ]'  }t        | |      }t        ||      }||usJ ||k(  r'J  y )Nr&   r'   r   r0   )r:   r=   key_dependencies)r
   r7   get_all_dependenciesr\   copygetattr)h1h2rY   v1v2s        r*   	test_copyrd   T   s    	CjQx(e#% 
B 	B; R^R^||Rxx	r,   c                     dt         dfd} t        d| idt               i      }|j                  dh      }t	        |      ddik(  sJ |j                  dggg      }t	        |      | k(  sJ y )Nr   r.   r1   r&   r/   )r   r
   r7   cullr8   )r&   r>   culled_by_xculled_by_ys       r*   	test_cullri   c   su    sCj!A	a3,	/B''3%.Ka((( ''SE7)$K!!!r,   c                    t        ddddddddidddddd	d
ddhdht               t               t               d
      } t        | j                  j                         D ci c]  \  }}|dk7  s|t	        |       c}}| j
                  j                         D ci c]  \  }}|dk7  s|t        |       c}}      }| j                  ddg      }|j                  |j                  k(  sJ |j
                  |j
                  k(  sJ |j                  D ]B  }|j                  |   | j                  |   u sJ |j
                  |   | j
                  |   u rBJ  y c c}}w c c}}w )Nd1e1)a1a2r)   r   )r'   
dontcull_b
dontcull_c)r)   
dontcull_d)e
dontcull_e)r&   r'   r(   r)   rr   rr   r(   r&   r'   )r
   r7   r:   rB   r8   r=   cull_layers)r>   rY   vexpectculleds        r*   test_cull_layersrx   o   sY   	D)!,"**	
 Cju35su35I	
B  "		 1>1Q#XDG>!446Ctq!!s(CFCF
 ^^S#J'F==FMM)))&"5"5555]] <}}Q299Q<///""1%);;;;< 	?Cs   $E
2E
 E%.E%c                    t        j                  d       t        ddddddidt               t               d      } t        j
                  j                  j                  | j                               J | j                  j                         D ];  }t        j
                  j                  j                  |j                               ;J  y )	Njinja2r   r   rI   rJ   r(   rL   r0   )r   r   r
   r7   xmletreeElementTree
fromstring_repr_html_r:   r;   )r>   r5   s     r*   test_repr_html_hlg_layersr      s    
!	+3(;e#% 
B 99  ++BNN,<=III!!# Qyy$$//0A0A0CDPPPQr,   c                    | dd  S )Nr   rN   )keys    r*   annot_map_fnr      s    qr7Nr,   
annotationworkeraliceblock_idc                n   t        j                  d       t        j                  d      }t        j                  di | 5  |j	                  dd      }d d d        j                         j                  |j                     }|j                  | k(  sJ t        j                         rJ y # 1 sw Y   XxY w)Nr   r   r   r   r   r   r   rN   )
r   r   r   annotater   __dask_graph__r:   namer   get_annotations)r   r$   Aalayers       r*   test_single_annotationr      s      			\	*B		$	$ -GGHVG,- &&qvv.F+++##%%%%- -s    B++B4c                    t        j                  d       t        j                  d      } t        j                  t              5  t        j                  ddi      5  | j                  dd	      }d d d        dz   }d d d        dz   }t        j                         rJ j                         j                  |j                     }|j                         j                  |j                     }|j                         j                  |j                     }|j                  ddit        d
k(  sJ |j                  dt        ik(  sJ |j                  J y # 1 sw Y   xY w# 1 sw Y   xY w)Nr   r   )r   GPUr   )	resourcesr   r   r   )r   r   r   )r   r   r   r   r   r   r   r   r:   r   r   )r$   r   BCr   blayerclayers          r*   test_multiple_annotationsr      s?   
 			\	*B		- ]]eQZ0 	10A	1 E	 	
AA##%%%&&qvv.F&&qvv.F&&qvv.Fqz|!TTTT*l!;;;;%%%	1 	1 s$   E#E2E#E 	E##E,c                    t        j                  d      5  t        j                  t              5  t        j                  d      5  t        j
                         ddik(  sJ ddz   d d d        d d d        t        j
                         ddik(  sJ 	 d d d        t        j
                         rJ y # 1 sw Y   LxY w# 1 sw Y   PxY w# 1 sw Y   8xY w)Nr   )r.   r   r.   r   )r   r   r   rV   ZeroDivisionErrorr   rN   r,   r*    test_annotation_cleared_on_errorr      s    		 2]],- 	# ++-#q999A	 ##%#q1112 ##%%%%	 	 	2 2s:   CC !B4)C 1#C4B=9C  C		CCc                     t        dddddi      } | j                  dhg       \  }}t        |      dk(  sJ |j                  ddik(  sJ y )	N*   gQ	@r0   foobarr   r&   r   )r   rf   lenr   )r5   culled_layer_s      r*   1test_materializedlayer_cull_preserves_annotationsr      s^    tENE
 jj#+OL!|!!!##u~555r,   c                 J   t        j                  d      t        j                  d      fd} t        d      5 }|j                  | d      }|j                  | d      }|j	                         |j	                         g}ddd       ddiddigk(  sJ y# 1 sw Y   xY w)z^Annotations shouldn't leak between threads.
    See https://github.com/dask/dask/issues/10340.r   c                    t        j                  |       5  j                          t        j                         }j                          |cd d d        S # 1 sw Y   y xY w)N)r   )r   r   waitr   )noutb1b2s     r*   fz test_annotations_leak.<locals>.f   sG    ]]q! 	GGI&&(CGGI		 	 	s   6AA!r   Nr   )	threadingBarrierr   submitresult)r   exf1f2r   r   r   s        @@r*   test_annotations_leakr      s     
		1	B			1	B 
A	 ,"YYq!_YYq!_))+ryy{+, uaj5!*----	, ,s   ABB"flatTFc                   t        j                  d      }t        j                  d      }| r4|j                  |j                  d      j	                  d      d      dz   }n|j                  |j                  d      j	                  d      d	      }|j                  |j                  d      j	                  d      d	      }|j                  ||      j                         }|j                         }d
}|j                  g|h}|j                  |      }|j                  j                         D ]  \  }	}
t        |
t        j                  j                        s4t        |j                  |	   t        j                  j                        rJ ^t        |j                  |	   t        j                  j                        sJ |
j!                         rJ |
j#                         }||
j$                  g|hk(  sJ |
j!                         sJ  y )Nr   r   (   )rL   r   )r   rL   d   r   )r   )rL   r   r   )r   r   
from_arrayarangereshapeouter	transposer   _namerf   r:   rB   r3   r   	blockwiser   is_materializedget_output_keysoutput)r   npr$   r.   r/   dskselectrA   dsk_cullr   r5   out_keyss               r*   test_blockwise_cullr      s   			W	%B			\	*B MM"))B-//8&ACG MM"))B-//6=MM"))B-//6=HHQN$$& 


CFWWvDxx~H,,. 	+e%!9!9:!#**T"2DNN4L4LMMM#**T*DNN,D,DEEE((***((*U\\3F34444((***	+r,   c            
        ddi} t        dt        d      dt        d      ggidi ddd	
      }t        |      t        |j	                               k(  sJ | |d}t               dhd}t        ||      }|j                  d   j                         sJ |j                  d   j                         rJ t        |      t        |       t        |      z   cxk(  rdk(  sJ  J |j                  d   j                         rJ y )Nr.   r   r'   ijr   rN   )r   r   r   r   )rF   j)r   output_indicesr   indices	numblocksnew_axesr0   r&      )	r   tupler	   r   r   r7   r
   r:   r   r<   s        r*   test_len_does_not_materializer   
  s    	aAT{OA&'() v.	A q6S**,----1FcU+L		-B99S>))+++yy~--///r7c!fs1vo******yy~--////r,   c                    t        j                  d       t        j                  d      } t        j                  d       | j                  dd      }||j                  z   }|j	                  d      }|j
                  }t        |      }|j                  D ]Q  }d	|v sd
|v sJ |j                  d      t        d      z   }|j                  d|      }||| }	t        |	      dkD  rQJ  y )Nr   r   r   )  r   )r   r   r   r   )axislabeltooltipz	tooltip=""r   )
r   r   r   Tsumr   r   bodyfindr   )
r$   r&   r'   r(   r>   gr5   startendr   s
             r*   test_node_tooltips_existr   "  s    
 			\	*B

#
Z0A	ACCA	1A	
BBA $e%%%JJ{+c+.>>E**S%(CE#&Gw<!###$r,   c                    dd l m}  | j                  t        t	        d            d      j                         }| j                  t        t	        d            d      j                         }| j                  t        t	        d            d      j                         }t        |j                        t        |j                        k(  sJ t        |j                        t        |j                        k7  sJ y )Nr   r   r   )npartitionsrI   )dask.bagbagfrom_sequencerC   rangemaxr   r   )dbr&   r'   r(   s       r*   test_tokenize_hlgr   7  s    
eBia8<<>A
eBia8<<>A
eBia8<<>AAFFx////AFFx////r,   ),
__future__r   r    r   xml.etree.ElementTreer{   collections.abcr   concurrent.futuresr   r   r   	dask.baser   dask.blockwiser   r	   dask.highlevelgraphr
   r   r   r   dask.utils_testr   r+   r?   rG   rZ   rd   ri   rx   r   r   markparametrizer   r   r   r   r   r   r   r   r   rN   r,   r*   <module>r      s    " 	    1    5 U U 
I$"2	"<6Q 	7	\"&&&*&6.( $/+ 0+@00$*0r,   