U
    f/e)n                     @   sN   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 G dd dZdS )    N)Categorical	DataFrameIndexSeriesc                   @   s   e Zd ZdZdd 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d/d0 Zd1S )2TestConcatAppendCommonzE
    Test common dtype coercion rules between concat and append.
    c              
   C   s   t dt dt dg}t jdddt jdddt jdddg}t dt dt dg}t jd	d
dt jdd
dt jdd
dg}dddgdddgdtjdgtdddgdddg||||d	| _d S )N
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])pd	Timestamp	TimedeltaPeriodnpnanr   data)selfmethodZdt_dataZtz_dataZtd_dataZperiod_data r,   R/tmp/pip-unpacked-wheel-tiezk1ph/pandas/tests/reshape/concat/test_append_common.pysetup_method   s4    
z#TestConcatAppendCommon.setup_methodc                 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_dtype8   s    


z,TestConcatAppendCommon._check_expected_dtypec                 C   s8   | j  D ](\}}| t|| | t|| q
d S )N)r)   itemsr6   r   r   )r*   typvalsr,   r,   r-   test_dtypesJ   s    z"TestConcatAppendCommon.test_dtypesc              
   C   s  | j  D ]\}}|}|}|dkrVt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 q
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)   r7   r   listr   appendtmassert_index_equalpytestZraises	TypeErrorr   assert_series_equalr#   concat)r*   typ1vals1vals2vals3exp_data	exp_data3resexpi1i2s1s2msgr,   r,   r-   test_concatlike_same_dtypesP   s    

   z2TestConcatAppendCommon.test_concatlike_same_dtypesc                 C   s  | j  D ]\}}| j  D ]\}}|}d }d }||kr@qn|dks|dkrRq|dkrh|dkrh|}n>|dkr~|dkr~|}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t|dd}
t||d}tj|
|dd	 t	j
t|t|gdd}
tj|
|dd	 t|jt|t|gdd}
t|	|d}t|
| t	j
t|t|t|gdd}
t|
| qq
d S )
Nr   r   )r   r   r!   r"   r0   Tr?   r@   )r)   r7   r    r   rB   rC   rD   r   rG   r#   rH   )r*   rI   rJ   Ztyp2rK   rL   Zexp_index_dtypeZexp_series_dtyperM   rN   rO   rP   r,   r,   r-   test_concatlike_dtypes_coercion   s^     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)r#   DatetimeIndexTimedeltaIndexr   r$   r%   rB   rC   rD   r/   r1   r   rG   ZilocrH   )r*   ZdtitdirP   rO   Z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   rZ   )r#   r\   rB   rC   rD   r   rG   rH   )	r*   tz_aware_fixturer   dti1dti2rP   rO   dts1dts2r,   r,   r-   test_concatlike_datetimetz%  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)r#   Z
date_ranger\   r   rC   assert_frame_equalrB   rH   )r*   r   Zix1Zix2Zdf1Zdf2Zexp_idxrP   r,   r,   r-    test_concatlike_datetimetz_short:  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|ddddgd	 t 
||
g}t	|t|ddddgd	 d S )Nr   r   r
   ra   rb   rW   r   r   rZ   z
US/Pacific)r#   r\   r   r$   r    rB   rC   rD   r   rG   rH   )r*   rc   r   rd   re   rP   rO   rf   rg   Zdti3Zdts3r,   r,   r-   $test_concatlike_datetimetz_to_objectK  sF    

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


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   rZ   )r#   PeriodIndexrB   rC   rD   r   rG   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   ra   z
2012-02-01rj   rW   r   r   rZ   )r#   rs   r   r&   r    rB   rC   rD   r   rG   rH   rt   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   rZ   )r#   rs   r]   r   r&   r%   r    rB   rC   rD   r   rG   rH   )r*   ru   r^   rP   rO   rv   r_   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   r'   r(   rC   rG   r#   rH   rB   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   r#   rH   rC   rG   )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   rz   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   rz   r{      r|   )r*   rS   rT   s3rP   r,   r,   r-   &test_concat_categorical_3elem_coercionA  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(   r#   rH   rC   rG   rB   )	r*   rS   rT   r   Zs4Zs5Zs6rP   rO   r,   r,   r-   &test_concat_categorical_multi_coercionk  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(   rC   rG   r#   rH   rB   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   rC   rG   r#   rH   rB   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   rC   rG   r#   rH   rB   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catsr9   r   rZ   r   Tr?   Zabab)	r   r   r   rC   rp   r#   rH   rB   rA   )r*   catr9   ZdfZ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__r.   r6   r:   rV   rX   r`   rh   rE   markZparametrizerq   rr   rw   rx   ry   r~   r   r   r   r   r   r   r   r   r,   r,   r,   r-   r      s.   %lI 
50
@*&&r   )Znumpyr'   rE   Zpandasr#   r   r   r   r   Zpandas._testingZ_testingrC   r   r,   r,   r,   r-   <module>   s
   