o
    5co                  
   @   s
  d dl Zd dlZd dlZd dlmZmZmZmZ d dl	m
Z edededgZejdddejdddejdddgZeded	ed
gZejdddejdddejdddgZg dg ddejdgeg dg deeeed	ZG dd dZdS )    N)Categorical	DataFrameIndexSeries
2011-01-01
2011-01-02z
2011-01-03
US/Easterntz1 days2 daysz3 days2011-01Mfreq2011-02z2011-03)TFT         g?gffffff
@)XYZabc)	boolint64float64categoryobjectzdatetime64[ns]datetime64[ns, US/Eastern]timedelta64[ns]z	period[M]c                   @   s   e Zd ZdZejee ddd Z	e	Z
dd Zejdeegdd	 Zd
d Zdd Zdd Zdd Z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*d+ Z d,d- Z!d.d/ Z"d0S )1TestConcatAppendCommonzE
    Test common dtype coercion rules between concat and append.
    )paramsc                 C   s   |j }|t| fS )N)param	data_dict)selfrequestkey r+   d/var/www/html/gps/gps/lib/python3.10/site-packages/pandas/tests/reshape/concat/test_append_common.pyitem3   s   zTestConcatAppendCommon.itemc                 C   sX   t |tr|j|ksJ dS t |tr*|dr!|jdksJ dS |j|ks(J dS t)zr
        Check whether obj has expected dtype depending on label
        considering not-supported dtypes
        period	Period[M]N)
isinstancer   dtyper   
startswith
ValueError)r(   objlabelr+   r+   r,   _check_expected_dtype:   s   


z,TestConcatAppendCommon._check_expected_dtypeboxc                 C   sh   |\}}||}t |tr|j|ksJ d S t |tr0|dr)|jdks'J d S |j|ks2J d S d S )Nr.   r/   )r0   r   r1   r   r2   )r(   r-   r7   typvalsr4   r+   r+   r,   test_dtypesI   s   


z"TestConcatAppendCommon.test_dtypesc                 C   s4  |\}}|}|}|dkr%t t|t| }t t|t| t| }n
|| }|| | }t|t|}t|}	t||	 t|t|t|g}t|}	t||	 t|dd}
t|dd}|
|}t|}	t||	 t|dd}
t|dd}|
|}t|dd}	t||	 tjtdd t|| W d    n1 sw   Y  tjtdd t|t||g W d    n1 sw   Y  t	|j
t	|dd}t	|}	tj||	dd	 tjt	|t	|gdd}tj||	dd	 t	|j
t	|t	|gdd}t	|}	t||	 tjt	|t	|t	|gdd}t||	 t	|dd}t	|dd}|j
|dd}t	|}	tj||	dd	 tj||gdd}tj||	dd	 t	|dd}t	|dd}|j
|dd}t	|dd}	tj||	dd	 tj||gdd}tj||	dd	 d
}tjt|d t	|
| W d    n	1 sw   Y  tjt|d t	|
t	||g W d    n	1 sw   Y  tjt|d tt	||g W d    n	1 sw   Y  tjt|d tt	|t	||g W d    d S 1 sw   Y  d S )Nr    x)nameyzall inputs must be IndexmatchTignore_indexcheck_index_typezPcannot concatenate object of type '.+'; only Series and DataFrame objs are valid)r   listr   appendtmassert_index_equalpytestraises	TypeErrorr   _appendassert_series_equalpdconcat)r(   r-   typ1vals1vals2vals3exp_data	exp_data3resexpi1i2s1s2msgr+   r+   r,   test_concatlike_same_dtypesV   s   

$z2TestConcatAppendCommon.test_concatlike_same_dtypesc                 C   s  |\}}|\}}|}d }	d }
||krd S |dks|dkrd S d }|dkr:|dv r:|}
t jjdd}|j| t}n.|dkrT|dv rT|}
t jjdd}|j| t}n|dksd|dksd|dksd|dkrht}	t}
|| }|| | }tj|dd	 t	|
t	|}W d    n1 sw   Y  t	||	d
}t|| t	|
t	|t	|g}t	||	d
}t|| tj|dd	 t|jt|dd}W d    n1 sw   Y  t||
d
}tj||dd tj|dd	 tjt|t|gdd}W d    n	1 sw   Y  tj||dd tj|dd	 t|jt|t|gdd}W d    n	1 s6w   Y  t||
d
}t|| tj|dd	 tjt|t|t|gdd}W d    n	1 sjw   Y  t|| d S )Nr    r   )r   r   zGH#39187 casting to object)reasonr"   r#   zconcatenating bool-dtyper>   r1   Tr@   rB   )rH   markxfailnode
add_markerFutureWarningr!   rF   assert_produces_warningr   rE   rG   r   rK   rL   rM   rN   )r(   r-   item2r)   rO   rP   typ2rQ   rR   exp_index_dtypeexp_series_dtypewarnr_   rS   rT   rU   rV   r+   r+   r,   test_concatlike_dtypes_coercion   s~   z6TestConcatAppendCommon.test_concatlike_dtypes_coercionc                 C   s6  t ddg}t ddg}tt dt dt dt dg}||}t|| t	|d t js7J t	|d t jsAJ t
|}t
|}||}t|t
|g dd t	|jd t jseJ t	|jd t jspJ t ||g}t|t
|g dd t	|jd t jsJ t	|jd t jsJ d S )	Nr   r   r   r   r   r   r   r   r   index)rM   DatetimeIndexTimedeltaIndexr   	Timestamp	TimedeltarE   rF   rG   r0   r   rK   rL   ilocrN   )r(   dtitdirV   rU   dtstdsr+   r+   r,   .test_concatlike_common_coerce_to_pandas_object  s.   
	
zETestConcatAppendCommon.test_concatlike_common_coerce_to_pandas_objectc           	      C   s   |}t jddg|d}t jddg|d}t jg d|d}||}t|| t|}t|}||}t|t|g dd t ||g}t|t|g dd d S )	Nr   r   r	   
2012-01-01
2012-01-02)r   r   ry   rz   rl   rm   )	rM   ro   rE   rF   rG   r   rK   rL   rN   )	r(   tz_aware_fixturer
   dti1dti2rV   rU   dts1dts2r+   r+   r,   test_concatlike_datetimetz;  s   

z1TestConcatAppendCommon.test_concatlike_datetimetzr
   )UTCr   z
Asia/TokyoEST5EDTc                 C   s   t jddd|d}t jddg|d}td|d	d
gd}td|d	d
gd}t jg d|d}td|d	d
gd}t||| tt ||g| d S )N
2014-07-15
2014-07-17D)startendr   r
   
2014-07-11
2014-07-21r	   r   AB)rn   columns)r   z
2014-07-16r   r   r   )rM   
date_rangero   r   rF   assert_frame_equalrK   rN   )r(   r
   ix1ix2df1df2exp_idxrV   r+   r+   r,    test_concatlike_datetimetz_shortP  s   z7TestConcatAppendCommon.test_concatlike_datetimetz_shortc                 C   s  |}t jddg|d}t ddg}tt jd|dt jd|dt dt dgtd}||}t|| t|}t|}|	|}t
|t|g dd t ||g}t
|t|g dd t jddgd	d}	tt jd|dt jd|dt jdd	dt jdd	dgtd}||	}t|| t|}t|	}
|	|
}t
|t|g dd t ||
g}t
|t|g dd d S )
Nr   r   r	   ry   rz   r^   rl   rm   z
US/Pacific)rM   ro   r   rq   r!   rE   rF   rG   r   rK   rL   rN   )r(   r{   r
   r|   r}   rV   rU   r~   r   dti3dts3r+   r+   r,   $test_concatlike_datetimetz_to_objecta  sH   





z;TestConcatAppendCommon.test_concatlike_datetimetz_to_objectc                 C   s   t jddgdd}t jddgdd}t jg ddd}||}t|| t|}t|}||}t|t|g dd	 t ||g}t|t|g dd	 d S )
Nr   r   r   r   2012-012012-02)r   r   r   r   rl   rm   )	rM   PeriodIndexrE   rF   rG   r   rK   rL   rN   r(   pi1pi2rV   rU   ps1ps2r+   r+   r,   test_concatlike_common_period  s   

z4TestConcatAppendCommon.test_concatlike_common_periodc                 C   s   t jddgdd}t jddgdd}tt jdddt jdddt jdddt jdddgtd}||}t|| t|}t|}|	|}t
|t|g d	d
 t ||g}t
|t|g d	d
 d S )Nr   r   r   r   ry   z
2012-02-01r   r^   rl   rm   )rM   r   r   Periodr!   rE   rF   rG   r   rK   rL   rN   r   r+   r+   r,   1test_concatlike_common_period_diff_freq_to_object  s$   


zHTestConcatAppendCommon.test_concatlike_common_period_diff_freq_to_objectc                 C   sh  t jddgdd}t ddg}tt jdddt jdddt dt dgtd}||}t	|| t
|}t
|}||}t|t
|g dd	 t ||g}t|t
|g dd	 tt dt dt jdddt jdddgtd}||}t	|| t
|}t
|}||}t|t
|g dd	 t ||g}t|t
|g dd	 d S )
Nr   r   r   r   r   r   r^   rl   rm   )rM   r   rp   r   r   rr   r!   rE   rF   rG   r   rK   rL   rN   )r(   r   ru   rV   rU   r   rw   r+   r+   r,   0test_concatlike_common_period_mixed_dt_to_object  sD   





zGTestConcatAppendCommon.test_concatlike_common_period_mixed_dt_to_objectc                 C   sH  t ddtjgdd}t g ddd}t ddtjdddgdd}ttj||gdd| t|j|dd| t ddgdd}t ddgdd}t g d	}ttj||gdd| t|j|dd| t d
dtjgdd}t tjdddgdd}t d
dtjtjdddgtjd}ttj||gdd| t|j|dd| d S )Nr   r   r    r^   r   r   r   Tr@   r   r   r   r   r   
      )	r   npnanrF   rL   rM   rN   rK   r   r(   rY   rZ   rV   r+   r+   r,   test_concat_categorical  s    z.TestConcatAppendCommon.test_concat_categoricalc                 C   sj   t tg dg dd}t tg dg dd}tj||gdd}t tg dg dd}t|| d S )Nr   
categories)r   r   r   Tr@   )r   r   r   r   r   r   )r   r   rM   rN   rF   rL   )r(   r   r   resultexpectedr+   r+   r,   6test_union_categorical_same_categories_different_order  s   zMTestConcatAppendCommon.test_union_categorical_same_categories_different_orderc                 C   sh  t ddtjgdd}t g d}t ddtjdddgtjd}ttj||gdd| t|j|dd| t dddddtjgtjd}ttj||gdd| t|j|dd| t ddgdd}t ddg}t g d	}ttj||gdd| t|j|dd| t g d
}ttj||gdd| t|j|dd| t ddtjgdd}t g d}t ddtjdddgtjd}ttj||gdd| t|j|dd| t dddddtjgtjd}ttj||gdd| t|j|dd| t ddtjgdd}t g d}t ddtjdddg}ttj||gdd| t|j|dd| t dddddtjg}ttj||gdd| t|j|dd| t ddgdd}t tjtjtjg}t ddtjtjtjg}ttj||gdd| t|j|dd| t tjtjtjddg}ttj||gdd| t|j|dd| d S )Nr   r   r    r^   r   Tr@   r   r   )r   r   r   r   r   r   r   r   r   r   r   r   r   )	r   r   r   r   rF   rL   rM   rN   rK   r   r+   r+   r,    test_concat_categorical_coercion  sP   z7TestConcatAppendCommon.test_concat_categorical_coercionc                 C   sT  t ddtjgdd}t g ddd}t ddddtjg}t ddtjdddddddtjgdd}ttj|||gdd| t|j||gdd| t ddddtjddtjdddgdd}ttj|||gdd| t|j||gdd| t g d	dd}t g d
dd}t g d}t g d}ttj|||gdd| t|j||gdd| t g d}ttj|||gdd| t|j||gdd| t g d	dd}t g d
dd}t g d}t g d}ttj|||gdd| t|j||gdd| t g d}ttj|||gdd| t|j||gdd| d S )Nr   r   r    r^   r   floatTr@   )         r   )r   r   r   )	r   r   r   r   r   r   r   r   r   )	r   r   r   r   r   r   r   r   r   )r   r      )	r   r   r   r   r   r   r   r   r   )	r   r   r   r   r   r   r   r   r   )r   r   r   rF   rL   rM   rN   rK   )r(   rY   rZ   s3rV   r+   r+   r,   &test_concat_categorical_3elem_coercionW  s6   &&z=TestConcatAppendCommon.test_concat_categorical_3elem_coercionc           	      C   s:  t ddgdd}t ddgdd}t ddg}t ddgdd}t dtjg}t g ddd}t dddddddddtjdddg}tj||||||gdd	}t|| |j|||||gdd	}t|| t ddddtjddddddddg}tj||||||gdd	}t|| |j|||||gdd	}t|| d S )
Nr   r   r    r^   r   r   r   Tr@   )r   r   r   rM   rN   rF   rL   rK   )	r(   rY   rZ   r   s4s5s6rV   rU   r+   r+   r,   &test_concat_categorical_multi_coercion  s    $$z=TestConcatAppendCommon.test_concat_categorical_multi_coercionc                 C   s   t tddtjgdd}t tg ddd}t tddtjdddgdd}ttj||gdd| t|j|dd| t tddtjdddddtjg	dd}ttj|||gdd| t|j||gdd| d S )Nr   r   T)orderedr   r@   )	r   r   r   r   rF   rL   rM   rN   rK   r   r+   r+   r,   test_concat_categorical_ordered  s   &z6TestConcatAppendCommon.test_concat_categorical_orderedc                 C   s  t tjtjtjgtjddd}t tjdg}t tjtjtjdg}ttj||gdd| t|j	|dd| t dtjgdd}t tjtjg}t dtjtjtjgdd}ttj||gdd| t|j	|dd| t tjtjgdd}t tjtjg}t tjtjtjtjg}ttj||gdd| t|j	|dd| ttj||gdd| t|j	|dd| t tjtjgdd}t tjtjgdd}t tjtjtjtjgdd}ttj||gdd| t|j	|dd| d S )Nr^   r    r   Tr@   r   )
r   r   arrayr   r   rF   rL   rM   rN   rK   r   r+   r+   r,   $test_concat_categorical_coercion_nan  s,    z;TestConcatAppendCommon.test_concat_categorical_coercion_nanc                 C   s  t g dd}t ddgdd}ttj||gdd| t|j|dd| ttj||gdd| t|j|dd| t g dd}t g dd}ttj||gdd| t|j|dd| t g dd}t g dd}ttj||gdd| t|j|dd| ttj||gdd| t|j|dd| t g dd}t tjtjg}t tjtjg}ttj||gdd| t|j|dd| ttj||gdd| t|j|dd| d S )Nr    r^   r   r   Tr@   r!   )r   rF   rL   rM   rN   rK   r   r   r   r+   r+   r,   test_concat_categorical_empty  s.   z4TestConcatAppendCommon.test_concat_categorical_emptyc                 C   s  t ddgddgd}ddg}t||d}t g dddgd}g d}t||dtg d	d
}tt||g| t||| t ddgg dd}ddg}t||d}	tj||	gdd}
ttdg dd}t|
| |j|	dd}
t|
| d S )Nr   r   r   r   r   )catsr9   )r   r   r   r   )r   r   r   r   rl   rm   r   Tr@   abab)	r   r   r   rF   r   rM   rN   rK   rD   )r(   catr9   dfcat2rQ   rV   cat3rR   df_different_categoriesrU   r+   r+   r,   test_categorical_concat_append  s    z5TestConcatAppendCommon.test_categorical_concat_appendN)#__name__
__module____qualname____doc__rH   fixturesortedr'   keysr-   re   r6   r_   parametrizer   r   r:   r\   rj   rx   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r+   r+   r+   r,   r$   .   s6    

j[ 
50
@*&&r$   )numpyr   rH   pandasrM   r   r   r   r   pandas._testing_testingrF   rq   dt_datatz_datarr   td_datar   period_datar   r'   r$   r+   r+   r+   r,   <module>   s@    

