U
    sVca)                     @   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ejdd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)d* Zd+S ),TestDataFrameAppendz4ignore:.*append method is deprecated.*:FutureWarningc                 C   sB   |}t ||}|d d }|dd  }||}t || d S )N   )tmget_objappendZassert_equal)selfZ multiindex_dataframe_random_dataZframe_or_seriesobjabresult r   J/tmp/pip-unpacked-wheel-xj8nt62q/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   _appendr	   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   )r4   ).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   s   t ddgddggtjddgddd	}td
dgdd}t ddgddgd
dggtjdddgddd	}||}t|| ||g}t|| d S )Nr<   r=   r+   r   r   r   Zkeepthisnamer1   r)   r   r>   c)r   pdZIndexr   r   r	   r   )r   r!   Zsercr"   r   r   r   r   "test_append_list_retain_index_namec   s     
z6TestDataFrameAppend.test_append_list_retain_index_namec                 C   sb   t tjddddddgd}ddidd	ig}|j|d
d
d}|jt |d
d
d}t|| d S )Nr   r   r   r   r   r   r   	   
   Tr,   )r   r   r   r    r   r	   r   rA   r   r   r   test_append_missing_colsw   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_dataframe   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*   rO   )r   r   ranger   rJ   r	   r   r   nanr   Zastypeobject)r   using_array_managerrK   rL   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&   rC   )r   r   r   ilocr   r	   assert_series_equal)r   Ztz_naive_fixturerU   rV   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   sr   t ||d}d }|r$t|tjr$t}tj|dd ||jd jd }W 5 Q R X t	|d|d}t
|| d S )NrN   zastype from SparseDtyper$   r   r&   )r1   rO   )r   
isinstancerE   SparseDtypeFutureWarningr	   assert_produces_warningr   rW   r   rX   )r   datarO   rS   r!   warnr   r"   r   r   r   test_other_dtypes   s     z%TestDataFrameAppend.test_other_dtypesrO   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 )Nrf   z2011/1/1z2012/1/1zW-FRIr]   z1 daysz10 daysZ2Dr   )ABr)   rh   )r   r   r   r   allr   )r   rO   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)ro   col2Zlevel1)namesr   rH   ZcolATr'   ro   )rp   rq   )	r   rE   Z
MultiIndexfrom_tuplesrJ   rP   r   r	   r   )r   r!   rL   ir   r"   r   r   r   &test_multiindex_column_append_multiple  s      $z:TestDataFrameAppend.test_multiindex_column_append_multiplec              	   C   sL   t ddgddgg}t ddgddgg}tt || W 5 Q R X d S )	Nr<   r=   r+   r   r   r>   r?   r@   )r   r	   rb   ra   r   )r   rK   rL   r   r   r   !test_append_raises_future_warning  s    z5TestDataFrameAppend.test_append_raises_future_warningN)__name__
__module____qualname__r/   markfilterwarningsr   r#   r7   rB   rF   rI   rM   rT   ZparametrizerY   rE   Z
Int64DtypeZCategoricalDtypeZIntervalZIntervalDtypeZPeriodZPeriodDtyper`   re   rk   ru   rv   r   r   r   r   r      s:   


(: 


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