
    biG'                    *   d dl mZ 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mZ d dlmZ d dlmZ d d	lmZ d d
lmZmZ efdZ G d d      Z ee      d        Z G d d      Z eej:                        Z eej<                        Z eej>                        Z eej@                        Z  eejB                        Z! eejD                        Z" eejF                        Z# eejH                        Z$ eejJ                        Z% eejL                        Z& eejN                        Z' eejP                        Z( eejR                        Z) eejT                        Z* eejV                        xZ,Z+ eejZ                        Z- eej\                        Z. eej^                        Z/ eej`                        Z0 eejb                        Z1 eejd                        Z2 eejf                        Z3 eejh                        Z4 eejj                        Z5 eejl                        Z6 eejn                        Z7 eejp                        Z8 eejr                        Z9 eejt                        Z: eejv                        Z; eejx                        Z< eejz                        Z= eej|                        Z> eej~                        Z? eej                        Z@ eej                        ZA eej                        ZB eej                        ZC eej                        ZD eej                        ZE eej                        ZF eej                        ZG eej                        ZH eej                        ZI eej                        ZJ eej                        ZK eej                        ZL eej                        ZM eeMej                         ZO eeMej                        ZP eej                        ZQ eej                        ZR eej                        ZS eej                        ZT eej                        ZU eej                        ZV eej                        ZW eej                        ZX eej                        ZY eej                        ZZ eej                        Z[ eej                        Z\e\Z] eej                        Z^ eej                        Z_ eej                        Z` eej                        Za eej                        Zb eej                        Zc eej                        Zd eej                        Ze eej                        Zf eej                        Zg eej                        Zh eej                        Zi eej                        Zj eej                        Zk eej                        Zl eej                        Zm eej                        Zn eej                        Zo eej                        Zp eej                        ZqeqZr eej                        Zs eej                        Zt eej                        Zu eej                        Zv eej                        Zw eej                        Zx eej                        Zy eej                        Zz eej                        Z{ ee      dd       Z| ee      d        Z} ee      d        Z~ ee      d        Zy)    )annotations)partial)getitemN)core)Arrayapply_infer_dtypeasarray	blockwiseelemwise)is_dask_collection)HighLevelGraph)normalize_token)derived_fromfuncnamec                R      fd} j                   |_          t        |      |      S )z&Wrap up numpy function into dask.arrayc                     | D cg c]  }t        |d      s| }}t        |      dkD  r |d   j                  g| i |S  | i |S c c}w )N	_elemwiser   )hasattrlenr   )argskwargsargdsknumpy_ufuncs       K/home/cdr/jupyterlab/.venv/lib/python3.12/site-packages/dask/array/ufunc.pywrappedzwrap_elemwise.<locals>.wrapped   sa    "@sgc;&?s@@s8a<#3q6##KA$A&AA///	 As
   AA)__name__r   )r   sourcer   s   `  r   wrap_elemwiser      s*    0 #++G<((    c                  :    e Zd ZdZd Zd Zd Zd Zd Zd Z	d Z
y	)
da_frompyfuncz"A serializable `frompyfunc` objectc                    t        j                  |||      | _        || _        || _        || _        t        |      | _        d| j                  z  | _        y )Nzfrompyfunc-%s)	np
frompyfunc_ufunc_funcninnoutr   _namer   )selffuncr(   r)   s       r   __init__zda_frompyfunc.__init__"   sF    mmD#t4
	d^
'$**4r    c                N    d| j                   | j                  | j                  fz  S )Nzda.frompyfunc<%s, %d, %d>)r*   r(   r)   r+   s    r   __repr__zda_frompyfunc.__repr__*   s     *djj$((DII-NNNr    c                Z    t        | j                        | j                  | j                  fS N)r   r'   r(   r)   r/   s    r   __dask_tokenize__zda_frompyfunc.__dask_tokenize__-   s     

+TXXtyyAAr    c                T    t         | j                  | j                  | j                  ffS r2   )r"   r'   r(   r)   r/   s    r   
__reduce__zda_frompyfunc.__reduce__0   s     

DHHdii@AAr    c                &     | j                   |i |S r2   )r&   )r+   r   r   s      r   __call__zda_frompyfunc.__call__3   s    t{{D+F++r    c                    |j                  d      st        | j                  |      S t        t	        |       j
                  d|      )N_ object has no attribute )
startswithgetattrr&   AttributeErrortyper   )r+   as     r   __getattr__zda_frompyfunc.__getattr__6   sB    ||C 4;;**T
 3 366OPQuUVVr    c                    t        t        t        |                   }|j                  | j                         |j                  t        | j
                               t        |      S r2   )setdirr>   update__dict__r&   list)r+   os     r   __dir__zda_frompyfunc.__dir__;   sB    DJ 		T[[!"Awr    N)r   
__module____qualname____doc__r-   r0   r3   r5   r7   r@   rH    r    r   r"   r"      s,    ,5OBB,W
r    r"   c                N    |dkD  rt        d      t        t        | ||            S )N   z$frompyfunc with more than one output)NotImplementedErrorufuncr"   )r,   r(   r)   s      r   r%   r%   B   s)    ax!"HIItS$/00r    c                  h    e Zd Zh dZd Zd Zd Zd Zd Zd Z	 e
ej                        d        Zy	)
rP   >   r(   r)   nargstypesntypesidentity	signaturec                   t        |t        j                  t        f      s!t	        dt        |      j                  z        || _        |j                  | _        t        |t        j                        r t        t              |        y y )Nz:must be an instance of `ufunc` or `da_frompyfunc`, got `%s)	
isinstancer$   rP   r"   	TypeErrorr>   r   r&   r   )r+   rP   s     r   r-   zufunc.__init__T   sp    %"((M!:;+-1%[-A-AB  eRXX&LT" 'r    c                D    | j                   t        | j                        fS r2   )r   r   r&   r/   s    r   r3   zufunc.__dask_tokenize___   s    }}odkk:::r    c                    || j                   v rt        | j                  |      S t        t	        |       j
                  d|      )Nr:   )_forward_attrsr<   r&   r=   r>   r   )r+   keys     r   r@   zufunc.__getattr__b   sD    $%%%4;;,,T
 3 366OPSwWXXr    c           	         t        | j                  j                  t        t	        |             | j
                              S r2   )rF   r\   unionrC   r>   rE   r/   s    r   rH   zufunc.__dir__g   s,    D''--c$t*ot}}MNNr    c                ,    t        | j                        S r2   )reprr&   r/   s    r   r0   zufunc.__repr__j   s    DKK  r    c                @   |D cg c]  }t        |d      s| }}t        |      dkD  r^|D ]A  } |j                  | j                  g|i |}t	        |      t	        t
              k7  s?|c S  t        d| j                  z          | j                  |i |S c c}w )Nr   r   z.Parameters of such types are not supported by )r   r   r   r&   r>   NotImplementedrY   r   )r+   r   r   r   dsksr   results          r   r7   zufunc.__call__m   s    #AwsK'@AAt9q= "&t{{DTDVD<4#77!M" @4==P  4;;/// Bs
   BBc                   | j                   dk7  rt        d      d|v rt        d      t        |      }t        |      }|s |s | j                  j                  ||fi |S |rt        |t              r|rt        |t              st        d      t        |      }t        |      }|j                  |j                  z   }t        t        |            }|d |j                   }||j                  d  }	t        | j                  j                  ||g|dd      }
d	|v r1t        | j                  j                  |j                  d	      
      }n| j                  j                  }t        ||||||	f|
| j                   dz   d|S )N   z1outer product only supported for binary functionsoutz`out` kwarg not supportedzGDask objects besides `dask.array.Array` are not supported at this time.zufunc.outerF)suggest_dtypedtyperj   z.outer)rj   token)r(   
ValueErrorr   r&   outerrX   r   rO   r	   ndimtupleranger   r   popr
   r   )r+   ABr   	A_is_dask	B_is_daskro   out_indsA_indsB_indsrj   r,   s               r   rn   zufunc.outerz   s|   88q=PQQF?899&q)	&q)	$4;;$$Q4V44q%(q%(%2 
 AJAJvvt%(AFF#!&&(#!KK1vv}E
 f4;;,,FJJw4GHD;;$$D

 --(*

 

 
	
r    N)r   rI   rJ   r\   r-   r3   r@   rH   r0   r7   r   r$   rP   rn   rL   r    r   rP   rP   I   sF    N	#;Y
O!0 "((/
 /
r    rP   c                    t        |      }t        | d      r!| j                  t        j                  | |      S t        j                  | |      S )Nr   )deg)boolr   r   r$   angle)xr{   s     r   r}   r}      s=    
s)Cq+{{288Q,,88A3r    c                   t        t        j                  | t              }d|j                  z   }d|j                  z   }t        j                  |j                               D ci c]  }|f|dd  z   t        |df }}t        j                  |j                               D ci c]  }|f|dd  z   t        |df }}t        j                  t        | d|       d| j                  z  | j                        }t        j                  |      \  }}	t        j                  |||g	      }
t        |
||j                   |
      }t        j                  |||g	      }
t        |
||j                   |	
      }||fS c c}w c c}w )Nrk   z	mantissa-z	exponent-rN   r   _metarN   shaperj   dependencieschunksmeta)r   r$   frexpobjectnamer   flatten__dask_keys__r   
empty_liker<   ro   rj   r   from_collectionsr   r   r~   tmpleftrightr]   ldskrdskr?   lrgraphLRs                r   r   r   (  sg    288Qf
-C!D#(("E << 1 1 34 
#ab'GS!,,D  << 1 1 34 
3qr7Wc1--D 
 	ga!,D166MQA88A;DAq++D$cUKEeT#**15A++E4seLEeU3::A6Aa4K!   $E7#E<c                   t        t        j                  | t              }d|j                  z   }d|j                  z   }t        j                  |j                               D ci c]  }|f|dd  z   t        |df }}t        j                  |j                               D ci c]  }|f|dd  z   t        |df }}t        j                  t        | d|       d| j                  z  | j                        }t        j                  |      \  }}	t        j                  |||g	      }
t        |
||j                   |
      }t        j                  |||g	      }
t        |
||j                   |	
      }||fS c c}w c c}w )Nrk   zmodf1-zmodf2-rN   r   r   r   r   r   r   )r   r$   modfr   r   r   r   r   r   	ones_liker<   ro   rj   r   r   r   r   r   s                r   r   r   A  sg    277AV
,CchhDsxxE << 1 1 34 
#ab'GS!,,D  << 1 1 34 
3qr7Wc1--D 
 	WQ+4!&&=PA771:DAq++D$cUKEeT#**15A++E4seLEeU3::A6Aa4K!r   c                    | |z  }| |z  }||fS r2   rL   )r~   yres1res2s       r   divmodr   Z  s    6Dq5D:r    )r   )
__future__r   	functoolsr   operatorr   numpyr$   daskr   dask.array.corer   r   r	   r
   r   	dask.baser   dask.highlevelgraphr   dask.tokenizer   
dask.utilsr   r   r   r"   r%   rP   addsubtractmultiplydivide	logaddexp
logaddexp2true_dividefloor_dividenegativepositivepowerfloat_power	remaindermod	conjugateconjexpexp2loglog2log10log1pexpm1sqrtsquarecbrt
reciprocalsincostanarcsinarccosarctanarctan2hypotsinhcoshtanharcsinharccosharctanhdeg2radrad2deggreatergreater_equalless
less_equal	not_equalequalinfisneginfisposinflogical_and
logical_orlogical_xorlogical_notmaximumminimumfmaxfminbitwise_and
bitwise_orbitwise_xorbitwise_notinvert
left_shiftright_shiftisfiniteisinfisnansignbitcopysign	nextafterspacingldexpfmodfloorceiltruncdegreesradiansrintfabssignabsoluteabsclipisreal	iscomplexrealimagfixi0sinc
nan_to_numr}   r   r   r   rL   r    r   <module>r     s   "     R R ( . ) - ') )   F b1 1a
 a
P BFFm	ryy	",,	2==!
BNN#R__%bhhBNN#",,	BFFm& &yBFFmRWW~BFFmRWW~bhhbhhbhhRWW~	ryy	RWW~2==!
 BFFmBFFmBFFm	ryy		ryy		ryy	



bhhRWW~RWW~RWW~



















 


b&&'RWW~2==!
",,	bhh5266'"5"&&!BNN#2==!
BNN#BNN#







RWW~RWW~ BNN#2==!
BNN#BNN#	2==!
BNN# bhhbhh



",,	



bhhRWW~bhhRWW~bhh 






RWW~RWW~RWW~ RWW	ryy	!",,'	RWWRWWBFF255RWW2==)
 b    b 0 b 0 b r    