
    >ie@                       d dl mZ d dlZd dlZ ej        d          Zd dlZd dlm	Z
 d dlmZ d dlmZ g dZej                            de                    ej                            ddd	
                    e                     ej        ej                            d                              e                    ej                            ddd	
          ej                            ddd	
           ej        ej                            d	                    d          e                    ej                            ddd	
           ed                    e                     ej        ej                            d	                     ed                    e                    ej                            ddd	
          ej                            ddd	
           ej        ej                            d	                    d ed                    g          ej                            de          d                         Zej                            dg d          d             Zd Zdddddd ej        dej                            d          g           ej        dej                            d          g          dddd d!d"d#d$d%d&d'd(d)dddgZej                            de          ej                            d*d+ d, g          d-                         Z ej                            d.e                    ej                            ddd	
                    d/d0fe                    ej                            ddd1
          d2d3g4          d5d6fg          d7             Z!ej                            de          d8             Z"d9 Z#ej                            d:e                     ej        ej                            d                              e                    ej                            ddd	
          ej                            ddd	
           ej        ej                            d	                    d          g          ej                            d;d< ej$        e                    d g          d          %                                g          ej                            de          d=                                     Z&ej                            de          ej                            d>e                    ej                            ddd?
                     e
j'        ej                            ddd?
          d@A          fe                    ej                            ddd1
          d2d3g4           e
j'        ej                            ddd1
          dBA          fg          dC                         Z(ej                            dDg dE          ej                            de          ej                            de                     ej        ej                            d                              e                    ej                            ddd	
          ej                            ddd	
           ej        ej                            d	                    d          g          dF                                     Z)ej                            de                    ej                            ddd
                    e                    ej                            ddd	
          ej                            ddd	
           ej        ej                            d	                    d          g          ej                            dGdHdI ej*        dH           ej+        dI          g          dJ                         Z,dS )K    )annotationsNpandas	assert_eq)*conjexploglog2log10log1pexpm1sqrtsquaresincostanarcsinarccosarctansinhcoshtanharcsinharccosharctanhdeg2radrad2degisfiniteisinfisnansignbitdegreesradiansrintfabssignabsolutefloorceiltrunclogical_notcbrtexp2negative
reciprocalspacingpandas_input   d      sizeABCabcdefghijklmnopqrstindexufuncc                   t          t          |          }t          t          |          }t          j        | d          }| j        }|j        }t          j                    5  t          j        dt                     t           ||          |          sJ t           ||           ||                      t          |t          j                  rt           ||          |          sJ nt           ||          |          sJ t           ||           ||                      t           ||           |          sJ t           ||           ||                      d d d            n# 1 swxY w Y   | j        j        t          t           fv rd S |dv rd S t          j                    5  t          j        dt                     t           ||j                  t          j                  sJ t           ||j                   || j                  |dk               t          |t          j                  r+t           ||j                  t          j                  sJ n*t           ||j                  t$          j                  sJ t           ||j                   ||j                  |dk               d d d            n# 1 swxY w Y   t          j                    5  t          j        dt                     t           || j                  t$          j                  sJ t           ||            ||                      d d d            d S # 1 swxY w Y   d S )N   ignore)r+   r!   r    r   r   r0   )check_divisions)getattrdanpddfrom_pandas	__class__warningscatch_warningssimplefilterRuntimeWarning
isinstancer   r>   r=   dtypeobjectstrIndexpd)r1   r>   dafuncnpfunc
dask_inputpandas_type	dask_types          ?lib/python3.11/site-packages/dask/dataframe/tests/test_ufunc.py
test_ufuncrY   =   s?   8 RFRFa00J(K$I 
	 	"	" < <h777&&,,i88888&&$$ff\&:&:;;; fbh'' 	?ffZ00)<<<<<<ffZ00+>>>>>&&$$ff\&:&:;;; &&..<<<<<&&$$ff\&:&:;;;< < < < < < < < < < < < < < <$ FC=00HHH		 	"	" 
 
h777&&!122BH=====F:#$$F<%&&!Y.	
 	
 	
 	
 fbh'' 	BffZ%566AAAAAAffZ%566AAAAAF:#$$F:#$$!Y.	
 	
 	
 	

 
 
 
 
 
 
 
 
 
 
 
 
 
 
, 
	 	"	" > >h777&&!344bh?????&&&&|(<(<===	> > > > > > > > > > > > > > > > > >s9   !DE55E9<E95DKK K7A'M++M/2M/)	isreal	iscomplexrealimaganglefixi0sinc
nan_to_numc           	     |   ddl m} | dk    rt          j        d           t	          t
          |           }t	          t          |           }t                              t          j	        
                    ddd          t          d	          
          }t          j        |d          }t           ||          t
          j                  sJ  | ||           ||                     t           ||          t          j                  sJ t          j                             ||           ||                     t           ||          t          j                  sJ t          j                             ||           ||                     t                              t          j	        
                    ddd          t          j	        
                    ddd          t          j        t          j	                            d                    dt          d	          
          }t          j        |d          }t           ||          t
          j                  sJ  | ||           ||                     t           ||          t          j                  sJ t          j                             ||           ||                     t           ||          t          j                  sJ t          j                             ||           ||                     dS )a"  
    some np.ufuncs doesn't call __array_wrap__
    (or __array_ufunc__ starting from numpy v.1.13.0), it should work as below

    - da.ufunc(dd.Series) => da.Array
    - da.ufunc(pd.Series) => np.ndarray
    - np.ufunc(dd.Series) => np.ndarray
    - np.ufunc(pd.Series) => np.ndarray
    r   r   r_   z3fix calls floor in a way that we do not yet supportr2   r3   r4   r5   r;   r<   r@   r7   N)dask.array.utilsr   pytestskiprC   rD   rE   rR   SeriesrandomrandintlistrF   rG   rM   Arrayndarraytestingassert_equalassert_array_equal	DataFrameabsrandn)r>   da_assert_eqrS   rT   sdsdfddfs           rX   test_ufunc_wrappedrx      s   0 ;:::::~~IJJJRFRF
		
	!Sr**$7M2N2N 	 	 	A 
1		B ffRjj"(+++++LVVAYY'''ffRjj"*-----JFF2JJq		222ffQii,,,,,J!!&&))VVAYY777	""1c"33""1c"33	++,,	
 	

 )** 
 
 
B .Q

C ffSkk28,,,,,LffRjj)))ffSkk2:.....J!!&&++vvbzz:::ffRjj"*-----J!!&&**ffRjj99999    c            	     F   t                               t          j                            ddd          t          d                    } t          j        | d          }t          j	        t          d	          5  t          j        |d
           d d d            n# 1 swxY w Y   t                               t          j                            ddd          t          j                            ddd          t          j        t          j                            d                    dt          d                    }t          j        |d          }t          j	        t          d	          5  t          j        |d
           d d d            d S # 1 swxY w Y   d S )Nr2   r3   r4   r5   r;   r<   r@   z`repeat` is not implemented)match
   r7   )rR   rg   rE   rh   ri   rj   rF   rG   re   raisesNotImplementedErrorrepeatrp   rq   rr   )rt   ru   rv   rw   s       rX   "test_ufunc_wrapped_not_implementedr      s   
		
	!Sr**$7M2N2N 	 	 	A 
1		B	*2O	P	P	P  
	"b               
""1c"33""1c"33	++,,	
 	

 )** 
 
 
B .Q

C	*2O	P	P	P  
	#r                 s$   :BB #B 3FFF	logaddexp
logaddexp2arctan2hypotcopysign	nextafterldexpzignore::RuntimeWarning)marksfmodlogical_and
logical_orlogical_xormaximumminimumfmaxfmingreatergreater_equalless
less_equal	not_equalequalmake_pandas_inputc                 v    t                               t          j                            ddd                    S )Nr2   r3   r4   r5   )rR   rg   rE   rh   ri    ry   rX   <lambda>r     s)    		")++As+<<== ry   c                 ~    t                               t          j                            ddd          ddg          S )Nr2   r3   r4      r5   r8   r9   columns)rR   rp   rE   rh   ri   r   ry   rX   r   r     s9    Ia733c3Z  
 
 ry   c                   t          t          |           }t          t          |           } |            } |            }t          j        |d          }t          j        |d          }|j        }|j        }	t           |||          |	          sJ t           |||           |||                     t           |||          |	          sJ t           |||           |||                     t          |t          j                  r9t           |||          |	          sJ t           |||          |	          sJ n8t           |||          |          sJ t           |||          |          sJ t           |||           |||                     t           |||           |||                     t           |||          |          sJ t           |||           |||                     d S )Nr@      )	rC   rD   rE   rF   rG   rH   rM   r   r>   )
r>   r   rS   rT   pandas1pandas2dask1dask2rV   rW   s
             rX   test_ufunc_with_2argsr     sJ    RFRF!!G!!GN7A&&EN7A&&E#KI ffUE**I66666ffUE""FF7G$<$<=== ffUG,,i88888ffUG$$ffWg&>&>??? &"(## ?&&..	:::::&&00)<<<<<<&&..<<<<<&&00+>>>>>ffUE""FF7G$<$<===ffUG$$ffWg&>&>??? ffWg..<<<<<ffWg&&w(@(@AAAAAry   zpandas,min,max   2   r   r8   r9   r   g      @g     @D@c                   t          j        | d          }| j        }|j        }t          t	          j        |||          |          sJ t          t	          j        |||          t          j        | ||                     t          t          j        |||          |          sJ t          t          j        |||          t          j        | ||                     t          t	          j        | ||          |          sJ t          t	          j        | ||          t          j        | ||                     d S )Nr@   )rF   rG   rH   rM   rD   clipr   rE   )r   minmaxdaskrV   rW   s         rX   	test_clipr   :  s     >&!$$D"KI
 bgdC--y99999bgdC%%rwvsC'@'@AAA bgdC--y99999bgdC%%rwvsC'@'@AAA bgfc3//=====bgfc3''c)B)BCCCCCry   c                   t          t          |           }t          t          |           }t          j                            ddd          }t
                              |ddg          }t          j        |d          }t
                              t          j                            ddd          d	d
g          }t          j        |d          }t          j        |d          }t          j
                    5  t          j        dt                      |||            |||           t          ||           d d d            n# 1 swxY w Y   t          j
                    5  t          j        dt                     t
                               ||          ddg          }	t          ||	           d d d            d S # 1 swxY w Y   d S )Nr2   r3   r   r5   r8   r9   r   r@   YZrA   out)rC   rE   rD   rh   ri   rR   rp   rF   rG   rI   rJ   rK   rL   r   )
r>   rT   rS   input_matrixrv   rw   df_out
ddf_out_np
ddf_out_daexpecteds
             rX   test_frame_ufunc_outr   Y  s%   RFRF9$$Q'$::L	lS#J	7	7B
.Q

C\\")++As+AACQT:\VVF**J**J		 	"	" * *h777s
####s
####*j)))	* * * * * * * * * * * * * * * 
	 	"	" ( (h777<<| 4 4sCj<II*h'''( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( (s&   ;AEEE*AG		GGc                 T   t           j                            ddd          } t                              | ddg          }t          j        |d          }t                              t           j                            ddd	          g d
          }t          j        |d          }t          j        t                    5  t          j
        ||           d d d            n# 1 swxY w Y   t          j        t                              dg          d          }t          j        t                    5  t          j
        ||           d d d            n# 1 swxY w Y   t                              t           j                            ddd          ddg          }t          j        |d          }t          j
        ||           t          j        |d|           t                              t          j
        |           dz   ddg          }t          ||           d S )Nr2   r3   r   r5   r8   r9   r   r@   )r4   r@   )Xr   r   r   r   r   r   r|   )rE   rh   ri   rR   rp   rF   rG   re   r}   
ValueErrorr   rg   	TypeErroraddr   )r   rv   rw   r   ddf_outr   s         rX   test_frame_2ufunc_outr   r  sV   9$$Q'$::L	lS#J	7	7B
.Q

C \\
	!Sw//   F nVQ''G	z	"	" ! !
s    ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! nRYYs^^Q//G	y	!	! ! !
s    ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! \\")++As+AACQT:\VVFnVQ''GF3GF7BG$$$$||BF<0025Sz|JJHgx     s$   C%%C),C)7EE!Earg1arg2r   c                   t          t          |           }t          t          |           }t          j        |d          }|j        }|j        }t           |||          |          sJ t           |||           |||                     t           |||          |          sJ t           |||           |||                     t           |||          |          sJ t           |||           |||                     | dk    rd S t           |||          |          sJ t           |||           |||                     t           |||          |          sJ t           |||           |||                     t           |||          |          sJ t           |||           |||                     d S )Nr@   r   )rC   rE   rD   rF   rG   rH   rM   r   )r>   r   r   rT   rS   r   rV   rW   s           rX   test_mixed_typesr     s!     RFRF>$""D.KI ffT4(()44444ffT4  &&t"4"4555 ffT4(()44444ffT4  &&t"4"4555 ffT4((+66666ffT4  &&t"4"4555
  ffT4(()44444ffT4  &&t"4"4555 ffT4(()44444ffT4  &&t"4"4555 ffT4((+66666ffT4  &&t"4"455555ry   zpandas,darray)r3   )r   )chunks)r|   r   c                   t          t          |           }t          t          |           }t          j        |d          }|j        }t           |||          |          sJ t           |||          |          sJ t          j                             |||          	                                j
         ||j
        |          	                                           t           |||          |          sJ t           |||          |          sJ t          j                             |||          	                                j
         ||j
        |	                                                     t          j                             |||          	                                j
         ||	                                |j
                             d S )Nr   )rC   rD   rE   rF   rG   rH   rM   rm   ro   computevalues)r>   r   darrayrS   rT   r   rW   s          rX   test_2args_with_arrayr     s    RFRF>&!$$DI ffT6**I66666ffVT**I66666J!!tV$$&&-vvfmV/L/L/T/T/V/V  
 ffT6**I66666ffVT**I66666J!!tV$$&&-vvfmV^^EUEU/V/V   J!!vt$$&&-vvfnn6F6F/V/V    ry   redfunc)sumprodr   r   meanc           	        t          j        |d          }t          t          |           }t          t          |          }| dk    r2|dv r.t	          |t
          j                  rt          j        d           t          j
                    5  t          j        dt                     t          j        dt                     t	           ||          t           j        t           j        t           j        j        f          sJ t#           | ||                     | ||                               d d d            d S # 1 swxY w Y   d S )Nr@   r   )r   r   r.   r'   z7'prod' overflowing with integer columns in pandas 1.2.0rA   )rF   rG   rC   rE   rM   rR   rp   re   xfailrI   rJ   rK   rL   FutureWarningrg   coreScalarr   )r   r>   r   r   
np_redfuncnp_ufuncs         rX   test_ufunc_with_reductionr     s     >&!$$DW%%Jr5!!H 	6???vr|,, @ 	NOOO		 	"	" L Lh777h666**T**R\29bgn,UVVVVV**XXd^^,,jj&9I9I.J.JKKK	L L L L L L L L L L L L L L L L L Ls   B*EE	Escalar   gffffff0@c                f    |t          j        | d          k    }|| k    }t          ||           d S )Nr@   )npartitions)rF   rG   r   )r   r   dask_comparepandas_compares       rX   "test_ufunc_numpy_scalar_comparisonr     s=    " R^FBBBBLv%NlN+++++ry   )-
__future__r   rI   re   importorskiprR   numpyrE   
dask.arrayarrayrD   dask.dataframe	dataframerF   dask.dataframe.utilsr   _BASE_UFUNCSmarkparametrizerg   rh   ri   rq   rr   rp   rj   rY   rx   r   paramfilterwarnings_UFUNCS_2ARGr   r   r   r   rG   r   r   
from_arrayr   r   int64float64r   r   ry   rX   <module>r      s:	   " " " " " "  V""                 * * * * * *+ + +\ 
		")##As#4455
		&"&--..//
Y&&q#B&77Y&&q#B&77RVBIOOB//00 	
 	
 			Ia2..dd;Q6R6R 	 	
 	
 			&"&,,--TT:P5Q5Q	RR
Y&&q#B&77Y&&q#B&77RVBIOOB//00 
 $-.. 	 	
 	
 4 ,//:> :> 0/5 6:>z 
 
 
 3: 3: 3:l  . FL!;!;<T!U!U VWWWFL : :;S T TUVVV


18 ,//==	
 	
 "B "B  0/"BJ 	29$$Q"$55	6	62>LL**1c*@@3PS*LUU	

 
D D
 
D( ,//( ( 0/(0! ! !> 

		&"&--..//
Y&&q#B&77Y&&q#B&77RVBIOOB//00 	
 	
	  !^R^BIIqcNNA%F%F%J%J%L%L!MNN,//%6 %6 0/ ON %6P ,// IIbi''3V'<<==BM")++As+@@OOO	

 LL**1c*@@3PS*LUUBM")++As+AA'RRR	
	    0/6 $I$I$IJJ,//
		&"&--..//
Y&&q#B&77Y&&q#B&77RVBIOOB//00 	
 	
	 L L  0/ KJL0 
		")##As#5566
Y&&q#B&77Y&&q#B&77RVBIOOB//00 	
 	
	  BhbhrllJBJt<L<L#MNN, , ON , , ,ry   