U
    NZfC&                     @   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
RangeIndex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ejddddddg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d+d, Zd-d. Zd/d0 Zd1d2 ZdS )3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
      Z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dfcopyemptyframesZ	concattedexpectedresult r+   J/tmp/pip-unpacked-wheel-nbcvw55c/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}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}t|| d S )Nr         x)nameyfloat64)r1   dtyper   )r0   r2   r   r   )r0   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.   r/   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]r4   )r   r   r   r   )r   dtZtz_localizer   r3   r   pdZNaTlenr   r"   r#   )r%   r<   r>   firstr4   secondr)   r*   r+   r+   r,   !test_concat_empty_series_timelikeM   s    z1TestEmptyConcat.test_concat_empty_series_timelikezleft,right,expectedzm8[ns]r?   )categoryrG   rG   )rG   objectrH   c                 C   s*   t t|dt|dg}|j|ks&td S Nr@   )r   r   r4   AssertionError)r%   leftrightr)   r*   r+   r+   r,   test_concat_empty_series_dtypes_   s    z/TestEmptyConcat.test_concat_empty_series_dtypesr4   r3   Zint8Zuint8boolc                 C   sR   t |}tt|dg}|j|ks(ttt|dt|dg}|j|ksNtd S rI   )r   r4   r   r   rJ   )r%   r4   r*   r+   r+   r,   0test_concat_empty_series_dtypes_match_roundtripst   s
    
z@TestEmptyConcat.test_concat_empty_series_dtypes_match_roundtripsdtype2c                    st   ||krd S dd dd   fdd}t |}t |}|||}tt|dt|dgj}|j|ksptd S )Nc                 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   kindrC   r4   rP   Z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frQ   rR   rS   rU   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+   )r4   rP   r*   rX   rV   r+   r,   get_result_type   s    

zSTestEmptyConcat.test_concat_empty_series_dtypes_roundtrips.<locals>.get_result_typer@   )r   r4   r   r   rT   rJ   )r%   r4   rP   rZ   r)   r*   r+   rY   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 )Nr?   r@   )r   r   r   bool_int64r4   object_rJ   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 )NrG   r@   r3   )r   r   r   arrayr4   rJ   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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 )Nr3   r@   ZSparsezSparse[float64]rH   )	r   r   r    r4   rJ   rB   ZSparseDtyper   r3   )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.   r/   )ZRowZEmptyColZ	NumberColr
   r   )	r   r   r5   r   r   r    rH   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   r\   int32r3   r   r4   rJ   r^   )r%   r&   r*   r+   r+   r,   "test_concat_empty_dataframe_dtypes   s    z2TestEmptyConcat.test_concat_empty_dataframe_dtypesc                 C   sr   t  }t dddgiddgdd}t dg itddd}d|fd|ffD ]&\}}t||gd|d	}t|| qFd S )
Nr   r   r.   r   r]   )r   r4   innerouter)r   join)r   r   r   r"   r#   )r%   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   r/   r	   )r   r   Zdtypesr"   r6   )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   )r   r   r"   r#   )r%   ro   rp   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.   r/   r   r   r   )r   r   r   )r   r   r4   r   r]   rJ   r^   )r%   ro   rp   r*   r+   r+   r,   ,test_concat_empty_dataframe_different_dtypes  s
    z<TestEmptyConcat.test_concat_empty_dataframe_different_dtypesc                 C   s^   t dtjg t di}t dtjdddgt di}| }t||g}t|| dS )z<48510 `concat` to an empty EA should maintain type EA dtype.r   r@   r   r.   r/   N)r   rB   ra   Z
Int64Dtyper   r   r"   r#   )r%   rk   Zdf_newr)   r*   r+   r+   r,   test_concat_to_empty_ea  s
     z'TestEmptyConcat.test_concat_to_empty_ea)__name__
__module____qualname__r-   r;   pytestmarkZparametrizerF   r   r\   rf   r^   Zfloat32r]   rM   rO   r[   r`   rb   rc   rd   rg   rm   rq   rr   rs   rt   r+   r+   r+   r,   r      sN    
 
	(	
	r   )Znumpyr   rx   ZpandasrB   r   r   r   r   r   Zpandas._testingZ_testingr"   r   r+   r+   r+   r,   <module>   s
   