o
    ҷhb'                     @   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                   @   sH  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ejdg d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   s4  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   )
      abcdcolumns   barfoor   )axissort)abcdr   Or
   Ai'  20130101s)periodsfreqindex   r   )r   nprandomdefault_rngstandard_normallistcopyr   reindexastypeloctmassert_frame_equalranger   )	selfr   dfdfcopyemptyframes	concattedexpectedresult r5   Y/var/www/html/venv/lib/python3.10/site-packages/pandas/tests/reshape/concat/test_empty.pytest_handle_empty_objects   s0   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d
d}t|| t g ddd}t ddd}d}tjt	|d t||gdd}W d    n1 sYw   Y  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d
d}t|| d S )Nr   r      x)nameyfloat64)r;   dtyper   r    )r:   r<   r9   r   zDThe behavior of array concatenation with empty entries is deprecated)matchr   )r:   r   )r   r   )r   r   r   r!   nanr   r*   r+   assert_produces_warningFutureWarningassert_series_equal)r-   s1s2resexpmsgr5   r5   r6   test_concat_empty_series2   s2   z(TestEmptyConcat.test_concat_empty_seriestzNUTCvaluesr8   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]r>   )r   r   r   r    )r   dttz_localizer!   r=   r   pdNaTlenr   r*   r+   )r-   rJ   rL   firstr>   secondr3   r4   r5   r5   r6   !test_concat_empty_series_timelikeQ   s   z1TestEmptyConcat.test_concat_empty_series_timelikezleft,right,expectedm8[ns]rM   )categoryrX   rX   )rX   objectrY   c                 C   s*   t t|dt|dg}|j|ksJ d S NrN   )r   r   r>   )r-   leftrightr3   r4   r5   r5   r6   test_concat_empty_series_dtypesc   s   z/TestEmptyConcat.test_concat_empty_series_dtypesr>   )r=   int8uint8boolrW   rM   c                 C   sR   t |}tt|dg}|j|ksJ tt|dt|dg}|j|ks'J d S rZ   )r!   r>   r   r   )r-   r>   r4   r5   r5   r6   0test_concat_empty_series_dtypes_match_roundtripsx   s
   
z@TestEmptyConcat.test_concat_empty_series_dtypes_match_roundtrips)r=   r^   r_   rW   rM   dtype2c                    sz   ||kr	t d dd dd   fdd}t|}t|}|||}tt|dt|dgj}|j|ks;J d S )	Nz%same dtype is not applicable for testc                 S   s`   | j |j h}t|h d s| j dks|j dkrdS t|ddh s.| j dks,|j dkr.dS d S )N>   r   iurc   rd   r   kindrS   r>   rb   typsr5   r5   r6   int_result_type   s   zSTestEmptyConcat.test_concat_empty_series_dtypes_roundtrips.<locals>.int_result_typec                 S   s8   | j |j h}t|h d s| j dks|j dkrdS d S )N>   frc   rd   rj   re   rg   r5   r5   r6   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   r5   )r>   rb   r4   rk   ri   r5   r6   get_result_type   s   

zSTestEmptyConcat.test_concat_empty_series_dtypes_roundtrips.<locals>.get_result_typerN   )pytestskipr!   r>   r   r   rf   )r-   r>   rb   rm   r3   r4   r5   rl   r6   *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sJ d S )NrM   rN   )r   r   r!   bool_int64r>   object_r-   r5   r5   r6   &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 )NrX   rN   r=   )r   r   r!   arrayr>   rt   r5   r5   r6   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sJ t tdddtddg}ttj}|j|ks5J t tdddtddg}td}|j|ksPJ d S )Nr=   rN   SparsezSparse[float64]rY   )r   r   r(   r>   rQ   SparseDtyper!   r=   )r-   r4   r3   r5   r5   r6   &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   r8   )RowEmptyCol	NumberColr   r   r    )	r   r!   r@   r   r   r(   rY   r*   r+   )r-   df_1df_2r4   r3   r5   r5   r6   !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s5J |d jtjks?J |d jtjksIJ t||tjg}|d jtj	ks]J |d jtjksgJ |d jtjksqJ d S )Nabcr   r   r   r   )
r   r%   r(   r!   rq   int32r=   r   r>   rs   )r-   r.   r4   r5   r5   r6   "test_concat_empty_dataframe_dtypes   s   z2TestEmptyConcat.test_concat_empty_dataframe_dtypesc                 C   sv   t  }t dddgiddgdd}t dg itddd}t||gddd}t|| t||gdd	d}t|| d S )
Nr   r   r   r   rr   )r   r>   inner)r   joinouter)r   r   r   r*   r+   )r-   df_emptydf_adf_expectedr4   r5   r5   r6   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   r9   r
   )r   r   dtypesr*   rC   )r-   df1df2r4   r3   r5   r5   r6   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   )r   r   r*   r+   )r-   r   r   r4   r3   df3df4r5   r5   r6   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s+J |d jtjks5J d S )Nr8   r   )r   r   r   r   r   )r   r   r>   r!   rr   rs   )r-   r   r   r4   r5   r5   r6   ,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g dt di}| }t||g}t|| dS )z<48510 `concat` to an empty EA should maintain type EA dtype.r   rN   r8   N)r   rQ   rv   
Int64Dtyper&   r   r*   r+   )r-   r   df_newr3   r4   r5   r5   r6   test_concat_to_empty_ea  s
   z'TestEmptyConcat.test_concat_to_empty_ea)__name__
__module____qualname__r7   rI   rn   markparametrizerV   r!   rq   r   rs   float32rr   r]   ra   rp   ru   rw   rz   r   r   r   r   r   r   r   r5   r5   r5   r6   r      sN    "

	(		r   )numpyr!   rn   pandasrQ   r   r   r   r   r   pandas._testing_testingr*   r   r5   r5   r5   r6   <module>   s    