a
    j=ic                     @  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.g d/g d0fgd1d2 Z8d3d4 Z9ej67d5g d6ej67d7g d8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   u/home/droni/.local/share/virtualenvs/DPS-5Je3_V2c/lib/python3.9/site-packages/pandas/tests/arithmetic/test_numeric.pybox_pandas_1d_array%   s    r   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_zero-   s    r   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 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    
r2   z	list[Any]ser_or_index
   (   leftsc                 C  s&   g | ]}t D ]}|g d |dqqS ))r4         dtype)r3   ).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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   rI   rJ   )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   )rO   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 )NrS   r   namez
2000-01-01rI   )	r   r   randomrandnpd	Timestampr\   r*   r+   )rO   abr   r   r   test_compare_invalidm   s    z+TestNumericComparisons.test_compare_invalidc                 C  s   |}|t u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 d    n1 s0    Y  d S )Ni FZ	transposera   r9   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_pathu   s    z;TestNumericComparisons.test_numeric_cmp_string_numexpr_pathN)__name__
__module____qualname__rQ   rZ   rc   ro   r   r   r   r   rG   X   s   rG   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_clsr/   c                 C  s   t | jt| j S r    typerp   strr:   xr   r   r   <lambda>       z7TestNumericArraylikeArithmeticWithDatetimeLike.<lambda>Zidsc                 C  sl   t jg ddd}||}tg d}t|ts8|tu r@t|}|| }t|| || }t|| d S )NrH   m8[s]r9   )Z10sZ40sZ90s)r   r   r
   r&   r   r*   ri   )rO   r/   rt   r0   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g ddd}||}tg d}t|ts8|tu r@t|}|| }t|| || }t|| d}tjt	|d ||  W d    n1 s0    Y  tjt	|d ||  W d    n1 s0    Y  d S )N)r4   r5   Z   r}   r9   )Z1sZ2sZ3szCannot dividere   )
r   r   r
   r&   r   r*   ri   rj   rk   rl   )rO   r/   rt   r0   r   rP   rn   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    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=      r{   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  s   |}|dd }t ddg}t||}t||}|| }t|| d}tjt|d ||  W d    n1 sx0    Y  d S )NrI   rK   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DrK   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 ndarray)r*   rU   joinr   )rO   r   r-   rV   rm   r/   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   r6   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      sh   


	



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 Nr9   rA   r   r   naninfrN   r   r*   assert_index_equalr   r   r   r+   rO   r   r   idxr   Z	expected2rP   
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   rN   r*   r   r   r   r   r+   )rO   r   r   r   r   rP   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 )Nr9   r   rI   )	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_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   r9   )
r&   r   r   r   r   r   rN   r   r*   r   )rO   r   r   r.   r   r   rP   r   r   r   test_div_negative_zerog  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rK      rS      firstr[   r   r   r   rK   secondignorer   rN   )r:   r\   r   rK   r   float32)r   r   r   errstatevaluesrN   r   ilocr:   exprZUSE_NUMEXPRr*   r+   r(   )	rO   Zswitch_numexpr_min_elementsr   any_real_numpy_dtypedtype2r   r   r   rP   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   rN   r   r   r*   r+   r   )rO   r   r   r   r/   r0   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   rI   )r   r   r   r   r*   r+   r   )rO   r/   r0   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   rL   )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  sB   t g ddd}t tj tjtjgdd}|d }t|| d S Nr   r   rI   r   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 g ddd}t dtjdgdd}d| }t|| d S )Nr   r   r[   rL   r   )r   r   r   r*   r+   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   )rO   r   rP   r   r   r   r   test_floordiv_div  s    z$TestDivisionByZero.test_floordiv_divc                 C  sb   t g dg dd}|| }tg d}ttjtjtjdg}t ||d}t|| d S )Nr   r   r   r   r   r   r   r   rI   )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 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   rI   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    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   rK   rI   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rFJ d S Nr4   rS   r   r_   r   r   r]   r^   Zfillnar(   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 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   rN   r   Fr   r   r9   )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 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   rN   r9   r   r   r   )r'   r   r:   rK   rI   )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 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   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rFJ 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)!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   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 )Nr4   rS   rJ   )r   r   r*   rU   ri   )rO   rV   rm   r   r   rP   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   r[   g{Gzg{Gzr   FZcheck_names)r   r   r   divr*   r+   )rO   r   r   r   rP   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   rN   rJ   )r   r*   r   r   r   )rO   r   r   rP   r   r   r   r   test_div_intu  s    
z'TestMultiplicationDivision.test_div_intr.   c                 C  s*   |}t ||}||d}t || d S NrI   )r*   rU   ri   )rO   r.   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   r9   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   r9   )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   r9   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 NrJ   r*   r   )rO   r   r   rP   r   r   r   test_mul_index  s    z)TestMultiplicationDivision.test_mul_indexc                 C  sL   |}d}t jt|d" |tjddd  W d    n1 s>0    Y  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  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 togetherre   r   rK   rI   rJ   )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   r.   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  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 )NrJ   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 d    n1 sZ0    Y  t|t|f}t||D ]\}}	t	
||	 q~d S Nr9   rJ   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 d    n1 s^0    Y  t|t|f}t||D ]\}}	t	
||	 qd 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   rK   c                 S  s   t j| tdg ddS )NZABCDE)Z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  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   rN   r9   r   rK   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  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   rI   rL   )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   S  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, expectedrH   ABCry   r  )rJ   rJ   rJ   ZABD      @      @ABCD)rJ   rJ   rJ   rJ   rK   r   rS   c                 C  s$   t || | t || | d S r    )r*   r+   rO   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 d    n1 s0    Y  tjt|d ||  W d    n1 s0    Y  d S )NrS   r4   foo_c                 S  s   d|  S Nr%  r   rx   r   r   r   rz   f  r{   zDTestAdditionSubtraction.test_series_frame_radd_bug.<locals>.<lambda>r  c                 S  s   d|  S r&  r   rx   r   r   r   rz   k  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_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 d    n1 s0    Y  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   rJ   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}t|t |jd}|| }|| }| D ]P\}}| D ]>\}	}
|| |	 d }t |
s||
|ksJ qLt |sLJ qLq<| D ]T\}}| D ]B\}	}
|| |	 ||  }t |
s|
|ksJ qt |sJ qqd S )Nr   r#  rJ   )r   r]   r   r   r   itemsisnan)rO   float_framer(  garbageZ	colSeriesZidSumZ	seriesSumcolr,   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   rJ   )r_   r   r*   r   )rO   r.  Zframe2addedr   r   r   r   test_frame_operators_col_align  s    z6TestAdditionSubtraction.test_frame_operators_col_alignc              	   C  s8   t dg di}t|| t ddtjdgi d S )Nra   )ra   Nrb   ZaaZbb)r_   r   r*   r   r   r   )rO   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 )Nr9   r  )r   r:   r   r'   r:   )r_   r   r(   r*   r   )rO   r:   framesr   r   r   r   test_frame_operators_empty_like  s    
z7TestAdditionSubtraction.test_frame_operators_empty_like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sliceconstantr|   c                 C  s*   |}t  d}||}t||| d S NrX   r*   r  renamer2   )rO   Zall_arithmetic_functionsr;  r.   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{   addr>  c                 C  s*   |}t  d}||}t||| d S r?  r@  )rO   Zcomparison_opr;  r.   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 d    n1 s0    Y  t||D ]@\}}	t t	||	 |j|jksJ t |j|jd  qd S )NrX   r   r   )r*   r  rA  r   r&   r   Iterabler   appendr   r   Zasarrayr   r   r  Zassert_almost_equalr\   r   r'   r)   )
rO   r;  r,   r-   resultsZother_npr   	expectedsrP   r   r   r   r   test_divmod  s     


0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  rI   )r*   r  rA  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+  r2  r6  r7  r:  rB  rD  rI  rL  r   r   r   r   r  5  sd   
 




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 u rt nt}|tu 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   r9   )r   r   r   r   r   sinr*   ri   )rO   rN  rm   r   rP   r   r   r   r   test_ufunc_compat  s    
z!TestUFuncCompat.test_ufunc_compatc                 C  s  |g ddd}|t u rt nt}t|}|jdkr>t||sBJ tttg ddd}t	||}t
|| t|d}|jdkrt||sJ tg ddd}t	||}t
|| |d }|jdkrt||sJ tg ddd}t	||}t
|| |d }|jdkr*t||s.J tg ddd}t	||}t
|| |d	 }|jdkrvt||szJ tg d
dd}t	||}t
|| |d }|jdkrt||sJ tg ddd}t	||}t
|| d S )N)rI   rJ   rK   r   rS   ry   r[   rF   r   )g      ?r   g      ?r   g      @)r  r        @g      @g      @)g      rL   r   r   r  r   )r   r   r  r  rR  )r   r   r   sqrtr:   r&   r   r   r*   rU   ri   divide)rO   rN  r   rm   rP   expr   r   r   test_ufunc_coercions"  s@    
z$TestUFuncCompat.test_ufunc_coercionsc                 C  s   |g ddd}|t u rt nt}t|}t|ts8J tg ddd}tg ddd}t|d t	|| t|d t	|| d S )NrH   ry   r[   )rL   rL   rL   )r   r   r  r   rI   )
r   r   r   modfr&   tupler   r*   ri   rU   )rO   rN  rY   rm   rP   rJ  rK  r   r   r   !test_ufunc_multiple_return_valuesL  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 )	NrM   rH   ry   r  r   rJ   r4   )r4   rI      )r   r   rC  atr*   r+   )rO   r  r   r   r   r   test_ufunc_atX  s    zTestUFuncCompat.test_ufunc_atN)rp   rq   rr   rj   r   r   r   r   r   r   r   rQ  rV  rY  r\  r   r   r   r   rM    s   

)
rM  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 )NrH   r9   )r   r   r   r*   rU   ri   rO   r:   rV   rm   r   r   rP   r   r   r   test_numarr_with_dtype_add_nanb  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 )NrH   r9   )rJ   rK   r   rI   )r   r*   rU   ri   r^  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 )Nr4   r8  r   )
r   r   r]   r^   r   objectr   r   r*   r+   )rO   r.   r   rP   r   r   r   r   test_operators_reverse_object  s    
z8TestObjectDtypeEquivalence.test_operators_reverse_object)rp   rq   rr   rj   r   r   ra  r_  r`  r"   rC  subr  r   r   rb  r   r   r   r   r]  _  s   

r]  c                   @  s  e Zd Zejdejejej	ej
ejgejdedddedddeddded	d
dgejdedddedddeddded	d
dgdd Zejdejejej	ej
ejgejdedddedddeddded	d
dgejdg ddd Zejdedddedddgejdedddedddgdd Zejdedddedddgejdddgdd Zejdejejej	ej
ejejejgdd Zdd Zejdeddddedddfedd d!d!ed"d#dfeddddeedddjd fedd$dd%eedd$djd% fedd&edfedd'dd(edddfed
dd)d'ed*ddfed+d,d(dedfgd-d. Zejd/ejejgejd0g d1d2d3 Zd4S )5TestNumericArithmeticUnsortedr.   idx1r   r4   rI   r7   rJ   irS   r   idx2c                 C  sD   | d}| d}|||}|t|t|}tj||dd d S NrO  barequivexact)_renamer   r*   r   )rO   r.   re  rg  rP   r   r   r   r   test_binops_index  s
    


z/TestNumericArithmeticUnsorted.test_binops_indexr   scalar)r   rI   rJ   c                 C  s,   |||}|t ||}tj||dd d S Nrj  rk  )r   r*   r   )rO   r.   r   ro  rP   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 rh  )rm  r#   r   r*   r   )rO   re  rg  rP   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 rp  )r#   r   r*   r   )rO   r   ro  rP   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 )NrS   rJ   )
r   r   r   r]   r^   r*   r+   r_   r   r   )rO   r.   r'   r-   r   rP   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   r4   rJ   r7   r   Trk  rZ  r   rS   rI   rN     )r   r*   r   r   r   r   r   _values)rO   r   rP   r   r   r   r   test_numeric_compat2  s4    z2TestNumericArithmeticUnsorted.test_numeric_compat2zidx, div, expectedrv  i  ii7!   C   d   r   2   r   rK   iru  ii8c                 C  s   t j|| |dd d S )NTrk  r   )rO   r   r   r   r   r   r   test_numeric_compat2_floordiv&  s    z;TestNumericArithmeticUnsorted.test_numeric_compat2_floordivr:   delta)rI   r   r   c                 C  s   ||}t g d|d}|| }t |j| |d}t|| || }t |j| |d}t|| t|| d|  t|| d|  || jrJ d S )N)r4      rZ  r9   rJ   r   )r   r   r*   r   empty)rO   r:   r  r'   rP   r   r   r   r   test_addsub_arithmetic?  s    z4TestNumericArithmeticUnsorted.test_addsub_arithmeticN)rp   rq   rr   rj   r   r   r"   rC  rc  r  r   r   r   rn  rq  rr  rs  r#   r  rt  rx  r   rw  r~  r   r   rN   r  r   r   r   r   rd    s   




	



	




	  	 
)


rd  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 )NrM   )皙?Nr  )r  r4  r  )r  g333333?g?)r   rJ   rK   r#  rI   Z
fill_valuer   rL   )r_   r   Z	rfloordivr   r   r   r*   r   )r   r-   rP   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 d    n1 s0    Y  d S )Nr4   rI   rJ   rK   r   )r  r4  r3  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_datarM   )r   rJ   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Int64r9   )r   r   r   r*   ri   )
r   Zbox_1d_arrayr   Zexpected_datar   	containerr/   r0   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g dgddgdd} |  }|j	d	d
|_| | }t jdgd dg| jd}t
|| d S )Nra      rb   rM   ZlevAZlevB)namesr#  r   rI   rL   )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_levels  s    r  power)rI   rJ   rS   string_size)r   rI   rJ   rS   c                 C  sX   t td|  }tj|t jd}d| }||k}tt j|jtd}t	
|| d S )Nr4   r9    )r   r   rT   r_   r   r   rg   r  rh   r*   r   )r  r  ra   r0   r/   rP   r   r   r   r   test_empty_str_comparison  s    r  );
__future__r   collectionsr   decimalr   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   r2   r3   __annotations__r6   extendrG   rs   r   r   r  rM  r]  rd  r  r  r   r   r  r  r  r   r   r   r   <module>   sb    
7 *   c ^M/ F
