
    {bg"                        d Z ddlZddlmZmZ ddlZddlZddl	m
Z
 d Zd Z G d de      Z G d	 d
e      Z G d de      Zd Zd Zd Z ed      Z ed      Z ed      Z ed      Z ed      Z ed      Z ed      Z ed      Z ed      Z ed      Z ed      Z ed      Z ed      Z ed      Z  ed      Z! ed      Z" ed       Z# ed!      Z$ ed"      Z% ed#      Z& ed$      Z' ed%      Z( ed&      Z) ed'      Z* ed(      Z+ ed)      Z, ed*      Z- ed+      Z. ed,      Z/ ed-      Z0 ed.      Z1 ed/      Z2 ed0      Z3 ed1      Z4 ed2      Z5 ed3      Z6 ed4      Z7 ed5      Z8 ed6      Z9 ed7      Z: ed8      Z; ed9      Z< ed:      Z= ed;      Z> ed<      Z? ed=      Z@ ed>      ZA ed?      ZB ed@      ZC edA      ZD edB      ZE edC      ZF edD      ZG edE      ZH edF      ZI edG      ZJ edH      ZK edI      ZL edJ      ZM edK      ZN edL      ZO edM      ZP edN      ZQ edO      ZR edP      ZS edQ      ZT edR      ZU edS      ZV edT      ZW edU      ZX edV      ZY edW      ZZ edX      Z[ edY      Z\ edZ      Z] ed[      Z^ ed\      Z_ ed]      Z` ed^      Za ed_      Zb ed`      Zc eda      Zd edb      Ze edc      Zf edd      Zg ede      Zh edf      Zi edg      Zj edh      Zk edi      Zl edj      Zm edk      Zn edl      Zo edm      Zp edn      Zq edo      Zr edp      Zs edq      Zt edr      Zu eds      Zv edt      Zw edu      Zxg dvZyy)wz$xarray specific universal functions.    N)ABCabstractmethod)GroupByc                 :   t        | t        j                        r)| j                  D ]  }t	        |j
                  |        |S t        | t        j                        r"| j                  D ]  }t	        | |   |        |S t        | t              r#t	        t        t        |             d   |       |S t        | t        j                  t        j                  z        rt	        | j                  |       |S t        | dd       }||j                   |              |S )N   __array_namespace__)
isinstancexrDataTreesubtree_walk_array_namespacesdatasetDataset	data_varsr   nextiter	DataArrayVariabledatagetattradd)obj
namespacesnodename	namespaces        -lib/python3.12/site-packages/xarray/ufuncs.pyr   r      s    #r{{#KKD"4<<<    
C	$MMD"3t9j9 "  
C	!tDIq1:>  
C3	4sxx4 	 C!6=	 NN9;'    c                  &   t               }| D ]  }t        ||        |j                  t               t	        |      dkD  r(|D cg c]  }|j
                   }}t        d| d      t	        |      rt        t        |            S t        S c c}w )Nr   zMixed array types z are not supported.)	setr   discardnplen__name__
ValueErrorr   r   )argsxpsargmodulenamess        r   get_array_namespacer+       s    
%CsC(  KKO
3x!|/23sVs3-eW4GHII!#h4S	?.B. 4s   Bc                   (    e Zd Zd Zed        Zd Zy)_ufunc_wrapperc                 T    || _         t        t        |      r| j                          y y N)r$   hasattrr"   _create_doc)selfr   s     r   __init__z_ufunc_wrapper.__init__.   s$    2t r   c                     t         r/   )NotImplementedError)r2   r&   kwargss      r   __call__z_ufunc_wrapper.__call__3   s    !!r   c                     t        t        | j                        j                  }t	        t        t        |      | j                              }d| j                   d| | _        y )Nz+xarray specific variant of :py:func:`numpy.z`. Handles xarray objects by dispatching to the appropriate function for the underlying array type.

Documentation from numpy:

)r   r"   r$   __doc___remove_unused_reference_labels_skip_signature_dedent)r2   docs     r   r1   z_ufunc_wrapper._create_doc7   sZ    b$--(00-GCL$--8
 :$-- I, -052 	r   N)r$   
__module____qualname__r3   r   r7   r1    r   r   r-   r-   -   s     
 " "

r   r-   c                       e Zd ZdZd Zy)_unary_ufuncz%Wrapper for dispatching unary ufuncs.c                v    t        |      }t        || j                        }t        j                  ||fddi|S Ndaskallowedr+   r   r$   r
   apply_ufunc)r2   xr6   xpfuncs        r   r7   z_unary_ufunc.__call__G   s7     #r4==)~~dA@I@@@r   Nr$   r>   r?   r9   r7   r@   r   r   rB   rB   D   s    /Ar   rB   c                       e Zd ZdZd Zy)_binary_ufuncz&Wrapper for dispatching binary ufuncs.c                z    t        ||      }t        || j                        }t        j                  |||fddi|S rD   rG   )r2   rI   yr6   rJ   rK   s         r   r7   z_binary_ufunc.__call__P   s;     A&r4==)~~dAqCyCFCCr   NrL   r@   r   r   rN   rN   M   s    0Dr   rN   c                     t        | t              s| S t        t        |      j                  }| j                  |      r| j                  d      }| |dz   d  } | S )Nz

   )r	   strr   r"   r$   
startswithfind)r=   r   np_namesignature_ends       r   r;   r;   V   sV    c3
 b$((G
~~g(-!#%&Jr   c                     t        | t              s| S d}t        |      D ].  }d| d}d| d}| d}|| vs|| v r| j                  ||      } 0 | S )N   z.. [][z]_z.    )r	   rS   rangereplace)r=   max_referencesnumlabel	referenceindexs         r   r:   r:   d   ss    c3
N^$se1uBK	%uyC/kk%' % Jr   c                 P    t        | t              s| S t        j                  |       S r/   )r	   rS   textwrapdedent)r=   s    r   r<   r<   v   s     c3
??3r   absabsoluteacosacosharccosarccosharcsinarcsinharctanarctanhasinasinhatanatanhbitwise_countbitwise_invertbitwise_notcbrtceilconj	conjugatecoscoshdeg2raddegreesexpexp2expm1fabsfloorinvertisfiniteisinfisnanisnatloglog10log1plog2logical_notnegativepositiverad2degradians
reciprocalrintsignsignbitsinsinhspacingsqrtsquaretantanhtruncr   arctan2atan2bitwise_andbitwise_left_shift
bitwise_orbitwise_right_shiftbitwise_xorcopysigndivideequalfloat_powerfloor_dividefmaxfminfmodgcdgreatergreater_equal	heavisidehypotlcmldexp
left_shiftless
less_equal	logaddexp
logaddexp2logical_and
logical_orlogical_xormaximumminimummodmultiply	nextafter	not_equalpowpower	remainderright_shiftsubtracttrue_divideangleisreal	iscomplex)frf   rg   rh   ri   rj   rk   rl   rm   rn   ro   rp   rq   rr   rs   rt   ru   rv   rw   rx   ry   rz   r{   r|   r}   r~   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   )zr9   rd   abcr   r   numpyr"   xarrayr
   xarray.core.groupbyr   r   r+   r-   rB   rN   r;   r:   r<   rf   rg   rh   ri   rj   rk   rl   rm   rn   ro   rp   rq   rr   rs   rt   ru   rv   rw   rx   ry   rz   r{   r|   r}   r~   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   __all__r@   r   r   <module>r      sg   *  #   '(
/
S 
.A> ADN D$  5
#FW	h	
y
!	h	
y
!	h	
y
!FWFW_-./=)FFF%	5F
y
!
y
!5FWFW	h	
#WWW5WWF=)
#
#
y
!
y
!,'
FF
y
!5F
y
!F	h	5FW E
	
"gM*"#78 <(
#$9: M*$	x	 gM*^,VVVE
	
"o.+&	gEg<(
V<(
+&	<(
M*<(
M*
	
"
	
"E$+&	+&	Eg+&	M*$M* 	W	h	%	gr   