
    Cd                     f   d dl mZ d dlZd dlZd dlmZ d dlZd dl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j                            dddideig          d             Zd Zd Z d Z!ej                            dddg          d             Z"d Z#d Z$dS )    annotationsN)Set)	Blockwiseblockwise_token)HighLevelGraphLayerMaterializedLayerto_graphviz)incc                6   t          j        d           t          j        d          }t          |           }|                    dd          }|dz   }|dz   }||z   }|j                            |           t          j                            |          sJ d S )Ngraphviz
dask.array
      chunks      )	pytestimportorskipstronesdask	visualizeospathexists)tmpdirdafnabcds          9lib/python3.11/site-packages/dask/tests/test_highgraph.pytest_visualizer(      s    

###		\	*	*B	VB
4  A	AA	AA	AAFR7>>"    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                                        D                       sJ d S )Nxr   yr#   r$   r#   r+   r,   c              3  @   K   | ]}t          |t                    V  d S )N)
isinstancer	   ).0layers     r'   	<genexpr>ztest_basic.<locals>.<genexpr>#   s,      HHEz%''HHHHHHr)   )r   setr   dictalllayersvaluesr#   r$   r7   dependencieshgs        r'   
test_basicr<      s    	aA	sCjA1FcU++L		-	-B88Qc3Z000000HHRY5E5E5G5GHHHHHHHHHHr)   c                 d   t          j        d          } |                     dd          }|dz   }|dz   }||z   }|j                                                                                                        }}}t          |t                    sJ t          |          t                    k    sJ t          |          fdD             k    sJ t          |          t          t          ||                    k    sJ                                 t                    k    sJ d S )Nr   r   r   r   r   r   c                     g | ]
}|         S  r?   )r1   ir;   s     r'   
<listcomp>z:test_keys_values_items_to_dict_methods.<locals>.<listcomp>1   s    ...aBqE...r)   )r   r   r   r   keysr8   itemsr0   r   listzipto_dictr5   )	r!   r#   r$   r%   r&   rB   r8   rC   r;   s	           @r'   &test_keys_values_items_to_dict_methodsrG   &   s   		\	*	*B
4  A	AA	AA	AA	
B''))RYY[["((**%&DdC     ::b!!!!<<....2.......;;$s400111111::<<488######r)   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            n# 1 swxY w Y   < G d d          } |             |            ffD ];}t          j        t
                    5  | |          d d d            n# 1 swxY w Y   <d S )Nr   r      r#   r#   r   r$   r%      r-   r#   rK   r$   )r&    r   r?   c                      e Zd ZdZdS ) test_getitem.<locals>.UnhashableN)__name__
__module____qualname____hash__r?   r)   r'   
UnhashablerO   G   s        r)   rT   )r   r4   r   raisesKeyError	TypeError)r;   krT   s      r'   test_getitemrY   6   s   	++3(;;355suu=U=U
 
B c7a<<<<f:????c7a<<<<c7a<<<<  ]8$$ 	 	qEE	 	 	 	 	 	 	 	 	 	 	 	 	 	 	        jllZZ\\O,  ]9%% 	 	qEE	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 s$   
	BB#	&B#	(	C==D	D	c                    t          ddiddiddht                      d          } |                                  | j        sJ |                                 }dD ]0}t          | |          }t          ||          }||usJ ||k    sJ 1d S )Nr#   r$   r   r-   )r7   r:   key_dependencies)r   r4   get_all_dependenciesr[   copygetattr)h1h2rX   v1v2s        r'   	test_copyrc   O   s    	CjQx((e#%%  
 
B 	B;  R^^R^^||||Rxxxxx	 r)   c                    dt           dfd} t          d| idt                      i          }|                    dh          }t	          |          ddik    sJ |                    dggg          }t	          |          | k    sJ d S )Nr   r+   r.   r#   r,   )r   r   r4   cullr5   )r#   r;   culled_by_xculled_by_ys       r'   	test_cullrh   ^   s    sCj!!A	a3,	/	/B''3%..Ka(((( ''SE7)$$K!!!!!!r)   c            	     F   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          d | j                                        D             d | j                                        D                       }|                     ddg          }|j        |j        k    sJ |j        |j        k    sJ |j        D ]:}|j        |         | j        |         u sJ |j        |         | j        |         u sJ ;d S )Nd1e1)a1a2r&   r   )r$   
dontcull_b
dontcull_c)r&   
dontcull_d)e
dontcull_e)r#   r$   r%   r&   rq   rq   c                @    i | ]\  }}|d k    |t          |          S r%   )r5   r1   rX   vs      r'   
<dictcomp>z$test_cull_layers.<locals>.<dictcomp>x   s)    >>>1Q#XXDGGXXXr)   c                @    i | ]\  }}|d k    |t          |          S rt   )r4   ru   s      r'   rw   z$test_cull_layers.<locals>.<dictcomp>y   s)    CCCtq!!s((CFF(((r)   r#   r$   )r   r4   r7   rC   r:   cull_layers)r;   expectculledrX   s       r'   test_cull_layersr|   j   s`   	D))!,,"****	
 	
 Cju355suu355II	
 	
B >>	 1 1>>>CCr4466CCC F
 ^^S#J''F=FM))))&"55555] < <}Q29Q<////"1%);;;;;;< <r)   c                    t          j        d           t          ddddddidt                      t                      d          } t          j        j                            |                                           J | j	        
                                D ]:}t          j        j                            |                                          J ;d S )	Njinja2r   r   rI   rJ   r%   rL   r-   )r   r   r   r4   xmletreeElementTree
fromstring_repr_html_r7   r8   )r;   r2   s     r'   test_repr_html_hlg_layersr      s    
!!!	++3(;;ee#%%  
 
B 9 ++BNN,<,<==III!!## Q Qy$//0A0A0C0CDDPPPPQ Qr)   c                    | dd          S )Nr   r?   )keys    r'   annot_map_fnr      s    qrr7Nr)   
annotationworkeraliceblock_idc                T   t          j        d          }t          j        di | 5  |                    dd          }d d d            n# 1 swxY w Y   |                                j        |j                 }|j        | k    sJ t          j	        
                    dd           J d S )Nr   r   r   r   r   r   r   r?   )r   r   r   annotater   __dask_graph__r7   namer   configget)r   r!   Aalayers       r'   test_single_annotationr      s     
	\	*	*B		$	$	$	$ - -GGHVG,,- - - - - - - - - - - - - - - &qv.F++++;??=$//77777s   A

AAc                    t          j        d          } t          j        t                    5  t          j        ddi          5  |                     dd          }d d d            n# 1 swxY w Y   |dz   }d d d            n# 1 swxY w Y   |dz   }t          j                            d	d           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 d S )Nr   )r   GPUr   )	resourcesr   r   r   r   )r   r   r   )r   r   r   r   r   r   r   r   r   r7   r   r   )r!   r   BCr   blayerclayers          r'   test_multiple_annotationsr      s   		\	*	*B		-	-	-  ]eQZ000 	1 	100A	1 	1 	1 	1 	1 	1 	1 	1 	1 	1 	1 	1 	1 	1 	1 E	               	
AA;??=$//777&qv.F&qv.F&qv.Fqz|!T!TTTTT*l!;;;;;%%%%%s5   BA+B+A/	/B2A/	3BBBc                 b   t           j                            ddi          5  t          j        d          5  t           j                            d          dk    sJ t           j                            d          ddik    sJ t          j        d          5  t           j                            d          dk    sJ t           j                            d          dddk    sJ 	 d d d            n# 1 swxY w Y   d d d            n# 1 swxY w Y   d d d            d S # 1 swxY w Y   d S )	Nfoor   r   )r   r   rI   )bar)r   r   )r   r   r4   r   r   r?   r)   r'   $test_annotation_and_config_collisionr      s   	%	$	$ N N]q!!! 	N 	N;??5))Q....;??=11eQZ????1%%% N N{u--2222{}5519M9MMMMMMN N N N N N N N N N N N N N N	N 	N 	N 	N 	N 	N 	N 	N 	N 	N 	N 	N 	N 	N 	NN N N N N N N N N N N N N N N N N NsZ   D$A"DAC5)D5C99D<C9=D D$D	D$D	D$$D(+D(c                     t          dddddi          } |                     dhg           \  }}t          |          dk    sJ |j        ddik    sJ d S )	N*   gQ	@r-   r   r   r   r#   r   )r
   re   lenr   )r2   culled_layer_s      r'   1test_materializedlayer_cull_preserves_annotationsr      sz    tEN  E
 jj#++OL!|!!!!#u~555555r)   flatTFc                Z   t          j        d          }t          j        d          }| r@|                    |                    d                              d          d          dz   }n|                    |                    d                              d          d	          }|                    |                    d                              d          d	          }|                    ||                                          }|                                }d
}|j        g|R h}|	                    |          }|j
                                        D ]\  }	}
t          |
t          j        j                  s-t          |j
        |	         t          j        j                  rJ Qt          |j
        |	         t          j        j                  sJ |
                                rJ |
                                }||
j        g|R hk    sJ |
                                rJ d S )Nr   numpy(   )rL   r   )r   rL   d   r   )r   )rL   r   r   )r   r   
from_arrayarangereshapeouter	transposer   _namere   r7   rC   r0   r   	blockwiser   is_materializedget_output_keysoutput)r   r!   npr+   r,   dskselectrB   dsk_cullr   r2   out_keyss               r'   test_blockwise_cullr      s   		\	*	*B		W	%	%B 	' MM"))B--//88&AACG MM"))B--//66==MM"))B--//66==HHQNN$$&& 



CFWvDxx~~H,,.. 	+ 	+e%!9:: 	!#*T"2DN4LMMMMM#*T*DN,DEEEEE((*****((**U\3F3344444((******	+ 	+r)   c            
     l   ddi} t          dt          d          dt          d          ggidi ddd	
          }t          |          t          |                                          k    sJ | |d}t                      dhd}t          ||          }|j        d                                         sJ |j        d                                         rJ t          |          t          |           t          |          z   cxk    rdk    sn J |j        d                                         rJ d S )Nr+   r   r$   ijr   r?   )r   r   r   r   )r@   j)r   output_indicesr   indices	numblocksnew_axesr-   r#      )	r   tupler   r   r   r4   r   r7   r   r9   s        r'   test_len_does_not_materializer      sI   	aAT{{OA&&'() v..	 	 	A q66S**,,------1FcU++L		-	-B9S>))+++++y~--/////r77c!ffs1vvo**********y~--///////r)   c                    t          j        d          } t          j        d           |                     dd          }||j        z   }|                    d          }|j        }t          |          }|j        D ]f}d|v r`d	|v sJ |                    d
          t          d
          z   }|                    d|          }|||         }	t          |	          dk    sJ gd S )Nr   r   )  r   )r   r   r   r   )axislabeltooltipz	tooltip=""r   )
r   r   r   Tsumr   r   bodyfindr   )
r!   r#   r$   r%   r;   gr2   startendr   s
             r'   test_node_tooltips_existr     s    		\	*	*B

###
Z00A	ACA	1A	
BBA $ $e%%%%JJ{++c+.>.>>E**S%((CE#I&Gw<<!####$ $r)   )%
__future__r   r   xml.etree.ElementTreer   collections.abcr   r   r   dask.blockwiser   r   dask.highlevelgraphr   r	   r
   r   dask.utils_testr   r(   r<   rG   rY   rc   rh   r|   r   r   markparametrizer   r   r   r   r   r   r   r?   r)   r'   <module>r      s   " " " " " " 				             5 5 5 5 5 5 5 5 U U U U U U U U U U U U      	 	 	I I I$ $ $   2  	" 	" 	"< < <6Q Q Q   	7	\" 8 8 8& & &(N N N6 6 6 $//+ + 0/+@0 0 00$ $ $ $ $r)   