U
    f/e5                     @   s   d dl Zd dl m Z  d dlmZ d dlZd dlZd dlZd dlm	  m
Z d dlZd dlmZmZmZmZmZmZ d dlmZ G dd dZdS )    N)datetime)combinations)	DataFrameIndexSeries	Timestampconcatisnac                   @   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	dd Z
dd Zdd Zededddgedddgeeded ejd dd ejd!d"d#d$geed%d&dd'd'ed%d&ddd$ed%d&dd!d(gejd d gg	Zejjd)ed*d+ d,d-d. Zejjd/eed0d1d2d+ d,d3d4 Z d5d6 Z!d7d8 Z"e#j$d9d: Z%d;d< Z&ejd=d>d?d@dAgejdBd&dCgdDdE Z'ejd=d>d?d@dAgejdBd&dCgdFdG Z(dHS )I
TestAppendc                 C   s*  |  }d|d< |jd d }|jdd  }||}||}||}t|d |d  |d= |j||d}	d|	ks~t|j||d}	d|	kst|d d |dd  }t|| |d d j|dd  |d}
|d d j|dd  |d}t|
jddddgd	|jddddgd	 d S )
Nbarfoo   AsortBCDcolumns)copyindexZreindexappendtmZassert_almost_equalAssertionErrorassert_frame_equal)selfr   float_frameZmixed_frameZbegin_indexZ	end_indexZbegin_frameZ	end_frameappendedZpartial_appendedZmixed_appendedZmixed_appended2 r   K/tmp/pip-unpacked-wheel-tiezk1ph/pandas/tests/reshape/concat/test_append.pytest_append   s*    


zTestAppend.test_appendc                 C   sN   t  }||}t|| ||k	s(t||}t|| ||k	sJtd S N)r   r   r   r   r   )r   r   emptyr   r   r   r    test_append_empty:   s    

zTestAppend.test_append_emptyc              	   C   s0   d}t jt|d |j|dd W 5 Q R X d S )NzIndexes have overlapping values)matchT)Zverify_integrity)pytestZraises
ValueErrorr   )r   r   msgr   r   r    test_append_overlap_raisesE   s    z%TestAppend.test_append_overlap_raisesc                 C   sr   t ddddddd}tddd	gd
ddgdd}t dddddddddd	id}||}t|| d S )N      )xy      abr         r1   r2   czr   name)r,   r-   r6   )r1   r2   r5   )r   r   r   r   r   )r   dfrowexpectedresultr   r   r    test_append_new_columnsJ   s    


z"TestAppend.test_append_new_columnsc                 C   sX   t dddgd}t ddgddgd}|j||d}t ddgdddgd}t|| d S )	Nr   r   r   r   r   r*   r   r   r   )r   r   r   r   )r   r   r9   Zdf3Zdf5r;   r   r   r    test_append_length0_frameX   s
    z$TestAppend.test_append_length0_framec                 C   s~   t jddd}ddg|d d < t jddd}ddd	g|d d < t|}t|}|j|d
d}tt ||f}t|| d S )N)r+   z	i4,f4,a10dtype)r*          @ZHello)r+         @ZWorld)r.   )r.   g      @r   )r   g      @r   )g      @g       @ZbazTignore_index)npzerosr   r   Zconcatenater   r   )r   Zarr1Zarr2df1df2r<   r;   r   r   r    test_append_records`   s    zTestAppend.test_append_recordsc              	   C   s   t ddgddgdddgd}t ddgddgd	ddgd
}td  |j||d}W 5 Q R X t ddd d gddddgd d ddgddddgd}|dkr|dddg }t|| d S )Nr*   r+   r0   r2   r1   r   r.   r/   )r1   r5   )r   r   )r2   r1   r5   r5   F)r   r   Zassert_produces_warningr   r   )r   r   rH   rI   r<   r;   r   r   r    test_append_sortso   s    "zTestAppend.test_append_sortsc                 C   s   t tjddktjdddtjdddgd d}|d d jd d ddd	gf }|dd  jd d d
dd	gf }|j||d}t|d
 dd  st	t|d dd   st	d S )N
   r   r   r   r   )boolsintsfloatsstringsrM   rN   rO   rP   r   r/   )
r   rF   randomZrandnrandintlocr   r	   allr   )r   r   r9   r1   r2   r   r   r   r    test_append_different_columns   s    

	  z(TestAppend.test_append_different_columnsc                 C   s   |d d |dd |dd |dd  g}|d  |dd  }t|| |d  |d< d|d d< |d j |dd  |d	}t|jd d |jf | |d dd  dk st|d d d   std S )
Nr   rL      r   r*   r   r   r   )	r   r   r   r   rS   r   rT   r   r	   )r   r   r   chunksr<   r   r   r    test_append_many   s    



zTestAppend.test_append_manyc                 C   sp   t dddgd}|dg}t dddgdd	d
gdddggdddgd}|dg}||}|jjdksltd S )Nr   r   r   r   r*   r/   r4   r+   r      r.   r3   	   )datar   )r   Z	set_indexr   r   r8   r   )r   rH   rI   r<   r   r   r    test_append_preserve_index_name   s    *
z*TestAppend.test_append_preserve_index_namer.   r/   r   r3   g      @g      @g      @abczA B CzD E FT)Zorderedr4   rZ   r[   rL     r*   r      r   c                 C   s
   t | jS r"   type__name__r,   r   r   r    <lambda>       zTestAppend.<lambda>)idsc                 C   s  t dddgdddgg|d}|d d }tdd	g|dd
}||}t dddgdddgdd	tjggdddg|d}t|| |}|d d }t ddgddgg|d}tdd	dg|dd
}||}t ddtjgddtjgdd	dggdddg|d}t|| d S )Nr*   r+   r.   r/   r   r3   r   r4   rZ   r7         ?rB   rC   r   r>   r[   )r   r   r   rF   nanr   r   )r   r   r9   Z	ser_indexserr<   r;   r   r   r    test_append_same_columns_type   s*    
  
z(TestAppend.test_append_same_columns_typezdf_columns, series_indexr+   )rc                 C   s
   t | jS r"   ra   rd   r   r   r    re      rf   c           	   	   C   s   t dddgdddgg|d}tdd	d
g|dd}||}|j|}t| |}t dddtjtjtjgdddtjtjtjgtjtjtjdd	d
ggdddg|d}t	
|| d S )Nr*   r+   r.   r/   r   r3   r   r4   rZ   r[   r7   rh   rB   rC   r   r>   )r   r   r   r   
differencer   tolistrF   ri   r   r   )	r   Z
df_columnsZseries_indexr9   rj   r<   Zidx_diffZcombined_columnsr;   r   r   r    #test_append_different_columns_types   s    

	z.TestAppend.test_append_different_columns_typesc                 C   sX  t ddgtdddddtdddddgdgd}t ddgtddd	ddtddd	d
dgtdddddtdddddggddgd}tttjtjtddd	d
dtdddddgddttdddddtdddddtddd	ddtdddddgddgd|d}|j|d|d}|r<|ddg }n|ddg }t	|| d S )Nr*   r+   r_   r   
start_time)r   r\   r   r/   r   r.   r3   rL   r4   Zend_time)r8   )Zaxisr   TrE   r   )
r   dtr   r   r   pdNaTr   r   r   )r   r   rH   rI   r;   r<   r   r   r    test_append_dtype_coerce   sL    """		z#TestAppend.test_append_dtype_coercec                 C   st   t dtjddddgddi}t dtjd	d
d	d
gtdi}|j|d	|d}|d jdks^t|d jdksptd S )Nr   r*   r+   r.   r/   i8r@   r   TFrq   Zf8O)r   rF   arrayboolr   rA   r   )r   r   rH   rI   r   r   r   r    (test_append_missing_column_proper_upcast)  s
    z3TestAppend.test_append_missing_column_proper_upcastc                 C   s0  t dtj d}t|ddd}tddgd}|j|d	d
}ttjtjdd|ggdddddgd}|d 	t
|d< |d 	t
|d< t|| ttjtjdd|ggd dddddgd}|d 	t
|d< |d 	t
|d< |j|d	d
}t|| |dddddg }|j||gd	d
}t|| d S )Nz2018-10-24 07:30:00)tzrh   rB   )dater1   r2   r5   dr   TrD   r1   r2   r|   r+   )r   dateutilr{   Ztzutcr   r   r   rF   ri   astypeobjectr   r   )r   r|   rj   r9   Zresult_ar;   Zresult_br<   r   r   r    2test_append_empty_frame_to_series_with_dateutil_tz4  s,      z=TestAppend.test_append_empty_frame_to_series_with_dateutil_tzc                 C   s   t dgdd}|jdtjidd}t dtjgit}t|| t dgdd}tdtjidd}|j|dd}t dtjgit}t|| d S )Nr1   r   datetime64[ns, UTC]TrD   datetime64[ns]r@   )	r   r   r   rs   rt   r   r   r   r   )r   r9   r<   r;   otherr   r   r    ,test_append_empty_tz_frame_with_datetime64nsP  s    z7TestAppend.test_append_empty_tz_frame_with_datetime64ns	dtype_strr   r   ZInt64Zint64valrt   c                 C   sP   t dgd|}t dt|dgi}|j|dd}|t}t|| d S )Nr1   r   nsTrD   )r   r   rF   timedelta64r   r   r   r   r   r   r   r9   r   r<   r;   r   r   r    .test_append_empty_frame_with_timedelta64ns_nat`  s
    
z9TestAppend.test_append_empty_frame_with_timedelta64ns_natc                 C   sl   t dtjdg|di}t dt|dgi}|j|dd}t d|jd |jd gitd}t	|| d S )Nr1   r*   r@   r   TrD   )r   r   )
r   rs   rx   rF   r   r   Zilocr   r   r   r   r   r   r    (test_append_frame_with_timedelta64ns_natn  s
     z3TestAppend.test_append_frame_with_timedelta64ns_natN))rc   
__module____qualname__r!   r$   r)   r=   r?   rJ   rK   rU   rY   r]   rs   Z
RangeIndexr   listZCategoricalIndexsplitZIntervalIndexZfrom_breaksZDatetimeIndexrr   r   Z
MultiIndexZfrom_arraysZindexes_can_appendr&   markZparametrizerk   r   ro   ru   rz   tdZ&skip_array_manager_not_yet_implementedr   r   r   r   r   r   r   r    r
      sl   "
  


3
 

 
r
   )r   rr   	itertoolsr   r~   ZnumpyrF   r&   Zpandas.util._test_decoratorsutilZ_test_decoratorsr   Zpandasrs   r   r   r   r   r   r	   Zpandas._testingZ_testingr   r
   r   r   r   r    <module>   s    