U
    c]                     @   sR  d dl m Z mZm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Zd dlmZmZ d dl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 d dlmZmZ erd dlZG d	d
 d
Z G dd dZ!dd Z"dd Z#e
j$%dd dge
j$%ddde	&ddde dddd dd d ej'dgdd Z(e
j$%dd dge
j$%dd dgd!d" Z)d gZ*erzd e+d#gZ*W n ej,k
r   Y nX e
j$%de*e
j$%d$d%d&d'd(e dddddd d d d)d fe dddddd d dd)dfgd*d+ Z-e
j$%dd ge
j$%d,e dddddd d d dfe dddddd d dd-fgd.d/ Z.dS )0    )datetime	timedeltatimezone)partial
attrgetterN)OutOfBoundsDatetimeastype_overflowsafe)PY39)DatetimeIndexIndex	Timestamp
date_rangeoffsetsto_datetime)DatetimeArrayperiod_arrayc                
   @   sR  e Zd Zejdeejgdd Z	ejde
ddddejd	dd
gdd Zdd Zdd Zdd Zdd Zdd Zejdddiddidddgdd Zejdddiddidddg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jd0d1d2gd3d4 Zd5d6 Zejdee j!e j"gd7d8 Z#d9d: Z$d;d< Z%d=d> Z&ejdd?d@e'(d@e)dAd@dBj*gdCdD Z+ejdddEdFgdGdH Z,dIdJ Z-ejdKe.egejdLe j/e0e j/edMe1gejdNdOdPgdQdR Z2dSdT Z3dUdV Z4dWdX Z5dYdZ Z6d[d\ Z7d]d^ Z8d_d` Z9dadb Z:dcdd Z;d?S )eTestDatetimeIndexdt_clsc              	   C   sj   d}t jt|d |tjtdgdd W 5 Q R X t jt|d |tjtdjgdd W 5 Q R X d S )NQInferred frequency None from passed values does not conform to passed frequency Dmatch
2011-01-01Dfreq)pytestraises
ValueErrorpdNaTr   value)selfr   msg r$   T/tmp/pip-unpacked-wheel-g7fro6k3/pandas/tests/indexes/datetimes/test_constructors.pytest_freq_validation_with_nat(   s     z/TestDatetimeIndex.test_freq_validation_with_natindex
2016-01-01   
US/Pacificperiodstzz1 Dayr,   c                 C   sB   |j }|dddddg }|jd ks&t||}|jd ks>td S )Nr               )_datar   AssertionErrorZ_shallow_copy)r"   r'   arrayarrresultr$   r$   r%   %test_shallow_copy_inherits_array_freq8   s
    

z7TestDatetimeIndex.test_shallow_copy_inherits_array_freqc                 C   sl   t tjdddgdd}||jfD ]F}t|}t|}t|}|||fD ]}t |}t|| qLq d S )N
2015-01-01z1999-04-06 15:14:13
US/Easternr-   )	r   r   r    r3   ZCategoricalIndexZCategoricalZSeriestmassert_index_equal)r"   dtiZdtobjciZcarrZcserobjr7   r$   r$   r%   test_categorical_preserves_tzJ   s     


z/TestDatetimeIndex.test_categorical_preserves_tzc              	   C   s   t jddgdd}tjtdd t| W 5 Q R X tjtdd t| W 5 Q R X tjtdd tt| W 5 Q R X tjtdd tt| W 5 Q R X d S )NZ2016Q1Z2016Q2Qr   zPeriodDtype data is invalidr   )r   ZPeriodIndexr   r   	TypeErrorr   r   r   )r"   datar$   r$   r%    test_dti_with_period_data_raises[   s    z2TestDatetimeIndex.test_dti_with_period_data_raisesc              	   C   s   t jdgdd}d}tjt|d t| W 5 Q R X tjt|d t| W 5 Q R X tjt|d tt| W 5 Q R X tjt|d tt| W 5 Q R X d S )Nr   zm8[ns]dtypez3timedelta64\[ns\] cannot be converted to datetime64r   )	npr5   r   r   rC   r   r   r   ZTimedeltaIndex)r"   rD   r#   r$   r$   r%   %test_dti_with_timedelta64_data_raisesk   s    z7TestDatetimeIndex.test_dti_with_timedelta64_data_raisesc              	   C   sZ   t dt dg}tj|}d}tjt|d t|}W 5 Q R X t|}t	|| d S )Nz2012-05-01T01:00:00.000000z2016-05-01T01:00:00.000000zwill store that array directlyr   )
r   r   ZarraysZSparseArrayr<   assert_produces_warningFutureWarningr   r   r=   )r"   valuesr6   r#   r7   expectedr$   r$   r%   "test_constructor_from_sparse_array{   s    z4TestDatetimeIndex.test_constructor_from_sparse_arrayc              
   C   sX   t tdddtddddtdt jtdgtddddd	}|jjjjdksTt	d S )
N20130101r/   r.   r:   r+   Z20130103nsr,   r   )dtdttzZdt_with_nullZdtns)
r   	DataFramer   r   r    rS   rG   r-   zoner4   )r"   Zdfr$   r$   r%   test_construction_caching   s    
z+TestDatetimeIndex.test_construction_cachingkwargsr-   zdtype.tzrG   rG   r-   c                    sF   |}t ddd|d  fdd| D }t f|}t | d S )NrO   r)   Hr,   r   r-   c                    s   i | ]\}}|t | qS r$   r   .0keyvalir$   r%   
<dictcomp>   s      z@TestDatetimeIndex.test_construction_with_alt.<locals>.<dictcomp>)r   itemsr   r<   r=   )r"   rW   tz_aware_fixturer-   r7   r$   r_   r%   test_construction_with_alt   s
    z,TestDatetimeIndex.test_construction_with_altc              	      s   |}t ddd|d  d   fdd| D }d|krlt jdd	|d }t f|}t|| t d jdd	} d d}t|| d
}t	j
t|d t d j jdd W 5 Q R X d S )NrO   r)   rY   rZ   c                    s   i | ]\}}|t | qS r$   r   r[   r_   r$   r%   ra      s      zLTestDatetimeIndex.test_construction_with_alt_tz_localize.<locals>.<dictcomp>r-   UTCr;   -cannot supply both a tz and a dtype with a tzr   r*   rX   )r   Z
_with_freqrb   r   asi8Z
tz_convertr<   r=   tz_localizer   r   r   rG   )r"   rW   rc   r-   r7   rM   i2r#   r$   r_   r%   &test_construction_with_alt_tz_localize   s    
z8TestDatetimeIndex.test_construction_with_alt_tz_localizec                 C   s  t tdtdgdd}ttdtdgdd}tj||dd t|tsNt|jd ks\tt tddd	td
dd	gdd}ttdtd
gddd}tj||dd t|tst|jd k	st|j|jkstt tddd	tddd	gdd}ttdtdgddd}tj||dd t|ts,t|jd k	s<t|j|jksNtt tdtd
dd	gdd}t tdtd
dd	gddd}tj||dd t|trtt tddd	td
dd	gdd}t tddd	td
dd	gddd}tj||dd t|tr
tt tdgdd}ttdgdd}tj||dd t|tsNt|jd ks^tt tddd	gdd}ttdgddd}tj||dd t|tst|jd k	st|j|jkstd S Nr   
2011-01-02idxnameTexact2011-01-01 10:00
Asia/Tokyor;   2011-01-02 10:00r-   ro   r:   2011-08-01 10:00object)rG   ro   )r   r   r   r<   r=   
isinstancer4   r-   r"   r7   expr$   r$   r%   ,test_construction_index_with_mixed_timezones   s     









  z>TestDatetimeIndex.test_construction_index_with_mixed_timezonesc              	   C   s2  t tjtdtjtdgdd}ttjtdtjtdgdd}tj||dd t|ts^t|j	d ksltt tjtddd	tjtd
dd	gdd}ttjtdtjtd
gddd}tj||dd t|tst|j	d k	st|j	|j	kstt tddd	tjtddd	gdd}ttdtjtdgddd}tj||dd t|tsTt|j	d k	sdt|j	|j	ksvtt tjtdtjtd
dd	gdd}t tjtdtjtd
dd	gddd}tj||dd t|trtt tjtddd	tjtd
dd	gdd}t tjtddd	tjtd
dd	gddd}tj||dd t|trRtt tjtjgdd}ttjtjgdd}tj||dd t|tst|j	d kstt
t t tjtjgddd}W 5 Q R X ttjtjgddd}tj||dd t|tst|j	d k	st|j	|j	ks.td S rk   )r   r   r    r   r   r<   r=   rx   r4   r-   rJ   rK   ry   r$   r$   r%   5test_construction_index_with_mixed_timezones_with_NaT!  s    

	



	



	


 zGTestDatetimeIndex.test_construction_index_with_mixed_timezones_with_NaTc              
   C   s
  t tdtdgdd}t tdtdgdd}tj||dd t|t sNtt tddd	td
dd	gdd}t tdtd
gddd}tj||dd t|t stt tddd	tddd	gdd}t tdtdgddd}tj||dd t|t std}tjt|d& t tddd	td
dd	gdd W 5 Q R X tjt|d$ t tdtd
dd	gddd W 5 Q R X tjt|d( t tddd	td
dd	gddd W 5 Q R X tjt|dB t	t
, ttjtdtjtd
dd	gddd W 5 Q R X W 5 Q R X d S )Nr   rl   rm   rn   Trp   rr   rs   r;   rt   ru   r:   rv   z!cannot be converted to datetime64r   )r   r   r<   r=   rx   r4   r   r   r   rJ   rK   r   r   r    )r"   r7   rz   r#   r$   r$   r%   *test_construction_dti_with_mixed_timezones  s      






	

	
z<TestDatetimeIndex.test_construction_dti_with_mixed_timezonesc                 C   s   t dtjt dg}tt|t| ttt|tt| tj	tjt dg}tt|t| ttt|tt| d S )Nr   z
2011-01-03)
r   r   r    r<   r=   r   r   rH   r5   nan)r"   r6   r$   r$   r%   "test_construction_base_constructor  s     z4TestDatetimeIndex.test_construction_base_constructorc              	   C   sr   t dddt dddt dddt dddg}t|td}tt|| d}tjt|d t| W 5 Q R X d S )	Ni  r2   i  i  ip  rF   z&Out of bounds .* present at position 0r   )	r   r   rw   r<   r=   r   r   r   r   )r"   datesrz   r#   r$   r$   r%   test_construction_outofbounds   s    



z/TestDatetimeIndex.test_construction_outofboundsc                 C   sf   t dddt dddt dddg}t|t dj}t|t d}tddd	gd
d}t|| d S )Ni  
         	   r   z
2013-10-07z
2013-10-08z
2013-10-09B)r   r   r   BDayrL   r<   r=   )r"   r   rD   r7   rM   r$   r$   r%   test_construction_with_ndarray  s
    "z0TestDatetimeIndex.test_construction_with_ndarrayc              	   C   sz   t dd}t |dg}t|d}tdgdd}t|| td  t|dd}W 5 Q R X tdgdd}d S )Nz2000-01-01 00:00:00rP   i8
US/Centralz2000-01-01T00:00:00r;   re   )	rH   
datetime64r5   viewr   rh   r<   r=   rJ   )r"   r^   rL   r7   rM   r$   r$   r%   -test_integer_values_and_tz_interpreted_as_utc  s    z?TestDatetimeIndex.test_integer_values_and_tz_interpreted_as_utcc           	   	   C   s  t ddd}t ddd}t|| d}tjt|d t dddd	 W 5 Q R X d
}tjt|d td W 5 Q R X dd tdD }t|}tdd tdD }t|| t	dddg}t|}t|
d}t|| t|j}t|| t	dddg}t|}t|
d}t|| t|j}t|| d}tjt|d tdddgdd W 5 Q R X d}tjt|d t ddd W 5 Q R X tjt|d t ddd W 5 Q R X tjt|d t ddd W 5 Q R X d S )N1/1/2000g      %@r.   r   z!periods must be a number, got foor   Zfoor   startr,   r   z8DatetimeIndex\(\.\.\.\) must be called with a collectionc                 s   s"   | ]}t d ddt| V  qdS )  r2   Nr   r   r\   r`   r$   r$   r%   	<genexpr>6  s     z>TestDatetimeIndex.test_constructor_coverage.<locals>.<genexpr>c                 S   s    g | ]}t d ddt| qS )r   r2   r   r   r$   r$   r%   
<listcomp>9  s     z?TestDatetimeIndex.test_constructor_coverage.<locals>.<listcomp>
2000-01-01z
2000-01-02z
2000-01-03Or    r   z
2000-01-04r   zVOf the four parameters: start, end, periods, and freq, exactly three must be specifiedr   b)r   r   r   )endr   rQ   )r   r<   r=   r   r   rC   r   rangerH   r5   Zastyperg   r   )	r"   rngrz   r#   genr7   rM   stringsZ	from_intsr$   r$   r%   test_constructor_coverage(  sN    

z+TestDatetimeIndex.test_constructor_coverager   ASW-SUNc                 C   sD  t dd|d}t dd|tdd}t|| t dd|dd}t|j|j t d	d
|d}t dd|tdd}t|| t dd|dd}t|j|j t dd|d}t dd|tdd}t|| t dd|dd}t|j|j t dd|d}t dd|tdd}t|| t dd|dd}t|j|j d S )Nz2013-01-01T00:00:00-05:00z2016-01-01T23:59:59-05:00r   z2013-01-01T00:00:00z2016-01-01T23:59:59ir   r-   zAmerica/Limaz2013-01-01T00:00:00+09:00z2016-01-01T23:59:59+09:00i  rs   z2013/1/1 0:00:00-5:00z2016/1/1 23:59:59-5:00z2013/1/1 0:00:00+9:00z2016/1/1 23:59:59+09:00)r   pytzZFixedOffsetr<   r=   assert_numpy_array_equalrg   )r"   r   rm   rM   Zexpected_i8r$   r$   r%   $test_constructor_datetime64_tzformatb  s                    z6TestDatetimeIndex.test_constructor_datetime64_tzformatc              	   C   s   t ddgdd}t ddgd}t|| t ddgdd}t|| t ddgdd}d}tjt|d t |d	d W 5 Q R X d
}tjt|d t |dd W 5 Q R X d}tjt|d t |ddd W 5 Q R X t |dd}t|| d S )Nz
2013-01-01z
2013-01-02zdatetime64[ns, US/Eastern]rF   r:   r;   zNcannot supply both a tz and a timezone-naive dtype \(i\.e\. datetime64\[ns\]\)r   datetime64[ns]zDdata is already tz-aware US/Eastern, unable to set specified tz: CETzdatetime64[ns, CET]rf   ZCET)r-   rG   )r   rh   r<   r=   r   r   r   rC   )r"   rm   rM   r#   r7   r$   r$   r%   test_constructor_dtype  s0      z(TestDatetimeIndex.test_constructor_dtypec              	   C   s2   d}t jt|d tddg|d W 5 Q R X d S )NzUnexpected value for 'dtype'r   r2   r0   rF   r   r   r   r   )r"   rG   r#   r$   r$   r%   %test_constructor_invalid_dtype_raises  s    z7TestDatetimeIndex.test_constructor_invalid_dtype_raisesc                 C   s"   t ddddd}|jdkstd S )Nr   r2   AZTEST)r   r,   r   ro   )r   ro   r4   )r"   rm   r$   r$   r%   test_constructor_name  s    z'TestDatetimeIndex.test_constructor_namec                 C   s*   t d}t|g}|jd |jks&td S )Nl   )b0Z4 r   )r   r   Z
nanosecondr4   )r"   t1rm   r$   r$   r%   test_000constructor_resolution  s    
z0TestDatetimeIndex.test_000constructor_resolutionc              	   C   s<   t dgdd}d}tjt|d td|_W 5 Q R X d S )N2010re   r;   zCannot directly set timezoner   r*   )r   r   r   AttributeErrorr   r   r-   r"   r>   r#   r$   r$   r%   test_disallow_setting_tz  s    z*TestDatetimeIndex.test_disallow_setting_tzNAmerica/Los_Angeles2000r;   c                 C   s^   t ddd}t ddd}td|||d}tddgddd}t|| td|jksZtd S )Nz2013-01-01 06:00:00r   r;   z2013-01-02 06:00:00r   )r   r   r   r-   )r-   r   )	r   r   r   r<   r=   r   r   r-   r4   )r"   r-   r   r   r7   rM   r$   r$   r%   "test_constructor_start_end_with_tz  s    z4TestDatetimeIndex.test_constructor_start_end_with_tzr:   rs   c                 C   s4   t d|dj}tdg|d}t||jks0td S )Nr   r;   )r   r-   r   r   r   r4   )r"   r-   Znon_norm_tzr7   r$   r$   r%   )test_constructor_with_non_normalized_pytz  s    z;TestDatetimeIndex.test_constructor_with_non_normalized_pytzc                 C   sL   t dddt dddg}t|}t|d  |d  g}t|| d S )Nz2016-10-30 03:00:00+0300zEurope/Helsinkir;   z2016-10-30 03:00:00+0200r   r2   )r   r   to_pydatetimer<   r=   )r"   tsr7   rM   r$   r$   r%   #test_constructor_timestamp_near_dst  s    

z5TestDatetimeIndex.test_constructor_timestamp_near_dstklassboxrF   z	tz, dtype)r*   zdatetime64[ns, US/Pacific])Nr   c                 C   s:   t d|d}|||jg|d}||g}||ks6td S )Nz
2018-01-01r;   rF   r   r!   r4   )r"   r   r   r-   rG   r   r7   rM   r$   r$   r%   test_constructor_with_int_tz  s    
z.TestDatetimeIndex.test_constructor_with_int_tzc                 C   s,   |}d}t |g|djd }||ks(td S )Nl     _S r;   r   )r   rg   r4   )r"   tz_naive_fixturer-   r7   rM   r$   r$   r%   test_construction_int_rountrip  s    z0TestDatetimeIndex.test_construction_int_rountripc                 C   s   t tdddtdddddd}tjdtt|i|d}|d	 }td
d |j	D }tddddddgdd}t
|| d S )Nr   r2     MSzAustralia/Melbourner   rD   )r'   Yc                 S   s   g | ]}|j d ddqS )   r2   )monthday)replace)r\   xr$   r$   r%   r   #  s     zYTestDatetimeIndex.test_construction_from_replaced_timestamps_with_dst.<locals>.<listcomp>z2000-06-01 00:00:00z2001-06-01 00:00:00z2002-06-01 00:00:00z2003-06-01 00:00:00z2004-06-01 00:00:00z2005-06-01 00:00:00r;   )r   r   r   rT   r   lenZresampleZmeanr   r'   r<   r=   )r"   r'   testr7   rM   r$   r$   r%   3test_construction_from_replaced_timestamps_with_dst  s(    

zETestDatetimeIndex.test_construction_from_replaced_timestamps_with_dstc              	   C   s<   t dddd}d}tjt|d t|dd W 5 Q R X d S )	Nr(   r/   r   r+   z?data is already tz-aware US/Central, unable to set specified tzr   rs   r;   )r   r   r   rC   r   r   r$   r$   r%   *test_construction_with_tz_and_tz_aware_dti1  s    z<TestDatetimeIndex.test_construction_with_tz_and_tz_aware_dtic                 C   s@   t j }tddg|d}ttd|dtjg}t|| d S )NZ2018r    r;   )	dateutilr-   Ztzlocalr   r   r   r    r<   r=   )r"   r-   r7   rM   r$   r$   r%   &test_construction_with_nat_and_tzlocal8  s    
z8TestDatetimeIndex.test_construction_with_nat_and_tzlocalc                 C   s   t ddgdddd}d}tdd	d
d
dj|dd}t|ddd}t|| d}tdd	dd
dj|dd}t|ddd}t|| d S )Nz2020-11-01 01:00:00z2020-11-02 01:00:00z datetime64[ns, America/New_York]r   F)rG   r   	ambiguouszAmerica/New_Yorki     r2   )yearr   r   hour)r   r0   )r   r,   r   )r   r,   r   )r   r   rh   r   r<   r=   )r"   rM   r   r   r7   r   r$   r$   r%   +test_constructor_with_ambiguous_keyword_arg>  s(      z=TestDatetimeIndex.test_constructor_with_ambiguous_keyword_argc                 C   s   d}t dj|dd}t|ddd}tt d|d	t d
|d	g}t|| t dj|dd}t|ddd}tt d|d	t d|d	g}t|| d S )NzEurope/Warsawz2015-03-29 02:30:00Zshift_forward)Znonexistentr0   rY   r   z2015-03-29 03:00:00+02:00r;   z2015-03-29 04:00:00+02:00)r   r,   r   z2015-03-29 01:00:00+01:00)r   rh   r   r   r<   r=   )r"   r   r   r7   rM   r   r$   r$   r%   -test_constructor_with_nonexistent_keyword_argX  s.     

 

z?TestDatetimeIndex.test_constructor_with_nonexistent_keyword_argc              	   C   sX   d}t jt|d tdgdd W 5 Q R X t jt|d tdgdd W 5 Q R X d S )Nz with no precision is not allowedr   r   r   rF   )r   r   r   r   r   r"   r#   r$   r$   r%   $test_constructor_no_precision_raisesy  s
    z6TestDatetimeIndex.test_constructor_no_precision_raisesc              	   C   s0   d}t jt|d tdgdd W 5 Q R X d S )Nz0Unexpected value for 'dtype': 'datetime64\[us\]'r   r   zdatetime64[us]rF   r   r   r$   r$   r%   'test_constructor_wrong_precision_raises  s    z9TestDatetimeIndex.test_constructor_wrong_precision_raisesc                 C   sF   t tjtdddtjgtd}ttdddtjg}t	
|| d S )NZ2019re   r;   rF   )r   rH   r5   r   r~   rw   r   r   r    r<   r=   )r"   r7   rM   r$   r$   r%   Htest_index_constructor_with_numpy_object_array_and_timestamp_tz_with_nan  s     zZTestDatetimeIndex.test_index_constructor_with_numpy_object_array_and_timestamp_tz_with_nan)<__name__
__module____qualname__r   markparametrizer   r   Z_from_sequence_not_strictr&   r   r   Ztimedelta_ranger8   rA   rE   rI   rN   rV   rd   rj   r{   r|   r}   r   r   r   r   r   r   r   rw   rH   Zint32int64r   r   r   r   r   r   r   r-   r   r   r   r   r5   r   listr   r   r   r   r   r   r   r   r   r   r$   r$   r$   r%   r   '   s    



dy]	:
=#
	


!
r   c                   @   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
ejddddddddddddddgdd  Zd!d" Zd#d$ Zd%d& Zd'S )(TestTimeSeriesc                 C   s*   t dddd}t|}|j|jks&td S Nr   z1/2/2000Z5minr   )r   r   r   r4   )r"   r   rng2r$   r$   r%   &test_dti_constructor_preserve_dti_freq  s    z5TestTimeSeries.test_dti_constructor_preserve_dti_freqc                 C   sb   t dddd}t|d d}|jd ks(tt|jd d}|jd ksDtt|d d}|jd ks^td S r   )r   r   r   r4   r3   r   )r"   r   r7   Zdtar$   r$   r%   test_explicit_none_freq  s    z&TestTimeSeries.test_explicit_none_freqc                 C   s   |}t ddd|d}t ddd|d}t ddd|d}t dd	d|d}t dd
d|d}t ddd|d}t dd
d|d}	t ddd|d}
||f||f||f|	|
ffD ]\}}t|| qd S )NZ2014Z2015Mr   z
2014-01-31z
2014-12-31r   z
2014-01-01r9   Z2020r   z
2019-12-31r   z
2020-01-01)r   r<   r=   )r"   r   r-   Zrng1Z	expected1r   Z	expected2Zrng3Z	expected3Zrng4Z	expected4r   rM   r$   r$   r%   test_dti_constructor_years_only  s    z.TestTimeSeries.test_dti_constructor_years_onlyc                 C   s6   t dddg}tjdddg|d}tt || d S )Nz1970-01-01 00:00:00.00000000z1970-01-01 00:00:00.00000001z1970-01-01 00:00:00.00000002r   r      rF   )r   rH   r5   r<   r=   )r"   Zany_int_numpy_dtyperz   r6   r$   r$   r%   test_dti_constructor_small_int  s    z-TestTimeSeries.test_dti_constructor_small_intc                 C   s    t dg}|d jdkstd S )Nz1-1-2000 00:00:01r   r2   )r   secondr4   )r"   r   r$   r$   r%   test_ctor_str_intraday  s    
z%TestTimeSeries.test_ctor_str_intradayc                 C   sD   t dddd}||st|| s.t|| r@td S )N1/1/2005z	12/1/2005r   r   r   r   )r   is_r4   r   copy)r"   r>   r$   r$   r%   test_is_  s    zTestTimeSeries.test_is_c                 C   sF   t jdddt jdd}t|}|jt|t ddk sBt	d S )Nr   d   r   rF   zM8[D]zM8[ns])
rH   aranger   r   r   rL   r	   rG   allr4   )r"   r6   rm   r$   r$   r%   &test_index_cast_datetime64_other_units  s    z5TestTimeSeries.test_index_cast_datetime64_other_unitsc                 C   s   t jdt jd}t|}d|dd< |jdd dk s>tt jdt jd}t|dd}d|dd< |jdd dk std S )Ni  rF   2   r   T)r   )rH   r   r   r   rg   r   r4   )r"   r6   r'   r$   r$   r%   test_constructor_int64_nocopy  s    z,TestTimeSeries.test_constructor_int64_nocopyr   r   rB   r   r   r   ZBHTSLUrY   NCc                 C   sT   t d|dd}t||d}t|| t d|ddd}t||dd}t|| d S )Nz2001/02/01 09:00r2   r   r   r,   r   r*   )r   r   r-   r,   r   )r   r   r<   r=   )r"   r   orgrm   r$   r$   r%   !test_from_freq_recreate_from_data  s       z0TestTimeSeries.test_from_freq_recreate_from_datac              	   C   sx  ddddg}d}t jt|d t| W 5 Q R X ddddg}t|}tdd	d	dddg}t|}ttdd	d	dddg}t|}tjddddgd
d}t|}tddddg}t|}tddddg}t|}tddgdd}	tddgddd}
t	
|	|
 |||||fD ]}|j|jk stqtddd}tdd	d	}t|ddd}t|dksbt|d |dt   kst|jdkstt||dd}t||tjd d!d}t|t|kst|j|jkstt||d"d}t||tjd	d#d}t|t|kst|j|jks(tt||d$d}t||tjdd#d}t|t|ksbt|j|jksttd S )%Nr   z1/2/2005z
Jn 3, 2005z
2005-01-04z0(\(')?Unknown string format(:', 'Jn 3, 2005'\))?r   z1/3/2005r   r2   r   rF   zJan 3, 2005z
12/05/2007z
25/01/2008T)dayfirstz
2007/05/12z
2008/01/25F)r   Z	yearfirsti        r   Z1Br   r   r   r   r   r   r   )weekdayZQS)ZstartingMonthZBQ)r   r   r   r   r   r   rH   r5   r   r<   r=   rL   r   r4   r   r   r   r   r   ZWeekZQuarterBeginZBQuarterEnd)r"   r6   r#   Zidx1Zidx2Zidx3Zidx4Zidx5Zidx6Zidx7Zidx8otherZsdateedaterm   r$   r$   r%   #test_datetimeindex_constructor_misc  sf        
  
z2TestTimeSeries.test_datetimeindex_constructor_miscc                 C   s:   t dd}t|td}t| td}t|j|j d S )Nr   z3/1/2000rF   )r   r   rw   r   r<   r   rL   )r"   r   rm   rM   r$   r$   r%    test_pass_datetimeindex_to_index.  s    
z/TestTimeSeries.test_pass_datetimeindex_to_indexc              	   C   s8   t ddd}tjtdd t|ddd W 5 Q R X d S )Nr   r2   zpass as a string insteadr   )r   r)   r   )r   r   r,   )r   r   r   rC   r   )r"   r  r$   r$   r%   !test_date_range_tuple_freq_raises7  s    z0TestTimeSeries.test_date_range_tuple_freq_raisesN)r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r  r  r  r$   r$   r$   r%   r     s     
;	r   c               	   C   s.   d} t jt| d tddd W 5 Q R X d S )Nz5Valid values for the fold argument are None, 0, or 1.r   {   r0   foldr   r   r   r   )r#   r$   r$   r%   -test_timestamp_constructor_invalid_fold_raise>  s    r
  c               
   C   sJ   d} t d}tjt| d$ ttddddddd|dd	 W 5 Q R X d S )
NzBpytz timezones do not support fold. Please use dateutil timezones.Europe/Londonr     r      r      r-   r  )r   r   r   r   r   r   r   )r#   r-   r$   r$   r%   *test_timestamp_constructor_pytz_fold_raiseF  s    
r  r  r2   ts_input    P7-f. gP[YѵCrP   2019-10-27 01:30:00+01:00r  r   r  r  )tzinfoc              	   C   s.   d}t jt|d t| |d W 5 Q R X d S )NzCannot pass fold with possibly unambiguous input: int, float, numpy.datetime64, str, or timezone-aware datetime-like. Pass naive datetime-like or build Timestamp from components.r   )r  r  r	  )r  r  r#   r$   r$   r%   (test_timestamp_constructor_fold_conflictP  s    r  r-   zdateutil/Europe/Londonc              	   C   s0   t ddddd| |d}|j}|}||ks,td S )Nr  r   r  r2   r  )r   r   r   r   minuter-   r  r   r  r4   )r-   r  r   r7   rM   r$   r$   r%   &test_timestamp_constructor_retain_foldg  s    r  r  zts_input,fold_out)r  r   )    pFs. r2   )r  r   )z2019-10-27 01:30:00+00:00r2   r  c                 C   s&   t || d}|j}|}||ks"td S )Nr;   r  )r-   r  Zfold_outr   r7   rM   r$   r$   r%   0test_timestamp_constructor_infer_fold_from_valuez  s    r  zts_input,fold,value_outr  c                 C   s(   t || |d}|j}|}||ks$td S )Nr  r   )r-   r  r  Z	value_outr   r7   rM   r$   r$   r%   0test_timestamp_constructor_adjust_value_for_fold  s    r  )/r   r   r   	functoolsr   operatorr   r   ZnumpyrH   r   r   Zpandas._libs.tslibsr   r	   Zpandas.compatr
   Zpandasr   r   r   r   r   r   r   Zpandas._testingZ_testingr<   Zpandas.core.arraysr   r   Zzoneinfor   r   r
  r  r   r   r   utcr  r  Z_tzsZZoneInfoZZoneInfoNotFoundErrorr  r  r$   r$   r$   r%   <module>   s          n 0


	