o
    _~#g                     @  s  U d dl mZ d dlmZ d dlmZ d dlmZ d dlZd dl	Z
d dlZd dlZd dlmZmZ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j d
d dgddgddd Z!ej eeej"gddd Z#ej ee
j$dddee
j$dddee
j$dddedgdd ddd Z%ej eeej"e
je&gdd ddd  Z'd!d" Z(d#d$ Z)g d%Z*ed&d'd&gZ+d(e,d)< e+-d*d+ e*D  e+-d,d+ e*D  G d-d. d.Z.G d/d0 d0Z/G d1d2 d2Z0G d3d4 d4Z1G d5d6 d6Z2G d7d8 d8Z3G d9d: d:Z4G d;d< d<Z5d=d> Z6d?d@ Z7ej89dAg dBg dCfgdDdE Z:dFdG Z;ej89dHg dIej89dJg dKdLdM Z<dNdO Z=dS )P    )annotations)abc)	timedelta)DecimalN)Index
RangeIndexSeries	TimedeltaTimedeltaIndexarray
date_range)ops)expressions)assert_invalid_addsub_typeassert_invalid_comparisonTi@B numexprpython)autouseparamsidsc                 c  sH    |  }|td| j | jV  W d    d S 1 sw   Y  d S )N_MIN_ELEMENTS)contextsetattrexprparam)requestmonkeypatchm r   /var/www/static.ux5.de/https/Moving-Object-Detection-with-OpenCV/env/lib/python3.10/site-packages/pandas/tests/arithmetic/test_numeric.pyswitch_numexpr_min_elements!   s
   

"r    )r   c                 C     | j S )zL
    Fixture to test behavior for Index, Series and tm.to_array classes
    r   r   r   r   r   box_pandas_1d_array(   s   r$      float64dtypeint64uint64c                 C  
   t | jS Ntype__name__xr   r   r   <lambda>8      
 r2   )r   r   c                 C  r!   )z7
    Several types of numeric-dtypes Index objects
    r"   r#   r   r   r   numeric_idx0   s   r4   c                 C  r!   r,   )r/   r0   r   r   r   r2   B   s    c                 C  r!   )zc
    Fixture to test behavior for Index, Series, tm.to_array, numpy Array and list
    classes
    r"   r#   r   r   r   box_1d_arrayA   s   r5   c                 C  s8   t t |  rt t |  sJ |d9 }|S )z_
    Helper to adjust the expected result if we are dividing by -0.0
    as opposed to 0.0
    )npsignbitr   anyall)zeroexpectedr   r   r   adjust_negative_zeroL   s   r=   c                 C  s   |t jtjfv rt| n| }|t jtjfv rt|n|}|||}|||}t|tr<|j	
| j	s<|j	d |_	t|| d S r,   )r   rpowoperatorpowr7   abscombine
isinstancer   indexequals
_with_freqtmassert_series_equal)seriesotheropleftrightcython_or_numpyr   r   r   r   
compare_op[   s   
rO   )i1i2i4i8u1u2u4u8f2f4f8
   (   zlist[Index | Series]leftsc                 C  s   g | ]
}t g d |dqS )r[         r'   )r   .0r(   r   r   r   
<listcomp>k   s    rc   c                 C  s$   g | ]}|d krt g d|dqS )rX   r^   r'   )r   ra   r   r   r   rc   l   s   $ c                   @  s,   e Zd Zdd Zdd Zdd Zdd Zd	S )
TestNumericComparisonsc                 C  s   t dtg dk}dtg dk}t|| tg dt dk }tg ddk }t|| t g dd tg dk}dtg dk}t|| d S )Nr                    r   rf   rg   )r7   r&   r   rG   rH   r   )selfresultr<   r   r   r   (test_operator_series_comparison_zeroranks   s   z?TestNumericComparisons.test_operator_series_comparison_zerorankc                 C  s.   |}t td}t||}t||| d S Nr%   )r7   r   rangerG   box_expectedr   )rk   box_with_arrayfixed_now_tstsobjr   r   r   test_df_numeric_cmp_dt64_raises   s   z6TestNumericComparisons.test_df_numeric_cmp_dt64_raisesc                 C  sX   t tjdddd}t tjdd}td|_t	|| d||   d S )Nrg   r%   r   namez
2000-01-01rf   )
r   r7   randomdefault_rngstandard_normalpd	Timestamprw   rG   rH   )rk   abr   r   r   test_compare_invalid   s   z+TestNumericComparisons.test_compare_invalidc           
      C  s4  |}|t ur|ntj}ttjdd}tj||dd}|	 }|
tdd |dk}W d    n1 s8w   Y  ttjdtd}tj||dd}t|| |	 }|
tdd |dk}W d    n1 snw   Y  t||  d	}	tjt|	d
 |dk  W d    d S 1 sw   Y  d S )Nrg   3   F	transposer   2   r}   r'   z0Invalid comparison between dtype=float64 and strmatch)r   r7   ndarrayr   rx   ry   rz   rG   rp   r   r   r   zerosboolassert_equalpytestraises	TypeError)
rk   rq   r   boxxboxrt   r   rl   r<   msgr   r   r   $test_numeric_cmp_string_numexpr_path   s(   




"z;TestNumericComparisons.test_numeric_cmp_string_numexpr_pathN)r/   
__module____qualname__rm   ru   r   r   r   r   r   r   rd   r   s
    rd   c                   @  s  e Zd Zejdejee	gejjde
dd ddd Zejdejee	gejjde
dd dd	d
 Zejjdeddedd edd edd dedd dgdd ddd Zejjdeddedd edd gdd dejdejejgdd Zdd Zejjdeddedd edd edd dededdejdejd ejd!d"d#ed!ed! ejd!d$d# ed! edd%ejge dd&d' Z!d(S )).TestNumericArraylikeArithmeticWithDatetimeLikebox_clsrL   c                 C     t | jt| j S r,   r.   r/   strr(   r0   r   r   r   r2          z7TestNumericArraylikeArithmeticWithDatetimeLike.<lambda>r   c                 C  s   t jg ddd}||}tg d|jd}t|ts|tu r#t|}|j|jks+J || }t|| || }t|| d S )Nre   m8[s]r'   )10s40s90s)r7   r   r
   r(   rC   r   rG   r   )rk   rL   r   rM   r<   rl   r   r   r   test_mul_td64arr   s   z?TestNumericArraylikeArithmeticWithDatetimeLike.test_mul_td64arrc                 C  r   r,   r   r0   r   r   r   r2      r   c                 C  s   t jg ddd}||}tg d|jd}t|ts|tu r#t|}|j|jks+J || }t|| || }t|| d}tj	t
|d ||  W d    n1 sWw   Y  d}tj	t
|d ||  W d    d S 1 suw   Y  d S )N)r[   r\   Z   r   r'   )1s2s3sz5ufunc '(true_)?divide' cannot use operands with typesr   z3ufunc 'floor_divide' cannot use operands with types)r7   r   r
   r(   rC   r   rG   r   r   r   r   )rk   rL   r   rM   r<   rl   r   r   r   r   test_div_td64arr   s$   

"z?TestNumericArraylikeArithmeticWithDatetimeLike.test_div_td64arr	scalar_tdrf   daysztimedelta64[s]ztimedelta64[ms]c                 C  r+   r,   r-   r0   r   r   r   r2      r3   c           
      C  s   |}|}t dd tt|D }t|tjr |j}||}nt|t	u r+|d}t
||}t
||}|| }t
|| || }	t
|	| d S )Nc                 S  s   g | ]}t |d qS )r   )r	   )rb   nr   r   r   rc      s    z`TestNumericArraylikeArithmeticWithDatetimeLike.test_numeric_arr_mul_tdscalar.<locals>.<listcomp>m8[us])r
   ro   lenrC   r7   timedelta64r(   astyper.   r   rG   rp   r   )
rk   r   r4   rq   r   rD   r<   r(   rl   commuter   r   r   test_numeric_arr_mul_tdscalar   s   
zLTestNumericArraylikeArithmeticWithDatetimeLike.test_numeric_arr_mul_tdscalarc                 C  r+   r,   r-   r0   r   r   r   r2     r3   r(   c           
      C  s   |}t djt jdd}|j|dd}tj||dd}|dd}t|tu r/|d}tj||dd}|| }	t	|	| || }	t	|	| d S )Ni N  Fcopyr   ztimedelta64[D]ztimedelta64[ns]ztimedelta64[us])
r7   aranger   r)   rG   rp   viewr.   r   r   )
rk   r(   r   rq   r   arr_i8arrrt   r<   rl   r   r   r   *test_numeric_arr_mul_tdscalar_numexpr_path   s   
zYTestNumericArraylikeArithmeticWithDatetimeLike.test_numeric_arr_mul_tdscalar_numexpr_pathc           
      C  s  |}|dd }t ddg}t|tjr)|j}|tdk r#td}||}n"t|tu r5|d}nt|tj	j
tj	jtj	jtj	jfrK|d}t||}t||}|| }t|| d}	tjt|	d ||  W d    d S 1 szw   Y  d S )	Nrf   rh   z3 Daysz36 Hoursr   r   $cannot use operands with types dtyper   )r
   rC   r7   r   r(   r   r.   r   r{   offsetsDayHourMinuteSecondrG   rp   r   r   r   r   )
rk   
three_daysr4   rq   r   rD   r<   r(   rl   r   r   r   r   test_numeric_arr_rdiv_tdscalar   s.   


"zMTestNumericArraylikeArithmeticWithDatetimeLike.test_numeric_arr_rdiv_tdscalarrJ      )hourszm8[h]NaTDrh   r   z
2021-01-01z
Asia/Tokyo)tzUTCnsc                 C  s.   |}t ||}dg d}t||| d S )N|)
unsupported operand typez3Addition/subtraction of integers and integer-arrayszInstead of adding/subtractingr   z;Concatenation operation is not implemented for NumPy arraysz+Cannot (add|subtract) NaT (to|from) ndarrayzBoperand type\(s\) all returned NotImplemented from __array_ufunc__z(can only perform ops with numeric valuesz*cannot subtract DatetimeArray from ndarrayz.Cannot add or subtract Timedelta from integers)rG   rp   joinr   )rk   r4   rJ   rq   r   rL   r   r   r   r   &test_add_sub_datetimedeltalike_invalid?  s   zUTestNumericArraylikeArithmeticWithDatetimeLike.test_add_sub_datetimedeltalike_invalidN)"r/   r   r   r   markparametrizer7   r   r   r   r]   r   r   r	   to_timedelta64to_pytimedeltar   r   r)   r&   r   r   r   r{   r   r   r   r|   to_pydatetimeto_datetime64
datetime64r   reprr   r   r   r   r   r      sl    


	



r   c                   @  s   e Zd Zdd Zdd Zdd Zdd Zej	d	e
je
jgd
d Zej	dejejejgdd Zej	dejejejgdd Zdd Zdd Zdd Zdd Zdd Zdd Zdd Zdd  Zd!d" Zd#d$ Zd%d& Zd'd( Zd)d* Z d+S ),TestDivisionByZeroc                 C  sv   |}t tjtjtjtjtjgtjd}t||}|| }t|| t|	dt
|	d }t|t| d S Nr'   rS   r   r7   naninfr&   r=   rG   assert_index_equalr   r   r   rH   rk   r;   r4   idxr<   	expected2rl   
ser_compatr   r   r   test_div_zerot     "
z TestDivisionByZero.test_div_zeroc                 C  sv   |}t tjtjtjtjtjgtjd}t||}|| }t|| t|	dt
|	d }t|t| d S r   r   r   r   r   r   test_floordiv_zero  r   z%TestDivisionByZero.test_floordiv_zeroc                 C  sl   |}t tjtjtjtjtjgtjd}|| }t|| t|dt|d }t	|t| d S r   )
r   r7   r   r&   rG   r   r   r   r   rH   )rk   r;   r4   r   r<   rl   r   r   r   r   test_mod_zero  s   "z TestDivisionByZero.test_mod_zeroc                 C  s   |}t tjtjtjtjtjgtjd}t tjtjtjtjtjgtjd}t||}t||}t|d | t|d | d S )Nr'   r   rf   )	r   r7   r   r   r&   r=   divmodrG   r   )rk   r;   r4   r   exleftexrightrl   r   r   r   test_divmod_zero  s   ""

z#TestDivisionByZero.test_divmod_zerorK   c                 C  sr   |j tjkrtd|j   |d }ttj tj tj tjtjgtjd}t	||}|||}t
|| d S )Nz#Div by negative 0 not relevant for rh   r'   )r(   r7   r*   r   skipr   r   r   r&   r=   rG   r   )rk   r;   r4   rK   r   r<   rl   r   r   r   test_div_negative_zero  s   (

z)TestDivisionByZero.test_div_negative_zerodtype1c           	      C  s   |}t g ddd|}t g ddd|}tjdd t |jtj|j dd d	}W d    n1 s8w   Y  tj|jd
d< |jdkr[|jdkr[t	j
r[|d
kr[|d}|| }t|| ||| rnJ d S )Nrh      r%      firstrv   r   r   r   rh   secondignorer:   r&   r(   rw   r   rh   r)   float32)r   r   r7   errstatevaluesr&   r   ilocr(   r   USE_NUMEXPRrG   rH   rE   )	rk   r    r   any_real_numpy_dtypedtype2r   r   r<   rl   r   r   r   test_ser_div_ser  s"   
z#TestDivisionByZero.test_ser_div_serc                 C  s   |}t ddg|}t ddg|}|| || f}t|}|d tj|d< tj|d d< t||}t|d |d  t|d |d  t|j	|}t|d |d  t|d |d  d S )Nrf   r   rg   )
r   r   listr7   r&   r   r   rG   rH   r   )rk   r   r   r   rL   rM   r<   rl   r   r   r   test_ser_divmod_zero  s   
z'TestDivisionByZero.test_ser_divmod_zeroc                 C  s   t tjdg}t tjdg}|| || f}t||}t|d |d  t|d |d  t|j|}t|d |d  t|d |d  d S )N      ?       @r   rf   )r   r7   r   r   rG   rH   r   )rk   rL   rM   r<   rl   r   r   r   test_ser_divmod_inf  s   
z&TestDivisionByZero.test_ser_divmod_infc                 C  s   t dgd }t jdd}tdgd }|t| }t|| t|| }t|| t|t| }t|| d S )Nr   r%   rg   ri   )r7   r   rx   ry   rz   r   rG   rH   )rk   
zero_arraydatar<   rl   r   r   r   test_rdiv_zero_compat  s   z(TestDivisionByZero.test_rdiv_zero_compatc                 C  sB   t g ddd}t tj tjtjgdd}|d }t|| d S Nr6   r   rf   r   rv   r   r   r7   r   r   rG   rH   rk   serr<   rl   r   r   r   test_div_zero_inf_signs  s   z*TestDivisionByZero.test_div_zero_inf_signsc                 C  s<   t g ddd}t dtjdgdd}d| }t|| d S )Nr   r   rv   ri   r   )r   r7   r   rG   rH   r  r   r   r   test_rdiv_zero  s   z!TestDivisionByZero.test_rdiv_zeroc                 C  sB   t g ddd}|d }t tj tjtjgdd}t|| d S r   r   )rk   r  rl   r<   r   r   r   test_floordiv_div  s   z$TestDivisionByZero.test_floordiv_divc                 C  sb   t g dg dd}|| }tg d}ttjtjtjdg}t ||d}t|| d S )Nr   r   r   r   r   r   r   r   rf   )r{   	DataFramer   r7   r   rG   assert_frame_equal)rk   dfrl   r   r   r<   r   r   r   test_df_div_zero_df  s   z&TestDivisionByZero.test_df_div_zero_dfc                 C  s   t g dg dd}tg d}ttjtjtjdg}t ||d}tjdd |jd|j }W d    n1 s?w   Y  t j||j|j	d	}t
|| d S )
Nr   r   r  r  rf   r   r   floatrD   columns)r{   r  r   r7   r   r   r   r   rD   r  rG   r	  )rk   r
  r   r   r<   r   rl   r   r   r   test_df_div_zero_array&  s   z)TestDivisionByZero.test_df_div_zero_arrayc                 C  s   t g dg dd}|d }t jtj|j|jd}tj|jdddf< t	|| tj
dd	 |jd
d }W d    n1 sDw   Y  t j||j|jd}t	|| d S )Nr   r   r  r   r  rh   rf   r   r   r&   )r{   r  r7   r   rD   r  r   r   rG   r	  r   r   r   rk   r
  rl   r<   r   result2r   r   r   test_df_div_zero_int3  s   z'TestDivisionByZero.test_df_div_zero_intc                 C  sN   t tjdd}|d }|| }|| }|d|dr%J d S Nrg   )r[   r%   r   r{   r  r7   rx   ry   rz   fillnarE   rk   r
  r  resres2r   r   r   (test_df_div_zero_series_does_not_commuteB  s
   z;TestDivisionByZero.test_df_div_zero_series_does_not_commutec                 C  s   t g dg dd}tg d}|s|d}ttjtjtjdg}t ||d}|| }t|| t jg dg dddd}tg dd	d
}ttjtjtjdg}t ||d}|| }t|| d S )Nr   r   r  r   r   r   r   r&   r   Fr   r)   r'   )r{   r  r   r   r7   r   rG   r	  )rk   using_array_managerr
  r   r   r<   rl   r   r   r   test_df_mod_zero_dfM  s   
z&TestDivisionByZero.test_df_mod_zero_dfc                 C  s   t g dg dd}tg ddd}ttjtjtjdg}t ||d}tjdd	 |j|j }W d    n1 s>w   Y  t j||j|jdd
}tj|j	dddf< t
|| d S )Nr   r   r  r  r&   r'   r   r   r   )rD   r  r(   rh   rf   )r{   r  r   r7   r   r   r   rD   r  r   rG   r	  )rk   r
  r   r   r<   r   r  r   r   r   test_df_mod_zero_arraye  s   z)TestDivisionByZero.test_df_mod_zero_arrayc                 C  s   t g dg dd}|d }t jtj|j|jd}t|| tjdd |j	
dd }W d    n1 s:w   Y  t j||j|jd}t|| d S )	Nr   r   r  r   r  r   r   r&   )r{   r  r7   r   rD   r  rG   r	  r   r   r   r  r   r   r   test_df_mod_zero_intv  s   z'TestDivisionByZero.test_df_mod_zero_intc                 C  sN   t tjdd}|d }|| }|| }|d|dr%J d S r  r  r  r   r   r   (test_df_mod_zero_series_does_not_commute  s
   z;TestDivisionByZero.test_df_mod_zero_series_does_not_commuteN)!r/   r   r   r   r   r   r   r   r   r   r?   truedivfloordivr   r7   r)   r&   r*   r   r   r   r   r  r  r  r  r  r  r  r  r  r  r  r   r   r   r   r   s  s0    	



r   c                	   @  s   e Zd Zdd Zdd Zdd Zejde	j
eje	jgdd	 Zd
d Zdd Zdd Zdd Zdd Zdd Zejde	jejgdd Zdd Zdd Zdd Zdd Zejd ejd!d"d#d$ejgd%d& Zd'd( Z d)d* Z!d+d, Z"d-S ).TestMultiplicationDivisionc                 C  sl   |}t tdg}t tdg}t||}t||}|td }t|| |td }t|| d S )Nr[   r%   rg   )r   r   rG   rp   r   )rk   rq   r   r  r<   rl   r   r   r   test_divide_decimal  s   z.TestMultiplicationDivision.test_divide_decimalc                 C  sb   t ddgdd}t ddgdd}t dtj g}||}tj||dd	 || }t|| d S )
Nrf   r   r   rv   g{Gzg{Gzr   Fcheck_names)r   r7   r   divrG   rH   )rk   r   r   r<   rl   r   r   r   test_div_equiv_binop  s   
z/TestMultiplicationDivision.test_div_equiv_binopc                 C  sH   |}|d }| d}t|| |d }t|jd }t|| d S )Nrf   r&   rg   )r   rG   r   r   r   )rk   r4   r   rl   r<   r   r   r   test_div_int  s   
z'TestMultiplicationDivision.test_div_intrK   c                 C  s*   |}t ||}||d}t || d S Nrf   )rG   rp   r   )rk   rK   r4   rq   r   rl   r   r   r   test_mul_int_identity  s   
z0TestMultiplicationDivision.test_mul_int_identityc                 C  sd   |}|| }|t jddd }t||d  |jt jkrdnd}|t jd|d }t|| d S )Nr%   r)   r'   r*   )r7   r   rG   r   r(   r*   r   )rk   r4   r   didxrl   	arr_dtyper   r   r   test_mul_int_array  s   z-TestMultiplicationDivision.test_mul_int_arrayc                 C  sJ   |}|| }|j tjkrdnd}|ttjd|d }t|t| d S )Nr*   r)   r%   r'   )r(   r7   r*   r   r   rG   rH   )rk   r4   r   r+  r,  rl   r   r   r   test_mul_int_series  s
   z.TestMultiplicationDivision.test_mul_int_seriesc                 C  sB   |}t jddd}|t|d  }t||d  }t|| d S )Nr%   r&   r'   g?)r7   r   r   rG   rH   )rk   r4   r   rng5rl   r<   r   r   r   test_mul_float_series  s
   z0TestMultiplicationDivision.test_mul_float_seriesc                 C  s    |}|| }t ||d  d S Nrg   rG   r   )rk   r4   r   rl   r   r   r   test_mul_index  s   z)TestMultiplicationDivision.test_mul_indexc                 C  sL   |}d}t jt|d |tddd  W d    d S 1 sw   Y  d S )Nz,cannot perform __rmul__ with this index typer   20130101r%   periods)r   r   r   r   rk   r4   r   r   r   r   r   test_mul_datelike_raises  s
   "z3TestMultiplicationDivision.test_mul_datelike_raisesc                 C  s   |}d}t jt|d ||dd   W d    n1 sw   Y  t jt|d |tddg  W d    d S 1 s?w   Y  d S )Nz(operands could not be broadcast togetherr   r   rh   rf   rg   )r   r   
ValueErrorr7   r   r7  r   r   r   test_mul_size_mismatch_raises  s   "z8TestMultiplicationDivision.test_mul_size_mismatch_raisesc                 C  sJ   |}|}t ||jd}t||}t||}||d}t|| d S )Nr   r   r   rG   rp   r   )rk   rK   r4   rq   r   r   r<   rl   r   r   r   test_pow_float  s   
z)TestMultiplicationDivision.test_pow_floatc                 C  sF   |}|}t |jd }t||}t||}|d }t|| d S r1  r;  )rk   r4   rq   r   r   r<   rl   r   r   r   test_modulo  s   z&TestMultiplicationDivision.test_moduloc           	      C  s~   |}t |d}tjdd t |jd\}}W d    n1 s w   Y  t|t|f}t||D ]
\}}t|| q2d S )Nrg   r   r   )r   r7   r   r   r   ziprG   r   )	rk   r4   r   rl   r&  modr<   rer   r   r   test_divmod_scalar
  s   
z-TestMultiplicationDivision.test_divmod_scalarc           
      C  s   |}t j|jj|jjdd }t||}t jdd t|j|\}}W d    n1 s-w   Y  t|t|f}t||D ]
\}}	t	
||	 q?d S Nr'   rg   r   r   )r7   onesr   shaper(   r   r   r   r>  rG   r   
rk   r4   r   rJ   rl   r&  r?  r<   r@  rA  r   r   r   test_divmod_ndarray  s   
z.TestMultiplicationDivision.test_divmod_ndarrayc           
      C  s   |}t j|jj|jjdd }t|t|}t jdd t|j|\}}W d    n1 s/w   Y  t|t|f}t||D ]
\}}	t	
||	 qAd S rC  )r7   rD  r   rE  r(   r   r   r   r>  rG   rH   rF  r   r   r   test_divmod_series!  s   z-TestMultiplicationDivision.test_divmod_seriesrJ      igX9v@gQ	c                 C  s   t jdd}dd }||}t|t | |||  tt || |||  t|t | |||  tt || |||  d S )Nrg   )r%   rh   c                 S  s   t j| tdg ddS )NABCDE)jimjoejolier  )r{   r  r   r0   r   r   r   r2   0  s    z?TestMultiplicationDivision.test_ops_np_scalar.<locals>.<lambda>)r7   rx   ry   rz   rG   r	  r   )rk   rJ   valsfr
  r   r   r   test_ops_np_scalar-  s   "z-TestMultiplicationDivision.test_ops_np_scalarc                 C  s   t tjdtjdtddddd}d|_td|i}tj	|| ||d  dd	 tj	|| ||d  dd	 tj	||k ||d k dd	 tj	|| ||d  dd	 d S )
Nr[   r'   
2020-01-01r5  rs   rD   rw   AFr$  )
r   r7   r   r&   r   rw   r{   r  rG   rH   )rk   rs   r
  r   r   r   test_operators_frame<  s   
 z/TestMultiplicationDivision.test_operators_framec                 C  s2  t jdd tg dg dd}|d |d  }t|d j|d j dd	}t j|jd
d< t	|| |d d
 }tt j|j
dd}t	|| |d}|d |d  }t|d j|d j }t	|| |d}|d |d  }|d |d  }||rJ W d    d S 1 sw   Y  d S )Nr   r   r   r   r  r   r   r&   r'   r   rh   rR  )r7   r   r{   r  r   r   r   r   rG   rH   rD   r   rE   )rk   prl   r<   r  r   r   r   test_modulo2N  s$   

"z'TestMultiplicationDivision.test_modulo2c                 C  s   t jdd2 tddg}|d }tt jt jg}t|| d| }tt jdg}t|| W d    d S 1 s;w   Y  d S )Nr   r   r   rf   ri   )r7   r   r   r   rG   rH   )rk   srl   r<   r   r   r   test_modulo_zero_inte  s   "z/TestMultiplicationDivision.test_modulo_zero_intN)#r/   r   r   r#  r'  r(  r   r   r   r?   mulr   rmulr!  r*  r-  r.  r0  r3  r8  r:  r@   r>   r<  r=  rB  rG  rH  r7   r   r   rP  rT  rV  rX  r   r   r   r   r"    s.    



r"  c                   @  s4  e Zd Zejdeg dedddeg dedddedd	ej	ej	ged
ddfeg dedddeg ded
ddedddej	ged
ddfgdd Z
ejdejdg dieddejdg dieddejddd	ej	ej	gied
dfejdg dieddejdg died
dejddddej	gied
dfgdd Zdd Zdd Zdd Zdd Zdd Zejddd d! Zejjd"d#d$ d%d$ d&d$ gg d'd(d)d* Zejjd"d+d$ d,d$ gd-d.gd(d/d0 Zejjd"d1d$ d2d$ d3d$ gg d'd(d4d5 Zd6d7 Zd8S )9TestAdditionSubtractionzfirst, second, expectedre   ABCr1   rR  )rg   rg   rg   ABD      @      @ABCD)rg   rg   rg   rg   rh   r   r%   c                 C  $   t || | t || | d S r,   )rG   rH   rk   r   r   r<   r   r   r   test_add_seriesw     z'TestAdditionSubtraction.test_add_seriesrD   c                 C  ra  r,   )rG   r	  rb  r   r   r   test_add_frames  rd  z'TestAdditionSubtraction.test_add_framesc           	      C  s  t dd tdD }d| }|dd }t|| td|i}d| }td|dd i}t|| t tj	d	tj
d
tdd	ddd}| }dddg}tjt|d ||  W d    n1 skw   Y  tjt|d ||  W d    d S 1 sw   Y  d S )Nc                 S  s   g | ]}t |qS r   )r   )rb   ir   r   r   rc     r   zFTestAdditionSubtraction.test_series_frame_radd_bug.<locals>.<listcomp>r%   foo_c                 S     d|  S Nrh  r   r0   r   r   r   r2         zDTestAdditionSubtraction.test_series_frame_radd_bug.<locals>.<lambda>rN  c                 S  ri  rj  r   r0   r   r   r   r2     rk  r[   r'   rQ  r5  rs   rR  r   r   zConcatenation operationr   )r   ro   maprG   rH   r{   r  r	  r7   r   r&   r   r   r   r   r   r   )	rk   rr   rN  rl   r<   framers   fix_nowr   r   r   r   test_series_frame_radd_bug  s2   


"z2TestAdditionSubtraction.test_series_frame_radd_bugc                 C  s0  t tjdd}||j  }||j }t|| t t	dddt	dddd}||j  }||j }t|| d}t
jt|d ||j  }W d    n1 sXw   Y  tjtjddt	dddd}td	|d
< |d
 |j  |d< |d
 |j |d< tj|d |d dd d S )Nrg   r%   r4  r5  re  z.cannot subtract PeriodArray from DatetimeArrayr   )r%   rg   20130102dater<   rl   Fr$  )r   r7   rx   ry   rz   rD   	to_seriesrG   rH   r   r   r   r   	to_periodr{   r  r|   )rk   r  r<   rl   r   r
  r   r   r   test_datetime64_with_index  s.   




z2TestAdditionSubtraction.test_datetime64_with_indexc                 C  s   |}t jdd}t|t |jd}|| }|| }| D ](\}}| D ]\}	}
|| |	 d }t |
sA|
|ks@J q)t |sHJ q)q!| D ]*\}}| D ]!\}	}
|| |	 ||  }t |
sp|
|ksoJ qVt |swJ qVqNd S )Nrg   r   re  )r7   rx   ry   r   r   r  itemsisnan)rk   float_framerm  garbage	colSeriesidSum	seriesSumcolrI   r   valorigValr   r   r   test_frame_operators  s(   

z,TestAdditionSubtraction.test_frame_operatorsc                 C  s2   t j|g dd}|| }|d }t|| d S )N)r   CBrS  )r  rg   )r{   r  rG   r	  )rk   rw  frame2addedr<   r   r   r   test_frame_operators_col_align  s   z6TestAdditionSubtraction.test_frame_operators_col_alignc              	   C  s8   t dg di}t|| t ddtjdgi d S )Nr}   )r}   Nr~   aabb)r{   r  rG   r	  r7   r   )rk   r
  r   r   r    test_frame_operators_none_to_nan  s   &z8TestAdditionSubtraction.test_frame_operators_none_to_nanr(   )r  r)   c                 C  sZ   t j|dt jdg|dt jdg|dg}|D ]}|| |s"J t|| | qd S )Nr'   rS  )r  r(   r   rD   r(   )r{   r  rE   rG   r	  )rk   r(   framesr
  r   r   r   test_frame_operators_empty_like  s   
z7TestAdditionSubtraction.test_frame_operators_empty_likefuncc                 C     | d S r1  r   r0   r   r   r   r2     rk  z TestAdditionSubtraction.<lambda>c                 C     | d d d S r1  r   r0   r   r   r   r2         c                 C     dS rn   r   r0   r   r   r   r2         )multiplysliceconstantr   c                 C  >   |}t tjdtjdtddddd}||}t||| d S Nr[   r'   rQ  r5  rs   rR  r   r7   r   r&   r   rO   )rk   all_arithmetic_functionsr  rK   rI   rJ   r   r   r    test_series_operators_arithmetic  s   
z8TestAdditionSubtraction.test_series_operators_arithmeticc                 C  s   | d S r)  r   r0   r   r   r   r2   !  rk  c                 C  r  rn   r   r0   r   r   r   r2   !  r  addr  c                 C  r  r  r  )rk   comparison_opr  rK   rI   rJ   r   r   r   test_series_operators_compare   s   
z5TestAdditionSubtraction.test_series_operators_comparec                 C  r  r1  r   r0   r   r   r   r2   /  rk  c                 C  r  r1  r   r0   r   r   r   r2   /  r  c                 C  r  rn   r   r0   r   r   r   r2   /  r  c           
      C  s  t tjdtjdtddddd}||}t||}t|tjr;t	|t	|kr;g }|D ]}|
| |
tj q,n|}t|}tjdd t|jt|}W d    n1 s\w   Y  t||D ] \}}	tt||	 |j|jks{J t|j|jd  qfd S )	Nr[   r'   rQ  r5  rs   rR  r   r   )r   r7   r   r&   r   r   rC   r   Iterabler   appendr   asarrayr   r   r>  rG   assert_almost_equalrw   r   rD   rF   )
rk   r  rI   rJ   resultsother_npr   	expectedsrl   r<   r   r   r   test_divmod-  s.   



z#TestAdditionSubtraction.test_divmodc                 C  s   t tjddtjdtddddd}|d	 }t||}t tjgt| |jdd}t tj	gt| |jdd}t
|d	 | t
|d | d S )
Nrf      r'   rQ  r[   r5  rs   rR  r   )r   r7   r   r&   r   r   r   r   rD   r   rG   rH   )rk   tserrJ   rl   exp1exp2r   r   r   test_series_divmod_zeroN  s   

z/TestAdditionSubtraction.test_series_divmod_zeroN)r/   r   r   r   r   r   r   r   r7   r   rc  r{   r  rf  ro  rt  r  r  r  r  r  r  r  r  r   r   r   r   r[  s  sf    
 
" 





r[  c                   @  s   e Zd Zejdeeegejde	j
e	je	jgdd Zejdeegejde	j
e	je	jgdd Zejdeegejde	j
e	je	jgdd Zd	d
 ZdS )TestUFuncCompatholderr(   c                 C  s   |t u rt nt}|tu r"|tjkrtd| d tdddd}n|tjd|ddd}t|}|ttjd|ddd}t	
|| d S )Nzdtype z not relevant for RangeIndexr   r%   foorv   r'   )r   r   r   r7   r)   r   r   r   sinrG   r   )rk   r  r(   r   r   rl   r<   r   r   r   test_ufunc_compatf  s   

z!TestUFuncCompat.test_ufunc_compatc                 C  s  |g d|dd}|t u rt nt}t|}|jdkr t||s"J tttjg dtjddd}t	||}t
|| t|d}|jdkrOt||sQJ tg dtjdd}t	||}t
|| |d }|jdkrut||swJ tg d	tjdd}t	||}t
|| |d }|jdkrt||sJ tg d
tjdd}t	||}t
|| |d }|jdkrt||sJ tg dtjdd}t	||}t
|| |d }|jdkrt||sJ tg dtjdd}t	||}t
|| d S )N)rf   rg   rh   r   r%   r1   r   rZ   r'   rv   r   )g      ?r   g      ?r   g      @)r^  r_        @g      @g      @)g      ri   r   r   r^  r   )r   r   r^  r_  r  )r   r   r7   sqrtr(   rC   r   r&   rG   rp   r   divide)rk   r  r(   r   r   rl   expr   r   r   test_ufunc_coercionsv  s@   
"z$TestUFuncCompat.test_ufunc_coercionsc                 C  s   |g d|dd}|t u rt nt}t|}t|tsJ tg dtjdd}tg dtjdd}t|d t	|| t|d t	|| d S )Nre   r1   r   )ri   ri   ri   )r   r   r^  r   rf   )
r   r   r7   modfrC   tupler&   rG   r   rp   )rk   r  r(   rt   r   rl   r  r  r   r   r   !test_ufunc_multiple_return_values  s   
z1TestUFuncCompat.test_ufunc_multiple_return_valuesc                 C  sP   t g dg ddd}tj|ddgd t g dg ddd}t|| d S )	Nrj   re   r1   rR  r   rg   r[   )r[   rf      )r   r7   r  atrG   rH   )rk   rW  r<   r   r   r   test_ufunc_at  s   zTestUFuncCompat.test_ufunc_atN)r/   r   r   r   r   r   r   r   r   r7   r)   r*   r&   r  r  r  r  r   r   r   r   r  d  s    *r  c                   @  sj   e Zd Zejddegdd Zejddegdd Zejde	j
e	je	je	je	jgdd	 ZdS )
TestObjectDtypeEquivalencer(   Nc                 C  st   |}t g d|d}t tjtjtjg|d}t||}t||}tj| }t|| |tj }t|| d S )Nre   r'   )r   r7   r   rG   rp   r   rk   r(   rq   r   r  r<   rl   r   r   r   test_numarr_with_dtype_add_nan  s   

z9TestObjectDtypeEquivalence.test_numarr_with_dtype_add_nanc                 C  sh   |}t g d|d}t g d|d}t||}t||}d| }t|| |d }t|| d S )Nre   r'   )rg   rh   r   rf   )r   rG   rp   r   r  r   r   r   test_numarr_with_dtype_add_int  s   z9TestObjectDtypeEquivalence.test_numarr_with_dtype_add_intrK   c                 C  sR   t tjddtdtd}|d|}|d|t}t	
|t| d S )Nrg   r[   r  r   )r   r7   rx   ry   rz   r   objectr   r  rG   rH   )rk   rK   r   rl   r<   r   r   r   test_operators_reverse_object  s   
z8TestObjectDtypeEquivalence.test_operators_reverse_object)r/   r   r   r   r   r   r  r  r  r?   r  subrY  r   r!  r  r   r   r   r   r    s    

r  c                   @  s  e Zd Zejdejejej	ej
ejgejdedddedddeddded	d
dgejdedddedddeddded	d
dgdd Zejdejejej	ej
ejgejdedddedddeddded	d
dgejdg ddd Zejdedddedddgejdedddedddgdd Zejdedddedddgejdddgdd Zejdejejej	ej
ejejejgdd Zdd Zejdeddddedddfedd d!d!ed"d#dfeddddeedddjd fedd$dd%eedd$djd% fedd&edfedd'dd(edddfed
dd)d'ed*ddfed+d,d(dedfgd-d. Zejd/ejejgejd0g d1d2d3 Zd4d5 Zd6S )7TestNumericArithmeticUnsortedrK   idx1r   r[   rf   r_   rg   ir%   r6   idx2c                 C  sL   | d}| d}|||}|t| t| }tj||dd d S Nr  barequivexact)_renamer   to_numpyrG   r   )rk   rK   r  r  rl   r<   r   r   r   test_binops_index  s
   


z/TestNumericArithmeticUnsorted.test_binops_indexr   scalar)r6   rf   rg   c                 C  s0   |||}|t | |}tj||dd d S Nr  r  )r   r  rG   r   )rk   rK   r   r  rl   r<   r   r   r   test_binops_index_scalar  s   
z6TestNumericArithmeticUnsorted.test_binops_index_scalarc                 C  sL   | d}| d}t||}tt| t| }tj||dd d S r  )r  r@   r   r  rG   r   )rk   r  r  rl   r<   r   r   r   test_binops_index_pow(  s
   


z3TestNumericArithmeticUnsorted.test_binops_index_powc                 C  s0   t ||}t t| |}tj||dd d S r  )r@   r   r  rG   r   )rk   r   r  rl   r<   r   r   r   test_binops_index_scalar_pow3  s   
z:TestNumericArithmeticUnsorted.test_binops_index_scalar_powc                 C  s   t d}ttjdd}|t||}|||}t|| t	tjdd}|t	||g|}|||}t
|| d S )Nr%   rg   )rg   r%   )r   r   r7   rx   ry   rz   rG   rH   r{   r  r	  )rk   rK   rD   rJ   r<   rl   r   r   r   $test_arithmetic_with_frame_or_series=  s   

zBTestNumericArithmeticUnsorted.test_arithmetic_with_frame_or_seriesc                 C  sJ  t ddd}|d }t ddd}tj||dd |d }t ddd}tj||dd |d }t d	d
d}tj||dd |d }t dddd}tj||dd |d }t dddd }tj||dd |d }|}tj||dd || }t|j|j }tj||dd t ddd}|d }t|jd }tjt|j|dd d S )Nr   r[   rg   r_   r   Tr  r  r   r%   rf   r&     )r   rG   r   r   r   r   _values)rk   r   rl   r<   r   r   r   test_numeric_compat2X  s4   z2TestNumericArithmeticUnsorted.test_numeric_compat2zidx, div, expectedr  i  ii7!   C   d   r   r   r   rh   ir  ii8c                 C  s   t j|| |dd d S )NTr  r2  )rk   r   r&  r<   r   r   r   test_numeric_compat2_floordiv  s   z;TestNumericArithmeticUnsorted.test_numeric_compat2_floordivr(   delta)rf   r   r6   c                 C  s   ||}t g d|d}|| }t |j| |d}t|| || }t |j| |d}t|| t|| d|  t|| d|  || jrMJ d S )N)r[   r  r  r'   rg   r   )r   r   rG   r   empty)rk   r(   r  rD   rl   r<   r   r   r   test_addsub_arithmetic  s   z4TestNumericArithmeticUnsorted.test_addsub_arithmeticc                 C  sh   t tjtjtjg}t g d}t g d}t||}t||}t||}|| }t|| d S )N)r   r   r   )r   r   r   )r   r7   r   rG   rp   r   )rk   rq   rL   rM   r<   rl   r   r   r   test_pow_nan_with_zero  s   z4TestNumericArithmeticUnsorted.test_pow_nan_with_zeroN)r/   r   r   r   r   r   r?   r  r  rY  r!  r   r   r  r  r  r  r@   r?  r  r  r   r  r  r7   r)   r&   r  r  r   r   r   r   r    s    




	



	




	   	
)


r  c                  C  sv   t g dg dd} t jdg dig dd}| j|dd	}t tjd
dd
gdtjdtjgd}t|| d S )Nrj   )皙?Nr  )rS  r  rS  )r  g333333?g?)r   rg   rh   re  rf   
fill_valuer   ri   )r{   r  	rfloordivr7   r   r   rG   r	  )r
  rJ   rl   r<   r   r   r   test_fill_value_inf_masking  s   r  c                  C  s   t jtdtjddddgd tjgd tddtdtdd	} t jtjdd
tdtdd	}t	
d  | j|dd W d    d S 1 sNw   Y  d S )Nr[   rf   rg   rh   r   )rS  r  r  r   
abcdefghijr`  r  )r[   r   
abcdefghjkABCXr   r  )r{   r  r7   r   r   r   rx   ry   rz   rG   assert_produces_warningr&  )pdf1pdf2r   r   r   test_dataframe_div_silenced  s"   

"r  zdata, expected_datarj   )r   rg   r   c           
      C  s|   t |dd}| |}||| }||| }t|| fv rt}nt|| fv r(t}nt }||dd}	t||	 t||	 d S )NInt64r'   )r   r   r   rG   r   )
r$   r5   r   expected_datar   	containerrL   rM   clsr<   r   r   r    test_integer_array_add_list_like  s   r  c                  C  s   t jdtjddit jjddgg dgddgdd	} |  }|j	
d
d|_	| | }t jdgd dg| j	d}t|| d S )Nr}   rg      r~   rj   levAlevB)namesre  r   rf   ri   )r  rD   )r{   r  r7   rx   ry   rz   
MultiIndexfrom_productr   rD   	swaplevelrG   r	  )r
  df2rl   r<   r   r   r   "test_sub_multiindex_swapped_levels  s   r  power)rf   rg   r%   string_size)r   rf   rg   r%   c                 C  sX   t td|  }tj|t jd}d| }||k}tt j|jtd}t	
|| d S )Nr[   r'    )r7   r   ro   r{   r  r)   r   rE  r   rG   r	  )r  r  r}   rM   rL   rl   r<   r   r   r   test_empty_str_comparison  s   r  c                  C  sh   t g d} t g ddd}| | }t g ddd}t|| | | }t g ddd}t|| d S )Nre   )rg   rf   rh   UInt64r'   )rh   rh   r  Float64)r6   rf   r   )r   rG   rH   )series1series2rl   r<   r   r   r   test_series_add_sub_with_UInt64  s   r  )>
__future__r   collectionsr   datetimer   decimalr   r?   numpyr7   r   pandasr{   r   r   r   r	   r
   r   r   pandas._testing_testingrG   pandas.corer   pandas.core.computationr   r   pandas.tests.arithmetic.commonr   r   fixturer    to_arrayr$   r   r4   r   r5   r=   rO   _ldtypesr]   __annotations__extendrd   r   r   r"  r[  r  r  r  r  r  r   r   r  r  r  r  r   r   r   r   <module>   s|   $	




: H   f rR3 S
