
    bid              %         d dl mZ d dlZ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mZ d dlmZ d dlmZmZmZmZmZmZ d dlmZ d dlmZmZmZ d	\  ZZZ Z!Z"Z#Z$ e% e&ed
  e'd      D                    \
  Z(Z)Z*Z+Z,Z-Z.Z/Z0Z1d\  Z2Z3Z4ejj                  jm                  ded eeee(      edfgfged eeee(      edfgfged eeee(      edfgfe d ee ee(      edfgfe!d ee!ee(e)e*      edfedfe dfgfge!d ejn                   ee!ee( e eed             e ee d                   e ee d      ee(       e eed      ee(            edfgfged eeee(      edfgfe d ee ee(      edfgfge d ejn                   ee e e eed                   e eed      ee(            edfgfged eee8e(      edfgfe d ee ee(      edfgfge d ejn                   ee e e eed                   e eed      e8e(            edfgfge d ee ee(      edfgfe!d ee!ee(      edfgfe$d ee$ee(e)      e dfe!dfgfge$d ejn                   ee$e e ee d             e ee!d                   e ee d      ee(       e ee!d      ee)            edfedfgfged eeejr                  e(      edfgfe d ee ee(e)      edfedfgfge d ejn                   ee ee( e eed                   e eed      ejr                  e)            edfedfgfge d ee ee(e)      edfedfgfe!d ee!ee(      e dfgfge!d ejn                   ee!e e ee d                   e ee d      ee(e)            edfedfgfged eeejr                  e(      edfgfe!d ee!ejt                  e(e)      edfe dfgfge!d ejn                   ee!ejt                   e eed            e(       e eed      ejr                  e)            e dfedfgfge d ee ee(e)      edfedfgfe#d ee#ee(e)      e!dfe"dfgfe$d ee$ee(e)      e dfe#dfgfge$d ejn                   ee$e e ee d             e ee#d                   e ee#d      ee*e+       e ee d      ee(e)            ee2fee2fe!e2fe"e2fgfge d ee ee(e)      edfedfgfe#d ee#ee(e)      edfe"dfgfe$d ee$ee(e)      e dfe#dfgfge$d ejn                   ee$e e ee d             e ee#d                   e ee#d      ee(e*       e ee d      ee(e)            edfedfe"dfgfged eee8e(      edfgfe d ee ee(      edfgfge d ejn                   ee e e eed                   e eed      e8e(            edfgfge d ee ee(      edfgfe!d ee!ee(e)e*      edfedfe dfgfge!d ejn                   ee!ee(e) e ee d                   e ee d      ee)            edfedfgfged eeee(e)      edfdgfged eeee(e)      edfdgfged eeee(e)      edfdgfe d ee ee(e)      edfdgfge d ejn                   ee e e eed            e(       e eed      ee)e*            dedfdgfged eeee(e)      edfdgfe d ee ee(e)      edfdgfge d ejn                   ee e e eed            e(       e eed      ee)e*            dedfdgfged eeee(e)      edfdgfe d ee ee(e)      edfdgfge d ejn                   ee e e eed            e(       e eed      ee)e(            dedfgfged eeee(e)      edfdgfe d ee ee(e)      edfedfgfe!d ee!ee(e)      e dfdgfgdd ejn                   ee!e e ee d            e(       e ee d      e e eed             e eed                   e eed      ee)e*       e eed      ee+e*            dedfdedfgfged eeee(e)      edfdgfe d ee ee(e)      edfedfgfe!d ee!ee(e)e*      edfe dfedfgfgdd ejn                   ee!e e eed             e ee d             e eed                   e ee d      e e eed             e eed                   e eed      ee(e)       e eed      ee*e)            edfdedfgfgg      d         Z;d! Z<d" Z=d# Z>d$ Z?d% Z@d& ZAd' ZBd( ZCejj                  jm                  d)g d*      d+        ZDejj                  jm                  d)g d,      d-        ZEd. ZFd/ ZGd0 ZHejj                  jm                  d1d2d3g      d4        ZIejj                  jm                  d1d2d3g      d5        ZJejj                  jm                  d1d2d3g      d6        ZKd7 ZLd8 ZMd9 ZNd: ZOd; ZPd< ZQd= ZRd> ZSd? ZTejj                  jm                  d@dA  ej                  dBdCdDg      dEdF      g      dG        ZVdH ZWdI ZXdJ ZYdK ZZy)L    )annotationsN)add)TaskTaskRef)	assert_eq)_BLOCKWISE_DEFAULT_PREFIX	Blockwise_unique_dep
index_subsoptimize_blockwiserewrite_blockwise)HighLevelGraph)dechlg_layer_topologicalinc)abcdefgc              #  0   K   | ]  }t          |   y wN)r   ).0is     U/home/cdr/jupyterlab/.venv/lib/python3.12/site-packages/dask/array/tests/test_atop.py	<genexpr>r      s     G./s3Gs   
   )r   jkzinputs,expectedr   r    ijr!   kAjiikkjkiiA){   N)i  N)r   N)FNjk)   Nijkr   c                   | D cg c]3  }t        |d|d   D ci c]  \  }}|	|dt        |      z   c}}i5 } }}}t        |       }|j                  dj	                  |j
                        |j                  |j                  D cg c]  \  }}||dj	                  |      n|f c}}f}|d   |d   k(  sJ ||k(  sJ y c c}}w c c}}}w c c}}w )N	numblocks    r+   )r	   lenr   outputjoinoutput_indicestaskindices)	inputsexpectedinpr!   vresultnameindresult2s	            r   test_rewriterA      s    B 	   		
:=b'S$!QQ]Qs1v-S	
F  v&F 	
%%& $^^	
c 3?2773<<	
	G 1:!$$$h# T	
s    C
CCC!CCc                 P    t        t        d      ddd      t        d      k(  sJ y )Nr"   r    r   )r   r    r$   )r   tuple     r   test_index_subsrF     s$    eDk3#78E$KGGGrE   c            	     \   t        j                  dd      } | dz   dz   dz   dz   }t         j                  j                  |j                        }t        |t              sJ t        |j                  j                         D cg c]  }t        |t              s| c}      dk(  sJ y c c}w Nr      chunksr1   r+         daonesoptimizationr   dask
isinstancer   r3   layersvaluesr	   )xydsklayers       r   test_optimize_blockwiser[     s    
4 Aq5A+	aA
//
,
,QVV
4Cc>*** 	

 1 1 3Tuz%7SUTU		Ts   B)B)c                    t        j                  dd      } | dz   }t        j                  dg dd      5  |d	z   }d
d
d
       t        j                  d	g dd      5  dz   }d
d
d
       t        j                  dd	dd      5  dz   }d
d
d
       t        j                  dddd      5  dz   }d
d
d
       t        j                  d      5  dz   }d
d
d
       dz   }t         j                  j                  |j                        }t        |j                        dk(  sJ t        |d      }	|	j                  }
t        |
      dk(  sJ |
d   dk(  sJ |
d   dk(  sJ |
d   du sJ t        |
d         ddhk(  sJ |
d   dddk(  sJ t        j                  j                  ddi      5  t         j                  j                  |j                        }t        |j                        dk(  sJ 	 d
d
d
       y
# 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   sxY w# 1 sw Y   \xY w# 1 sw Y   y
xY w) zq
    Can we fuse blockwise layers with different, but compatible
    annotations for retries, priority, etc.
    r   rI   rK   r1   rJ   )r   r   r   F)retriesworkersallow_other_workersr+   N)r   r   r   T)priorityr^   r_   rM   )GPUMemory)r]   	resourcesrN   )r`   rc   bar)foo   r   r`   r]   r_   r^   r   r   rc   zoptimization.annotations.fuse   )rP   rQ   rS   annotaterR   r   r3   rU   r   r   setconfig)r   r   r   r   r   r   r   hrY   rZ   r   s              r   +test_optimize_blockwise_control_annotationsrl     sB    	4 A	AA	q/u	U E 
?PT	U E 
qA,D	E E 
Q!-D	E E 
5	! E 	
AA
//
,
,QVV
4C szz?a!#q)E##K{q   z"a'''y!Q&&&,-666{9%&3*444{#qB'???? 
95A	B $oo0083::!###$ $C     ($ $sH   G?HH/H&H31AI ?H	HH#&H03H= I	c                 B   t        j                  dd      } | dz   }t        j                  d      5  |dz   }|dz   }d d d        t        j                  d	      5  d
z   }|dz   }d d d        dz   }t         j                  j                  |j                        }d |j                  j                         D        }t        j                  d |D              }t        |      dk(  sJ |d    dk(  sJ |d   dk(  sJ |d   dk(  sJ y # 1 sw Y   xY w# 1 sw Y   xY w)Nr   rI   rK   r1   re   )quxr+   rM   bazrN   rJ   rf   c              3  T   K   | ]   }t        |t              r|j                   " y wr   )rT   r	   r   )r   rZ   s     r   r   z=test_optimize_blockwise_custom_annotations.<locals>.<genexpr>  s(      eY' 	   &(c              3  t   K   | ]0  }t        |      t        u rt        |j                               n| 2 y wr   )typedictrC   itemsr   r   s     r   r   z=test_optimize_blockwise_custom_annotations.<locals>.<genexpr>  s/      &78DGtOaggi2&s   68))rn   ro   ))rn   re   )rP   rQ   rS   rh   rR   r   rU   rV   collectionsCounterr3   )	r   r   r   r   r   r   r   rY   r   s	            r   *test_optimize_blockwise_custom_annotationsry     s1   
4 A	AA	5	! EE 
5	! EE 	
AA
//
,
,QVV
4CZZ&&(K
 %% &<G& K {q   t!!!()Q...()Q...1  s   D	D	DDc            	        t        j                  dd      } | dz   dz   dz   }|dz  }|dz  }||z   }|dz   dz   dz   }t         j                  j                  |j                        }t        |t              sJ t        |j                  j                         D cg c]  }t        |t              s| c}      dk(  sJ y c c}w )Nr   rI   rK   r1   r+   rM   rO   )rW   rX   r   r   r   r   rY   rZ   s           r   test_blockwise_diamond_fusionr{     s    
4 A
a%1A	AA	AA	AA
a%1A
//
,
,QVV
4Cc>*** 	

 1 1 3Tuz%7SUTU		Ts   C /C c            
        t        j                  dd      } | dz   dz   dz   }|j                         }|dz  dz  dz  }t        |j                  j
                  |j                     j                        }t	        j                  |      \  }t        |j                  j
                  |j                     j                        }||k(  sJ d       t        |j                  t        t        j                  j                  |j                                     	      }t        |t              sJ t!        |j
                  j#                         D cg c]  }t        |t$              s| c}      dk(  sJ t        t        j&                  |j                  |j                        t        t        j                  j                  |j                         |j                         g            	      }t        |t              sJ t!        |j                  j
                  j#                         D cg c]  }t        |t$              s| c}      dk\  sJ y c c}w c c}w )
Nr   rI   rK   r1   r+   rM   rN   zz_top mutated)keys)rP   rQ   sumrC   rS   rU   r>   r8   optimizer   listcoreflatten__dask_keys__rT   r   r3   rV   r	   merge)	rW   rX   wzz_top_beforezzz_top_afterrY   rZ   s	            r   #test_blockwise_non_blockwise_outputr     s   
4 A
a%1A	A
a%1Aqvv.667LMM!ERaff-556K;&77&
QVV$tyy/@/@AR/S*T
UCc>***

 1 1 3Tuz%7SUTU		 QVVQVV,$))##Q__%68I$JKLC c>*** 4 4 6Wu*UI:VUWX		 U Xs   I!I'I=Ic                     t        j                  dd      } | d d d f   | d d d f   z  }|j                  j                  |j                     }t        |      dk(  sJ y )Nr   rI   rK   rN   )rP   rQ   rS   rU   r>   r3   )rW   rX   r   s      r   test_top_lenr      sR    
4 A	!T'
QtQwZA	affAq6Q;;rE   c                     t        j                  dd      dz   dz   dz   } | j                         }| dz  dz  dz  }|j                         }| dz  dz  }t        j                  | ||||       y rH   )rP   rQ   r~   rS   compute)rW   r   rX   r   r   s        r   test_inner_computer   (  si    
4 1$q(1,A	A	A	AA	A	A	ALLAq!QrE   r>   )__0_1..0c           	         t        j                  g dt              }t        j                  |d      }t        j
                  t        d|d| d t              }|| z   }t        ||       y )Nr   bbcccdtyper+   rK   r   )nparrayobjectrP   
from_array	blockwiser   r   r>   rW   r   r=   r:   s        r   test_common_token_names_argsr   2  sP    
#62A
a"A\\#sAsD$fEF4xHfhrE   )r   r   r   r   r   c                    t        j                  g dt              }t        j                  |d      }t        j
                  d d|d| t              }|| z   }t        ||       y )Nr   r   r+   rK   c                    | |z   S r   rD   rW   rX   s     r   <lambda>z0test_common_token_names_kwargs.<locals>.<lambda>B  s
    q1u rE   r   rX   r   )r   r   r   rP   r   r   r   r   s        r   test_common_token_names_kwargsr   =  sO    
#62A
a"A\\,c1cTPF4xHfhrE   c                     t        j                  dd      } t        j                  t        d| d| j                        }|j
                  j                  d      sJ y )NrJ   r+   rK   r   r   r   )rP   rQ   r   r   r   r>   
startswithr   s     r   test_blockwise_namesr   H  sD    
$A
S#q#QWW5A66U###rE   c            	        d } t        j                  dd      }t        j                  | d|dddid	|j                  
      }|j                  dk(  sJ t        |t        j                  d             d } t        j                  dd      }t        j                  | d|dddid	|j                  
      }|j                  dk(  sJ t        |t        j                  d             d } t        j                  dd      }t        j                  | d|dddid	|j                  
      }|j                  dk(  sJ t        |t        j                  d      dz         y )Nc                @    | d d d f   t        j                  d      z  S )Nr1   rg   r   rQ   rW   s    r   r   z"test_blockwise_new_axes.<locals>.fO  s    DzBGGFO++rE   rJ   r+   rK   aqr   qrg   Tnew_axesconcatenater   r+   r+   r1   rg   rJ   rg   c                @    | d d d f   t        j                  d      z  S )N)rg   r1   r   r   s    r   r   z"test_blockwise_new_axes.<locals>.fY  s    qzBGGFO++rE   qa)r   r   )rg   rJ   c                d    | j                  d      }|d d d f   t        j                  d      z  S )Nr1   axis)r1   rJ   )r~   r   rQ   r   s     r   r   z"test_blockwise_new_axes.<locals>.fc  s,    EEqEMDzBGGFO++rE   )rN   rf   r+   r+   ab)r   rI   )rN   rJ   rf   rP   rQ   r   r   rL   r   r   r   rW   rX   s      r   test_blockwise_new_axesr   N  s/   , 	!A
	4C3(AGG	A 88((((a!, 	!A
	4C3(AGG	A 88((((a!, 	v&A
	4DC8QWW	A 88~%%%a1$%rE   c            
         t        j                  dd      } d }t        j                  |d| d| j                  ddd	i
      }t	        ||       y )Nr   r1   r1   rK   c                6    t        j                  | |  gd      S )Nr/   r   )r   stackr   s    r   funcz'test_blockwise_new_axes_2.<locals>.funcr  s    xxQBb))rE   )rW   rX   signr   Tr   r+   )r   r   r   )rP   rQ   r   r   r   )rW   r   rX   s      r   test_blockwise_new_axes_2r   o  sO    
v&A* 		gg!	A aOrE   r   TFc           	     8   d }t        j                  dd      }t        j                  |d|dddi| |j                  	      }t        j                  |d
|dddi| |j                  	      }|j                  dk(  sJ t        |t        j                  d             y )Nc                8    | d   t        j                  d      z  S N).Nr   r   r   s    r   r   z*test_blockwise_stacked_new_axes.<locals>.f      |bggfo--rE   rJ   r+   rK   r   r   r   rg   r   abqr   )r   r   r   )rJ   rg   rg   r   )r   r   rW   rX   r   s        r   test_blockwise_stacked_new_axesr     s    . 	!A
	4C3(177	A 		5!TS!H+QWW	A 88....a#$rE   c           	        d }t        j                  dd      }t        j                  |d|dddi| |j                  	      }t        j                  |d
|dddi| |j                  	      }|j                  dk(  sJ t        |t        j                  d             t        j                  d d|d|j                  d      }|j                  dk(  sJ t        |t        j                  d             y )Nc                    t        | t              rt        j                  |       } | d   t        j                  d      t        d       fd| j                  z  z      z  S )N)N.rg   r   )rT   r   r   r   rQ   slicendimr   s    r   r   z0test_blockwise_stacked_new_axes_front.<locals>.f  sJ    aq!A|bggaj%+'AFF:J)JKKKrE   rJ   r+   rK   r   r   r   rg   r   qabr   )r   r   r   )rg   rg   rJ   c                    | d d ddf   S )Nr   rD   r   s    r   r   z7test_blockwise_stacked_new_axes_front.<locals>.<lambda>  s    !Aq!G* rE   abcT)r   r   )r   r   r   )r   r   rW   rX   r   r   s         r   %test_blockwise_stacked_new_axes_frontr     s    L
 	!A
	4C3(177	A 		5!TS!H+QWW	A 88....a#$
c1e177	A 88warE   c           	     p   d }t        j                  dd      }t        j                  dd      }t        j                  |d|dddi| |j                  	      }t        j                  |d|dddi| |j                  	      }||z   }|j
                  d
k(  sJ t        |t        j                  d             y )Nc                8    | d   t        j                  d      z  S r   r   r   s    r   r   z3test_blockwise_stacked_new_axes_same_dim.<locals>.f  r   rE   rJ   r+   rK   r   r   r   rg   r   r   r   )rP   rQ   zerosr   r   rL   r   r   )r   r   rW   rX   r   r   r   s          r   (test_blockwise_stacked_new_axes_same_dimr     s    . 	!A
1A
	4C3(177	A 		4C3(177	A 	
AA88((((a!rE   c                 2   d } t        j                  ddddt        j                        }t        j                  | d|dd	d
i|j
                        }|j                  dk(  sJ t        |t        j                  g dg dgt        j                               y )Nc                    | d d d f   dz  S Nr+   rD   r   s    r   r   z*test_blockwise_new_axes_chunked.<locals>.f  s    qzA~rE   r   rf   r1   r+   )rL   r   r   r   r   r   r   r   )r   )r+   r+   r+   )r   r+   rN   rf      r   )	rP   aranger   int32r   r   rL   r   r   r   s      r   test_blockwise_new_axes_chunkedr     sv     			!Q!2884A
QaV}AGGLA88****a.0CDbhhOPrE   c                     d } t        j                  | ddddt        j                        }|j                  dk(  sJ t        |t        j                  dt        j                               y )	Nc                 J    t        j                  dt         j                        S N)r+   rM   )r   rQ   float32rD   rE   r   r   z!test_blockwise_no_args.<locals>.f  s    wwvrzz**rE   r   r+   rM   rM   r   r   r   r   r   r+   rf   rP   r   r   r   rL   r   rQ   r   rW   s     r   test_blockwise_no_argsr     sQ    + 	QQV'<BJJOA88~%%%a,-rE   c            	         d } t        j                  | dt        j                  d dddt        j                        }|j                  dk(  sJ t        |t        j                  dt        j                               y )	Nc                .    t        j                  d|       S r   r   r   s    r   r   z'test_blockwise_no_array_args.<locals>.f  s    wwvu%%rE   r   r+   r   r   r   r   r   r   r   s     r   test_blockwise_no_array_argsr     s^    & 		4T!&,A	A 88~%%%a,-rE   c                     dd} t        j                  dd      }t        j                  | d|dd|j                        }t	        |t        j                  d      dz          y )	Nc                    | |z   S r   rD   r   s     r   r   z test_blockwise_kwargs.<locals>.f  s    1urE   rJ   r   rK   r   r   )r   r   r   )rP   rQ   r   r   r   r   r   s      r   test_blockwise_kwargsr     sK     	$A
QQr9Aab!rE   c            	     ,   t        j                  dd      } dd}t        j                  |d| ddd id| j                  	      }|j                  d
k(  sJ t        |t        j                  d             t        j                  |d| ddd id| j                  	      }|j                  dk(  sJ t        |t        j                  d             t        j                  dd      } t        j                  |d| ddddi| j                        }|j                  dk(  sJ t        |t        j                  d             t        j                  |d| ddddi| j                        }|j                  dk(  sJ t        |t        j                  d             y )NrJ   rJ   )r+   r1   r+   rM   r+   rK   r   c                4    t        j                  | | g|      S )Nr   )r   r   )r   r   s     r   doublez%test_blockwise_chunks.<locals>.double  s    ~~q!f400rE   r"   r   c                    d| z  S r   rD   ns    r   r   z'test_blockwise_chunks.<locals>.<lambda>  
    a!e rE   )adjust_chunksr   r   ))rN   r+   rN   r   )r   rJ   r    c                    d| z  S r   rD   r   s    r   r   z'test_blockwise_chunks.<locals>.<lambda>  r   rE   r1   )r   )rf   rN   )rJ   r   r   r   r   )r   r  r   )r  r   )   r   r   r   )rW   r   rX   s      r   test_blockwise_chunksr    sl   
23A1 		O,gg	A 88****a!"
	O,gg	A 88****a!"
(A
aAc2Yagg	A 88))))a"#
aAc8_AGG	A 88))))a"#rE   c                    t        j                  dd      } t        j                  d      }| j                  d d      } | j                  d d      } | j                  d	 |      } | j                  d
 d      } | j                  d d      } | j                  d dt        j                  ddgt
                    } t        | t        j                  d             y )Nr   rI   rK   i  c                    | S r   rD   r   s     r   r   z*test_blockwise_numpy_arg.<locals>.<lambda>      ! rE   g      ?c                    | S r   rD   r   s     r   r   z*test_blockwise_numpy_arg.<locals>.<lambda>  r  rE   r   c                    | S r   rD   r   s     r   r   z*test_blockwise_numpy_arg.<locals>.<lambda>  r  rE   c                    | S r   rD   r   s     r   r   z*test_blockwise_numpy_arg.<locals>.<lambda>  r  rE   c                    | S r   rD   r   s     r   r   z*test_blockwise_numpy_arg.<locals>.<lambda>  r  rE   c                    | S r   rD   rW   rX   r   s      r   r   z*test_blockwise_numpy_arg.<locals>.<lambda>  s    Q rE   r   r   r   )rP   r   r   
map_blocksr   r   r   r   s     r   test_blockwise_numpy_argr    s    
		"T"A
		$A	^S)A	^U+A	^Q'A	^U+A	^S)A	&rxxc
&/QRAa2rE   c                    dd l m}  | j                  dd      }|j                  t        j
                        j                         \  }d |fD        \  }t        j                  |g      }t        |t	        j                  d      d       y )Nr   r   r1   )npartitionsc              3  T   K   | ]   }t        j                  |d t               " yw))r   )shaper   N)rP   from_delayedintrv   s     r   r   z,test_bag_array_conversion.<locals>.<genexpr>!  s      D1BOOAU#66Drq   F)check_graph)dask.bagbagrangemap_partitionsr   asarray
to_delayedrP   r   r   r   )dbr   rW   r   s       r   test_bag_array_conversionr    sh    
#ABJJ'224DQDDDQ
sAa2E2rE   c                     t        j                  dd      } | dz  }t         j                  j                  |      \  }}}||z   }t	        ||       y )Nr   rK   r+   )rP   rQ   linalgsvdr   )rW   rX   usr<   r   s         r   test_svdr%  &  sE    
v&A	AAiimmAGAq!	AAaOrE   c            	        t        j                  dd      }  t        j                  d              }t        j                  t
        d| d|d | j                        }t        |t        j                  d      dz          t        j                  d d| d|| j                  	      }t        |t        j                  d      dz          y )
Nr   rI   rK   c                      y)Nd   rD   rD   rE   r   r   z#test_args_delayed.<locals>.<lambda>0  s    rE   r   r   r(  c                    | |z   S r   rD   r   s     r   r   z#test_args_delayed.<locals>.<lambda>5  s
    !a% rE   r   )	rP   r   rS   delayedr   r   r   r   r   r  s      r   test_args_delayedr+  .  s    
		"T"A![!#A
S#q#q$agg>Aa2$%
'aIAa2$%rE   tup)r1   r+   re   r   r   r1   r+   c                    t         j                  j                         j                  dd      }d }t        j                  |d|d| |j                        }t        ||       y )Nr  r  r  rK   c                    | S r   rD   )datarW   s     r   r   ztest_namedtuple.<locals>.f?  s    rE   )d1d2)rW   r   )rP   randomdefault_rngr   r   r   )r,  Ar   Bs       r   test_namedtupler7  9  sR     			&&x&AA 	QaAGGLAaOrE   c                    t         j                  j                         j                  dd      } t        j                  t
              5 }t        j                  t        d| d| j                         d d d        dt        j                        j                         v sJ dt        |j                        v sJ d	t        |j                        vsJ t        j                  t
              5 }t        j                  t        d
| d| j                         d d d        dt        |j                        j                         v sJ dt        |j                        v sJ y # 1 sw Y   xY w# 1 sw Y   VxY w)Nr.  r  rK   r*   r"   r   zunknown dimensionr!   r    iirepeatedr   )rP   r3  r4  pytestraises
ValueErrorr   r   r   strvaluelower)r5  infos     r   test_validate_top_inputsrB  G  s   
		&&x&AA	z	" 8d
S$4qww78 #djj/"7"7"9999#djj/!!!c$**o%%%	z	" 8d
S$4qww78 TZZ..0000#djj/!!!8 88 8s   	)E,)E*E'*E3c            	        t        j                  dd      } t        j                  t        d| d| j                        }t        j                  t
        d|d|j                        }t        j                  t
        d|d|j                        }t        |j                        }t        |j                  j                         D cg c]  }t        |t              s| c}      dk(  sJ |j                          y c c}w )Nr   rI   rK   r   r   r2   r+   )rP   rQ   r   r   r   r~   r   rS   r3   rU   rV   rT   r	   r   )rW   rX   r   r   rY   r   s         r   !test_dont_merge_before_reductionsrD  X  s    
4 A
S#q#QWW5A
S"aAGG4A
S"a1773A
QVV
$C3::,,.Ka*Q	2JKLPQQQQIIK Ls   C=C=c                    t        j                  dd      } t        j                  t        d      5  t        j
                  t        d| d| j                        }d d d        t        j                  t        d| d| j                        }t        |       |j                  |j                  k(  sJ y # 1 sw Y   YxY w)Nr   rI   rK   z.The da.atop function has moved to da.blockwise)matchr   r   )rP   rQ   r;  warnsUserWarningatopr   r   r   r   r>   r  s      r   test_atop_legacyrJ  e  s    
4 A	K
 5 GGCaAGG45 	S#q#QWW5AaO66QVV5 5s   )B44B=c                 >   t        j                  t        j                  dt        j                        d      } t        | j                        | _        t        j                  t        j                  dt        j                        d      }| |z   }t        ||        y )Nr1   r0   rK   )	rP   r   r   rQ   float64rt   rS   r   r   )r   r   rW   s      r   test_non_hlgrM  p  sa    
bgga,T:A!&&\AF
bhhq"**-d;A	AAaOrE   )[
__future__r   rw   operatorr   numpyr   r;  rS   
dask.arrayr   rP   dask._task_specr   r   dask.array.utilsr   dask.blockwiser   r	   r
   r   r   r   dask.highlevelgraphr   dask.utils_testr   r   r   r   r   r   r   r   r   r   rC   mapr  r   r   _2_3_4_5_6_7_8_9r   r    r!   markparametrizefuser~   	transposedotrA   rF   r[   rl   ry   r{   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r  r  r  r%  r+  
namedtupler7  rB  rD  rJ  rM  rD   rE   r   <module>rf     s   "       ) &  / ; ;7 1aAq!).GU2YGH* &BBBBB 1a 
 d1c2&!S
34QR H	
	
 Cab)QH:6Cab)QH:6Cab"b1QHq#hC3QR 		As 34As 34 Q,c26Q,c26
 S
	
4 Cab)QH:6Cab)QH:6
 		CQ)<!=>Q,c26 S
	
$ Cab)QI;7Cab)QH:6
 		CQ)<!=>Q,c26 T	
$ Cab)QH:6Cab)QH:6D$q#r2.!SAs80DE 		As 34As 34	 Q,c26Q,c26	 SAs8$	
2 D$q",,3q$i[AD$q#r2.!TQI0FG
 		CW[D-A%BCQ-r||R@ TQI&	
$ Cab"-C1c(/CDCab)QH:6
 		CQ)<!=>Q,c2r: SAs8$	
$ D$q",,3q$i[AD$q"&&"b1QI4y3IJ
 		At 45	 Q-r||R@ TQI&	
. Cab"-C1c(/CDCab"-C1c(/CDCab"-C1c(/CD 		As 34As 34	 Q,c2r:Q,c2r:	 Q!Q!Q!Q0	
2 Cab"-C1c(/CDCab"-C1c(/CDCab"-C1c(/CD 		As 34As 34	 Q,c2r:Q,c2r:	 SAs8aX.	
2 Cab)QI;7Cab)QH:6
 		CQ)<!=>Q,c26 T	
$ Cab)QH:6Cab"b1QHq#hC3QR
 		As 34 Q,c26	 SAs8$	
0 d1c2r*aX{,CDET!S"b)QHk+BC	
 Cab"-C+/FGCab"-C+/FG
 		CQ)<!=rBQ,c2r: q#h4	
& Cab"-C)/DECab"-C-/HI
 		CQ)<!=rBQ,c2r: C)4	
& Cab"-C+/FGCab"-C+/FG
 		CQ)<!=rBQ,c2r: q#h'	
, D$q#r2.!TI0FGE43B/1d)aY1GHE43B/1e*k1JK 		CQ)>!?D#Au-At 45At 45	 Q-sB;Q-sB;
 q$iQI>	
4 D$q#r2.!TI0FGE43B/1d)aY1GHE43B3q$i!TQPTI5VW 		At 45At 45At 45 #At,At 45At 45	 Q-sB;Q-sB;" TI4y1)	
w	X[x
y
[x
.H,$^/>":  !=>  ?  !=>  ? $&B& u6% 7% u6  7 . u6" 7""Q..")$X
 3& 	F=*K**53*=aCD""
rE   