U
    *if0                    @   s4  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-.ddd  Z/G d!d" d"Z0d#d$ Z1d%d& Z2d'd( Z3d)d* Z4ej-5d+ed,d-gd.d/gge6d0d1d2fed,d3gd.d3gge6d0d1d4fgd5d6 Z7d7d8 Z8ej-5d9ed:d:gged:d:ged:d:gggd;d< Z9d=d> Z:d?d@ Z;dAdB Z<dCdD Z=dS )E    )deque)datetimeN)	DataFrameIndex
MultiIndexSeries)expressions)_MIN_ELEMENTSNUMEXPR_INSTALLED)_check_mixed_float_check_mixed_intTmodulei@B Znumexprpython)Zautousescopeparamsidsc                 c   s    t j}| jt _| jV  |t _d S N)exprr	   param)requestr	    r   U/home/mars/bis/venv/lib/python3.8/site-packages/pandas/tests/frame/test_arithmetic.pyswitch_numexpr_min_elements!   s    r   c                   @   sT   e Zd Z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 )DummyElementc                 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__0   s    zDummyElement.__array__)returnc                 C   s   d| j  d| j dS )NzDummyElement(z, ))r   r   r!   r   r   r   __str__3   s    zDummyElement.__str__c                 C   s   t | S r   )strr!   r   r   r   __repr__6   s    zDummyElement.__repr__Fc                 C   s
   || _ | S r   r   )r   r   copyr   r   r   astype9   s    zDummyElement.astypec                 C   s   t | | j||S r   )typer   view)r   r   r   r   r   r+   =   s    zDummyElement.viewNc                 C   s
   t | jS r   )boolr   )r   axisr   r   r   any@   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                   @   sT  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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_dtypeK   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      Z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_listZ   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>indexrA   c                    s   i | ]}| | | kqS r   r   rU   rX   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.|rB   )	r   rA   r]   r8   r9   joinrG   rH   	TypeError)r   argZarg2resultexpectedZmsgsrJ   r   rX   r   test_comparison_invalida   s:    0	
z,TestFrameComparisons.test_comparison_invalidc           
   
   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< d
dddddd}| D ]:\}}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rd||td}|td|}t|| qd}	tjt|	d ||td W 5 Q R X tjt|	d |td| W 5 Q R X qd S )NrO   rL   rP   Z20010102i ʚ;rM   )Zdates1dates2ZintcolZfloatcolZ	stringcolg      ?re   ltgtlegeeqne)rg   rf   ri   rh   rj   rk   )rj   rk   Z20010109zL'(<|>)=?' not supported between instances of 'numpy.ndarray' and 'Timestamp'rB   ZnatzJ'(<|>)=?' not supported between instances of 'numpy.ndarray' and 'NaTType')r   pd
date_ranger   rD   randintrE   rF   r8   ZrandsNaTlocrandlenitemsgetattroperator	Timestampr9   rG   rH   r`   )
r   r:   opsleftrightZleft_fZright_frc   rb   rJ   r   r   r   test_timestamp_compare   sB    
	 


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      rS   rT   cd)r   r.   AssertionErrorall)r   r:   otherrb   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:   rc   rb   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   rD   rE   range__eq__r.   r   r   r:   rb   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 )Nr{   r4   rR   r|   r5   r   )r   rS   r8   r9   rp   rT   )r   r:   Zmask_aZmask_br   r   r   test_df_string_comparison	  s    
"$
"z.TestFrameComparisons.test_df_string_comparisonN)r/   r0   r1   r=   rK   rG   markparametrizer   rD   rn   rl   rm   rd   rz   r   r   r   r   r   r   r   r   r2   H   sP   -
*0r2   c                	   @   sx   e Z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 )TestFrameFlexComparisonsc              
   C   s  t jdd}t jdd}t|}t|}t |jd }dd }||j sXt	|
|j rlt	dD ]}t||}tt|}	t|||	|| |||	|| t||j|	||j t|d|	|d d}
t|t j|	|t j tjt|
d	 || W 5 Q R X qpd
d }tt jd}tt jd}|||| |||j|j t j|jd< ||}|jd rt	|
|}|jd st	||}|jd rt	||}|jd rt	||}|jd rt	||}|jd r
t	d S )N   r   )r{   r   c                 S   sJ   |j dd dd f  }| |}|||j|j|jd}t|| d S )Nr   r{   r\   )rp   r(   reindexr]   rA   r8   r9   )methopr:   r   Zpart_orsZxpr   r   r   _check_unaligned_frame  s    zMTestFrameFlexComparisons.test_bool_flex_frame.<locals>._check_unaligned_frame)rj   rk   rg   rf   ri   rh   r   $Unable to coerce to Series/DataFramerB   c                 S   s  | 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 d S )Nr   r-   )rj   rk   r8   r9   r   TrF   rg   rh   ri   rf   )r:   idx_ser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_seq8  s6    





z@TestFrameFlexComparisons.test_bool_flex_frame.<locals>._test_seqr   r   )r   rD   rE   r   onesshaperj   valuesr   r   rk   r.   rt   ru   r8   r9   nanrG   rH   rI   r   rp   rg   rf   ri   rh   )r   dataZ
other_datar:   r   ndim_5r   r   forJ   r   r   r   r   r   r   r   test_bool_flex_frame  sJ    

 





z-TestFrameFlexComparisons.test_bool_flex_framec           	   	   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 )
Nr{   r>   y               @   rS   r^   z9'>' not supported between instances of '.*' and 'complex'z unorderable types: .*complex\(\)rB   )r   r    r   r   r_   rG   rH   r`   rg   r   rk   r   r   )	r   arrZarr2r:   df2rJ   r   Zarr3df3r   r   r   "test_bool_flex_frame_complex_dtypen  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 )NrW   r4   r5   FT)r   r   r   r   nowrk   r8   r9   )r   df1r   rb   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   rl   ro   ilocitemr   rj   rk   r   r   r   r   test_flex_comparison_nat  s    

z1TestFrameFlexComparisons.test_flex_comparison_natopnamerj   rk   rg   rf   ri   rh   c                 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 )	Nr{   r|   r         ?       @      @rX   r]   )
r   rt   dtypesvalue_countsr8   assert_series_equalr   r   r   r,   )r   r   r:   constrb   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 )
Nr{   r|   r   r   r   r   rX   r   r   )r   r   rt   r   r   r8   r   r   r   r   r,   )r   r   r:   r   emptyrb   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 )Nr{   r|   r   r3   r   r   r   Fr3   r   r   )rl   ZIntervalIndexZfrom_breaksr   r   rj   r8   r9   )r   iir:   serr<   rc   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   r   r   r   r   rG   r   r   r   r   r   r   r   r   r   r     s   X'

	r   c                   @   s   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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"gd#d$ Zejd%d&d'gd(d) Zd'S )*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   rU   r:   r   r   r   r[     s      z?TestFrameFlexArithmetic.test_floordiv_axis0.<locals>.<dictcomp>)	r   r   r   r   floordivrA   r8   r9   r   )r   r   rb   rc   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   r{   r   r   r   r   c                    s   i | ]}| | qS r   r   rU   r:   r   r   r   r   r[     s      zLTestFrameFlexArithmetic.test_floordiv_axis0_numexpr_path.<locals>.<dictcomp>)rt   ru   r   r   r	   r   r   rA   r8   r9   r   )r   r   r   rb   rc   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-01rL   rP   1r   r{   r   r   )rl   rm   Ztimedelta_ranger   r   addr8   r9   )r   dtiZtdiZtserr:   rb   rc   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   rP   z1 Dayro   z2 Daystimedelta64[ns]r   r   r{   )days
fill_valuez
2016-01-02z
2016-01-03z
2016-01-05zdatetime64[ns]r|   )	rl   rm   r   r   	TimedeltaZto_timedelta64r   r8   r9   )r   r   r   r:   r   fillrb   rc   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 )N__r__)
startswithrt   ru   replacerX   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   rb   rc   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   rb   rc   r   r   r   r   test_arith_flex_frame_mixed,  s&    	
z3TestFrameFlexArithmetic.test_arith_flex_frame_mixedc              
   C   sR   |}t ddD ]>}td| }d}tjt|d t||| W 5 Q R X qd S )Nr   r>   )r{   r   rB   )r   r   r   rG   rH   rI   rt   )r   r   r   r   dimr   rJ   r   r   r   test_arith_flex_frame_raiseU  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 )	Nr{   r   r   rB   r   r   r]   r-   r   )	r   r8   r9   r   r   rG   rH   NotImplementedErrorr   )r   r   Z	const_addrb   r   r   r   test_arith_flex_frame_corner`  s    
z4TestFrameFlexArithmetic.test_arith_flex_frame_cornerc           
      C   sn  |}| d}|d }ddddg}|D ]L}t||}tt|}t||||| t||dd||j|j q&t|j|d d||  t||||  t|j|dd|j| j tt	
d	d
dd}tt	jt	jgddgddgg}|j|d dd}	t|	| tt	
d	d
dd}tt	jt	jgddgddgg}|j|d dd}	t|	| d S )NrS   twor   submulmodr   r   r>   r   int64r   r         ?g      ?r]   float64)xsrt   ru   r8   r9   r   r   divr   r   r   r   r   inf)
r   simple_framer:   rowrW   rw   r   r   rc   rb   r   r   r   test_arith_flex_seriesr  s(    


 z.TestFrameFlexArithmetic.test_arith_flex_seriesc              	   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   r@   r{   r|   r   r?   r   rB   Er   r   )r   objectr   rG   rH   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   r{   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 )Nr{   r|   r   r?   r   r   r   )r   r   r8   r9   )r   r   r   rc   rb   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 )NrL   r   r3   )r   r   r   rD   rq   rt   rA   r8   r9   r&   r   )r   r   r:   rc   rb   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   r{   r|   r   r   ZL1))r3   r   )r3   DZL2)r  )r   rA   Z	set_namesr   r8   r9   )r   r  r   r   rb   rc   r   r   r   test_broadcast_multiindex  s    z1TestFrameFlexArithmetic.test_broadcast_multiindex)r/   r0   r1   r   rG   r   Zskipifr
   r   r   r   r   r   r   r   r   r   r  r  r  r  r
  r   r   r   r   r     s&   
(	
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	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,d-d. Zd/S )0TestFrameArithmeticc                 C   sJ   t ddgdd}tddgddgg}|| }t||d}t|| d S )	Nro   r   r   r{   r|   r   r?   r   r   r   r8   r9   )r   r   r:   rb   rc   r   r   r   test_td64_op_nat_casting  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   rA   r]   r{   r?   r   rA   r]   r   r   r   r   r   r   r   rA   r]   r   r8   r9   )r   r   r:   rowlikerc   rb   r   r   r   'test_df_add_2d_array_rowlike_broadcasts  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  r{   r   r   	   rL   r  r  )r   r   r:   collikerc   rb   r   r   r   'test_df_add_2d_array_collike_broadcasts  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  r{   )td&mark_array_manager_not_yet_implementedr   r   r   r   r   r   rt   rp   squeezerA   r]   r8   r9   )r   r   r   using_array_managerr   r   r:   r  exvalsrc   rb   r   r   r   )test_df_arith_2d_array_rowlike_broadcasts   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  r{   r   )TFc                 s   s   | ]}|j V  qd S r   )r   rV   rY   r   r   r   	<genexpr>4  s     zPTestFrameArithmetic.test_df_arith_2d_array_collike_broadcasts.<locals>.<genexpr>r  )r  r  r   r   r   r   r   r   rt   r  Zcommon_typer   rA   r]   r8   r9   )r   r   r   r  r   r   r:   r  r  r   rc   rb   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 )NFTr{   c                 S   s   | j S r   kindrY   r   r   r   <lambda>C      z:TestFrameArithmetic.test_df_bool_mul_int.<locals>.<lambda>ic                 S   s   | j S r   r"  r$  r   r   r   r%  G  r&  )r   r   applyr   r   )r   r:   rb   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 )NrS   rT   r}   r{   r|   r   r   ZaaZbbccr?   r>   r   r8   r9   )r   rx   rb   rc   r   r   r   test_arith_mixedJ  s    z$TestFrameArithmetic.test_arith_mixedc                 C   s   t ddgddgd}dd }||tj ||tj ||tj ||tj ||tj ||tj ||dd	  ||d
d	  ||dd	  ||dd	  ||dd	  ||dd	  ||dd	  ||dd	  ||dd	  ||dd	  d S )Ng?gffffff
@g      @g333333r   c                 S   sD   || d}| j jstd|j D ]}t|| || | d q d S )Nr{   z*Only unique columns supported by this test)rA   Z	is_uniquerI   r8   r   )r:   r   rb   rW   r   r   r   _test_opU  s
    

z@TestFrameArithmetic.test_arith_getitem_commute.<locals>._test_opc                 S   s   ||  S r   r   rX   r   r   r   r%  e  r&  z@TestFrameArithmetic.test_arith_getitem_commute.<locals>.<lambda>c                 S   s   ||  S r   r   rX   r   r   r   r%  f  r&  c                 S   s   ||  S r   r   rX   r   r   r   r%  g  r&  c                 S   s   ||  S r   r   rX   r   r   r   r%  h  r&  c                 S   s   ||  S r   r   rX   r   r   r   r%  i  r&  c                 S   s   | | S r   r   rX   r   r   r   r%  k  r&  c                 S   s   | | S r   r   rX   r   r   r   r%  l  r&  c                 S   s   | | S r   r   rX   r   r   r   r%  m  r&  c                 S   s   | | S r   r   rX   r   r   r   r%  n  r&  c                 S   s   | | S r   r   rX   r   r   r   r%  o  r&  )r   ru   r   r   r   truedivr   r   )r   r:   r.  r   r   r   test_arith_getitem_commuteR  s$    	z.TestFrameArithmetic.test_arith_getitem_commuter   r{   r|   r{   r|   r   c                 C   sD   t ddgddgd}t ddgddgd}|| }t|| d S )Nr{   r   r|   r   r,  )r   r   r:   rc   rb   r   r   r   &test_arith_alignment_non_pandas_objectq  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 )Nr{   rL   f8r   r   oner   threerS   rT   r}   r  r\   r   r   r]   )r   r   r   r   r   r   r]   rA   r8   r9   r   r   rF   rD   rq   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endr{   r|   r@   rL   c                    s   g | ]}t | qS r   )rt   )rV   nnumr   r   r   
<listcomp>  s     zVTestFrameArithmetic.test_operations_with_interval_categories_index.<locals>.<listcomp>)rl   ZCategoricalIndexZinterval_ranger   rt   r8   r9   )r   r   indr   r:   rb   rc   r   r<  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   r@   r   )r   rl   rv   r   r   r   r8   r9   )r   r:   r   rb   rc   r   r   r   test_frame_with_frame_reindex  s    
 z1TestFrameArithmetic.test_frame_with_frame_reindexzvalue, dtype)r{   i8)r   r3  )            r3  )y              ?
complex128)rC  rD  )Tr,      ns<m8[ns]<M8[ns]r   c                 C   s   | j S r   )r/   r$  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   rH  rG  rD  z3ufunc 'remainder' not supported for the input typesz-numpy boolean subtract, the `-` operator, is zcannot perform __z7__ with this index type: (DatetimeArray|TimedeltaArray)rB   r   z+operator '.*' not implemented for .* dtypes)ru   r/  r   r   r   r   r   r   r   r   r   UserWarningr/   rG   rH   r`   r8   assert_produces_warningr   r   r   r   r   )r   r   r   r   r   skipelemr:   invalidwarnrJ   rb   rc   r   r   r   test_binop_other  sd    

"z$TestFrameArithmetic.test_binop_otherN) r/   r0   r1   r  r  r  r  r!  r*  r-  r0  rG   r   r   r   r    r   r   r2  r7  r@  rA  Ztimedelta64Z
datetime64ru   r   r   r   r/  r   r   rO  r   r   r   r   r    sP   
  (
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   r@   r   Fr\   zM8[ns])r   r   rD   rE   r   r   r   r   r   rA   r8   r9   rJ  FutureWarningr]   r+   )r:   r   rb   rc   r   r   r   r   ,test_frame_with_zero_len_series_corner_cases  s     rQ  c                  C   sB   t ddgtjd} tddgddgd}| | }| }t|| d S )Nr3   r   rA   r   r{   r|   r   )r   r   r   r   r8   r9   )r:   r   rb   rc   r   r   r   ,test_zero_len_frame_with_series_corner_cases*  s
    rS  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?r{   r   r   )r   r   r   r   sumr8   r   )r   r:   rb   rc   r   r   r   +test_frame_single_columns_object_sum_axis_14  s     rU  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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ejdd&d'd(d)d*d+d,d-d.d/d0gd1d2 Zd3d4 Zd5d6 Zd7d8 Zd9d: Z d;S )<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/2011rL   H
US/Eastern)rQ   freqtzrS   r\   zEurope/Moscow)rl   rm   r   r   rD   rE   rr   
tz_convertr]   rZ  pytzutcr   )r   rngr:   Z	df_moscowrb   r   r   r   *test_frame_add_tz_mismatch_converts_to_utcG  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   )rY  r   r   r|   r{   )rl   Zperiod_ranger   r   rD   rE   rr   r   r   r8   r9   ZtakeZpermutation)r   r^  tsrb   rc   Zhalfr   r   r   test_align_frameR  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|         @{   r{   r   r?   )Zcol1Zcol2r   r   F)Zcheck_dtype)
r   r   r  r   r   r)   comZisnar8   r9   )r   r   r:   Zfilledrb   rc   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   rb   r   r   r   %test_logical_typeerror_with_non_validz  s    zATestFrameArithmeticUnsorted.test_logical_typeerror_with_non_validc                    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	dD ]}t
t|d d krtqZt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|| qZt 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|| qd$d%g|j_||||fD ]}t|| qHd S )'Nabcr4  r   r5  r{   r|   r   firstsecondthirdnamesQ      Zvalue1Zvalue2Zvalue3r\   )r   r   r   r   r/  r   g      $@g      Y@r   )r  r-   c                    s:   g | ]2\}} j d d d d |f d d f |qS r   rp   rV   r'  vr:   idxopar   r   r>    s     zETestFrameArithmeticUnsorted.test_binary_ops_align.<locals>.<listcomp>c                    s4   g | ],\}} j d d |f d d f |qS r   rp  rq  rs  r   r   r>    s     r3   r   rS   rT   )r|   r?   r   r   r@   rR   Zlvl0Zlvl1)r-   r  )r   from_productrF   r   r   r   r   Z
sort_indexrl   Z
IndexSlicert   ru   r   concatrs   r8   r9   Zreindex_liker   r(   rA   rm  r]   namer   r    )r   r]   r   rY   rb   rc   Zmidxsr   s2Zres1r   Zres3Zres4Zres5Zres6r;   r<   r   rs  r   test_binary_ops_align  sb    
   z1TestFrameArithmeticUnsorted.test_binary_ops_alignc                 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)rZ  z
Asia/Tokyor|   rX  r{   r3   r   r   )rl   ZDatetimeIndexr[  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|d d d< || }|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  s,t|t  }
t
|
j sLtt | }t
|j slt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@   r   r   )r   r]   r   r   Zdropnar(   r8   r   rp   isinisnanr   r   assert_index_equalr   r   r   rA   r9   r   )r   r   r   r   Z
frame_copyr6  Zindexerr;   Z
self_addedZ	added_revZ
plus_emptyZ
empty_plusZempty_emptyreverser   r   r   test_combineFrame  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   r{   r   Zfloat32r   r   Zfloat16r   r   r   )r3   r   r   r	  Zint32)r   r]   rs   r8   r   to_dictr   r   r   r  r   r   r   r)   r   r   )
r   r   r   r   seriesr6  keyry  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\   r{   r@   )r   rs   r8   r   rx  r   r  r]   r9   r   r   r   rA   r   r   rr   )r   Zdatetime_framer`  r6  r  rW   rb   Zsmaller_frameZsmaller_addedZ
smaller_tsZsmaller_added2rc   framer   r   r   test_combine_timeseries7  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   rs   r   r   r]   equalsr   rr   rA   )r   r   r   rb   r}   ry  r   r   r   test_combineFunce  s    
z,TestFrameArithmeticUnsorted.test_combineFuncc                    s   t   t  dt jd  fdd}|tj |tj |tj	 |tj
 |tj |tj d S )NrS   )r{   r{   r{   c              	      s   |  }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 )NzNUnable to coerce to Series/DataFrame, dimension must be <= 2: (30, 4, 1, 1, 1)rB   r   z.Can only compare identically-labeled DataFramer|   )r8   r  r   rG   rH   rI   reescape)funcrb   rJ   r   result3r   r   r   r   r   r   r   r   	test_compz  s     

 
z?TestFrameArithmeticUnsorted.test_comparisons.<locals>.test_comp)r8   ZmakeTimeDataFramer   r   r   r   ru   rj   rk   rf   rg   ri   rh   )r   r   r   r  r   r  r   test_comparisonss  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   )rY   rZ   zr   r  r   r   r   r[     s      zZTestFrameArithmeticUnsorted.test_strings_to_numbers_comparisons_raises.<locals>.<dictcomp>)rS   rT   r}   z;'[<>]=?' not supported between instances of 'str' and 'int'rB   r   )r   rt   ru   rG   rH   r`   )r   Zcompare_operators_no_eq_ner:   r   rJ   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)rM  raise)	r8   ZmakeDataFramer   r   rp   r]   Zerrstater   r  )r   Z
missing_dfrc   rb   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 shapesrB   ZABrh  r  )r   r   r   r   r    Z
atleast_2dr   tupler8   r9   r   r  rG   rH   rI   r   r   rF   r]   rA   )r   r:   rT   Zb_rZb_clsttuprc   rb   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abcdefgrL   r   r  r   r{   ZbedcfZbcdefr@   )rF   r   r   r   rr   r   r   r   r(   r   r8   r9   )r   rA   ZX_origZZblock1subsXZresult1r   r  Zresult4r   r   r   test_inplace_ops_alignment  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 )Nr{   r|   r   r   r   rL   rM   r   r   r4   r   r3   )r   r   r   rD   rn   r   r(   r8   r   r   Z_mgrr9   )	r   Zs_origZdf_origry  rz  r:   r   r   rc   r   r   r   test_inplace_ops_identity,  sX    z5TestFrameArithmeticUnsorted.test_inplace_ops_identityr   andr   r   r   r   orr   r   r/  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   r{   r|   r   rR   )r  r  r  TFrS   Z__ir   )r   r(   rt   r8   r9   idr   )r   r   r:   operandZdf_copyZioprc   r   r   r   test_inplace_ops_identity2f  s    z6TestFrameArithmeticUnsorted.test_inplace_ops_identity2c              
   C   s  dddg}dddg}t tjdd||d}tjjj}d	d
dgdtjd	d
dgtj	dt
d	dfD ]r}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	 | q`d}d	d
gdtd	d
gt
d	dfD ]P}tjt|d |||d W 5 Q R X tjt|d |||d W 5 Q R X qt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  Yr  r   r\   r{   r|   )r{   r|   r   r   r?   )r  r  r  r   r]   rA   z5Unable to coerce to Series, length must be 3: given 2r1  rB   r   r>   r   r   r  r  )r   r   r   zGUnable to coerce to Series/DataFrame, dimension must be <= 2: (3, 3, 3))r   r   rD   rE   rl   corerw   Zalign_method_FRAMEr    r   r   r]   r8   r9   rG   rH   rI   rA   Zzerosr  r  )r   r]   rA   r:   alignvalrc   rJ   r   r   r   test_alignment_non_pandas  sZ    


 $"
z5TestFrameArithmeticUnsorted.test_alignment_non_pandasc              	   C   sF   t ddgdd gd}|d }td  t||| W 5 Q R X d S )Nr8  r   r   )r   r8   rJ  rt   r   r   r:   rT   r   r   r   test_no_warning  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 )Nr8  r   r   ztakes 2 positional argumentsrB   r   )r   rG   rH   r`   rt   r  r   r   r   test_dunder_methods_binary  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   rL   )rL   r{   z0.X)r   r   r   r   intr   r  r)   r  Zmeanr8   r9   )r   r  r  r   r   rb   rc   r   r   r   test_align_int_fill_bug  s    
z3TestFrameArithmeticUnsorted.test_align_int_fill_bugN)!r/   r0   r1   r_  ra  rG   r   r   ru   r   r   r   r/  re  filterwarningsrg  r{  r~  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r   r   r   r   rV  F  sT    

F
<).%	O1:
;rV  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   r{   r|   r   r   r   r   r   r8   r9   )rx   ry   rb   rc   r   r   r   test_pow_with_realignment  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   )rx   ry   rc   rb   r   r   r   test_pow_nan_with_zero  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   )rL   r   rS   rT   r}   r@   r{   r|   r   r   r   r   ZInt64rR  )r   r   rD   rn   r   Zto_numpyr   rA   r)   r8   r9   )r:   r   rc   Zdf_earb   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   rL   r{   r   r   r   r|   r?   c                    s   i | ]}| | |  qS r   r   )rV   r'  rx   ry   r   r   r[     s      z6test_dataframe_blockwise_slicelike.<locals>.<dictcomp>)r   rD   rn   r   r(   r   r   r   rA   r8   r9   )r   r   r   r   Zdf4Zdf5r<   rc   r   r  r   "test_dataframe_blockwise_slicelike  s    r  zdf, col_dtyper   r   g      @rb  abr@   r   rT   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 )	Nr8  r   r  r@   rT   g      rS   r   )r   r   r   rF   r)   r   r8   r9   )r:   Z	col_dtyperc   rb   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   rj  )r   rA   ri  r@   r  )r   r   rb   rc   r   r   r   "test_arith_reindex_with_duplicates0  s
    r  to_addr{   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 )Nr{   r|   rX   zUnable to coerce list of r   z to Series/DataFramerB   )r   r*   rG   rH   rI   )r  r:   rJ   r   r   r   "test_arith_list_of_arraylike_raise9  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   r{   r|   r   r?   )r   Z_valuesr   r8   r9   )r:   r  valsrc   r   r   r   %test_inplace_arithmetic_series_updateE  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
    r{   rS   r   rT   rl  r\   )rx  N)r   r   rv  r   r8   r9   )r   r   rc   rb   r   r   r   !test_arithemetic_multiindex_alignR  s    r  c                  C   sF   t dtdtd} | d }t tdtdtd}t|| d S )NTr  cdr   r   )r   rF   r   r   r8   r9   )r:   rb   rc   r   r   r   test_bool_frame_mult_floate  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   _constructorq  s    zRtest_frame_op_subclass_nonclass_constructor.<locals>.SubclassedSeries._constructorc                    s    S r   r   r!   )SubclassedDataFramer   r   _constructor_expanddimu  s    z\test_frame_op_subclass_nonclass_constructor.<locals>.SubclassedSeries._constructor_expanddimN)r/   r0   r1   propertyr  r  r   r  r  r   r   r  p  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  y  s   
r  Z	some_datar{   r|   r   r?   r   r>   r   r   rL      r  )Zsdfrb   rc   r   r  r   +test_frame_op_subclass_nonclass_constructorm  s    	r  )>collectionsr   r   r  ru   r  numpyr   rG   r\  Zpandas.util._test_decoratorsutilZ_test_decoratorsr  Zpandasrl   r   r   r   r   Zpandas._testingZ_testingr8   Zpandas.core.commonr  commonrd  Zpandas.core.computationr   r   Z#pandas.core.computation.expressionsr	   r
   Zpandas.tests.frame.commonr   r   Zfixturer   r   r2   r   r   r  rQ  rS  r   r  rU  rV  r  r  r  r  r   rF   r  r  r  r  r  r  r  r   r   r   r   <module>   sx      
 M B w  H

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