U
    +if%                     @   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 d	d
dg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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d(d) Zd*d+ Zd,d- Zd.d/ ZdS )0TestEmptyConcatc           	      C   s6  t tjddtdd}|d d  }d|d< |dd }||||dd  g}t|d|d	}|jd
ddddg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
      abcdcolumns   barZfoor   )axissortabcdOAi'  Z20130101s)Zperiodsfreqindex   r   )r   nprandomZrandnlistcopyr   Zreindexastypeloctmassert_frame_equalranger   )	selfr   dfZbazemptyframesZ	concattedexpectedresult r,   Y/home/mars/bis/venv/lib/python3.8/site-packages/pandas/tests/reshape/concat/test_empty.pytest_handle_empty_objects   s.    
 z)TestEmptyConcat.test_handle_empty_objectsc                 C   s*  t dddgdd}t ddd}t||gdd	}tdddgtjtjtjgd
tdddgddd}t|| t dddgdd}t ddd}t||gdd	}t dddg}t|| t dddgdd}t d dd}t||gdd	}tdddgtjtjtjgdddgtdddgddd}t|| d S )Nr         x)nameyfloat64)r2   dtyper   )r1   r3   r   r   r5   r   )r1   r   )r   r   )	r   r   r   r   nanr   r#   r$   assert_series_equal)r&   s1s2resexpr,   r,   r-   test_concat_empty_series0   s,    z(TestEmptyConcat.test_concat_empty_seriestzNUTCvaluesr   r/   r0   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]r6   )r   r   r   r   )r   dtZtz_localizer   r4   r   pdZNaTlenr   r#   r$   )r&   r>   r@   firstr5   secondr*   r+   r,   r,   r-   !test_concat_empty_series_timelikeM   s    z1TestEmptyConcat.test_concat_empty_series_timelikezleft,right,expectedm8[ns]rA   )categoryrI   rI   )rI   objectrJ   c              	   C   sj   d }|t jks|t jkr&|t jk	r&t}tj|dd tt|dt|dg}W 5 Q R X |j|ksft	d S )Nzconcatenating bool-dtype)matchr6   )
r   bool_object_FutureWarningr#   Zassert_produces_warningr   r   r5   AssertionError)r&   leftrightr*   warnr+   r,   r,   r-   test_concat_empty_series_dtypes_   s    "z/TestEmptyConcat.test_concat_empty_series_dtypesr5   r4   int8uint8boolc                 C   sR   t |}tt|dg}|j|ks(ttt|dt|dg}|j|ksNtd S )Nr6   )r   r5   r   r   rO   )r&   r5   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ddddddg}dd d	d
   fdd}|D ]J}|D ]@}||krPqB|||}tt|dt|dgj}|j|ksBtqBq:d S )Nr4   rT   rU   rV   rH   rA   c                 S   sb   | j |j h}t|dddh s6| j dks2|j dkr6dS t|ddh s^| j dksZ|j dkr^dS d S )Niur   kindrD   r5   dtype2Ztypsr,   r,   r-   int_result_type   s    zSTestEmptyConcat.test_concat_empty_series_dtypes_roundtrips.<locals>.int_result_typec                 S   s:   | j |j h}t|dddh s6| j dks2|j dkr6dS d S )NfrX   rY   rZ   r\   r,   r,   r-   float_result_type   s    zUTestEmptyConcat.test_concat_empty_series_dtypes_roundtrips.<locals>.float_result_typec                    s0    | |}|d k	r|S | |}|d k	r,|S dS )Nr   r,   )r5   r]   r+   r`   r^   r,   r-   get_result_type   s    

zSTestEmptyConcat.test_concat_empty_series_dtypes_roundtrips.<locals>.get_result_typer6   )mapr   r5   r   r   r[   rO   )r&   dtypesrb   r5   r]   r*   r+   r,   ra   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s0td S )NrA   r6   )r   r   r   rL   int64r5   rM   rO   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*td S )NrI   r6   r4   )r   r   r   arrayr5   rO   rg   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s2tt tdddtddg}ttj}|j|ksjtt tdddtddg}td}|j|kstd S )Nr4   r6   ZSparsezSparse[float64]rJ   )	r   r   r!   r5   rO   rC   ZSparseDtyper   r4   )r&   r+   r*   r,   r,   r-   &test_concat_empty_series_dtypes_sparse   s     
z6TestEmptyConcat.test_concat_empty_series_dtypes_sparsec                 C   sT   t dddgtjdddgd}t |jd}t||gdd}|t}t|| d S )Nr   r   r/   r0   )RowZEmptyColZ	NumberColr   r   )	r   r   r7   r   r   r!   rJ   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sjt	|d jtjks~t	|d jtjkst	t||tjg}|d jtj
kst	|d jtjkst	|d jtjkst	d S )Nabcr   r   r   r   )r   r   r!   r   rL   int32r4   r   r5   rO   rM   )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   rf   )r   r5   innerouter)r   joinr   r   r#   r$   )r&   Zdf_emptyZdf_aZdf_expected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   r0   r	   )r   r   rd   r#   r8   )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 dddg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   rt   )r&   rx   ry   r+   r*   Zdf3Zdf4r,   r,   r-   test_concat_empty_dataframe  s    z+TestEmptyConcat.test_concat_empty_dataframec                 C   st   t dddgdddgd}t ddddgi}t|d d |d d g}|d jtjks\t|d jtjksptd S )	Nr   r/   r0   r   r   r   )r   r   r   )r   r   r5   r   rf   rO   rM   )r&   rx   ry   r+   r,   r,   r-   ,test_concat_empty_dataframe_different_dtypes  s
    z<TestEmptyConcat.test_concat_empty_dataframe_different_dtypes)__name__
__module____qualname__r.   r=   pytestmarkZparametrizerG   r   rL   ro   Zfloat32rM   rf   rS   rW   re   rh   rj   rk   rm   rp   rv   rz   r{   r|   r,   r,   r,   r-   r      sB    
	 
	+		
r   )numpyr   r   ZpandasrC   r   r   r   r   r   Zpandas._testingZ_testingr#   r   r,   r,   r,   r-   <module>   s
   