U
    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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ejdeeg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/d0 Z!d1d2 Z"d3S )4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)   R/tmp/pip-unpacked-wheel-g7fro6k3/pandas/tests/reshape/concat/test_append_common.pyitem3   s    zTestConcatAppendCommon.itemc                 C   sV   t |tr|j|ksRtn8t |trN|dr>|jdksLtqR|j|ksRtntdS )zr
        Check whether obj has expected dtype depending on label
        considering not-supported dtypes
        period	Period[M]N)
isinstancer   dtypeAssertionErrorr   
startswith
ValueError)r&   objlabelr)   r)   r*   _check_expected_dtype:   s    


z,TestConcatAppendCommon._check_expected_dtypeboxc                 C   s`   |\}}||}t |tr*|j|ks\tn2t |tr\|drN|jdks\tn|j|ks\td S )Nr,   r-   )r.   r   r/   r0   r   r1   )r&   r+   r6   typvalsr3   r)   r)   r*   test_dtypesI   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_dtypesV   s    

  z2TestConcatAppendCommon.test_concatlike_same_dtypesc              	   C   s  |\}}|\}}|}d }	d }
||kr(d S |dks8|dkr<d S d }|dkrt|dkrt|}
t jjdd}|j| t}n\|dkr|dkr|}
t jjdd}|j| t}n(|dks|dks|dks|dkrt}	t}
|| }|| | }tj|dd	 t	|
t	|}W 5 Q R X 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   zGH#39187 casting to object)reasonr    r!   zconcatenating bool-dtyper=   r/   Tr?   r@   )rE   markZxfailnodeZ
add_markerFutureWarningr   rC   Zassert_produces_warningr   rB   rD   r   rG   rH   rI   rJ   )r&   r+   item2r'   rK   rL   Ztyp2rM   rN   Zexp_index_dtypeZexp_series_dtypewarnr[   rO   rP   rQ   rR   r)   r)   r*   test_concatlike_dtypes_coercion   sv     $ 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)rI   DatetimeIndexTimedeltaIndexr   	Timestamp	TimedeltarB   rC   rD   r.   r0   r   rG   rH   ZilocrJ   )r&   ZdtitdirR   rQ   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   rb   )	rI   rd   rB   rC   rD   r   rG   rH   rJ   )	r&   tz_aware_fixturer
   dti1dti2rR   rQ   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)rc   columnsz
2014-07-16)rI   Z
date_rangerd   r   rC   assert_frame_equalrG   rJ   )r&   r
   Zix1Zix2Zdf1Zdf2Zexp_idxrR   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|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	   rk   rl   rZ   r   r   rb   z
US/Pacific)rI   rd   r   rf   r   rB   rC   rD   r   rG   rH   rJ   )r&   rm   r
   rn   ro   rR   rQ   rp   rq   Zdti3Z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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   rb   )	rI   PeriodIndexrB   rC   rD   r   rG   rH   rJ   r&   pi1Zpi2rR   rQ   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   rk   z
2012-02-01rt   rZ   r   r   rb   )rI   r}   r   Periodr   rB   rC   rD   r   rG   rH   rJ   r~   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   rZ   r   r   rb   )rI   r}   re   r   r   rg   r   rB   rC   rD   r   rG   rH   rJ   )r&   r   rh   rR   rQ   r   ri   r)   r)   r*   0test_concatlike_common_period_mixed_dt_to_object  sD    

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


zGTestConcatAppendCommon.test_concatlike_common_period_mixed_dt_to_objectc                 C   sN  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tjd}ttj||gdd| t|j|dd| d S )
Nr   r   r   rZ   Tr?   r   
      )	r   npnanrC   rH   rI   rJ   rG   r   r&   rU   rV   rR   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   rI   rJ   rC   rH   )r&   r   r   resultexpectedr)   r)   r*   6test_union_categorical_same_categories_different_order  s    zMTestConcatAppendCommon.test_union_categorical_same_categories_different_orderc                 C   sv  t ddtjgdd}t dddg}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 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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 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   rZ   Tr?   r   r   r   r   r   r   )	r   r   r   r   rC   rH   rI   rJ   rG   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   rZ   floatTr?            r   r   r      )r   r   r   rC   rH   rI   rJ   rG   )r&   rU   rV   s3rR   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 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   rZ   r   r   Tr?   )r   r   r   rI   rJ   rC   rH   rG   )	r&   rU   rV   r   Zs4Zs5Zs6rR   rQ   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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   rH   rI   rJ   rG   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 )NrZ   r   r   Tr?   r   )
r   r   arrayr   r   rC   rH   rI   rJ   rG   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   rZ   r   r   Tr?   r   )r   rC   rH   rI   rJ   rG   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catsr8   r   rb   r   Tr?   Zabab)	r   r   r   rC   rz   rI   rJ   rG   rA   )r&   catr8   ZdfZcat2rM   rR   Zcat3rN   Zdf_different_categoriesrQ   r)   r)   r*   test_categorical_concat_append  s     z5TestConcatAppendCommon.test_categorical_concat_appendN)#__name__
__module____qualname____doc__rE   Zfixturesortedr%   keysr+   r^   r5   r[   Zparametrizer   r   r9   rX   r`   rj   rr   r{   r|   r   r   r   r   r   r   r   r   r   r   r   r   r)   r)   r)   r*   r"   .   s4   

j[ 
50
@*&&r"   )Znumpyr   rE   ZpandasrI   r   r   r   r   Zpandas._testingZ_testingrC   rf   Zdt_dataZtz_datarg   Ztd_datar   Zperiod_datar   r%   r"   r)   r)   r)   r*   <module>   s>   
