o
    Nrf$                     @  sL  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	d
 Zdd Zdd Zdd Zdd Zdd Zdd Zdd Zdd Z e
j!"dddide igdd  Z#d!d" Z$d#d$ Z%d%d& Z&d'd( Z'e
j!"d)d*d+gd,d- Z(d.d/ Z)d0d1 Z*d2d3 Z+dS )4    annotationsN)Set)ThreadPoolExecutor)tokenize)	Blockwiseblockwise_token)HighLevelGraphLayerMaterializedLayerto_graphviz)incc                 C  sl   t d t d t d}t| }|jddd}|d }|d }|| }|j| tj|s4J d S )	Nnumpygraphviz
dask.array
      chunks      )	pytestimportorskipstronesdaskZ	visualizeospathexists)Ztmpdirdafnabcd r&   b/var/www/html/software/conda/envs/catlas/lib/python3.10/site-packages/dask/tests/test_highgraph.pytest_visualize   s   


r(   c                  C  sp   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d |j D s6J d S )	Nxr   yr"   r#   r"   r)   r*   c                 s  s    | ]}t |tV  qd S )N)
isinstancer
   ).0layerr&   r&   r'   	<genexpr>'   s    ztest_basic.<locals>.<genexpr>)r   setr	   dictalllayersvaluesr"   r#   r4   dependencieshgr&   r&   r'   
test_basic   s   

 r9   c                    s   t d t d} | jddd}|d }|d }|| }|j       }}}t|ts5J t	|t	 ks?J t	| fdd	 D ksNJ t	|t	t
||ks[J   t kseJ d S )
Nr   r   r   r   r   r   r   c                   s   g | ]} | qS r&   r&   )r.   ir8   r&   r'   
<listcomp>6   s    z:test_keys_values_items_to_dict_methods.<locals>.<listcomp>)r   r   r   r   keysr5   itemsr-   r   listzipto_dictr2   )r    r"   r#   r$   r%   r=   r5   r>   r&   r;   r'   &test_keys_values_items_to_dict_methods*   s   

rB   c               	   C  s   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s3J dD ]}tt | |  W d    n1 sKw   Y  q5G dd d}| | ffD ]}tt | |  W d    n1 suw   Y  q_d S )Nr   r      r"   r"   r   r#   r$      r+   r"   rE   r#   )r%    r   r&   c                   @  s   e Zd ZdZdS )z test_getitem.<locals>.UnhashableN)__name__
__module____qualname____hash__r&   r&   r&   r'   
UnhashableL   s    rL   )r	   r1   r   raisesKeyError	TypeError)r8   krL   r&   r&   r'   test_getitem;   s&    

rQ   c                  C  sv   t ddiddiddht d} |   | jsJ |  }dD ]}t| |}t||}||us2J ||ks8J q d S )Nr"   r#   r   r+   )r4   r7   key_dependencies)r	   r1   Zget_all_dependenciesrR   copygetattr)Zh1Zh2rP   Zv1Zv2r&   r&   r'   	test_copyT   s   


rU   c                  C  sf   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s1J d S )Nr   r)   r,   r"   r*   )r   r	   r1   cullr2   )r"   r8   Zculled_by_xZculled_by_yr&   r&   r'   	test_cullc   s   rW   c                  C  s   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d | j D dd | j D }| ddg}|j|jksIJ |j|jksQJ |jD ]}|j| | j| u sbJ |j| | j| u snJ qTd S )NZd1e1)Za1Za2r%   r   )r#   Z
dontcull_bZ
dontcull_c)r%   Z
dontcull_d)eZ
dontcull_e)r"   r#   r$   r%   rY   rY   c                 S  "   i | ]\}}|d kr|t |qS r$   )r2   r.   rP   vr&   r&   r'   
<dictcomp>}      " z$test_cull_layers.<locals>.<dictcomp>c                 S  rZ   r[   )r1   r\   r&   r&   r'   r^   ~   r_   r"   r#   )r	   r1   r4   r>   r7   Zcull_layers)r8   expectZculledrP   r&   r&   r'   test_cull_layerso   s(   
ra   c                  C  sx   t d tddddddidt t d} tjj|  d us%J | j	
 D ]}tjj| d us9J q*d S )	NZjinja2r   r   rC   rD   r$   rF   r+   )r   r   r	   r1   xmletreeZElementTreeZ
fromstringZ_repr_html_r4   r5   )r8   r/   r&   r&   r'   test_repr_html_hlg_layers   s   
rd   c                 C  s   | dd  S )Nr   r&   )keyr&   r&   r'   annot_map_fn   s   rf   
annotationZworkerZaliceblock_idc                 C  s   t d t d}tjdi |  |jddd}W d    n1 s$w   Y  | j|j }|j| ks8J t	 r>J d S )Nr   r   r   r   r   r   r   r&   )
r   r   r   annotater   __dask_graph__r4   namer   get_annotations)rg   r    Aalayerr&   r&   r'   test_single_annotation   s   

rq   c               	   C  s  t d t d} tjtd+ tjddid | jddd	}W d    n1 s+w   Y  |d }W d    n1 s>w   Y  |d }t rMJ | j|j	 }| j|j	 }| j|j	 }|j
dditd
ksqJ |j
dtikszJ |j
d u sJ d S )Nr   r   )rh   ZGPUr   )	resourcesri   rj   r   )rr   rh   rh   )r   r   r   rk   rf   r   rn   rl   r4   rm   r   )r    ro   BCrp   ZblayerZclayerr&   r&   r'   test_multiple_annotations   s    


ru   c                
   C  s   t jddK tt, t jdd t  ddiksJ dd  W d    n1 s,w   Y  W d    n1 s;w   Y  t  ddiksJJ W d    n1 sTw   Y  t  r_J d S )Nr   )r)   r   r)   r   )r   rk   r   rM   ZeroDivisionErrorrn   r&   r&   r&   r'    test_annotation_cleared_on_error   s   
rw   c                  C  sN   t dddddid} | 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   rV   lenr   )r/   Zculled_layer_r&   r&   r'   1test_materializedlayer_cull_preserves_annotations   s   r}   c                    s   t d t d fdd} td}|| d}|| d}| | g}W d   n1 s4w   Y  |ddiddigksEJ dS )z^Annotations shouldn't leak between threads.
    See https://github.com/dask/dask/issues/10340.r   c                   sL   t j| d    t  }  |W  d    S 1 sw   Y  d S )N)ry   )r   rk   waitrn   )noutb1b2r&   r'   f   s   $z test_annotations_leak.<locals>.fr   Nry   )	threadingBarrierr   submitresult)r   exf1f2r   r&   r   r'   test_annotations_leak   s   


r   flatTFc                 C  s,  t d}t d}| r||dddd }n ||ddd	}||ddd	}||| }| }d
}|jg|R h}|	|}|j
 D ]@\}	}
t|
tjjskt|j
|	 tjjrjJ qSt|j
|	 tjjswJ |
 r}J |
 }||
jg|R hksJ |
 rJ qSd S )Nr   r   (   )rF   r   )r   rF   d   r   )r   )rF   r   r   )r   r   Z
from_arrayZarangeZreshapeouterZ	transposerl   _namerV   r4   r>   r-   r   Z	blockwiser   is_materializedget_output_keysoutput)r   npr    r)   r*   dskselectr=   Zdsk_cullrm   r/   Zout_keysr&   r&   r'   test_blockwise_cull   s*   


r   c               	   C  s   ddi} t dtddtdggidi ddd	d
}t|t| ks%J | |d}t dhd}t||}|jd  s?J |jd  rHJ t|t| t|   kr[dks^J  J |jd  rgJ d S )Nr)   r   r#   Zijr   r&   )r   r   r   r   )r:   j)r   Zoutput_indicesr   indicesZ	numblocksZnew_axesr+   r"      )	r   tupler   r{   r   r1   r	   r4   r   r6   r&   r&   r'   test_len_does_not_materialize
  s"   

,r   c            
      C  s   t d t d} t d | jddd}||j }|jdd}|j}t|}|jD ])}d	|v rTd
|v s7J |dt	d }|d|}||| }	t	|	dksTJ q+d S )Nr   r   r   )  r   )r   r   r   r   )Zaxislabeltooltipz	tooltip=""r   )
r   r   r   Tsumr   r   bodyfindr{   )
r    r"   r#   r$   r8   gr/   startendr   r&   r&   r'   test_node_tooltips_exist"  s"   




r   c                  C  s   dd l m}  | jttddd }| jttddd }| jttddd }t|jt|jks9J t|jt|jksEJ d S )Nr   r   r   )ZnpartitionsrC   )Zdask.bagZbagZfrom_sequencer?   rangemaxr   r   )dbr"   r#   r$   r&   r&   r'   test_tokenize_hlg7  s   r   ),
__future__r   r   r   Zxml.etree.ElementTreerb   collections.abcr   concurrent.futuresr   r   r   Z	dask.baser   Zdask.blockwiser   r   Zdask.highlevelgraphr	   r
   r   r   Zdask.utils_testr   r(   r9   rB   rQ   rU   rW   ra   rd   rf   markZparametrizerq   ru   rw   r}   r   r   r   r   r   r&   r&   r&   r'   <module>   sJ    


 