
    bi                    j   d dl mZ d dlmZ d dlZd dlmZ d dlm	Z	m
Z
mZm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.                  ej0                  j2                        d        Z eej0                        d#d       Zd Z eej0                  j:                        Z eej0                  j<                        Z eej0                  j>                        Z eej0                  j@                        Z  eej0                  jB                        Z! eej0                        d        Z" eej0                        d        Z# eej0                        d        Z$ eej0                        d        Z% eej0                        d        Z& eej0                        d$d       Z' eej0                        d#d       Z( eej0                        d        Z) eej0                        d        Z*ej0                  jV                  dfdZ, eej0                        ej0                  jV                  dfd       Zd Z- eej0                        d        Z. eej0                        d%d       Z/d&dZ0 eej0                        d'd       Z1 eej0                  jd                        d        Z3 eej0                  jd                        d        Z4 eej0                  jd                        d         Z5 eej0                  jd                        d!        Z eej0                  jd                        d&d"       Z6y)(    )annotationswrapsN)chunk)
asanyarray	blockwiseelemwise
map_blocks)	reduction_average)nonzero)normalize_token)derived_fromc                    t        | j                        }t        | j                        }t        | j                        }|||fS N)r   datamask
fill_value)xr   r   r   s       H/home/cdr/jupyterlab/.venv/lib/python3.12/site-packages/dask/array/ma.pynormalize_masked_arrayr      s9    166"D166"D .J$
##    c                n    t        |       } | j                  t        j                  j                  |      S N)r   )r   r
   npmafilledar   s     r   r   r      s&    1A<<<<<r   c                .     t                fd       }|S )Nc           	        t        |       } t        |      }t        t        | j                              d d d   }t        t        |j                              d d d   }t	        ||t
              }t        || |||| j                        S )N)keydtype)r   tuplerangendimmaxlenr   r&   )r    valueaindsvindsoindsfs        r   _z_wrap_masked.<locals>._   sv    qM5!eAFFm$TrT*eEJJ'(2.E5c*E1eUEIIr   r   )r0   r1   s   ` r   _wrap_maskedr2      s"    
1XJ J Hr   c           	         t        |       } t        |dd      rt        d      t        t	        | j
                              }t        t        j                  j                  || ||d| j                        S )Nshape z1da.ma.masked_equal doesn't support array `value`sr%   )r   getattr
ValueErrorr'   r(   r)   r   r   r   masked_equalr&   )r    r,   indss      r   r8   r8   2   sZ    1Augr"LMMqvvDRUU''q$rQQr   c                f    t        |       j                  t        j                  j                        S r   )r   r
   r   r   masked_invalidr    s    r   r;   r;   ;   s!    a=##BEE$8$899r   c                n    t        |       } | j                  t        j                  j                  ||      S r   )r   r
   r   r   masked_insider   v1v2s      r   r>   r>   @   s(    1A<<++R44r   c                n    t        |       } | j                  t        j                  j                  ||      S r   )r   r
   r   r   masked_outsider?   s      r   rC   rC   F   s(    1A<<,,b"55r   c           	        t        | dd      }|r+||j                  k7  rt        d|d|j                  d      t        |       } t        |      }t	        t        |j                              }t	        t        | j                              }t        t        j                  j                  || ||||j                        S )Nr4   r5   z<Inconsistent shape between the condition and the input (got z and )r%   )r6   r4   
IndexErrorr   r'   r(   r)   r   r   r   masked_wherer&   )	conditionr    cshaper-   cindss        r   rG   rG   L   s    Y,F&AGG#'-qww8
 	
 9%I1A%- E%	'(E
E9eQQWW r   c                    t        |       } t        |dd      rt        d      t        t        j
                  j                  | ||||      S )Nr4   r5   z2da.ma.masked_values doesn't support array `value`s)rtolatolshrink)r   r6   r7   r
   r   r   masked_values)r   r,   rL   rM   rN   s        r   rO   rO   ]   sG    1Augr"MNN
QDtF r   c                n    t        |       } | j                  t        j                  j                  |      S r   )r   r
   r   r   fix_invalidr   s     r   rQ   rQ   g   s(    1A<<))j<AAr   c                j    t        |       } | j                  t        j                  j                        S r   )r   r
   r   r   getdatar<   s    r   rS   rS   m   s"    1A<<&&r   c                j    t        |       } | j                  t        j                  j                        S r   )r   r
   r   r   getmaskarrayr<   s    r   rU   rU   s   s$    1A<<**++r   c                V    d|v r|d= t        j                  j                  | f||d|S )Nchunks)r   r&   )r   r   masked_array)r   r   masked_dtypekwargss       r   _masked_arrayr[   y   s3    6855dL\LVLLr   c                   t        |       } t        t        | j                              }|| |g}t	        |dd      rt        d      ||d<   |t        j                  j                  urt        |      }|j                  dk(  r|j                  d| j                  z        }ne| j                  |j                  k7  rLt        j                  j                  dt        | j                        dt        |j                        d	      |j                  ||g       d
|v r	|d
   |d<   n| j                  |d
<   t!        t"        g|i |S )Nr4   r5   z#non-scalar fill_value not supportedr      )r]   z,Mask and data not compatible: data shape is z, and mask shape is .r&   rY   )r   r'   r(   r)   r6   r7   r   r   nomasksizereshaper4   	MaskErrorreprextendr&   r   r[   )r   r   r   rZ   r9   argindss         r   rX   rX      s   dDtyy!"DT4 Gz7B'>??%F<255<<$99><<tyy 01DZZ4::%%%// djj)4

+;= 
 	d|$&!'~**w]7W777r   c                    t        | t        j                  j                        r1| j	                         } t        j                  j                  | |       | S r   )
isinstancer   r   rX   copyset_fill_value)r   r   s     r   _set_fill_valuerj      s=    !RUU''(FFH
Q:6Hr   c                "   t        |       } t        |dd      rt        d      t        j                  j
                  j                  || j                        }| j                  t        |      }|j                  | _
        |j                  | _        y )Nr4   r5   z3da.ma.set_fill_value doesn't support array `value`s)r   r6   r7   r   r   core_check_fill_valuer&   r
   rj   daskname_name)r    r   ress      r   ri   ri      sg    1Az7B'NOO--j!''BJ
,,

3CXXAFhhAGr   c                $    t        | |||d|      S )NT)	is_maskedkeepdimsr   )r    axisweightsreturnedrt   s        r   averagerx      s    AtWh$RRr   c                F    t         j                  j                  | ||      S )N)ru   rt   )r   r   count)r   ru   rt   s      r   _chunk_countr{      s    55;;qth;77r   c           
     h    t        | t        t        j                  ||t        j
                  |d       S )N)ru   rt   r&   split_everyout)r   r{   r   sumr   intp)r    ru   rt   r}   s       r   rz   rz      s/    			gg	 	r   c                    t        |       }  | j                  t        j                  j                  j
                  fi |S r   )r   r
   r   r   rl   	ones_liker    rZ   s     r   r   r      s/    1A1<<

,,777r   c                    t        |       }  | j                  t        j                  j                  j
                  fi |S r   )r   r
   r   r   rl   
zeros_liker   s     r   r   r      /    1A1<<

--888r   c                    t        |       }  | j                  t        j                  j                  j
                  fi |S r   )r   r
   r   r   rl   
empty_liker   s     r   r   r      r   r   c                D    t        t        |       t        |        z        S r   )_nonzerorS   rU   r<   s    r   r   r      s    GAJ,q/!1122r   c                    |d u |d u k7  rt        d      ||t        |       S t        t        j                  j
                  | ||      S )Nz1either both or neither of x and y should be given)r7   r   r	   r   r   where)rH   r   ys      r   r   r      sK    	T	qDy!LMM			y!!Y155r   r   )gh㈵>g:0yE>T)NNFF)NN)NFN)7
__future__r   	functoolsr   numpyr   
dask.arrayr   dask.array.corer   r   r	   r
   dask.array.reductionsr   dask.array.routinesr   r   r   dask.tokenizer   
dask.utilsr   registerr   rX   r   r   r2   masked_greatermasked_greater_equalmasked_lessmasked_less_equalmasked_not_equalr8   r;   r>   rC   rG   rO   rQ   rS   rU   r_   r[   rj   ri   rx   r{   rz   rl   r   r   r   r   r5   r   r   <module>r      s,   "    G G + ( 3 ) # "%%,,-$ .$ bee= =

 bee223#BEE$>$>? 255,,- !8!89  6 67  beeR R bee: : bee5 5
 bee6 6
 bee   bee  beeB B
 bee' '
 bee, ,
  UU\\ M beeEELLT 8 8: bee  beeS S8 bee
 
 beejj8 8
 beejj9 9
 beejj9 9
 beejj3 3 beejj6 6r   