U
    -eZ                     @  s  U d dl mZ d dlmZ d dlmZ d dlmZ d dlZd dl	Z
d dlZd dlZd dlmZmZmZmZmZmZ d dlmZ d dl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#dddddddddddgZ$edddgZ%de&d< e%'d d! e$D  e%'d"d! e$D  G d#d$ d$Z(G d%d& d&Z)G d'd( d(Z*G d)d* d*Z+G d+d, d,Z,G d-d. d.Z-G d/d0 d0Z.G d1d2 d2Z/d3d4 Z0d5d6 Z1ej23d7d d8d9gd d9d:gfgd;d< Z4d=d> Z5ej23d?d8d9d@gej23dAd d8d9d@gdBdC Z6dDdE Z7dS )F    )annotations)abc)	timedelta)DecimalN)Index
RangeIndexSeries	TimedeltaTimedeltaIndexarray)ops)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   e/var/www/html/Darija-Ai-Train/env/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_op7   s    
r0   i1i2i4i8u1u2Zu4u8f2Zf4f8
   (   zlist[Index | Series]leftsc                 C  s   g | ]}t d ddg|dqS )r:         dtype)r   .0r@   r   r   r   
<listcomp>G   s     rC   c                 C  s&   g | ]}|d krt dddg|dqS )r8   r:   r=   r>   r?   )r   rA   r   r   r   rC   H   s      c                   @  s,   e Zd Zdd Zdd Zdd Zdd Zd	S )
TestNumericComparisonsc                 C  s   t dt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_zerorankO   s    "z?TestNumericComparisons.test_operator_series_comparison_zerorankc                 C  s.   |}t td}t||}t||| d S N   )r   r   ranger(   box_expectedr   )rJ   box_with_arrayfixed_now_tstsobjr   r   r   test_df_numeric_cmp_dt64_raises[   s    z6TestNumericComparisons.test_df_numeric_cmp_dt64_raisesc                 C  sL   t tjddd}t tjd}td|_t|| d||   d S )NrN   r   namez
2000-01-01rE   )	r   r   randomrandnpd	TimestamprW   r(   r)   )rJ   abr   r   r   test_compare_invalidc   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   rX   rY   r(   rP   zerosboolassert_equalpytestraises	TypeError)rJ   rQ   boxZxboxrT   rK   r   msgr   r   r   $test_numeric_cmp_string_numexpr_pathk   s    z;TestNumericComparisons.test_numeric_cmp_string_numexpr_pathN)__name__
__module____qualname__rL   rU   r^   rj   r   r   r   r   rD   N   s   rD   c                   @  s  e Zd Zejdejee	gejjde
dd ddd Zejdejee	gejjde
dd dd	d
 Zejjdeddedd edd edd dedd dgdd ddd Zejjdeddedd edd gdd dejdejejgdd Zdd Zejjdeddedd edd edd dededdejdejd ejd!d"d#ed!ed! ejd!d$d# ed! edd%ejge dd&d' Z!d(S )).TestNumericArraylikeArithmeticWithDatetimeLikebox_clsr-   c                 C  s   t | jt| j S r   typerk   strr@   xr   r   r   <lambda>       z7TestNumericArraylikeArithmeticWithDatetimeLike.<lambda>Zidsc                 C  s   t jdddgdd}||}tdddg|jd}t|tsB|tkrJt|}|j|jksZt|| }t|| || }t|| d S )	NrE   rF   rG   m8[s]r?   Z10sZ40sZ90s)	r   r   r
   r@   r$   r   r   r(   rd   )rJ   r-   ro   r.   r   rK   r   r   r   test_mul_td64arr   s    z?TestNumericArraylikeArithmeticWithDatetimeLike.test_mul_td64arrc                 C  s   t | jt| j S r   rp   rs   r   r   r   ru      rv   c              	   C  s   t jdddgdd}||}tdddg|jd}t|tsB|tkrJt|}|j|jksZt|| }t|| || }t|| d	}t	j
t|d
 ||  W 5 Q R X d}t	j
t|d
 ||  W 5 Q R X d S )Nr:   r;   Z   rx   r?   Z1sZ2sZ3sz5ufunc '(true_)?divide' cannot use operands with typesr`   z3ufunc 'floor_divide' cannot use operands with types)r   r   r
   r@   r$   r   r   r(   rd   re   rf   rg   )rJ   r-   ro   r.   r   rK   ri   r   r   r   test_div_td64arr   s     z?TestNumericArraylikeArithmeticWithDatetimeLike.test_div_td64arr	scalar_tdrE   daysztimedelta64[s]ztimedelta64[ms]c                 C  s
   t | jS r   rq   rk   rs   r   r   r   ru      rv   c           
      C  s   |}|}t dd tt|D }t|tjr@|j}||}nt|t	krV|d}t
||}t
||}|| }t
|| || }	t
|	| d S )Nc                 S  s   g | ]}t |d qS )r}   )r	   )rB   nr   r   r   rC      s     z`TestNumericArraylikeArithmeticWithDatetimeLike.test_numeric_arr_mul_tdscalar.<locals>.<listcomp>m8[us])r
   rO   lenr$   r   timedelta64r@   astyperq   r   r(   rP   rd   )
rJ   r|   numeric_idxrQ   rh   r%   r   r@   rK   Zcommuter   r   r   test_numeric_arr_mul_tdscalar   s    
zLTestNumericArraylikeArithmeticWithDatetimeLike.test_numeric_arr_mul_tdscalarc                 C  s
   t | jS r   r   rs   r   r   r   ru      rv   r@   c           
      C  s   |}t djt jdd}|j|dd}tj||dd}|dd}t|tkr^|d}tj||dd}|| }	t	|	| || }	t	|	| d S )Ni N  Fcopyr_   ztimedelta64[D]ztimedelta64[ns]ztimedelta64[us])
r   aranger   int64r(   rP   viewrq   r   rd   )
rJ   r@   r|   rQ   rh   Zarr_i8arrrT   r   rK   r   r   r   *test_numeric_arr_mul_tdscalar_numexpr_path   s    
zYTestNumericArraylikeArithmeticWithDatetimeLike.test_numeric_arr_mul_tdscalar_numexpr_pathc           
   	   C  s   |}|dd }t ddg}t|tjrR|j}|tdk rFtd}||}nt|tkrh|d}t	||}t	||}|| }t
|| d}	tjt|	d ||  W 5 Q R X d S )	NrE   rG   z3 Daysz36 Hoursrx   r   $cannot use operands with types dtyper`   )r
   r$   r   r   r@   r   rq   r   r(   rP   rd   re   rf   rg   )
rJ   Z
three_daysr   rQ   rh   r%   r   r@   rK   ri   r   r   r   test_numeric_arr_rdiv_tdscalar   s"    

zMTestNumericArraylikeArithmeticWithDatetimeLike.test_numeric_arr_rdiv_tdscalarr+      )hourszm8[h]NaTDrG   r   z
2021-01-01z
Asia/Tokyo)tzUTCnsc                 C  s>   |}t ||}d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 ndarrayz.Cannot add or subtract Timedelta from integers)r(   rP   joinr   )rJ   r   r+   rQ   rh   r-   ri   r   r   r   &test_add_sub_datetimedeltalike_invalid  s     zUTestNumericArraylikeArithmeticWithDatetimeLike.test_add_sub_datetimedeltalike_invalidN)"rk   rl   rm   re   markparametrizer   r   r   r   r<   ry   r{   r	   Zto_timedelta64Zto_pytimedeltar   r   r   rI   r   r   r   rZ   offsetsZMinuteZSecondr[   to_pydatetimeZto_datetime64Z
datetime64r   reprr   r   r   r   r   rn      sr       
	



rn   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?   r4   r   r   naninfrI   r   r(   assert_index_equalr   r   r   r)   rJ   r   r   idxr   Z	expected2rK   
ser_compatr   r   r   test_div_zeroG  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_zeroT  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   rI   r(   r   r   r   r   r)   )rJ   r   r   r   r   rK   r   r   r   r   test_mod_zeroa  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   rE   )	r   r   r   r   rI   r   divmodr(   r   )rJ   r   r   r   ZexleftZexrightrK   r   r   r   test_divmod_zeroj  s    ""

z#TestDivisionByZero.test_divmod_zeror,   c                 C  sd   |j tjkrd S |d }ttj tj tj tjtjgtjd}t||}|||}t	|| d S )NrG   r?   )
r@   r   uint64r   r   r   rI   r   r(   r   )rJ   r   r   r,   r   r   rK   r   r   r   test_div_negative_zerou  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 )NrG      rN      firstrV   r   secondignorer   rI   r@   rW   r   Zfloat32)r   r   r   errstatevaluesrI   r   ilocr@   exprZUSE_NUMEXPRr(   r)   r&   r   )	rJ   Zswitch_numexpr_min_elementsr   any_real_numpy_dtypedtype2r   r   r   rK   r   r   r   test_ser_div_ser  s     
z#TestDivisionByZero.test_ser_div_serc                 C  s   |}t ddg|}t ddg|}|| || f}t|}|d tj|d< tj|d d< t||}t|d |d  t|d |d  t|j	|}t|d |d  t|d |d  d S )NrE   r   rF   )
r   r   listr   rI   r   r   r(   r)   r   )rJ   r   r   r   r-   r.   r   rK   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   rE   )r   r   r   r   r(   r)   r   )rJ   r-   r.   r   rK   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   rN   rH   )r   r   rX   rY   r   r(   r)   )rJ   Z
zero_arraydatar   rK   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   rE   r   rV   r   r   r   r   r(   r)   rJ   serr   rK   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   rE   r   rV   rH   )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   )rJ   r   rK   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 )	NrG   r   rN   r   r   r   r   r   rE   )rZ   	DataFramer   r   r   r(   assert_frame_equal)rJ   dfrK   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 )NrG   r   rN   r   r   r   r   rE   r   r   floatr%   columns)rZ   r   r   r   r   r   r   r   r%   r   r(   r   )rJ   r   r   r   r   r   rK   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 )NrG   r   rN   r   r   r   r   rE   r   r   rI   )rZ   r   r   r   r%   r   r   r   r(   r   r   r   r   rJ   r   rK   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 Nr:   rN   r   rZ   r   r   rX   rY   Zfillnar&   r   rJ   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 )NrG   r   rN   r   r   r   rI   Fr   r   r?   )rZ   r   r   r   r   r   r(   r   )rJ   Zusing_array_managerr   r   r   r   rK   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 )NrG   r   rN   r   r   r   rI   r?   r   r   )r%   r   r@   rE   )rZ   r   r   r   r   r   r   r%   r   r   r(   r   )rJ   r   r   r   r   r   r   r   r   r   test_df_mod_zero_array8  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 )NrG   r   rN   r   r   r   r   r   r   rI   )rZ   r   r   r   r%   r   r(   r   r   r   r   r   r   r   r   test_df_mod_zero_intI  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_commuteW  s
    z;TestDivisionByZero.test_df_mod_zero_series_does_not_commuteN)!rk   rl   rm   r   r   r   r   re   r   r   r    truedivfloordivr   r   r   rI   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   F  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 )Nr:   rN   rF   )r   r   r(   rP   rd   )rJ   rQ   rh   r   r   rK   r   r   r   test_divide_decimale  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 )
NrE   r   r   rV   g{Gzg{Gzr   FZcheck_names)r   r   r   divr(   r)   )rJ   r   r   r   rK   r   r   r   test_div_equiv_binopu  s    
z/TestMultiplicationDivision.test_div_equiv_binopc                 C  sH   |}|d }| d}t|| |d }t|jd }t|| d S )NrE   rI   rF   )r   r(   r   r   r   )rJ   r   r   rK   r   r   r   r   test_div_int  s    
z'TestMultiplicationDivision.test_div_intr,   c                 C  s*   |}t ||}||d}t || d S NrE   )r(   rP   rd   )rJ   r,   r   rQ   r   rK   r   r   r   test_mul_int_identity  s    
z0TestMultiplicationDivision.test_mul_int_identityc                 C  sd   |}|| }|t jddd }t||d  |jt jkr>dnd}|t jd|d }t|| d S )NrN   r   r?   r   )r   r   r(   r   r@   r   r   )rJ   r   r   didxrK   	arr_dtyper   r   r   test_mul_int_array  s    z-TestMultiplicationDivision.test_mul_int_arrayc                 C  sJ   |}|| }|j tjkrdnd}|ttjd|d }t|t| d S )Nr   r   rN   r?   )r@   r   r   r   r   r(   r)   )rJ   r   r   r   r   rK   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 )NrN   rI   r?   g?)r   r   r   r(   r)   )rJ   r   r   Zrng5rK   r   r   r   r   test_mul_float_series  s
    z0TestMultiplicationDivision.test_mul_float_seriesc                 C  s    |}|| }t ||d  d S NrF   r(   r   )rJ   r   r   rK   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 typer`   20130101rN   Zperiods)re   rf   rg   rZ   
date_rangerJ   r   r   ri   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 togetherr`   r   rG   rE   rF   )re   rf   
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(   rP   rd   )rJ   r,   r   rQ   rh   r   r   rK   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   )rJ   r   rQ   rh   r   r   rK   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 )NrF   r   r   )r   r   r   r   r   zipr(   r   )	rJ   r   r   rK   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?   rF   r   r   )r   onesr   shaper@   r   r   r   r   r(   r   
rJ   r   r   r+   rK   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 )NrN   rG   c                 S  s   t j| tddddgdS )NZABCDEZjimZjoeZjolier   )rZ   r   r   rs   r   r   r   ru     s     z?TestMultiplicationDivision.test_ops_np_scalar.<locals>.<lambda>)r   rX   rY   r(   r   r   )rJ   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 )NrS   AFr   )r(   makeTimeSeriesrW   rZ   r   r)   )rJ   rS   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   rG   r   rN   r   r   r   r   r   rI   r?   r%   rW   )r   r   rZ   r   r   r   r   r   r(   r)   r%   r   r&   r   )rJ   prK   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   rE   rH   )r   r   r   r   r(   r)   )rJ   srK   r   r   r   r   test_modulo_zero_int4  s    z/TestMultiplicationDivision.test_modulo_zero_intN)#rk   rl   rm   r   r   r   re   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   a  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, expectedrE   rF   rG   ABCrt   r  ZABD      @      @ABCDr   rN   c                 C  s$   t || | t || | d S r   )r(   r)   rJ   r   r   r   r   r   r   test_add_seriesF  s    z'TestAdditionSubtraction.test_add_seriesr%   c                 C  s$   t || | t || | d S r   )r(   r   r  r   r   r   test_add_framesZ  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 )NrN   r:   foo_c                 S  s   d|  S Nr  r   rs   r   r   r   ru   s  rv   zDTestAdditionSubtraction.test_series_frame_radd_bug.<locals>.<lambda>r
  c                 S  s   d|  S r   r   rs   r   r   r   ru   x  rv   rS   r   r   zConcatenation operationr`   )r   r(   Zrands_arraymapr)   rZ   r   r   r  rW   r   r   re   rf   rg   )	rJ   rR   r
  rK   r   framerS   Zfix_nowri   r   r   r   test_series_frame_radd_bugo  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 )NrN   r   r   r  z.cannot subtract PeriodArray from DatetimeArrayr`   rF   Z20130102dater   rK   Fr   )r   r   rX   rY   r%   Z	to_seriesr(   r)   rZ   r   re   rf   rg   Z	to_periodr   r[   )rJ   r   r   rK   ri   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  rF   )r   rX   r   r   r   itemsisnanr   )rJ   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   rF   )rZ   r   r(   r   )rJ   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\   r]   ZaaZbb)rZ   r   r(   r   r   r   )rJ   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@   )rZ   r   r&   r   r(   r   )rJ   r@   framesr   r   r   r   test_frame_operators_empty_like  s    
z7TestAdditionSubtraction.test_frame_operators_empty_likefuncc                 C  s   | d S r   r   rs   r   r   r   ru     rv   z TestAdditionSubtraction.<lambda>c                 C  s   | d d d S r   r   rs   r   r   r   ru     rv   c                 C  s   dS rM   r   rs   r   r   r   ru     rv   multiplysliceZconstantrw   c                 C  s*   |}t  d}||}t||| d S NrS   r(   r  renamer0   )rJ   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   rs   r   r   r   ru     rv   c                 C  s   dS rM   r   rs   r   r   r   ru     rv   addc                 C  s*   |}t  d}||}t||| d S r8  r9  )rJ   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   rs   r   r   r   ru     rv   c                 C  s   | d d d S r   r   rs   r   r   r   ru     rv   c                 C  s   dS rM   r   rs   r   r   r   ru     rv   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 )NrS   r   r   )r(   r  r:  r   r$   r   Iterabler   appendr   r   Zasarrayr   r   r   Zassert_almost_equalrW   r   r   r%   r'   )
rJ   r5  r*   r+   resultsZother_npr   	expectedsrK   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 )NrS   r   r  rE   )r(   r  r:  r   r   r   r   r   r%   r   r)   )rJ   Ztserr+   rK   exp1exp2r   r   r   test_series_divmod_zero  s    
z/TestAdditionSubtraction.test_series_divmod_zeroN)rk   rl   rm   re   r   r   r   r   r   r   r  rZ   r   r  r#  r%  r,  r0  r1  r4  r;  r=  rB  rE  r   r   r   r   r  B  sh   
 


  

r  c                   @  s   e Zd Zejdeeegejde	j
e	je	jgdd Zejdeegejde	j
e	je	jgdd Zejdeegejde	j
e	je	jgdd Zd	d
 ZdS )TestUFuncCompatholderr@   c                 C  s   |t krt nt}|tkrD|tjkr4td| d tdddd}n|tjd|ddd}t|}|ttjd|ddd}t	
|| d S )Nzdtype z not relevant for RangeIndexr   rN   foorV   r?   )r   r   r   r   r   re   skipr   sinr(   rd   )rJ   rG  r@   rh   r   rK   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rFt||sJttttjdddddgtjd	dd
}t	
||}t	|| t|d}|jdkrt||sttdddddgtjdd}t	
||}t	|| |d }|jdkrt||sttdddddgtjdd}t	
||}t	|| |d }|jdkrTt||sXttdddddgtjdd}t	
||}t	|| |d }|jdkrt||sttdddddgtjdd}t	
||}t	|| |d }|jdkr t||sttdddddgtjdd}t	
||}t	|| d S )NrE   rF   rG   r   rN   rt   r   r9   r?   rV   r   g      ?r   g      ?g      @r  r  g      @g      @g      @g      rH   )r   r   r   sqrtr@   r$   r   r   rI   r(   rP   rd   divide)rJ   rG  r@   r   rh   rK   expr   r   r   test_ufunc_coercions1  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tjdd}tddd	gtjdd}t	|d
 t
|| t	|d t
|| d S )NrE   rF   rG   rt   r   rH   r   r   r  r   )r   r   r   modfr$   tupler   rI   r(   rd   rP   )rJ   rG  r@   rT   rh   rK   rC  rD  r   r   r   !test_ufunc_multiple_return_values]  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   rE   rF   rG   rt   r  r:      )r   r   r<  atr(   r)   )rJ   r  r   r   r   r   test_ufunc_atj  s    zTestUFuncCompat.test_ufunc_atN)rk   rl   rm   re   r   r   r   r   r   r   r   r   rI   rK  rO  rR  rU  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 )NrE   rF   rG   r?   )r   r   r   r(   rP   rd   rJ   r@   rQ   rh   r   r   rK   r   r   r   test_numarr_with_dtype_add_nant  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 )NrE   rF   rG   r?   r   )r   r(   rP   rd   rW  r   r   r   test_numarr_with_dtype_add_int  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 )Nr:   r2  r   )
r   r   rX   rY   r   objectr   r   r(   r)   )rJ   r,   r   rK   r   r   r   r   test_operators_reverse_object  s    
z8TestObjectDtypeEquivalence.test_operators_reverse_object)rk   rl   rm   re   r   r   rZ  rX  rY  r    r<  subr  r   r   r[  r   r   r   r   rV  q  s   

rV  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   r:   rE   r=   rF   irN   r   idx2c                 C  sL   | d}| d}|||}|t| t| }tj||dd d S NrH  barequivexact)_renamer   to_numpyr(   r   )rJ   r,   r^  r`  rK   r   r   r   r   test_binops_index  s
    


z/TestNumericArithmeticUnsorted.test_binops_indexr   scalarc                 C  s0   |||}|t | |}tj||dd d S Nrc  rd  )r   rg  r(   r   )rJ   r,   r   ri  rK   r   r   r   r   test_binops_index_scalar  s    
z6TestNumericArithmeticUnsorted.test_binops_index_scalarc                 C  sL   | d}| d}t||}tt| t| }tj||dd d S ra  )rf  r!   r   rg  r(   r   )rJ   r^  r`  rK   r   r   r   r   test_binops_index_pow  s
    


z3TestNumericArithmeticUnsorted.test_binops_index_powc                 C  s0   t ||}t t| |}tj||dd d S rj  )r!   r   rg  r(   r   )rJ   r   ri  rK   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 )NrN   rF   )
r   r   r   rX   rY   r(   r)   rZ   r   r   )rJ   r,   r%   r+   r   rK   r   r   r   $test_arithmetic_with_frame_or_series  s    

zBTestNumericArithmeticUnsorted.test_arithmetic_with_frame_or_seriesc                 C  sJ  t ddd}|d }t ddd}tj||dd |d }t ddd}tj||dd |d }t d	d
d}tj||dd |d }t dddd}tj||dd |d }t dddd }tj||dd |d }|}tj||dd || }t|j|j }tj||dd t ddd}|d }t|jd }tjt|j|dd d S )Nr   r:   rF   r=   r   Trd  rS  r   rN   rE   rI     )r   r(   r   r   r   r   _values)rJ   r   rK   r   r   r   r   test_numeric_compat2  s4    z2TestNumericArithmeticUnsorted.test_numeric_compat2zidx, div, expectedrp  i  ii7!   C   d   r   2   r   rG   iro  ii8c                 C  s   t j|| |dd d S )NTrd  r   )rJ   r   r   r   r   r   r   test_numeric_compat2_floordiv8  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 )Nr:      rS  r?   rF   r   )r   r   r(   r   emptyr   )rJ   r@   ry  r%   rK   r   r   r   r   test_addsub_arithmeticR  s    z4TestNumericArithmeticUnsorted.test_addsub_arithmeticN)rk   rl   rm   re   r   r   r    r<  r\  r  r   r   r   rh  rk  rl  rm  r!   r   rn  rr  r   rq  rx  r   r   rI   r|  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   rE   rF   g?)r  r.  r  g333333?g?rG   r  Z
fill_valuer   rH   )rZ   r   Z	rfloordivr   r   r   r(   r   )r   r+   rK   r   r   r   r   test_fill_value_inf_maskingf  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 )Nr:   rE   rF   rG   r   )r  r.  r-  r   Z
abcdefghijr  r   Z
abcdefghjkZABCXr   r}  )rZ   r   r   r   r   r   rX   rY   r(   Zassert_produces_warningr   )Zpdf1Zpdf2r   r   r   test_dataframe_div_silencedt  s     

  r  zdata, expected_datarE   rF   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(   rd   )
r   Zbox_1d_arrayr   Zexpected_datar   	containerr-   r.   clsr   r   r   r    test_integer_array_add_list_like  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\      r]   r   rE   rF   ZlevAZlevB)namesr  rH   )r   r%   )rZ   r   r   rX   rY   Z
MultiIndexZfrom_productr   r%   Z	swaplevelr(   r   )r   Zdf2rK   r   r   r   r   "test_sub_multiindex_swapped_levels  s     r  powerrN   string_sizec                 C  sX   t td|  }tj|t jd}d| }||k}tt j|jtd}t	
|| d S )Nr:   r?    )r   r   rO   rZ   r   r   rb   r  rc   r(   r   )r  r  r\   r.   r-   rK   r   r   r   r   test_empty_str_comparison  s    r  c                  C  sp   t dddg} t dddgdd}| | }t dddgdd}t|| | | }t ddd	gdd}t|| d S )
NrE   rF   rG   ZUInt64r?   r  ZFloat64r   r   )r   r(   r)   )Zseries1Zseries2rK   r   r   r   r   test_series_add_sub_with_UInt64  s    r  )8
__future__r   collectionsr   datetimer   decimalr   r    numpyr   re   ZpandasrZ   r   r   r   r	   r
   r   Zpandas._testingZ_testingr(   Zpandas.corer   Zpandas.core.computationr   r   Zpandas.tests.arithmetic.commonr   r   ZfixtureZto_arrayr   r   r0   Z_ldtypesr<   __annotations__extendrD   rn   r   r   r  rF  rV  r]  r~  r  r   r   r  r  r  r  r   r   r   r   <module>   s^     
7 B   b ^R/ G
