U
    +if                     @  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	m
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 d dlmZ d dlmZ d d	lmZmZmZ d d
lm Z! d dl"m#Z#m$Z$ ej%eeej&gddd Z'dd Z(dd Z)eegZ*de+d< edddgZ,de+d< e,-dd dD  G dd dZ.G dd dZ/G dd  d Z0G d!d" d"Z1G d#d$ d$Z2G d%d& d&Z3G d'd( d(Z4G d)d* d*Z5d+d, Z6d-d. Z7ej89d/d d0d1gd d1d2gfgd3d4 Z:d5d6 Z;ej89d7d0d1d8gej89d9d d0d1d8gd:d; Z<dS )<    )annotations)abc)Decimal)combinationsN)Any)Index
RangeIndexSeries	TimedeltaTimedeltaIndexarray)ops)Float64Index
Int64IndexUInt64Index)expressions)assert_invalid_addsub_typeassert_invalid_comparison)paramsc                 C  s   | j S )zL
    Fixture to test behavior for Index, Series and tm.to_array classes
    )param)request r   W/home/mars/bis/venv/lib/python3.8/site-packages/pandas/tests/arithmetic/test_numeric.pybox_pandas_1d_array&   s    r   c                 C  s8   t t |  r4t t |  s,t|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AssertionError)zeroexpectedr   r   r   adjust_negative_zero.   s    r!   c                 C  s   |t jtjfkrt| n| }|t jtjfkr8t|n|}|||}|||}t|trx|j	
| j	sx|j	d |_	t|| d S N)r   rpowoperatorpowr   abscombine
isinstancer	   indexequals
_with_freqtmassert_series_equal)seriesotheropleftrightZcython_or_numpypythonr   r   r   
compare_op=   s    
r4   z	list[Any]ser_or_index
   (   leftsc                 C  s(   g | ] }t D ]}|d ddg|dqqS )r6         dtype)r5   ).0r<   clsr   r   r   
<listcomp>N   s    r?   )i1i2i4i8u1u2Zu4u8f2Zf4f8c                   @  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dddgk}dtdddgk}t|| tdddgt dk }tdddgdk }t|| t dddgd tdddgk}dtdddgk}t|| d S )Nr                    )r   float64r	   r,   r-   r   )selfresultr    r   r   r   (test_operator_series_comparison_zerorankZ   s    "z?TestNumericComparisons.test_operator_series_comparison_zerorankc                 C  s.   |}t td}t||}t||| d S N   )r   r   ranger,   box_expectedr   )rO   box_with_arrayfixed_now_tstsobjr   r   r   test_df_numeric_cmp_dt64_raisesf   s    z6TestNumericComparisons.test_df_numeric_cmp_dt64_raisesc                 C  sL   t tjddd}t tjd}td|_t|| d||   d S )NrS   r   namez
2000-01-01rJ   )	r	   r   randomrandnpd	Timestampr\   r,   r-   )rO   abr   r   r   test_compare_invalidn   s    z+TestNumericComparisons.test_compare_invalidc              	   C  s   |}|t k	r|ntj}ttjd}tj||dd}|dk}ttjdt	d}tj||dd}t
|| |dk}t
||  d}tjt|d |dk  W 5 Q R X d S )Ni FZ	transposera   r;   z0Invalid comparison between dtype=float64 and strmatch)r   r   Zndarrayr	   r]   r^   r,   rU   zerosboolassert_equalpytestraises	TypeError)rO   rV   boxZxboxrY   rP   r    msgr   r   r   $test_numeric_cmp_string_numexpr_pathv   s    z;TestNumericComparisons.test_numeric_cmp_string_numexpr_pathN)__name__
__module____qualname__rQ   rZ   rc   ro   r   r   r   r   rI   Y   s   rI   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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d&d' Z d(S )).TestNumericArraylikeArithmeticWithDatetimeLikebox_clsr1   c                 C  s   t | jt| j S r"   typerp   strr<   xr   r   r   <lambda>       z7TestNumericArraylikeArithmeticWithDatetimeLike.<lambda>Zidsc                 C  sp   t jdddgdd}||}tdddg}t|ts<|tkrDt|}|| }t|| || }t|| d S )	NrJ   rK   rL   m8[s]r;   Z10sZ40sZ90s)r   r   r   r(   r	   r,   ri   )rO   r1   rt   r2   r    rP   r   r   r   test_mul_td64arr   s    z?TestNumericArraylikeArithmeticWithDatetimeLike.test_mul_td64arrc                 C  s   t | jt| j S r"   ru   rx   r   r   r   rz      r{   c              	   C  s   t jdddgdd}||}tdddg}t|ts<|tkrDt|}|| }t|| || }t|| d	}tjt	|d
 ||  W 5 Q R X tjt	|d
 ||  W 5 Q R X d S )Nr6   r7   Z   r}   r;   Z1sZ2sZ3szCannot dividere   )
r   r   r   r(   r	   r,   ri   rj   rk   rl   )rO   r1   rt   r2   r    rP   rn   r   r   r   test_div_td64arr   s    z?TestNumericArraylikeArithmeticWithDatetimeLike.test_div_td64arr	scalar_tdrJ   daysztimedelta64[s]ztimedelta64[ms]c                 C  s
   t | jS r"   rv   rp   rx   r   r   r   rz      r{   c           	      C  sf   |}|}t dd tt|D }t||}t||}|| }t|| || }t|| d S )Nc                 S  s   g | ]}t |d qS )r   )r
   )r=   nr   r   r   r?      s     z`TestNumericArraylikeArithmeticWithDatetimeLike.test_numeric_arr_mul_tdscalar.<locals>.<listcomp>)r   rT   lenr,   rU   ri   )	rO   r   numeric_idxrV   rm   r)   r    rP   Zcommuter   r   r   test_numeric_arr_mul_tdscalar   s    zLTestNumericArraylikeArithmeticWithDatetimeLike.test_numeric_arr_mul_tdscalarc                 C  s
   t | jS r"   r   rx   r   r   r   rz      r{   r<   c           
      C  s   |}t djt jdd}|j|dd}tj||dd}|dd}tj||dd}|| }	t|	| || }	t|	| d S )Ni N  Fcopyrd   ztimedelta64[D]ztimedelta64[ns])r   arangeastypeint64r,   rU   viewri   )
rO   r<   r   rV   rm   Zarr_i8arrrY   r    rP   r   r   r   *test_numeric_arr_mul_tdscalar_numexpr_path   s    zYTestNumericArraylikeArithmeticWithDatetimeLike.test_numeric_arr_mul_tdscalar_numexpr_pathc           	   	   C  sr   |}|dd }t ddg}t||}t||}|| }t|| d}tjt|d ||  W 5 Q R X d S )NrJ   rL   z3 Daysz36 Hours$cannot use operands with types dtypere   )r   r,   rU   ri   rj   rk   rl   )	rO   Z
three_daysr   rV   rm   r)   r    rP   rn   r   r   r   test_numeric_arr_rdiv_tdscalar   s    zMTestNumericArraylikeArithmeticWithDatetimeLike.test_numeric_arr_rdiv_tdscalarr/      )hourszm8[h]NaTDrL   r   z
2021-01-01z
Asia/Tokyo)tzUTCnsc                 C  s<   |}t ||}ddddddddd	d
g	}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 ndarray)r,   rU   joinr   )rO   r   r/   rV   rm   r1   rn   r   r   r   &test_add_sub_datetimedeltalike_invalid  s    zUTestNumericArraylikeArithmeticWithDatetimeLike.test_add_sub_datetimedeltalike_invalidN)!rp   rq   rr   rj   markparametrizer   r   r   r	   r8   r~   r   r
   Zto_timedelta64Zto_pytimedeltar   r   r   rN   r   r   Ztimedelta64r_   offsetsZMinuteZSecondr`   to_pydatetimeZto_datetime64Z
datetime64r   r   r   r   r   r   rs      sp       
	



rs   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;   rC   r   r   naninfrN   r!   r,   assert_index_equalr	   r   r   r-   rO   r   r   idxr    Z	expected2rP   
ser_compatr   r   r   test_div_zero:  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_zeroG  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   r   r   rN   r,   r   r	   r   r   r-   )rO   r   r   r   r    rP   r   r   r   r   test_mod_zeroT  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   rJ   )	r   r   r   r   rN   r!   divmodr,   r   )rO   r   r   r   ZexleftZexrightrP   r   r   r   test_divmod_zero]  s    ""

z#TestDivisionByZero.test_divmod_zeror0   c                 C  sb   t |trd S |d }ttj tj tj tjtjgtjd}t||}|||}t	|| d S )NrL   r;   )
r(   r   r   r   r   r   rN   r!   r,   r   )rO   r   r   r0   r   r    rP   r   r   r   test_div_negative_zeroh  s    
(

z)TestDivisionByZero.test_div_negative_zerodtype1c           	   	   C  s   |}t ddddgdd|}t ddddgdd|}tjd	d
$ t |jtj|j dd d}W 5 Q R X tj|jdd< |jdkr|jdkrt	j
r|dkr|d}|| }t|| ||| rtd S )NrL      rS      firstr[   r   secondignorer   rN   )r<   r\   r   Zfloat32)r	   r   r   errstatevaluesrN   r   ilocr<   exprZUSE_NUMEXPRr,   r-   r*   r   )	rO   Zswitch_numexpr_min_elementsr   any_real_numpy_dtypedtype2r   r   r    rP   r   r   r   test_ser_div_serw  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 )NrJ   r   rK   )
r	   r   listr   rN   r   r   r,   r-   r   )rO   r   r   r   r1   r2   r    rP   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   rJ   )r	   r   r   r   r,   r-   r   )rO   r1   r2   r    rP   r   r   r   test_ser_divmod_inf  s    
z&TestDivisionByZero.test_ser_divmod_infc                 C  sz   t dgd }t jd}tdgd }|t| }t|| t|| }t|| t|t| }t|| d S )Nr   rS   rM   )r   r   r]   r^   r	   r,   r-   )rO   Z
zero_arraydatar    rP   r   r   r   test_rdiv_zero_compat  s    z(TestDivisionByZero.test_rdiv_zero_compatc                 C  sD   t dddgdd}t tj tjtjgdd}|d }t|| d S Nr   r   rJ   r   r[   r	   r   r   r   r,   r-   rO   serr    rP   r   r   r   test_div_zero_inf_signs  s    z*TestDivisionByZero.test_div_zero_inf_signsc                 C  s>   t dddgdd}t dtjdgdd}d| }t|| d S )Nr   r   rJ   r   r[   rM   )r	   r   r   r,   r-   r   r   r   r   test_rdiv_zero  s    z!TestDivisionByZero.test_rdiv_zeroc                 C  sD   t dddgdd}|d }t tj tjtjgdd}t|| d S r   r   )rO   r   rP   r    r   r   r   test_floordiv_div  s    z$TestDivisionByZero.test_floordiv_divc                 C  sn   t ddddgddddgd}|| }tddddg}ttjtjtjdg}t ||d}t|| d S )	NrL   r   rS   r   r   r   r   r   rJ   )r_   	DataFramer	   r   r   r,   assert_frame_equal)rO   dfrP   r   r   r    r   r   r   test_df_div_zero_df  s     z&TestDivisionByZero.test_df_div_zero_dfc              	   C  s   t ddddgddddgd}tddddg}ttjtjtjdg}t ||d}tjd	d
 |jd|j }W 5 Q R X t j||j|j	d}t
|| d S )NrL   r   rS   r   r   r   r   rJ   r   r   floatr)   columns)r_   r   r	   r   r   r   r   r   r)   r   r,   r   )rO   r   r   r   r    r   rP   r   r   r   test_df_div_zero_array  s     z)TestDivisionByZero.test_df_div_zero_arrayc              	   C  s   t ddddgddddg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 5 Q R X t j||j|jd}t	|| d S )NrL   r   rS   r   r   r   r   rJ   r   r   rN   )r_   r   r   r   r)   r   r   r   r,   r   r   r   r   rO   r   rP   r    r   result2r   r   r   test_df_div_zero_int  s     z'TestDivisionByZero.test_df_div_zero_intc                 C  sJ   t tjdd}|d }|| }|| }|d|drFtd S Nr6   rS   r   r_   r   r   r]   r^   Zfillnar*   r   rO   r   r   resZres2r   r   r   (test_df_div_zero_series_does_not_commute  s
    z;TestDivisionByZero.test_df_div_zero_series_does_not_commutec                 C  s   t ddddgddddgd}tddddg}|s>|d}ttjtjtjdg}t ||d}|| }t|| t jddddgddddgddd	}tddddgd
d}ttjtjtjdg}t ||d}|| }t|| d S )NrL   r   rS   r   r   r   rN   Fr   r   r;   )r_   r   r	   r   r   r   r,   r   )rO   Zusing_array_managerr   r   r   r    rP   r   r   r   test_df_mod_zero_df  s     
$z&TestDivisionByZero.test_df_mod_zero_dfc              	   C  s   t ddddgddddgd}tddddgdd}ttjtjtjdg}t ||d}tjd	d
 |j|j }W 5 Q R X t j||j|jdd}tj|j	dddf< t
|| d S )NrL   r   rS   r   r   r   rN   r;   r   r   )r)   r   r<   rJ   )r_   r   r	   r   r   r   r   r)   r   r   r,   r   )rO   r   r   r   r    r   r   r   r   r   test_df_mod_zero_array+  s     z)TestDivisionByZero.test_df_mod_zero_arrayc              	   C  s   t ddddgddddgd}|d }t jtj|j|jd}t|| tjdd	 |j	
d
d }W 5 Q R X t j||j|jd}t|| d S )NrL   r   rS   r   r   r   r   r   r   rN   )r_   r   r   r   r)   r   r,   r   r   r   r   r   r   r   r   test_df_mod_zero_int<  s     z'TestDivisionByZero.test_df_mod_zero_intc                 C  sJ   t tjdd}|d }|| }|| }|d|drFtd S r   r   r   r   r   r   (test_df_mod_zero_series_does_not_commuteJ  s
    z;TestDivisionByZero.test_df_mod_zero_series_does_not_commuteN)!rp   rq   rr   r   r   r   r   rj   r   r   r$   truedivfloordivr   r   r   rN   uint64r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   9  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 )Nr6   rS   rK   )r	   r   r,   rU   ri   )rO   rV   rm   r   r    rP   r   r   r   test_divide_decimalX  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 )
NrJ   r   r   r[   g{Gzg{Gzr   FZcheck_names)r	   r   r   divr,   r-   )rO   r   r   r    rP   r   r   r   test_div_equiv_binoph  s    
z/TestMultiplicationDivision.test_div_equiv_binopc                 C  sH   |}|d }| d}t|| |d }t|jd }t|| d S )NrJ   rN   rK   )r   r,   r   r   r   )rO   r   r   rP   r    r   r   r   test_div_intv  s    
z'TestMultiplicationDivision.test_div_intr0   c                 C  s*   |}t ||}||d}t || d S NrJ   )r,   rU   ri   )rO   r0   r   rV   r   rP   r   r   r   test_mul_int_identity  s    
z0TestMultiplicationDivision.test_mul_int_identityc                 C  sb   |}|| }|t jddd }t||d  t|tr<dnd}|t jd|d }t|| d S )NrS   r   r;   r   )r   r   r,   r   r(   r   r   )rO   r   r   didxrP   	arr_dtyper   r   r   test_mul_int_array  s    z-TestMultiplicationDivision.test_mul_int_arrayc                 C  sH   |}|| }t |trdnd}|ttjd|d }t|t| d S )Nr   r   rS   r;   )r(   r   r	   r   r   r,   r-   )rO   r   r   r   r   rP   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 )NrS   rN   r;   g?)r   r   r	   r,   r-   )rO   r   r   Zrng5rP   r    r   r   r   test_mul_float_series  s
    z0TestMultiplicationDivision.test_mul_float_seriesc                 C  s    |}|| }t ||d  d S NrK   )r,   r   )rO   r   r   rP   r   r   r   test_mul_index  s    z)TestMultiplicationDivision.test_mul_indexc              	   C  s8   |}d}t jt|d |tjddd  W 5 Q R X d S )Nz,cannot perform __rmul__ with this index typere   20130101rS   Zperiods)rj   rk   rl   r_   
date_rangerO   r   r   rn   r   r   r   test_mul_datelike_raises  s    z3TestMultiplicationDivision.test_mul_datelike_raisesc              	   C  sb   |}d}t jt|d ||dd   W 5 Q R X t jt|d |tddg  W 5 Q R X d S )Nz(operands could not be broadcast togetherre   r   rL   rJ   rK   )rj   rk   
ValueErrorr   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   r,   rU   ri   )rO   r0   r   rV   rm   r   r    rP   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   r   r,   rU   ri   )rO   r   rV   rm   r   r    rP   r   r   r   test_modulo  s    z&TestMultiplicationDivision.test_moduloc           	   	   C  sj   |}t |d}tjdd t |jd\}}W 5 Q R X t|t|f}t||D ]\}}t|| qPd S )NrK   r   r   )r   r   r   r   r   zipr,   r   )	rO   r   r   rP   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 5 Q R X t|t|f}t||D ]\}}	t	
||	 qjd S Nr;   rK   r   r   )r   onesr   shaper<   r   r   r   r   r,   r   
rO   r   r   r/   rP   r   r   r    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 5 Q R X t|t|f}t||D ]\}}	t	
||	 qnd S r  )r   r  r   r  r<   r   r	   r   r   r,   r-   r  r   r   r   test_divmod_series  s    z-TestMultiplicationDivision.test_divmod_seriesr/      igX9v@gQ	c                 C  s   t jdd}dd }||}t|t | |||  tt || |||  t|t | |||  tt || |||  d S )NrS   rL   c                 S  s   t j| tddddgdS )NZABCDEZjimZjoeZjolier   )r_   r   r   rx   r   r   r   rz     s     z?TestMultiplicationDivision.test_ops_np_scalar.<locals>.<lambda>)r   r]   r^   r,   r   r   )rO   r/   valsfr   r   r   r   test_ops_np_scalar  s    z-TestMultiplicationDivision.test_ops_np_scalarc                 C  s   t  }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 )NrX   AFr   )r,   makeTimeSeriesr\   r_   r   r-   )rO   rX   r   r   r   r   test_operators_frame  s    z/TestMultiplicationDivision.test_operators_framec              	   C  s(  t jdd tddddgddddg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tW 5 Q R X d S )Nr   r   rL   r   rS   r   r   r   r   r   rN   r;   r)   r\   )r   r   r_   r   r	   r   r   r   r,   r-   r)   r   r*   r   )rO   prP   r    r   r   r   r   test_modulo2  s"     

z'TestMultiplicationDivision.test_modulo2c              	   C  sn   t jddX tddg}|d }tt jt jg}t|| d| }tt jdg}t|| W 5 Q R X d S )Nr   r   r   rJ   rM   )r   r   r	   r   r,   r-   )rO   srP   r    r   r   r   test_modulo_zero_int(  s    z/TestMultiplicationDivision.test_modulo_zero_intN)#rp   rq   rr   r   r   r   rj   r   r   r$   mulr   Zrmulr   r   r   r   r   r   r   r   r%   r#   r   r   r  r  r  r   r   r   r  r  r  r  r   r   r   r   r   T  s,   



r   c                   @  s&  e Zd Zejdedddgedddedddgeddded	d
ej	ej	gedddfedddgedddeddddg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dddgieddejddddgieddejdd	d
ej	ej	gieddfejddddgieddejdddddg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ejjddd dd dd gddd gd!d"d# Zejjdd$d d%d gd&d gd!d'd( Zejjdd)d d*d d+d gddd gd!d,d- Zd.d/ Zd0S )1TestAdditionSubtractionzfirst, second, expectedrJ   rK   rL   ABCry   r  ZABD      @      @ABCDr   rS   c                 C  s$   t || | t || | d S r"   )r,   r-   rO   r   r   r    r   r   r   test_add_series:  s    z'TestAdditionSubtraction.test_add_seriesr)   c                 C  s$   t || | t || | d S r"   )r,   r   r  r   r   r   test_add_framesN  s    z'TestAdditionSubtraction.test_add_framesc           	   	   C  s   t tdd}d| }|dd }t|| td|i}d| }td|dd i}t|| t }d|_	|
 }d	d
dg}tjt|d ||  W 5 Q R X tjt|d ||  W 5 Q R X d S )NrS   r6   foo_c                 S  s   d|  S Nr  r   rx   r   r   r   rz   g  r{   zDTestAdditionSubtraction.test_series_frame_radd_bug.<locals>.<lambda>r	  c                 S  s   d|  S r  r   rx   r   r   r   rz   l  r{   rX   r   r   zConcatenation operationre   )r	   r,   Zrands_arraymapr-   r_   r   r   r  r\   r   r   rj   rk   rl   )	rO   rW   r	  rP   r    framerX   Zfix_nowrn   r   r   r   test_series_frame_radd_bugc  s(    z2TestAdditionSubtraction.test_series_frame_radd_bugc              	   C  s  t tjd}||j  }||j }t|| t tj	dddtj	dddd}||j  }||j }t|| d}t
jt|d ||j  }W 5 Q R X tjtjddtj	dddd}td|d	< |d	 |j  |d
< |d	 |j |d< tj|d |d
 dd d S )NrS   r   r   r  zcannot subtract periodre   rK   Z20130102dater    rP   Fr   )r	   r   r]   r^   r)   Z	to_seriesr,   r-   r_   r   rj   rk   rl   Z	to_periodr   r`   )rO   r   r    rP   rn   r   r   r   r   test_datetime64_with_index  s,    

 z2TestAdditionSubtraction.test_datetime64_with_indexc              	   C  s  |}t j|ddddgd}tjd}t|t|jd}|| }|| }| D ]P\}}	|	 D ]>\}
}|| |
 d }t|s||kst	qbt|sbt	qbqR| D ]T\}}	|	 D ]B\}
}|| |
 ||  }t|s||kst	qt|st	qq|| }|d }t
|| t d	d	d d
gi}t
|| t d	dtjdgi dD ]`}t j|dt jdg|dt jdg|dg}|D ]*}|| |st	t
|| | qqXd S )Nr   CBr  )r   r   r  rK   ra   rb   ZaaZbb)r   r   r;   )r   r<   r   r)   r<   )r_   r   r   r]   r	   r   r   itemsisnanr   r,   r   r   r*   )rO   Zfloat_framer!  Zframe2garbageZ	colSeriesZidSumZ	seriesSumcolr.   r   valZorigValaddedr    r   r<   framesr   r   r   test_frame_operators  s>    

"
z,TestAdditionSubtraction.test_frame_operatorsfuncc                 C  s   | d S r   r   rx   r   r   r   rz     r{   z TestAdditionSubtraction.<lambda>c                 C  s   | d d d S r   r   rx   r   r   r   rz     r{   c                 C  s   dS rR   r   rx   r   r   r   rz     r{   multiplysliceZconstantr|   c                 C  s*   |}t  d}||}t||| d S NrX   r,   r  renamer4   )rO   Zall_arithmetic_functionsr0  r0   r.   r/   r   r   r    test_series_operators_arithmetic  s    z8TestAdditionSubtraction.test_series_operators_arithmeticc                 C  s   | d S r   r   rx   r   r   r   rz     r{   c                 C  s   dS rR   r   rx   r   r   r   rz     r{   addc                 C  s*   |}t  d}||}t||| d S r3  r4  )rO   Zcomparison_opr0  r0   r.   r/   r   r   r   test_series_operators_compare  s    z5TestAdditionSubtraction.test_series_operators_comparec                 C  s   | d S r   r   rx   r   r   r   rz     r{   c                 C  s   | d d d S r   r   rx   r   r   r   rz     r{   c                 C  s   dS rR   r   rx   r   r   r   rz     r{   c           
   	   C  s   t  d}||}t||}t|tjrbt|t|krbg }|D ]}|| |t	j
 qDn|}t	|}t	jdd t|jt	|}W 5 Q R X t||D ]@\}}	t t	||	 |j|jkstt |j|jd  qd S )NrX   r   r   )r,   r  r5  r   r(   r   Iterabler   appendr   r   Zasarrayr   r   r   Zassert_almost_equalr\   r   r   r)   r+   )
rO   r0  r.   r/   resultsZother_npr   	expectedsrP   r    r   r   r   test_divmod  s     


z#TestAdditionSubtraction.test_divmodc                 C  s|   t  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 )NrX   r   r  rJ   )r,   r  r5  r   r	   r   r   r   r)   r   r-   )rO   Ztserr/   rP   exp1exp2r   r   r   test_series_divmod_zero  s    
z/TestAdditionSubtraction.test_series_divmod_zeroN)rp   rq   rr   rj   r   r   r	   r   r   r   r  r_   r   r  r"  r$  r/  r6  r8  r=  r@  r   r   r   r   r  6  s`   
 
,
  

r  c                   @  sp   e Zd Zejdeeee	e
gdd Zejdeeee
gdd Zejdeeee
gdd Zdd	 Zd
S )TestUFuncCompatholderc                 C  st   |t krt nt}|tkr(tdddd}n|tjddddd}t|}|ttjddddd}t|| d S )Nr   rS   foor[   r   r;   )r	   r   r   r   r   sinr,   ri   )rO   rB  rm   r   rP   r    r   r   r   test_ufunc_compat  s    
z!TestUFuncCompat.test_ufunc_compatc              
   C  s  |dddddgdd}|t kr"t nt}t|}|jdkrDt||sHttttdddddgdd}t	
||}t	|| t|d	}|jdkrt||sttd
ddd	dgdd}t	
||}t	|| |d	 }|jdkrt||sttdddddgdd}t	
||}t	|| |d	 }|jdkrBt||sFttdddd	dgdd}t	
||}t	|| |d }|jdkrt||sttdd	dddgdd}t	
||}t	|| |d	 }|jdkrt||sttd
ddd	dgdd}t	
||}t	|| d S )NrJ   rK   rL   r   rS   ry   r[   rH   r   g      ?r   g      ?g      @r  r  g      @g      @g      @g      rM   )r	   r   r   sqrtr<   r(   r   r   r   r,   rU   ri   divide)rO   rB  r   rm   rP   expr   r   r   test_ufunc_coercions   s@    
"z$TestUFuncCompat.test_ufunc_coercionsc                 C  s   |dddgdd}|t krt nt}t|}t|ts:ttdddgdd}tddd	gdd}t	|d
 t
|| t	|d t
|| d S )NrJ   rK   rL   ry   r[   rM   r   r   r  r   )r	   r   r   modfr(   tupler   r   r,   ri   rU   )rO   rB  rY   rm   rP   r>  r?  r   r   r   !test_ufunc_multiple_return_valuesJ  s    
z1TestUFuncCompat.test_ufunc_multiple_return_valuesc                 C  sX   t dddgdddgdd}tj|ddgd t dddgdddgdd}t|| d S )	Nr   rJ   rK   rL   ry   r  r6      )r	   r   r7  atr,   r-   )rO   r  r    r   r   r   test_ufunc_atV  s    zTestUFuncCompat.test_ufunc_atN)rp   rq   rr   rj   r   r   r   r   r   r   r	   rE  rI  rL  rO  r   r   r   r   rA    s   

)
rA  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  sv   |}t dddg|d}t tjtjtjg|d}t||}t||}tj| }t|| |tj }t|| d S )NrJ   rK   rL   r;   )r	   r   r   r,   rU   ri   rO   r<   rV   rm   r   r    rP   r   r   r   test_numarr_with_dtype_add_nan`  s    

z9TestObjectDtypeEquivalence.test_numarr_with_dtype_add_nanc                 C  sl   |}t dddg|d}t dddg|d}t||}t||}d| }t|| |d }t|| d S )NrJ   rK   rL   r;   r   )r	   r,   rU   ri   rQ  r   r   r   test_numarr_with_dtype_add_into  s    z9TestObjectDtypeEquivalence.test_numarr_with_dtype_add_intr0   c                 C  sL   t tjdtdtd}|d|}|d|t}t	|t| d S )Nr6   r'  r   )
r	   r   r]   r^   r   objectr   r   r,   r-   )rO   r0   r   rP   r    r   r   r   test_operators_reverse_object  s    
z8TestObjectDtypeEquivalence.test_operators_reverse_object)rp   rq   rr   rj   r   r   rT  rR  rS  r$   r7  subr  r   r   rU  r   r   r   r   rP  ]  s   

rP  c                
   @  s   e Zd Zdd Zdd Z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jejgejddddgdd ZdS )TestNumericArithmeticUnsortedc                 C  s   |D ]}t |dD ]H\}}|d}|d}|||}|t|t|}tj||dd q|D ]6}	|D ],}
||	|
}|t|	|
}tj||dd qhq`qd S )NrK   rC  barequivexact)r   Z_renamer   r,   r   )rO   r   scalarsidxsr0   ra   rb   rP   r    r   Zscalarr   r   r   check_binop  s    



z)TestNumericArithmeticUnsorted.check_binopc                 C  s`   t jt jt jt jt jg}dddg}tdddtdddtdddtdd	dg}| ||| d S )
Nr   rJ   rK   r   r6   r9   rS   )r$   r7  rV  r  r   r   r   r^  rO   r   r\  r]  r   r   r   test_binops  s    




z)TestNumericArithmeticUnsorted.test_binopsc                 C  s8   t g}ddg}tdddtdddg}| ||| d S )NrJ   rK   r   r6   r9   )r%   r   r^  ra  r   r   r   test_binops_pow  s    z-TestNumericArithmeticUnsorted.test_binops_powr0   c                 C  s~   t d}ttjd}|t||}|||}t|| ttjdd}|t||g|}|||}t	|| d S )NrS   rK   )
r   r	   r   r]   r^   r,   r-   r_   r   r   )rO   r0   r)   r/   r    rP   r   r   r   $test_arithmetic_with_frame_or_series  s    

zBTestNumericArithmeticUnsorted.test_arithmetic_with_frame_or_seriesc                 C  s<  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 t ddddt dddft ddddt dddft ddddtt dddjd ft ddddtt dddjd ft ddt dft ddddt dddft ddddt d	ddft ddddt dfg}|D ] \}}}tj|| |dd qd S )Nr   r6   rK   r9   r   TrZ  rM  r   rS   rJ   rN   i  i  ii7!   C   d   r   2   rL   r`  r_  ir   ii8)r   r,   r   r   r   r   r   Z_values)rO   r   rP   r    Zcases_exactr   r   r   r   test_numeric_compat2  sV    

z2TestNumericArithmeticUnsorted.test_numeric_compat2r<   deltarJ   r   r   c                 C  s   ||}t dddg|d}|| }t |j| |d}t|| || }t |j| |d}t|| t|| d|  t|| d|  || jrtd S )Nr6      rM  r;   rK   r   )r   r   r,   r   emptyr   )rO   r<   rl  r)   rP   r    r   r   r   test_addsub_arithmetic  s    z4TestNumericArithmeticUnsorted.test_addsub_arithmeticN)rp   rq   rr   r^  rb  rc  rj   r   r   r$   r7  rV  r  r   r   r%   r   rd  rk  r   r   rN   ro  r   r   r   r   rW    s&   	
?rW  c                  C  s~   t dddgdd dgd} t jddddgiddd	gd
}| j|dd}t tjdddgdtjdtjgd}t|| d S )Nr   rJ   rK   g?)r  r&  r  g333333?g?rL   r  Z
fill_valuer   rM   )r_   r   Z	rfloordivr   r   r   r,   r   )r   r/   rP   r    r   r   r   test_fill_value_inf_masking&  s    rq  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 5 Q R X d S )Nr6   rJ   rK   rL   r   )r  r&  r%  r   Z
abcdefghijr  r   Z
abcdefghjkZABCXr   rp  )r_   r   r   r   r   r   r]   r^   r,   Zassert_produces_warningr   )Zpdf1Zpdf2r   r   r   test_dataframe_div_silenced4  s     

  rr  zdata, expected_datarJ   rK   r   c           
      C  s|   t |dd}| |}||| }||| }t|| fkr>t}nt|| fkrPt}nt }||dd}	t||	 t||	 d S )NZInt64r;   )r   r	   r   r,   ri   )
r   Zbox_1d_arrayr   Zexpected_datar   	containerr1   r2   r>   r    r   r   r    test_integer_array_add_list_likeG  s    rt  c                  C  s   t jdtjdit jjddgdddggddgd	d
} |  }|j	dd|_| | }t jdgd dg| jd}t
|| d S )Nra      rb   r   rJ   rK   ZlevAZlevB)namesr  rM   )r   r)   )r_   r   r   r]   r^   Z
MultiIndexZfrom_productr   r)   Z	swaplevelr,   r   )r   Zdf2rP   r    r   r   r   "test_sub_multiindex_swapped_levelsa  s     rw  powerrS   string_sizec                 C  sX   t td|  }tj|t jd}d| }||k}tt j|jtd}t	
|| d S )Nr6   r;    )r   r   rT   r_   r   r   rg   r  rh   r,   r   )rx  ry  ra   r2   r1   rP   r    r   r   r   test_empty_str_comparisonp  s    r{  )=
__future__r   collectionsr   decimalr   	itertoolsr   r$   typingr   numpyr   rj   Zpandasr_   r   r   r	   r
   r   r   Zpandas._testingZ_testingr,   Zpandas.corer   Zpandas.core.apir   r   r   Zpandas.core.computationr   r   Zpandas.tests.arithmetic.commonr   r   ZfixtureZto_arrayr   r!   r4   r5   __annotations__r8   extendrI   rs   r   r   r  rA  rP  rW  rq  rr  r   r   rt  rw  r{  r   r   r   r   <module>   sf     
7 *   c [M/ 
