
    >ie"                       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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$d Z%e
j                             dddg          d             Z&d Z'd Z(dS )     annotationsN)Set)ThreadPoolExecutor)	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%   r8   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@   )r2   ir<   s     r(   
<listcomp>z:test_keys_values_items_to_dict_methods.<locals>.<listcomp>3   s    ...aBqE...r*   )r   r   r   r   keysr9   itemsr1   r   listzipto_dictr6   )	r"   r$   r%   r&   r'   rC   r9   rD   r<   s	           @r(   &test_keys_values_items_to_dict_methodsrH   (   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$   rL   r%   )r'    r   r@   c                      e Zd ZdZdS ) test_getitem.<locals>.UnhashableN)__name__
__module____qualname____hash__r@   r*   r(   
UnhashablerP   I   s        r*   rU   )r	   r5   r   raisesKeyError	TypeError)r<   krU   s      r(   test_getitemrZ   8   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.   )r8   r;   key_dependencies)r	   r5   get_all_dependenciesr\   copygetattr)h1h2rY   v1v2s        r(   	test_copyrd   Q   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	   r5   cullr6   )r$   r<   culled_by_xculled_by_ys       r(   	test_cullri   `   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'   rr   rr   c                @    i | ]\  }}|d k    |t          |          S r&   )r6   r2   rY   vs      r(   
<dictcomp>z$test_cull_layers.<locals>.<dictcomp>z   s)    >>>1Q#XXDGGXXXr*   c                @    i | ]\  }}|d k    |t          |          S ru   )r5   rv   s      r(   rx   z$test_cull_layers.<locals>.<dictcomp>{   s)    CCCtq!!s((CFF(((r*   r$   r%   )r	   r5   r8   rD   r;   cull_layers)r<   expectculledrY   s       r(   test_cull_layersr}   l   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   rJ   rK   r&   rM   r.   )r   r   r	   r5   xmletreeElementTree
fromstring_repr_html_r8   r9   )r<   r3   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          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	                    rJ d S )Nr   r   r   r   r   r   r@   )
r   r   r   annotater   __dask_graph__r8   namer   get_annotations)r   r"   Aalayers       r(   test_single_annotationr      s     
	\	*	*B		$	$	$	$ - -GGHVG,,- - - - - - - - - - - - - - - &qv.F++++#%%%%%%%s   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                    r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   r8   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#%%%%%&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                    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            n# 1 swxY w Y   d d d            n# 1 swxY w Y   t          j                    ddik    sJ 	 d d d            n# 1 swxY w Y   t          j                    rJ d S )Nr   )r,   r   r,   r   )r   r   r   rV   ZeroDivisionErrorr   r@   r*   r(    test_annotation_cleared_on_errorr      s   				 2 2],-- 	 	###  +--#q9999A              	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 #%%#q111112 2 2 2 2 2 2 2 2 2 2 2 2 2 2 #%%%%%%%sX   B=B
!A3'B
3A77B
:A7;B
>B=
B	B=B	B==CC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.   foobarr   r$   r   )r   rf   lenr   )r3   culled_layer_s      r(   1test_materializedlayer_cull_preserves_annotationsr      sz    tEN  E
 jj#++OL!|!!!!#u~555555r*   c                 x   t          j        d          t          j        d          fd} t          d          5 }|                    | d          }|                    | d          }|                                |                                g}ddd           n# 1 swxY w Y   |ddiddigk    sJ dS )z^Annotations shouldn't leak between threads.
    See https://github.com/dask/dask/issues/10340.r   c                    t          j        |           5                                   t          j                    }                                 |cd d d            S # 1 swxY w Y   d S )N)r   )r   r   waitr   )noutb1b2s     r(   fz test_annotations_leak.<locals>.f   s    ]q!!! 	 	GGIII&((CGGIII		 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	s   =A!!A%(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%(B%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(   )rM   r   )r   rM   d   r   )r   )rM   r   r   )r   r   
from_arrayarangereshapeouter	transposer   _namerf   r8   rD   r1   r   	blockwiser   is_materializedget_output_keysoutput)r   r"   npr,   r-   dskselectrC   dsk_cullr   r3   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   )rA   j)r   output_indicesr   indices	numblocksnew_axesr.   r$      )	r   tupler   r   r   r5   r	   r8   r   r:   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<   gr3   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   r   xml.etree.ElementTreer   collections.abcr   concurrent.futuresr   r   r   dask.blockwiser   r   dask.highlevelgraphr	   r
   r   r   dask.utils_testr   r)   r=   rH   rZ   rd   ri   r}   r   r   markparametrizer   r   r   r   r   r   r   r   r@   r*   r(   <module>r      s(   " " " " " " 				               1 1 1 1 1 1   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	\" & & && & &(& & &6 6 6. . .( $//+ + 0/+@0 0 00$ $ $ $ $r*   