a
    <b<                    @   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autouseZscopeparamsidsc                 c   s    t j}| jt _| jV  |t _d S N)exprr	   param)requestr	    r   r/Users/vegardjervell/Documents/master/model/venv/lib/python3.9/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   s^   t dg di}t dg di}|dk}t|| |d d|d< |dk}t|| d S )NA)foobarbaz)TFFr3   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   sX   t tjddtdd}d}tjt|d |dv  W d    n1 sJ0    Y  d S )N      ABCDcolumnsz+The truth value of a DataFrame is ambiguousmatchr   )r   r   randomrandnlistpytestraises
ValueError)r   r9   msgr   r   r   test_frame_in_listZ   s    z'TestFrameComparisons.test_frame_in_listz	arg, arg2
   size20010101periodsabc                    sr  t | t | k}t  fdd jD  j jd}t||  k}t  fdd jD  j jd}t|| g d}d|}tjt|d  k W d    n1 s0    Y  tjt|d  k W d    n1 s0    Y  tjt|d  k  W d    n1 s,0    Y  tjt|d  k W d    n1 sd0    Y  d S )Nc                    s   i | ]}| | | kqS r   r   .0colxyr   r   
<dictcomp>       z@TestFrameComparisons.test_comparison_invalid.<locals>.<dictcomp>indexrA   c                    s   i | ]}| | | kqS r   r   rU   rX   r   r   r[      r\   )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^   r7   r8   joinrG   rH   	TypeError)r   argZarg2resultexpectedZmsgsrJ   r   rX   r   test_comparison_invalida   s4    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v r||td}|td|}t|| nd}	tjt|	d  ||td W d    n1 s0    Y  tjt|	d  |td| W d    n1 sN0    Y  |dv r||td}|td|}t|| qd}	tjt|	d  ||td W d    n1 s0    Y  tjt|	d  |td| W d    q1 s
0    Y  qd S )NrO   rL   rP   Z20010102i ʚ;rM   )Zdates1dates2ZintcolZfloatcolZ	stringcolg      ?rf   ltgtlegeeqne)rh   rg   rj   ri   rk   rl   )rk   rl   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   r7   ZrandsNaTlocrandlenitemsgetattroperator	Timestampr8   rG   rH   ra   )
r   r9   opsleftrightZleft_fZright_frd   rc   rJ   r   r   r   test_timestamp_compare   sB    
	 

00
0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@J ||k}|  sXJ d S )Nz
1989-08-01      rS   rT   cd)r   r-   all)r   r9   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reshaper7   r8   )r   r9   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g dd}|d }|  r:J d S )N   r   r2   BCr]   )r   r   rD   rE   range__eq__r-   r   r9   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 )Nr|   r3   rR   r}   r4   r   )r   rS   r7   r8   rq   rT   )r   r9   Zmask_aZmask_br   r   r   test_df_string_comparison	  s    
"$
"z.TestFrameComparisons.test_df_string_comparisonN)r.   r/   r0   r<   rK   rG   markparametrizer   rD   ro   rm   rn   re   r{   r   r   r   r   r   r   r   r   r1   H   sP   -
*0r1   c                   @   sh   e Zd Zdd Zdd Zdd Zdd Zej	d	g d
dd Z
ej	d	g d
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 sXJ |	|j
 rlJ dD ]}t||}tt|}	t|||	|| |||	|| t||j|	||j t|d|	|d d}
t|t j|	|t j tjt|
d	 || W d    qp1 s(0    Y  qpd
d }tt jd}tt jd}|||| |||j|j t j|jd< ||}|jd rJ |	|}|jd sJ ||}|jd rJ ||}|jd rJ ||}|jd rJ ||}|jd r J 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]   )rq   r'   reindexr^   rA   r7   r8   )methopr9   r   Zpart_orsZxpr   r   r   _check_unaligned_frame  s    zMTestFrameFlexComparisons.test_bool_flex_frame.<locals>._check_unaligned_framerk   rl   rh   rg   rj   ri   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,   )rk   rl   r7   r8   r   TrF   rh   ri   rj   rg   )r9   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shaperk   valuesr   rl   r-   ru   rv   r7   r8   nanrG   rH   rI   r   rq   rh   rg   rj   ri   )r   dataZ
other_datar9   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   s  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 d    n1 s~0    Y  tjt|d	" |d |d  W d    n1 s0    Y  tjt|d	 |j	|j	k W d    n1 s0    Y  |
|}|j	 sJ t dt jd g}td|i}tjt|d	 |d W d    n1 sj0    Y  tjt|d	 |d d W d    n1 s0    Y  tjt|d	 |j	dk W d    n1 s0    Y  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   ra   rh   r   rl   r   )	r   arrZarr2r9   df2rJ   r   Zarr3df3r   r   r   "test_bool_flex_frame_complex_dtypen  s2    (0*
*.z;TestFrameFlexComparisons.test_bool_flex_frame_complex_dtypec                 C   sT   t ddtjdgi}t ddt dgi}||}t dg di}t|| d S )NrW   r3   r4   )FTF)r   r   r   r   nowrl   r7   r8   )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u s,J |tj}|jd  du sNJ |tjk}|jd  du snJ |tj}|jd  du sJ d S )Nr   FT)r   rm   rp   ilocitemrk   rl   r   r   r   r   test_flex_comparison_nat  s    

z1TestFrameFlexComparisons.test_flex_comparison_natopnamer   c                 C   sP   t g dg dd}d}t|||j }t|tdgtt	gd d S )Nr|   r}   r         ?       @      @rX   r}   r^   )
r   ru   dtypesvalue_countsr7   assert_series_equalr   r   r   r+   )r   r   r9   constrc   r   r   r   &test_df_flex_cmp_constant_return_types  s    z?TestFrameFlexComparisons.test_df_flex_cmp_constant_return_typesc                 C   s^   t g dg dd}d}|jd d }t|||j }t|tdgt	t
gd d S )Nr   r   rX   r}   r   r   )r   r   ru   r   r   r7   r   r   r   r   r+   )r   r   r9   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g d}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   r2   r   r   r   Fr|   r}   r2   r   r   )rm   ZIntervalIndexZfrom_breaksr   r   rk   r7   r8   )r   iir9   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.   r/   r0   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g ddd Zdd Zdd Zdd Zdd Zdd Zdd Zejdg d 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   r9   r   r   r   r[     r\   z?TestFrameFlexArithmetic.test_floordiv_axis0.<locals>.<dictcomp>)	r   r   r   r   floordivrA   r7   r8   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   r|   r   r   r   r   c                    s   i | ]}| | qS r   r   rU   r9   r   r   r   r   r[     r\   zLTestFrameFlexArithmetic.test_floordiv_axis0_numexpr_path.<locals>.<dictcomp>)ru   rv   r   r   r	   r   r   rA   r7   r8   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-01rL   rP   1r   r|   r   r   )rm   rn   Ztimedelta_ranger   r   addr7   r8   )r   dtiZtdiZtserr9   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g ddd}t||d}t||d}t jdd	 }|j||d
}ttg ddd|d d}t|| d S )Nr   r   rP   )z1 Dayrp   z2 Daystimedelta64[ns]r   r   r|   )days
fill_value)z
2016-01-02z
2016-01-03z
2016-01-05zdatetime64[ns]r}   )	rm   rn   r   r   	TimedeltaZto_timedelta64r   r7   r8   )r   r   r   r9   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__)
startswithru   rv   replacerX   r   r   r   r     s    
z8TestFrameFlexArithmetic.test_arith_flex_frame.<locals>.fr}   r   r   )ru   r7   r8   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v rBdd d}	n|dv 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   r2   r   )	ru   rv   r   USE_NUMEXPRr   r7   r8   r   r   )
r   r   Z	int_framemixed_int_framer   r   r   rc   rd   r   r   r   r   test_arith_flex_frame_mixed,  s&    	
z3TestFrameFlexArithmetic.test_arith_flex_frame_mixedc              	   C   sf   |}t ddD ]R}td| }d}tjt|d t||| W d    q1 sV0    Y  qd S )Nr   r=   )r|   r   rB   )r   r   r   rG   rH   rI   ru   )r   r   r   r   Z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 d    n1 s0    Y  tjtdd& |j |jd ddd W d    n1 s0    Y  d S )	Nr|   r   r   rB   r   r   r^   r,   r   )	r   r7   r8   r   r   rG   rH   NotImplementedErrorr   )r   r   Z	const_addrc   r   r   r   test_arith_flex_frame_corner`  s    
2z4TestFrameFlexArithmetic.test_arith_flex_frame_cornerc           
      C   sj  |}| d}|d }g d}|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   two)r   submulmodr   r   r=   r   int64r   r         ?g      ?r^   float64)xsru   rv   r7   r8   r   r   divr   r   r   r   r   inf)
r   simple_framer9   rowrW   rx   r   r   rd   rc   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 d    n1 sh0    Y  tjtd	d
$ |j|d d dd W d    n1 s0    Y  d S )Nr   r2   r   r@   r|   r}   r   r>   r   rB   Er   r   )r   objectr   rG   rH   r   r   r   )r   Zser_len0Zdf_len0r9   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   r3   r=   r   r}   r   )	r   r   r   r   r   fillnar   r7   r8   )r   Zdatr9   r:   r;   r   r   r   test_flex_add_scalar_fill_value  s
    z7TestFrameFlexArithmetic.test_flex_add_scalar_fill_valuec                 C   sV   t g dg dd}t g dg dd}t g dg dd}||}t|| d S )N)r|   r}   r   r>   r   )r|   r}   r|   r}   r   r   r   )r   r}   r   r}   r}   )r|   r|   r}   r}   r   )r   r   r7   r8   )r   r   r   rd   rc   r   r   r   'test_sub_alignment_with_duplicate_index  s
    
z?TestFrameFlexArithmetic.test_sub_alignment_with_duplicate_index)r   r   r   __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   r2   )r   r   r   rD   rr   ru   rA   r7   r8   r%   r   )r   r   r9   rd   rc   r   r   r   &test_arithmetic_with_duplicate_columns  s    

z>TestFrameFlexArithmetic.test_arithmetic_with_duplicate_columnslevelr   Nc                 C   s   t g dg dd}|jd|_t g dg dd}|jddg|_|j||d}t g dg dd}|jddg|_t|| d S )	Nr   r|   r}   r   r   ZL1r   r   r   ))r2   r   )r2   DZL2)r
  )r   rA   Z	set_namesr   r7   r8   )r   r
  r   r   rc   rd   r   r   r   test_broadcast_multiindex  s    z1TestFrameFlexArithmetic.test_broadcast_multiindex)r.   r/   r0   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 )	Nrp   r   r   r|   r}   r   r>   r   r   r   r7   r8   )r   r   r9   rc   rd   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g dd}|dgd d f }|jd|jd fksRJ tdd	gd	dgdd
gg|j|j|jd}|| }t	|| || }t	|| d S )Nr=   r   r}   TFr   rA   r^   r|   r>   r   rA   r^   r   
r   r   r   r   r   rA   r^   r   r7   r8   )r   r   r9   rowlikerd   rc   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g dd}|d d dgf }|j|jd	 dfksRJ tddgd
dgddgg|j|j|jd}|| }t	|| || }t	|| d S )Nr=   r   r}   TFr   r  r|   r   r   	   rL   r  r  )r   r   r9   collikerd   rc   r   r   r   'test_df_add_2d_array_collike_broadcasts  s    z;TestFrameArithmetic.test_df_add_2d_array_collike_broadcastsc                 C   s   |}|r|dv rt | tddd}t|ddgg dd}|d	gd d f }|jd	|jd	 fkslJ t|jd
 ||	 t|jd ||	 t|jd ||	 g}t||j
|jd}	t|||}
t|
|	 d S )N__rmod____rfloordiv__r=   r   r}   TFr   r  r|   r2   r   r   )td&mark_array_manager_not_yet_implementedr   r   r   r   r   ru   rq   squeezerA   r^   r7   r8   )r   r   r   using_array_managerr   r   r9   r  exvalsrd   rc   r   r   r   )test_df_arith_2d_array_rowlike_broadcasts   s    
z=TestFrameArithmetic.test_df_arith_2d_array_rowlike_broadcastsc                 C   s   |}|r|dv rt | tddd}t|ddgg dd}|d d d	gf }|j|jd
 d	fkslJ t|d || t|d || d}d }	|dv rtj	dd |
 D  }	t||j|j|	d}
t|||}t||
 d S )Nr  r=   r   r}   TFr   r  r|   r   )TFc                 s   s   | ]}|j V  qd S r   )r   rV   rY   r   r   r   	<genexpr>4  r\   zPTestFrameArithmetic.test_df_arith_2d_array_collike_broadcasts.<locals>.<genexpr>r  )r  r  r   r   r   r   r   ru   r  Zcommon_typer   rA   r^   r7   r8   )r   r   r   r   r   r   r9   r  r!  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<J d| }|jdd }|dk sdJ d S )NFTr|   c                 S   s   | j S r   kindrY   r   r   r   <lambda>C  r\   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   r9   rc   kindsr   r   r   test_df_bool_mul_int;  s    z(TestFrameArithmetic.test_df_bool_mul_intc                 C   sD   t g dg dd}|| }t g dg dd}t|| d S )NrS   rT   r~   r   r   )ZaaZbbccr}   r>   r=   r   r7   r8   )r   ry   rc   rd   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   r7   r   )r9   r   rc   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   rv   r   r   r   truedivr   r   )r   r9   r3  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   r1  )r   r   r9   rd   rc   r   r   r   &test_arith_alignment_non_pandas_objectq  s    z:TestFrameArithmetic.test_arith_alignment_non_pandas_objectc                 C   s2  t tjddddddg dg d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   Zoner   threer.  r  rS   r]   r   r   r   r^   )r   r   r   r   r   r   r^   rA   r7   r8   r   r   rF   rD   rr   r   )r   r9   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   )ru   )rV   nnumr   r   r   
<listcomp>  r\   zVTestFrameArithmetic.test_operations_with_interval_categories_index.<locals>.<listcomp>)rm   ZCategoricalIndexZinterval_ranger   ru   r7   r8   )r   r   indr   r9   rc   rd   r   rA  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)r3   r4   r3   r4   r@   r   )r   rm   rw   r   r   r   r7   r8   )r   r9   r   rc   rd   r   r   r   test_frame_with_frame_reindex  s    
 z1TestFrameArithmetic.test_frame_with_frame_reindexzvalue, dtype)r|   i8)r   r8  )            r8  )y              ?
complex128)rH  rI  )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|v rpd }	|dkr|t jks|dkr|t jkrd }
n4|dkrd}
t}	n"|t j
u rd}
t}	nd	|j d
}
tjt|
dH t|	 |||j W d    n1 sB0    Y  W d    n1 sb0    Y  n
||f|v r(|t jt jfv rtjr|dkrt}	nd }	t|	 |||j W d    n1 s0    Y  n@d}
tjt|
d |||j W d    n1 s0    Y  nRtd * |||jj}|||j}W d    n1 sd0    Y  t|| d S )Nr+   r2   r   rM  rL  rI  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)rv   r4  r   r   r   r   r   r   r   r   r   UserWarningr.   rG   rH   ra   r7   assert_produces_warningr   r   r   r   r   )r   r   r   r   r   skipelemr9   invalidwarnrJ   rc   rd   r   r   r   test_binop_other  sd    

P..,z$TestFrameArithmetic.test_binop_otherN) r.   r/   r0   r  r  r  r"  r%  r-  r2  r5  rG   r   r   r   r   r   r   r7  r<  rE  rF  Ztimedelta64Z
datetime64rv   r   r   r   r4  r   r   rT  r   r   r   r   r    sN   
 *
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 d    n1 s~0    Y  t d| j| j	d	}t
|| t | jd
| j	d}t
t ||k}W d    n1 s0    Y  t d| j| j	d	}t
|| d S )Nr=   r   r}   r2   r   r@   r   Fr]   zM8[ns])r   r   rD   rE   r   r   r   r   r   rA   r7   r8   rO  FutureWarningr^   r*   )r9   r   rc   rd   r   r   r   r   ,test_frame_with_zero_len_series_corner_cases  s     &&rV  c                  C   sB   t ddgtjd} tddgddgd}| | }| }t|| d S )Nr2   r   rA   r   r|   r}   r   )r   r   r   r   r7   r8   )r9   r   rc   rd   r   r   r   ,test_zero_len_frame_with_series_corner_cases*  s
    rX  z(ignore:.*Select only valid:FutureWarningc                  C   sD   dt ddtjgi} t| }|jdd}t g d}t|| d S )NZOner2   333333?r|   r   )r2   rY  r   )r   r   r   r   sumr7   r   )r   r9   rc   rd   r   r   r   +test_frame_single_columns_object_sum_axis_14  s    r[  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g d&d'd( Zd)d* Zd+d, Zd-d. Zd/d0 Z d1S )2TestFrameArithmeticUnsortedc                 C   sp   t jddddd}ttjt||dgd}|d}|| }|jj	t
ju sRJ || }|jj	t
ju slJ d S )	Nz1/1/2011rL   H
US/Eastern)rQ   freqtzrS   r]   zEurope/Moscow)rm   rn   r   r   rD   rE   rs   
tz_convertr^   r`  pytzutc)r   rngr9   Z	df_moscowrc   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/2010r2   )r_  r   r   r}   r|   )rm   Zperiod_ranger   r   rD   rE   rs   r   r   r7   r8   ZtakeZpermutation)r   rd  tsrc   rd   Zhalfr   r   r   test_align_frameR  s    z,TestFrameArithmeticUnsorted.test_align_framer   c                 C   s   t g dg ddtd}|tj}||d}||dt}d |t|< t	|| |||}|||t}d |t|< t	|| |||d}t	|| ||d|}tj	||dd d S )	N)r}         @{   N)r|   r}   r   r>   )Zcol1Zcol2r   r   r   F)Zcheck_dtype)
r   r  r  r   r   r(   comZisnar7   r8   )r   r   r9   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|  |u s&J d S )Nr3   )ru   r+   r   )r   r   r;   r   rc   r   r   r   %test_logical_typeerror_with_non_validz  s    zATestFrameArithmeticUnsorted.test_logical_typeerror_with_non_validc                    sL  t jtdg dg dgg dd}ttddd|g d	d
  tj	dD ]}t
t|d d u rlqRtg dg d}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|| qRt 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g d&g d&gdd|d}|
|fD ]}t|| qd#d$g|j_||||fD ]}t|| q4d S )'Nabcr9  r   )firstsecondthirdnamesQ      r   )Zvalue1Zvalue2Zvalue3r]   )r   r   r   r   r4  )r         $@g      Y@rq  r   )r
  r,   c                    s:   g | ]2\}} j d d d d |f d d f |qS r   rq   rV   r*  vr9   idxZopar   r   rC    r\   zETestFrameArithmeticUnsorted.test_binary_ops_align.<locals>.<listcomp>r   rv  r   r:  rp  c                    s4   g | ],\}} j d d |f d d f |qS r   rw  rx  rz  r   r   rC    r\   r2   r   rS   rT   )r}   r>   r   r   r@   r|   r}   rR   Zlvl0Zlvl1)r,   r
  )r|   r}   r|   r}   )r   from_productrF   r   r   r   r   Z
sort_indexrm   Z
IndexSliceru   rv   r   concatrt   r7   r8   Zreindex_liker   r'   rA   rs  r^   namer   r   )r   r^   r   rY   rc   rd   Zmidxsr   s2Zres1r   Zres3Zres4Zres5Zres6r:   r;   r   rz  r   test_binary_ops_align  s`    
 z1TestFrameArithmeticUnsorted.test_binary_ops_alignc                 C   s   t jg d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 )N)z
2011-01-01z
2011-01-02z
2011-01-03UTC)r`  z
Asia/Tokyor}   r^  r|   r2   r   r   )rm   ZDatetimeIndexra  r   r   r   r7   r8   )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  sJ t
|d  sJ || }t|j|j || }	t
|d  sJ t
|	d  s,J |t  }
t
|
j sLJ t | }t
|j slJ t t  }|jsJ |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   r2   r   r@   r   r   )r   r^   r   r   Zdropnar'   r7   r   rq   isinisnanr   assert_index_equalr   r   r   rA   r8   r   )r   r   r   r   Z
frame_copyr;  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|	v sJ t|	d 	 sJ || }t	|j
|jksJ ||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   )r2   r   r   r  Zint32)r   r^   rt   r7   r   to_dictr   r   r  r   r   r   r(   r   r   )
r   r   r   r   seriesr;  keyr  Zlarger_seriesZlarger_addedr   r   r   test_combine_series  s4    z/TestFrameArithmeticUnsorted.test_combine_seriesc                 C   sx  |d }|j |dd}| D ]`\}}|| }tj|| |dd || j|ksTJ |j|jkrp|jdks~J q|jd u sJ 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stJ d S )Nr2   r^   r   F)Zcheck_namesr   r]   r|   r@   )r   rt   r7   r   r~  r  r^   r8   r   r   r   rA   r   r   rs   )r   Zdatetime_framerf  r;  r  rW   rc   Zsmaller_frameZsmaller_addedZ
smaller_tsZsmaller_added2rd   framer   r   r   test_combine_timeseries7  s8    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|J t|j	dksJ d S )Nr}   r   r   r   )
r7   assert_numpy_array_equalr   rt   r   r   r^   equalsrs   rA   )r   r   r   rc   r~   r  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 d    n1 sZ0    Y  | }t |j| jj | d}t |j| jd d}tjt|d" | d d  W d    n1 s0    Y  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}   )r7   r  r   rG   rH   rI   reescape)funcrc   rJ   r   result3r   r   r   r   r   r   r   r   	test_compz  s    
(

z?TestFrameArithmeticUnsorted.test_comparisons.<locals>.test_comp)r7   ZmakeTimeDataFramer   r   r   r   rv   rk   rl   rg   rh   rj   ri   )r   r   r   r  r   r  r   test_comparisonss  s    





z,TestFrameArithmeticUnsorted.test_comparisonsc                 C   s\   t dd dD }tt|}d}tjt|d ||d W d    n1 sN0    Y  d S )Nc                 S   s   i | ]}|d dddqS )r3   r4   r5   )rY   rZ   zr   r#  r   r   r   r[     r\   zZTestFrameArithmeticUnsorted.test_strings_to_numbers_comparisons_raises.<locals>.<dictcomp>r.  z;'[<>]=?' not supported between instances of 'str' and 'int'rB   r   )r   ru   rv   rG   rH   ra   )r   Zcompare_operators_no_eq_ner9   r   rJ   r   r   r   *test_strings_to_numbers_comparisons_raises  s    
zFTestFrameArithmeticUnsorted.test_strings_to_numbers_comparisons_raisesc                 C   s   t  }tj|j|jd df< tjdd |jdk }W d    n1 sJ0    Y  tjdd |dk j}W d    n1 s0    Y  t || d S )Nr   r2   ignore)rR  raise)	r7   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}g d}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 d    n1 s0    Y  tjt|	d
 ||k}W d    n1 s0    Y  ||k}t	|| |j
|k}t||j
 tjt|
d
 ||k W d    n1 s^0    Y  tjt|d
 |j
|k W d    n1 s0    Y  t ddgddgddgg}||k}t	|| tjt|	d
 ||k}W d    n1 s0    Y  tjt|	d
 ||k}W d    n1 s60    Y  ||k}t	|| |j
|k}t||j
 tjt|
d
 ||k W d    n1 s0    Y  |j
j|jksJ t tddtdtdd}|j|_|j|_tjt|	d
 ||k}W d    n1 s0    Y  tjt|	d
 ||k}W d    n1 sP0    Y  d S )Nr=   r   r}   r}   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ABrn  r  )r   r   r   r   r   Z
atleast_2dr   tupler7   r8   r   r  rG   rH   rI   r   rF   r^   rA   )r   r9   rT   Zb_rZb_clsttuprd   rc   Zmsg1dZmsg2dZmsg2dbr   r   r   test_boolean_comparison  sb    
&&
(*((
((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   rs   r   r   r   r'   r   r7   r8   )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 g d}ttjjdddddd}| }|}|d7 }t|| t|d | ||u sfJ |j	|j	u svJ | }|}|d7 }t
|| t
|d | ||u sJ |j	|j	u sJ | }|}|d7 }t|| t|d | | }|}|d7 }t
|| t
|d | ||u s0J |j	|j	u sBJ tjjdddd}t| d	d
}| }|}|d  d7  < t| d d	d
}t
|| t
|| |j	|j	u sJ | }|}|d  d7  < t| d d	d
}t
|| t
|| |j	|j	u sJ d S )Nr   r   r   rL   rM   r   r|   r   r3   r   r2   )r   r   r   rD   ro   r   r'   r7   r   Z_mgrr8   )	r   Zs_origZdf_origr  r  r9   r   r   rd   r   r   r   test_inplace_ops_identity,  sX    z5TestFrameArithmeticUnsorted.test_inplace_ops_identity)r   andr   r   r   r   orr   r   r4  xorc                 C   s   |dkrd S t g dg dd}d}|dv r:g d|d< | }d	| d
}d
| d
}t||| t|||}t|| t|}t||ksJ d S )Nr   r   r   rR   r}   )r  r  r  )TFTrS   Z__ir   )r   r'   ru   r7   r8   id)r   r   r9   operandZdf_copyZioprd   r   r   r   test_inplace_ops_identity2f  s    z6TestFrameArithmeticUnsorted.test_inplace_ops_identity2c              	   C   s  g d}g d}t tjdd||d}tjjj}g ddtjg dtj	dt
ddfD ]l}t |||d|jd	}t|||d
d | t g dg dg dd|jd	}t|||dd | qXd}ddgdtddgt
ddfD ]|}tjt|d |||d
 W d    n1 s 0    Y  tjt|d |||d W d    q1 s\0    Y  qtg dg dg dg}t|||d
d t ||j|jd t|||dd t ||j|jd d}tg dg dg}tjt|d |||d
 W d    n1 s0    Y  tjt|d |||d W d    n1 sX0    Y  td}td}tjt|d |||d
 W d    n1 s0    Y  tjt|d |||d W d    n1 s0    Y  d S )Nr   )r  Yr  r   r]   r   r   r|   r>   r   r^   r  r  )r   r   r   rA   z5Unable to coerce to Series, length must be 3: given 2r}   r6  rB   r>   r   r=   )r   r   r  r  zGUnable to coerce to Series/DataFrame, dimension must be <= 2: (3, 3, 3))r   r   rD   rE   rm   corerx   Zalign_method_FRAMEr   r   r   r^   r7   r8   rG   rH   rI   rA   Zzerosr  r  )r   r^   rA   r9   Zalignvalrd   rJ   r   r   r   test_alignment_non_pandas  sX    
$,.,,
,z5TestFrameArithmeticUnsorted.test_alignment_non_pandasc                 C   sZ   t ddgdd gd}|d }td  t||| W d    n1 sL0    Y  d S )Nr=  r   r   )r   r7   rO  ru   r   r   r9   rT   r   r   r   test_no_warning  s    z+TestFrameArithmeticUnsorted.test_no_warningc                 C   s`   t ddgdd gd}|d }tjtdd  t|||d W d    n1 sR0    Y  d S )Nr=  r   r   ztakes 2 positional argumentsrB   r   )r   rG   rH   ra   ru   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  meanr7   r8   )r   r  r  r   r   rc   rd   r   r   r   test_align_int_fill_bug  s    
z3TestFrameArithmeticUnsorted.test_align_int_fill_bugN)!r.   r/   r0   re  rg  rG   r   r   rv   r   r   r   r4  rk  filterwarningsrm  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r   r   r   r   r\  F  s<   

F
<).%	O1:
;r\  c                  C   sL   t dg di} t g dd}| | }t dtjdtjgi}t|| d S )Nr2   r  r   r   r   r   r   r7   r8   )ry   rz   rc   rd   r   r   r   test_pow_with_realignment  s
    r  c                  C   sp   t dtjtjtjgi} t dg di}t dg di}| | }t|| | d |d  }t||d  d S )Nr2   r  )r   r   r   )r   r   r   r7   r8   r   )ry   rz   rd   rc   r   r   r   test_pow_nan_with_zero  s    r  c                  C   s   t tjdddg dd} tg dg dd}| d|dd	d
 }t || jdd}| d}|| }t	
|| ||d }t	
|| d S )Nr   r   )rL   r   r.  r@   r   r   r   r   r   ZInt64rW  )r   r   rD   ro   r   Zto_numpyr   rA   r(   r7   r8   )r9   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g d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>   r   c                    s   i | ]}| | |  qS r   r   )rV   r*  ry   rz   r   r   r[     r\   z6test_dataframe_blockwise_slicelike.<locals>.<dictcomp>)r   rD   ro   r   r'   r   r   r   rA   r7   r8   )r   r   r   r   Zdf4Zdf5r;   rd   r   r  r   "test_dataframe_blockwise_slicelike  s    r  zdf, col_dtyper   r   g      @rh  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 )	Nr=  r   r  r@   rT   g      rS   r   )r   r   r   rF   r(   r   r7   r8   )r9   Z	col_dtyperd   rc   r   r   r   /test_dataframe_operation_with_non_numeric_types!  s    	 r  c                  C   sZ   t dggdgd} t g dgg dd}| | }t tjddggg dd}t|| d S )Nr   rp  )r   rA   r  )ro  rp  rp  r@   r  )r   r   rc   rd   r   r   r   "test_arith_reindex_with_duplicates0  s
    r  to_addr|   c                 C   s   t ddgddgd}dt| d  d}tjt|d ||   W d    n1 sV0    Y  tjt|d | |  W d    n1 s0    Y  d S )Nr|   r}   rX   zUnable to coerce list of r   z to Series/DataFramerB   )r   r)   rG   rH   rI   )r  r9   rJ   r   r   r   "test_arith_list_of_arraylike_raise9  s    &r  c                  C   sT   t dg di} | d }|j}|d7 }|j|u s4J t dg di}t| | d S )Nr2   r   r|   )r}   r   r>   )r   Z_valuesr7   r8   )r9   r  valsrd   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   rr  r]   )r~  N)r   r   r|  r   r7   r8   )r   r   rd   rc   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  Zcdr   r   )r   rF   r   r   r7   r8   )r9   rc   rd   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g dg dd} | d	 } dg d
g d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.   r/   r0   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|i | 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.   r/   r0   	_metadatar   r  r  r  __classcell__r   r  r  r   r  y  s   
r  Z	some_datar   r  r   r}   r0  )r   rL      r  )Zsdfrc   rd   r   r  r   +test_frame_op_subclass_nonclass_constructorm  s    	r  )>collectionsr   r   r  rv   r  Znumpyr   rG   rb  Zpandas.util._test_decoratorsutilZ_test_decoratorsr  Zpandasrm   r   r   r   r   Zpandas._testingZ_testingr7   Zpandas.core.commonr  commonrj  Zpandas.core.computationr   r   Z#pandas.core.computation.expressionsr	   r
   Zpandas.tests.frame.commonr   r   Zfixturer   r   r1   r   r   r  rV  rX  r   r  r[  r\  r  r  r  r  r   rF   r  r  r  r  r  r  r  r   r   r   r   <module>   sr   
 M B w  H

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