U
    +if'm                  
   @   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dddgdddgdejdgedddgdddg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-03TF         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dd Zd	d
 Zdd Zdd Zdd Zej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(d) Zd*d+ Zd,d- Zd.d/ Zd0d1 Z d2S )3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*   a/home/mars/bis/venv/lib/python3.8/site-packages/pandas/tests/reshape/concat/test_append_common.pyitem3   s    zTestConcatAppendCommon.itemc                 C   sn   t |tr2|dkr"|jdks0tqj|j|ksjtn8t |trf|drV|jdksdtqj|j|ksjtntdS )zr
        Check whether obj has expected dtype depending on label
        considering not-supported dtypes
        r   r   Zperiodz	Period[M]N)
isinstancer   dtypeAssertionErrorr   
startswith
ValueError)r'   objlabelr*   r*   r+   _check_expected_dtype:   s    


z,TestConcatAppendCommon._check_expected_dtypec                 C   s,   |\}}|  t|| |  t|| d S r$   )r4   r   r   )r'   r,   typvalsr*   r*   r+   test_dtypesL   s    z"TestConcatAppendCommon.test_dtypesc              	   C   s  |\}}|}|}|dkrJt 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 5 Q R X tjtdd t|t||g W 5 Q R X 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 5 Q R X tjt|d t	|
t	||g W 5 Q R X tjt|d tt	||g W 5 Q R X tjt|d tt	|t	||g W 5 Q R X d S )Nr   x)nameyzall inputs must be IndexmatchTZignore_indexZcheck_index_typezPcannot concatenate object of type '.+'; only Series and DataFrame objs are valid)r   listr   appendtmassert_index_equalpytestZ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_dtypesR   s    

  z2TestConcatAppendCommon.test_concatlike_same_dtypesc              	   C   s6  |\}}|\}}|}d }d }	||kr(d S |dks8|dkr<d S d }
|dkrZ|dkrZ|}	t }
nB|dkrt|dkrt|}	t }
n(|dks|dks|dks|dkrt}t}	|| }|| | }t|t|}t||d}t|| t|t|t|g}t||d}t|| tj|
dd t|jt|d	d
}W 5 Q R X t||	d}tj	||d	d tj|
dd  t
jt|t|gd	d
}W 5 Q R X tj	||d	d tj|
dd$ t|jt|t|gd	d
}W 5 Q R X t||	d}t	|| tj|
dd& t
jt|t|t|gd	d
}W 5 Q R X t	|| d S )Nr   r   )r   r   r    r!   r.   zconcatenating bool-dtyper;   Tr=   r>   )FutureWarningr   r   r@   rA   rB   Zassert_produces_warningr   rE   rF   rG   rH   )r'   r,   item2rI   rJ   Ztyp2rK   rL   Zexp_index_dtypeZexp_series_dtypewarnrM   rN   rO   rP   r*   r*   r+   test_concatlike_dtypes_coercion   sl     $ z6TestConcatAppendCommon.test_concatlike_dtypes_coercionc              	   C   sB  t ddg}t ddg}tt dt dt dt dg}||}t|| t	|d t jsnt
t	|d t jst
t|}t|}||}t|t|ddddgd t	|jd t jst
t	|jd t jst
t ||g}t|t|ddddgd t	|jd t js&t
t	|jd t js>t
d S )	Nr   r   r   r   r   r   index)rG   DatetimeIndexTimedeltaIndexr   	Timestamp	Timedeltar@   rA   rB   r-   r/   r   rE   rF   ZilocrH   )r'   ZdtitdirP   rO   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ddddg|d}||}t|| t|}t|}||}t|t|ddddgd t ||g}t|t|ddddgd d S )	Nr   r   r	   
2012-01-01
2012-01-02r   r   r]   )	rG   r_   r@   rA   rB   r   rE   rF   rH   )	r'   tz_aware_fixturer
   dti1dti2rP   rO   dts1dts2r*   r*   r+   test_concatlike_datetimetz1  s    
 

z1TestConcatAppendCommon.test_concatlike_datetimetzr
   UTCr   z
Asia/TokyoZ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dddddg|d}td|d	d
gd}t||| tt ||g| d S )Nz
2014-07-15z
2014-07-17D)startendr   r
   z
2014-07-11z
2014-07-21r	   r   AB)r^   columnsz
2014-07-16)rG   Z
date_ranger_   r   rA   assert_frame_equalrE   rH   )r'   r
   Zix1Zix2Zdf1Zdf2Zexp_idxrP   r*   r*   r+    test_concatlike_datetimetz_shortF  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|ddddgd	 t ||g}t
|t|ddddg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|ddddgd	 t ||
g}t
|t|ddddgd	 d S )Nr   r   r	   rg   rh   rW   r   r   r]   z
US/Pacific)rG   r_   r   ra   r   r@   rA   rB   r   rE   rF   rH   )r'   ri   r
   rj   rk   rP   rO   rl   rm   Zdti3Zdts3r*   r*   r+   $test_concatlike_datetimetz_to_objectW  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ddddgdd}||}t|| t|}t|}||}t|t|ddddgd	 t ||g}t|t|ddddgd	 d S )
Nr   r   r   r   z2012-01z2012-02r   r   r]   )	rG   PeriodIndexr@   rA   rB   r   rE   rF   rH   r'   pi1Zpi2rP   rO   ps1Z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|d	d
d	d
gd t ||g}t
|t|d	d
d	d
gd d S )Nr   r   r   r   rg   z
2012-02-01rp   rW   r   r   r]   )rG   ry   r   Periodr   r@   rA   rB   r   rE   rF   rH   rz   r*   r*   r+   1test_concatlike_common_period_diff_freq_to_object  s$    


zHTestConcatAppendCommon.test_concatlike_common_period_diff_freq_to_objectc              	   C   sx  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
|dd	dd	gd
 t ||g}t|t
|dd	dd	gd
 tt dt dt jdddt jdddgtd}||}t	|| t
|}t
|}||}t|t
|dd	dd	gd
 t ||g}t|t
|dd	dd	gd
 d S )Nr   r   r   r   r   r   rW   r   r   r]   )rG   ry   r`   r   r~   rb   r   r@   rA   rB   r   rE   rF   rH   )r'   r{   rc   rP   rO   r|   re   r*   r*   r+   0test_concatlike_common_period_mixed_dt_to_object  sD    

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


zGTestConcatAppendCommon.test_concatlike_common_period_mixed_dt_to_objectc                 C   sL  t ddtjgdd}t dddg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 ddddg}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d
d}ttj||gdd| t|j|dd| d S )Nr   r   r   rW   Tr=   r   
      r   r   npnanrA   rF   rG   rH   rE   r'   rS   rT   rP   r*   r*   r+   test_concat_categorical  s    z.TestConcatAppendCommon.test_concat_categoricalc                 C   s|   t tdddgdddgd}t tdddgdddgd}tj||gdd}t tddddddgdddgd}t|| d S )Nr   r   r   
categoriesTr=   )r   r   rG   rH   rA   rF   )r'   r   r   resultexpectedr*   r*   r+   6test_union_categorical_same_categories_different_order  s    zMTestConcatAppendCommon.test_union_categorical_same_categories_different_orderc                 C   sn  t ddtjgdd}t dddg}t ddtjdddgdd}ttj||gdd| t|j|dd| t dddddtjgdd}ttj||gdd| t|j|dd| t ddgdd}t ddg}t ddddg}ttj||gdd| t|j|dd| t ddddg}ttj||gdd| t|j|dd| t d	d
tjgdd}t dddg}t d	d
tjdddgdd}ttj||gdd| t|j|dd| t dddd	d
tjgdd}ttj||gdd| t|j|dd| t d	d
tjgdd}t dddg}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   rW   r   Tr=   r   r   r   r   r   r   r   r   r*   r*   r+    test_concat_categorical_coercion  sP    z7TestConcatAppendCommon.test_concat_categorical_coercionc                 C   s  t ddtjgdd}t dddg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 dd	d
gdd}t dddgdd}t dddg}t dd	d
ddddddg	}ttj|||gdd| t|j||gdd| t ddddd	d
dddg	}ttj|||gdd| t|j||gdd| t dd	d
gdd}t dddgdd}t dddg}t dd	d
ddddddg	}ttj|||gdd| t|j||gdd| t ddddd	d
dddg	}ttj|||gdd| t|j||gdd| d S )Nr   r   r   rW   floatTr=            r   r   r      r   )r'   rS   rT   s3rP   r*   r*   r+   &test_concat_categorical_3elem_coercionM  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 dddg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   rW   r   r   Tr=   )r   r   r   rG   rH   rA   rF   rE   )	r'   rS   rT   r   Zs4Zs5Zs6rP   rO   r*   r*   r+   &test_concat_categorical_multi_coercionw  s     $$z=TestConcatAppendCommon.test_concat_categorical_multi_coercionc                 C   s   t tddtjgdd}t tdddg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)Zorderedr=   )	r   r   r   r   rA   rF   rG   rH   rE   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 )NrW   r   r   Tr=   r   )
r   r   arrayr   r   rA   rF   rG   rH   rE   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   rW   r   r   Tr=   r   )r   rA   rF   rG   rH   rE   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 ddddgddgd}ddddg}t||dtddddgd}tt||g| t||| t ddgddd	gd}ddg}t||d}	tj||	gd
d}
ttdddddgd}t|
| |j|	d
d}
t|
| d S )Nr   r   r   r   r   )Zcatsr6   r   r]   r   Tr=   Zabab)	r   r   r   rA   rv   rG   rH   rE   r?   )r'   catr6   Zdfcat2rK   rP   Zcat3rL   Zdf_different_categoriesrO   r*   r*   r+   test_categorical_concat_append  s     z5TestConcatAppendCommon.test_categorical_concat_appendN)!__name__
__module____qualname____doc__rC   Zfixturesortedr&   keysr,   rY   r4   r7   rV   r[   rf   rn   markZparametrizerw   rx   r}   r   r   r   r   r   r   r   r   r   r   r   r*   r*   r*   r+   r"   .   s2   
jU 
50
@*&&r"   )numpyr   rC   ZpandasrG   r   r   r   r   Zpandas._testingZ_testingrA   ra   Zdt_dataZtz_datarb   Ztd_datar~   Zperiod_datar   r&   r"   r*   r*   r*   r+   <module>   s>   
