
    d{                    P   d dl mZ d dlZd dlZd dlZd dlmZm	Z	m
Z
 d dlmZ d Zej                            d ej        dgd d g           ej        d d gd           ej        d	dd d gfi          g          d
             Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd ZdS )    )annotationsN)assert_allcloseassert_array_equalmock)assert_identicalc                ,   t          |           t          |          u s"t          |           t          |          k    sJ t          | t          j        t          j        t          j        f          rt          | |           d S t          | |           d S )N)	typefloat
isinstancexr	DataArrayDatasetVariableassert_identical_r   abs     8lib/python3.11/site-packages/xarray/tests/test_ufuncs.pyr   r      s    77d1ggqU1XX!5!5!5!5!blBJ<== !!Q1a         r   xdimsyc                P    t          | dz   t          j        |                      d S )N   )r   npcos)r   s    r   
test_unaryr      s&     AE26!99%%%%%r   c            
     L   dt          j        d          t          j        dgddg          t          j        ddgd          t          j        ddddgfi          g} t          |           D ]\  }}| |d          D ]}t          |dz   t          j        ||dz                        t          |dz   t          j        ||dz                        t          |dz   t          j        |dz   |                     t          |dz   t          j        |dz   |                     d S )Nr      r   r   r   r   )	r   zerosr   r   r   r   	enumerater   maximum)argsnt1t2s       r   test_binaryr(      s0   	

SEAq6""
aV#&&&

C#1v'((D 4 = =2qrr( 	= 	=BR!VRZBF%;%;<<<R!VRZBF%;%;<<<R!VRZQ%;%;<<<R!VRZQ%;%;<<<<		== =r   c            
     >   dt          j        d          t          j        dgddg          t          j        ddgd          t          j        ddddgfi          g} | D ]<}t          j        |          \  }}t          |d|z             t          ||           =d S )Nr   r    r   r   r   g      ?)r   onesr   r   r   r   frexpr   )r$   argactual_mantissaactual_exponents       r   test_binary_outr/   /   s    	



SEAq6""
aV#&&&

C#1v'((D  / /+-8C==(#)444#..../ /r   c                    t          j        ddg dfiddg dfi          } |                     d          }|                    d          }| d                             d          }t	          | t          j        ||                     t	          | t          j        ||                     t	          | t          j        ||                     t	          | t          j        ||                     t	          | t          j        ||d                              t	          | t          j        |d         |                     t	          | j        t          j        ||j                             t	          | j        t          j        |j        |                     t          j	        t          d          5  t          j        | j        j        |           d d d            d S # 1 swxY w Y   d S )Nr   r   )r   r   r   c)r   r   r   z mismatched lengths for dimensionmatch)r   r   groupbymeanr   r   r#   r   pytestraises
ValueErrorvariable)ds
ds_grouped
group_meanarr_groupeds       r   test_groupbyr>   =   s   	S3			*+cC3C-D	E	EBCJ%%JS'//#&&KRJ
;;<<<RJ
;;<<<RK<<===RJ<<===RJ
3@@AAARJsOZ@@AAART2:k:<@@AAART2:jlK@@AAA	z)L	M	M	M . .

24=*---. . . . . . . . . . . . . . . . . .s   : G''G+.G+c                 .   t          j        ddddgfidddgi          } t          j        dddgfdddddgi          }t          j        | |          }t          j        dddgfiddgi          }t	          ||           t          j        d	
          5  t          j        | |          }t          j        dt          j        dt          j        gft          j        ddg di          }t	          ||           d d d            d S # 1 swxY w Y   d S )Nr   r   r   r    r         r   outer)arithmetic_join)r   r   r    )coords)r   r   r   addr   set_optionsnan)ds1ds2actualexpecteds       r   test_alignmentrL   S   sl   
*cC!Q=)C!Q=
9
9C
*C!Q=q11C!Q=
A
ACVCFz3qc
+cA3Z88Hfh'''		0	0	0 , ,S!!:BF+,26::CCS
 
 
 	&(+++, , , , , , , , , , , , , , , , , ,s   A&D

DDc                     t          j        d          } t          j        | dt          j                  }|j        t          j        k    sJ d S )Nr   r   )dtype)r   r   r   rE   float64rN   )r   results     r   test_kwargsrQ   c   sB    
QAVAq
+++F<2:%%%%%%r   c                      G d d          } t          j        g d          } |             }t          j        ||          dk    sJ t          j        ||          dk    sJ d S )Nc                      e Zd Zd ZdS )6test_xarray_defers_to_unrecognized_type.<locals>.Otherc                    dS )Nother )selfr$   kwargss      r   __array_ufunc__zFtest_xarray_defers_to_unrecognized_type.<locals>.Other.__array_ufunc__k   s    7r   N)__name__
__module____qualname__rZ   rW   r   r   OtherrT   j   s#        	 	 	 	 	r   r^   r   r    r@   rV   out)r   r   r   r#   sin)r^   
xarray_objrV   s      r   'test_xarray_defers_to_unrecognized_typerd   i   s            iii((JEGGE:j%((G33336*%(((G333333r   c                 ,   t          j        d          } t          j        t	          j        d          ddg          }|                     dd          }t	          j        ||          }|j        dk    sJ t          |t          j                  sJ d S Nz
dask.array)r    r    r   r   r   )chunks)r    rh   	r6   importorskipr   r   r   r*   rE   rg   r   dar   r   rP   s       r   test_xarray_handles_daskrm   t       		\	*	*B
RWV__C:666A
v&&AVAq\\F=L((((fbl+++++++r   c                 ,   t          j        d          } t          j        t	          j        d          ddg          }|                     dd          }t	          j        ||          }|j        dk    sJ t          |t          j                  sJ d S rf   ri   rk   s       r   test_dask_defers_to_xarrayrp   }   rn   r   c                     t          j        g d          } t          j        t          d          5  t
          j                            | d           d d d            d S # 1 swxY w Y   d S )Nr_   zreduce methodr2   r   )r   r   r6   r7   NotImplementedErrorr   rE   reduce)rc   s    r   test_gufunc_methodsrt      s    iii((J	*2B	C	C	C % %
j!$$$% % % % % % % % % % % % % % % % % %s   !A  A$'A$c                 d   t          j        g d          } t          j        t          d          5  t          j        | d|            d d d            n# 1 swxY w Y   t          j        d          }t          j        || |           t          |t          j	        g d                     d S )Nr_   z`out` argumentr2   r   r`   )r@   )
r   r   r6   r7   rr   r   rE   r!   r   array)rc   rV   s     r   test_outrw      s    iii((J 
*2C	D	D	D . .
z1*----. . . . . . . . . . . . . . . HTNNEF5*%((((UBHYYY//00000s   AAAc                    t          j        g d          } t          j        dt          j                  }t          j        t          d          5  | 	                    |d|            d d d            d S # 1 swxY w Y   d S )Nr_   z(n)->())	signatureautospeczgeneralized ufuncsr2   __call__)
r   r   r   Mockr   rb   r6   r7   rr   rZ   )rc   fake_gufuncs     r   test_gufuncsr~      s    iii((J)i"&AAAK	*2G	H	H	H H H"";
JGGGH H H H H H H H H H H H H H H H H Hs   A77A;>A;)
__future__r   numpyr   r6   xarrayr   xarray.testsr   r   r   r   r   markparametrizer   r   r   r   r(   r/   r>   rL   rQ   rd   rm   rp   rt   rw   r~   rW   r   r   <module>r      s   " " " " " "          B B B B B B B B B B > > > > > >! ! ! SEAq6""aV#&&&
C#1v'(( & & &= = = / / /. . .,, , , & & &4 4 4, , ,, , ,% % %
1 
1 
1H H H H Hr   