U
    sVcm                    @   sP  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
Z
d dlZd dlm  mZ d dlZd dlmZmZmZmZ d dlmZ d dlm  mZ d dlmZ d dl m!Z!m"Z" d dl#m$Z$m%Z% e
j&d	d
d dg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Z+G dd dZ,dd Z-dd Z.e
j/0dd d! Z1G d"d# d#Z2d$d% Z3d&d' Z4d(d) Z5d*d+ Z6e
j/7d,ed-d.gd/d0gge8d1d2d3fed-d4gd/d4gge8d1d2d5fgd6d7 Z9d8d9 Z:e
j/7d:ed;d;gged;d;ged;d;gggd<d= Z;d>d? Z<d@dA Z=dBdC Z>dDdE Z?dFdG Z@dHdI ZAdS )J    )deque)datetime)EnumN)	DataFrameIndex
MultiIndexSeries)expressions)_MIN_ELEMENTSNUMEXPR_INSTALLED)_check_mixed_float_check_mixed_intTmodulei@B Znumexprpython)ZautouseZscopeparamsidsc                 c   s    t j}| jt _| jV  |t _d S N)exprr
   param)requestr
    r   F/tmp/pip-unpacked-wheel-xj8nt62q/pandas/tests/frame/test_arithmetic.pyswitch_numexpr_min_elements"   s    r   c                   @   sZ   e Zd ZddddZdd ZedddZedd	d
ZdddZdd Z	dddZ
dS )DummyElementN)returnc                 C   s   || _ t|| _d S r   )valuenpdtype)selfr   r   r   r   r   __init__-   s    zDummyElement.__init__c                 C   s   t j| j| jdS )Nr   )r   arrayr   r   r   r   r   r   	__array__1   s    zDummyElement.__array__c                 C   s   d| j  d| j dS )NzDummyElement(z, ))r   r   r"   r   r   r   __str__4   s    zDummyElement.__str__c                 C   s   t | S r   )strr"   r   r   r   __repr__7   s    zDummyElement.__repr__Fc                 C   s
   || _ | S r   r    )r   r   copyr   r   r   astype:   s    zDummyElement.astypec                 C   s   t | | j||S r   )typer   view)r   r   r   r   r   r+   >   s    zDummyElement.viewc                 C   s
   t | jS r   )boolr   )r   axisr   r   r   anyA   s    zDummyElement.any)F)N)__name__
__module____qualname__r   r#   r&   r%   r'   r)   r+   r.   r   r   r   r   r   ,   s   
r   c                   @   sn  e Zd Zdd Zdd Zejdej	j
dddejddd	d
ej	j
dddej	j
dddd
gej	j
dddej	j
dddd
ej	j
dddejddd	d
gejddd	ejddd	d
ej	j
dddej	j
dddd
gej	j
dddejddd	d
ejddd	ejddd	d
ggdd Zejdddddddgdd Zdd Zdd Zdd Zdd ZdS )TestFrameComparisonsc                 C   sb   t ddddgi}t ddddgi}|dk}t|| |d d|d< |dk}t|| d S )NAfoobarbazTFcategory)r   tmassert_frame_equalr)   )r   dfexpresr   r   r   &test_comparison_with_categorical_dtypeL   s    z;TestFrameComparisons.test_comparison_with_categorical_dtypec              	   C   sD   t tjddtdd}d}tjt|d |dk W 5 Q R X d S )N      ABCDcolumnsz+The truth value of a DataFrame is ambiguousmatchr   )r   r   randomrandnlistpytestraises
ValueError)r   r:   msgr   r   r   test_frame_in_list[   s    z'TestFrameComparisons.test_frame_in_listz	arg, arg2
   size20010101periodsabc              	      s   t | t | k}t  fdd jD  j jd}t||  k}t  fdd jD  j jd}t|| dddg}d|}tjt|d	  k W 5 Q R X tjt|d	  k W 5 Q R X tjt|d	  k  W 5 Q R X tjt|d	  k W 5 Q R X d S )
Nc                    s   i | ]}| | | kqS r   r   .0colxyr   r   
<dictcomp>   s      z@TestFrameComparisons.test_comparison_invalid.<locals>.<dictcomp>indexrB   c                    s   i | ]}| | | kqS r   r   rV   rY   r   r   r\      s      z=Invalid comparison between dtype=datetime64\[ns\] and ndarrayzinvalid type promotionzbThe DTypes <class 'numpy.dtype\[.*\]'> and <class 'numpy.dtype\[.*\]'> do not have a common DType.|rC   )	r   rB   r^   r8   r9   joinrH   rI   	TypeError)r   argZarg2resultexpectedZmsgsrK   r   rY   r   test_comparison_invalidb   s:    0	
z,TestFrameComparisons.test_comparison_invalidzleft, right)gtlt)rg   rf   )gele)ri   rh   )eqrj   )nerk   c           	   	   C   s  t tjdddtjdddtjjdddtjdtt	dd}tj
|jtjt|dkd	f< tt|}tt|}|d
kr||td}|td|}t|| nXd}tjt|d ||td W 5 Q R X tjt|d |td| W 5 Q R X |d
kr@||td}|td|}t|| nXd}tjt|d ||td W 5 Q R X tjt|d |td| W 5 Q R X d S )NrP   rM   rQ   Z20010102i ʚ;rN   )Zdates1dates2ZintcolZfloatcolZ	stringcolg      ?rl   )rj   rk   Z20010109zL'(<|>)=?' not supported between instances of 'numpy.ndarray' and 'Timestamp'rC   ZnatzJ'(<|>)=?' not supported between instances of 'numpy.ndarray' and 'NaTType')r   pd
date_ranger   rE   randintrF   rG   r8   ZrandsNaTlocrandlengetattroperator	Timestampr9   rH   rI   ra   )	r   leftrightr:   Zleft_fZright_frd   rc   rK   r   r   r   test_timestamp_compare   s>    
	 


z+TestFrameComparisons.test_timestamp_comparec                 C   s\   t ddgddgg}t ddgddgg}||k}|  r@t||k}|  sXtd S )Nz
1989-08-01      rT   rU   cd)r   r.   AssertionErrorall)r   r:   otherrc   r   r   r   test_mixed_comparison   s    z*TestFrameComparisons.test_mixed_comparisonc                 C   s^   t tdd}t ddgddgddgg}|dk}t|| |ddgk}t|| d S )Nr>      r{   FTr{   r{   r{   )r   r   arangereshaper8   r9   )r   r:   rd   rc   r   r   r    test_df_boolean_comparison_error   s    z5TestFrameComparisons.test_df_boolean_comparison_errorc                 C   s@   t tjddtddddgd}|d }|  r<td S )N   r   r3   BCr]   )r   r   rE   rF   range__eq__r.   r~   r   r:   rc   r   r   r   test_df_float_none_comparison  s    "
z2TestFrameComparisons.test_df_float_none_comparisonc                 C   s   t ddddddg}|jdk}t|| |jddd d f  t||  |jddd d f  |jdk}t|| |jddd d f  t||  |jddd d f  d S )Nrz   r4   rS   r{   r5   r   )r   rT   r8   r9   rq   rU   )r   r:   Zmask_aZmask_br   r   r   test_df_string_comparison  s    
"$
"z.TestFrameComparisons.test_df_string_comparisonN)r/   r0   r1   r=   rL   rH   markparametrizer   rE   ro   rm   rn   re   ry   r   r   r   r   r   r   r   r   r2   I   sd   -
*
-r2   c                	   @   s   e Zd Zejdddddddgdd	 Zejd
eje	gdd Z
dd Zdd Zdd Zdd Zejdddddddgdd Zejdddddddgdd Zdd ZdS )TestFrameFlexComparisonsoprj   rk   rf   rg   rh   ri   c              	   C   sH  t jdd}t jdd}t|}t|}t |jd }||j sPt	|
|j rdt	t||}tt|}t||||| |jdd dd f  }	||	}
|||	j|j|jd}t|
| t||j|||j t|d||d d}t|t j||t j tjt|d || W 5 Q R X d S )	N   r   )rz   r   rz   r]   r   $Unable to coerce to Series/DataFramerC   )r   rE   rF   r   onesshaperj   valuesr   r~   rk   r.   rt   ru   r8   r9   rq   r(   reindexr^   rB   nanrH   rI   rJ   )r   r   dataZ
other_datar:   r   ndim_5foZpart_orsZxprK   r   r   r   test_bool_flex_frame  s(    

z-TestFrameFlexComparisons.test_bool_flex_frameboxc                 C   s  t jdd}t|}|t jd}|t jd}|j|dd}||}|j|dd}||}	t||t|k t||	  t||  t||j	|j	 t||t
| t||jt|dd t||jt
|dd |j|dd}
||}|j|dd}||}t||t|k t||  t|
|  t|
|j	|j	 |j|dd}||}|j|dd}||}t||t|k t||  t||  t||j	|j	 tt jd}tt jd}d S )Nr   r   r   r-   )r   rE   rF   r   rj   rk   r8   r9   r   TrG   rf   ri   rh   rg   )r   r   r   r:   Zidx_serZcol_serZidx_eqZcol_eqZidx_neZcol_neZidx_gtZcol_gtZidx_leZcol_leZidx_geZcol_geZidx_ltZcol_ltr   r   r   test_bool_flex_series=  sB    





z.TestFrameFlexComparisons.test_bool_flex_seriesc                 C   s   t tjdd}tj|jd< ||}|jd r6t||}|jd sNt|	|}|jd rft|
|}|jd r~t||}|jd rt||}|jd rtd S )Nr   r   r   r   )r   r   rE   rF   r   rq   rj   r~   rk   rf   rg   rh   ri   )r   r:   r   r   r   r   test_bool_flex_frame_nah  s    





z0TestFrameFlexComparisons.test_bool_flex_frame_nac           	   	   C   sp  t t jddt jg}t dt jdd g}td|i}td|i}dddg}tjt|d	 || W 5 Q R X tjt|d	 |d |d  W 5 Q R X tjt|d	 |j	|j	k W 5 Q R X |
|}|j	 stt dt jd g}td|i}tjt|d	 |d W 5 Q R X tjt|d	 |d d W 5 Q R X tjt|d	 |j	dk W 5 Q R X d S )
Nrz   r>   y               @   rT   r_   z9'>' not supported between instances of '.*' and 'complex'z unorderable types: .*complex\(\)rC   )r   r!   r   r   r`   rH   rI   ra   rf   r   rk   r   r~   )	r   arrZarr2r:   df2rK   r   Zarr3df3r   r   r   "test_bool_flex_frame_complex_dtypey  s2    
z;TestFrameFlexComparisons.test_bool_flex_frame_complex_dtypec                 C   sV   t ddtjdgi}t ddt dgi}||}t ddddgi}t|| d S )NrX   r4   r5   FT)r   r   r   r   nowrk   r8   r9   )r   df1r   rc   r;   r   r   r   !test_bool_flex_frame_object_dtype  s
    
z:TestFrameFlexComparisons.test_bool_flex_frame_object_dtypec                 C   s   t tjg}|tjk}|jd  dks,t|tj}|jd  dksNt|tjk}|jd  dksnt|tj}|jd  dkstd S )Nr   FT)r   rm   rp   ilocitemr~   rj   rk   r   r   r   r   test_flex_comparison_nat  s    

z1TestFrameFlexComparisons.test_flex_comparison_natopnamec                 C   sT   t dddgdddgd}d}t|||j }t|tdgtt	gd d S )	Nrz   r{   r         ?       @      @rY   r^   )
r   rt   dtypesvalue_countsr8   assert_series_equalr   r   r   r,   )r   r   r:   constrc   r   r   r   &test_df_flex_cmp_constant_return_types  s    z?TestFrameFlexComparisons.test_df_flex_cmp_constant_return_typesc                 C   sb   t dddgdddgd}d}|jd d }t|||j }t|tdgt	t
gd	 d S )
Nrz   r{   r   r   r   r   rY   r   r   )r   r   rt   r   r   r8   r   r   r   r   r,   )r   r   r:   r   emptyrc   r   r   r   ,test_df_flex_cmp_constant_return_types_empty  s
    zETestFrameFlexComparisons.test_df_flex_cmp_constant_return_types_emptyc                 C   s   t jdddg}t||d}tddg}|j|dd}tddgddgd}t|| tddgdd	gd
}|j|dd}t|| d S )Nrz   r{   r   r3   r   r   r   Fr3   r   r   )rm   ZIntervalIndexZfrom_breaksr   r   rj   r8   r9   )r   iir:   serr<   rd   Zser2res2r   r   r   -test_df_flex_cmp_ea_dtype_with_ndarray_series  s    zFTestFrameFlexComparisons.test_df_flex_cmp_ea_dtype_with_ndarray_seriesN)r/   r0   r1   rH   r   r   r   r   r!   r   r   r   r   r   r   r   r   r   r   r   r   r   r     s   

*'

	r   c                   @   sH  e Zd Zdd Zejje ddejdddgdd	 Z	d
d Z
dd Zdd Zejddddgdd Zejdedddd Zdd Zejddddd gd!d" Zd#d$ Zejd%d&d'gd(d) Zd*d+ Zd,d- Zd.d/ Zejddddd0gd1d2 Zejd3d4d5gd6d7 Zd8d9 Zd:d; Zd<d= Zd>d? Zd5S )@TestFrameFlexArithmeticc                    st   t d}t|td  jdd}t fdd jD }t||  jjdd}t|| d S )Nr   r   r   r   c                    s   i | ]}| |  qS r   r   rV   r:   r   r   r   r\     s      z?TestFrameFlexArithmetic.test_floordiv_axis0.<locals>.<dictcomp>)	r   r   r   r   floordivrB   r8   r9   r   )r   r   rc   rd   result2r   r   r   test_floordiv_axis0  s    
z+TestFrameFlexArithmetic.test_floordiv_axis0znumexpr not installed)reasonr   r   powc                    s   t t|ttd td d dd }t| d d<  d t  |dd}t fdd	 jD }t	|| t  |j
dd}t	|| d S )
Nd   rz   r   r   r   r   c                    s   i | ]}| | qS r   r   rV   r:   r   r   r   r   r\     s      zLTestFrameFlexArithmetic.test_floordiv_axis0_numexpr_path.<locals>.<dictcomp>)rt   ru   r   r   r
   r   r   rB   r8   r9   r   )r   r   r   rc   rd   r   r   r   r    test_floordiv_axis0_numexpr_path  s    
"z8TestFrameFlexArithmetic.test_floordiv_axis0_numexpr_pathc                 C   sf   t jddd}t jddd}t|}t||d}|j|dd}t|| || d}t|| d S )N
2016-01-01rM   rQ   1r   rz   r   r   )rm   rn   Ztimedelta_ranger   r   addr8   r9   )r   dtiZtdiZtserr:   rc   rd   r   r   r   test_df_add_td64_columnwise  s    z3TestFrameFlexArithmetic.test_df_add_td64_columnwisec                 C   s   t jddd}tdddgdd}t||d	}t||d	}t jd
d }|j||d}ttdddgdd|d d	}t|| d S )Nr   r   rQ   z1 Dayrp   z2 Daystimedelta64[ns]r    r   rz   )days
fill_valuez
2016-01-02z
2016-01-03z
2016-01-05zdatetime64[ns]r{   )	rm   rn   r   r   	TimedeltaZto_timedelta64r   r8   r9   )r   r   r   r:   r   fillrc   rd   r   r   r   $test_df_add_flex_filled_mixed_dtypes  s     z<TestFrameFlexArithmetic.test_df_add_flex_filled_mixed_dtypesc                    s|   |  fdd}t | d| }||d| }t|| t | d| }||d| }t|| t|dd id d S )Nc                    s2     dr"tt dd|| S tt | |S )NZ__r__)
startswithrt   ru   replacerY   r   r   r   r   '  s    
z8TestFrameFlexArithmetic.test_arith_flex_frame.<locals>.fr{   r   r    )rt   r8   r9   r   )r   all_arithmetic_operatorsfloat_framemixed_float_framer   rc   rd   r   r   r   test_arith_flex_frame!  s    z-TestFrameFlexArithmetic.test_arith_flex_framer   __add____sub____mul__c           
      C   s   t t|}t ||d| }||d| }d }	|dkrBdd d}	n|dkrRdd i}	tjrr|dkrrd| d j|	d< t|| t||	d	 t ||d| }||d| }t|| t|dd id	 t ||d| }||d| }t|| d S )
Nr{   )r   Zuint64)r   r   )r   r   r   r   r3   r    )	rt   ru   r   USE_NUMEXPRr   r8   r9   r   r   )
r   r   Z	int_framemixed_int_framer   r   r   rc   rd   r   r   r   r   test_arith_flex_frame_mixed7  s&    	
z3TestFrameFlexArithmetic.test_arith_flex_frame_mixeddimr   r>   c              	   C   sB   |}t d| }d}tjt|d t||| W 5 Q R X d S )N)rz   r   rC   )r   r   rH   rI   rJ   rt   )r   r   r   r   r   r   rK   r   r   r   test_arith_flex_frame_raise`  s
    z3TestFrameFlexArithmetic.test_arith_flex_frame_raisec              	   C   s   | d}t||d  | |d d }t||tj  |d d  |}t||tj  tjtdd |j |jd dd W 5 Q R X tjtdd |j |jd ddd W 5 Q R X d S )	Nrz   r   r   rC   r   r   r^   r-   r   )	r   r8   r9   r   r   rH   rI   NotImplementedErrorr   )r   r   Z	const_addrc   r   r   r   test_arith_flex_frame_cornerk  s    
z4TestFrameFlexArithmetic.test_arith_flex_frame_cornerr   submulmodc                 C   sb   |}| d}|d }t||}tt|}t||||| t||dd||j|j d S )NrT   twor   r   )xsrt   ru   r8   r9   r   )r   simple_framer   r:   rowrX   r   r   r   r   test_arith_flex_series_ops}  s    


z2TestFrameFlexArithmetic.test_arith_flex_series_opsc                 C   sh   |}| d}|d }t|j|d d||  t||||  t|j|dd|j| j d S )NrT   r   r   r   )r   r8   r9   r   divr   )r   r   r:   r   rX   r   r   r   test_arith_flex_series  s    
z.TestFrameFlexArithmetic.test_arith_flex_seriesr   int64float64c                 C   sX   t tdd|d}t tjtjgddgddgg}|j|d dd	}t|| d S )
Nr>   r   r    r         ?g      ?r   r^   r   )	r   r   r   r   r   infr   r8   r9   )r   r   r:   rd   rc   r   r   r   #test_arith_flex_series_broadcasting  s    z;TestFrameFlexArithmetic.test_arith_flex_series_broadcastingc              	   C   s   t g td}tddgd}tddgddggddgd}tjtd	d
 |j|dd W 5 Q R X tjtd	d
 |j|d d dd W 5 Q R X d S )Nr    r3   r   rA   rz   r{   r   r?   r   rC   Er   r   )r   objectr   rH   rI   r   r   r   )r   Zser_len0Zdf_len0r:   r   r   r   test_arith_flex_zero_len_raises  s    z7TestFrameFlexArithmetic.test_arith_flex_zero_len_raisesc                 C   s^   t jddt jdddgdd}td|itd	d
}|dd}|jddd}t|| d S )Nr   rz   r   r?   r   floatr    r4   r>   r   r{   r   )	r   r!   r   r   r   fillnar   r8   r9   )r   Zdatr:   r;   r<   r   r   r   test_flex_add_scalar_fill_value  s
    z7TestFrameFlexArithmetic.test_flex_add_scalar_fill_valuec                 C   sr   t dddddgdddddgd}t dddgdddgd}t dddddgdddddgd}||}t|| d S )Nrz   r{   r   r?   r   r   r   )r   r   r8   r9   )r   r   r   rd   rc   r   r   r   'test_sub_alignment_with_duplicate_index  s
      
z?TestFrameFlexArithmetic.test_sub_alignment_with_duplicate_index__truediv__c                 C   sj   t tdtjdd}t|||}ddg|_ddg|_t|||}t|| t	| |j
 d S )NrM   r   r3   )r   r   r   rE   rr   rt   rB   r8   r9   r&   r   )r   r   r:   rd   rc   r   r   r   &test_arithmetic_with_duplicate_columns  s    

z>TestFrameFlexArithmetic.test_arithmetic_with_duplicate_columnslevelr   Nc                 C   s   t dddgdddgd}|jd|_t dddgdddgd}|jddg|_|j||d	}t dddgdddgd}|jddg|_t|| d S )
Nr   rz   r{   r   r   ZL1))r3   r   )r3   DZL2)r  )r   rB   Z	set_namesr   r8   r9   )r   r  r   r   rc   rd   r   r   r   test_broadcast_multiindex  s    z1TestFrameFlexArithmetic.test_broadcast_multiindexc                 C   s   t dddgdddgdtjdgdgd	ddggd
ddgdd}tdgtjdgdggdd
gdd}t dddgdddgdtjdgdgd	ddggd
ddgdd}|j|d	d}t|| d S )Nrz   r{   r   r?   r   i  i  rT   rU   r   scenr   idnamesr   皙?ffffff?333333@333333@皙@g@r   r   r   from_productr   r   r8   r9   r   r:   seriesrd   rc   r   r   r    test_frame_multiindex_operations  s(      z8TestFrameFlexArithmetic.test_frame_multiindex_operationsc                 C   s   t dgdgdtjdgdggddgdd	}td
ddgtjdgdgdddggdddgdd	}t dddgdddgdtjdgdgdddggdddgdd	}|j|dd}t|| d S )Nrz   r   r	  rT   rU   r
  r   r  r         $@g      4@g      >@r   r{   r  g      &@   g      ?@g      *@g      7@g     @@r   r  r  r   r   r   <test_frame_multiindex_operations_series_index_to_frame_index  s(      zTTestFrameFlexArithmetic.test_frame_multiindex_operations_series_index_to_frame_indexc              	   C   s   t dddgdddgdtjdgdgd	ddggd
ddgdd}tdgtjdgdggdd
gdd}t tjtjdtjdddddtjfgd
ddgdd}|j|d	d}t	|| d S )Nrz   r{   r   r?   r   r	  rT   rU   r   r
  r   r  r  r   r  r|   rT   rU   r   rT   rU   rz   )rT   rU   r{   r   )
r   r   r  r   r   r   from_tuplesr   r8   r9   r  r   r   r   )test_frame_multiindex_operations_no_align  s0     
zATestFrameFlexArithmetic.test_frame_multiindex_operations_no_alignc                 C   s   t dddgdddgdtjddd	gd
ddgdd}tdgtjdgdggdd
gdd}t ddtjgddtjgdtjddd	gd
ddgdd}|j|dd}t	|| d S )Nrz   r{   r   r?   r   r	  r  r  )rT   r|   r{   r
  r   r  r  r   r  rU   rT   r  r  r  r  r   r   )
r   r   r  r   r  r   r   r   r8   r9   r  r   r   r   +test_frame_multiindex_operations_part_align#  s4    zCTestFrameFlexArithmetic.test_frame_multiindex_operations_part_align)r/   r0   r1   r   rH   r   Zskipifr   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     s8   
(



	

r   c                   @   s.  e Zd Zdd Zdd Zdd Zdd Zd	d
 Zdd Zdd Z	e
jdddgdd Ze
jdddgdeddgeddeddggdd Zdd Zdd Zdd  Ze
jd!d"d#d$d%d&d'ed(d)d*fed(d)d+fge
jjd,ejejejejejejgd-d. d/d0d1 Zd2d3 Z d4d5 Z!d6S )7TestFrameArithmeticc                 C   sJ   t ddgdd}tddgddgg}|| }t||d}t|| d S )	Nrp   r   r    rz   r{   r   r?   r   r   r   r8   r9   )r   r   r:   rc   rd   r   r   r   test_td64_op_nat_castingF  s
    z,TestFrameArithmetic.test_td64_op_nat_castingc                 C   s   t ddd}t|ddgdddgd	}|d
gd d f }|jd
|jd
 fksTttddgddgddgg|j|j|jd}|| }t	
|| || }t	
|| d S )Nr>   r   r{   TFr3   r   r   rB   r^   rz   r?   r   rB   r^   r   r   r   r   r   r   r~   rB   r^   r   r8   r9   )r   r   r:   rowlikerd   rc   r   r   r   'test_df_add_2d_array_rowlike_broadcastsP  s    z;TestFrameArithmetic.test_df_add_2d_array_rowlike_broadcastsc                 C   s   t ddd}t|ddgdddgd	}|d d d
gf }|j|jd d
fksTttd
dgddgddgg|j|j|jd}|| }t	
|| || }t	
|| d S )Nr>   r   r{   TFr3   r   r   r#  rz   r   r   	   rM   r$  r%  )r   r   r:   collikerd   rc   r   r   r   'test_df_add_2d_array_collike_broadcastse  s    z;TestFrameArithmetic.test_df_add_2d_array_collike_broadcastsc                 C   s   |}|r|dkrt | tddd}t|ddgddd	gd
}|dgd d f }|jd|jd fksntt|j	d ||
 t|j	d ||
 t|j	d	 ||
 g}t||j|jd
}	t|||}
t|
|	 d S )N__rmod____rfloordiv__r>   r   r{   TFr3   r   r   r#  rz   )td&mark_array_manager_not_yet_implementedr   r   r   r   r   r~   rt   rq   squeezerB   r^   r8   r9   )r   r   r   using_array_managerr   r   r:   r&  exvalsrd   rc   r   r   r   )test_df_arith_2d_array_rowlike_broadcastsz  s    
z=TestFrameArithmetic.test_df_arith_2d_array_rowlike_broadcastsc                 C   s   |}|r|dkrt | tddd}t|ddgddd	gd
}|d d dgf }|j|jd dfksntt|d ||	 t|d ||	 d}d }	|dkrtj
dd | D  }	t||j|j|	d}
t|||}t||
 d S )Nr+  r>   r   r{   TFr3   r   r   r#  rz   r   )TFc                 s   s   | ]}|j V  qd S r   )r   rW   rZ   r   r   r   	<genexpr>  s     zPTestFrameArithmetic.test_df_arith_2d_array_collike_broadcasts.<locals>.<genexpr>r$  )r.  r/  r   r   r   r   r   r~   rt   r0  Zcommon_typer   rB   r^   r8   r9   )r   r   r   r1  r   r   r:   r)  r2  r   rd   rc   r   r   r   )test_df_arith_2d_array_collike_broadcasts  s     
z=TestFrameArithmetic.test_df_arith_2d_array_collike_broadcastsc                 C   sh   t ddgddgg}|d }|jdd }|dk s<td| }|jdd }|dk sdtd S )NFTrz   c                 S   s   | j S r   kindrZ   r   r   r   <lambda>      z:TestFrameArithmetic.test_df_bool_mul_int.<locals>.<lambda>ic                 S   s   | j S r   r7  r9  r   r   r   r:    r;  )r   r   applyr   r~   )r   r:   rc   kindsr   r   r   test_df_bool_mul_int  s    z(TestFrameArithmetic.test_df_bool_mul_intc                 C   sL   t dddgdddgd}|| }t dd	d
gdddgd}t|| d S )NrT   rU   r|   rz   r{   r   r   ZaaZbbccr?   r>   r   r8   r9   )r   rw   rc   rd   r   r   r   test_arith_mixed  s    z$TestFrameArithmetic.test_arith_mixedrX   r3   r   c                 C   sB   t ddgddgd}||d| }||| d}t|| d S )Ng?gffffff
@g      @g333333r   rz   )r   r8   r   )r   Zall_arithmetic_functionsrX   r:   rc   rd   r   r   r   test_arith_getitem_commute  s    z.TestFrameArithmetic.test_arith_getitem_commuter   rz   r{   rz   r{   r   c                 C   sD   t ddgddgd}t ddgddgd}|| }t|| d S )Nrz   r   r{   r   rA  )r   r   r:   rd   rc   r   r   r   &test_arith_alignment_non_pandas_object  s    z:TestFrameArithmetic.test_arith_alignment_non_pandas_objectc                 C   s6  t tjdddddddddgd	d
dgd}|d	j}t |j| |j|jd}t	|| | t |jj
| j
|j|jd}t	|j|dd| t|d }t |j| |j|jd}t	|| | t |jj
| j
|j|jd}t	|j|dd| tjj|j }t |j| |j|jd}t	||| d S )Nrz   rM   f8r    r   oner   threerT   rU   r|   r#  r]   r   r   r^   )r   r   r   r   r   r   r^   rB   r8   r9   r   r   rG   rE   rr   r   )r   r:   Zval1addedZval2Zval3r   r   r   test_arith_non_pandas_object  s$    z0TestFrameArithmetic.test_arith_non_pandas_objectc                    sn   |t t jddd}ddg}t|g|d}d t| }t fdd	|D g|d}t|| d S )
N        r   )startendrz   r{   rA   rM   c                    s   g | ]}t | qS r   )rt   )rW   nnumr   r   r   
<listcomp>  s     zVTestFrameArithmetic.test_operations_with_interval_categories_index.<locals>.<listcomp>)rm   ZCategoricalIndexZinterval_ranger   rt   r8   r9   )r   r   indr   r:   rc   rd   r   rO  r   .test_operations_with_interval_categories_index  s    zBTestFrameArithmetic.test_operations_with_interval_categories_indexc                 C   s   t tdtdgtdtdgdddgd}|dg }|| }t td	td	gtjtjgdddgd}t|| d S )
NZ2019Z2020Z2018Z2021)r4   r5   r4   r5   rA   r   )r   rm   rv   r   r   r   r8   r9   )r   r:   r   rc   rd   r   r   r   test_frame_with_frame_reindex  s    
 z1TestFrameArithmetic.test_frame_with_frame_reindexzvalue, dtype)rz   i8)r   rF  )            rF  )y              ?
complex128)rV  rW  )Tr,      ns<m8[ns]<M8[ns]r   c                 C   s   | j S r   )r/   r9  r   r   r   r:  ,  r;  zTestFrameArithmetic.<lambda>)r   c              
   C   s  t jdft jdft jdft jdfh}t||}td|j|jgi|jd}t jdft j	dft jdft jdft jdft jdft jdft j
dft j	dfh	}||f|krBd }	|dkr|t jks|dkr|t jkrd }
n4|dkrd}
t}	n"|t j
krd}
t}	nd	|j d
}
tjt|
d( t|	 |||j W 5 Q R X W 5 Q R X n||f|kr|t jt jfkrtjrz|dkrzt}	nd }	t|	 |||j W 5 Q R X n*d}
tjt|
d |||j W 5 Q R X n<td   |||jj}|||j}W 5 Q R X t|| d S )Nr,   r3   r    r[  rZ  rW  z3ufunc 'remainder' not supported for the input typesz-numpy boolean subtract, the `-` operator, is zcannot perform __z7__ with this index type: (DatetimeArray|TimedeltaArray)rC   r   z+operator '.*' not implemented for .* dtypes)ru   truedivr   r   r   r   r   r   r   r   r   UserWarningr/   rH   rI   ra   r8   assert_produces_warningr   r   r   r   r   )r   r   r   r   r   skipelemr:   invalidwarnrK   rc   rd   r   r   r   test_binop_other  sd    

"z$TestFrameArithmetic.test_binop_otherc                 C   s   t tddgtddgg}t tddgddtddgg}tddgddgg|d}tddgddgg|d}|| }tddgddgg|d}t|| d S )	Nrz   r{   r   r?   Int8r    rA   r   r   Zfrom_arraysr   r   r8   r9   r   midxZmidx2rw   rx   rc   rd   r   r   r   *test_arithmetic_midx_cols_different_dtypesr  s    "z>TestFrameArithmetic.test_arithmetic_midx_cols_different_dtypesc                 C   s   t tddgtddgg}t tddgddtddgg}tddgddgg|d}tddgddgg|d}|| }tddgddgg|d}t|| d S )	Nrz   r{   r   r?   rd  r    rA   r   re  rf  r   r   r   :test_arithmetic_midx_cols_different_dtypes_different_order|  s    "zNTestFrameArithmetic.test_arithmetic_midx_cols_different_dtypes_different_orderN)"r/   r0   r1   r"  r'  r*  r3  r6  r?  rB  rH   r   r   rC  r   r!   r   r   rE  rJ  rS  rT  Ztimedelta64Z
datetime64ru   r   r   r   r\  r   r   rc  rh  ri  r   r   r   r   r   E  sV   
 
 (
D
r   c               	   C   s   t tjdddddgd} ttjd}| | }t | jtj | j	d}t
|| t
t | |k}W 5 Q R X t d| j| j	d	}t
|| t | jd
| j	d}t
t ||k}W 5 Q R X t d| j| j	d	}t
|| d S )Nr>   r   r{   r3   r   rA   r    Fr]   zM8[ns])r   r   rE   rF   r   r   r   r   r   rB   r8   r9   r^  FutureWarningr^   r+   )r:   r   rc   rd   r   r   r   r   ,test_frame_with_zero_len_series_corner_cases  s     rk  c                  C   sB   t ddgtjd} tddgddgd}| | }| }t|| d S )Nr3   r   rB   r   rz   r{   r   )r   r   r   r   r8   r9   )r:   r   rc   rd   r   r   r   ,test_zero_len_frame_with_series_corner_cases  s
    rm  z(ignore:.*Select only valid:FutureWarningc                  C   sF   dt ddtjgi} t| }|jdd}t dddg}t|| d S )NZOner3   g333333?rz   r   r   )r   r   r   r   sumr8   r   )r   r:   rc   rd   r   r   r   +test_frame_single_columns_object_sum_axis_1  s     ro  c                   @   s  e Zd Zdd Zdd Zejdej	ej
ejejgdd Zejdd	d
gejddd Zejdddddd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ej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"ejddd.dd/d0dd1d2ddd3gd4d5 Z#ejd6d7d8d9gd:e$j%d7d8d9ge$j&d;e'd7d<gd=d> Z(ejd6d7d8gd?e$%d7d8ge'd7d9gd@dA Z)dBdC Z*dDdE Z+dFdG Z,dHdI Z-dJS )KTestFrameArithmeticUnsortedc                 C   sp   t jddddd}ttjt||dgd}|d}|| }|jj	t
jksRt|| }|jj	t
jksltd S )	Nz1/1/2011rM   H
US/Eastern)rR   freqtzrT   r]   zEurope/Moscow)rm   rn   r   r   rE   rF   rs   
tz_convertr^   rt  pytzutcr~   )r   rngr:   Z	df_moscowrc   r   r   r   *test_frame_add_tz_mismatch_converts_to_utc  s    
zFTestFrameArithmeticUnsorted.test_frame_add_tz_mismatch_converts_to_utcc                 C   s   t jdddd}ttjt|d|d}||d d d  }|| }tj|jdd d< t	
|| |d d d }||tjt| }t	
|| d S )	Nz1/1/2000z1/1/2010r3   )rs  r   r   r{   rz   )rm   Zperiod_ranger   r   rE   rF   rs   r   r   r8   r9   ZtakeZpermutation)r   rx  tsrc   rd   Zhalfr   r   r   test_align_frame  s    z,TestFrameArithmeticUnsorted.test_align_framer   c                 C   s   t dddd gddddgdtd}|tj}||d}||dt}d |t|< t	|| |||}|||t}d |t|< t	|| |||d	}t	|| ||d	|}tj	||d
d d S )Nr{         @{   rz   r   r?   )col1Zcol2r    r   F)Zcheck_dtype)
r   r   r  r   r   r)   comZisnar8   r9   )r   r   r:   Zfilledrc   rd   r   r   r   test_operators_none_as_na  s"     

z5TestFrameArithmeticUnsorted.test_operators_none_as_nazop,res)r   F)__ne__Tz ignore:elementwise:FutureWarningc                 C   s*   t ||d}t|  |ks&td S )Nr4   )rt   r,   r   r~   )r   r   r<   r   rc   r   r   r   %test_logical_typeerror_with_non_valid  s    zATestFrameArithmeticUnsorted.test_logical_typeerror_with_non_validr   r   r   r   r\  c                    s(  t jtddddgdddggdd	d
gd}ttddd|dddgd  tj	t
t|d d krnd S tdddgdddg}t
 ||d
dd}t fdd| D  }t|| tddgddg}t
 ||d	dd}t fdd| D   }t|| d S )NabcrG  r   rH  rz   r{   r   firstsecondthirdr  Q      Zvalue1Zvalue2Zvalue3r]   r   r  g      Y@r   )r  r-   c                    s:   g | ]2\}} j d d d d |f d d f |qS r   rq   rW   r<  vr:   idxZopar   r   rQ    s     zETestFrameArithmeticUnsorted.test_binary_ops_align.<locals>.<listcomp>c                    s4   g | ],\}} j d d |f d d f |qS r   r  r  r  r   r   rQ    s     )r   r  rG   r   r   r   r   Z
sort_indexrm   Z
IndexSlicert   ru   r   concatitemsr8   r9   Zreindex_like)r   r   r^   rZ   rc   rd   r   r  r   test_binary_ops_align  s4    
 z1TestFrameArithmeticUnsorted.test_binary_ops_alignc                 C   s2  t ddgddgg}ttjddd|d}td	d
d}| }ddg|j_| }d|j	_
|j|d	d	d}|j|d	d	d}|j|d	d	d}|j|d	d	d}	|j|d	dd}
|j|d	dd}ttjd	d
d	d
gd	d
d	d
ggdd|d}||fD ]}t|| qddg|j_||	|
|fD ]}t|| qd S )Nr3   r   rT   rU   )r{   r?   r   r    rA   rz   r{   rS   Zlvl0Zlvl1)r-   r  )r   r  r   r   r   r   r(   rB   r  r^   namer   r!   r8   r9   )r   rg  r:   sr   s2Zres1r   Zres3Zres4Zres5Zres6r;   r<   r   r   r   &test_binary_ops_align_series_dataframe   s,      zBTestFrameArithmeticUnsorted.test_binary_ops_align_series_dataframec                 C   s   t jdddgdd}|dd d }|dd	d  }td
d	dgi|d}td
d	d	gi|d}td
tjdtjgi|d}t|| | d S )Nz
2011-01-01z
2011-01-02z
2011-01-03UTC)rt  z
Asia/Tokyor{   rr  rz   r3   r   r   )rm   ZDatetimeIndexru  r   r   r   r8   r9   )r   baseZidx1Zidx2r   r   r;   r   r   r    test_add_with_dti_mismatched_tzs?  s    z<TestFrameArithmeticUnsorted.test_add_with_dti_mismatched_tzsc                 C   s  | |jd d d }|d= tj|jd |jd df< || }|d  j}|d d  }t|d  |j|  tj|j|j	| < t|d |j|d j  t
|d  |jd d  stt
|d  st|| }t|j|j || }	t
|d  stt
|	d  s4t|t  }
t
|
j sTtt | }t
|j sttt t  }|jst|j |jd d d d}t|| |d  || }t|d	d
 || }t|d	d
 || }t|dd id
 || }t|d	d
 d S )Nr{   r  r?   r   r3   r   r   rA   r   r    )r   r^   r   r   rq   Zdropnar(   r8   r   isinisnanr   r~   assert_index_equalr   r   r   rB   r9   r   )r   r   r   r   Z
frame_copyrI  Zindexerr;   Z
self_addedZ	added_revZ
plus_emptyZ
empty_plusZempty_emptyreverser   r   r   test_combineFrameI  s@    &

z-TestFrameArithmeticUnsorted.test_combineFramec           
      C   s\  | |jd }|| }| D ] \}}t||| ||   q | }d|d< t|}|| }	| D ] \}}t|	| |||   qjd|	kstt	|	d 
 st|| }t
|j|jkst||d }t|dd id ||d }t|dd id |d| d	 }t|d	d
d	d	dd |d| d }t|dd
dd	dd d S )Nr   rz   r   Zfloat32r   r    Zfloat16r   r   r   )r3   r   r   r  Zint32)r   r^   r  r8   r   Zto_dictr   r~   r   r  r   r   r   r)   r   r   )
r   r   r   r   r  rI  keyr  Zlarger_seriesZlarger_addedr   r   r   test_combine_series  s8      z/TestFrameArithmeticUnsorted.test_combine_seriesc                 C   sx  |d }|j |dd}| D ]`\}}|| }tj|| |dd || j|ksTt|j|jkrp|jdks~tq|jd kstq|d d }|j |dd}t|j|j |d d }	|j |	dd}
t||
 |j |d d dd}t	t
j|j|jd}t|| |d d j |dd}t	t
j|j|jd}t|| |d d	 jg d
}|j|dd}t|t|ksttd S )Nr3   r^   r   F)Zcheck_namesr   r]   rz   rA   )r   r  r8   r   r  r~   r  r^   r9   r   r   r   rB   r   r   rs   )r   Zdatetime_framerz  rI  r  rX   rc   Zsmaller_frameZsmaller_addedZ
smaller_tsZsmaller_added2rd   framer   r   r   test_combine_timeseries  s@        z3TestFrameArithmeticUnsorted.test_combine_timeseriesc                 C   s   |d }t |j|jd  |d }| D ] \}}t |j|| jd  q,t|dd id t d }|jt js|tt	|j
dkstd S )Nr{   r   r    r   )r8   assert_numpy_array_equalr   r  r   r   r^   equalsr~   rs   rB   )r   r   r   rc   r|   r  r   r   r   test_combineFunc  s    
z,TestFrameArithmeticUnsorted.test_combineFuncfuncc              	   C   s   t  }t  }|d}t|jd }|||}t |j||j|j d}	tj	t
t|	d ||| W 5 Q R X |||}
t |
j||j|j ||d}t |j||jd d}	tj	t
|	d |||d d  W 5 Q R X d S )NrT   )rz   rz   rz   zNUnable to coerce to Series/DataFrame, dimension must be <= 2: (30, 4, 1, 1, 1)rC   r   z.Can only compare identically-labeled DataFramer{   )r8   ZmakeTimeDataFramer   r   r   r   r  r   rH   rI   rJ   reescape)r   r   r   r  r   r   r   r   rc   rK   r   result3r   r   r   test_comparisons  s(    


 
z,TestFrameArithmeticUnsorted.test_comparisonsc              	   C   sH   t dd dD }tt|}d}tjt|d ||d W 5 Q R X d S )Nc                 S   s   i | ]}|d dddqS )r4   r5   r6   )rZ   r[   zr   r4  r   r   r   r\     s      zZTestFrameArithmeticUnsorted.test_strings_to_numbers_comparisons_raises.<locals>.<dictcomp>)rT   rU   r|   z;'[<>]=?' not supported between instances of 'str' and 'int'rC   r   )r   rt   ru   rH   rI   ra   )r   Zcompare_operators_no_eq_ner:   r   rK   r   r   r   *test_strings_to_numbers_comparisons_raises  s    
zFTestFrameArithmeticUnsorted.test_strings_to_numbers_comparisons_raisesc              	   C   sr   t  }tj|j|jd df< tjdd |jdk }W 5 Q R X tjdd |dk j}W 5 Q R X t || d S )Nr   r3   ignore)ra  raise)	r8   ZmakeDataFramer   r   rq   r^   Zerrstater   r  )r   Z
missing_dfrd   rc   r   r   r   'test_comparison_protected_from_errstate  s    zCTestFrameArithmeticUnsorted.test_comparison_protected_from_errstatec              	   C   s  t tdd}tddg}tddg}|j}dddg}t|}t ddgddgddgg}||k}t	|| |j
|k}t||j
 d}	d}
d}tjt|	d	 ||k W 5 Q R X tjt|	d	 ||k W 5 Q R X ||k}t	|| |j
|k}t||j
 tjt|
d	 ||k W 5 Q R X tjt|d	 |j
|k W 5 Q R X t ddgddgddgg}||k}t	|| tjt|	d	 ||k W 5 Q R X tjt|	d	 ||k W 5 Q R X ||k}t	|| |j
|k}t||j
 tjt|
d	 ||k W 5 Q R X |j
j|jks$tt tddtd
tdd}|j|_|j|_tjt|	d	 ||k W 5 Q R X tjt|	d	 ||k W 5 Q R X d S )Nr>   r   r{   FTz5Unable to coerce to Series, length must be 2: given 3,Unable to coerce to DataFrame, shape must bez4operands could not be broadcast together with shapesrC   ZABr  r#  )r   r   r   r   r!   Z
atleast_2dr   tupler8   r9   r   r  rH   rI   rJ   r   r~   rG   r^   rB   )r   r:   rU   Zb_rZb_clsttuprd   rc   Zmsg1dZmsg2dZmsg2dbr   r   r   test_boolean_comparison   sf    



  z3TestFrameArithmeticUnsorted.test_boolean_comparisonc                 C   s  t d}ttdt| dt||tdd}d|jd d ddf   }t d}t d}| }|| | j	|d	}||  |7  < |j	|d	}| }|| ||  j	|d	}	||  || 7  < |j	|d	}
t
|| t
||	 t
||
 | }|| | j	|d	}||  |8  < |j	|d	}| }|| ||  j	|d	}	||  || 8  < |j	|d	}
t
|| t
||	 t
||
 d S )
NZabcdefgrM   r   r#  r   rz   ZbedcfZbcdefrA   )rG   r   r   r   rs   r   r   r   r(   r   r8   r9   )r   rB   ZX_origZZblock1subsXZresult1r   r  Zresult4r   r   r   test_inplace_ops_alignmento  s>    z6TestFrameArithmeticUnsorted.test_inplace_ops_alignmentc           	      C   s$  t dddg}ttjjdddddd}| }|}|d7 }t|| t|d | ||ksht	|j
|j
ksxt	| }|}|d7 }t|| t|d | ||kst	|j
|j
kst	| }|}|d	7 }t|| t|d	 | | }|}|d	7 }t|| t|d	 | ||ks2t	|j
|j
ksDt	tjjdddd}t| d
d}| }|}|d  d7  < t| d d
d}t|| t|| |j
|j
kst	| }|}|d  d	7  < t| d	 d
d}t|| t|| |j
|j
ks t	d S )Nrz   r{   r   r   r   rM   rN   r   r   r4   r   r3   )r   r   r   rE   ro   r   r(   r8   r   r~   Z_mgrr9   )	r   Zs_origZdf_origr  r  r:   r   r   rd   r   r   r   test_inplace_ops_identity  sX    z5TestFrameArithmeticUnsorted.test_inplace_ops_identityandr   r   orr   xorc                 C   s   |dkrd S t dddgdddgd}d}|d	kr@d
dd
g|d< | }d| d}d| d}t||| t|||}t|| t|}t||kstd S )Nr   r   r   r   rz   r{   r   rS   )r  r  r  TFrT   Z__ir   )r   r(   rt   r8   r9   r  r~   )r   r   r:   ZoperandZdf_copyZioprd   r   r   r   test_inplace_ops_identity2  s    z6TestFrameArithmeticUnsorted.test_inplace_ops_identity2valrz   r{   r   )rz   r{   r   r    r?   c                 C   s   dddg}dddg}t tjdd||d}tjjj}t |||d	|jd
}t	
|||dd | t dddgdddgdddgd	|jd
}t	
|||dd | d S )Nr3   r   r   r  Yr  r   r]   )r  r  r  r   r^   rz   r{   rB   )r   r   rE   rF   rm   coreopsalign_method_FRAMEr^   r8   r9   )r   r  r^   rB   r:   alignrd   r   r   r   test_alignment_non_pandas  s    



 z5TestFrameArithmeticUnsorted.test_alignment_non_pandasrD  c              	   C   s   dddg}dddg}t tjdd||d}tjjj}d	}tj	t
|d
 |||d W 5 Q R X tj	t
|d
 |||d W 5 Q R X d S )Nr3   r   r   r  r  r  r   r]   z5Unable to coerce to Series, length must be 3: given 2rC   r^   rB   )r   r   rE   rF   rm   r  r  r  rH   rI   rJ   )r   r  r^   rB   r:   r  rK   r   r   r   )test_alignment_non_pandas_length_mismatch  s    


zETestFrameArithmeticUnsorted.test_alignment_non_pandas_length_mismatchc              	   C   sr  dddg}dddg}t tjdd||d}tjjj}td	d
dgdddgdddgg}t	
|||dd	 t ||j|jd t	
|||dd	 t ||j|jd d}td	d
dgdddgg}tjt|d |||d W 5 Q R X tjt|d |||d W 5 Q R X td}td}tjt|d |||d W 5 Q R X tjt|d |||d W 5 Q R X d S )Nr3   r   r   r  r  r  r   r]   rz   r{   r?   r   r>   r   r   r(  r^   rB   r  rC   )r   r   r   zGUnable to coerce to Series/DataFrame, dimension must be <= 2: (3, 3, 3))r   r   rE   rF   rm   r  r  r  r!   r8   r9   r^   rB   rH   rI   rJ   zerosr  r  )r   r^   rB   r:   r  r  rK   r   r   r   'test_alignment_non_pandas_index_columns(  s6    


"
zCTestFrameArithmeticUnsorted.test_alignment_non_pandas_index_columnsc              	   C   sF   t ddgdd gd}|d }td  t||| W 5 Q R X d S )NrK  r   r   )r   r8   r^  rt   r   r   r:   rU   r   r   r   test_no_warningJ  s    z+TestFrameArithmeticUnsorted.test_no_warningc              	   C   sL   t ddgdd gd}|d }tjtdd t|||d W 5 Q R X d S )NrK  r   r   ztakes 2 positional argumentsrC   r   )r   rH   rI   ra   rt   r  r   r   r   test_dunder_methods_binaryP  s    z6TestFrameArithmeticUnsorted.test_dunder_methods_binaryc                 C   sj   t jddddd}t jdtd}t|}| |d< |t}||	  }||	  }t
|| d S )Nr   r   r    rM   )rM   rz   z0.X)r   r   r   r   intr   r0  r)   r   Zmeanr8   r9   )r   r  r  r   r   rc   rd   r   r   r   test_align_int_fill_bugW  s    
z3TestFrameArithmeticUnsorted.test_align_int_fill_bugN).r/   r0   r1   ry  r{  rH   r   r   ru   r   r   r   r\  r  filterwarningsr  r  r  r  r  r  r  r  rj   rk   rg   rf   rh   ri   r  r  r  r  r  r  r  r   r!   r   r   r  r  r  r  r  r  r   r   r   r   rp    sv    


'
=).
	O1:
	
(
"rp  c                  C   sP   t ddddgi} t dddgd}| | }t dtjdtjgi}t|| d S )Nr3   r   rz   r{   r   r   r   r   r   r8   r9   )rw   rx   rc   rd   r   r   r   test_pow_with_realignmentf  s
    r  c                  C   st   t dtjtjtjgi} t ddddgi}t ddddgi}| | }t|| | d |d  }t||d  d S )Nr3   r   r   )r   r   r   r8   r9   r   )rw   rx   rd   rc   r   r   r   test_pow_nan_with_zeroq  s    r  c                  C   s   t tjddddddgd} tdd	d
gdddgd}| d|ddd
 }t || jdd}| d}|| }t	
|| ||d }t	
|| d S )Nr   r   )rM   r   rT   rU   r|   rA   rz   r{   r   r   r   r   ZInt64rl  )r   r   rE   ro   r   Zto_numpyr   rB   r)   r8   r9   )r:   r   rd   Zdf_earc   r   r   r   &test_dataframe_series_extension_dtypes~  s    
r  c                     s   t jddd} t| }| }t j|jddddgf< | }t j|jddgf< | }t j|jdt ddf< | }t j|jdt d	df< ||f||f||ffD ]6\   }t fd
d jD }t	
|| qd S )Nr   i  )r   rM   rz   r   r   r   r{   r?   c                    s   i | ]}| | |  qS r   r   )rW   r<  rw   rx   r   r   r\     s      z6test_dataframe_blockwise_slicelike.<locals>.<dictcomp>)r   rE   ro   r   r(   r   r   r   rB   r8   r9   )r   r   r   r   Zdf4Zdf5r<   rd   r   r  r   "test_dataframe_blockwise_slicelike  s    r  zdf, col_dtyper   r   g      @r|  abrA   r   rU   r   c                 C   sT   t dtjgdtjggtdd}|d|i}| tdgtdd }t|| d S )	NrK  r   r  rA   rU   g      rT   r   )r   r   r   rG   r)   r   r8   r9   )r:   Z	col_dtyperd   rc   r   r   r   /test_dataframe_operation_with_non_numeric_types  s    	 r  c                  C   s`   t dggdgd} t dddggdddgd}| | }t tjddggdddgd}t|| d S )Nr   r  )r   rB   r  rA   r  )r   r   rc   rd   r   r   r   "test_arith_reindex_with_duplicates  s
    r  to_addrz   c              	   C   sr   t ddgddgd}dt| d  d}tjt|d ||   W 5 Q R X tjt|d | |  W 5 Q R X d S )Nrz   r{   rY   zUnable to coerce list of r   z to Series/DataFramerC   )r   r*   rH   rI   rJ   )r  r:   rK   r   r   r   "test_arith_list_of_arraylike_raise  s    r  c                  C   sX   t ddddgi} | d }|j}|d7 }|j|ks6tt ddddgi}t| | d S )Nr3   rz   r{   r   r?   )r   Z_valuesr~   r8   r9   )r:   r  valsrd   r   r   r   %test_inplace_arithmetic_series_update  s    r  c                  C   s   t dggdgtjdgdggddgdd} t dggdgtdgddd}t dggdgtjdgdggddgdd}| | }t|| dS )	zP
    Regression test for: https://github.com/pandas-dev/pandas/issues/33765
    rz   rT   r   rU   r  r]   r  N)r   r   r  r   r8   r9   )r   r   rd   rc   r   r   r   !test_arithemetic_multiindex_align  s    r  c                  C   sF   t dtdtd} | d }t tdtdtd}t|| d S )NTr  Zcdr   r   )r   rG   r   r   r8   r9   )r:   rc   rd   r   r   r   test_bool_frame_mult_float  s    r  c                 C   sV   t ddd g| d}t dddg| d}tddd g| d}| |  }t|| d S )Nrz   r{   r    r   r   )r   r   Zto_framer8   r9   )Zany_int_ea_dtypeZseries1Zseries2rd   rc   r   r   r   test_frame_sub_nullable_int  s
    r  c                     s   G  fdddt G fdddt  ddddgd	d
dgd} | d } ddd	dgdddgd}t|| | |  }t|| d S )Nc                       s,   e Zd ZefddZe fddZdS )zEtest_frame_op_subclass_nonclass_constructor.<locals>.SubclassedSeriesc                    s    S r   r   r"   SubclassedSeriesr   r   _constructor  s    zRtest_frame_op_subclass_nonclass_constructor.<locals>.SubclassedSeries._constructorc                    s    S r   r   r"   )SubclassedDataFramer   r   _constructor_expanddim   s    z\test_frame_op_subclass_nonclass_constructor.<locals>.SubclassedSeries._constructor_expanddimN)r/   r0   r1   propertyr  r  r   r  r  r   r   r    s   r  c                       s>   e Zd ZdgZ fddZedd ZefddZ  ZS )zHtest_frame_op_subclass_nonclass_constructor.<locals>.SubclassedDataFramemy_extra_datac                    s   || _ t j|| d S r   )r  superr   )r   r  argskwargs	__class__r   r   r     s    zQtest_frame_op_subclass_nonclass_constructor.<locals>.SubclassedDataFrame.__init__c                 S   s   t t| | jS r   )	functoolspartialr*   r  r"   r   r   r   r    s    zUtest_frame_op_subclass_nonclass_constructor.<locals>.SubclassedDataFrame._constructorc                    s    S r   r   r"   r  r   r   _constructor_sliced  s    z\test_frame_op_subclass_nonclass_constructor.<locals>.SubclassedDataFrame._constructor_sliced)	r/   r0   r1   	_metadatar   r  r  r  __classcell__r   r  r  r   r    s   
r  Z	some_datarz   r{   r   r?   r   r>   r   r   rM      r!  )Zsdfrc   rd   r   r  r   +test_frame_op_subclass_nonclass_constructor  s    	r  c                  C   sj   t dd} t| jdddgi}t| jdddgi}|| j || j k}tdddg| jd}t|| d S )NColsz	col1 col2rz   r{   r   Tr  )r   r   r~  r   r8   r   )r  Zq1Zq2rc   rd   r   r   r   test_enum_column_equality  s    
r  )Bcollectionsr   r   enumr   r  ru   r  Znumpyr   rH   rv  Zpandas.util._test_decoratorsutilZ_test_decoratorsr.  Zpandasrm   r   r   r   r   Zpandas._testingZ_testingr8   Zpandas.core.commonr  commonr  Zpandas.core.computationr	   r   Z#pandas.core.computation.expressionsr
   r   Zpandas.tests.frame.commonr   r   Zfixturer   r   r2   r   r   r   rk  rm  r   r  ro  rp  r  r  r  r  r   rG   r  r  r  r  r  r  r  r  r  r   r   r   r   <module>   s      
 U D  g  D


     /
	.
	$