U
    NZfj                  
   @   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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.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)   R/tmp/pip-unpacked-wheel-nbcvw55c/pandas/tests/reshape/concat/test_append_common.pyitem3   s    zTestConcatAppendCommon.itemc                 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 )NZperiodz	Period[M])
isinstancer   dtypeAssertionErrorr   
startswith)r&   r+   Zindex_or_seriestypvalsobjr)   r)   r*   test_dtypes:   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_dtypesF   s    

  z2TestConcatAppendCommon.test_concatlike_same_dtypesc                 C   s  |\}}|\}}|}d }	d }
||kr(d S |dks8|dkr<d S |dkrl|dkrl|}
t jjdd}|j| nX|dkr|dkr|}
t jjdd}|j| 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|| d S )Nr   r   )r   r   zGH#39187 casting to object)reasonr    r!   r-   Tr8   r9   )r>   markZxfailnodeZ
add_markerr   r   r;   r<   r=   r   r@   rA   rB   rC   )r&   r+   item2r'   rD   rE   Ztyp2rF   rG   Zexp_index_dtypeZexp_series_dtyperT   rH   rI   rJ   rK   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)rB   DatetimeIndexTimedeltaIndexr   	Timestamp	Timedeltar;   r<   r=   r,   r.   r   r@   rA   ZilocrC   )r&   ZdtitdirK   rJ   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   rY   )	rB   r[   r;   r<   r=   r   r@   rA   rC   )	r&   tz_aware_fixturer
   dti1dti2rK   rJ   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)rZ   columnsz
2014-07-16)rB   Z
date_ranger[   r   r<   assert_frame_equalr@   rC   )r&   r
   Zix1Zix2Zdf1Zdf2Zexp_idxrK   r)   r)   r*    test_concatlike_datetimetz_short6  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	   rb   rc   rS   r   r   rY   z
US/Pacific)rB   r[   r   r]   r   r;   r<   r=   r   r@   rA   rC   )r&   rd   r
   re   rf   rK   rJ   rg   rh   Zdti3Zdts3r)   r)   r*   $test_concatlike_datetimetz_to_objectG  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   rY   )	rB   PeriodIndexr;   r<   r=   r   r@   rA   rC   r&   pi1Zpi2rK   rJ   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   rb   z
2012-02-01rk   rS   r   r   rY   )rB   rt   r   Periodr   r;   r<   r=   r   r@   rA   rC   ru   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   rS   r   r   rY   )rB   rt   r\   r   ry   r^   r   r;   r<   r=   r   r@   rA   rC   )r&   rv   r_   rK   rJ   rw   r`   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   rS   Tr8   r   
      )	r   npnanr<   rA   rB   rC   r@   r   r&   rN   rO   rK   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   
categoriesTr8   )r   r   rB   rC   r<   rA   )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   rS   Tr8   r   r|   r}   r   r   r   )	r   r~   r   r   r<   rA   rB   rC   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   rS   floatTr8            r   r|   r}      )r   r~   r   r<   rA   rB   rC   r@   )r&   rN   rO   s3rK   r)   r)   r*   &test_concat_categorical_3elem_coercion=  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   rS   r   r   Tr8   )r   r~   r   rB   rC   r<   rA   r@   )	r&   rN   rO   r   Zs4Zs5Zs6rK   rJ   r)   r)   r*   &test_concat_categorical_multi_coerciong  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orderedr8   )	r   r   r~   r   r<   rA   rB   rC   r@   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 )NrS   r   r   Tr8   r   )
r   r~   arrayr   r   r<   rA   rB   rC   r@   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   rS   r   r   Tr8   r   )r   r<   rA   rB   rC   r@   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catsr1   r   rY   r   Tr8   Zabab)	r   r   r   r<   rq   rB   rC   r@   r:   )r&   catr1   ZdfZcat2rF   rK   Zcat3rG   Zdf_different_categoriesrJ   r)   r)   r*   test_categorical_concat_append  s     z5TestConcatAppendCommon.test_categorical_concat_appendN) __name__
__module____qualname____doc__r>   Zfixturesortedr%   keysr+   rV   r3   rQ   rW   ra   ri   rT   Zparametrizerr   rs   rx   rz   r{   r   r   r   r   r   r   r   r   r   r)   r)   r)   r*   r"   .   s0   
jQ 
50
@*&&r"   )Znumpyr~   r>   ZpandasrB   r   r   r   r   Zpandas._testingZ_testingr<   r]   Zdt_dataZtz_datar^   Ztd_datary   Zperiod_datar   r%   r"   r)   r)   r)   r*   <module>   s>   
