U
    ¾mœdº ã                   @   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   ú[/home/sam/Atlas/atlas_env/lib/python3.8/site-packages/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é   é   ZABCD©Úcolumnsz+The truth value of a DataFrame is ambiguous©Úmatchr   )r   r   ÚrandomÚrandnÚlistÚpytestÚraisesÚ
ValueError)r   r;   Úmsgr   r   r   Útest_frame_in_list[   s    z'TestFrameComparisons.test_frame_in_listz	arg, arg2é
   ©ÚsizeÚ20010101©Úperiods©ÚaÚbc              	      s   t |ƒ‰ t |ƒ‰ˆ ˆk}t ‡ ‡fdd„ˆ jD ƒˆ jˆ jd�}t ||¡ ˆ ˆk}t ‡ ‡fdd„ˆ jD ƒˆ jˆ jd�}t ||¡ dddg}d |¡}tjt|d	�� ˆ ˆk W 5 Q R X tjt|d	�� ˆ ˆk W 5 Q R X tjt|d	�� ˆ ˆk  W 5 Q R X tjt|d	�� ˆ ˆk W 5 Q R X d S )
Nc                    s   i | ]}|ˆ | ˆ| k“qS r   r   ©Ú.0Úcol©ÚxÚyr   r   Ú
<dictcomp>˜   s      z@TestFrameComparisons.test_comparison_invalid.<locals>.<dictcomp>©ÚindexrB   c                    s   i | ]}|ˆ | ˆ| k“qS r   r   rV   rY   r   r   r\       s      z=Invalid comparison between dtype=datetime64\[ns\] and ndarrayzinvalid type promotionzbThe DTypes <class 'numpy.dtype\[.*\]'> and <class 'numpy.dtype\[.*\]'> do not have a common DType.ú|rC   )	r   rB   r^   r9   r:   ÚjoinrH   rI   Ú	TypeError)r   ÚargZarg2ÚresultÚexpectedZmsgsrK   r   rY   r   Útest_comparison_invalidb   s:    0ýýû	
z,TestFrameComparisons.test_comparison_invalidzleft, right)ÚgtÚlt)rg   rf   )ÚgeÚle)ri   rh   )Úeqrj   )Únerk   c           	   	   C   sœ  t tjddd�tjddd�tjjddd�tj d¡tt 	d¡ƒdœƒ}tj
|jtj t|ƒ¡dkd	f< tt|ƒ}tt|ƒ}|d
kr°||t d¡ƒ}|t d¡|ƒ}t ||¡ nXd}tjt|d�� ||t d¡ƒ W 5 Q R X tjt|d�� |t d¡|ƒ W 5 Q R X |d
k�r@||t d¡ƒ}|t d¡|ƒ}t ||¡ nXd}tjt|d�� ||t d¡ƒ W 5 Q R X tjt|d�� |t d¡|ƒ W 5 Q R X d S )NrP   rM   rQ   Z20010102i Êš;rN   )Zdates1Údates2ZintcolZfloatcolZ	stringcolg      à?rl   )rj   rk   Z20010109zL'(<|>)=?' not supported between instances of 'numpy.ndarray' and 'Timestamp'rC   ZnatzJ'(<|>)=?' not supported between instances of 'numpy.ndarray' and 'NaTType')r   ÚpdÚ
date_ranger   rE   ÚrandintrF   rG   r9   ZrandsÚNaTÚlocÚrandÚlenÚgetattrÚoperatorÚ	Timestampr:   rH   rI   ra   )	r   ÚleftÚrightr;   Zleft_fZright_frd   rc   rK   r   r   r   Útest_timestamp_compare¹   s>    
ûÿ	 

ÿ
ÿz+TestFrameComparisons.test_timestamp_comparec                 C   s\   t ddgddggƒ}t ddgddggƒ}||k}| ¡  ¡ r@t‚||k}| ¡  ¡ sXt‚d S )Nz
1989-08-01é   é   rT   rU   ÚcÚd)r   r/   ÚAssertionErrorÚall)r   r;   Úotherrc   r   r   r   Útest_mixed_comparisonñ   s    z*TestFrameComparisons.test_mixed_comparisonc                 C   s^   t t d¡ d¡ƒ}t ddgddgddggƒ}|dk}t ||¡ |ddgk}t ||¡ d S )Nr?   ©é   r{   FT©r{   r{   r{   )r   r   ÚarangeÚreshaper9   r:   )r   r;   rd   rc   r   r   r   Ú test_df_boolean_comparison_errorþ   s    z5TestFrameComparisons.test_df_boolean_comparison_errorc                 C   s@   t tj dd¡tdƒdddgd�}| d ¡}| ¡  ¡ r<t‚d S )Né   rƒ   r4   ÚBÚCr]   )r   r   rE   rF   ÚrangeÚ__eq__r/   r~   ©r   r;   rc   r   r   r   Útest_df_float_none_comparison  s    "
z2TestFrameComparisons.test_df_float_none_comparisonc                 C   s¼   t dddœdddœgƒ}|jdk}t || |jdd…d d …f ¡ t ||  |jdd…d d …f ¡ |jdk}t || |jdd…d d …f ¡ t ||  |jdd…d d …f ¡ d S )Nrz   r5   rS   r{   r6   r   )r   rT   r9   r:   rq   rU   )r   r;   Zmask_aZmask_br   r   r   Útest_df_string_comparison  s    
"$
"z.TestFrameComparisons.test_df_string_comparisonN)r0   r1   r2   r>   rL   rH   ÚmarkÚparametrizer   rE   ro   rm   rn   re   ry   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Úoprj   rk   rf   rg   rh   ri   c              	   C   sH  t j dd¡}t j dd¡}t|ƒ}t|ƒ}t  |jd ¡}| |¡j ¡ sPt	‚| 
|¡j ¡ rdt	‚t||ƒ}tt|ƒ}t ||ƒ|||ƒ¡ |jdd …dd …f  ¡ }	||	ƒ}
|||	j|j|jd�ƒ}t |
|¡ t ||jƒ|||jƒ¡ t |dƒ||dƒ¡ d}t |t jƒ||t jƒ¡ tjt|d�� ||ƒ W 5 Q R X d S )	Né   rƒ   )rz   rƒ   rz   r]   r   ú$Unable to coerce to Series/DataFramerC   )r   rE   rF   r   ÚonesÚshaperj   Úvaluesr   r~   rk   r/   rt   ru   r9   r:   rq   r)   Úreindexr^   rB   ÚnanrH   rI   rJ   )r   r“   ÚdataZ
other_datar;   r€   Úndim_5ÚfÚoZpart_oÚrsZxprK   r   r   r   Útest_bool_flex_frame  s(    

z-TestFrameFlexComparisons.test_bool_flex_frameÚboxc                 C   s  t j dd¡}t|ƒ}|t j d¡ƒ}|t j d¡ƒ}|j|dd�}| |¡}|j|dd�}| |¡}	t ||t|ƒk¡ t ||	 ¡ t || ¡ t ||j	 |¡j	¡ t || t
|ƒ¡¡ t ||jt|ƒdd�¡ t ||jt
|ƒdd�¡ |j|dd�}
| |¡}|j|dd�}| |¡}t ||t|ƒk¡ t || ¡ t |
| ¡ t |
|j	 |¡j	¡ |j|dd�}| |¡}|j|dd�}| |¡}t ||t|ƒk¡ t || ¡ t || ¡ t ||j	 |¡j	¡ tt j d¡ƒ}tt j d¡ƒ}d S )Nr”   rƒ   r   ©r.   )r   rE   rF   r   rj   rk   r9   r:   r	   ÚTrG   rf   ri   rh   rg   )r   r¡   r›   r;   Zidx_serZcol_serZidx_eqZcol_eqZidx_neZcol_neZidx_gtZcol_gtZidx_leZcol_leZidx_geZcol_geZidx_ltZcol_ltr   r   r   Útest_bool_flex_series=  sB    





z.TestFrameFlexComparisons.test_bool_flex_seriesc                 C   s²   t tj dd¡ƒ}tj|jd< | |¡}|jd r6t‚| |¡}|jd sNt‚| 	|¡}|jd rft‚| 
|¡}|jd r~t‚| |¡}|jd r–t‚| |¡}|jd r®t‚d S )Nr”   rƒ   ©r   r   )r   r   rE   rF   rš   rq   rj   r~   rk   rf   rg   rh   ri   )r   r;   rŸ   r   r   r   Útest_bool_flex_frame_nah  s    





z0TestFrameFlexComparisons.test_bool_flex_frame_nac           	   	   C   sp  t  t jddt jg¡}t  dt jdd g¡}td|iƒ}td|iƒ}d ddg¡}tjt|d	�� | |¡ W 5 Q R X tjt|d	�� |d  |d ¡ W 5 Q R X tjt|d	�� |j	|j	k W 5 Q R X | 
|¡}|j	 ¡ 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 )
Nrz   r?   y               @é   rT   r_   z9'>' not supported between instances of '.*' and 'complex'z unorderable types: .*complex\(\)rC   )r   r"   rš   r   r`   rH   rI   ra   rf   r˜   rk   r   r~   )	r   ÚarrZarr2r;   Údf2rK   rŸ   Zarr3Údf3r   r   r   Ú"test_bool_flex_frame_complex_dtypey  s2    þÿ
z;TestFrameFlexComparisons.test_bool_flex_frame_complex_dtypec                 C   sV   t ddtjdgiƒ}t ddt ¡ dgiƒ}| |¡}t ddddgiƒ}t ||¡ d S )NrX   r5   r6   FT)r   r   rš   r   Únowrk   r9   r:   )r   Údf1r©   rc   r<   r   r   r   Ú!test_bool_flex_frame_object_dtype   s
    
z:TestFrameFlexComparisons.test_bool_flex_frame_object_dtypec                 C   s”   t tjgƒ}|tjk}|jd  ¡ dks,t‚| tj¡}|jd  ¡ dksNt‚|tjk}|jd  ¡ dksnt‚| tj¡}|jd  ¡ dks�t‚d S )Nr¥   FT)r   rm   rp   ÚilocÚitemr~   rj   rk   r�   r   r   r   Útest_flex_comparison_nat¨  s    

z1TestFrameFlexComparisons.test_flex_comparison_natÚopnamec                 C   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 )
Nrz   r{   rƒ   ç      ð?ç       @ç      @rY   Úcount©r^   Úname)
r   rt   ÚdtypesÚvalue_countsr9   Úassert_series_equalr	   r   r   r-   )r   r²   r;   Úconstrc   r   r   r   Ú&test_df_flex_cmp_constant_return_typesº  s     ÿz?TestFrameFlexComparisons.test_df_flex_cmp_constant_return_typesc                 C   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 )Nrz   r{   rƒ   r³   r´   rµ   rY   r   r¶   r·   )r   r¯   rt   r¹   rº   r9   r»   r	   r   r   r-   )r   r²   r;   r¼   Úemptyrc   r   r   r   Ú,test_df_flex_cmp_constant_return_types_emptyÅ  s     ÿzETestFrameFlexComparisons.test_df_flex_cmp_constant_return_types_emptyc                 C   sŽ   t j dddg¡}t||dœƒ}tddgƒ}|j|dd�}tddgddgdœƒ}t ||¡ tddgdd	gd
�}|j|dd�}t ||¡ d S )Nrz   r{   rƒ   ©r4   r‰   r   r¢   Fr4   r‰   ©r^   )rm   ZIntervalIndexZfrom_breaksr   r	   rj   r9   r:   )r   Úiir;   Úserr=   rd   Zser2Úres2r   r   r   Ú-test_df_flex_cmp_ea_dtype_with_ndarray_seriesÑ  s    zFTestFrameFlexComparisons.test_df_flex_cmp_ea_dtype_with_ndarray_seriesN)r0   r1   r2   rH   r�   r‘   r    r   r"   r	   r¤   r¦   r«   r®   r±   r½   r¿   rÅ   r   r   r   r   r’     s   

*'


r’   c                   @   sH  e Zd Zdd„ Zejje dd�ej dddg¡dd	„ ƒƒZ	d
d„ Z
dd„ Zdd„ Zej ddddg¡dd„ ƒZej deddƒ¡dd„ ƒZdd„ Zej ddddd g¡d!d"„ ƒZd#d$„ Zej d%d&d'g¡d(d)„ ƒZd*d+„ Zd,d-„ Zd.d/„ Zej ddddd0g¡d1d2„ ƒZej d3d4d5g¡d6d7„ ƒZd8d9„ Zd:d;„ Zd<d=„ Zd>d?„ Zd5S )@ÚTestFrameFlexArithmeticc                    st   t  d¡}t|ƒ‰tˆˆdœƒ‰ ˆ jˆdd�}t‡ ‡fdd„ˆ jD ƒƒ}t ||¡ ˆ jˆjdd�}t ||¡ d S )Nrƒ   rÀ   r   r¢   c                    s   i | ]}|ˆ | ˆ “qS r   r   rV   ©r;   rÃ   r   r   r\   í  s      z?TestFrameFlexArithmetic.test_floordiv_axis0.<locals>.<dictcomp>)	r   r…   r	   r   ÚfloordivrB   r9   r:   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 )
Néd   rz   éÿÿÿÿr³   rŠ   r   r¢   c                    s   i | ]}|ˆˆ | ˆƒ“qS r   r   rV   ©r;   r“   rÃ   r   r   r\     s      zLTestFrameFlexArithmetic.test_floordiv_axis0_numexpr_path.<locals>.<dictcomp>)rt   ru   r   r…   r   r†   r   rB   r9   r:   r˜   )r   r²   r¨   rc   rd   rÉ   r   rÏ   r   Ú test_floordiv_axis0_numexpr_pathô  s    
"z8TestFrameFlexArithmetic.test_floordiv_axis0_numexpr_pathc                 C   sf   t jddd�}t jddd�}t|ƒ}t||dœƒ}|j|dd�}t|| || dœƒ}t ||¡ d S )Nú
2016-01-01rM   rQ   Ú1©r   rz   r   r¢   )rm   rn   Ztimedelta_ranger	   r   Úaddr9   r:   )r   ÚdtiZtdiZtserr;   rc   rd   r   r   r   Útest_df_add_td64_columnwise  s    z3TestFrameFlexArithmetic.test_df_add_td64_columnwisec                 C   sŠ   t jddd�}tdddgdd�}t||d	œƒ}t||d	œƒ}t jd
d� ¡ }|j||d�}ttdddgdd�|d d	œƒ}t ||¡ d S )NrÑ   rƒ   rQ   z1 Dayrp   z2 Daysútimedelta64[ns]r!   rÀ   rz   )Údays©Ú
fill_valuez
2016-01-02z
2016-01-03z
2016-01-05zdatetime64[ns]r{   )	rm   rn   r	   r   Ú	TimedeltaZto_timedelta64rÔ   r9   r:   )r   rÕ   rÃ   r;   r€   Úfillrc   rd   r   r   r   Ú$test_df_add_flex_filled_mixed_dtypes  s     ÿüÿz<TestFrameFlexArithmetic.test_df_add_flex_filled_mixed_dtypesc                    s|   |‰ ‡ fdd„}t |ˆ ƒd| ƒ}||d| ƒ}t ||¡ t |ˆ ƒd| ƒ}||d| ƒ}t ||¡ t|dd id� d S )Nc                    s2   ˆ   d¡r"ttˆ  dd¡ƒ|| ƒS ttˆ ƒ| |ƒS )NÚ__rÚ__)Ú
startswithrt   ru   ÚreplacerY   ©r“   r   r   r�   +  s    
z8TestFrameFlexArithmetic.test_arith_flex_frame.<locals>.fr{   rŠ   r!   )rt   r9   r:   r   )r   Úall_arithmetic_operatorsÚfloat_frameÚmixed_float_framer�   rc   rd   r   râ   r   Útest_arith_flex_frame%  s    z-TestFrameFlexArithmetic.test_arith_flex_framer“   Ú__add__Ú__sub__Ú__mul__c           
      C   sö   t t|ƒ}t ||ƒd| ƒ}||d| ƒ}d }	|dkrBdd dœ}	n|dkrRdd i}	tjrr|dkrrd| d j|	d< t ||¡ t||	d	� t ||ƒd| ƒ}||d| ƒ}t ||¡ t|dd id	� t ||ƒd| ƒ}||d| ƒ}t ||¡ d S )
Nr{   )rè   Zuint64)r‰   rŠ   )rç   ré   rŠ   r   r4   r!   )	rt   ru   r   ÚUSE_NUMEXPRr   r9   r:   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_mixedÚdimrƒ   r?   c              	   C   sB   |}t  d| ¡}d}tjt|d�� t||ƒ|ƒ W 5 Q R X d S )N)rz   r•   rC   )r   r–   rH   rI   rJ   rt   )r   rã   rä   rí   r“   r¨   rK   r   r   r   Útest_arith_flex_frame_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 )	Nrz   r   rÚ   rC   rƒ   rÙ   r^   ©r.   rÚ   )	rÔ   r9   r:   r   rš   rH   rI   ÚNotImplementedErrorr¯   )r   rä   Z	const_addrc   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 )NrT   Útwor   r¢   )Úxsrt   ru   r9   r:   r£   )r   Úsimple_framer“   r;   ÚrowrX   r�   r   r   r   Útest_arith_flex_series_ops€  s    


z2TestFrameFlexArithmetic.test_arith_flex_series_opsc                 C   sh   |}|  d¡}|d }t |j|d d�|| ¡ t | |¡|| ¡ t |j|dd�|j| j¡ d S )NrT   rõ   r¢   r   )rö   r9   r:   rÔ   Údivr£   )r   r÷   r;   rø   rX   r   r   r   Útest_arith_flex_seriesŒ  s    
z.TestFrameFlexArithmetic.test_arith_flex_seriesr   Úint64Úfloat64c                 C   sX   t t d¡ d¡|d�}t tjtjgddgddggƒ}|j|d dd	�}t ||¡ d S )
Nr?   r‚   r!   r³   ç      ø?g      ô?r   r^   r¢   )	r   r   r…   r†   rš   Úinfrú   r9   r:   )r   r   r;   rd   rc   r   r   r   Ú#test_arith_flex_series_broadcasting˜  s    z;TestFrameFlexArithmetic.test_arith_flex_series_broadcastingc              	   C   s�   t g td�}tddgd�}tddgddggddgd�}tjtd	d
�� |j|dd� W 5 Q R X tjtd	d
�� |j|d d dd� W 5 Q R X d S )Nr!   r4   r‰   rA   rz   r{   rƒ   r@   rÚ   rC   ÚErÙ   rï   )r	   Úobjectr   rH   rI   rð   rÔ   rò   )r   Zser_len0Zdf_len0r;   r   r   r   Útest_arith_flex_zero_len_raises   s    z7TestFrameFlexArithmetic.test_arith_flex_zero_len_raisesc                 C   s^   t jddt jdddgdd�}td|itd	ƒd
�}| d¡ d¡}|jddd�}t ||¡ d S )Nr   rz   rƒ   r@   r”   Úfloatr!   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 )Nrz   r{   rƒ   r@   r”   rÁ   r   )r   rò   r9   r:   )r   r­   r©   rd   rc   r   r   r   Ú'test_sub_alignment_with_duplicate_index¶  s
      
z?TestFrameFlexArithmetic.test_sub_alignment_with_duplicate_indexÚ__truediv__c                 C   sj   t t d¡tj d¡dœƒ}t||ƒ|ƒ}ddg|_ddg|_t||ƒ|ƒ}t ||¡ t	|ƒ |j
 d S )NrM   rÀ   r4   )r   r   r…   rE   rr   rt   rB   r9   r:   r'   r¹   )r   r“   r;   rd   rc   r   r   r   Ú&test_arithmetic_with_duplicate_columns¾  s    

z>TestFrameFlexArithmetic.test_arithmetic_with_duplicate_columnsÚlevelr   Nc                 C   sž   t dddgdddgdœƒ}|j d¡|_t dddgdddgdœƒ}|j ddg¡|_|j||d	�}t dddgdddgdœƒ}|j ddg¡|_t ||¡ d S )
Nr   rz   r{   rƒ   rÀ   ZL1))r4   rŠ   )r4   ÚDZL2)r
  )r   rB   Z	set_namesrÔ   r9   r:   )r   r
  r­   r©   rc   rd   r   r   r   Útest_broadcast_multiindexÊ  s    z1TestFrameFlexArithmetic.test_broadcast_multiindexc                 C   s¾   t dddgdddgdœtjdgdgd	ddggd
ddgd�d�}tdgtjdgdggdd
gd�d�}t dddgdddgdœtjdgdgd	ddggd
ddgd�d�}|j|d	d�}t ||¡ d S )Nrz   r{   rƒ   r@   r”   ©iÚ  iä  rT   rU   r   Úscenrô   Úid©ÚnamesrÁ   çš™™™™™Ù?çffffffö?ç333333@ç333333@çš™™™™™@gš™™™™™@r¢   ©r   r   Úfrom_productr	   rÔ   r9   r:   ©r   r;   Úseriesrd   rc   r   r   r   Ú test_frame_multiindex_operationsÙ  s(     ÿþþ ÿþz8TestFrameFlexArithmetic.test_frame_multiindex_operationsc                 C   sº   t dgdgdœtjdgdggddgd�d	�}td
ddgtjdgdgdddggdddgd�d	�}t dddgdddgdœtjdgdgdddggdddgd�d	�}|j|dd�}t ||¡ d S )Nrz   rƒ   r  rT   rU   r  rô   r  rÁ   ç      $@g      4@g      >@r   r{   r  g      &@é   g      ?@g      *@g      7@g     €@@r¢   r  r  r   r   r   Ú<test_frame_multiindex_operations_series_index_to_frame_indexñ  s(    þ ÿþ ÿþzTTestFrameFlexArithmetic.test_frame_multiindex_operations_series_index_to_frame_indexc              	   C   s¶   t dddgdddgdœtjdgdgd	ddggd
ddgd�d�}tdgtjdgdggdd
gd�d�}t tjtjdœtjdddddtjfgd
ddgd�d�}|j|d	d�}t 	||¡ d S )Nrz   r{   rƒ   r@   r”   r  rT   rU   r   r  rô   r  r  rÁ   r  r|   ©rT   rU   r   ©rT   rU   rz   )rT   rU   r{   r¢   )
r   r   r  r	   r   rš   Úfrom_tuplesrÔ   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 )Nrz   r{   rƒ   r@   r”   r  r  r   )rT   r|   r{   r  rô   r  r  rÁ   r  rU   rT   r  r  r  r  r   r¢   )
r   r   r!  r	   r  r   rš   rÔ   r9   r:   r  r   r   r   Ú+test_frame_multiindex_operations_part_align&  s4    ýúþþýúþzCTestFrameFlexArithmetic.test_frame_multiindex_operations_part_align)r0   r1   r2   rÊ   rH   r�   Zskipifr   r‘   rÐ   rÖ   rÝ   ræ   rì   r‹   rî   rñ   rù   rû   r   r  r  r  r	  r  r  r  r"  r#  r   r   r   r   rÆ   ä  s8   
(



	

rÆ   c                   @   s.  e Zd Zdd„ Zdd„ Zdd„ Zdd„ Zd	d
„ Zdd„ Zdd„ Z	e
j dddg¡dd„ ƒZe
j dddgde ddg¡eddƒeddgƒg¡dd„ ƒZdd„ Zdd„ Zdd „ Ze
j d!d"d#d$d%d&d'e d(d)¡d*fe d(d)¡d+fg¡e
jjd,ejejejejejejgd-d.„ d/�d0d1„ ƒƒZd2d3„ Z d4d5„ Z!d6S )7ÚTestFrameArithmeticc                 C   sJ   t ddgdd�}tddgddggƒ}|| }t||dœƒ}t ||¡ d S )	Nrp   r×   r!   rz   r{   rƒ   r@   rÓ   ©r	   r   r9   r:   )r   rÃ   r;   rc   rd   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Š   ©rB   r^   rz   r@   rˆ   ©rB   r^   r   ©r   r…   r†   r   r—   r~   rB   r^   r   r9   r:   )r   r¨   r;   Úrowlikerd   rc   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'  rz   r   r”   é	   rM   r(  r)  )r   r¨   r;   Úcollikerd   rc   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'  rz   )ÚtdÚ&mark_array_manager_not_yet_implementedr   r…   r†   r   r—   r~   rt   rq   ÚsqueezerB   r^   r9   r:   )r   r   rã   Úusing_array_managerr²   r¨   r;   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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'  rz   r   )TFc                 s   s   | ]}|j V  qd S r   )r˜   ©rW   rZ   r   r   r   Ú	<genexpr>±  s     zPTestFrameArithmetic.test_df_arith_2d_array_collike_broadcasts.<locals>.<genexpr>r(  )r2  r3  r   r…   r†   r   r—   r~   rt   r4  Zcommon_typer˜   rB   r^   r9   r:   )r   r   rã   r5  r²   r¨   r;   r-  r6  r   rd   rc   r   r   r   Ú)test_df_arith_2d_array_collike_broadcasts˜  s     
þz=TestFrameArithmetic.test_df_arith_2d_array_collike_broadcastsc                 C   sh   t ddgddggƒ}|d }|j dd„ ¡}|dk ¡ s<t‚d| }|j dd„ ¡}|dk ¡ sdt‚d S )NFTrz   c                 S   s   | j S r   ©Úkind©rZ   r   r   r   Ú<lambda>À  ó    z:TestFrameArithmetic.test_df_bool_mul_int.<locals>.<lambda>Úic                 S   s   | j S r   r;  r=  r   r   r   r>  Ä  r?  )r   r¹   Úapplyr   r~   )r   r;   rc   Úkindsr   r   r   Útest_df_bool_mul_int¸  s    z(TestFrameArithmetic.test_df_bool_mul_intc                 C   sL   t dddgdddgdœƒ}|| }t dd	d
gdddgdœƒ}t ||¡ d S )NrT   rU   r|   rz   r{   rƒ   rÀ   ZaaZbbÚccr@   r?   ©r   r9   r:   )r   rw   rc   rd   r   r   r   Útest_arith_mixedÇ  s    z$TestFrameArithmetic.test_arith_mixedrX   r4   r‰   c                 C   sB   t ddgddgdœƒ}||dƒ| }||| dƒ}t ||¡ d S )Ngš™™™™™ñ?gffffff
@g      @g333333ÀrÀ   rz   )r   r9   r»   )r   Zall_arithmetic_functionsrX   r;   rc   rd   r   r   r   Útest_arith_getitem_commuteÎ  s    z.TestFrameArithmetic.test_arith_getitem_commuter˜   rz   r{   ©rz   r{   rƒ   c                 C   sD   t ddgddgdœƒ}t ddgddgdœƒ}|| }t ||¡ d S )Nrz   rÀ   r{   rƒ   rE  )r   r˜   r;   rd   rc   r   r   r   Ú&test_arith_alignment_non_pandas_objectÕ  s    z:TestFrameArithmetic.test_arith_alignment_non_pandas_objectc                 C   s6  t tjdddd� dd¡dddgd	d
dgd�}| d	¡j}t |j| |j|jd�}t 	|| |¡ t |jj
| j
|j|jd�}t 	|j|dd�|¡ t|d ƒ}t |j| |j|jd�}t 	|| |¡ t |jj
| j
|j|jd�}t 	|j|dd�|¡ tjj|jŽ }t |j| |j|jd�}t 	| |¡|¡ d S )Nrz   rM   Úf8r!   rƒ   Úonerõ   ÚthreerT   rU   r|   r'  r]   r   r¢   r^   )r   r   r…   r†   rö   r˜   r^   rB   r9   r:   r£   rÔ   rG   rE   rr   r—   )r   r;   Zval1ÚaddedZval2Zval3r   r   r   Útest_arith_non_pandas_objectß  s$    ýz0TestFrameArithmetic.test_arith_non_pandas_objectc                    sn   |‰t  t jddd�¡}ddg}t|g|d�}d‰ t|ˆƒˆ ƒ}t‡ ‡fdd	„|D ƒg|d�}t ||¡ d S )
Nç        r´   )ÚstartÚendrz   r{   rA   rM   c                    s   g | ]}t |ˆƒˆ ƒ‘qS r   )rt   )rW   Ún©Únumr“   r   r   Ú
<listcomp>  s     zVTestFrameArithmetic.test_operations_with_interval_categories_index.<locals>.<listcomp>)rm   ZCategoricalIndexZinterval_ranger   rt   r9   r:   )r   rã   Úindr›   r;   rc   rd   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   rA   r   )r   rm   rv   rÛ   r   rš   r9   r:   )r   r;   r©   rc   rd   r   r   r   Útest_frame_with_frame_reindex  s    þû
 þz1TestFrameArithmetic.test_frame_with_frame_reindexzvalue, dtype)rz   Úi8)r³   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)rC   z+operator '.*' not implemented for .* dtypes)ru   ÚtruedivrÌ   rÔ   ró   r   r   r   r   rô   rò   r   rê   ÚUserWarningr0   rH   rI   ra   r9   Úassert_produces_warningrð   r¹   r»   )r   r“   r   r   r   r   ÚskipÚelemr;   ÚinvalidÚwarnrK   rc   rd   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 )	Nrz   r{   rƒ   r@   ÚInt8r!   rA   r   ©r   Zfrom_arraysr	   r   r9   r:   ©r   ÚmidxZmidx2rw   rx   rc   rd   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 )	Nrz   r{   rƒ   r@   rh  r!   rA   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  rH   r�   r‘   rG  r   r"   r‹   r   rI  rN  rW  rX  Ztimedelta64Z
datetime64ru   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‰   rA   r!   znot alignedrC   zM8[ns])r   r   rE   rF   r†   r	   rý   r˜   rš   rB   r9   r:   rH   rI   rJ   r,   )r;   rÃ   rc   rd   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‰   ©rB   r   rz   r{   rÁ   )r   r   rý   r	   r9   r:   )r;   rÃ   rc   rd   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ó?rz   r¢   r   )r	   r   rš   r   Úsumr9   r»   )r›   r;   rc   rd   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/2011rM   ÚHú
US/Eastern)rR   ÚfreqÚtzrT   r]   zEurope/Moscow)rm   rn   r   r   rE   rF   rs   Ú
tz_convertr^   rw  r   Úutcr~   )r   Úrngr;   Z	df_moscowrc   r   r   r   Ú*test_frame_add_tz_mismatch_converts_to_utc¼  s    
zFTestFrameArithmeticUnsorted.test_frame_add_tz_mismatch_converts_to_utcc                 C   sš   t jdddd�}ttj t|ƒd¡|d�}||d d d…  }|| }tj|jdd d…< t	 
||¡ |d d d… }|| tj t|ƒ¡¡ }t	 
||¡ d S )	Nz1/1/2000z1/1/2010r4   )rv  rƒ   rÁ   r{   rz   )rm   Zperiod_ranger   r   rE   rF   rs   rš   r¯   r9   r:   ZtakeZpermutation)r   rz  Útsrc   rd   Zhalfr   r   r   Útest_align_frameÇ  s    z,TestFrameArithmeticUnsorted.test_align_framer“   c                 C   sÖ   t dddd gddddgdœtd�}| tj¡}||dƒ}||dƒ t¡}d |t |¡< t 	||¡ |||ƒ}|||ƒ t¡}d |t |¡< t 	||¡ ||| d	¡ƒ}t 	||¡ || d	¡|ƒ}tj	||d
d� d S )Nr{   ç      @é{   rz   rƒ   r@   )Úcol1Zcol2r!   r§   F)Zcheck_dtype)
r   r  r  r   rš   r*   ÚcomZisnar9   r:   )r   r“   r;   Zfilledrc   rd   r   r   r   Útest_operators_none_as_naÔ  s"     ÿ

z5TestFrameArithmeticUnsorted.test_operators_none_as_nazop,res)rŒ   F)Ú__ne__Tz ignore:elementwise:FutureWarningc                 C   s*   t ||ƒdƒ}t| ¡  ¡ ƒ|ks&t‚d S )Nr5   )rt   r-   r   r~   )r   r“   r=   rä   rc   r   r   r   Ú%test_logical_typeerror_with_non_validï  s    zATestFrameArithmeticUnsorted.test_logical_typeerror_with_non_validrÔ   rò   ró   rú   r`  c                    s(  t jtdƒdddgdddggdd	d
gd�}tt d¡ dd¡|dddgd� ¡ ‰ tj	‰t
t|d ƒ‰ˆd krnd S tdddgdddgƒ}t
ˆ |ƒ|d
dd�}t ‡ ‡‡fdd„| ¡ D ƒ¡ ¡ }t ||¡ tddgddgƒ}t
ˆ |ƒ|d	dd�}t ‡ ‡‡fdd„| ¡ D ƒ¡ ˆ ¡ ¡ }t ||¡ d S )NÚabcrK  rõ   rL  rz   r{   rƒ   ÚfirstÚsecondÚthirdr  éQ   é   Zvalue1Zvalue2Zvalue3r]   r³   r  g      Y@r   )r
  r.   c                    s:   g | ]2\}}ˆˆ j ˆd d …d d …|f d d …f |ƒ‘qS r   ©rq   ©rW   r@  Úv©r;   ÚidxÚ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  rG   r   r   r…   r†   Z
sort_indexrm   Z
IndexSlicert   ru   r	   ÚconcatÚitemsr9   r:   Zreindex_like)r   r“   r^   rZ   rc   rd   r   rŽ  r   Útest_binary_ops_align÷  s4    þý
ÿ ÿÿz1TestFrameArithmeticUnsorted.test_binary_ops_alignc                 C   s2  t  ddgddgg¡}ttjddd�|d�}td	d
dœƒ}| ¡ }ddg|j_| ¡ }d|j	_
|j|d	d	d�}|j|d	d	d�}|j|d	d	d�}|j|d	d	d�}	|j|d	dd�}
|j|d	dd�}ttjd	d
d	d
gd	d
d	d
ggdd�|d�}||fD ]}t ||¡ qðddg|j_||	|
|fD ]}t ||¡ �qd S )Nr4   r‰   rT   rU   )r{   r@   rü   r!   rA   rz   r{   rS   Zlvl0Zlvl1)r.   r
  )r   r  r   r   r–   r	   r)   rB   r  r^   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  rz   r4   rÁ   rƒ   )rm   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Î   rA   rý   r!   )r™   r^   r   rš   rq   Zdropnar)   r9   r»   ÚisinÚisnanr   r~   Úassert_index_equalr   r˜   r¾   rB   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   rz   r  Zfloat32rŠ   r!   Zfloat16rÍ   rü   rý   )r4   r‰   rŠ   r  Zint32)rö   r^   r’  r9   r»   Ú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]   rz   rA   )rÔ   r’  r9   r»   r¸   r~   rœ  r^   r:   r   r   rš   rB   r™   ró   rs   )r   Zdatetime_framer|  rM  r   rX   rc   Zsmaller_frameZsmaller_addedZ
smaller_tsZsmaller_added2rd   Úframer   r   r   Útest_combine_timeseries¬  s@      ÿ  ÿz3TestFrameArithmeticUnsorted.test_combine_timeseriesc                 C   s’   |d }t  |j|jd ¡ |d }| ¡ D ] \}}t  |j|| jd ¡ q,t|dd id� tƒ d }|j tƒ j¡s|t‚t	|j
ƒdksŽt‚d S )Nr{   rŠ   r!   r   )r9   Úassert_numpy_array_equalr˜   r’  r   r   r^   Úequalsr~   rs   rB   )r   rä   rå   rc   r|   r”  r   r   r   Útest_combineFuncÚ  s    
z,TestFrameArithmeticUnsorted.test_combineFuncÚfuncc              	   C   sð   t  ¡ }t  ¡ }| d¡}t |jd ¡}|||ƒ}t  |j||j|jƒ¡ d}	tj	t
t |	¡d�� |||ƒ W 5 Q R X |||ƒ}
t  |
j||j|jƒ¡ ||dƒ}t  |j||jdƒ¡ d}	tj	t
|	d�� |||d d… ƒ W 5 Q R X d S )NrT   )rz   rz   rz   zNUnable to coerce to Series/DataFrame, dimension must be <= 2: (30, 4, 1, 1, 1)rC   r   zQCan only compare identically-labeled \(both index and columns\) DataFrame objectsr{   )r9   ZmakeTimeDataFramerö   r   r–   r—   r¥  r˜   rH   rI   rJ   ÚreÚescape)r   r÷   rä   r¨  r­   r©   rø   rœ   rc   rK   rÉ   Úresult3r   r   r   Útest_comparisonsè  s*    

ÿ
 ÿ
ÿz,TestFrameArithmeticUnsorted.test_comparisonsc              	   C   sH   t dd„ dD ƒƒ}tt|ƒ}d}tjt|d�� ||dƒ W 5 Q R X d S )Nc                 S   s   i | ]}|d dddœ“qS )r5   r6   r7   )rZ   r[   Úzr   r8  r   r   r   r\     s      zZTestFrameArithmeticUnsorted.test_strings_to_numbers_comparisons_raises.<locals>.<dictcomp>)rT   rU   r|   z;'[<>]=?' not supported between instances of 'str' and 'int'rC   r   )r   rt   ru   rH   rI   ra   )r   Zcompare_operators_no_eq_ner;   r�   rK   r   r   r   Ú*test_strings_to_numbers_comparisons_raises  s    ÿ
zFTestFrameArithmeticUnsorted.test_strings_to_numbers_comparisons_raisesc              	   C   sr   t  ¡ }tj|j|jd df< tjdd�� |jdk }W 5 Q R X tjdd�� |dk j}W 5 Q R X t  ||¡ d S )Nr   r4   Úignore)re  Úraise)	r9   ZmakeDataFramer   rš   rq   r^   Zerrstater˜   r¥  )r   Z
missing_dfrd   rc   r   r   r   Ú'test_comparison_protected_from_errstate  s    zCTestFrameArithmeticUnsorted.test_comparison_protected_from_errstatec              	   C   sž  t t d¡ d¡ƒ}t ddg¡}t ddg¡}|j}dddg}t|ƒ}t ddgddgddggƒ}||k}t 	||¡ |j
|k}t ||j
¡ d}	d}
d}tjt|	d	�� ||k W 5 Q R X tjt|	d	�� ||k W 5 Q R X ||k}t 	||¡ |j
|k}t ||j
¡ tjt|
d	�� ||k W 5 Q R X tjt|d	�� |j
|k W 5 Q R X t ddgddgddggƒ}||k}t 	||¡ tjt|	d	�� ||k W 5 Q R X tjt|	d	�� ||k W 5 Q R X ||k}t 	||¡ |j
|k}t ||j
¡ tjt|
d	�� ||k W 5 Q R X |j
j|jk�s$t‚t t d¡ d¡td
ƒtdƒd�}|j|_|j|_tjt|	d	�� ||k W 5 Q R X tjt|	d	�� ||k W 5 Q R X d S )Nr?   r‚   r{   FTz5Unable to coerce to Series, length must be 2: given 3ú,Unable to coerce to DataFrame, shape must bez4operands could not be broadcast together with shapesrC   ZABr…  r'  )r   r   r…   r†   r"   Z
atleast_2dr£   Útupler9   r:   r˜   r¥  rH   rI   rJ   r—   r~   rG   r^   rB   )r   r;   rU   Zb_rZb_cÚlstÚtuprd   rc   Zmsg1dZmsg2dZmsg2dbr   r   r   Útest_boolean_comparison   sf    



  ÿz3TestFrameArithmeticUnsorted.test_boolean_comparisonc                 C   sž  t dƒ}tt dt|ƒ ¡ dt|ƒ¡|tdƒd�}d|jd d …dd…f  ¡  }t dƒ}t dƒ}| ¡ }|| | j	|d	�}||  |7  < |j	|d	�}| ¡ }|| ||  j	|d	�}	||  || 7  < |j	|d	�}
t
 ||¡ t
 ||	¡ t
 ||
¡ | ¡ }|| | j	|d	�}||  |8  < |j	|d	�}| ¡ }|| ||  j	|d	�}	||  || 8  < |j	|d	�}
t
 ||¡ t
 ||	¡ t
 ||
¡ d S )
NZabcdefgrM   rÎ   r'  rÍ   rz   ZbedcfZbcdefrA   )rG   r   r   r…   rs   r†   r‹   r¯   r)   r™   r9   r:   )r   rB   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 )Nrz   r{   rƒ   r   r”   rM   rN   rÎ   rþ   r5   rÀ   r4   )r	   r   r   rE   ro   r†   r)   r9   r»   r~   Z_mgrr:   )	r   Zs_origÚdf_origr”  r•  r;   r©   r¨   rd   r   r   r   Útest_inplace_ops_identityž  sX    z5TestFrameArithmeticUnsorted.test_inplace_ops_identityÚandrÈ   rô   ÚorrÌ   Úxorc                 C   s¤   |dkrd S t dddgdddgdœƒ}d}|d	kr@d
dd
g|d< | ¡ }d|› d�}d|› d�}t||ƒ|ƒ t||ƒ|ƒ}t ||¡ t|ƒ}t|ƒ|ks t‚d S )Nrú   r³   r´   rµ   rz   r{   rƒ   rS   )r½  r¾  r¿  TFrT   Z__irß   )r   r)   rt   r9   r:   r  r~   )r   r“   r;   ÚoperandZdf_copyZioprd   r   r   r   Útest_inplace_ops_identity2×  s    z6TestFrameArithmeticUnsorted.test_inplace_ops_identity2Úvalrz   r{   rƒ   )rz   r{   rƒ   r!   r@   c                 C   s¨   dddg}dddg}t tj dd¡||d�}tjjj}t |||d	œ|jd
�}t	 
|||dƒd |¡ t dddgdddgdddgd	œ|jd
�}t	 
|||dƒd |¡ d S )Nr4   r‰   rŠ   r¹  ÚYr·  rƒ   r]   )r¹  rÃ  r·  rÁ   r^   rz   r{   rB   )r   r   rE   rF   rm   ÚcoreÚopsÚalign_method_FRAMEr^   r9   r:   )r   rÂ  r^   rB   r;   Úalignrd   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 2rC   r^   rB   )r   r   rE   rF   rm   rÄ  rÅ  rÆ  rH   rI   rJ   )r   rÂ  r^   rB   r;   rÇ  rK   r   r   r   Ú)test_alignment_non_pandas_length_mismatch  s    


zETestFrameArithmeticUnsorted.test_alignment_non_pandas_length_mismatchc              	   C   sr  dddg}dddg}t tj dd¡||d�}tjjj}t d	d
dgdddgdddgg¡}t	 
|||dƒd	 t ||j|jd�¡ t	 
|||dƒd	 t ||j|jd�¡ d}t d	d
dgdddgg¡}tjt|d�� |||dƒ W 5 Q R X tjt|d�� |||dƒ W 5 Q R X t d¡}t d¡}tjt|d�� |||dƒ W 5 Q R X tjt|d�� |||dƒ W 5 Q R X d S )Nr4   r‰   rŠ   r¹  rÃ  r·  rƒ   r]   rz   r{   r@   r”   r?   r§   rˆ   r,  r^   rB   r²  rC   )rƒ   rƒ   rƒ   zGUnable to coerce to Series/DataFrame, dimension must be <= 2: (3, 3, 3))r   r   rE   rF   rm   rÄ  rÅ  rÆ  r"   r9   r:   r^   rB   rH   rI   rJ   Zzerosr©  rª  )r   r^   rB   r;   rÇ  rÂ  rK   r   r   r   Ú'test_alignment_non_pandas_index_columns$  s6    


"þþ
ÿzCTestFrameArithmeticUnsorted.test_alignment_non_pandas_index_columnsc              	   C   sF   t ddgdd gdœƒ}|d }t d ¡� t||ƒ|ƒ W 5 Q R X d S )NrO  rÀ   r‰   )r   r9   rb  rt   ©r   rã   r;   rU   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 argumentsrC   r   )r   rH   rI   ra   rt   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!   rM   )rM   rz   z0.X)r   r…   r†   r–   Úintr   r4  r*   r  Zmeanr9   r:   )r   r¹  rÃ  r­   r©   rc   rd   r   r   r   Útest_align_int_fill_bugS  s    
z3TestFrameArithmeticUnsorted.test_align_int_fill_bugN).r0   r1   r2   r{  r}  rH   r�   r‘   ru   rÔ   rò   ró   r`  r‚  Úfilterwarningsr„  r“  r–  r™  rž  r¡  r¤  r§  rj   rk   rg   rf   rh   ri   r¬  r®  r±  r¶  rº  r¼  rÁ  r   r"   rü   r‹   rÈ  rÉ  rÊ  rÌ  rÍ  rÏ  r   r   r   r   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   rz   r{   rÁ   r³   ©r   r   rš   r9   r:   )rw   rx   rc   rd   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»   )rw   rx   rd   rc   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Í   )rM   rƒ   rT   rU   r|   rA   rz   r{   rƒ   rÁ   rü   rÎ   ZInt64ro  )r   r   rE   ro   r	   Zto_numpyr†   rB   r*   r9   r:   )r;   rÃ   rd   Zdf_earc   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Í   rM   r  )rz   rƒ   r§   rz   rƒ   r§   r”   )r{   rƒ   r@   r{   )r@   r”   r?   r@   c                    s   i | ]}|ˆ | ˆ|  “qS r   r   )rW   r@  ©rw   rx   r   r   r\   Ÿ  s      z6test_dataframe_blockwise_slicelike.<locals>.<dictcomp>)r   rE   ro   r   r)   r*   rš   r¯   r…   rB   r9   r:   )r¨   r­   r©   rª   Zdf4Zdf5r=   rd   r   rÕ  r   Ú"test_dataframe_blockwise_slicelike‰  s    rÖ  zdf, col_dtyper³   r´   g      @r~  ÚabrA   rý   rU   r  c                 C   sT   t dtjgdtjggtdƒd�}| d|i¡}| tdgtdƒd� }t ||¡ d S )	NrO  rµ   r×  rA   rU   g      ð¿rT   rÁ   )r   r   rš   rG   r*   r	   r9   r:   )r;   Z	col_dtyperd   rc   r   r   r   Ú/test_dataframe_operation_with_non_numeric_types£  s    	 rØ  c                  C   s`   t dggdgd�} t dddggdddgd�}| | }t tjddggdddgd�}t ||¡ d S )Nr   r‡  )r›   rB   r†  rA   rÑ  )r­   r©   rc   rd   r   r   r   Ú"test_arith_reindex_with_duplicates²  s
    rÙ  Úto_addrz   c              	   C   sr   t ddgddgdœƒ}dt| d ƒ› d�}tjt|d�� ||   W 5 Q R X tjt|d�� | |  W 5 Q R X d S )Nrz   r{   rY   zUnable to coerce list of r   z to Series/DataFramerC   )r   r+   rH   rI   rJ   )rÚ  r;   rK   r   r   r   Ú"test_arith_list_of_arraylike_raise»  s    rÛ  c                 C   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   rz   r{   rƒ   r@   )r   r)   Z_valuesr~   r9   r:   )Zusing_copy_on_writer;   r»  r  Úvalsrd   r   r   r   Ú%test_inplace_arithmetic_series_updateÇ  s    rÝ  c                  C   sŠ   t dggdgtjdgdggddgd�d�} t dggdgtdgdd�d�}t dggdgtjdgdggddgd�d�}| | }t ||¡ dS )	zP
    Regression test for: https://github.com/pandas-dev/pandas/issues/33765
    rz   rT   r   rU   r  r]   ©r¸   N)r   r   r  r   r9   r:   )r­   r©   rd   rc   r   r   r   Ú!test_arithemetic_multiindex_alignÙ  s    ýýrß  c                  C   sF   t dtdƒtdƒƒ} | d }t t d¡tdƒtdƒƒ}t ||¡ d S )NTr×  Úcdr³   r„   )r   rG   r   r–   r9   r:   )r;   rc   rd   r   r   r   Útest_bool_frame_mult_floatì  s    rá  c                 C   sV   t ddd g| d�}t dddg| d�}tddd g| d�}| ¡ | ¡  }t ||¡ d S )Nrz   r{   r!   rƒ   r   )r	   r   Zto_framer9   r:   )Zany_int_ea_dtypeZseries1Zseries2rd   rc   r   r   r   Útest_frame_sub_nullable_intô  s
    râ  c                     sŽ   G ‡ ‡fdd„dt ƒ‰G ‡fdd„dtƒ‰ ˆ ddddgd	d
dgdœƒ} | d }ˆ ddd	dgdddgdœƒ}t ||¡ | |  }t ||¡ d S )Nc                       s,   e Zd Ze‡fdd„ƒZe‡ fdd„ƒZdS )zEtest_frame_op_subclass_nonclass_constructor.<locals>.SubclassedSeriesc                    s   ˆ S r   r   r#   ©ÚSubclassedSeriesr   r   Ú_constructor  s    zRtest_frame_op_subclass_nonclass_constructor.<locals>.SubclassedSeries._constructorc                    s   ˆ S r   r   r#   )ÚSubclassedDataFramer   r   Ú_constructor_expanddim  s    z\test_frame_op_subclass_nonclass_constructor.<locals>.SubclassedSeries._constructor_expanddimN)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_datarz   r{   rƒ   r@   r”   r?   rÀ   rˆ   rM   é   r%  )Zsdfrc   rd   r   ré  r   Ú+test_frame_op_subclass_nonclass_constructorý  s    	rö  c                  C   sj   t ddƒ} t| jdddgiƒ}t| jdddgiƒ}|| j || j k}tdddg| jd�}t ||¡ d S )NÚColsz	col1 col2rz   r{   rƒ   TrÞ  )r   r   r€  r	   r9   r»   )r÷  Úq1Úq2rc   rd   r   r   r   Útest_enum_column_equality!  s    
rú  )AÚcollectionsr   r   r   Úenumr   rð  ru   r©  Únumpyr   rH   Zpandas.util._test_decoratorsÚutilZ_test_decoratorsr2  Zpandasrm   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‘   rG   rØ  rÙ  rÛ  rÝ  rß  rá  râ  rö  rú  r   r   r   r   Ú<module>   sr   
 U H  f  E
     ,þþ
	.
	$