U
    *if&                     @   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   Y/home/mars/bis/venv/lib/python3.8/site-packages/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   )r3   ).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r0   r(   r   r=   c)r   pd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   r@   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   sB  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}|
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}|
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}|
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)   rP   )r   r   ranger   rJ   r	   r   r   nanr   ZastypeobjectrK   r   r   r   test_append_dtypes   sN    








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%   rB   )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   s@   t ||d}||jd jd }t|d|d}t|| d S )NrO   r   r%   )r0   rP   )r   r   rW   r   r	   rX   )r   datarP   r!   r   r"   r   r   r   test_other_dtypes   s    z%TestDataFrameAppend.test_other_dtypesrP   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 )Nra   z2011/1/1z2012/1/1zW-FRIr]   z1 daysz10 daysZ2Dr   )ABr(   rc   )r   r   r   r   allr   )r   rP   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)rj   col2Zlevel1)namesr   rH   ZcolATr&   rj   )rk   rl   )	r   rD   Z
MultiIndexfrom_tuplesrJ   rQ   r   r	   r   )r   r!   rM   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	   Zassert_produces_warningFutureWarningr   )r   rL   rM   r   r   r   !test_append_raises_future_warning  s    z5TestDataFrameAppend.test_append_raises_future_warningN)__name__
__module____qualname__r.   markfilterwarningsr   r#   r6   rA   rF   rI   rN   rT   ZparametrizerY   rD   Z
Int64DtypeZCategoricalDtypeZIntervalZIntervalDtypeZPeriodZPeriodDtypeZSparseDtyper`   rf   rp   rr   r   r   r   r   r      s:   


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

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