a
    Gb%                     @   sR   d dl Zd dlZd dlZd dlmZmZmZmZm	Z	 d dl
mZ G dd dZdS )    N)	DataFrameIndexSeriesconcat
date_rangec                   @   s  e Zd Zdd Zdd Zejdddgejdg g d	gd
d Zejde	j
e	je	jfe	j
e	je	jfde	j
e	jfde	je	jfde	j
e	jfde	je	jfddgdd Zejdg ddd Zdd Zdd Zdd Zdd Zdd  Zd!d" Zd#d$ Zd%d& Zd'd( Zd)d* ZdS )+TestEmptyConcatc           	      C   s0  t tjddtdd}|d d  }d|d< |dd }||||dd  g}t|d|d	}|jg d
d}|d d|d< d|j	dddf< t
|| t dtditddddd}t  }t||gdd}t
|| t||gdd}t
|| t||g}t
|| t||g}t
|| d S )N
      Zabcdcolumns   Zbarfoor   )axissort)abcdr   OAi'  Z20130101s)ZperiodsZfreqindex   r   )r   npZrandomZrandnlistcopyr   ZreindexastypeZloctmassert_frame_equalranger   )	selfr   dfZbazemptyZframesZ	concattedexpectedresult r'   Elib/python3.9/site-packages/pandas/tests/reshape/concat/test_empty.pytest_handle_empty_objects   s,    z)TestEmptyConcat.test_handle_empty_objectsc                 C   s  t g ddd}t ddd}t||gdd}tg dtjtjtjgd	tg d
ddd}t|| t g ddd}t ddd}t||gdd}t g d}t|| t g ddd}t d dd}t||gdd}tg dtjtjtjgdddgtg d
ddd}t|| d S )Nr         x)nameyfloat64)r.   dtyper   r   )r-   r/   )r   r   r+   r   r1   r   r   )r-   r   )r   r   )	r   r   r   r   nanr   r   r    assert_series_equal)r"   s1s2resZexpr'   r'   r(   test_concat_empty_series0   s,    z(TestEmptyConcat.test_concat_empty_seriestzNZUTCvaluesr*   c                 C   sx   t g ddj|}|rd ntj}t ||d}tt tjgt| ddj||d}t	||gdd}t
|| d S )NM8[ns]r2   )r   r   r   r   )r   ZdtZtz_localizer   r0   r   pdZNaTlenr   r   r    )r"   r9   r:   firstr1   secondr%   r&   r'   r'   r(   !test_concat_empty_series_timelikeM   s    z1TestEmptyConcat.test_concat_empty_series_timelikezleft,right,expectedm8[ns]r;   )categoryrB   rB   )rB   objectrC   c                 C   s~   d }|t ju s|t ju r&|t jur&t}tj|dd( tt|dt|dg}W d    n1 sb0    Y  |j|kszJ d S )Nzconcatenating bool-dtype)matchr2   )	r   bool_object_FutureWarningr   Zassert_produces_warningr   r   r1   )r"   leftrightr%   warnr&   r'   r'   r(   test_concat_empty_series_dtypes_   s    6z/TestEmptyConcat.test_concat_empty_series_dtypesr1   r0   Zint8Zuint8boolrA   r;   c                 C   sR   t |}tt|dg}|j|ks(J tt|dt|dg}|j|ksNJ d S )Nr2   )r   r1   r   r   )r"   r1   r&   r'   r'   r(   0test_concat_empty_series_dtypes_match_roundtripsx   s
    
z@TestEmptyConcat.test_concat_empty_series_dtypes_match_roundtripsc                    s   t tjg d}dd dd   fdd}|D ]J}|D ]@}||krHq:|||}tt|dt|dgj}|j|ks:J q:q2d S )	NrL   c                 S   s`   | j |j h}t|h d s4| j dks0|j dkr4dS t|ddh s\| j dksX|j dkr\dS d S )N>   iur   rO   rP   r   kindr=   r1   dtype2Ztypsr'   r'   r(   int_result_type   s    zSTestEmptyConcat.test_concat_empty_series_dtypes_roundtrips.<locals>.int_result_typec                 S   s8   | j |j h}t|h d s4| j dks0|j dkr4dS d S )N>   rO   frP   rV   rQ   rS   r'   r'   r(   float_result_type   s    zUTestEmptyConcat.test_concat_empty_series_dtypes_roundtrips.<locals>.float_result_typec                    s0    | |}|d ur|S | |}|d ur,|S dS )Nr   r'   )r1   rT   r&   rW   rU   r'   r(   get_result_type   s    

zSTestEmptyConcat.test_concat_empty_series_dtypes_roundtrips.<locals>.get_result_typer2   )mapr   r1   r   r   rR   )r"   dtypesrY   r1   rT   r%   r&   r'   rX   r(   *test_concat_empty_series_dtypes_roundtrips   s    	
z:TestEmptyConcat.test_concat_empty_series_dtypes_roundtripsc                 C   s4   t tddttjdttjdgjtjks0J d S )Nr;   r2   )r   r   r   rE   int64r1   rF   r"   r'   r'   r(   &test_concat_empty_series_dtypes_triple   s    z6TestEmptyConcat.test_concat_empty_series_dtypes_triplec                 C   s.   t ttg ddtddgjdks*J d S )NrB   r2   r0   )r   r   r   Zarrayr1   r^   r'   r'   r(   2test_concat_empty_series_dtype_category_with_array   s    zBTestEmptyConcat.test_concat_empty_series_dtype_category_with_arrayc                 C   s   t tdddtdddg}|jdks2J t tdddtddg}ttj}|j|ksjJ t tdddtddg}td}|j|ksJ d S )Nr0   r2   ZSparsezSparse[float64]rC   )r   r   r   r1   r<   ZSparseDtyper   r0   )r"   r&   r%   r'   r'   r(   &test_concat_empty_series_dtypes_sparse   s     
z6TestEmptyConcat.test_concat_empty_series_dtypes_sparsec                 C   sP   t g dtjg dd}t |jd}t||gdd}|t}t|| d S )N)r   r   r   r*   )ZRowZEmptyColZ	NumberColr
   r   r   )	r   r   r3   r   r   r   rC   r   r    )r"   Zdf_1Zdf_2r&   r%   r'   r'   r(   !test_concat_empty_df_object_dtype   s
    
z1TestEmptyConcat.test_concat_empty_df_object_dtypec                 C   s   t tdd}|d tj|d< |d tj|d< |d tj|d< t||g}|d jtjksjJ |d jtjks~J |d jtjksJ t||tjg}|d jtj	ksJ |d jtjksJ |d jtjksJ d S )Nabcr
   r   r   r   )
r   r   r   r   rE   int32r0   r   r1   rF   )r"   r#   r&   r'   r'   r(   "test_concat_empty_dataframe_dtypes   s    z2TestEmptyConcat.test_concat_empty_dataframe_dtypesc                 C   sn   t  }t dddgiddgdd}t dg ig dd}d|fd|ffD ]&\}}t||gd|d	}t|| qBd S )
Nr   r   r+   r   r]   )r   r1   innerZouter)r   joinr   r   r   r    )r"   Zdf_emptyZdf_aZdf_expectedZhowr%   r&   r'   r'   r(   test_concat_inner_join_empty   s    z,TestEmptyConcat.test_concat_inner_join_emptyc                 C   s\   t dd gdd ggddgd}t dd gdd ggddgd}t||g}|j}t|j| d S )Nr   r+   r   r   )datar   r,   r	   )r   r   r[   r   r4   )r"   df1df2r&   r%   r'   r'   r(   test_empty_dtype_coerce   s
    z'TestEmptyConcat.test_empty_dtype_coercec                 C   s   t ddgd}t ddgd}t|||g}t g dd}t|| t ddgd}t dgd}t||g}t ddgd}t|| d S )Nr   r   r
   r   r   r   r   rh   )r"   rk   rl   r&   r%   Zdf3Zdf4r'   r'   r(   test_concat_empty_dataframe  s    z+TestEmptyConcat.test_concat_empty_dataframec                 C   sn   t g dg dd}t dg di}t|d d |d d g}|d jtjksVJ |d jtjksjJ d S )Nr*   rn   )r   r   r   r   r   )r   r   r1   r   r]   rF   )r"   rk   rl   r&   r'   r'   r(   ,test_concat_empty_dataframe_different_dtypes  s
    z<TestEmptyConcat.test_concat_empty_dataframe_different_dtypes)__name__
__module____qualname__r)   r8   pytestZmarkZparametrizer@   r   rE   rd   Zfloat32rF   r]   rK   rN   r\   r_   r`   ra   rb   re   ri   rm   ro   rp   r'   r'   r'   r(   r      s@    
	
	+		
r   )Znumpyr   rt   Zpandasr<   r   r   r   r   r   Zpandas._testingZ_testingr   r   r'   r'   r'   r(   <module>   s
   