
    biC                       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 ej                  d      Z
d dlmZ d dlmZ d dlmZ d dlmZ d	Zej*                  j-                  d
g d      d        Zd Zg dZg dZej*                  j-                  de      d        Zej*                  j-                  de      d        Zd Zej*                  j-                  dg d      d        Zej*                  j-                  dddg      d        Zd Z d Z!d Z"ej*                  j-                  dg d      d        Z#d Z$d  Z%d! Z&d" Z'd# Z(d$ Z)d% Z*d& Z+d' Z,ej*                  j-                  d(g d)      d*        Z-ej*                  j-                  d+dd,g      ej*                  j-                  d-d.d/g      ej*                  j-                  d0d.d/g      ej*                  j-                  d1g d2      d3                             Z.ej*                  j-                  d-d.d/g      ej*                  j-                  d0d.d/g      ej*                  j-                  d4d.d/g      d5                      Z/d6 Z0d7 Z1y)8    )annotationsN)partial)addnumpy)da_frompyfunc)	assert_eq)tokenizeze
This docstring was copied from numpy.{name}.

Some inconsistencies with the Dask version may exist.
name)logmodffrexpc                (   t         j                  |       }d}t        t        |       }|j                  | k(  sJ ||j
                  v sJ |j
                  j                  |d      j                  |d      t        t        |       j
                  k(  sJ y )N)r
   z  # doctest: +SKIP )
DISCLAIMERformatgetattrda__name____doc__replacenp)r
   
disclaimer	skip_testufuncs       V/home/cdr/jupyterlab/.venv/lib/python3.12/site-packages/dask/array/tests/test_ufunc.pytest_ufunc_metar      s    """-J$IBE>>T!!!&&& 	j"-55iD2t$$	%	%    c                    dD ]9  } t        t        j                  |       t        t        j                  |       k(  r9J  t	        j
                  t              5  t        j                  j                   d d d        t        t        j                        t        t        j                        k(  sJ dt        t        j                        v sJ dt        t        j                        v sJ y # 1 sw Y   yxY w)N)ninnargsnoutntypesidentity	signaturetypesr   outer)
r   r   r   r   pytestraisesAttributeErrornot_an_attributereprdir)attrs    r   
test_ufuncr.   &   s    T >rvvt$(====> 
~	&  
  <4<'''CKc"&&k!!!   s   C++C4)$r   arctan2copysigndivideequalbitwise_and
bitwise_orbitwise_xorfloor_dividefmaxfminfmodgreatergreater_equalhypotldexp
left_shiftless
less_equal	logaddexp
logaddexp2logical_and
logical_orlogical_xormaximumminimummodmultiply	nextafter	not_equalpower	remainderright_shiftsubtracttrue_dividefloat_power)/absabsolutearccosarccosharcsinarcsinharctanarctanhbitwise_notcbrtceilconjcoscoshdeg2raddegreesexpexp2expm1fabsfixfloorinvertisfiniteisinfisnanr   log10log1plog2logical_notnegativepositiverad2degradians
reciprocalrintsignsignbitsinsinhspacingsqrtsquaretantanhtruncr   c                b   | dk(  rt        j                  d       t        t        |       }t        t        |       }t        j
                  j                  ddd      }t        j                  |d      }t        j                         5  t        j                  dt        	       t         ||      t        j                        sJ t         ||       ||      d
       d d d        t        j                         5  t        j                  dt        	       t        |t        j                        r"t         ||      t        j                        s$J t         ||      t        j                         sJ t         ||       ||      d
       d d d        t        j                         5  t        j                  dt        	       t         ||      t        j                         sJ t         ||       ||      d
       d d d        y # 1 sw Y   /xY w# 1 sw Y   xY w# 1 sw Y   y xY w)Nrf   z3fix calls floor in a way that we do not yet support   d      r   size   ignorecategoryT	equal_nan)r'   skipr   r   r   randomrandint
from_arraywarningscatch_warningsfilterwarningsRuntimeWarning
isinstanceArrayr   r   ndarray)r   dafuncnpfuncarrdarrs        r   test_unary_ufuncr      s   ~IJRFRF
))

As

2C==a D		 	 	" =>B&,111&,st<	= 
	 	 	" =>Bfbhh'fTlBHH555fTlBJJ777&,st<= 
	 	 	" <>B&+rzz222&+vc{d;	< <= == =< <s'   AH;BH+AH%HH"%H.c                   t        t        |       }t        t        |       }t        j                  j	                  ddd      }t        j
                  |d      }t        j                  j	                  ddd      }t        j
                  |d      }t         |||      t        j                        sJ t         |||       |||             t         |||      t        j                        sJ t         |||       |||             t         |||      t        j                        sJ t         |||       |||             t         ||d      t        j                        sJ t         ||d       ||d             t        j                         5  t        j                  dt               t         |d|      t        j                        sJ t         |d|       |d|             d d d        t         ||d      t        j                        sJ t         ||d       ||d             t        j                         5  t        j                  dt               t         |d|      t        j                        sJ t         |d|       |d|             d d d        y # 1 sw Y   xY w# 1 sw Y   y xY w)	Nr   r   r   r   r   
   r   r   )r   r   r   r   r   r   r   r   r   r   r   r   r   r   )r   r   r   arr1darr1arr2darr2s          r   test_binary_ufuncr      sF   RFRF99Q(3DMM$"E99Q(3DMM$"E fUE*BHH555fUE"F4$67 fUE*BHH555fUE"F4$67 fT4("**555fT4 &t"45 fUB'222fUBb!12		 	 	" 7>B&U+RXX666&U#VB%567
 fT2&

333fT2tR 01		 	 	" 6>B&T*BJJ777&T"F2t$456 67 76 6s   AJ-AJ9-J69Kc                    t         j                  j                  ddd      } t        j                  | d      }t         j                  j                  ddd      }t        j                  |d      }t        t        j                  j                  ||      t        j                        sJ t        t        j                  j                  | |      t        j                        sJ t        t        j                  j                  ||      t        j                        sJ t        t        j                  j                  | |      t         j                        sJ ||f| |ff||f|| ff||j                  d      f|| j                  d      ff||f| |ff|df| dffd|fd|ffd|fd|ffg d	|fg d	|ff|j                         |f| j                         |fft         j                  d      |ft         j                  d      |ffg
}|D ]S  \  \  }}\  }}t        t        j                  j                  ||      t         j                  j                  ||             U 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        y # 1 sw Y   LxY w# 1 sw Y   y xY w)Nr   r   r   r   r   )r   r   f8g      ?r      r   dtypeout)r   r   r   r   r   r   r   r&   r   r   astypesumarrayr   r'   r(   
ValueErrorrx   )	r   r   r   r   casesdAdBABs	            r   test_ufunc_outerr      s   99Q"-DMM$"E99Q'2DMM$"E bffll5%0"((;;;bffll4/:::bffll5$/:::bffll4.

;;; $&
$&
d#	$tT[[->&?@
t%
dAY
UaY
uT{#
U	i./
))+u	
D12
((1+u	T23E " <R&1a"&&,,r2&Q(:;< 
UE.T4t0T 
z	" -
UEt,- 
z	" #
UE"# #- -# #s   #L0!L<0L9<M)isreal	iscomplexrealimagc                n   t        t        |       }t        t        |       }t        j                  j	                  ddd      }t        j                  j	                  ddd      dz  }||z   }t        j
                  |d      }t        j
                  |d      }t        j
                  |d      }t        |j                  |j                         t        |j                  |j                         t        |j                         |j                                ||f||f||ffD ]  \  }	}
t         ||	      t        j                        sJ t         ||	       ||
             t         ||	       ||
             t         ||
      t        j                        sJ t         ||
       ||
              y )Nr   r   r   r                 ?r   )r   r   r   r   r   r   r   r   r   r]   r   r   r   )r   r   r   r   r   compdarealdaimagdacompr   r   s              r   test_complexr      sV   RFRF99Q(3D99Q(3b8D$;D]]4#F]]4#F]]4#Ffkk499%fkk499%fkkmTYY[)tnvtnvtnE ,	c&,111&,s,&,s, &+rzz222&+vc{+,r   r   r   c                   t        t        |       }t        t        |       }t        j                  j	                  ddd      }t        j
                  |d      } ||      \  }}t        |t        j                        sJ t        |t        j                        sJ  ||      \  }}t        ||       t        ||        ||      \  }}t        |t        j                        sJ t        |t        j                        sJ  ||      \  }}t        ||       t        ||        ||      \  }}t        |t        j                        sJ t        |t        j                        sJ  ||      \  }}t        ||       t        ||       y )Nr   r   r   r   r   )	r   r   r   r   r   r   r   r   r   )	r   r   r   r   r   res1res2exp1rc   s	            r   test_ufunc_2resultsr     sM   RFRF
))

As

2C==a D JD$dBHH%%%dBHH%%%JD$dDdD JD$dBHH%%%dBHH%%%JD$dDdD JD$dBHH%%%dBHH%%%JD$dDdDr   c                    t         j                  j                  ddd      } t        j                  | d      }t        | j                  d      |j                  d             t        | j                  dd      |j                  dd             t        | j                  d	      |j                  d	             t        | j                  d
      |j                  d
             t        | j                  dd      |j                  dd             t        | j                  dd      |j                  dd             y )Nr   r   r   r   r   r      chunks   r   )min)max)r   r   )r   r   )r   r   normalr   r   r   clip)xds     r   	test_clipr   =  s    
		BX.A
a'AaffQi#affQlAFF1aL)afffmQVVV]+afffmQVVV]+afff"AFFqaF$89afff"AFFqaF$89r   c                 Z   t         j                  j                  ddd      } t         j                  j                  ddd      dz  }| |z   }t        j                  |d      }t        t        j                  |      t         j                  |             t        t        j                  |d      t         j                  |d             t        t        j                  |      t         j                        sJ t        t        j                  |      t         j                  |             y )	Nr   r   r   r   r   r   T)deg)	r   r   r   r   r   r   angler   r   )r   r   r   r   s       r   
test_angler   I  s    99Q(3D99Q(3b8D$;D]]4#Fbhhv/bhhv4("((4T(*BCbhhtnbjj111bhhtnbhhtn-r   c                    t         j                  dd      5  t         j                  j                  ddd      j	                  t
              dz  } d d d        t        j                   d      }t        t         j                  |       t        j                  |             t        t         j                  |       t        j                  |             y # 1 sw Y   xY w)	Nr   )invalidr1   r   r   r   r   r   )r   errstater   r   r   floatr   r   r   isneginfisposinf)r   r   s     r   test_issignedinfr   U  s    	Xh	7 HiiAH5<<UCaGH==a Dbkk#D 12bkk#D 12H Hs   9CCfunc)i0sinc
nan_to_numc                    t         j                  j                  ddd      }t        j                  |d      }t        t        |       }t        t         |       }t         ||       ||      d       y )Nr   r   r   r   r   Tr   )r   r   r   r   r   r   r   )r   r   r   r   r   s        r   test_non_ufunc_othersr   ^  sY    
))

As

2C==a DRFRFfTlF3K48r   c                 l   t        j                  t        dd      } t        j                  t        dd      }t        j                  j                  ddd      }t        j                  |d      }t        j                  j                  ddd      }t        j                  |d      }t         | ||       |||             t        | j                  ||      |j                  ||             t        j                  t              5  t        j                  d	 dd       d d d        y # 1 sw Y   y xY w)
Nr   r   r   r   r   r   r   r   c                    | |z   | |z
  fS )N r   ys     r   <lambda>z!test_frompyfunc.<locals>.<lambda>v  s    AE1q5> r   )r   
frompyfuncr   r   r   r   r   r   r&   r'   r(   NotImplementedError)myaddnp_myaddr   dxr   dys         r   test_frompyfuncr   i  s    MM#q!$E}}S!Q'H
		BX.A	q	(B
		BR(A	q	#BeBmXa^,ekk"b!8>>!Q#78	*	+ 9
11a89 9 9s   D**D3c                    t        t        dd      } t        j                  t        dd      }t        j	                  g d      }t        j
                  j                   | |d       ||d             t        j                  t        j                  |             }t        j
                  j                   ||d       ||d             | j                  |j                  k(  sJ t        j                  t              5  | j                   d d d        dt        |       v sJ t        j
                  j                  | j!                  ||      |j!                  ||             | j"                  dk(  sJ t%        |       dk(  sJ t'        t        t        dd            t'        t        t        dd            k(  sJ y # 1 sw Y   xY w)Nr   r   r   r"   zfrompyfunc-addzda.frompyfunc<add, 2, 1>)r   r   r   r   r   testingassert_equalpickleloadsdumpsr"   r'   r(   r)   r*   r,   r&   r   r+   r	   )fnp_fr   f2s       r   test_frompyfunc_wrapperr   y  sb   c1a A==a#D
A JJAaGT!QZ0 
fll1o	&BJJBq!Hd1aj1 88t{{"""	~	& 	 s1v JJAGGAqM4::a+;< ::)))) 70000 M#q!,--QPQ:R1SSSS! s   <F99Gc                    t         j                  d      j                  d      } t        j                  | d      }t         j
                  t         j                  t         j                  t        t         j                  d      fD ]<  }t         ||      t        j                        sJ t         ||       ||              > y )N   )r      )r   r   r   r   )axis)r   arangereshaper   r   rx   r   rp   r   prodr   r   r   r   r   r   s      r   test_array_ufuncr    s    
		"f%A
a'AgbggA.FG $$q'288,,,$q'47#$r   c                    t         j                  d      j                  d      } t        j                  | d      }t         j
                  t         j                  fD ]  }t         |||      t        j                        sJ t         |||       || |              t        |j                  ||      t        j                        sJ t        |j                  ||      |j                  | |               y )N   )r   r   )r   r   r   )r   r  r  r   r   r   rI   r   r   r   r&   r  s      r   test_array_ufunc_binopr    s    
		"f%A
a'A% 6$q!*bhh///$q!*d1aj)$**Q*BHH555$**Q"DJJq!$456r   c                     t        j                  dd      } t        j                  | |        t        j	                  | d|        t        | t        j                  t        j                  d            dz          y )Nr   r   r   r   )r   r  r   rx   r   r   r   s    r   test_array_ufunc_outr    sT    
		"T"AFF1!FFF1baFa		"&+,r   c                     t        j                  dd      } t        j                  t              5  t
        j                  j                  |       sJ 	 d d d        y # 1 sw Y   y xY w)Nr   r
  r   )r   r  r'   r(   	TypeErrorr   r   reducer  s    r   test_unsupported_ufunc_methodsr    sI    
		"T"A	y	!  vv}}Q     s   "AA&c                 p   t        j                  dd      } t        j                  d| j                        }t        j                  t        t        f      5 }t        j                  | d|       d d d        dt        j                        v sJ dt        |j                        v sJ y # 1 sw Y   <xY w)	Nr   r
  r   r   r   r   r   r   )r   r  r   emptyr   r'   r(   r  r   r   strvalue)r   r  infos      r   test_out_numpyr    s    
		"T"AHHRqwwH'E		#67	8  D
q!  DJJ'''c$**o%%%	   s   B,,B5c                     t        j                  dd      } t        j                  dd      }t        j                  t              5  t
        j                  | |      sJ 	 d d d        y # 1 sw Y   y xY w)Nr   r
  r      r   )r   r  r'   r(   r   r   r   r   s     r   test_out_shape_mismatchr    sY    
		"T"A
		"T"A	z	"  vvaQv     s   A,,A5c                    t         j                  j                  ddd      } t         j                  j                  ddd      }t        j                  | d      }t        j                  |d      }t         j                  |d      }t         j                  | d      }t        |d   |d          t        |d   |d          t         j                  ||      }t         j                  | |      }t        |d   |d          t        |d   |d          t        |d      }t        | d      }t        |d   |d          t        |d   |d          t        ||      }t        | |      }t        |d   |d          t        |d   |d          y )Nr   r   r   r   r   g       @r   )r   r   r   r   r   divmodr   )r   r   r   r   resultexpecteds         r   test_divmodr    sX   99Q(3D99Q(3DMM$"EMM$"EYYuc"Fyys#HfQi!%fQi!%YYue$Fyyt$HfQi!%fQi!%E3FdC HfQi!%fQi!%E5!FdD!HfQi!%fQi!%r   dt)float64float32int32int64c                t   t         j                  g d      }t         j                  g d      }t        j                  |      }t        j                  |      }t         j	                  |||       }t         j	                  |||       }t        ||       t        j                  |||       }t        ||       y )Nr   )r   r   r   r   )r   r   r   r   r   r   )r  r   r   r   r   r  r  s          r   test_dtype_kwargr%    s    88ID88IDMM$EMM$EvvdDv+HVVE5V+FhVVE5+Fhr   r   r   
left_is_daFTright_is_da
where_kind)TFr   daskc                F   t         j                  d      j                  d      }t         j                  d      }t         j                  ||       }t	        j                  ||       }|dv r|x}}	n5t         j                  g d      x}}	|dk(  rt	        j                  |	d	      }|rt	        j                  |d	      n|}
|rt	        j                  |d	      n|}t         j                  |||	|| 
      }t	        j                  |
|||| 
      }||u sJ t        ||       y )N   r   r   r   )TF)FTTFr)  r   r   )wherer   r   )	r   r  r  
zeros_liker   r   r   r   r   )r   r&  r'  r(  leftrightr   d_outd_wherer,  d_leftd_rightr  r  s                 r   test_ufunc_wherer4    s    
 99R=  (DIIaLE
--E-
*CMM$e,E]"$$%((#=>>%mmE!4G.8R]]4*dF0;bmmE!,GvvdECuvEHVVFG7UKFU??hr   where_is_dac                   t         j                  d      }t         j                  dd      }t         j                  g dg dg dg      j                  d      }t         j	                  |j
                  |j                        }t        j                  |j
                  |j                        }|rt        j                  |d	      n|}| rt        j                  |d	      n|}	|rt        j                  |d	      n|}
t         j                  ||||
      }t        j                  |	|
||
      }||u sJ t        ||       y )Nr      r   r   r   r   r   r   r   r   r   r   r   r   boolr   r   r   r,  r   )r   r  r   r   zerosshaper   r   r   r   r   )r&  r'  r5  r.  r/  r,  r   r0  r1  r2  r3  r  r  s                r   test_ufunc_where_broadcastsr?    s     99Q<DIIaOEHHlL,?@GGOE
((5;;djj(
1CHHU[[

3E0;bmmE!,G.8R]]4*dF0;bmmE!,GvvdECv8HVVFG7>FU??hr   c                    t         j                  d      } t         j                  dd      }t         j                  g dg dg dg      j                  d      }t	        j
                  |d      }t	        j
                  | d      }t	        j
                  |d      }t         j                  | ||	      }t	        j                  |||	      }t         j                  ||d
      }t         j                  ||d
      }	t        ||	       t         j                  | |      }
t         j                  |j                         |
      j                         rJ y )Nr   r7  r8  r9  r:  r;  r   r   )r,  r   )r   r  r   r   r   r   r   r,  r   r2   computeall)r.  r/  r,  r1  r2  r3  r  r  expected_maskedresult_maskedexpected_no_wheres              r   test_ufunc_where_no_outrF  '  s    99Q<DIIaOEHHlL,?@GGOEmmE!,G]]4*FmmE!,GvvdEv/HVVFG73F hhuh2OHHUHa0Mo}-tU+xx(*;<@@BBBBr   c                 >   t        j                  t        j                  dd      d      } t        j                  t        j                  ddd      d      }t        j                  t        j	                  g dd      d      }t        j                  dd      }t        j                  |d      }t        j                  | |||	      }||u sJ t        |t        j	                  g d
d             t        j                  |d      j                         sJ y)zdDask array's are immutable, ensure that the backing numpy array for
    `out` isn't actually mutatedr   i8r   r   r   r7  r9  r;  r<  )r   r   r   r   r   N)
r   r   r   r  r   r=  r   r   r2   rB  )r.  r/  r,  out_npr   r  s         r   "test_ufunc_where_doesnt_mutate_outrJ  @  s     ==1D1!<DMM"))Aq)5a@EMM"((<v(>qIEXXatX$F
--q
)CVVD%u#6F&==c288M867 88FA""$$$r   )2
__future__r   r   r   	functoolsr   operatorr   r'   importorskipr   
dask.arrayr   r   dask.array.ufuncr   dask.array.utilsr   	dask.baser	   r   markparametrizer   r.   binary_ufuncsunary_ufuncsr   r   r   r   r   r   r   r   r   r   r   r  r  r  r  r  r  r  r%  r4  r?  rF  rJ  r   r   r   <module>rW     s   "     V!  * & 
 !9:
 ;
	"%N0f ,/< 0<> -0%6 1%6P'#T "IJ, K,8 7F"34 5@	:	.3 !=>9 ?99 TB$	6- & &8 GH  I  4,/t}56'EF  G 7 6 0 , t}566  7 7 6 "C2%r   