U
    sVc                     @  s  U 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Z.G d d! d!Z/G d"d# d#Z0G d$d% d%Z1G d&d' d'Z2G d(d) d)Z3d*d+ Z4d,d- Z5ej67d.d d/d0gd d0d1gfgd2d3 Z8d4d5 Z9ej67d6d/d0d7gej67d8d d/d0d7gd9d: Z:dS );    )annotations)abc)DecimalN)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   H/tmp/pip-unpacked-wheel-xj8nt62q/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    
r3   z	list[Any]ser_or_index
   (   leftsc                 C  s(   g | ] }t D ]}|d ddg|dqqS )r5         dtype)r4   ).0r;   clsr   r   r   
<listcomp>M   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_zerorankY   s    "z?TestNumericComparisons.test_operator_series_comparison_zerorankc                 C  s.   |}t td}t||}t||| d S N   )r   r   ranger+   box_expectedr   )rN   box_with_arrayfixed_now_tstsobjr   r   r   test_df_numeric_cmp_dt64_raisese   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 )NrR   r   namez
2000-01-01rI   )	r   r   randomrandnpd	Timestampr[   r+   r,   )rN   abr   r   r   test_compare_invalidm   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	transposer`   r:   z0Invalid comparison between dtype=float64 and strmatch)r   r   Zndarrayr   r\   r]   r+   rT   zerosboolassert_equalpytestraises	TypeError)rN   rU   boxZxboxrX   rO   r   msgr   r   r   $test_numeric_cmp_string_numexpr_pathu   s    z;TestNumericComparisons.test_numeric_cmp_string_numexpr_pathN)__name__
__module____qualname__rP   rY   rb   rn   r   r   r   r   rH   X   s   rH   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_clsr0   c                 C  s   t | jt| j S r!   typero   strr;   xr   r   r   <lambda>       z7TestNumericArraylikeArithmeticWithDatetimeLike.<lambda>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 )	NrI   rJ   rK   m8[s]r:   Z10sZ40sZ90s)r   r   r
   r'   r   r+   rh   )rN   r0   rs   r1   r   rO   r   r   r   test_mul_td64arr   s    z?TestNumericArraylikeArithmeticWithDatetimeLike.test_mul_td64arrc                 C  s   t | jt| j S r!   rt   rw   r   r   r   ry      rz   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 )Nr5   r6   Z   r}   r:   Z1sZ2sZ3szCannot dividerd   )
r   r   r
   r'   r   r+   rh   ri   rj   rk   )rN   r0   rs   r1   r   rO   rm   r   r   r   test_div_td64arr   s    z?TestNumericArraylikeArithmeticWithDatetimeLike.test_div_td64arr	scalar_tdrI   daysztimedelta64[s]ztimedelta64[ms]c                 C  s
   t | jS r!   ru   ro   rw   r   r   r   ry      rz   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
   rS   lenr+   rT   rh   )	rN   r   numeric_idxrU   rl   r(   r   rO   Zcommuter   r   r   test_numeric_arr_mul_tdscalar   s    zLTestNumericArraylikeArithmeticWithDatetimeLike.test_numeric_arr_mul_tdscalarc                 C  s
   t | jS r!   r   rw   r   r   r   ry      rz   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copyrc   ztimedelta64[D]ztimedelta64[ns])r   arangeastypeint64r+   rT   viewrh   )
rN   r;   r   rU   rl   Zarr_i8arrrX   r   rO   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 )NrI   rK   z3 Daysz36 Hours$cannot use operands with types dtyperd   )r
   r+   rT   rh   ri   rj   rk   )	rN   Z
three_daysr   rU   rl   r(   r   rO   rm   r   r   r   test_numeric_arr_rdiv_tdscalar   s    zMTestNumericArraylikeArithmeticWithDatetimeLike.test_numeric_arr_rdiv_tdscalarr.      )hourszm8[h]NaTDrK   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+   rT   joinr   )rN   r   r.   rU   rl   r0   rm   r   r   r   &test_add_sub_datetimedeltalike_invalid  s    zUTestNumericArraylikeArithmeticWithDatetimeLike.test_add_sub_datetimedeltalike_invalidN)!ro   rp   rq   ri   markparametrizer   r   r   r   r7   r~   r   r	   Zto_timedelta64Zto_pytimedeltar   r   r   rM   r   r   Ztimedelta64r^   offsetsZMinuteZSecondr_   to_pydatetimeZto_datetime64Z
datetime64r   r   r   r   r   r   rr      sp       
	



rr   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:   rB   r   r   naninfrM   r    r+   assert_index_equalr   r   r   r,   rN   r   r   idxr   Z	expected2rO   
ser_compatr   r   r   test_div_zero9  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_zeroF  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   rM   r+   r   r   r   r   r,   )rN   r   r   r   r   rO   r   r   r   r   test_mod_zeroS  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   rI   )	r   r   r   r   rM   r    divmodr+   r   )rN   r   r   r   ZexleftZexrightrO   r   r   r   test_divmod_zero\  s    ""

z#TestDivisionByZero.test_divmod_zeror/   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 )NrK   r:   )
r'   r   r   r   r   r   rM   r    r+   r   )rN   r   r   r/   r   r   rO   r   r   r   test_div_negative_zerog  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 )NrK      rR      firstrZ   r   secondignorer   rM   )r;   r[   r   Zfloat32)r   r   r   errstatevaluesrM   r   ilocr;   exprZUSE_NUMEXPRr+   r,   r)   r   )	rN   Zswitch_numexpr_min_elementsr   any_real_numpy_dtypedtype2r   r   r   rO   r   r   r   test_ser_div_serv  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 )NrI   r   rJ   )
r   r   listr   rM   r   r   r+   r,   r   )rN   r   r   r   r0   r1   r   rO   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   rI   )r   r   r   r   r+   r,   r   )rN   r0   r1   r   rO   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   rR   rL   )r   r   r\   r]   r   r+   r,   )rN   Z
zero_arraydatar   rO   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   rI   r   rZ   r   r   r   r   r+   r,   rN   serr   rO   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   rI   r   rZ   rL   )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   )rN   r   rO   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 )	NrK   r   rR   r   r   r   r   r   rI   )r^   	DataFramer   r   r   r+   assert_frame_equal)rN   dfrO   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 )NrK   r   rR   r   r   r   r   rI   r   r   floatr(   columns)r^   r   r   r   r   r   r   r   r(   r   r+   r   )rN   r   r   r   r   r   rO   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 )NrK   r   rR   r   r   r   r   rI   r   r   rM   )r^   r   r   r   r(   r   r   r   r+   r   r   r   r   rN   r   rO   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 Nr5   rR   r   r^   r   r   r\   r]   Zfillnar)   r   rN   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 )NrK   r   rR   r   r   r   rM   Fr   r   r:   )r^   r   r   r   r   r   r+   r   )rN   Zusing_array_managerr   r   r   r   rO   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 )NrK   r   rR   r   r   r   rM   r:   r   r   )r(   r   r;   rI   )r^   r   r   r   r   r   r   r(   r   r   r+   r   )rN   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 )NrK   r   rR   r   r   r   r   r   r   rM   )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_commuteI  s
    z;TestDivisionByZero.test_df_mod_zero_series_does_not_commuteN)!ro   rp   rq   r   r   r   r   ri   r   r   r#   truedivfloordivr   r   r   rM   uint64r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   8  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 )Nr5   rR   rJ   )r   r   r+   rT   rh   )rN   rU   rl   r   r   rO   r   r   r   test_divide_decimalW  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 )
NrI   r   r   rZ   g{Gzg{Gzr   FZcheck_names)r   r   r   divr+   r,   )rN   r   r   r   rO   r   r   r   test_div_equiv_binopg  s    
z/TestMultiplicationDivision.test_div_equiv_binopc                 C  sH   |}|d }| d}t|| |d }t|jd }t|| d S )NrI   rM   rJ   )r   r+   r   r   r   )rN   r   r   rO   r   r   r   r   test_div_intu  s    
z'TestMultiplicationDivision.test_div_intr/   c                 C  s*   |}t ||}||d}t || d S NrI   )r+   rT   rh   )rN   r/   r   rU   r   rO   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 )NrR   r   r:   r   )r   r   r+   r   r'   r   r   )rN   r   r   didxrO   	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   rR   r:   )r'   r   r   r   r   r+   r,   )rN   r   r   r   r   rO   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 )NrR   rM   r:   g?)r   r   r   r+   r,   )rN   r   r   Zrng5rO   r   r   r   r   test_mul_float_series  s
    z0TestMultiplicationDivision.test_mul_float_seriesc                 C  s    |}|| }t ||d  d S NrJ   r+   r   )rN   r   r   rO   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 typerd   20130101rR   Zperiods)ri   rj   rk   r^   
date_rangerN   r   r   rm   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 togetherrd   r   rK   rI   rJ   )ri   rj   
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+   rT   rh   )rN   r/   r   rU   rl   r   r   rO   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+   rT   rh   )rN   r   rU   rl   r   r   rO   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 )NrJ   r   r   )r   r   r   r   r   zipr+   r   )	rN   r   r   rO   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:   rJ   r   r   )r   onesr   shaper;   r   r   r   r   r+   r   
rN   r   r   r.   rO   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 )NrR   rK   c                 S  s   t j| tddddgdS )NZABCDEZjimZjoeZjolier   )r^   r   r   rw   r   r   r   ry     s     z?TestMultiplicationDivision.test_ops_np_scalar.<locals>.<lambda>)r   r\   r]   r+   r   r   )rN   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 )NrW   AFr   )r+   makeTimeSeriesr[   r^   r   r,   )rN   rW   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   rK   r   rR   r   r   r   r   r   rM   r:   r(   r[   )r   r   r^   r   r   r   r   r   r+   r,   r(   r   r)   r   )rN   prO   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   rI   rL   )r   r   r   r   r+   r,   )rN   srO   r   r   r   r   test_modulo_zero_int'  s    z/TestMultiplicationDivision.test_modulo_zero_intN)#ro   rp   rq   r   r   r   ri   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   S  s,   



r   c                   @  sL  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dd Zdd Zejdd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/d0 Zejjd!d1d# d2d# d3d# gd&d'd(gd)d4d5 Zd6d7 Zd8S )9TestAdditionSubtractionzfirst, second, expectedrI   rJ   rK   ABCrx   r  ZABD      @      @ABCDr   rR   c                 C  s$   t || | t || | d S r!   )r+   r,   rN   r   r   r   r   r   r   test_add_series9  s    z'TestAdditionSubtraction.test_add_seriesr(   c                 C  s$   t || | t || | d S r!   )r+   r   r  r   r   r   test_add_framesM  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 )NrR   r5   foo_c                 S  s   d|  S Nr  r   rw   r   r   r   ry   f  rz   zDTestAdditionSubtraction.test_series_frame_radd_bug.<locals>.<lambda>r
  c                 S  s   d|  S r   r   rw   r   r   r   ry   k  rz   rW   r   r   zConcatenation operationrd   )r   r+   Zrands_arraymapr,   r^   r   r   r  r[   r   r   ri   rj   rk   )	rN   rV   r
  rO   r   framerW   Zfix_nowrm   r   r   r   test_series_frame_radd_bugb  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 )NrR   r   r   r  zcannot subtract periodrd   rJ   Z20130102dater   rO   Fr   )r   r   r\   r]   r(   Z	to_seriesr+   r,   r^   r   ri   rj   rk   Z	to_periodr   r_   )rN   r   r   rO   rm   r   r   r   r   test_datetime64_with_index  s,    

 z2TestAdditionSubtraction.test_datetime64_with_indexc                 C  s   |}t jd}t|t |jd}|| }|| }| D ]P\}}| D ]>\}	}
|| |	 d }t |
s||
|kstqLt |sLtqLq<| D ]T\}}| D ]B\}	}
|| |	 ||  }t |
s|
|kstqt |stqqd S )Nr   r  rJ   )r   r\   r   r   r   itemsisnanr   )rN   float_framer"  garbageZ	colSeriesZidSumZ	seriesSumcolr-   r   valZorigValr   r   r   test_frame_operators  s"    

z,TestAdditionSubtraction.test_frame_operatorsc                 C  s6   t j|ddddgd}|| }|d }t|| d S )Nr   CBr  )r   rJ   )r^   r   r+   r   )rN   r(  Zframe2addedr   r   r   r   test_frame_operators_col_align  s    z6TestAdditionSubtraction.test_frame_operators_col_alignc              	   C  s:   t ddd dgi}t|| t ddtjdgi d S )Nr`   ra   ZaaZbb)r^   r   r+   r   r   r   )rN   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 ]&}|| |sDtt|| | q.d S )Nr:   r  )r   r;   r   r(   r;   )r^   r   r)   r   r+   r   )rN   r;   framesr   r   r   r   test_frame_operators_empty_like  s    
z7TestAdditionSubtraction.test_frame_operators_empty_likefuncc                 C  s   | d S r   r   rw   r   r   r   ry     rz   z TestAdditionSubtraction.<lambda>c                 C  s   | d d d S r   r   rw   r   r   r   ry     rz   c                 C  s   dS rQ   r   rw   r   r   r   ry     rz   multiplysliceZconstantr{   c                 C  s*   |}t  d}||}t||| d S NrW   r+   r  renamer3   )rN   Zall_arithmetic_functionsr5  r/   r-   r.   r   r   r    test_series_operators_arithmetic  s    z8TestAdditionSubtraction.test_series_operators_arithmeticc                 C  s   | d S r   r   rw   r   r   r   ry     rz   c                 C  s   dS rQ   r   rw   r   r   r   ry     rz   addc                 C  s*   |}t  d}||}t||| d S r8  r9  )rN   Zcomparison_opr5  r/   r-   r.   r   r   r   test_series_operators_compare  s    z5TestAdditionSubtraction.test_series_operators_comparec                 C  s   | d S r   r   rw   r   r   r   ry     rz   c                 C  s   | d d d S r   r   rw   r   r   r   ry     rz   c                 C  s   dS rQ   r   rw   r   r   r   ry     rz   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 )NrW   r   r   )r+   r  r:  r   r'   r   Iterabler   appendr   r   Zasarrayr   r   r   Zassert_almost_equalr[   r   r   r(   r*   )
rN   r5  r-   r.   resultsZother_npr   	expectedsrO   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 )NrW   r   r  rI   )r+   r  r:  r   r   r   r   r   r(   r   r,   )rN   Ztserr.   rO   exp1exp2r   r   r   test_series_divmod_zero   s    
z/TestAdditionSubtraction.test_series_divmod_zeroN)ro   rp   rq   ri   r   r   r   r   r   r   r  r^   r   r  r#  r%  r,  r0  r1  r4  r;  r=  rB  rE  r   r   r   r   r  5  sh   
 


  

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   rR   foorZ   r   r:   )r   r   r   r   r   sinr+   rh   )rN   rG  rl   r   rO   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 )NrI   rJ   rK   r   rR   rx   rZ   rG   r   g      ?r   g      ?g      @r  r  g      @g      @g      @g      rL   )r   r   r   sqrtr;   r'   r   r   r   r+   rT   rh   divide)rN   rG  r   rl   rO   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 )NrI   rJ   rK   rx   rZ   rL   r   r   r  r   )r   r   r   modfr'   tupler   r   r+   rh   rT   )rN   rG  rX   rl   rO   rC  rD  r   r   r   !test_ufunc_multiple_return_valuesL  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   rI   rJ   rK   rx   r  r5      )r   r   r<  atr+   r,   )rN   r  r   r   r   r   test_ufunc_atX  s    zTestUFuncCompat.test_ufunc_atN)ro   rp   rq   ri   r   r   r   r   r   r   r   rJ  rN  rQ  rT  r   r   r   r   rF    s   

)
rF  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 )NrI   rJ   rK   r:   )r   r   r   r+   rT   rh   rN   r;   rU   rl   r   r   rO   r   r   r   test_numarr_with_dtype_add_nanb  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 )NrI   rJ   rK   r:   r   )r   r+   rT   rh   rV  r   r   r   test_numarr_with_dtype_add_intq  s    z9TestObjectDtypeEquivalence.test_numarr_with_dtype_add_intr/   c                 C  sL   t tjdtdtd}|d|}|d|t}t	|t| d S )Nr5   r2  r   )
r   r   r\   r]   r   objectr   r   r+   r,   )rN   r/   r   rO   r   r   r   r   test_operators_reverse_object  s    
z8TestObjectDtypeEquivalence.test_operators_reverse_object)ro   rp   rq   ri   r   r   rY  rW  rX  r#   r<  subr  r   r   rZ  r   r   r   r   rU  _  s   

rU  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dddg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d/dddgd0d1 Zd2S )3TestNumericArithmeticUnsortedr/   idx1r   r5   rI   r8   rJ   irR   r   idx2c                 C  sD   | d}| d}|||}|t|t|}tj||dd d S NrH  barequivexact)_renamer   r+   r   )rN   r/   r]  r_  rO   r   r   r   r   test_binops_index  s
    


z/TestNumericArithmeticUnsorted.test_binops_indexr   scalarc                 C  s,   |||}|t ||}tj||dd d S Nrb  rc  )r   r+   r   )rN   r/   r   rg  rO   r   r   r   r   test_binops_index_scalar  s    
z6TestNumericArithmeticUnsorted.test_binops_index_scalarc                 C  sD   | d}| d}t||}tt|t|}tj||dd d S r`  )re  r$   r   r+   r   )rN   r]  r_  rO   r   r   r   r   test_binops_index_pow  s
    


z3TestNumericArithmeticUnsorted.test_binops_index_powc                 C  s,   t ||}t t||}tj||dd d S rh  )r$   r   r+   r   )rN   r   rg  rO   r   r   r   r   test_binops_index_scalar_pow  s    
z:TestNumericArithmeticUnsorted.test_binops_index_scalar_powc                 C  s~   t d}ttjd}|t||}|||}t|| ttjdd}|t||g|}|||}t	|| d S )NrR   rJ   )
r   r   r   r\   r]   r+   r,   r^   r   r   )rN   r/   r(   r.   r   rO   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   r5   rJ   r8   r   Trc  rR  r   rR   rI   rM     )r   r+   r   r   r   r   r   _values)rN   r   rO   r   r   r   r   test_numeric_compat2  s4    z2TestNumericArithmeticUnsorted.test_numeric_compat2zidx, div, expectedrn  i  ii7!   C   d   r   2   r   rK   irm  ii8c                 C  s   t j|| |dd d S )NTrc  r   )rN   r   r   r   r   r   r   test_numeric_compat2_floordiv&  s    z;TestNumericArithmeticUnsorted.test_numeric_compat2_floordivr;   deltac                 C  s   ||}t dddg|d}|| }t |j| |d}t|| || }t |j| |d}t|| t|| d|  t|| d|  || jrtd S )Nr5      rR  r:   rJ   r   )r   r   r+   r   emptyr   )rN   r;   rw  r(   rO   r   r   r   r   test_addsub_arithmetic?  s    z4TestNumericArithmeticUnsorted.test_addsub_arithmeticN)ro   rp   rq   ri   r   r   r#   r<  r[  r  r   r   r   rf  ri  rj  rk  r$   r   rl  rp  r   ro  rv  r   r   rM   rz  r   r   r   r   r\    s   




	



	




	  	 
)


r\  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   rI   rJ   g?)r  r.  r  g333333?g?rK   r  Z
fill_valuer   rL   )r^   r   Z	rfloordivr   r   r   r+   r   )r   r.   rO   r   r   r   r   test_fill_value_inf_maskingS  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 5 Q R X d S )Nr5   rI   rJ   rK   r   )r  r.  r-  r   Z
abcdefghijr  r   Z
abcdefghjkZABCXr   r{  )r^   r   r   r   r   r   r\   r]   r+   Zassert_produces_warningr   )Zpdf1Zpdf2r   r   r   test_dataframe_div_silenceda  s     

  r}  zdata, expected_datarI   rJ   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+   rh   )
r   Zbox_1d_arrayr   Zexpected_datar   	containerr0   r1   r=   r   r   r   r    test_integer_array_add_list_liket  s    r  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 )Nr`      ra   r   rI   rJ   ZlevAZlevB)namesr  rL   )r   r(   )r^   r   r   r\   r]   Z
MultiIndexZfrom_productr   r(   Z	swaplevelr+   r   )r   Zdf2rO   r   r   r   r   "test_sub_multiindex_swapped_levels  s     r  powerrR   string_sizec                 C  sX   t td|  }tj|t jd}d| }||k}tt j|jtd}t	
|| d S )Nr5   r:    )r   r   rS   r^   r   r   rf   r  rg   r+   r   )r  r  r`   r1   r0   rO   r   r   r   r   test_empty_str_comparison  s    r  );
__future__r   collectionsr   decimalr   r#   typingr   Znumpyr   ri   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    r3   r4   __annotations__r7   extendrH   rr   r   r   r  rF  rU  r\  r|  r}  r   r   r  r  r  r   r   r   r   <module>   sd     
7 *   c ^M/ F
