
    bi<                       d dl m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 d dlmZ d dlmZ d dlmZ  e
j,                  d	       d
 Zd Zd Zd d d d d d d d d d d d d d d d d d d d  d! d" d# d$ d% d& d' gZe
j6                  j9                  d(e      d)        Zd* Ze
j6                  j9                  d(e      e
j6                  j?                  d+ ee             d,               Z e
j6                  j9                  d(e      e
j6                  j?                  d+ ee             d-               Z!d. Z"d/ Z#d0 Z$d1 Z%e
j6                  j9                  d2d3      e
j6                  j9                  d4g d5      d6               Z&e
j6                  j9                  d2d3      e
j6                  j9                  d4g d5      d7               Z'e
j6                  j9                  d4d8d9g      d:        Z(d; Z)d< Z*d= Z+d> Z,e
j6                  j9                  d?d@dAg      dB        Z-dC Z.dD Z/e
j6                  j9                  dEg dF      dG        Z0dH Z1dI Z2y)J    )annotationsN)deepcopy)product)ComplexWarning)	assert_eq)tokenize)typenamezdask.array.mac                    t         j                  j                  g dg dd      } t         j                  j                  g dg dd      }t         j                  j                  g ddd      }t        |       t        |       k(  sJ t        |      t        |      k(  sJ t        |      t        |      k(  sJ t        |       t        |      k7  sJ t        |       t        |      k7  sJ y )N         TTF
   mask
fill_valuer   F)npmamasked_arrayr   )mm2m3s      W/home/cdr/jupyterlab/.venv/lib/python3.12/site-packages/dask/array/tests/test_masked.pytest_tokenize_masked_arrayr      s    
9+>2NA			I,?A		NB			IEb		ABA;(1+%%%B<8B<'''B<8B<'''A;(2,&&&A;(2,&&&    c                     t         j                  j                  g dg dd      } t        j                  | dd      }t        ||        y )Nr   r   r   r   )r   Fchunksasarray)r   r   r   da
from_arrayr   )r   dms     r   test_from_array_masked_arrayr$      s:    
9+>2NA	qu	5Bb!r   c                 0   t         j                  j                  ddgddg      } t        j                  | | j
                  d      }|j                         }i }t        ||      }t        j                  j                  ddgddg      }t        ||       t        ||        t        |j                         t         j                  j                        sJ t        ||        t        |j                         t         j                  j                        sJ y )	Nr   r   r   r   Fr   )memoT)r   r   r   r!   r"   shapecopyr   masked_wherer   
isinstancecompute)txyr'   y2xxs         r   test_copy_deepcopyr2   %   s    
Aq6A/A
a7A	AD	!$	B			UDMAq6	2BaaOaiik255#5#5666b!bjjlBEE$6$6777r   c                    | S N r.   s    r   <lambda>r7   7   s    a r   c                ,    t        j                  |       S r4   )r!   expm1r6   s    r   r7   r7   8   s    bhhqk r   c                    d| z  S Nr   r5   r6   s    r   r7   r7   9   
    a!e r   c                    | dz  S r;   r5   r6   s    r   r7   r7   :   r<   r   c                    | dz  S r;   r5   r6   s    r   r7   r7   ;   s
    ad r   c                    | | z   S r4   r5   r6   s    r   r7   r7   <   r<   r   c                    | | z  S r4   r5   r6   s    r   r7   r7   =   r<   r   c                    | d   S )Nr   r5   r6   s    r   r7   r7   >   s
    ad r   c                    | d d df   S Nr   r5   r6   s    r   r7   r7   ?   s    a1g r   c                    | d dd ddf   S )Nr   r   r5   r6   s    r   r7   r7   @   s    aD!A# r   c                    | j                   S r4   )Tr6   s    r   r7   r7   A   s
    acc r   c                .    t        j                  | d      S )N)r   r   r   )r!   	transposer6   s    r   r7   r7   B   s    bll1i( r   c                "    | j                         S r4   sumr6   s    r   r7   r7   C   s    aeeg r   c                d    | j                  t        j                  | j                  d               S N)dotr   aranger(   r6   s    r   r7   r7   D   s     aeeBIIaggbk*+ r   c                d    | j                  t        j                  | j                  d               S rM   )rO   r   eyer(   r6   s    r   r7   r7   E   s     aeeBFF1772;'( r   c                v    t        j                  | t        j                  | j                  d d       ddg      S )Nr   )r   r   axes)r!   	tensordotr   onesr(   r6   s    r   r7   r7   F   s+    bll1bggaggbqk2&&9IJ r   c                &    | j                  d      S Nr   axisrJ   r6   s    r   r7   r7   G       aeeem r   c                &    | j                  d      S rY   )maxr6   s    r   r7   r7   H   r\   r   c                &    | j                  d      S )Nr   r   rZ   rJ   r6   s    r   r7   r7   I   s    aeee  r   c                @    | j                  t        j                        S r4   )astyper   
complex128r6   s    r   r7   r7   J   s    ahhr}}% r   c                &    | j                  d       S )Nc                    | dz  S r;   r5   r6   s    r   r7   z<lambda>.<locals>.<lambda>K   s
    QU r   )
map_blocksr6   s    r   r7   r7   K   s    all?+ r   c                $    | j                  d      S rC   )roundr6   s    r   r7   r7   L   s    aggaj r   c                |    | j                  | j                  d   | j                  d   z  | j                  d   f      S )Nr   r   r   )reshaper(   r6   s    r   r7   r7   M   s1    aiiaggaj0!''!*=> r   c                    t        |       S r4   )absr6   s    r   r7   r7   N   s
    c!f r   c                    | dkD  S )N      ?r5   r6   s    r   r7   r7   O   s
    a#g r   c                $    | j                  d      S )N)   rp   rp   rechunkr6   s    r   r7   r7   P       aii	" r   c                $    | j                  d      S )Nr   r   r   rq   r6   s    r   r7   r7   Q   rs   r   funcc                   t         j                  j                         j                  dd      }d||dk  <   t         j                  j	                  |d      } | |      } | |      }t        |t         j                  j                  |d             |j                  r7|j                         }t        |t        j                  j                        sJ y y )Nr   r   rp   r   r   r   r   r   皙?)r!   randomdefault_rngr   masked_equalr   filledr(   r,   r+   r   r   )rv   r.   r/   r1   yyzzs         r   
test_basicr   U   s    
		&&y&CAAa#gJ
1a A	aB	aBb"%%,,r1%&	xxZZ\"bee00111 r   c            
     0   t         j                  j                         } | j                  dd      }d||dk  <   | j                  dd      }d||dk  <   t         j                  j	                  |d      }t         j                  j	                  |d      }t        t        j                  ||d	      t         j                  j                  t        j                  ||d	      d             t        t        j                  ||d
	      t         j                  j                  t        j                  ||d
	      d             t        t        j                  ||d	      t         j                  j                  t        j                  ||d	      d             y )Nrx   ry   rz   r   r{   )rp   r   r   ru   )r   r   rT   r   r   )r`   )r   r   )r!   r|   r}   r   r~   r   rV   r   )rngr.   r/   r1   r   s        r   test_tensordotr   f   s)   
))


!C

9Y
/AAa#gJ

9Y
/AAa#gJ			Aq	!B			Aq	!B
Q'
R\\"bv6: 
Q'
R\\"bv6: 
Q 01
R\\"b/?@!Dr   zignore::c                ~   t         j                  j                         }|j                  dd      }|j                  dd      }d||dk  <   t         j                  j	                  |d      }t        j
                  ||gd      }t        j
                  ||gd      } | |      } | |      }t        ||dd       y )	Nrx   ry   rz   r   r{   rZ   F
check_meta
check_type)r!   r|   r}   r   r~   concatenater   )	rv   r   r.   r/   r   dsddsss	            r   test_mixed_concatenater   ~   s     ))


!C

9Y
/A

9Y
/AAa#gJ			Aq	!B
1vA&A
2wQ'A	aB	aBb"59r   c                    t         j                  j                         j                  dd      }d||dk  <   d }|j                  |      } | |      } | |      }t	        ||dd       y )	N)rp   r   rp   ry   rz   r   r{   c                t    t        j                          dk  r t        j                  j                  | d      S | S )Nrn   r   )r|   r   r   r~   r6   s    r   r7   z#test_mixed_random.<locals>.<lambda>   s(    v}}/D255%%a+ ! r   Fr   )r!   r|   r}   rf   r   )rv   r   fnr   r   r   s         r   test_mixed_randomr      sf     			&&y&CAAa#gJ	KB	RA	aB	aBb"59r   c                    t         j                  j                         j                  dd      } d| | dk  <   t         j                  j	                  | d      } t        j
                  dd      }t        j                  || gd	      }|j                  d
k(  sJ |j                         }t        |t        j                  j                        sJ y )Nr   r      r   rz   r   r{   )r   r   )r   r   r   rZ   )r      )r!   r|   r}   r   r~   zerosr   r(   r,   r+   r   r   )r/   r.   zr   s       r   test_mixed_output_typer      s    
		&&x&?AAa#gJ
1a A
(A
1vA&A77h	
Bb"%%,,---r   c                    t        j                  g ddz        j                  d      } t        j                  g ddz        }t        j                  | d      }t        j                  |d      }t         j
                  j                  | |      }t        || g||g      D ]/  \  }}t        t        j
                  j                  ||      |       1 t        t        j
                  j                  |d	      t         j
                  j                  | d	             t        t        j
                  j                  |d	      t         j
                  j                  | d	             t        t        j
                  j                  |d	      t         j
                  j                  | d	             t        t        j
                  j                  |d	      t         j
                  j                  | d	             t        t        j
                  j                  |d	      t         j
                  j                  | d	             t        t        j
                  j                  |d	      t         j
                  j                  | d	             t        t        j
                  j                  d
|      t         j
                  j                  d
|              t        t        j
                  j                  |dkD  |      t         j
                  j                  | dkD  |              t        j                   t"              5  t        j
                  j                  |dkD  d d d	f   |       d d d        t        t        j
                  j%                  |dd      t         j
                  j%                  | dd             t        t        j
                  j'                  |dd      t         j
                  j'                  | dd             t        t        j
                  j)                  |d      t         j
                  j)                  | d             t        j                   t*              5  t        j
                  j                  ||       d d d        t        j                   t*              5  t        j
                  j)                  ||       d d d        | j-                  d      }t         j.                  x|d<   |d<   t        j                  |d      }t        t        j
                  j1                  |      t         j
                  j1                  |             t         j
                  j                  |d	      }t        j
                  j                  |d	      }t        t        j
                  j3                  |d	      t         j
                  j3                  |d	             y # 1 sw Y   {xY w# 1 sw Y   jxY w# 1 sw Y   5xY w)NrN   r   r   r      r   )r   r   r   r   r   r   r   rz   rp   r   FrN   r   f8r   r   )   r   r   )r   arrayrj   r!   r"   r   masked_greaterr   r   masked_greater_equalmasked_lessmasked_less_equalr~   masked_not_equalr*   pytestraises
IndexErrormasked_insidemasked_outsidemasked_values
ValueErrorrb   nanmasked_invalidfix_invalid)	r.   r/   dxdysolabmydmys	            r   test_creation_functionsr      s   
"R'(00:A
!A%&A	q	#B	q	#B
%%

q!
$CQ"a) 31"%%&&q!,c23 bee""2q)255+?+?1+EFbee((Q/1K1KAq1QRbeeA&(9(9!Q(?@bee%%b!,bee.E.Ea.KLbee  Q'););Aq)ABbee$$R+RUU-C-CAq-IJ bee  +RUU-?-?q-IJbee  a,bee.@.@Q.JK	z	" /
BFAqD>2./ bee!!"b!,bee.A.A!R.KLbee""2r1-ruu/C/CAr1/MNbee!!"b)255+>+>q"+EF
 
z	" #
2r"# 
z	" $
B#$ 	
AAdGag	q	#Bbee""2&(<(<Q(?@			a	#B
%%

r1
%Cbee2BEE4E4EbUV4E4WX3/ /# #$ $s$   3+W!W$!W1W!$W.1W;c                     t        j                  g ddz        j                  d      } t        j                  | d      }t         j
                  j                  | d      }t        j
                  j                  |d      }t        t        j
                  j                  |      t         j
                  j                  |             t        t        j
                  j                  |d      t         j
                  j                  |d             y )Nr   r   r   r   rz   r   )	r   r   rj   r!   r"   r   r~   r   r   )r.   r   mxmdxs       r   test_filledr      s    
"R'(00:A	q	#B			Aq	!B
%%

R
#Cbeell3b!12beell3#RUU\\"b%9:r   c                   | j                         }|t        j                  j                  u r||u sJ y t	        |      t	        |      k(  sJ t        |d      rrt        j                  j                  |j                  |j                         t        j                  j                  |       } t        j                  j                  |      }t        | |d       y )Nr   T)	equal_nan)r,   r   r   maskedtypehasattrtestingassert_equalr   r!   r   r   )r   r   ress      r   assert_eq_mar      s    
))+C
beellaxxCyDG###3JJ##CHHaff5QAQA!Q$'r   dtype)i8r   	reduction)	rK   prodmeanvarstdminr^   anyallc                   t         j                  j                  d      j                  d      dz  j                  |       }t	        j
                  |d      }t         j                  j                  |d      }t        j                  j                  |d      }t        t        |      }t        t         |      }t         ||       ||             t         ||d       ||d             t         ||d	d
       ||d	             t         ||dd       ||d             t         ||dd	d       ||dd	             t         ||dd       ||d             t         ||dd	d       ||dd	             y )N*   )r   r   r   rp   rp   rz   r   r   rZ   Trp   )keepdimssplit_everyr   r   )r[   r   )r[   r   r   )r[   r   r   )
r   r|   r}   rb   r!   r"   r   r   getattrr   )r   r   r.   r   r   r   dfuncrv   s           r   test_reductionsr      sE   
 
		r	"	)	)(	3b	8@@GA	q	(B			a	#B
%%

r1
%CB	"E2y!DsT"X&s#T"1%56sTq94T;RSs2D!4DEcDa8Ra$' s2D!4DEcDa8Ra$'r   c                    t         j                  j                  ddg| d      }t        j                  |d      }t        t        |      }t        t         |      }t         ||       ||             y )Nr   r   T)r   r   F)r    )r   r   r   r!   r"   r   r   )r   r   r.   r   r   rv   s         r   test_reductions_allmaskedr     s]    
 	Aq6T:A	q%	(BB	"E2y!DrDG$r   argminargmaxc                   t         j                  j                         j                  d      }t        j                  |d      }t         j
                  j                  |d      }t        j
                  j                  |d      }t        t        |       }t        t         |       }t         ||       ||             t         ||d       ||d             t         ||d       ||d             t         ||d       ||d             y )N)r   r   r   )r   rp   r   rz   r{   r   r   r   )	r   r|   r}   r!   r"   r   r   r   r   )r   r.   r   r   dmxr   rv   s          r   test_arg_reductionsr      s    
		&&|4A	q	+B			a	%B
%%

r3
'CB	"E2y!DsT"X&sAR,sAR,sAR,r   c                    t         j                  j                  d      j                  d      } t        j                  | d      }t         j
                  j                  | d      }t        j
                  j                  |d      }dD ]Z  }t        |j                  |      |j                  |             t        |j                  |      |j                  |             \ y )Nr   )r         )   r   rp   rz   r{   )r   r   r   rZ   )
r   r|   r}   r!   r"   r   r   r   cumsumcumprod)r.   r   r   r   r[   s        r   test_cumulativer   0  s    
		a ''5A	q	+B			a	%B
%%

r3
'C DSZZTZ*BII4I,@AS[[d[+RZZTZ-BCDr   c                 <   t         j                  j                         j                  d      } t        j                  | d      }t         j
                  j                  | d      }t        j
                  j                  |d      }t        t        j
                  j                  |      t         j
                  j                  |             t        t        j
                  j                  |      t         j
                  j                  |              t        t        j
                  j                  |      t         j
                  j                  |             t        t        j
                  j                  |      t         j
                  j                  |              y )Nr   r   rp   rz   r{   )
r   r|   r}   r!   r"   r   r   r   getmaskarraygetdatar.   r   r   r   s       r   test_accessorsr   ;  s    
		&&x0A	q	(B			a	%B
%%

r3
'Cbee  %ruu'9'9"'=>bee  $bee&8&8&;<beemmC "%%--"34beemmBq!12r   c            	     ,   t         j                  j                         j                  d      j                  d      } t	        j
                  | d      }t	        j
                  t        j                  d      d      }ddd|fg}t        | |g|      D ]C  \  }\  }}t        t        j                  j                  ||	      t         j                  j                  | |	             t        t        j                  j                  ||d
kD  |      t         j                  j                  | | d
kD  |             t        t        j                  j                  ||d
kD  |      t         j                  j                  | | d
kD  |             t        t        j                  j                  ||d      t         j                  j                  | |d             F t        j                  t              5  t        j                  j                  ||	       d d d        t        j                  t         j                  j                        5  t        j                  j                  ||d dd df          d d d        y # 1 sw Y   jxY w# 1 sw Y   y xY w)Nr   f4r   rz   r   r5   )NN)rn   rn   r   r{   r   r   )r   r   r   r&   )r   r|   r}   rb   r!   r"   r   r   r   r   r   r   r   r   	MaskError)r.   r   f1fill_valuesdatadffs          r   test_masked_arrayr   G  s   
		&&x077=A	q	(B	rxx{2	.BaW5K !R+6 
gr1EEt3RUU5G5GVW5G5X	
 	EEt$*DEEqq3w1=	
 	EEt$*DEEqq3w1=	
 	EEt$?EEqQd;	

" 
z	" .
2"-. 
ruu	' 0
2Brr2A2vJ/0 0. .0 0s   3"I>
+J
>J
Jc                 x   t         j                  j                         j                  ddd      } t	        j
                  | d      }t         j                  j                  | d      }t        j                  j                  |d      }t        j                  j                  |d       t         j                  j                  |d       t        ||       t        j                  j                  |d       t         j                  j                  | d       t        ||        t        j                  t              5  t        j                  j                  |d       d d d        t        j                  t              5  t        j                  j                  ||       d d d        y # 1 sw Y   LxY w# 1 sw Y   y xY w)	Nr   r   r   r   rz   r   ig@xD)r   r|   r}   integersr!   r"   r   r   set_fill_valuer   r   r   	TypeErrorr   r   s       r   test_set_fill_valuer   e  s4   
		((B9A	q	(B			a	#B
%%

r1
%CEEc"EES!bEES!EEC Q	y	! (
S$'( 
z	" &
S"%& &( (& &s   8!F$:!F0$F-0F9r   FTc           	     
   t        j                  ddgddgddgg      }t        j                  d      j                  d      }t         j                  j                  ||      }t
        j                  j                  ||d      }t        j                  dd	g      }t        j                  |d
      }t
        j                  j                  ||d|       }t        |t         j                  j                  ||d|              y )NTFr   r   r   r&   r   r   r   r   g      ?g      ?rz   r   )weightsr[   r   )
r   r   rP   rj   r   r!   r   r"   averager   )r   r   r   r   d_ar  	d_weightsda_avgs           r   &test_average_weights_with_masked_arrayr  z  s    88dE]T4L5$-@AD99Q<'D
Dt$A
%%

$T!

<Chhd|$Gga0IUU]]3	H]MFfbeemmAwQmRSr   c                    t        j                  ddgddgddgg      } t        j                  d      j                  d      }t         j                  j                  ||       }t        j                  |d      }||z   }||z   }t        ||       t        |j                         t         j                  j                        sJ y )NTFr   r  r&   )r   r   rz   )r   r   rP   rj   r   r!   r"   r   r+   r,   r   )r   r.   r   r   r   r   s         r   !test_arithmetic_results_in_maskedr
    s    88dE]T4L5$-@AD
		!V$AUU[[[&F	q	(B
v+C
f*Cc3ckkmRUU%7%7888r   c                 `   t        j                  d      j                  d      } | dz  dk(  | dz  dk(  z  }t         j                  j	                  ||       }t        j                  |d      }dD ]P  }t
        j                  j                  ||	      }t         j                  j                  ||	      }t        ||       R t
        j                  j                  |d
      }t         j                  j                  |d
      }t        ||       t         j                  j                  d      }t        j                  |d      }t        t
        j                  j                  |      t         j                  j                  |             t        j                  d      j                  d      }t        j                  | d      }dD ]c  }t
        j                  j                  ||	      }t         j                  j                  ||	      }t        ||t        j                  dk7         e y )Nx   )   r   r   r   rp   )r   r   rz   )Nr   r   rZ   Tr   win32)check_dtype)r   rP   rj   r   r*   r!   r"   countr   
masked_allsysplatform)r   r   r.   r   r[   r   r   s          r   
test_countr    s   99S>!!(+D1HMdQh!m,D
4&A	q	(B eekk"4k(eekk!$k'#s
 %%++b4+
(C
%%++a$+
'Cc3 	"A	q	(Bbeekk"oruu{{1~. 			#x(A	tF	+B Aeekk"4k(eekk!$k'#s(?@Ar   funcname)	ones_like
zeros_like
empty_likec                X   t        j                  ddgddgddgg      }t        j                  d      j                  d      }t         j                  j                  ||      }t
        j                  j                  ||d      }t        t
        j                  |       }t        t         j                  j                  |       } ||      } ||      }d| v rGt        t
        j                  j                  |      t         j                  j                  |             y t        ||       y )	NTFr   r  r&   r   r  empty)r   r   rP   rj   r   r!   r   r   corer   r   )	r  r   r   r   r  da_funcnp_funcr   r   s	            r   test_like_funcsr    s    88dE]T4L5$-@AD99Q<'D
Dt$A
%%

$T!

<CbeeX&Gbeejj(+G
#,C
!*C("%%$$S)255+=+=c+BC#sr   c                    t        j                  d      j                  d      } t        j                  g dg dg dg      }t         j                  j                  | |      }t
        j                  j                  | |d      }|d	kD  |d	kD  f||f|d
k  |d
k  f|dk(  |dk(  ffD ]  \  }}t         j                  j                  |      }t
        j                  j                  |      }t        |t        |            sJ t        |      t        |      k(  sJ t        t        |            D ]  }t        ||   ||            y )N	   )r   r   )TFFr   )TFTr&   r   r  rp   r   r   )r   rP   rj   r   r   r!   r   nonzeror+   r   lenranger   )	r   r   r   r  c1c2r   r   is	            r   test_nonzeror'    s*   99Q<'D88)+>@STUD
Dt$A
%%

$T!

<C 
Qa	
C	
b#)	
a	 &B eemmBeemmB#tCy)))3x3s8###s3x 	&Ac!fc!f%	&&r   c            
     ,   t         j                  j                         } | j                  dd      }| j	                  ddgdddg      }dx|d	<   |d
<   t
        j                  j                  ||d      }t         j                  j                  ||      }| j                  dd      j                  t         j                        }t        j                  |d      }t         j                  j                  |      }t
        j                  j                  |      }t        t        |            D ]  }t        ||   ||           |dkD  |dkD  f||fdd	dt         j                   t         j                   fddt         j"                  t         j"                  ff	D ]z  \  }	}
d|d d d f    |d d d f    f|d d |d d ffD ]S  \  }}t
        j                  j                  |	||      }t         j                  j                  |
||      }t        ||       U | y )Nr   )      )sizeFTrn   )r   r+  pr   r   r   )rp   r   )r   r   r&   r)  )rp   rz   r   r   )TTr   )FFr*  )r   r|   r}   r   choicer!   r   r   r   rb   uint8r"   wherer#  r"  r   True_False_)r   r.   r   r   r/   er   r   r&  r$  r%  b1b2w1w2s                  r   
test_wherer7    s   
))


!CRh'A::Hc
:CDAdGag
147A
AD!ARb!((2A
a%A %%++a.C
%%++a.C3s8_ "#a&#a&!" 
QA	
A	288	BII
 B 1d7a4j[9AcrFAcrF;KL 	FBRB'BRB'Bb"	r   )3
__future__r   r|   r  r)   r   	itertoolsr   numpyr   r   
dask.arrayr   r!   dask.array.numpy_compatr   dask.array.utilsr   	dask.baser   
dask.utilsr	   importorskipr   r$   r2   	functionsmarkparametrizer   r   filterwarningsr   r   r   r   r   r   r   r   r   r   r   r   r   r  r
  r  r  r'  r7  r5   r   r   <module>rE     s   "  
      2 &     O $'8$ (+(J %+>""7	> +2 ,2 0 +hx'?&@AB: C ,:  +hx'?&@AB
: C ,
:
./Yd;
( ,/R 00 ,/R% 0% x&:;- <-D	30<&* eT]3
T 4
T	9A: %NO P$&,r   