U
    f/e:&                     @   sd   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	m
Z
 d dlmZ G dd dZG dd dZdS )    N)	DataFrameDatetimeIndexIndexSeries	Timestamp
date_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S )TestSeriesAppendc                 C   s.   |d d  |dd  }|j|jks*td S )N   )appendnameAssertionError)selfdatetime_seriesresult r   K/tmp/pip-unpacked-wheel-tiezk1ph/pandas/tests/series/methods/test_append.pytest_append_preserve_name   s    z*TestSeriesAppend.test_append_preserve_namec              	   C   s   | |}| D ]H\}}||jkr6||| ksZtq||jkrR||| ksZtqtdqd}tjt|d |j |dd W 5 Q R X d S )Nzorphaned index! Indexes have overlapping values:matchTZverify_integrity)r
   itemsindexr   pytestraises
ValueError)r   r   Zstring_seriesZobject_seriesZappended_seriesidxvaluemsgr   r   r   test_append   s    



zTestSeriesAppend.test_appendc                 C   sH   |d d |dd |dd  g}|d  |dd  }t|| d S )Nr	   
   r      )r
   tmassert_series_equal)r   r   piecesr   r   r   r   test_append_many#   s    "z!TestSeriesAppend.test_append_manyc              	   C   s  t dddg}t dddg}t ddddddgddddddgd}t||| tt||g| t ddddddg}tj|j|d	d
|d	d tjtj||gd	d
|d	d d}tjt|d |j|d	d W 5 Q R X tjt|d tj||gd	d W 5 Q R X d S )Nr!            r	      r   r   T)Zignore_index)Zcheck_index_typer   r   r   )	r   r"   r#   r
   pdconcatr   r   r   )r   s1s2expr   r   r   r   test_append_duplicates)   s*    $    z'TestSeriesAppend.test_append_duplicatesc                 C   sB   t dddg}||g}||f}||}||}t|| d S )Nr!   r&   r'   )r   r
   r"   r#   )r   sZ
list_inputZtuple_inputexpectedr   r   r   r   test_append_tuples@   s    

z#TestSeriesAppend.test_append_tuplesc              	   C   sl   t ddgddgd}d}tjt|d |j| W 5 Q R X tjt|d |j|g W 5 Q R X d S )Nr!   r&   r'   r(   )ABzCto_append should be a Series or list/tuple of Series, got DataFramer   )r   r   r   	TypeErrorr4   r
   )r   dfr   r   r   r   test_append_dataframe_raisesK   s    z-TestSeriesAppend.test_append_dataframe_raisesN)	__name__
__module____qualname__r   r   r%   r0   r3   r8   r   r   r   r   r      s   r   c                   @   sD   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S )!TestSeriesAppendWithDatetimeIndexc           
      C   s  t dddd}ttjt||}ttjt|d|d}||}||}tt	|j
d}t|j| t|j| ||}t|| |||g}tt	|j
d}t|| | }| }	d	|_d
|	_||jd	kst||	jd kstd S )N5/8/2012 1:45r    5Tperiodsfreqr(   r*   r&   r'   Zfoobar)r   r   nprandomrandnlenr   r
   r   Ztilevaluesr"   assert_index_equalr   copyr   r   )
r   rngtsr7   r   	result_dfZex_indexappendedrng1rng2r   r   r   r   W   s&    


z-TestSeriesAppendWithDatetimeIndex.test_appendc                 C   s   t ddddd}t ddddd}t ddddd}ttjt||}ttjt|d|d	}ttjt||}ttjt|d|d	}||}||}	t	|j
| t	|	j
| ||}
t	|
| d S )
Nr=   r    r>   
US/Easternr@   rA   tz5/8/2012 2:35   r(   r*   r   r   rC   rD   rE   rF   r   r
   r"   rH   r   r   rJ   rO   rng3rK   r7   ts2df2r   rL   rM   r   r   r   test_append_tzq   s    


z0TestSeriesAppendWithDatetimeIndex.test_append_tzc                 C   s   ddl m} tddd|dd}tddd|dd}tdd	d|dd}ttjt||}ttjt|d
|d}ttjt||}ttjt|d
|d}|	|}	|	|}
t
|	j| t
|
j| |	|}t
|| d S )Nr   )timezoner=   r    r>   rP   rQ   rS   rT   r(   r*   )Zpytzr[   r   r   rC   rD   rE   rF   r   r
   r"   rH   r   )r   r[   rJ   rO   rW   rK   r7   rX   rY   r   rL   rM   r   r   r   test_append_tz_explicit_pytz   s:             


z>TestSeriesAppendWithDatetimeIndex.test_append_tz_explicit_pytzc                 C   s   t ddddd}t ddddd}t ddddd}ttjt||}ttjt|d|d	}ttjt||}ttjt|d|d	}||}||}	t	|j
| t	|	j
| ||}
t	|
| d S )
Nr=   r    r>   zdateutil/US/EasternrQ   rS   rT   r(   r*   rU   rV   r   r   r   test_append_tz_dateutil   s8             


z9TestSeriesAppendWithDatetimeIndex.test_append_tz_dateutilc           	      C   s  t ddddd}t ddddd}tdg|d}tdg|d}||}td	d
gddd}tddg|d}t|| |jj|jkstt ddddd}t ddddd}tdg|d}tdg|d}||}td	d
gddd}tddg|d}t|| |j}||jjkstt ddddd}t ddddd}tdg|d}tdg|d}||}t	t
dddt
dddg}tddg|d}t|| d S )N1/1/2011 01:00r!   HrP   rQ   1/1/2011 02:00r*   r&   z2011-01-01 01:00z2011-01-01 02:00)rR   rA   UTCz
US/CentralrR   )r   r   r
   r   r"   r#   r   rR   r   r   r   )	r   rN   rO   ser1ser2	ts_result	exp_indexr/   utcr   r   r   test_series_append_aware   sN    
  
  


z:TestSeriesAppendWithDatetimeIndex.test_series_append_awarec                 C   s   t dddd}t ddddd}ttjt||d}ttjt||d}||}|jt	|jt	}|j
|stt dddd}td	}ttjt||d}ttjt||d}||}|jt	|j}|j
|std S )
Nr^   r!   r_   r?   r`   rP   rQ   r*   d   )r   r   rC   rD   rE   rF   r
   r   Zastypeobjectequalsr   range)r   rN   rO   rc   rd   re   r2   r   r   r   test_series_append_aware_naive   s    

z@TestSeriesAppendWithDatetimeIndex.test_series_append_aware_naivec                 C   s   t ddddd}t ddddd}tdddg|d	}td
ddg|d	}||}tddddddgdd}tdddd
ddg|d	}t|| |jj|jkstd S )Nz1/1/2016 01:00r'   r_   rP   rQ   z8/1/2016 01:00r!   r&   r*   r          z2016-01-01 01:00z2016-01-01 02:00z2016-01-01 03:00z2016-08-01 01:00z2016-08-01 02:00z2016-08-01 03:00rb   )	r   r   r
   r   r"   r#   r   rR   r   )r   rN   rO   rc   rd   re   rf   r/   r   r   r   test_series_append_dst   s$    
z8TestSeriesAppendWithDatetimeIndex.test_series_append_dstN)
r9   r:   r;   r   rZ   r\   r]   rh   rm   rp   r   r   r   r   r<   V   s   ,r<   )ZnumpyrC   r   Zpandasr+   r   r   r   r   r   r   Zpandas._testingZ_testingr"   r   r<   r   r   r   r   <module>   s    F