a
    Pf                     @  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 Znumexprpython)Zautouseparamsidsc                 c  sD   |  (}|td| j | jV  W d    n1 s60    Y  d S )N_MIN_ELEMENTS)contextsetattrexprparam)requestmonkeypatchm r   ]/var/www/ai-form-bot/venv/lib/python3.9/site-packages/pandas/tests/arithmetic/test_numeric.pyswitch_numexpr_min_elements!   s    
r   )r   c                 C  s   | 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  s
   t | jS Ntype__name__xr   r   r   <lambda>8       r.   )r   r   c                 C  s   | j S )z7
    Several types of numeric-dtypes Index objects
    r   r    r   r   r   numeric_idx0   s    r0   c                 C  s   | j S r(   )r+   r,   r   r   r   r.   B   r/   c                 C  s   | j S )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    r1   c                 C  s8   t t |  r4t 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
    )npZsignbitr   anyall)zeroexpectedr   r   r   adjust_negative_zeroL   s    r8   c                 C  s   |t jtjfv rt| n| }|t jtjfv r8t|n|}|||}|||}t|trx|j	
| j	sx|j	d |_	t|| d S r(   )r   rpowoperatorpowr3   abscombine
isinstancer   indexequals
_with_freqtmassert_series_equal)seriesotheropleftrightZcython_or_numpyr   r   r   r   
compare_op[   s    
rI   )i1i2i4i8u1u2Zu4u8f2Zf4f8
   (   zlist[Index | Series]leftsc                 C  s   g | ]}t g d |dqS )rS         r$   )r   .0r%   r   r   r   
<listcomp>k   r/   r[   c                 C  s$   g | ]}|d krt g d|dqS )rQ   rV   r$   )r   rY   r   r   r   r[   l   r/   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   r^   r_   )r3   r#   r   rB   rC   r   )selfresultr7   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"   )r3   r   rangerB   box_expectedr   )rc   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 )Nr_   r"   r   namez
2000-01-01r^   )
r   r3   randomdefault_rngstandard_normalpd	Timestampro   rB   rC   )rc   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 sp0    Y  ttjdtd}tj||dd}t|| |	 &}|
tdd |dk}W d    n1 s0    Y  t||  d	}	tjt|	d
 |dk  W d    n1 s&0    Y  d S )Nr_   3   FZ	transposer   2   ru   r$   z0Invalid comparison between dtype=float64 and strmatch)r   r3   Zndarrayr   rp   rq   rr   rB   rh   r   r   r   zerosboolassert_equalpytestraises	TypeError)
rc   ri   r   boxZxboxrl   r   rd   r7   msgr   r   r   $test_numeric_cmp_string_numexpr_path   s"    
&
&z;TestNumericComparisons.test_numeric_cmp_string_numexpr_pathN)r+   
__module____qualname__re   rm   rw   r   r   r   r   r   r\   r   s   r\   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_clsrG   c                 C  s   t | jt| j S r(   r*   r+   strr%   r,   r   r   r   r.      r/   z7TestNumericArraylikeArithmeticWithDatetimeLike.<lambda>r   c                 C  s   t jg ddd}||}tg d|jd}t|ts>|tu rFt|}|j|jksVJ || }t|| || }t|| d S )Nr]   m8[s]r$   )Z10sZ40sZ90s)r3   r   r
   r%   r>   r   rB   r   )rc   rG   r   rH   r7   rd   r   r   r   test_mul_td64arr   s    z?TestNumericArraylikeArithmeticWithDatetimeLike.test_mul_td64arrc                 C  s   t | jt| j S r(   r   r,   r   r   r   r.      r/   c                 C  s   t jg ddd}||}tg d|jd}t|ts>|tu rFt|}|j|jksVJ || }t|| || }t|| d}tj	t
|d ||  W d    n1 s0    Y  d}tj	t
|d ||  W d    n1 s0    Y  d S )N)rS   rT   Z   r   r$   )Z1sZ2sZ3sz5ufunc '(true_)?divide' cannot use operands with typesr{   z3ufunc 'floor_divide' cannot use operands with types)r3   r   r
   r%   r>   r   rB   r   r   r   r   )rc   rG   r   rH   r7   rd   r   r   r   r   test_div_td64arr   s     &z?TestNumericArraylikeArithmeticWithDatetimeLike.test_div_td64arr	scalar_tdr^   daysztimedelta64[s]ztimedelta64[ms]c                 C  s
   t | jS r(   r)   r,   r   r   r   r.      r/   c           
      C  s   |}|}t dd tt|D }t|tjr@|j}||}nt|t	u rV|d}t
||}t
||}|| }t
|| || }	t
|	| d S )Nc                 S  s   g | ]}t |d qS )r   )r	   )rZ   nr   r   r   r[      r/   z`TestNumericArraylikeArithmeticWithDatetimeLike.test_numeric_arr_mul_tdscalar.<locals>.<listcomp>m8[us])r
   rg   lenr>   r3   timedelta64r%   astyper*   r   rB   rh   r   )
rc   r   r0   ri   r   r?   r7   r%   rd   Zcommuter   r   r   test_numeric_arr_mul_tdscalar   s    
zLTestNumericArraylikeArithmeticWithDatetimeLike.test_numeric_arr_mul_tdscalarc                 C  s
   t | jS r(   r)   r,   r   r   r   r.     r/   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copyry   ztimedelta64[D]ztimedelta64[ns]ztimedelta64[us])
r3   aranger   r&   rB   rh   viewr*   r   r   )
rc   r%   r   ri   r   Zarr_i8arrrl   r7   rd   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rR|j}|tdk rFtd}||}nDt|tu rj|d}n,t|tj	j
tj	jtj	jtj	jfr|d}t||}t||}|| }t|| d}	tjt|	d ||  W d    n1 s0    Y  d S )	Nr^   r`   z3 Daysz36 Hoursr   r   $cannot use operands with types dtyper{   )r
   r>   r3   r   r%   r   r*   r   rs   offsetsZDayZHourMinuteSecondrB   rh   r   r   r   r   )
rc   Z
three_daysr0   ri   r   r?   r7   r%   rd   r   r   r   r   test_numeric_arr_rdiv_tdscalar   s,    

zMTestNumericArraylikeArithmeticWithDatetimeLike.test_numeric_arr_rdiv_tdscalarrE      )hourszm8[h]NaTDr`   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)rB   rh   joinr   )rc   r0   rE   ri   r   rG   r   r   r   r   &test_add_sub_datetimedeltalike_invalid?  s    zUTestNumericArraylikeArithmeticWithDatetimeLike.test_add_sub_datetimedeltalike_invalidN)"r+   r   r   r   markparametrizer3   r   r   r   rU   r   r   r	   Zto_timedelta64Zto_pytimedeltar   r   r&   r#   r   r   r   rs   r   r   r   rt   to_pydatetimeZto_datetime64Z
datetime64r   reprr   r   r   r   r   r      sj   


	



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$   rM   r   r3   naninfr#   r8   rB   assert_index_equalr   r   r   rC   rc   r6   r0   idxr7   Z	expected2rd   
ser_compatr   r   r   test_div_zerot  s    "
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  s    "
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   r3   r   r#   rB   r   r   r   r   rC   )rc   r6   r0   r   r7   rd   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   r^   )	r   r3   r   r   r#   r8   divmodrB   r   )rc   r6   r0   r   ZexleftZexrightrd   r   r   r   test_divmod_zero  s    ""

z#TestDivisionByZero.test_divmod_zerorF   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 r`   r$   )r%   r3   r'   r   skipr   r   r   r#   r8   rB   r   )rc   r6   r0   rF   r   r7   rd   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 sp0    Y  tj|jd
d< |jdkr|jdkrt	j
r|d
kr|d}|| }t|| ||| rJ d S )Nr`      r"      firstrn   r   r   r   r`   secondignorer5   r#   r%   ro   r   r`   r&   Zfloat32)r   r   r3   errstatevaluesr#   r   ilocr%   r   ZUSE_NUMEXPRrB   rC   r@   )	rc   r   r   any_real_numpy_dtypedtype2r   r   r7   rd   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 )Nr^   r   r_   )
r   r   listr3   r#   r   r   rB   rC   r   )rc   r   r   r   rG   rH   r7   rd   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   r^   )r   r3   r   r   rB   rC   r   )rc   rG   rH   r7   rd   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"   r_   ra   )r3   r   rp   rq   rr   r   rB   rC   )rc   Z
zero_arraydatar7   rd   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r2   r   r^   r   rn   r   r   r3   r   r   rB   rC   rc   serr7   rd   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   rn   ra   r   )r   r3   r   rB   rC   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   )rc   r   rd   r7   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   r^   )rs   	DataFramer   r3   r   rB   assert_frame_equal)rc   dfrd   r   r   r7   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~0    Y  t j||j|j	d	}t
|| d S )
Nr   r   r   r   r^   r   r   floatr?   columns)rs   r   r   r3   r   r   r   r   r?   r   rB   r   )rc   r   r   r   r7   r   rd   r   r   r   test_df_div_zero_array&  s    0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 s0    Y  t j||j|jd}t	|| d S )Nr   r   r   r   r   r`   r^   r   r   r#   )rs   r   r3   r   r?   r   r   r   rB   r   r   r   r   rc   r   rd   r7   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rJJ d S Nr_   )rS   r"   r   rs   r   r3   rp   rq   rr   Zfillnar@   rc   r   r   resZ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}|s2|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$   )rs   r   r   r   r3   r   rB   r   )rc   Zusing_array_managerr   r   r   r7   rd   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|0    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   )r?   r   r%   r`   r^   )rs   r   r   r3   r   r   r   r?   r   r   rB   r   )rc   r   r   r   r7   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 st0    Y  t j||j|jd}t|| d S )	Nr   r   r   r   r   r   r   r#   )rs   r   r3   r   r?   r   rB   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rJJ 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   r3   r&   r#   r'   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   s  s.   	



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 )NrS   r"   r_   )r   r   rB   rh   r   )rc   ri   r   r   r7   rd   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 )
Nr^   r   r   rn   g{Gzg{Gzr   FZcheck_names)r   r3   r   divrB   rC   )rc   r   r   r7   rd   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 )Nr^   r#   r_   )r   rB   r   r   r   )rc   r0   r   rd   r7   r   r   r   test_div_int  s    
z'TestMultiplicationDivision.test_div_intrF   c                 C  s*   |}t ||}||d}t || d S Nr^   )rB   rh   r   )rc   rF   r0   ri   r   rd   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'   )r3   r   rB   r   r%   r'   r   )rc   r0   r   didxrd   	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%   r3   r'   r   r   rB   rC   )rc   r0   r   r  r  rd   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?)r3   r   r   rB   rC   )rc   r0   r   Zrng5rd   r7   r   r   r   test_mul_float_series  s
    z0TestMultiplicationDivision.test_mul_float_seriesc                 C  s    |}|| }t ||d  d S Nr_   rB   r   )rc   r0   r   rd   r   r   r   test_mul_index  s    z)TestMultiplicationDivision.test_mul_indexc                 C  sJ   |}d}t jt|d  |tddd  W d    n1 s<0    Y  d S )Nz,cannot perform __rmul__ with this index typer{   20130101r"   Zperiods)r   r   r   r   rc   r0   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<0    Y  t jt|d" |tddg  W d    n1 s|0    Y  d S )Nz(operands could not be broadcast togetherr{   r   r`   r^   r_   )r   r   
ValueErrorr3   r   r  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   rB   rh   r   )rc   rF   r0   ri   r   r   r7   rd   r   r   r   test_pow_float  s    
z)TestMultiplicationDivision.test_pow_floatc                 C  sF   |}|}t |jd }t||}t||}|d }t|| d S r	  r  )rc   r0   ri   r   r   r7   rd   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@0    Y  t|t|f}t||D ]\}}t|| qdd S )Nr_   r   r   )r   r3   r   r   r   ziprB   r   )	rc   r0   r   rd   r   modr7   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 sZ0    Y  t|t|f}t||D ]\}}	t	
||	 q~d S Nr$   r_   r   r   )r3   onesr   shaper%   r   r   r   r  rB   r   
rc   r0   r   rE   rd   r   r  r7   r  r  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^0    Y  t|t|f}t||D ]\}}	t	
||	 qd S r  )r3   r  r   r  r%   r   r   r   r  rB   rC   r  r   r   r   test_divmod_series!  s    .z-TestMultiplicationDivision.test_divmod_seriesrE      igX9v@gQ	c                 C  s   t jdd}dd }||}t|t | |||  tt || |||  t|t | |||  tt || |||  d S )Nr_   )r"   r`   c                 S  s   t j| tdg ddS )NZABCDE)ZjimZjoeZjolier   )rs   r   r   r,   r   r   r   r.   0  s   z?TestMultiplicationDivision.test_ops_np_scalar.<locals>.<lambda>)r3   rp   rq   rr   rB   r   r   )rc   rE   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 )
NrS   r$   
2020-01-01r  rk   r?   ro   AFr   )
r   r3   r   r#   r   ro   rs   r   rB   rC   )rc   rk   r   r   r   r   test_operators_frame<  s    
z/TestMultiplicationDivision.test_operators_framec                 C  s6  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  }||rJ W d    n1 s(0    Y  d S )Nr   r   r   r   r   r   r   r#   r$   r   r`   r%  )r3   r   rs   r   r   r   r   r   rB   rC   r?   r   r@   )rc   prd   r7   r   r   r   r   test_modulo2N  s"    

z'TestMultiplicationDivision.test_modulo2c                 C  s   t jddb tddg}|d }tt jt jg}t|| d| }tt jdg}t|| W d    n1 st0    Y  d S )Nr   r   r   r^   ra   )r3   r   r   r   rB   rC   )rc   srd   r7   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   Zrmulr   r  r  r  r  r  r  r  r;   r9   r  r  r  r  r  r3   r   r   r#  r'  r)  r+  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, expectedr]   ABCr-   r%  )r_   r_   r_   ZABD      @      @ABCD)r_   r_   r_   r_   r`   r   r"   c                 C  s$   t || | t || | d S r(   )rB   rC   rc   r   r   r7   r   r   r   test_add_seriesw  s    z'TestAdditionSubtraction.test_add_seriesr?   c                 C  s$   t || | t || | d S r(   )rB   r   r2  r   r   r   test_add_frames  s    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 s0    Y  tjt|d ||  W d    n1 s0    Y  d S )Nc                 S  s   g | ]}t |qS r   )r   )rZ   ir   r   r   r[     r/   zFTestAdditionSubtraction.test_series_frame_radd_bug.<locals>.<listcomp>r"   foo_c                 S  s   d|  S Nr7  r   r,   r   r   r   r.     r/   zDTestAdditionSubtraction.test_series_frame_radd_bug.<locals>.<lambda>r!  c                 S  s   d|  S r8  r   r,   r   r   r   r.     r/   rS   r$   r$  r  rk   r%  r   r   zConcatenation operationr{   )r   rg   maprB   rC   rs   r   r   r3   r   r#   r   r   r   r   r   r   )	rc   rj   r!  rd   r7   framerk   Zfix_nowr   r   r   r   test_series_frame_radd_bug  s.    
&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 s0    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 )Nr_   r"   r  r  r4  z.cannot subtract PeriodArray from DatetimeArrayr{   )r"   r_   Z20130102dater7   rd   Fr   )r   r3   rp   rq   rr   r?   Z	to_seriesrB   rC   r   r   r   r   Z	to_periodrs   r   rt   )rc   r   r7   rd   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 ]P\}}| D ]>\}	}
|| |	 d }t |
s|
|ksJ qRt |sRJ qRqB| D ]T\}}| D ]B\}	}
|| |	 ||  }t |
s|
|ksJ qt |sJ qqd S )Nr_   r   r4  )r3   rp   rq   r   r   r   itemsisnan)rc   float_framer:  garbageZ	colSeriesZidSumZ	seriesSumcolrD   r   valZ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Br&  )r   r_   )rs   r   rB   r   )rc   r@  Zframe2addedr7   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 )Nru   )ru   Nrv   ZaaZbb)rs   r   rB   r   r3   r   )rc   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 ]&}|| |sDJ t|| | q.d S )Nr$   r&  )r   r%   r   r?   r%   )rs   r   r@   rB   r   )rc   r%   framesr   r   r   r   test_frame_operators_empty_like  s    
z7TestAdditionSubtraction.test_frame_operators_empty_likefuncc                 C  s   | d S r	  r   r,   r   r   r   r.     r/   z TestAdditionSubtraction.<lambda>c                 C  s   | d d d S r	  r   r,   r   r   r   r.     r/   c                 C  s   dS rf   r   r,   r   r   r   r.     r/   )multiplysliceconstantr   c                 C  s>   |}t tjdtjdtddddd}||}t||| d S NrS   r$   r$  r  rk   r%  r   r3   r   r#   r   rI   )rc   Zall_arithmetic_functionsrM  rF   rD   rE   r   r   r    test_series_operators_arithmetic  s    
z8TestAdditionSubtraction.test_series_operators_arithmeticc                 C  s   | d S r  r   r,   r   r   r   r.   !  r/   c                 C  s   dS rf   r   r,   r   r   r   r.   !  r/   addrP  c                 C  s>   |}t tjdtjdtddddd}||}t||| d S rQ  rR  )rc   Zcomparison_oprM  rF   rD   rE   r   r   r   test_series_operators_compare   s    
z5TestAdditionSubtraction.test_series_operators_comparec                 C  s   | d S r	  r   r,   r   r   r   r.   /  r/   c                 C  s   | d d d S r	  r   r,   r   r   r   r.   /  r/   c                 C  s   dS rf   r   r,   r   r   r   r.   /  r/   c           
      C  s  t tjdtjdtddddd}||}t||}t|tjrvt	|t	|krvg }|D ]}|
| |
tj qXn|}t|}tjdd" t|jt|}W d    n1 s0    Y  t||D ]@\}}	tt||	 |j|jksJ t|j|jd  qd S )	NrS   r$   r$  r  rk   r%  r   r   )r   r3   r   r#   r   r   r>   r   Iterabler   appendr   Zasarrayr   r   r  rB   Zassert_almost_equalro   r   r?   rA   )
rc   rM  rD   rE   resultsZother_npr   	expectedsrd   r7   r   r   r   test_divmod-  s(    



0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 )
Nr^      r$   r$  rS   r  rk   r%  r   )r   r3   r   r#   r   r   r   r   r?   r   rB   rC   )rc   ZtserrE   rd   exp1exp2r   r   r   test_series_divmod_zeroN  s    

z/TestAdditionSubtraction.test_series_divmod_zeroN)r+   r   r   r   r   r   r   r   r3   r   r3  rs   r   r5  r;  r=  rD  rH  rI  rL  rS  rU  rZ  r^  r   r   r   r   r-  s  sd   
 
" 





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 rD|tjkr4t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"   foorn   r$   )r   r   r   r3   r&   r   r   r   sinrB   r   )rc   r`  r%   r   r   rd   r7   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||sDJ tttjg dtjddd}t	||}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r:t||s>J 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)r^   r_   r`   r   r"   r-   r   rR   r$   rn   r   )g      ?r   g      ?r   g      @)r/  r0        @g      @g      @)g      ra   r   r   r/  r   )r   r   r/  r0  rd  )r   r   r3   sqrtr%   r>   r   r#   rB   rh   r   divide)rc   r`  r%   r   r   rd   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 )Nr]   r-   r   )ra   ra   ra   )r   r   r/  r   r^   )
r   r   r3   modfr>   tupler#   rB   r   rh   )rc   r`  r%   rl   r   rd   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 )	Nrb   r]   r-   r%  r   r_   rS   )rS   r^      )r   r3   rT  atrB   rC   )rc   r*  r7   r   r   r   test_ufunc_at  s    zTestUFuncCompat.test_ufunc_atN)r+   r   r   r   r   r   r   r   r   r3   r&   r'   r#   rc  rh  rk  rn  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 )Nr]   r$   )r   r3   r   rB   rh   r   rc   r%   ri   r   r   r7   rd   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 )Nr]   r$   )r_   r`   r   r^   )r   rB   rh   r   rp  r   r   r   test_numarr_with_dtype_add_int  s    z9TestObjectDtypeEquivalence.test_numarr_with_dtype_add_intrF   c                 C  sR   t tjddtdtd}|d|}|d|t}t	
|t| d S )Nr_   rS   rJ  r   )r   r3   rp   rq   rr   r   objectr   r   rB   rC   )rc   rF   r   rd   r7   r   r   r   test_operators_reverse_object  s    
z8TestObjectDtypeEquivalence.test_operators_reverse_object)r+   r   r   r   r   r   rs  rq  rr  r:   rT  subr,  r   r   rt  r   r   r   r   ro    s   

ro  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TestNumericArithmeticUnsortedrF   idx1r   rS   r^   rW   r_   ir"   r2   idx2c                 C  sL   | d}| d}|||}|t| t| }tj||dd d S Nra  barequivexact)_renamer   to_numpyrB   r   )rc   rF   rw  ry  rd   r7   r   r   r   test_binops_index  s
    


z/TestNumericArithmeticUnsorted.test_binops_indexr   scalar)r2   r^   r_   c                 C  s0   |||}|t | |}tj||dd d S Nr|  r}  )r   r  rB   r   )rc   rF   r   r  rd   r7   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 rz  )r  r;   r   r  rB   r   )rc   rw  ry  rd   r7   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  rB   r   )rc   r   r  rd   r7   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"   r_   )r_   r"   )r   r   r3   rp   rq   rr   rB   rC   rs   r   r   )rc   rF   r?   rE   r7   rd   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   rS   r_   rW   r   Tr}  rl  r   r"   r^   r#     )r   rB   r   r   r   r   _values)rc   r   rd   r7   r   r   r   test_numeric_compat2X  s4    z2TestNumericArithmeticUnsorted.test_numeric_compat2zidx, div, expectedr  i  ii7!   C   d   r   rz   r   r`   ir  ii8c                 C  s   t j|| |dd d S )NTr}  r
  )rc   r   r   r7   r   r   r   test_numeric_compat2_floordiv  s    z;TestNumericArithmeticUnsorted.test_numeric_compat2_floordivr%   delta)r^   r   r2   c                 C  s   ||}t g d|d}|| }t |j| |d}t|| || }t |j| |d}t|| t|| d|  t|| d|  || jrJ d S )N)rS   r[  rl  r$   r_   r   )r   r   rB   r   empty)rc   r%   r  r?   rd   r7   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   r3   r   rB   rh   r   )rc   ri   rG   rH   r7   rd   r   r   r   test_pow_nan_with_zero  s    z4TestNumericArithmeticUnsorted.test_pow_nan_with_zeroN)r+   r   r   r   r   r   r:   rT  ru  r,  r   r   r   r  r  r  r  r;   r  r  r  r   r  r  r3   r&   r#   r  r  r   r   r   r   rv    s   




	



	




	  	 
)


rv  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 )Nrb   )皙?Nr  )r&  rF  r&  )r  g333333?g?)r   r_   r`   r4  r^   Z
fill_valuer   ra   )rs   r   Z	rfloordivr3   r   r   rB   r   )r   rE   rd   r7   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    n1 s0    Y  d S )NrS   r^   r_   r`   r   )r&  rF  rE  r   Z
abcdefghijr1  r   )rS   r   Z
abcdefghjkZABCXr   r  )rs   r   r3   r   r   r   rp   rq   rr   rB   Zassert_produces_warningr   )Zpdf1Zpdf2r   r   r   test_dataframe_div_silenced  s     

r  zdata, expected_datarb   )r   r_   r   c           
      C  s|   t |dd}| |}||| }||| }t|| fv r>t}nt|| fv rPt}nt }||dd}	t||	 t||	 d S )NZInt64r$   )r   r   r   rB   r   )
r!   r1   r   Zexpected_datar   	containerrG   rH   clsr7   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 )Nru   r_      rv   rb   ZlevAZlevB)namesr4  r   r^   ra   )r   r?   )rs   r   r3   rp   rq   rr   Z
MultiIndexZfrom_productr   r?   Z	swaplevelrB   r   )r   Zdf2rd   r7   r   r   r   "test_sub_multiindex_swapped_levels  s    r  power)r^   r_   r"   string_size)r   r^   r_   r"   c                 C  sX   t td|  }tj|t jd}d| }||k}tt j|jtd}t	
|| d S )NrS   r$    )r3   r   rg   rs   r   r&   r}   r  r~   rB   r   )r  r  ru   rH   rG   rd   r7   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 )Nr]   )r_   r^   r`   ZUInt64r$   )r`   r`   r  ZFloat64)r2   r^   r   )r   rB   rC   )Zseries1Zseries2rd   r7   r   r   r   test_series_add_sub_with_UInt64  s    r  )>
__future__r   collectionsr   datetimer   decimalr   r:   numpyr3   r   Zpandasrs   r   r   r   r	   r
   r   r   Zpandas._testingZ_testingrB   Zpandas.corer   Zpandas.core.computationr   r   Zpandas.tests.arithmetic.commonr   r   Zfixturer   Zto_arrayr!   r   r0   r   r1   r8   rI   Z_ldtypesrU   __annotations__extendr\   r   r   r   r-  r_  ro  rv  r  r  r   r   r  r  r  r  r   r   r   r   <module>   sz   $	



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