o
    %j(                     @   s^   d dl Zd dlZd dlm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)using_string_dtype)	DataFrame
RangeIndexSeriesconcat
date_rangec                   @   sZ  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ejje d%d&d'd( Zd)d* Zd+d, Zd-d. Zd/d0 ZdS )1TestEmptyConcatc           
      C   s<  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 	|sBt
n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   strr   Ai'  Z20130101s)Zperiodsfreqindex   r   )r   nprandomZdefault_rngZstandard_normallistcopyr   Zreindexastypeobjectloctmassert_frame_equalranger   )
selfr   using_infer_stringdfZdfcopyemptyframesZ	concattedexpectedresult r1   g/var/www/html/Deteccion_Ine/venv/lib/python3.10/site-packages/pandas/tests/reshape/concat/test_empty.pytest_handle_empty_objects   s4   
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)r7   dtyper   r   )r6   r8   r5   r   zDThe behavior of array concatenation with empty entries is deprecated)matchr   )r6   r   )r   r   )r   r   r   r    nanr   r'   r(   Zassert_produces_warningFutureWarningassert_series_equal)r*   s1s2resexpmsgr1   r1   r2   test_concat_empty_series6   s2   z(TestEmptyConcat.test_concat_empty_seriestzNUTCvaluesr4   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   dtZtz_localizer    r9   r   pdZNaTlenr   r'   r(   )r*   rE   rG   firstr:   secondr/   r0   r1   r1   r2   !test_concat_empty_series_timelikeU   s   z1TestEmptyConcat.test_concat_empty_series_timelikezleft,right,expectedm8[ns]rH   )categoryrQ   rQ   )rQ   r%   r%   c                 C   s*   t t|dt|dg}|j|ksJ d S NrI   )r   r   r:   )r*   leftrightr/   r0   r1   r1   r2   test_concat_empty_series_dtypesg   s   z/TestEmptyConcat.test_concat_empty_series_dtypesr:   )r9   int8uint8boolrP   rH   c                 C   sR   t |}tt|dg}|j|ksJ tt|dt|dg}|j|ks'J d S rR   )r    r:   r   r   )r*   r:   r0   r1   r1   r2   0test_concat_empty_series_dtypes_match_roundtrips|   s
   
z@TestEmptyConcat.test_concat_empty_series_dtypes_match_roundtrips)r9   rV   rW   rP   rH   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>   iur   r[   r\   r   kindrL   r:   rZ   Ztypsr1   r1   r2   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>   r[   r\   fra   r]   r_   r1   r1   r2   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 )NOr1   )r:   rZ   r0   rb   r`   r1   r2   get_result_type   s   

zSTestEmptyConcat.test_concat_empty_series_dtypes_roundtrips.<locals>.get_result_typerI   )pytestskipr    r:   r   r   r^   )r*   r:   rZ   re   r/   r0   r1   rd   r2   *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 )NrH   rI   )r   r   r    bool_int64r:   object_r*   r1   r1   r2   &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 )NrQ   rI   r9   )r   r   r    arrayr:   rl   r1   r1   r2   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 )Nr9   rI   ZSparsezSparse[float64]r%   )r   r   r$   r:   rK   ZSparseDtyper    r9   )r*   r0   r/   r1   r1   r2   &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   r4   )RowZEmptyColZ	NumberColr   r   r   )	r   r    r<   r   r   r$   r%   r'   r(   )r*   Zdf_1Zdf_2r0   r/   r1   r1   r2   !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    ri   int32r9   r   r:   rk   )r*   r,   r0   r1   r1   r2   "test_concat_empty_dataframe_dtypes   s   z2TestEmptyConcat.test_concat_empty_dataframe_dtypeszTODO(infer_string))reasonc                 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   rj   )r   r:   inner)r   joinouter)r   r   r   r'   r(   )r*   df_emptyZdf_aZdf_expectedr0   r1   r1   r2   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   r5   r   )r   r   Zdtypesr'   r>   )r*   df1df2r0   r/   r1   r1   r2   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~   r0   r/   Zdf3Zdf4r1   r1   r2   test_concat_empty_dataframe  s   z+TestEmptyConcat.test_concat_empty_dataframec                 C   sv   t g dg dd}t dg di}t|d d |d d g}|d jtjks+J |s7|d jtjks9J d S d S )Nr4   r   )r   r   r   r   r   )r   r   r:   r    rj   rk   )r*   r+   r}   r~   r0   r1   r1   r2   ,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   rI   r4   N)r   rK   rn   Z
Int64Dtyper#   r   r'   r(   )r*   rz   Zdf_newr/   r0   r1   r1   r2   test_concat_to_empty_ea%  s
   z'TestEmptyConcat.test_concat_to_empty_ea)__name__
__module____qualname__r3   rD   rf   markZparametrizerO   r    ri   rt   rk   Zfloat32rj   rU   rY   rh   rm   ro   rp   rr   ru   Zxfailr   r{   r   r   r   r   r1   r1   r1   r2   r      sP    $

	(	
	r   )numpyr    rf   Zpandas._configr   ZpandasrK   r   r   r   r   r   Zpandas._testingZ_testingr'   r   r1   r1   r1   r2   <module>   s    