U
    U‚gº ã                   @   s>  d dl mZ d dlmZ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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
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.dd„ Z/G d d!„ d!ƒZ0d"d#„ Z1d$d%„ Z2d&d'„ Z3d(d)„ Z4ej5 6d*ed+d,gd-d.gge7d/ƒd0�d1fed+d2gd-d2gge7d/ƒd0�d3fg¡d4d5„ ƒZ8d6d7„ Z9ej5 6d8ed9d9gƒged9d9gƒed9d9gƒgg¡d:d;„ ƒZ:d<d=„ Z;d>d?„ Z<d@dA„ Z=dBdC„ Z>dDdE„ Z?dFdG„ Z@dS )Hé    )Údeque)ÚdatetimeÚtimezone)ÚEnumN)Ú	DataFrameÚIndexÚ
MultiIndexÚSeries)Úexpressions)Ú_MIN_ELEMENTSÚNUMEXPR_INSTALLED)Ú_check_mixed_floatÚ_check_mixed_intTi@B ZnumexprÚpython)ZautouseÚparamsÚidsc                 c   s    t j}| jt _| jV  |t _d S ©N)Úexprr   Úparam)Úrequestr   © r   úF/tmp/pip-unpacked-wheel-u1j4u1ka/pandas/tests/frame/test_arithmetic.pyÚswitch_numexpr_min_elements$   s    r   c                   @   sZ   e Zd Zddœdd„Zdd„ Zedœdd„Zedœd	d
„Zddd„Zdd„ Z	ddd„Z
dS )ÚDummyElementN©Úreturnc                 C   s   || _ t |¡| _d S r   )ÚvalueÚnpÚdtype)Úselfr   r   r   r   r   Ú__init__-   s    zDummyElement.__init__c                 C   s   t j| j| jd�S )N©r   )r   Úarrayr   r   ©r   r   r   r   Ú	__array__1   s    zDummyElement.__array__c                 C   s   d| j › d| j› d�S )NzDummyElement(z, ú))r   r   r#   r   r   r   Ú__str__4   s    zDummyElement.__str__c                 C   s   t | ƒS r   )Ústrr#   r   r   r   Ú__repr__7   s    zDummyElement.__repr__Fc                 C   s
   || _ | S r   r!   )r   r   Úcopyr   r   r   Úastype:   s    zDummyElement.astypec                 C   s   t | ƒ| j |¡|ƒS r   )Útyper   Úview)r   r   r   r   r   r,   >   s    zDummyElement.viewc                 C   s
   t | jƒS r   )Úboolr   )r   Úaxisr   r   r   ÚanyA   s    zDummyElement.any)F)N)Ú__name__Ú
__module__Ú__qualname__r    r$   r'   r&   r(   r*   r,   r/   r   r   r   r   r   ,   s   
r   c                   @   sn  e Zd Zdd„ Zdd„ Zej dej	j
ddd�ejddd	�d
œej	j
ddd�ej	j
ddd�d
œgej	j
ddd�ej	j
ddd�d
œej	j
ddd�ejddd	�d
œgejddd	�ejddd	�d
œej	j
ddd�ej	j
ddd�d
œgej	j
ddd�ejddd	�d
œejddd	�ejddd	�d
œgg¡dd„ ƒZej dddddddg¡dd„ ƒZdd„ Zdd„ Zdd„ Zdd„ ZdS )ÚTestFrameComparisonsc                 C   sb   t ddddgiƒ}t ddddgiƒ}|dk}t ||¡ |d  d¡|d< |dk}t ||¡ d S )NÚAÚfooÚbarÚbazTFÚcategory)r   ÚtmÚassert_frame_equalr*   )r   ÚdfÚexpÚresr   r   r   Ú&test_comparison_with_categorical_dtypeL   s    z;TestFrameComparisons.test_comparison_with_categorical_dtypec              	   C   sD   t tj dd¡tdƒd�}d}tjt|d�� |dk W 5 Q R X d S )Né   é   ÚABCD©Úcolumnsz+The truth value of a DataFrame is ambiguous©Úmatchr   )r   r   ÚrandomÚrandnÚlistÚpytestÚraisesÚ
ValueError)r   r;   Úmsgr   r   r   Útest_frame_in_list[   s    z'TestFrameComparisons.test_frame_in_listz	arg, arg2é
   ©ÚsizeÚ20010101©Úperiods©ÚaÚbc              	      s   t |ƒ‰ t |ƒ‰ˆ ˆk}t ‡ ‡fdd„ˆ jD ƒˆ jˆ jd�}t ||¡ ˆ ˆk}t ‡ ‡fdd„ˆ jD ƒˆ jˆ jd�}t ||¡ dddg}d |¡}tjt|d	�� ˆ ˆk W 5 Q R X tjt|d	�� ˆ ˆk W 5 Q R X tjt|d	�� ˆ ˆk  W 5 Q R X tjt|d	�� ˆ ˆk W 5 Q R X d S )
Nc                    s   i | ]}|ˆ | ˆ| k“qS r   r   ©Ú.0Úcol©ÚxÚyr   r   Ú
<dictcomp>˜   s      z@TestFrameComparisons.test_comparison_invalid.<locals>.<dictcomp>©ÚindexrC   c                    s   i | ]}|ˆ | ˆ| k“qS r   r   rW   rZ   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.ú|rD   )	r   rC   r_   r9   r:   ÚjoinrI   rJ   Ú	TypeError)r   ÚargZarg2ÚresultÚexpectedZmsgsrL   r   rZ   r   Útest_comparison_invalidb   s:    0ýýû	
z,TestFrameComparisons.test_comparison_invalidzleft, right)ÚgtÚlt)rh   rg   )ÚgeÚle)rj   ri   )Úeqrk   )Únerl   c           	   	   C   sœ  t tjddd�tjddd�tjjddd�tj d¡tt 	d¡ƒdœƒ}tj
|jtj t|ƒ¡dkd	f< tt|ƒ}tt|ƒ}|d
kr°||t d¡ƒ}|t d¡|ƒ}t ||¡ nXd}tjt|d�� ||t d¡ƒ W 5 Q R X tjt|d�� |t d¡|ƒ W 5 Q R X |d
k�r@||t d¡ƒ}|t d¡|ƒ}t ||¡ nXd}tjt|d�� ||t d¡ƒ W 5 Q R X tjt|d�� |t d¡|ƒ W 5 Q R X d S )NrQ   rN   rR   Z20010102i Êš;rO   )Zdates1Údates2ZintcolZfloatcolZ	stringcolg      à?rm   )rk   rl   Z20010109zL'(<|>)=?' not supported between instances of 'numpy.ndarray' and 'Timestamp'rD   ZnatzJ'(<|>)=?' not supported between instances of 'numpy.ndarray' and 'NaTType')r   ÚpdÚ
date_ranger   rF   ÚrandintrG   rH   r9   ZrandsÚNaTÚlocÚrandÚlenÚgetattrÚoperatorÚ	Timestampr:   rI   rJ   rb   )	r   ÚleftÚrightr;   Zleft_fZright_fre   rd   rL   r   r   r   Útest_timestamp_compare¹   s>    
ûÿ	 

ÿ
ÿz+TestFrameComparisons.test_timestamp_comparec                 C   s\   t ddgddggƒ}t ddgddggƒ}||k}| ¡  ¡ r@t‚||k}| ¡  ¡ sXt‚d S )Nz
1989-08-01é   é   rU   rV   ÚcÚd)r   r/   ÚAssertionErrorÚall)r   r;   Úotherrd   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Úreshaper9   r:   )r   r;   re   rd   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„   r4   ÚBÚCr^   )r   r   rF   rG   ÚrangeÚ__eq__r/   r   ©r   r;   rd   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{   r5   rT   r|   r6   r   )r   rU   r9   r:   rr   rV   )r   r;   Zmask_aZmask_br   r   r   Útest_df_string_comparison  s    
"$
"z.TestFrameComparisons.test_df_string_comparisonN)r0   r1   r2   r>   rM   rI   ÚmarkÚparametrizer   rF   rp   rn   ro   rf   rz   r‚   rˆ   r�   r�   r   r   r   r   r3   I   sd   þþûþþûþþûþþûáþ-
*úþ
-r3   c                	   @   s¶   e Zd Zej dddddddg¡dd	„ ƒZej d
eje	g¡dd„ ƒZ
dd„ Zdd„ Zdd„ Zdd„ Zej dddddddg¡dd„ ƒZej dddddddg¡dd„ ƒZdd„ ZdS )ÚTestFrameFlexComparisonsÚoprk   rl   rg   rh   ri   rj   c              	   C   sH  t j dd¡}t j dd¡}t|ƒ}t|ƒ}t  |jd ¡}| |¡j ¡ sPt	‚| 
|¡j ¡ rdt	‚t||ƒ}tt|ƒ}t ||ƒ|||ƒ¡ |jdd …dd …f  ¡ }	||	ƒ}
|||	j|j|jd�ƒ}t |
|¡ t ||jƒ|||jƒ¡ t |dƒ||dƒ¡ d}t |t jƒ||t jƒ¡ tjt|d�� ||ƒ W 5 Q R X d S )	Né   r„   )r{   r„   r{   r^   r   ú$Unable to coerce to Series/DataFramerD   )r   rF   rG   r   ÚonesÚshaperk   Úvaluesr€   r   rl   r/   ru   rv   r9   r:   rr   r)   Úreindexr_   rC   ÚnanrI   rJ   rK   )r   r”   ÚdataZ
other_datar;   r�   Úndim_5ÚfÚoZpart_oÚrsZxprL   r   r   r   Útest_bool_flex_frame  s(    

z-TestFrameFlexComparisons.test_bool_flex_frameÚboxc                 C   s  t j dd¡}t|ƒ}|t j d¡ƒ}|t j d¡ƒ}|j|dd�}| |¡}|j|dd�}| |¡}	t ||t|ƒk¡ t ||	 ¡ t || ¡ t ||j	 |¡j	¡ t || t
|ƒ¡¡ t ||jt|ƒdd�¡ t ||jt
|ƒdd�¡ |j|dd�}
| |¡}|j|dd�}| |¡}t ||t|ƒk¡ t || ¡ t |
| ¡ t |
|j	 |¡j	¡ |j|dd�}| |¡}|j|dd�}| |¡}t ||t|ƒk¡ t || ¡ t || ¡ t ||j	 |¡j	¡ tt j d¡ƒ}tt j d¡ƒ}d S )Nr•   r„   r   ©r.   )r   rF   rG   r   rk   rl   r9   r:   r	   ÚTrH   rg   rj   ri   rh   )r   r¢   rœ   r;   Zidx_serZcol_serZidx_eqZcol_eqZidx_neZcol_neZidx_gtZcol_gtZidx_leZcol_leZidx_geZcol_geZidx_ltZcol_ltr   r   r   Útest_bool_flex_series=  sB    





z.TestFrameFlexComparisons.test_bool_flex_seriesc                 C   s²   t tj dd¡ƒ}tj|jd< | |¡}|jd r6t‚| |¡}|jd sNt‚| 	|¡}|jd rft‚| 
|¡}|jd r~t‚| |¡}|jd r–t‚| |¡}|jd r®t‚d S )Nr•   r„   ©r   r   )r   r   rF   rG   r›   rr   rk   r   rl   rg   rh   ri   rj   )r   r;   r    r   r   r   Útest_bool_flex_frame_nah  s    





z0TestFrameFlexComparisons.test_bool_flex_frame_nac           	   	   C   sp  t  t jddt jg¡}t  dt jdd g¡}td|iƒ}td|iƒ}d ddg¡}tjt|d	�� | |¡ W 5 Q R X tjt|d	�� |d  |d ¡ W 5 Q R X tjt|d	�� |j	|j	k W 5 Q R X | 
|¡}|j	 ¡ sÞt‚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               @é   rU   r`   z9'>' not supported between instances of '.*' and 'complex'z unorderable types: .*complex\(\)rD   )r   r"   r›   r   ra   rI   rJ   rb   rg   r™   rl   r€   r   )	r   ÚarrZarr2r;   Údf2rL   r    Zarr3Údf3r   r   r   Ú"test_bool_flex_frame_complex_dtypey  s2    þÿ
z;TestFrameFlexComparisons.test_bool_flex_frame_complex_dtypec                 C   sV   t ddtjdgiƒ}t ddt ¡ dgiƒ}| |¡}t ddddgiƒ}t ||¡ d S )NrY   r5   r6   FT)r   r   r›   r   Únowrl   r9   r:   )r   Údf1rª   rd   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s�t‚d S )Nr¦   FT)r   rn   rq   ÚilocÚitemr   rk   rl   rŽ   r   r   r   Útest_flex_comparison_nat¨  s    

z1TestFrameFlexComparisons.test_flex_comparison_natÚopnamec                 C   sV   t dddgdddgdœƒ}d}t||ƒ|ƒj ¡ }t |tdgt t	¡gdd	�¡ d S )
Nr{   r|   r„   ç      ð?ç       @ç      @rZ   Úcount©r_   Úname)
r   ru   ÚdtypesÚvalue_countsr9   Úassert_series_equalr	   r   r   r-   )r   r³   r;   Úconstrd   r   r   r   Ú&test_df_flex_cmp_constant_return_typesº  s     ÿz?TestFrameFlexComparisons.test_df_flex_cmp_constant_return_typesc                 C   sd   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
�¡ d S )Nr{   r|   r„   r´   rµ   r¶   rZ   r   r·   r¸   )r   r°   ru   rº   r»   r9   r¼   r	   r   r   r-   )r   r³   r;   r½   Úemptyrd   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„   ©r4   rŠ   r   r£   Fr4   rŠ   ©r_   )rn   ZIntervalIndexZfrom_breaksr   r	   rk   r9   r:   )r   Úiir;   Úserr=   re   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)r0   r1   r2   rI   r‘   r’   r¡   r   r"   r	   r¥   r§   r¬   r¯   r²   r¾   rÀ   rÆ   r   r   r   r   r“     s   

*'


r“   c                   @   sH  e Zd Zdd„ Zejje dd�ej dddg¡dd	„ ƒƒZ	d
d„ Z
dd„ Zdd„ Zej ddddg¡dd„ ƒZej deddƒ¡dd„ ƒZdd„ Zej ddddd g¡d!d"„ ƒZd#d$„ Zej d%d&d'g¡d(d)„ ƒZd*d+„ Zd,d-„ Zd.d/„ Zej ddddd0g¡d1d2„ ƒZej d3d4d5g¡d6d7„ ƒZd8d9„ Zd:d;„ Zd<d=„ Zd>d?„ Zd5S )@ÚTestFrameFlexArithmeticc                    st   t  d¡}t|ƒ‰tˆˆdœƒ‰ ˆ jˆdd�}t‡ ‡fdd„ˆ jD ƒƒ}t ||¡ ˆ jˆjdd�}t ||¡ d S )Nr„   rÁ   r   r£   c                    s   i | ]}|ˆ | ˆ “qS r   r   rW   ©r;   rÄ   r   r   r]   í  s      z?TestFrameFlexArithmetic.test_floordiv_axis0.<locals>.<dictcomp>)	r   r†   r	   r   ÚfloordivrC   r9   r:   r™   )r   r©   rd   re   Ú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 )
Néd   r{   éÿÿÿÿr´   r‹   r   r£   c                    s   i | ]}|ˆˆ | ˆƒ“qS r   r   rW   ©r;   r”   rÄ   r   r   r]     s      zLTestFrameFlexArithmetic.test_floordiv_axis0_numexpr_path.<locals>.<dictcomp>)ru   rv   r   r†   r   r‡   r   rC   r9   r:   r™   )r   r³   r©   rd   re   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-01rN   rR   Ú1©r   r{   r   r£   )rn   ro   Ztimedelta_ranger	   r   Úaddr9   r:   )r   ÚdtiZtdiZtserr;   rd   re   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„   rR   z1 Dayrq   z2 Daysútimedelta64[ns]r!   rÁ   r{   )Údays©Ú
fill_valuez
2016-01-02z
2016-01-03z
2016-01-05zdatetime64[ns]r|   )	rn   ro   r	   r   Ú	TimedeltaZto_timedelta64rÕ   r9   r:   )r   rÖ   rÄ   r;   r�   Úfillrd   re   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   ÚreplacerZ   ©r”   r   r   rž   +  s    
z8TestFrameFlexArithmetic.test_arith_flex_frame.<locals>.fr|   r‹   r!   )ru   r9   r:   r   )r   Úall_arithmetic_operatorsÚfloat_frameÚmixed_float_framerž   rd   re   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   r4   r!   )	ru   rv   r   ÚUSE_NUMEXPRr   r9   r:   r   r   )
r   r”   Z	int_frameÚmixed_int_framerå   r   rž   rd   re   r   r   r   r   Útest_arith_flex_frame_mixed;  s&    	
z3TestFrameFlexArithmetic.test_arith_flex_frame_mixedÚdimr„   r?   c              	   C   sB   |}t  d| ¡}d}tjt|d�� t||ƒ|ƒ W 5 Q R X d S )N)r{   r–   rD   )r   r—   rI   rJ   rK   ru   )r   rã   rä   rí   r”   r©   rL   r   r   r   Útest_arith_flex_frame_raised  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Û   rD   r„   rÚ   r_   ©r.   rÛ   )	rÕ   r9   r:   r   r›   rI   rJ   ÚNotImplementedErrorr°   )r   rä   Z	const_addrd   r   r   r   Útest_arith_flex_frame_cornero  s    
z4TestFrameFlexArithmetic.test_arith_flex_frame_cornerrÕ   ÚsubÚmulÚmodc                 C   sb   |}|  d¡}|d }t||ƒ}tt|ƒ}t ||ƒ|||ƒ¡ t ||dd�||j|ƒj¡ d S )NrU   Útwor   r£   )Úxsru   rv   r9   r:   r¤   )r   Úsimple_framer”   r;   ÚrowrY   rž   r   r   r   Útest_arith_flex_series_ops€  s    


z2TestFrameFlexArithmetic.test_arith_flex_series_opsc                 C   sh   |}|  d¡}|d }t |j|d d�|| ¡ t | |¡|| ¡ t |j|dd�|j| j¡ d S )NrU   rõ   r£   r   )rö   r9   r:   rÕ   Údivr¤   )r   r÷   r;   rø   rY   r   r   r   Útest_arith_flex_seriesŒ  s    
z.TestFrameFlexArithmetic.test_arith_flex_seriesr   Úint64Úfloat64c                 C   sX   t t d¡ d¡|d�}t tjtjgddgddggƒ}|j|d dd	�}t ||¡ d S )
Nr?   rƒ   r!   r´   ç      ø?g      ô?r   r_   r£   )	r   r   r†   r‡   r›   Úinfrú   r9   r:   )r   r   r;   re   rd   r   r   r   Ú#test_arith_flex_series_broadcasting˜  s    z;TestFrameFlexArithmetic.test_arith_flex_series_broadcastingc              	   C   s�   t g td�}tddgd�}tddgddggddgd�}tjtd	d
�� |j|dd� W 5 Q R X tjtd	d
�� |j|d d dd� W 5 Q R X d S )Nr!   r4   rŠ   rB   r{   r|   r„   r@   rÛ   rD   ÚErÚ   rï   )r	   Úobjectr   rI   rJ   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!   r5   r?   rÂ   r|   rÚ   )	r   r"   r›   r   rŒ   ÚfillnarÕ   r9   r:   )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ò   r9   r:   )r   r®   rª   re   rd   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 )NrN   rÁ   r4   )r   r   r†   rF   rs   ru   rC   r9   r:   r'   rº   )r   r”   r;   re   rd   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))r4   r‹   )r4   ÚDZL2)r
  )r   rC   Z	set_namesrÕ   r9   r:   )r   r
  r®   rª   rd   re   r   r   r   Útest_broadcast_multiindexÊ  s    z1TestFrameFlexArithmetic.test_broadcast_multiindexc                 C   s¾   t dddgdddgdœtjdgdgd	ddggd
ddgd�d�}tdgtjdgdggdd
gd�d�}t dddgdddgdœtjdgdgd	ddggd
ddgd�d�}|j|d	d�}t ||¡ d S )Nr{   r|   r„   r@   r•   ©iÚ  iä  rU   rV   r   Úscenrô   Úid©ÚnamesrÂ   çš™™™™™Ù?çffffffö?ç333333@ç333333@çš™™™™™@gš™™™™™@r£   ©r   r   Úfrom_productr	   rÕ   r9   r:   ©r   r;   Úseriesre   rd   r   r   r   Ú test_frame_multiindex_operationsÙ  s(     ÿþþ ÿþz8TestFrameFlexArithmetic.test_frame_multiindex_operationsc                 C   sº   t dgdgdœtjdgdggddgd�d	�}td
ddgtjdgdgdddggdddgd�d	�}t dddgdddgdœtjdgdgdddggdddgd�d	�}|j|dd�}t ||¡ d S )Nr{   r„   r  rU   rV   r  rô   r  rÂ   ç      $@g      4@g      >@r   r|   r  g      &@é   g      ?@g      *@g      7@g     €@@r£   r  r  r   r   r   Ú<test_frame_multiindex_operations_series_index_to_frame_indexñ  s(    þ ÿþ ÿþzTTestFrameFlexArithmetic.test_frame_multiindex_operations_series_index_to_frame_indexc              	   C   s¶   t dddgdddgdœtjdgdgd	ddggd
ddgd�d�}tdgtjdgdggdd
gd�d�}t tjtjdœtjdddddtjfgd
ddgd�d�}|j|d	d�}t 	||¡ d S )Nr{   r|   r„   r@   r•   r  rU   rV   r   r  rô   r  r  rÂ   r  r}   ©rU   rV   r   ©rU   rV   r{   )rU   rV   r|   r£   )
r   r   r  r	   r   r›   Úfrom_tuplesrÕ   r9   r:   r  r   r   r   Ú)test_frame_multiindex_operations_no_align	  s0     ÿþþ
üùþzATestFrameFlexArithmetic.test_frame_multiindex_operations_no_alignc                 C   s®   t dddgdddgdœtjddd	gd
ddgd�d�}tdgtjdgdggdd
gd�d�}t ddtjgddtjgdœtjddd	gd
ddgd�d�}|j|dd�}t 	||¡ d S )Nr{   r|   r„   r@   r•   r  r  r   )rU   r}   r|   r  rô   r  r  rÂ   r  rV   rU   r  r  r  r  r   r£   )
r   r   r!  r	   r  r   r›   rÕ   r9   r:   r  r   r   r   Ú+test_frame_multiindex_operations_part_align&  s4    ýúþþýúþzCTestFrameFlexArithmetic.test_frame_multiindex_operations_part_align)r0   r1   r2   rË   rI   r‘   Zskipifr   r’   rÑ   r×   rÞ   ræ   rì   rŒ   rî   rñ   rù   rû   r   r  r  r  r	  r  r  r  r"  r#  r   r   r   r   rÇ   ä  s8   
(



	

rÇ   c                   @   s.  e Zd Zdd„ Zdd„ Zdd„ Zdd„ Zd	d
„ Zdd„ Zdd„ Z	e
j dddg¡dd„ ƒZe
j dddgde ddg¡eddƒeddgƒg¡dd„ ƒZdd„ Zdd„ Zdd „ Ze
j d!d"d#d$d%d&d'e d(d)¡d*fe d(d)¡d+fg¡e
jjd,ejejejejejejgd-d.„ d/�d0d1„ ƒƒZd2d3„ Z d4d5„ Z!d6S )7ÚTestFrameArithmeticc                 C   sJ   t ddgdd�}tddgddggƒ}|| }t||dœƒ}t ||¡ d S )	Nrq   rØ   r!   r{   r|   r„   r@   rÔ   ©r	   r   r9   r:   )r   rÄ   r;   rd   re   r   r   r   Útest_td64_op_nat_castingI  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|   TFr4   rŠ   r‹   ©rC   r_   r{   r@   r‰   ©rC   r_   r   ©r   r†   r‡   r   r˜   r   rC   r_   r   r9   r:   )r   r©   r;   Úrowlikere   rd   r   r   r   Ú'test_df_add_2d_array_rowlike_broadcastsS  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|   TFr4   rŠ   r‹   r'  r{   r   r•   é	   rN   r(  r)  )r   r©   r;   Úcollikere   rd   r   r   r   Ú'test_df_add_2d_array_collike_broadcastsh  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|   TFr4   rŠ   r‹   r'  r{   )ÚtdÚ&mark_array_manager_not_yet_implementedr   r†   r‡   r   r˜   r   ru   rr   ÚsqueezerC   r_   r9   r:   )r   r   rã   Úusing_array_managerr³   r©   r;   r*  Úexvalsre   rd   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rÀtj
dd„ | ¡ D ƒŽ }	t||j|j|	d�}
t||ƒ|ƒ}t ||
¡ d S )Nr/  r?   r„   r|   TFr4   rŠ   r‹   r'  r{   r   )TFc                 s   s   | ]}|j V  qd S r   )r™   ©rX   r[   r   r   r   Ú	<genexpr>±  s     zPTestFrameArithmetic.test_df_arith_2d_array_collike_broadcasts.<locals>.<genexpr>r(  )r2  r3  r   r†   r‡   r   r˜   r   ru   r4  Zcommon_typer™   rC   r_   r9   r:   )r   r   rã   r5  r³   r©   r;   r-  r6  r   re   rd   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©r[   r   r   r   Ú<lambda>À  ó    z:TestFrameArithmetic.test_df_bool_mul_int.<locals>.<lambda>Úic                 S   s   | j S r   r;  r=  r   r   r   r>  Ä  r?  )r   rº   Úapplyr€   r   )r   r;   rd   Ú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 )NrU   rV   r}   r{   r|   r„   rÁ   ZaaZbbÚccr@   r?   ©r   r9   r:   )r   rx   rd   re   r   r   r   Útest_arith_mixedÇ  s    z$TestFrameArithmetic.test_arith_mixedrY   r4   rŠ   c                 C   sB   t ddgddgdœƒ}||dƒ| }||| dƒ}t ||¡ d S )Ngš™™™™™ñ?gffffff
@g      @g333333ÀrÁ   r{   )r   r9   r¼   )r   Zall_arithmetic_functionsrY   r;   rd   re   r   r   r   Útest_arith_getitem_commuteÎ  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„   rE  )r   r™   r;   re   rd   r   r   r   Ú&test_arith_alignment_non_pandas_objectÕ  s    z:TestFrameArithmetic.test_arith_alignment_non_pandas_objectc                 C   s6  t tjdddd� dd¡dddgd	d
dgd�}| d	¡j}t |j| |j|jd�}t 	|| |¡ t |jj
| j
|j|jd�}t 	|j|dd�|¡ t|d ƒ}t |j| |j|jd�}t 	|| |¡ t |jj
| j
|j|jd�}t 	|j|dd�|¡ tjj|jŽ }t |j| |j|jd�}t 	| |¡|¡ d S )Nr{   rN   Úf8r!   r„   Úonerõ   ÚthreerU   rV   r}   r'  r^   r   r£   r_   )r   r   r†   r‡   rö   r™   r_   rC   r9   r:   r¤   rÕ   rH   rF   rs   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|   rB   rN   c                    s   g | ]}t |ˆƒˆ ƒ‘qS r   )ru   )rX   Ún©Únumr”   r   r   Ú
<listcomp>  s     zVTestFrameArithmetic.test_operations_with_interval_categories_index.<locals>.<listcomp>)rn   ZCategoricalIndexZinterval_ranger   ru   r9   r:   )r   rã   Úindrœ   r;   rd   re   r   rS  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)r5   r6   r5   r6   rB   r   )r   rn   rw   rÜ   r   r›   r9   r:   )r   r;   rª   rd   re   r   r   r   Útest_frame_with_frame_reindex  s    þû
 þz1TestFrameArithmetic.test_frame_with_frame_reindexzvalue, dtype)r{   Úi8)r´   rJ  )ì            rJ  )y              ð?Ú
complex128)rZ  r[  )Tr-   é   Únsú<m8[ns]ú<M8[ns]r”   c                 C   s   | j S r   )r0   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�r\d }
|dkr¸|t jksÊ|dkrÐ|t jkrÐd }nN|dkrÞd}n@|t j
k�rd}|dk�rtj�r|d	k�r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�r¼tj�r”|d	k�r”t}
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-   r4   r!   r_  r^  r[  z3ufunc 'remainder' not supported for the input typesz-numpy boolean subtract, the `-` operator, is r   zcannot perform __z7__ with this index type: (DatetimeArray|TimedeltaArray)rD   z+operator '.*' not implemented for .* dtypes)rv   ÚtruedivrÍ   rÕ   ró   r   r   r   r   rô   rò   r   rê   ÚUserWarningr0   rI   rJ   rb   r9   Úassert_produces_warningrð   rº   r¼   )r   r”   r   r   r   r   ÚskipÚelemr;   ÚinvalidÚwarnrL   rd   re   r   r   r   Útest_binop_other  sn    ü
÷ÿÿÿþýÿ"z$TestFrameArithmetic.test_binop_otherc                 C   s    t  tddgƒtddgƒg¡}t  tddgdd�tddgƒg¡}tddgddgg|d�}tddgddgg|d�}|| }tddgddgg|d�}t ||¡ d S )	Nr{   r|   r„   r@   ÚInt8r!   rB   r   ©r   Zfrom_arraysr	   r   r9   r:   ©r   ÚmidxZmidx2rx   ry   rd   re   r   r   r   Ú*test_arithmetic_midx_cols_different_dtypesv  s    "z>TestFrameArithmetic.test_arithmetic_midx_cols_different_dtypesc                 C   s    t  tddgƒtddgƒg¡}t  tddgdd�tddgƒg¡}tddgddgg|d�}tddgddgg|d�}|| }tddgddgg|d�}t ||¡ d S )	Nr{   r|   r„   r@   rh  r!   rB   rÏ   ri  rj  r   r   r   Ú:test_arithmetic_midx_cols_different_dtypes_different_order€  s    "zNTestFrameArithmetic.test_arithmetic_midx_cols_different_dtypes_different_orderN)"r0   r1   r2   r&  r+  r.  r7  r:  rC  rF  rI   r‘   r’   rG  r   r"   rŒ   r   rI  rN  rW  rX  Ztimedelta64Z
datetime64rv   rÕ   rò   ró   r`  rô   rÍ   rg  rl  rm  r   r   r   r   r$  H  sV   
 
 (ÿ
øþúöF
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jtdd	�� | |k W 5 Q R X t | j d
¡| j	d�}tjtdd	�� ||k W 5 Q R X d S )Nr?   r„   r|   r4   rŠ   rB   r!   znot alignedrD   zM8[ns])r   r   rF   rG   r‡   r	   rý   r™   r›   rC   r9   r:   rI   rJ   rK   r,   )r;   rÄ   rd   re   rª   r   r   r   Ú,test_frame_with_zero_len_series_corner_cases‹  s     rn  c                  C   sB   t ddgtjd�} tddgddgd�}| | }| }t ||¡ d S )Nr4   rŠ   ©rC   r   r{   r|   rÂ   )r   r   rý   r	   r9   r:   )r;   rÄ   rd   re   r   r   r   Ú,test_zero_len_frame_with_series_corner_cases   s
    rp  c                  C   sF   dt ddtjgƒi} t| ƒ}|jdd�}t dddgƒ}t ||¡ d S )NZOner4   g333333ó?r{   r£   r   )r	   r   r›   r   Úsumr9   r¼   )rœ   r;   rd   re   r   r   r   Ú+test_frame_single_columns_object_sum_axis_1ª  s     ÿrr  c                   @   sÈ  e Zd Zdd„ Zdd„ Zej dej	ej
ejejg¡dd„ ƒZej dd	d
g¡ej d¡dd„ ƒƒZej ddddddg¡dd„ ƒZdd„ Zdd„ Zdd„ Zdd„ Zdd„ Zdd „ Zej d!ejejejejejejg¡d"d#„ ƒZd$d%„ Zd&d'„ Zd(d)„ Z d*d+„ Z!d,d-„ Z"ej ddd.dd/d0dd1d2ddd3g¡d4d5„ ƒZ#ej d6d7d8d9gd:e$j%d7d8d9ge$j&d;�e'd7d<ƒg¡d=d>„ ƒZ(ej d6d7d8gd?e$ %d7d8g¡e'd7d9ƒg¡d@dA„ ƒZ)dBdC„ Z*dDdE„ Z+dFdG„ Z,dHdI„ Z-dJS )KÚTestFrameArithmeticUnsortedc                 C   sp   t jddddd�}ttj t|ƒ¡|dgd�}| d¡}|| }|jj	t
jksRt‚|| }|jj	t
jkslt‚d S )	Nz1/1/2011rN   ÚHú
US/Eastern)rS   ÚfreqÚtzrU   r^   zEurope/Moscow)rn   ro   r   r   rF   rG   rt   Ú
tz_convertr_   rw  r   Úutcr   )r   Úrngr;   Z	df_moscowrd   r   r   r   Ú*test_frame_add_tz_mismatch_converts_to_utc¼  s    
zFTestFrameArithmeticUnsorted.test_frame_add_tz_mismatch_converts_to_utcc                 C   sš   t jdddd�}ttj t|ƒd¡|d�}||d d d…  }|| }tj|jdd d…< t	 
||¡ |d d d… }|| tj t|ƒ¡¡ }t	 
||¡ d S )	Nz1/1/2000z1/1/2010r4   )rv  r„   rÂ   r|   r{   )rn   Zperiod_ranger   r   rF   rG   rt   r›   r°   r9   r:   ZtakeZpermutation)r   rz  Útsrd   re   Zhalfr   r   r   Útest_align_frameÇ  s    z,TestFrameArithmeticUnsorted.test_align_framer”   c                 C   sÖ   t dddd gddddgdœtd�}| tj¡}||dƒ}||dƒ t¡}d |t |¡< t 	||¡ |||ƒ}|||ƒ t¡}d |t |¡< t 	||¡ ||| d	¡ƒ}t 	||¡ || d	¡|ƒ}tj	||d
d� d S )Nr|   ç      @é{   r{   r„   r@   )Úcol1Zcol2r!   r¨   F)Zcheck_dtype)
r   r  r  r   r›   r*   ÚcomZisnar9   r:   )r   r”   r;   Zfilledrd   re   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 )Nr5   )ru   r-   r€   r   )r   r”   r=   rä   rd   r   r   r   Ú%test_logical_typeerror_with_non_validï  s    zATestFrameArithmeticUnsorted.test_logical_typeerror_with_non_validrÕ   rò   ró   rú   r`  c                    s(  t jtdƒdddgdddggdd	d
gd�}tt d¡ dd¡|dddgd� ¡ ‰ tj	‰t
t|d ƒ‰ˆd krnd S tdddgdddgƒ}t
ˆ |ƒ|d
dd�}t ‡ ‡‡fdd„| ¡ D ƒ¡ ¡ }t ||¡ tddgddgƒ}t
ˆ |ƒ|d	dd�}t ‡ ‡‡fdd„| ¡ D ƒ¡ ˆ ¡ ¡ }t ||¡ d S )NÚabcrK  rõ   rL  r{   r|   r„   ÚfirstÚsecondÚthirdr  éQ   é   Zvalue1Zvalue2Zvalue3r^   r´   r  g      Y@r   )r
  r.   c                    s:   g | ]2\}}ˆˆ j ˆd d …d d …|f d d …f |ƒ‘qS r   ©rr   ©rX   r@  Úv©r;   ÚidxZopar   r   rU    s     zETestFrameArithmeticUnsorted.test_binary_ops_align.<locals>.<listcomp>c                    s4   g | ],\}}ˆˆ j ˆd d …|f d d …f |ƒ‘qS r   r‹  rŒ  rŽ  r   r   rU    s     )r   r  rH   r   r   r†   r‡   Z
sort_indexrn   Z
IndexSliceru   rv   r	   ÚconcatÚitemsr9   r:   Zreindex_like)r   r”   r_   r[   rd   re   r   rŽ  r   Útest_binary_ops_align÷  s4    þý
ÿ ÿÿz1TestFrameArithmeticUnsorted.test_binary_ops_alignc                 C   s2  t  ddgddgg¡}ttjddd�|d�}td	d
dœƒ}| ¡ }ddg|j_| ¡ }d|j	_
|j|d	d	d�}|j|d	d	d�}|j|d	d	d�}|j|d	d	d�}	|j|d	dd�}
|j|d	dd�}ttjd	d
d	d
gd	d
d	d
ggdd�|d�}||fD ]}t ||¡ qðddg|j_||	|
|fD ]}t ||¡ �qd S )Nr4   rŠ   rU   rV   )r|   r@   rü   r!   rB   r{   r|   rT   Zlvl0Zlvl1)r.   r
  )r   r  r   r   r—   r	   r)   rC   r  r_   r¹   ró   r"   r9   r:   )r   rk  r;   Úsrª   Ús2Zres1rÅ   Zres3Zres4Zres5Zres6r<   r=   r   r   r   Ú&test_binary_ops_align_series_dataframe  s,      ÿzBTestFrameArithmeticUnsorted.test_binary_ops_align_series_dataframec                 C   sŽ   t jdddgdd�}| d¡d d… }| d¡d	d … }td
d	dgi|d�}td
d	d	gi|d�}td
tjdtjgi|d�}t || |¡ d S )Nz
2011-01-01z
2011-01-02z
2011-01-03ÚUTC)rw  z
Asia/Tokyor|   ru  r{   r4   rÂ   r„   )rn   ZDatetimeIndexrx  r   r   r›   r9   r:   )r   ÚbaseZidx1Zidx2r®   rª   r<   r   r   r   Ú test_add_with_dti_mismatched_tzs=  s    z<TestFrameArithmeticUnsorted.test_add_with_dti_mismatched_tzsc                 C   s  |  |jd d d… ¡}|d= tj|jd |jd …df< || }|d  ¡ j}|d d  ¡ }t |d  ¡ |j| ¡ tj|j|j 	|¡ < t |d |j|d j ¡ t 
|d   |j¡d d… ¡ ¡ sÎt‚t 
|d ¡ ¡ sät‚|| }t |j|j¡ || }	t 
|d ¡ ¡ �st‚t 
|	d ¡ ¡ �s4t‚|tƒ  }
t 
|
j¡ ¡ �sTt‚tƒ | }t 
|j¡ ¡ �stt‚tƒ tƒ  }|j�sŒt‚|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‹   r4   r•   rÏ   rB   rý   r!   )rš   r_   r   r›   rr   Zdropnar)   r9   r¼   ÚisinÚisnanr€   r   Úassert_index_equalr   r™   r¿   rC   r:   r   )r   rä   rå   rë   Z
frame_copyrM  Zindexerr<   Z
self_addedZ	added_revZ
plus_emptyZ
empty_plusZempty_emptyÚreverser   r   r   Útest_combineFrameG  s@    &

z-TestFrameArithmeticUnsorted.test_combineFramec           
      C   s\  |  |jd ¡}|| }| ¡ D ] \}}t ||| ||  ¡ q | ¡ }d|d< t|ƒ}|| }	| ¡ D ] \}}t |	| |||  ¡ qjd|	ks˜t‚t 	|	d ¡ 
¡ s®t‚|| }t 
|j|jk¡sÌt‚|| 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ý   )r4   rŠ   r‹   r  Zint32)rö   r_   r‘  r9   r¼   Zto_dictr	   r   r   rš  r€   rº   r   r*   r   r   )
r   rä   rå   rë   r  rM  Úkeyr“  Zlarger_seriesZlarger_addedr   r   r   Útest_combine_series„  s8     ÿ ÿz/TestFrameArithmeticUnsorted.test_combine_seriesc                 C   sx  |d }|j |dd�}| ¡ D ]`\}}|| }tj|| |dd� || j|ksTt‚|j|jkrp|jdks~t‚q|jd kst‚q|d d… }|j |dd�}t |j|j¡ |d d… }	|j |	dd�}
t ||
¡ |j |d d… dd�}t	t
j|j|jd�}t ||¡ |d d… j |dd�}t	t
j|j|jd�}t ||¡ |d d	… jg d
�}|j|dd�}t|ƒt|ƒk�stt‚d S )Nr4   r_   r£   F)Zcheck_nameséûÿÿÿr   r^   r{   rB   )rÕ   r‘  r9   r¼   r¹   r   r›  r_   r:   r   r   r›   rC   rš   ró   rt   )r   Zdatetime_framer|  rM  rž  rY   rd   Zsmaller_frameZsmaller_addedZ
smaller_tsZsmaller_added2re   Úframer   r   r   Útest_combine_timeseries¬  s@      ÿ  ÿz3TestFrameArithmeticUnsorted.test_combine_timeseriesc                 C   s’   |d }t  |j|jd ¡ |d }| ¡ D ] \}}t  |j|| jd ¡ q,t|dd id� tƒ d }|j tƒ j¡s|t‚t	|j
ƒdksŽt‚d S )Nr|   r‹   r!   r   )r9   Úassert_numpy_array_equalr™   r‘  r   r   r_   Úequalsr   rt   rC   )r   rä   rå   rd   r}   r“  r   r   r   Útest_combineFuncÚ  s    
z,TestFrameArithmeticUnsorted.test_combineFuncÚfuncc              	   C   sð   t  ¡ }t  ¡ }| d¡}t |jd ¡}|||ƒ}t  |j||j|jƒ¡ d}	tj	t
t |	¡d�� |||ƒ W 5 Q R X |||ƒ}
t  |
j||j|jƒ¡ ||dƒ}t  |j||jdƒ¡ d}	tj	t
|	d�� |||d d… ƒ W 5 Q R X d S )NrU   )r{   r{   r{   zNUnable to coerce to Series/DataFrame, dimension must be <= 2: (30, 4, 1, 1, 1)rD   r   zQCan only compare identically-labeled \(both index and columns\) DataFrame objectsr|   )r9   ZmakeTimeDataFramerö   r   r—   r˜   r£  r™   rI   rJ   rK   ÚreÚescape)r   r÷   rä   r¦  r®   rª   rø   r�   rd   rL   rÊ   Úresult3r   r   r   Útest_comparisonsè  s*    

ÿ
 ÿ
ÿz,TestFrameArithmeticUnsorted.test_comparisonsc              	   C   sH   t dd„ dD ƒƒ}tt|ƒ}d}tjt|d�� ||dƒ W 5 Q R X d S )Nc                 S   s   i | ]}|d dddœ“qS )r5   r6   r7   )r[   r\   Úzr   r8  r   r   r   r]     s      zZTestFrameArithmeticUnsorted.test_strings_to_numbers_comparisons_raises.<locals>.<dictcomp>)rU   rV   r}   z;'[<>]=?' not supported between instances of 'str' and 'int'rD   r   )r   ru   rv   rI   rJ   rb   )r   Zcompare_operators_no_eq_ner;   rž   rL   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   r4   Úignore)re  Úraise)	r9   ZmakeDataFramer   r›   rr   r_   Zerrstater™   r£  )r   Z
missing_dfre   rd   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 shapesrD   ZABr…  r'  )r   r   r†   r‡   r"   Z
atleast_2dr¤   Útupler9   r:   r™   r£  rI   rJ   rK   r˜   r   rH   r_   rC   )r   r;   rV   Zb_rZb_cÚlstÚtupre   rd   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abcdefgrN   rÏ   r'  rÎ   r{   ZbedcfZbcdefrB   )rH   r   r   r†   rt   r‡   rŒ   r°   r)   rš   r9   r:   )r   rC   ZX_origÚZZblock1ÚsubsÚXZresult1rÊ   r©  Zresult4r   r   r   Útest_inplace_ops_alignmentn  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s´t	‚|j
|j
ksÄt	‚| ¡ }|}|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�sÄt	‚| ¡ }|}|d  d	7  < t| ¡ d	 d
dœƒ}t ||¡ t ||¡ |j
|j
k�s t	‚d S )Nr{   r|   r„   r   r•   rN   rO   rÏ   rþ   r5   rÁ   r4   )r	   r   r   rF   rp   r‡   r)   r9   r¼   r   Z_mgrr:   )	r   Zs_origÚdf_origr“  r”  r;   rª   r©   re   r   r   r   Útest_inplace_ops_identityž  sX    z5TestFrameArithmeticUnsorted.test_inplace_ops_identityÚandrÉ   rô   ÚorrÍ   Úxorc                 C   s¤   |dkrd S t dddgdddgdœƒ}d}|d	kr@d
dd
g|d< | ¡ }d|› d�}d|› d�}t||ƒ|ƒ t||ƒ|ƒ}t ||¡ t|ƒ}t|ƒ|ks t‚d S )Nrú   r´   rµ   r¶   r{   r|   r„   rT   )r»  r¼  r½  TFrU   Z__irß   )r   r)   ru   r9   r:   r  r   )r   r”   r;   ZoperandZdf_copyZiopre   r   r   r   Útest_inplace_ops_identity2×  s    z6TestFrameArithmeticUnsorted.test_inplace_ops_identity2Úvalr{   r|   r„   )r{   r|   r„   r!   r@   c                 C   s¨   dddg}dddg}t tj dd¡||d�}tjjj}t |||d	œ|jd
�}t	 
|||dƒd |¡ t dddgdddgdddgd	œ|jd
�}t	 
|||dƒd |¡ d S )Nr4   rŠ   r‹   r·  ÚYrµ  r„   r^   )r·  rÀ  rµ  rÂ   r_   r{   r|   rC   )r   r   rF   rG   rn   ÚcoreÚopsÚalign_method_FRAMEr_   r9   r:   )r   r¿  r_   rC   r;   Úalignre   r   r   r   Útest_alignment_non_pandasý  s    



 ÿz5TestFrameArithmeticUnsorted.test_alignment_non_pandasrH  c              	   C   sŠ   dddg}dddg}t tj dd¡||d�}tjjj}d	}tj	t
|d
�� |||dƒ W 5 Q R X tj	t
|d
�� |||dƒ W 5 Q R X d S )Nr4   rŠ   r‹   r·  rÀ  rµ  r„   r^   z5Unable to coerce to Series, length must be 3: given 2rD   r_   rC   )r   r   rF   rG   rn   rÁ  rÂ  rÃ  rI   rJ   rK   )r   r¿  r_   rC   r;   rÄ  rL   r   r   r   Ú)test_alignment_non_pandas_length_mismatch  s    


zETestFrameArithmeticUnsorted.test_alignment_non_pandas_length_mismatchc              	   C   sr  dddg}dddg}t tj dd¡||d�}tjjj}t d	d
dgdddgdddgg¡}t	 
|||dƒd	 t ||j|jd�¡ t	 
|||dƒd	 t ||j|jd�¡ d}t d	d
dgdddgg¡}tjt|d�� |||dƒ W 5 Q R X tjt|d�� |||dƒ W 5 Q R X t d¡}t d¡}tjt|d�� |||dƒ W 5 Q R X tjt|d�� |||dƒ W 5 Q R X d S )Nr4   rŠ   r‹   r·  rÀ  rµ  r„   r^   r{   r|   r@   r•   r?   r¨   r‰   r,  r_   rC   r°  rD   )r„   r„   r„   zGUnable to coerce to Series/DataFrame, dimension must be <= 2: (3, 3, 3))r   r   rF   rG   rn   rÁ  rÂ  rÃ  r"   r9   r:   r_   rC   rI   rJ   rK   Úzerosr§  r¨  )r   r_   rC   r;   rÄ  r¿  rL   r   r   r   Ú'test_alignment_non_pandas_index_columns$  s6    


"þþ
ÿzCTestFrameArithmeticUnsorted.test_alignment_non_pandas_index_columnsc              	   C   sF   t ddgdd gdœƒ}|d }t d ¡� t||ƒ|ƒ W 5 Q R X d S )NrO  rÁ   rŠ   )r   r9   rb  ru   ©r   rã   r;   rV   r   r   r   Útest_no_warningF  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 )NrO  rÁ   rŠ   ztakes 2 positional argumentsrD   r   )r   rI   rJ   rb   ru   rÉ  r   r   r   Útest_dunder_methods_binaryL  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!   rN   )rN   r{   z0.X)r   r†   r‡   r—   Úintr   r4  r*   r  Zmeanr9   r:   )r   r·  rÀ  r®   rª   rd   re   r   r   r   Útest_align_int_fill_bugS  s    
z3TestFrameArithmeticUnsorted.test_align_int_fill_bugN).r0   r1   r2   r{  r}  rI   r‘   r’   rv   rÕ   rò   ró   r`  r‚  Úfilterwarningsr„  r’  r•  r˜  r�  rŸ  r¢  r¥  rk   rl   rh   rg   ri   rj   rª  r¬  r¯  r´  r¸  rº  r¾  r   r"   rü   rŒ   rÅ  rÆ  rÈ  rÊ  rË  rÍ  r   r   r   r   rs  »  sv    ÿ


&
=(.þ
 	N09õþ
üþ	
(
"rs  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 )Nr4   r   r{   r|   rÂ   r´   ©r   r   r›   r9   r:   )rx   ry   rd   re   r   r   r   Útest_pow_with_realignmentb  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 )Nr4   r   r´   )r   r   r›   r9   r:   r¼   )rx   ry   re   rd   r   r   r   Útest_pow_nan_with_zerom  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Î   )rN   r„   rU   rV   r}   rB   r{   r|   r„   rÂ   rü   rÏ   ZInt64ro  )r   r   rF   rp   r	   Zto_numpyr‡   rC   r*   r9   r:   )r;   rÄ   re   Zdf_eard   r   r   r   Ú&test_dataframe_series_extension_dtypesz  s    
rÒ  c                     s  t j ddd¡} t| ƒ}| ¡  ddddœ¡}t j|jddddgf< | ¡  d	di¡}t j|jdd	gf< | ¡  dddd
œ¡}t j|jdt  dd	¡f< | ¡  ddddœ¡}t j|jdt  dd¡f< ||f||f||ffD ]6\‰ ‰ˆ ˆ }t‡ ‡fdd„ˆ j	D ƒƒ}t
 ||¡ qÚd S )Nr   iè  )rÎ   rN   r  )r{   r„   r¨   r{   r„   r¨   r•   )r|   r„   r@   r|   )r@   r•   r?   r@   c                    s   i | ]}|ˆ | ˆ|  “qS r   r   )rX   r@  ©rx   ry   r   r   r]   Ÿ  s      z6test_dataframe_blockwise_slicelike.<locals>.<dictcomp>)r   rF   rp   r   r)   r*   r›   r°   r†   rC   r9   r:   )r©   r®   rª   r«   Zdf4Zdf5r=   re   r   rÓ  r   Ú"test_dataframe_blockwise_slicelike‰  s    rÔ  zdf, col_dtyper´   rµ   g      @r~  ÚabrB   rý   rV   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 )	NrO  r¶   rÕ  rB   rV   g      ð¿rU   rÂ   )r   r   r›   rH   r*   r	   r9   r:   )r;   Z	col_dtypere   rd   r   r   r   Ú/test_dataframe_operation_with_non_numeric_types£  s    	 rÖ  c                  C   s`   t dggdgd�} t dddggdddgd�}| | }t tjddggdddgd�}t ||¡ d S )Nr   r‡  )rœ   rC   r†  rB   rÏ  )r®   rª   rd   re   r   r   r   Ú"test_arith_reindex_with_duplicates²  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|   rZ   zUnable to coerce list of r   z to Series/DataFramerD   )r   r+   rI   rJ   rK   )rØ  r;   rL   r   r   r   Ú"test_arith_list_of_arraylike_raise»  s    rÙ  c                 C   s€   t ddddgiƒ}| ¡ }|d }|j}|d7 }| rP|j|k	sBt‚t ||¡ n,|j|ks^t‚t ddddgiƒ}t ||¡ d S )Nr4   r{   r|   r„   r@   )r   r)   Z_valuesr   r9   r:   )Zusing_copy_on_writer;   r¹  r  Úvalsre   r   r   r   Ú%test_inplace_arithmetic_series_updateÇ  s    rÛ  c                  C   sŠ   t dggdgtjdgdggddgd�d�} t dggdgtdgdd�d�}t dggdgtjdgdggddgd�d�}| | }t ||¡ dS )	zP
    Regression test for: https://github.com/pandas-dev/pandas/issues/33765
    r{   rU   r   rV   r  r^   ©r¹   N)r   r   r  r   r9   r:   )r®   rª   re   rd   r   r   r   Ú!test_arithemetic_multiindex_alignÙ  s    ýýrÝ  c                  C   sF   t dtdƒtdƒƒ} | d }t t d¡tdƒtdƒƒ}t ||¡ d S )NTrÕ  Zcdr´   r…   )r   rH   r   r—   r9   r:   )r;   rd   re   r   r   r   Útest_bool_frame_mult_floatì  s    rÞ  c                 C   sV   t ddd g| d�}t dddg| d�}tddd g| d�}| ¡ | ¡  }t ||¡ d S )Nr{   r|   r!   r„   r   )r	   r   Zto_framer9   r:   )Zany_int_ea_dtypeZseries1Zseries2re   rd   r   r   r   Útest_frame_sub_nullable_intô  s
    rß  c                     sŽ   G ‡ ‡fdd„dt ƒ‰G ‡fdd„dtƒ‰ ˆ ddddgd	d
dgdœƒ} | d }ˆ ddd	dgdddgdœƒ}t ||¡ | |  }t ||¡ d S )Nc                       s,   e Zd Ze‡fdd„ƒZe‡ fdd„ƒZdS )zEtest_frame_op_subclass_nonclass_constructor.<locals>.SubclassedSeriesc                    s   ˆ S r   r   r#   ©ÚSubclassedSeriesr   r   Ú_constructor  s    zRtest_frame_op_subclass_nonclass_constructor.<locals>.SubclassedSeries._constructorc                    s   ˆ S r   r   r#   )ÚSubclassedDataFramer   r   Ú_constructor_expanddim  s    z\test_frame_op_subclass_nonclass_constructor.<locals>.SubclassedSeries._constructor_expanddimN)r0   r1   r2   Úpropertyrâ  rä  r   ©rã  rá  r   r   rá     s   rá  c                       sD   e Zd ZdgZddœ‡ 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_dataNr   c                    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)	r0   r1   r2   Ú	_metadatar    rå  râ  rï  Ú__classcell__r   rà  rë  r   rã  	  s   
rã  Z	some_datar{   r|   r„   r@   r•   r?   rÁ   r‰   rN   é   r%  )Zsdfrd   re   r   ræ  r   Ú+test_frame_op_subclass_nonclass_constructorý  s    	ró  c                  C   sj   t ddƒ} t| jdddgiƒ}t| jdddgiƒ}|| j || j k}tdddg| jd�}t ||¡ d S )NÚColsz	col1 col2r{   r|   r„   TrÜ  )r   r   r€  r	   r9   r¼   )rô  Zq1Zq2rd   re   r   r   r   Útest_enum_column_equality!  s    
rõ  )AÚcollectionsr   r   r   Úenumr   rí  rv   r§  Znumpyr   rI   Zpandas.util._test_decoratorsÚutilZ_test_decoratorsr2  Zpandasrn   r   r   r   r	   Zpandas._testingZ_testingr9   Zpandas.core.commonrÁ  Úcommonr�  Zpandas.core.computationr
   r   Z#pandas.core.computation.expressionsr   r   Zpandas.tests.frame.commonr   r   Zfixturer   r   r3   r“   rÇ   r$  rn  rp  rr  rs  rÐ  rÑ  rÒ  rÔ  r‘   r’   rH   rÖ  r×  rÙ  rÛ  rÝ  rÞ  rß  ró  rõ  r   r   r   r   Ú<module>   sr   
 U H  f  E
     ,þþ
	.
	$