o
    �¨Êh(  ã                   @   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   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   zstring[pyarrow_numpy]r
   ÚAi'  Ú20130101Ús)ÚperiodsÚfreq©Úindexé   ©r   )r   ÚnpÚrandomÚdefault_rngÚstandard_normalÚlistÚcopyr   ÚreindexÚastypeÚobjectÚlocÚtmÚassert_frame_equalÚranger   )
Úselfr   Úusing_infer_stringÚdfÚdfcopyÚemptyÚframesÚ	concattedÚexpectedÚresult© r6   úX/var/www/html/env/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)r<   Údtyper   r   )r;   r=   r:   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Úmsgr6   r6   r7   Útest_concat_empty_series4   s2   þÿýz(TestEmptyConcat.test_concat_empty_seriesÚtzNÚUTCÚvaluesr9   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-   rK   rM   Úfirstr?   Úsecondr4   r5   r6   r6   r7   Ú!test_concat_empty_series_timelikeS   s   þÿz1TestEmptyConcat.test_concat_empty_series_timelikezleft,right,expectedúm8[ns]rN   )ÚcategoryrY   rY   )rY   r(   r(   c                 C   s*   t t|d�t|d�gƒ}|j|ksJ ‚d S ©NrO   )r   r   r?   )r-   ÚleftÚrightr4   r5   r6   r6   r7   Útest_concat_empty_series_dtypese   s   z/TestEmptyConcat.test_concat_empty_series_dtypesr?   )r>   Úint8Úuint8ÚboolrX   rN   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?   r5   r6   r6   r7   Ú0test_concat_empty_series_dtypes_match_roundtripsz   s
   
z@TestEmptyConcat.test_concat_empty_series_dtypes_match_roundtrips)r>   r^   r_   rX   rN   Ú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   ©ÚkindrT   ©r?   rb   Útypsr6   r6   r7   Ú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   r6   r6   r7   Ú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ÚOr6   )r?   rb   r5   ©rk   ri   r6   r7   Úget_result_type¤   s   

zSTestEmptyConcat.test_concat_empty_series_dtypes_roundtrips.<locals>.get_result_typerO   )ÚpytestÚskipr    r?   r   r   rf   )r-   r?   rb   rn   r4   r5   r6   rm   r7   Ú*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 )NrN   rO   )r   r   r    Úbool_Úint64r?   Úobject_©r-   r6   r6   r7   Ú&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 )NrY   rO   r>   )r   r   r    Úarrayr?   ru   r6   r6   r7   Ú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>   rO   ÚSparsezSparse[float64]r(   )r   r   r'   r?   rR   ÚSparseDtyper    r>   )r-   r5   r4   r6   r6   r7   Ú&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   r9   )ÚRowÚEmptyColÚ	NumberColr   r   r   )	r   r    rA   r   r   r'   r(   r*   r+   )r-   Údf_1Údf_2r5   r4   r6   r6   r7   Ú!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    rr   Úint32r>   r   r?   rt   )r-   r/   r5   r6   r6   r7   Ú"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   rs   )r   r?   Úinner)r   ÚjoinÚouter)r   r   r   r*   r+   )r-   Údf_emptyÚdf_aÚdf_expectedr5   r6   r6   r7   Ú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   Údtypesr*   rD   )r-   Údf1Údf2r5   r4   r6   r6   r7   Ú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�   r5   r4   Údf3Údf4r6   r6   r7   Ú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 )Nr9   r‘   )r   r   r   r   r   )r   r   r?   r    rs   rt   )r-   r.   rŽ   r�   r5   r6   r6   r7   Ú,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   rO   r9   N)r   rR   rw   Ú
Int64Dtyper%   r   r*   r+   )r-   rˆ   Údf_newr4   r5   r6   r6   r7   Útest_concat_to_empty_ea!  s
   z'TestEmptyConcat.test_concat_to_empty_ea)Ú__name__Ú
__module__Ú__qualname__r8   rJ   ro   ÚmarkÚparametrizerW   r    rr   rƒ   rt   Úfloat32rs   r]   ra   rq   rv   rx   r{   r�   r„   r‹   r�   r”   r•   r˜   r6   r6   r6   r7   r      sN    $õþ
ÿ
	þ(		r   )Únumpyr    ro   ÚpandasrR   r   r   r   r   r   Úpandas._testingÚ_testingr*   r   r6   r6   r6   r7   Ú<module>   s    