U
    ÎZjƒ ã                   @   sP  d dl mZ d dlmZ d dlmZ d dlZd dlZd dlZd dlZ	d dl
Z
d dlZd dlm  mZ d dlZd dlmZmZmZmZ d dlmZ d dlm  mZ d dlmZ d dl m!Z!m"Z" d dl#m$Z$m%Z% e
j&d	d
d dgddgd�dd„ ƒZ'G dd„ dƒZ(G dd„ dƒZ)G dd„ dƒZ*G dd„ dƒZ+G dd„ dƒZ,dd„ Z-dd„ Z.e
j/ 0d¡d d!„ ƒZ1G d"d#„ d#ƒZ2d$d%„ Z3d&d'„ Z4d(d)„ Z5d*d+„ Z6e
j/ 7d,ed-d.gd/d0gge8d1ƒd2�d3fed-d4gd/d4gge8d1ƒd2�d5fg¡d6d7„ ƒZ9d8d9„ Z:e
j/ 7d:ed;d;gƒged;d;gƒed;d;gƒgg¡d<d=„ ƒZ;d>d?„ Z<d@dA„ Z=dBdC„ Z>dDdE„ Z?dFdG„ Z@dHdI„ ZAdS )Jé    )Údeque)Údatetime)ÚEnumN)Ú	DataFrameÚIndexÚ
MultiIndexÚSeries)Úexpressions)Ú_MIN_ELEMENTSÚNUMEXPR_INSTALLED)Ú_check_mixed_floatÚ_check_mixed_intTÚmodulei@B ZnumexprÚpython)ZautouseÚscopeÚparamsÚidsc                 c   s    t j}| jt _| jV  |t _d S ©N)Úexprr
   Úparam)Úrequestr
   © r   úe/var/www/html/TRUCKING_PROJECT/venv/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   sT   t dddgdddgdœƒ}d}t||ƒ|ƒj ¡ }t |tdgt t	¡gd�¡ d S )	Nrz   r{   rƒ   ç      ð?ç       @ç      @rY   ©r^   )
r   rt   ÚdtypesÚvalue_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   sb   t dddgdddgdœƒ}d}|jd d… }t||ƒ|ƒj ¡ }t |tdgt 	t
¡gd	�¡ d S )
Nrz   r{   rƒ   r³   r´   rµ   rY   r   r¶   )r   r¯   rt   r·   r¸   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_mixed7  s&    	
z3TestFrameFlexArithmetic.test_arith_flex_frame_mixedÚdimrƒ   r?   c              	   C   sB   |}t  d| ¡}d}tjt|d�� t||ƒ|ƒ W 5 Q R X d S )N)rz   r•   rC   )r   r–   rH   rI   rJ   rt   )r   rà   rá   rê   r“   r¨   rK   r   r   r   Útest_arith_flex_frame_raise`  s
    z3TestFrameFlexArithmetic.test_arith_flex_frame_raisec              	   C   sÄ   |  d¡}t ||d ¡ |  |d d… ¡}t ||tj ¡ |d d…   |¡}t ||tj ¡ tjtdd�� |j |jd dd� W 5 Q R X tjtdd�� |j |jd ddd� W 5 Q R X d S )	Nrz   r   r×   rC   rƒ   rÖ   r^   ©r.   r×   )	rÑ   r9   r:   r   rš   rH   rI   ÚNotImplementedErrorr¯   )r   rá   Z	const_addrc   r   r   r   Útest_arith_flex_frame_cornerk  s    
z4TestFrameFlexArithmetic.test_arith_flex_frame_cornerrÑ   ÚsubÚmulÚmodc                 C   sb   |}|  d¡}|d }t||ƒ}tt|ƒ}t ||ƒ|||ƒ¡ t ||dd�||j|ƒj¡ d S )NrT   Útwor   r¢   )Úxsrt   ru   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d2S )3Ú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_castingF  s
    z,TestFrameArithmetic.test_td64_op_nat_castingc                 C   s¨   t  d¡ dd¡}t|ddgdddgd	�}|d
gd d …f }|jd
|jd
 fksTt‚tddgddgddgg|j|j|jd�}|| }t	 
||¡ || }t	 
||¡ d S )Nr?   rƒ   r{   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_broadcastsP  s    úz;TestFrameArithmetic.test_df_add_2d_array_rowlike_broadcastsc                 C   s¨   t  d¡ dd¡}t|ddgdddgd	�}|d d …d
gf }|j|jd d
fksTt‚td
dgddgddgg|j|j|jd�}|| }t	 
||¡ || }t	 
||¡ d S )Nr?   rƒ   r{   TFr4   r‰   rŠ   r$  rz   r   r”   é	   rM   r%  r&  )r   r¨   r;   Úcollikerd   rc   r   r   r   Ú'test_df_add_2d_array_collike_broadcastse  s    úz;TestFrameArithmetic.test_df_add_2d_array_collike_broadcastsc                 C   sä   |}|r|dkrt  |¡ t d¡ dd¡}t|ddgddd	gd
�}|dgd d …f }|jd|jd fksnt‚t|j	d |ƒ| 
¡ ƒt|j	d |ƒ| 
¡ ƒt|j	d	 |ƒ| 
¡ ƒg}t||j|jd
�}	t||ƒ|ƒ}
t |
|	¡ d S )N©Ú__rmod__Ú__rfloordiv__r?   rƒ   r{   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_broadcastsz  s    
ýz=TestFrameArithmetic.test_df_arith_2d_array_rowlike_broadcastsc                 C   sò   |}|r|dkrt  |¡ t d¡ dd¡}t|ddgddd	gd
�}|d d …dgf }|j|jd dfksnt‚t|d |ƒ| 	¡ ƒt|d |ƒ| 	¡ ƒdœ}d }	|dk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%  )r/  r0  r   r…   r†   r   r—   r~   rt   r1  Zcommon_typer˜   rB   r^   r9   r:   )r   r   rà   r2  r²   r¨   r;   r*  r3  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   r8  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ƒ   rB  )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   rP  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³   rG  )ì            rG  )y              ð?Ú
complex128)rW  rX  )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�rBd }	|dkr¸|t jksÊ|dkrÐ|t jkrÐd }
n4|dkrâd}
t}	n"|t j
kröd}
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�rz|dk�rzt}	nd }	t |	¡� |||jƒ W 5 Q R X n*d}
tjt|
d�� |||jƒ W 5 Q R X n<t d ¡�  |||jƒj}|||ƒj}W 5 Q R X t ||¡ d S )Nr-   r4   r!   r\  r[  rX  z3ufunc 'remainder' not supported for the input typesz-numpy boolean subtract, the `-` operator, is zcannot perform __z7__ with this index type: (DatetimeArray|TimedeltaArray)rC   r   z+operator '.*' not implemented for .* dtypes)ru   ÚtruedivrÉ   rÑ   rð   r   r   r   r   rñ   rï   ÚUserWarningr0   rH   rI   ra   r9   Úassert_produces_warningr   rç   rí   r·   r¹   )r   r“   r   r   r   ÚskipÚelemr;   ÚinvalidÚwarnrK   rc   rd   r   r   r   Útest_binop_other  sd    ü
÷ÿÿ
ÿ"z$TestFrameArithmetic.test_binop_otherN) r0   r1   r2   r#  r(  r+  r4  r7  r@  rC  rH   r�   r‘   rD  r   r"   r‹   r   rF  rK  rT  rU  Ztimedelta64Z
datetime64ru   rÑ   rï   rð   r]  rñ   rÉ   rd  r   r   r   r   r!  E  sR   
 
 (ÿ
øþúör!  c               	   C   sè   t tj d¡ dd¡ddgd�} ttjd�}| | }t | jtj | j	d�}t
 ||¡ t
 t¡� | |k}W 5 Q R X t d| j| j	d	�}t
 ||¡ t | j d
¡| j	d�}t
 t¡� ||k}W 5 Q R X t d| j| j	d	�}t
 ||¡ d S )Nr?   rƒ   r{   r4   r‰   rA   r!   Fr]   zM8[ns])r   r   rE   rF   r†   r   rú   r˜   rš   rB   r9   r:   r_  ÚFutureWarningr^   r,   )r;   rÀ   rc   rd   r©   r   r   r   Ú,test_frame_with_zero_len_series_corner_casess  s     rf  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
    rh  z(ignore:.*Select only valid:FutureWarningc                  C   sF   dt ddtjgƒi} t| ƒ}|jdd�}t dddgƒ}t ||¡ d S )NZ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     ÿrj  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^   ro  ÚpytzÚutcr~   )r   Úrngr;   Z	df_moscowrc   r   r   r   Ú*test_frame_add_tz_mismatch_converts_to_utc©  s    
zFTestFrameArithmeticUnsorted.test_frame_add_tz_mismatch_converts_to_utcc                 C   sš   t jdddd�}ttj t|ƒd¡|d�}||d d d…  }|| }tj|jdd d…< t	 
||¡ |d d d… }|| tj t|ƒ¡¡ }t	 
||¡ d S )	Nz1/1/2000z1/1/2010r4   )rn  rƒ   r¶   r{   rz   )rm   Zperiod_ranger   r   rE   rF   rs   rš   r¯   r9   r:   ZtakeZpermutation)r   rs  Ú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ÚabcrH  rò   rI  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   rR  þ  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   rR    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^   Únamerð   r"   r9   r:   )r   Zmidxr;   Ú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)ro  z
Asia/Tokyor{   rm  rz   r4   r¶   rƒ   )rm   ZDatetimeIndexrp  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_copyrJ  Zindexerr<   Z
self_addedZ	added_revZ
plus_emptyZ
empty_plusZempty_emptyÚreverser   r   r   Útest_combineFrame5  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  rJ  ÚkeyrŽ  Zlarger_seriesZlarger_addedr   r   r   Útest_combine_seriesr  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_frameru  rJ  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   z.Can only compare identically-labeled DataFramer{   )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   r5  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)rb  Ú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_alignment[  s>    ýz6TestFrameArithmeticUnsorted.test_inplace_ops_alignmentc           	      C   s$  t dddgƒ}ttjjdddd� dd¡ƒ}| ¡ }|}|d7 }t ||¡ t |d |¡ ||ksht	‚|j
|j
ksxt	‚| ¡ }|}|d7 }t ||¡ t |d |¡ ||k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_origZdf_origrŽ  r�  r;   r©   r¨   rd   r   r   r   Útest_inplace_ops_identityŒ  sX    z5TestFrameArithmeticUnsorted.test_inplace_ops_identityÚandrÅ   rñ   ÚorrÉ   Úxorc                 C   s¤   |dkrd S t dddgdddgdœƒ}d}|d	kr@d
dd
g|d< | ¡ }d|› d�}d|› d�}t||ƒ|ƒ t||ƒ|ƒ}t ||¡ t|ƒ}t|ƒ|k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_pandasrE  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 )NrL  r¾   r‰   )r   r9   r_  rt   ©r   rà   r;   rU   r   r   r   Útest_no_warning6  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 )NrL  r¾   r‰   ztakes 2 positional argumentsrC   r   )r   rH   rI   ra   rt   rÄ  r   r   r   Útest_dunder_methods_binary<  s    z6TestFrameArithmeticUnsorted.test_dunder_methods_binaryc                 C   sj   t jddd� dd¡}t jdtd�}t|ƒ}| ¡ |d< | t¡}|| 	¡  }|| 	¡  }t
 ||¡ d S )NrÊ   rú   r!   rM   )rM   rz   z0.X)r   r…   r†   r–   Úintr   r1  r*   r  Zmeanr9   r:   )r   r³  r¼  r­   r©   rc   rd   r   r   r   Útest_align_int_fill_bugC  s    
z3TestFrameArithmeticUnsorted.test_align_int_fill_bugN).r0   r1   r2   rt  rv  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   rk  ¨  sv    ÿ


'
=).þ
	O1:õþ
üþ	
(
"rk  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_realignmentR  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_zero]  s    rÌ  c                  C   sž   t tj ddd¡dddgd�} tdd	d
gdddgd�}|  d¡| d¡ dd
¡ }t || jdd�}|  d¡}|| }t	 
||¡ || d¡ }t	 
||¡ d S )Nr   rÊ   )rM   rƒ   rT   rU   r|   rA   rz   r{   rƒ   r¶   rù   rË   ZInt64rg  )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_dtypesj  s    
rÍ  c                     sâ   t j ddd¡} t| ƒ}| ¡ }t j|jddddgf< | ¡ }t j|jddgf< | ¡ }t j|jdt  dd¡f< | ¡ }t j|jdt  d	d¡f< ||f||f||ffD ]6\‰ ‰ˆ ˆ }t‡ ‡fd
d„ˆ jD ƒƒ}t	 
||¡ q¦d S )Nr   iè  )rÊ   rM   rz   rƒ   r§   r”   r{   r@   c                    s   i | ]}|ˆ | ˆ|  “qS r   r   )rW   r=  ©rw   rx   r   r   r\   ‹  s      z6test_dataframe_blockwise_slicelike.<locals>.<dictcomp>)r   rE   ro   r   r)   rš   r¯   r…   rB   r9   r:   )r¨   r­   r©   rª   Zdf4Zdf5r=   rd   r   rÎ  r   Ú"test_dataframe_blockwise_slicelikey  s    rÏ  zdf, col_dtyper³   r´   g      @rw  Ú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 )	NrL  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   sX   t ddddgiƒ} | d }|j}|d7 }|j|ks6t‚t ddddgiƒ}t | |¡ d S )Nr4   rz   r{   rƒ   r@   )r   Z_valuesr~   r9   r:   )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                       s>   e Zd ZdgZ‡ fdd„Zedd„ ƒZe‡fdd„ƒZ‡  ZS )zHtest_frame_op_subclass_nonclass_constructor.<locals>.SubclassedDataFrameÚmy_extra_datac                    s   || _ tƒ j||Ž d S r   )rã  Úsuperr    )r   rã  ÚargsÚkwargs©Ú	__class__r   r   r    ó  s    zQtest_frame_op_subclass_nonclass_constructor.<locals>.SubclassedDataFrame.__init__c                 S   s   t  t| ƒ| j¡S r   )Ú	functoolsÚpartialr+   rã  r#   r   r   r   rÞ  ÷  s    zUtest_frame_op_subclass_nonclass_constructor.<locals>.SubclassedDataFrame._constructorc                    s   ˆ S r   r   r#   rÜ  r   r   Ú_constructor_slicedû  s    z\test_frame_op_subclass_nonclass_constructor.<locals>.SubclassedDataFrame._constructor_sliced)	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   ry  r   r9   r¹   )rð  Úq1Úq2rc   rd   r   r   r   Útest_enum_column_equality  s    
ró  )BÚcollectionsr   r   Úenumr   ré  ru   r£  Únumpyr   rH   rq  Zpandas.util._test_decoratorsÚutilZ_test_decoratorsr/  Zpandasrm   r   r   r   r   Zpandas._testingZ_testingr9   Zpandas.core.commonr½  Úcommonrz  Zpandas.core.computationr	   r   Z#pandas.core.computation.expressionsr
   r   Zpandas.tests.frame.commonr   r   Zfixturer   r   r3   r’   rÃ   r!  rf  rh  r�   rÉ  rj  rk  rË  rÌ  rÍ  rÏ  r‘   rG   rÑ  rÒ  rÔ  rÖ  rØ  rÚ  rÛ  rï  ró  r   r   r   r   Ú<module>   s€      ÿ
 U D  g  0

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