U
    f/e%                     @   sR   d dl Zd dlZd dlZd dlmZmZmZmZm	Z	 d dl
mZ G dd dZdS )    N)	DataFrameSeries	Timestamp
date_rangetimedelta_rangec                
   @   s   e 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gdd Ze
jddge fdge fejdddge fejdddgedfdge fgdd Ze
jddd gd!d" Ze
jd#d$d% Zd&S )'TestDataFrameAppendc                 C   sF   |}|t kr|d }|d d }|dd  }||}t|| d S )NA   )r   appendtmZassert_equal)selfZ multiindex_dataframe_random_dataZframe_or_seriesobjabresult r   J/tmp/pip-unpacked-wheel-tiezk1ph/pandas/tests/frame/methods/test_append.pytest_append_multiindex   s    
z*TestDataFrameAppend.test_append_multiindexc                 C   st   t  }|g }|}t|| ||k	s,tt tjddddddgd}|g }|}t|| ||k	sptd S )Nr	      foobarbazquxcolumns)r   r
   r   assert_frame_equalAssertionErrornprandomrandn)r   dfr   expectedr   r   r   test_append_empty_list   s    

z*TestDataFrameAppend.test_append_empty_listc              	   C   s  t tjddddddgd}|jd }d}tjt|d	 |j|d
d W 5 Q R X d |_	d}tjt
|d	 |j|d
d W 5 Q R X |j|d d d d
d}|jt d|d d d i|jdjd
d}t|| |j| d
d}t|| |j|d d d d d d
d}|jt d|d d d d d ijd
d
d}t||jd d |jf  d}tjt
|d	 ||  W 5 Q R X |jd }d|_	||}|j|dd  d
d}t|| d S )Nr	   r   r   r   r   r   r   zIndexes have overlapping values)matchT)Zverify_integrityz-Can only append a Series if ignore_index=Trueignore_indexr   index   r&   sortz+Can only append a dict if ignore_index=True)r   r   r   r   locpytestZraises
ValueErrorr
   name	TypeErrorr   Tr   r   to_dict)r   r    Zseriesmsgr   r!   rowr   r   r   test_append_series_dict)   s@    
    

z+TestDataFrameAppend.test_append_series_dictc                 C   s   t tjddddddgd}dd	 | D }|j|d
d}|j|d
d}t|| ddddddddddg}|j|d
d
d}|jt |d
d
d}t|| d S )Nr	   r   r   r   r   r   r   c                 S   s   g | ]\}}|  qS r   )r2   ).0idxxr   r   r   
<listcomp>T   s     zHTestDataFrameAppend.test_append_list_of_series_dicts.<locals>.<listcomp>Tr%         r)   )r   r   r   Zpeekaboo         r*   )r   r   r   r   Ziterrowsr
   r   r   r   r    Zdictsr   r!   r   r   r    test_append_list_of_series_dictsQ   s    z4TestDataFrameAppend.test_append_list_of_series_dictsc              	   C   sx   t tjddddddgd}ddidd	ig}td  |j|d
d
d}W 5 Q R X |jt |d
d
d}t|| d S )Nr	   r   r   r   r   r   r   	   
   Tr*   )r   r   r   r   r   Zassert_produces_warningr
   r   r?   r   r   r   test_append_missing_colsc   s    z,TestDataFrameAppend.test_append_missing_colsc                 C   s   t  }t  }||}| }t|| t tjdd}t  }||}| }t|| t ddgd}t  }||}| }t|| t tjddddgd}t  }||}| }t|| d S )Nr	   r;   r   r   r   )r   r
   copyr   r   r   r   r   )r   df1df2r   r!   r   r   r   test_append_empty_dataframeq   s(    



z/TestDataFrameAppend.test_append_empty_dataframec                 C   sR  t dtditdd}t  }||}| }t|| t dtditdd}t dditddd}||}t dtddgi}t|| t dtditdd}t dtjitddd}||}t dt	tdtjgdd	i}|r|
t}t|| t dtditdd}t dtjitddtd
}||}t dt	tdtjgdd	i}|rp|
t}t|| t dtjitdd}t dtditddd}||}t dt	tjtdgdd	i}|r|
t}t|| t dtditdd}t dditddtd
}||}t dt	tddgi}t|| d S )Nr   Z20130101r	   r'   r:   r   r;   zM8[ns]dtype)r(   rI   )r   r   ranger
   rD   r   r   r   nanr   Zastypeobject)r   Zusing_array_managerrE   rF   r   r!   r   r   r   test_append_dtypes   sT    








z&TestDataFrameAppend.test_append_dtypes	timestampz2019-07-19 07:04:57+0100z2019-07-19 07:04:57c                 C   sP   |}t t||dg}||jd jd }tt||ddd}t|| d S )N)tzr   r$   )r/   )r   r   r
   ilocr   r   assert_series_equal)r   Ztz_naive_fixturerN   rO   r    r   r!   r   r   r   %test_append_timestamps_aware_or_naive   s
    z9TestDataFrameAppend.test_append_timestamps_aware_or_naivezdata, dtyper:   r   r	   )leftrightz2000-03Mfreqc                 C   s@   t ||d}||jd jd }t|d|d}t|| d S )NrH   r   r$   )r/   rI   )r   r
   rP   r   r   rQ   )r   datarI   r    r   r!   r   r   r   test_other_dtypes   s    z%TestDataFrameAppend.test_other_dtypesrI   datetime64[ns]ztimedelta64[ns]c                 C   s`   |dkrt dddd}ntdddd}t }td	|d
|d}||}|d |k s\td S )NrZ   z2011/1/1z2012/1/1zW-FRIrV   z1 daysz10 daysZ2Dr   )r   Br'   r[   )r   r   r   r
   allr   )r   rI   r(   r    otherr   r   r   r   test_append_numpy_bug_1681   s    
z.TestDataFrameAppend.test_append_numpy_bug_1681z-ignore:The values in the array:RuntimeWarningc                 C   s   t ddgddgddggtjjddgd	d gd
d}| }tddD ]\}d||df< |j|dd}|d }t dddg|d  dddg|d  d}t|| qDd S )Nr:      r;      r)      )multicol1)rb   col2Zlevel1)namesr   rB   ZcolATr%   rb   )rc   rd   )	r   pdZ
MultiIndexfrom_tuplesrD   rJ   r
   r   r   )r   r    rF   ir   r!   r   r   r   &test_multiindex_column_append_multiple   s      $z:TestDataFrameAppend.test_multiindex_column_append_multipleN)__name__
__module____qualname__r   r"   r5   r@   rC   rG   rM   r-   markZparametrizerR   rf   Z
Int64DtypeZCategoricalDtypeZIntervalZIntervalDtypeZPeriodZPeriodDtypeZSparseDtyperY   r^   filterwarningsri   r   r   r   r   r      s4   (: 




r   )Znumpyr   r-   Zpandasrf   r   r   r   r   r   Zpandas._testingZ_testingr   r   r   r   r   r   <module>   s
   