o
    i                     @  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   _/var/www/edux/Edux_v2/venv/lib/python3.10/site-packages/pandas/tests/arithmetic/test_numeric.pybox_pandas_1d_array%   s   r   c                 C  s8   t t |  rt 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
    )np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 rt|n|}|||}|||}t|tr<|j	
| j	s<|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rightcython_or_numpypythonr   r   r   
compare_op<   s   
r4   z	list[Any]ser_or_index
   (   leftsc                 C  s&   g | ]}t D ]
}|g d |dqqS ))r6         dtype)r5   ).0r<   clsr   r   r   
<listcomp>M   s    r?   )i1i2i4i8u1u2u4u8f2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   rM   rN   )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   )rS   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 )NrW   r   namez
2000-01-01rM   )	r   r   randomrandnpd	Timestampr`   r+   r,   )rS   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    d S 1 sZw   Y  d S )Ni F	transposere   r;   z0Invalid comparison between dtype=float64 and strmatch)r   r   ndarrayr   ra   rb   r+   rY   zerosboolassert_equalpytestraises	TypeError)rS   rZ   boxxboxr]   rT   r   msgr   r   r   $test_numeric_cmp_string_numexpr_pathu   s   
"z;TestNumericComparisons.test_numeric_cmp_string_numexpr_pathN)__name__
__module____qualname__rU   r^   rg   rv   r   r   r   r   rK   X   s
    rK   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     t | jt| j S r!   typerw   strr<   xr   r   r   <lambda>       z7TestNumericArraylikeArithmeticWithDatetimeLike.<lambda>idsc                 C  sl   t jg ddd}||}tg d}t|ts|tu r t|}|| }t|| || }t|| d S )NrL   m8[s]r;   )10s40s90s)r   r   r
   r'   r   r+   ro   )rS   r0   r{   r1   r   rT   r   r   r   test_mul_td64arr   s   z?TestNumericArraylikeArithmeticWithDatetimeLike.test_mul_td64arrc                 C  r|   r!   r}   r   r   r   r   r      r   c                 C  s   t jg ddd}||}tg d}t|ts|tu r t|}|| }t|| || }t|| d}tjt	|d ||  W d    n1 sLw   Y  tjt	|d ||  W d    d S 1 shw   Y  d S )N)r6   r7   Z   r   r;   )1s2s3szCannot dividerj   )
r   r   r
   r'   r   r+   ro   rp   rq   rr   )rS   r0   r{   r1   r   rT   ru   r   r   r   test_div_td64arr   s    

"z?TestNumericArraylikeArithmeticWithDatetimeLike.test_div_td64arr	scalar_tdrM   daysztimedelta64[s]ztimedelta64[ms]c                 C  
   t | jS r!   r~   rw   r   r   r   r   r         
 c           	      C  sf   |}|}t dd tt|D }t||}t||}|| }t|| || }t|| d S )Nc                 S  s   g | ]}t |d qS )r   )r	   )r=   nr   r   r   r?      s    z`TestNumericArraylikeArithmeticWithDatetimeLike.test_numeric_arr_mul_tdscalar.<locals>.<listcomp>)r
   rX   lenr+   rY   ro   )	rS   r   numeric_idxrZ   rs   r(   r   rT   commuter   r   r   test_numeric_arr_mul_tdscalar   s   zLTestNumericArraylikeArithmeticWithDatetimeLike.test_numeric_arr_mul_tdscalarc                 C  r   r!   r   r   r   r   r   r      r   r<   c           
      C  s   |}t djt jdd}|j|dd}tj||dd}|dd}tj||dd}|| }	t|	| || }	t|	| d S )Ni N  Fcopyrh   ztimedelta64[D]ztimedelta64[ns])r   arangeastypeint64r+   rY   viewro   )
rS   r<   r   rZ   rs   arr_i8arrr]   r   rT   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    d S 1 s=w   Y  d S )NrM   rO   z3 Daysz36 Hours$cannot use operands with types dtyperj   )r
   r+   rY   ro   rp   rq   rr   )	rS   
three_daysr   rZ   rs   r(   r   rT   ru   r   r   r   test_numeric_arr_rdiv_tdscalar   s   
"zMTestNumericArraylikeArithmeticWithDatetimeLike.test_numeric_arr_rdiv_tdscalarr.      )hourszm8[h]NaTDrO   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+   rY   joinr   )rS   r   r.   rZ   rs   r0   ru   r   r   r   &test_add_sub_datetimedeltalike_invalid  s   zUTestNumericArraylikeArithmeticWithDatetimeLike.test_add_sub_datetimedeltalike_invalidN)!rw   rx   ry   rp   markparametrizer   r   r   r   r8   r   r   r	   to_timedelta64to_pytimedeltar   r   r   rR   r   r   timedelta64rc   offsetsMinuteSecondrd   to_pydatetimeto_datetime64
datetime64r   r   r   r   r   r   rz      sj    


	



rz   c                   @  s   e Zd Zdd Zdd Zdd Zdd Zej	d	e
je
jgd
d Zej	dejejejgdd Zej	dejejejgdd Zdd Zdd Zdd Zdd Zdd Zdd Zdd Zdd  Zd!d" Zd#d$ Zd%d& Zd'd( Zd)d* Z d+S ),TestDivisionByZeroc                 C  sv   |}t tjtjtjtjtjgtjd}t||}|| }t|| t|	dt
|	d }t|t| d S Nr;   rC   r   r   naninfrR   r    r+   assert_index_equalr   r   r   r,   rS   r   r   idxr   	expected2rT   
ser_compatr   r   r   test_div_zero9     "
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  r   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   rR   r+   r   r   r   r   r,   )rS   r   r   r   r   rT   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   rM   )	r   r   r   r   rR   r    divmodr+   r   )rS   r   r   r   exleftexrightrT   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 )NrO   r;   )
r'   r   r   r   r   r   rR   r    r+   r   )rS   r   r   r/   r   r   rT   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 s8w   Y  tj|jd
d< |jdkr[|jdkr[t	j
r[|d
kr[|d}|| }t|| ||| rnJ d S )NrO      rW      firstr_   r   r   r   rO   secondignorer   rR   )r<   r`   r   rO   r   float32)r   r   r   errstatevaluesrR   r   ilocr<   exprUSE_NUMEXPRr+   r,   r)   )	rS   switch_numexpr_min_elementsr   any_real_numpy_dtypedtype2r   r   r   rT   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 )NrM   r   rN   )
r   r   listr   rR   r   r   r+   r,   r   )rS   r   r   r   r0   r1   r   rT   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   rM   )r   r   r   r   r+   r,   r   )rS   r0   r1   r   rT   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   rW   rP   )r   r   ra   rb   r   r+   r,   )rS   
zero_arraydatar   rT   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   rM   r   r_   r   r   r   r   r   r+   r,   rS   serr   rT   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_   rP   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   )rS   r   rT   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   rM   )rc   	DataFramer   r   r   r+   assert_frame_equal)rS   dfrT   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?w   Y  t j||j|j	d	}t
|| d S )
Nr   r   r   r   rM   r   r   floatr(   columns)rc   r   r   r   r   r   r   r   r(   r   r+   r   )rS   r   r   r   r   r   rT   r   r   r   test_df_div_zero_array  s   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 sDw   Y  t j||j|jd}t	|| d S )Nr   r   r   r   r   rO   rM   r   r   rR   )rc   r   r   r   r(   r   r   r   r+   r   r   r   r   rS   r   rT   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r#J d S Nr6   rW   r   rc   r   r   ra   rb   fillnar)   rS   r   r   res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}|s|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   rR   r   Fr   r   r;   )rc   r   r   r   r   r   r+   r   )rS   using_array_managerr   r   r   r   rT   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>w   Y  t j||j|jdd
}tj|j	dddf< t
|| d S )Nr   r   r   r  rR   r;   r   r   r   )r(   r   r<   rO   rM   )rc   r   r   r   r   r   r   r(   r   r   r+   r   )rS   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 s:w   Y  t j||j|jd}t|| d S )	Nr   r   r   r   r   r   r   rR   )rc   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r#J 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)!rw   rx   ry   r   r   r   r   rp   r   r   r#   truedivfloordivr   r   r   rR   uint64r   r   r   r   r   r   r   r   r   r   r  r	  r
  r  r  r   r   r   r   r   8  s0    	



r   c                	   @  s   e Zd Zdd Zdd Zdd Zejde	j
eje	jgdd	 Zd
d Zdd Zdd Zdd Zdd Zdd Zejde	jejgdd Zdd Zdd Zdd Zdd Zejd ejd!d"d#d$ejgd%d& Zd'd( Z d)d* Z!d+d, Z"d-S ).TestMultiplicationDivisionc                 C  sl   |}t tdg}t tdg}t||}t||}|td }t|| |td }t|| d S )Nr6   rW   rN   )r   r   r+   rY   ro   )rS   rZ   rs   r   r   rT   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 )
NrM   r   r   r_   g{Gzg{Gzr   Fcheck_names)r   r   r   divr+   r,   )rS   r   r   r   rT   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 )NrM   rR   rN   )r   r+   r   r   r   )rS   r   r   rT   r   r   r   r   test_div_intu  s   
z'TestMultiplicationDivision.test_div_intr/   c                 C  s*   |}t ||}||d}t || d S NrM   )r+   rY   ro   )rS   r/   r   rZ   r   rT   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 )NrW   r   r;   r  )r   r   r+   r   r'   r   r   )rS   r   r   didxrT   	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   rW   r;   )r'   r   r   r   r   r+   r,   )rS   r   r   r  r  rT   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 )NrW   rR   r;   g?)r   r   r   r+   r,   )rS   r   r   rng5rT   r   r   r   r   test_mul_float_series  s
   z0TestMultiplicationDivision.test_mul_float_seriesc                 C  s    |}|| }t ||d  d S NrN   r+   r   )rS   r   r   rT   r   r   r   test_mul_index  s   z)TestMultiplicationDivision.test_mul_indexc                 C  sN   |}d}t jt|d |tjddd  W d    d S 1 s w   Y  d S )Nz,cannot perform __rmul__ with this index typerj   20130101rW   periods)rp   rq   rr   rc   
date_rangerS   r   r   ru   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w   Y  t jt|d |tddg  W d    d S 1 s?w   Y  d S )Nz(operands could not be broadcast togetherrj   r   rO   rM   rN   )rp   rq   
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+   rY   ro   )rS   r/   r   rZ   rs   r   r   rT   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+   rY   ro   )rS   r   rZ   rs   r   r   rT   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 w   Y  t|t|f}t||D ]
\}}t|| q2d S )NrN   r   r   )r   r   r   r   r   zipr+   r   )	rS   r   r   rT   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 s-w   Y  t|t|f}t||D ]
\}}	t	
||	 q?d S Nr;   rN   r   r   )r   onesr   shaper<   r   r   r   r,  r+   r   
rS   r   r   r.   rT   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/w   Y  t|t|f}t||D ]
\}}	t	
||	 qAd S r1  )r   r2  r   r3  r<   r   r   r   r,  r+   r,   r4  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 )NrW   rO   c                 S  s   t j| tdg ddS )NABCDE)jimjoejolier   )rc   r   r   r   r   r   r   r     s    z?TestMultiplicationDivision.test_ops_np_scalar.<locals>.<lambda>)r   ra   rb   r+   r   r   )rS   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 )Nr\   AFr  )r+   makeTimeSeriesr`   rc   r   r,   )rS   r\   r   r   r   r   test_operators_frame  s    z/TestMultiplicationDivision.test_operators_framec                 C  s2  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  }||rJ W d    d S 1 sw   Y  d S )Nr   r   r   r   r   r   r   rR   r;   r   rO   r(   r`   )r   r   rc   r   r   r   r   r   r+   r,   r(   r   r)   )rS   prT   r   r   r   r   r   test_modulo2  s$   

"z'TestMultiplicationDivision.test_modulo2c                 C  s   t jdd2 tddg}|d }tt jt jg}t|| d| }tt jdg}t|| W d    d S 1 s;w   Y  d S )Nr   r   r   rM   rP   )r   r   r   r   r+   r,   )rS   srT   r   r   r   r   test_modulo_zero_int'  s   "z/TestMultiplicationDivision.test_modulo_zero_intN)#rw   rx   ry   r  r  r  rp   r   r   r#   mulr   rmulr  r  r  r  r  r!  r'  r)  r$   r"   r*  r+  r0  r5  r6  r   r   r   r>  rA  rD  rF  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, expectedrL   ABCr   rB  )rN   rN   rN   ABD      @      @ABCD)rN   rN   rN   rN   rO   r   rW   c                 C  $   t || | t || | d S r!   )r+   r,   rS   r   r   r   r   r   r   test_add_series9     z'TestAdditionSubtraction.test_add_seriesr(   c                 C  rO  r!   )r+   r   rP  r   r   r   test_add_framesM  rR  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 s^w   Y  tjt|d ||  W d    d S 1 szw   Y  d S )NrW   r6   foo_c                 S     d|  S NrU  r   r   r   r   r   r   f      zDTestAdditionSubtraction.test_series_frame_radd_bug.<locals>.<lambda>r<  c                 S  rV  rW  r   r   r   r   r   r   k  rX  r\   r   r   zConcatenation operationrj   )r   r+   rands_arraymapr,   rc   r   r   r@  r`   r   r   rp   rq   rr   )	rS   r[   r<  rT   r   framer\   fix_nowru   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 sWw   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 )NrW   r"  r#  rS  zcannot subtract periodrj   rN   20130102dater   rT   Fr  )r   r   ra   rb   r(   	to_seriesr+   r,   rc   r%  rp   rq   rr   	to_periodr   rd   )rS   r   r   rT   ru   r   r   r   r   test_datetime64_with_index  s,   

z2TestAdditionSubtraction.test_datetime64_with_indexc                 C  s   |}t jd}t|t |jd}|| }|| }| D ](\}}| D ]\}	}
|| |	 d }t |
s>|
|ks=J q&t |sEJ q&q| D ]*\}}| D ]!\}	}
|| |	 ||  }t |
sm|
|kslJ qSt |stJ qSqKd S )Nr   rS  rN   )r   ra   r   r   r   itemsisnan)rS   float_framer[  garbage	colSeriesidSum	seriesSumcolr-   r   val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   rN   )rc   r   r+   r   )rS   re  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 )Nre   )re   Nrf   aabb)rc   r   r+   r   r   r   )rS   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 ]}|| |s"J t|| | qd S )Nr;   r?  )r   r<   r   r(   r<   )rc   r   r)   r+   r   )rS   r<   framesr   r   r   r   test_frame_operators_empty_like  s   
z7TestAdditionSubtraction.test_frame_operators_empty_likefuncc                 C     | d S r  r   r   r   r   r   r     rX  z TestAdditionSubtraction.<lambda>c                 C     | d d d S r  r   r   r   r   r   r         c                 C     dS rV   r   r   r   r   r   r         )multiplysliceconstantr   c                 C  *   |}t  d}||}t||| d S Nr\   r+   r@  renamer4   )rS   all_arithmetic_functionsry  r/   r-   r.   r   r   r    test_series_operators_arithmetic  s   z8TestAdditionSubtraction.test_series_operators_arithmeticc                 C  s   | d S r  r   r   r   r   r   r     rX  c                 C  r}  rV   r   r   r   r   r   r     r~  addr  c                 C  r  r  r  )rS   comparison_opry  r/   r-   r.   r   r   r   test_series_operators_compare  s   z5TestAdditionSubtraction.test_series_operators_comparec                 C  rz  r  r   r   r   r   r   r     rX  c                 C  r{  r  r   r   r   r   r   r     r|  c                 C  r}  rV   r   r   r   r   r   r     r~  c           
      C  s   t  d}||}t||}t|tjr1t|t|kr1g }|D ]}|| |t	j
 q"n|}t	|}t	jdd t|jt	|}W d    n1 sRw   Y  t||D ] \}}	t t	||	 |j|jksqJ t |j|jd  q\d S )Nr\   r   r   )r+   r@  r  r   r'   r   Iterabler   appendr   r   asarrayr   r   r,  assert_almost_equalr`   r   r(   r*   )
rS   ry  r-   r.   resultsother_npr   	expectedsrT   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 )Nr\   r   rB  rM   )r+   r@  r  r   r   r   r   r   r(   r   r,   )rS   tserr.   rT   exp1exp2r   r   r   test_series_divmod_zero   s   
z/TestAdditionSubtraction.test_series_divmod_zeroN)rw   rx   ry   rp   r   r   r   r   r   r   rQ  rc   r   rT  r]  rb  rm  rr  ru  rx  r  r  r  r  r   r   r   r   rI  5  sf    
 




rI  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   rW   foor_   r   r;   )r   r   r   r   r   sinr+   ro   )rS   r  rs   r   rT   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||s!J tttg ddd}t	||}t
|| t|d}|jdkrKt||sMJ tg ddd}t	||}t
|| |d }|jdkrot||sqJ tg ddd}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rt||sJ tg ddd}t	||}t
|| d S )N)rM   rN   rO   r   rW   r   r_   rJ   r   )g      ?r   g      ?r   g      @)rL  rM        @g      @g      @)g      rP   r   r   rL  r   )r   r   rL  rM  r  )r   r   r   sqrtr<   r'   r   r   r+   rY   ro   divide)rS   r  r   rs   rT   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sJ tg ddd}tg ddd}t|d t	|| t|d t	|| d S )NrL   r   r_   )rP   rP   rP   )r   r   rL  r   rM   )
r   r   r   modfr'   tupler   r+   ro   rY   )rS   r  r]   rs   rT   r  r  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 )	NrQ   rL   r   rB  r   rN   r6   )r6   rM      )r   r   r  atr+   r,   )rS   rE  r   r   r   r   test_ufunc_atX  s   zTestUFuncCompat.test_ufunc_atN)rw   rx   ry   rp   r   r   r   r   r   r   r   r  r  r  r  r   r   r   r   r    s    

)
r  c                   @  sj   e Zd Zejddegdd Zejddegdd Zejde	j
e	je	je	je	jgdd	 ZdS )
TestObjectDtypeEquivalencer<   Nc                 C  st   |}t g d|d}t tjtjtjg|d}t||}t||}tj| }t|| |tj }t|| d S )NrL   r;   )r   r   r   r+   rY   ro   rS   r<   rZ   rs   r   r   rT   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 )NrL   r;   )rN   rO   r   rM   )r   r+   rY   ro   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 )Nr6   rv  r   )
r   r   ra   rb   r   objectr   r   r+   r,   )rS   r/   r   rT   r   r   r   r   test_operators_reverse_object  s   
z8TestObjectDtypeEquivalence.test_operators_reverse_object)rw   rx   ry   rp   r   r   r  r  r  r#   r  subrG  r  r  r  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   r6   rM   r9   rN   irW   r   idx2c                 C  sD   | d}| d}|||}|t|t|}tj||dd d S Nr  barequivexact)_renamer   r+   r   )rS   r/   r  r  rT   r   r   r   r   test_binops_index  s
   


z/TestNumericArithmeticUnsorted.test_binops_indexr   scalar)r   rM   rN   c                 C  s,   |||}|t ||}tj||dd d S Nr  r  )r   r+   r   )rS   r/   r   r  rT   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  )r  r$   r   r+   r   )rS   r  r  rT   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 r  )r$   r   r+   r   )rS   r   r  rT   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 )NrW   rN   )
r   r   r   ra   rb   r+   r,   rc   r   r   )rS   r/   r(   r.   r   rT   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   r6   rN   r9   r   Tr  r  r   rW   rM   rR     )r   r+   r   r   r   r   r   _values)rS   r   rT   r   r   r   r   test_numeric_compat2  s4   z2TestNumericArithmeticUnsorted.test_numeric_compat2zidx, div, expectedr  i  ii7!   C   d   r   2   r   rO   ir  ii8c                 C  s   t j|| |dd d S )NTr  r   )rS   r   r  r   r   r   r   test_numeric_compat2_floordiv&  s   z;TestNumericArithmeticUnsorted.test_numeric_compat2_floordivr<   delta)rM   r   r   c                 C  s   ||}t g d|d}|| }t |j| |d}t|| || }t |j| |d}t|| t|| d|  t|| d|  || jrMJ d S )N)r6      r  r;   rN   r   )r   r   r+   r   empty)rS   r<   r  r(   rT   r   r   r   r   test_addsub_arithmetic?  s   z4TestNumericArithmeticUnsorted.test_addsub_arithmeticN)rw   rx   ry   rp   r   r   r#   r  r  rG  r  r  r   r  r  r  r  r$   r-  r  r  r   r  r  r   r   rR   r  r   r   r   r   r    s    




	



	




	   	
)


r  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 )NrQ   )皙?Nr  )r?  ro  r?  )r  g333333?g?)r   rN   rO   rS  rM   
fill_valuer   rP   )rc   r   	rfloordivr   r   r   r+   r   )r   r.   rT   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    d S 1 sLw   Y  d S )Nr6   rM   rN   rO   r   )r?  ro  rn  r   
abcdefghijrN  r   
abcdefghjkABCXr   r  )rc   r   r   r   r   r   ra   rb   r+   assert_produces_warningr  )pdf1pdf2r   r   r   test_dataframe_div_silenceda  s   

"r  zdata, expected_datarQ   )r   rN   r   c           
      C  s|   t |dd}| |}||| }||| }t|| fv rt}nt|| fv r(t}nt }||dd}	t||	 t||	 d S )NInt64r;   )r   r   r   r+   ro   )
r   box_1d_arrayr   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g dgddgdd} |  }|j	d	d
|_| | }t jdgd dg| jd}t
|| d S )Nre      rf   rQ   levAlevB)namesrS  r   rM   rP   )r   r(   )rc   r   r   ra   rb   
MultiIndexfrom_productr   r(   	swaplevelr+   r   )r   df2rT   r   r   r   r   "test_sub_multiindex_swapped_levels  s   r  power)rM   rN   rW   string_size)r   rM   rN   rW   c                 C  sX   t td|  }tj|t jd}d| }||k}tt j|jtd}t	
|| d S )Nr6   r;    )r   r   rX   rc   r   r   rm   r3  rn   r+   r   )r  r  re   r1   r0   rT   r   r   r   r   test_empty_str_comparison  s   r  );
__future__r   collectionsr   decimalr   r#   typingr   numpyr   rp   pandasrc   r   r   r   r	   r
   r   pandas._testing_testingr+   pandas.corer   pandas.core.apir   r   r   pandas.core.computationr   r   pandas.tests.arithmetic.commonr   r   fixtureto_arrayr   r    r4   r5   __annotations__r8   extendrK   rz   r   r  rI  r  r  r  r  r  r   r   r  r  r  r   r   r   r   <module>   sd    
7 *   c ^M/ F
