
    >ieC                       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                            d
g d          d             Zd Zg dZg dZej                            de          d             Zej                            de          d             Zd Zej                            dg d          d             Zej                            dddg          d             Zd Z d Z!d Z"e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                            d(g d)          d*             Z-ej                            d+dd,g          ej                            d-d.d/g          ej                            d0d.d/g          ej                            d1g d2          d3                                                 Z.ej                            d-d.d/g          ej                            d0d.d/g          ej                            d4d.d/g          d5                                     Z/d6 Z0d7 Z1dS )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                4   t                               |           }d}t          t          |           }|j        | k    sJ ||j        v sJ |j                            |d                              |d          t          t          |           j        k    sJ d S )N)r
   z  # doctest: +SKIP )
DISCLAIMERformatgetattrda__name____doc__replacenp)r
   
disclaimer	skip_testufuncs       ;lib/python3.11/site-packages/dask/array/tests/test_ufunc.pytest_ufunc_metar      s    """--J$IBE>T!!!!&&&& 	j"--55iDD2t$	% 	% 	% 	% 	% 	%    c                    dD ]:} t          t          j        |           t          t          j        |           k    sJ ;t	          j        t                    5  t          j        j         d d d            n# 1 swxY w Y   t          t          j                  t          t          j                  k    sJ dt          t          j                  v sJ dt          t          j                  v sJ d S )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 > >rvt$$(=(======	~	&	&    
                              <<4<<''''CKKc"&kk!!!!!!s   A55A9<A9)$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                   | dk    rt          j        d           t          t          |           }t          t          |           }t          j                            ddd          }t          j        |d          }t          j	                    5  t          j
        dt          	           t           ||          t          j                  sJ t           ||           ||          d
           d d d            n# 1 swxY w Y   t          j	                    5  t          j
        dt          	           t          |t          j                  r&t           ||          t          j                  sJ n%t           ||          t          j                  sJ t           ||           ||          d
           d d d            n# 1 swxY w Y   t          j	                    5  t          j
        dt          	           t           ||          t          j                  sJ t           ||           ||          d
           d d d            d S # 1 swxY w Y   d S )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JJRFRF
)

As

2
2C=a  D		 	"	" = =>BBBB&&,,11111&&,,st<<<<	= = = = = = = = = = = = = = = 
	 	"	" = =>BBBBfbh'' 	8ffTllBH555555ffTllBJ77777&&,,st<<<<= = = = = = = = = = = = = = = 
	 	"	" < <>BBBB&&++rz22222&&++vvc{{d;;;;	< < < < < < < < < < < < < < < < < <s9   A%D  DDB%GGG-A%II#&I#c                \   t          t          |           }t          t          |           }t          j                            ddd          }t          j        |d          }t          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            n# 1 swxY w Y   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            d S # 1 swxY w Y   d S )	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      s   RFRF9Q(33DM$""E9Q(33DM$""E ffUE**BH55555ffUE""FF4$6$6777 ffUE**BH55555ffUE""FF4$6$6777 ffT4(("*55555ffT4  &&t"4"4555 ffUB''22222ffUBb!1!1222		 	"	" 7 7>BBBB&&U++RX66666&&U##VVB%5%56667 7 7 7 7 7 7 7 7 7 7 7 7 7 7
 ffT2&&
33333ffT2tR 0 0111		 	"	" 6 6>BBBB&&T**BJ77777&&T""FF2t$4$45556 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6s&   A&II
I
.A&L!!L%(L%c                    t           j                            ddd          } t          j        | d          }t           j                            ddd          }t          j        |d          }t          t          j                            ||          t          j                  sJ t          t          j                            | |          t          j                  sJ t          t          j                            ||          t          j                  sJ t          t          j                            | |          t           j	                  sJ ||f| |ff||f|| ff||
                    d          f|| 
                    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|                                |f|                                 |fft                               d          |ft                               d          |ffg
}|D ]W\  \  }}\  }}t          t          j                            ||          t           j                            ||                     Xt          t          j                            ||d
          t           j                            | |d
                     t          j        t                     5  t          j                            |||            d d d            n# 1 swxY w Y   t          j        t                     5  t          j                            ||           d d d            d S # 1 swxY w Y   d S )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   9Q"--DM$""E9Q'22DM$""E bfll5%00"(;;;;;bfll4//:::::bfll5$//:::::bfll4..
;;;;; $&
$&
d##	$tT[[->->&?@
t%
dAY
UaY
uT{#
))U	iii./
))++u	

D12
((1++u	T23E " < <R&1a"&,,r2&&Q(:(:;;;; 
UE..T4t0T0T   
z	"	" - -
UEt,,,- - - - - - - - - - - - - - - 
z	"	" # #
UE"""# # # # # # # # # # # # # # # # # #s$    #LLL3!M!!M%(M%)isreal	iscomplexrealimagc                   t          t          |           }t          t          |           }t          j                            ddd          }t          j                            ddd          dz  }||z   }t          j        |d          }t          j        |d          }t          j        |d          }t          |j        |j                   t          |j        |j                   t          |	                                |	                                           ||f||f||ffD ]\  }	}
t           ||	          t          j                  sJ t           ||	           ||
                     t           ||	           ||
                     t           ||
          t          j                  sJ t           ||
           ||
                     d S )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      s   RFRF9Q(33D9Q(33b8D$;D]4##F]4##F]4##Ffk49%%%fk49%%%fkkmmTYY[[)))tnvtnvtnE , ,	c&&,,11111&&,,s,,,&&,,s,,, &&++rz22222&&++vvc{{++++, ,r   r   r   c                   t          t          |           }t          t          |           }t          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          ||           d S )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     s   RFRF
)

As

2
2C=a  D JD$dBH%%%%%dBH%%%%%JD$dDdD JD$dBH%%%%%dBH%%%%%JD$dDdD JD$dBH%%%%%dBH%%%%%JD$dDdDr   c                    t           j                            ddd          } t          j        | d          }t          |                     d          |                    d                     t          |                     dd          |                    dd                     t          |                     d	          |                    d	                     t          |                     d
          |                    d
                     t          |                     dd          |                    dd                     t          |                     dd          |                    dd                     d S )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   =  s4   
	BX..A
a'''AaffQii###affQllAFF1aLL)))afffmmQVVV]]+++afffmmQVVV]]+++afff""AFFqaF$8$8999afff""AFFqaF$8$899999r   c                    t           j                            ddd          } t           j                            ddd          dz  }| |z   }t          j        |d          }t          t          j        |          t                               |                     t          t          j        |d          t                               |d                     t          t          j        |          t           j                  sJ t          t          j        |          t                               |                     d S )	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    9Q(33D9Q(33b8D$;D]4##Fbhv///bhv4((("((4T(*B*BCCCbhtnnbj11111bhtnnbhhtnn-----r   c                    t                               dd          5  t           j                            ddd                              t
                    dz  } d d d            n# 1 swxY w Y   t          j        | d          }t          t           	                    |           t          j	        |                     t          t           
                    |           t          j
        |                     d S )	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	7 H HiAH55<<UCCaGH H H H H H H H H H H H H H H=a  Dbkk#D 1 1222bkk#D 1 122222s   >A''A+.A+func)i0sinc
nan_to_numc                   t           j                            ddd          }t          j        |d          }t          t          |           }t          t           |           }t           ||           ||          d           d S )Nr   r   r   r   r   Tr   )r   r   r   r   r   r   r   )r   r   r   r   r   s        r   test_non_ufunc_othersr   ^  sx    
)

As

2
2C=a  DRFRFffTllFF3KK4888888r   c                    t          j        t          dd          } t                              t          dd          }t          j                            ddd          }t          j        |d          }t          j                            ddd          }t          j        |d          }t           | ||           |||                     t          |                     ||          |                    ||                     t          j
        t                    5  t          j        d	 dd           d d d            d S # 1 swxY w Y   d S )
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  sg   M#q!$$E}}S!Q''H
	BX..A	q	(	(	(B
	BR((A	q	#	#	#BeeBmmXXa^^,,,ekk"b!!8>>!Q#7#7888	*	+	+ 9 9
111a8889 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9s   "EEEc                    t          t          dd          } t                              t          dd          }t                              g d          }t          j                             | |d           ||d                     t          j        t          j	        |                     }t          j                             ||d           ||d                     | j
        |j
        k    sJ t          j        t                    5  | j         d d d            n# 1 swxY w Y   dt          |           v sJ t          j                            |                     ||          |                    ||                     | j        dk    sJ t%          |           dk    sJ t'          t          t          dd                    t'          t          t          dd                    k    sJ d S )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  s   c1a  A==a##D
A JAAaGGTT!QZZ000 
fl1oo	&	&BJBBq!HHdd1ajj111 8t{""""	~	&	&  	               s1vv JAGGAqMM4::a+;+;<<< :))))) 7700000 M#q!,,---QPQ:R:R1S1SSSSSSSs   D!!D%(D%c                    t                               d                              d          } t          j        | d          }t           j        t           j        t           j        t          t           j	        d          fD ]I}t           ||          t          j                  sJ t           ||           ||                      Jd S )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gbgA.F.F.FG $ $$$q''28,,,,,$$q''4477####$ $r   c                 &   t                               d                              d          } t          j        | d          }t           j        t           j        fD ]}t           |||          t          j                  sJ t           |||           || |                      t          |
                    ||          t          j                  sJ t          |
                    ||          |
                    | |                      d S )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 6$$q!**bh/////$$q!**dd1ajj)))$**Q**BH55555$**Q""DJJq!$4$455556 6r   c                 *   t          j        dd          } t                              | |            t                              | d|            t          | t                              t                              d                    dz              d S )Nr   r   r   r   )r   r  r   rx   r   r   r   s    r   test_array_ufunc_outr    su    
	"T"""AFF1!FFF1baFa		"&&+,,,,,r   c                     t          j        dd          } t          j        t                    5  t
          j                            |           sJ 	 d d d            d S # 1 swxY w Y   d S )Nr   r
  r   )r   r  r'   r(   	TypeErrorr   r   reducer  s    r   test_unsupported_ufunc_methodsr    s    
	"T"""A	y	!	!    v}}Q                                   s   "A  A$'A$c                 ~   t          j        dd          } t                              d| j                  }t          j        t          t          f          5 }t          	                    | d|           d d d            n# 1 swxY w Y   dt          |j                  v sJ dt          |j                  v sJ d S )	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HHRqwH''E		#67	8	8  D
q!                              DJ''''c$*oo%%%%%%s   BB	Bc                     t          j        dd          } t          j        dd          }t          j        t                    5  t
                              | |          sJ 	 d d d            d S # 1 swxY w Y   d S )Nr   r
  r      r   )r   r  r'   r(   r   r   r   r   s     r   test_out_shape_mismatchr    s    
	"T"""A
	"T"""A	z	"	"    vvaQv                                   s   A33A7:A7c                    t           j                            ddd          } t           j                            ddd          }t          j        | d          }t          j        |d          }t                               |d          }t                               | d          }t          |d         |d                    t          |d         |d                    t                               ||          }t                               | |          }t          |d         |d                    t          |d         |d                    t          |d          }t          | d          }t          |d         |d                    t          |d         |d                    t          ||          }t          | |          }t          |d         |d                    t          |d         |d                    d S )Nr   r   r   r   r   g       @r   )r   r   r   r   r   divmodr   )r   r   r   r   resultexpecteds         r   test_divmodr    s   9Q(33D9Q(33DM$""EM$""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                               g d          }t                               g d          }t          j        |          }t          j        |          }t                               |||           }t                               |||           }t          ||           t          j        |||           }t          ||           d S )Nr   )r   r   r   r   )r   r   r   r   r   r   )r  r   r   r   r   r  r  s          r   test_dtype_kwargr%    s    88IIID88IIIDM$EM$EvvdDv++HVVE5V++FhVE5+++Fhr   r   r   
left_is_daFTright_is_da
where_kind)TFr   daskc                   t                               d                              d          }t                               d          }t                               ||           }t	          j        ||           }|dv r|x}}	n:t                               g d          x}}	|dk    rt	          j        |	d	          }|rt	          j        |d	          n|}
|rt	          j        |d	          n|}t                               |||	|| 
          }t	          j        |
|||| 
          }||u sJ t          ||           d S )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IIaLLE
--E-
*
*CM$e,,,E]""$$%%((#=#=#=>>>%mE!444G.8BR]4****dF0;FbmE!,,,,GvvdECuvEEHVFG7UKKKFU????hr   where_is_dac                   t                               d          }t                               dd          }t                               g dg dg dg                              d          }t                               |j        |j                  }t          j        |j        |j                  }|rt          j        |d	          n|}| rt          j        |d	          n|}	|rt          j        |d	          n|}
t           	                    ||||
          }t          j	        |	|
||
          }||u sJ t          ||           d S )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?    s5    99Q<<DIIaOOEHHlllLLL,,,?@@GGOOE
((5;dj(
1
1CHU[
333E0;FbmE!,,,,G.8BR]4****dF0;FbmE!,,,,GvvdECv88HVFG7>>>FU????hr   c                    t                               d          } t                               dd          }t                               g dg dg dg                              d          }t	          j        |d          }t	          j        | d          }t	          j        |d          }t                               | ||	          }t	          j        |||	          }t                               ||d
          }t                               ||d
          }	t          ||	           t                               | |          }
t           	                    |
                                |
                                          rJ d S )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  '  sD   99Q<<DIIaOOEHHlllLLL,,,?@@GGOOEmE!,,,G]4***FmE!,,,GvvdEv//HVFG7333F hhuh22OHHUHa00Mo}---tU++xx((*;<<@@BBBBBBBr   c                    t          j        t                              dd          d          } t          j        t                              ddd          d          }t          j        t                              g dd          d          }t                              dd          }t          j        |d          }t          j        | |||	          }||u sJ t          |t                              g d
d                     t                              |d          	                                sJ dS )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1!<<<DM"))Aq)55a@@@EM"((<<<v(>>qIIIEXXatX$$F
-q
)
)
)CVD%u#666F&====c288MMM86677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     sQ   " " " " " "               V!!       * * * * * * & & & & & &      
 !9!9!9::
 
 ;:
	" 	" 	"% % %N0 0 0f ,//< < 0/<> -00%6 %6 10%6P'# '# '#T "I"I"IJJ, , KJ,8 7F"344  54@	: 	: 	:	. 	. 	.3 3 3 !=!=!=>>9 9 ?>99 9 9 T T TB$ $ $	6 	6 	6- - -     & & &     & & &8 GGGHH    IH  4,//t}5566'E'E'EFF    GF 76 65 0/ , t}556666    76 76 65 "C C C2% % % % %r   