o
    ŀg                     @  s   d dl mZ 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
mZ d dlZd dlZd dlZd dlmZmZ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  G d
d dZ!G dd dZ"dS )    )annotations)datetime	timedeltatimezone)partial
attrgetterN)gettz)OutOfBoundsDatetimeastype_overflowsafe	timezones)DatetimeIndexIndex	Timestamp
date_rangeoffsetsto_datetime)period_arrayc                
   @  s  e Zd Zdd Zdd Zdd Zdd Z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/d0 Zej	
d1d2ged3d4d4ggd5d6 Zd7d8 Zd9d: Zd;d< Zej	
d=d>d?gd@dA Z dBdC Z!dDdE Z"ej	
d!e#e$j%e$j&gdFdG Z'dHdI Z(dJdK Z)ej	
ddLdMe*+dMe,dNdMdOj-gdPdQ Z.ej	
dg dRdSdT Z/dUdV Z0ej	
dWe1e2gej	
dXe$j3e4e$j3e#dYe5gej	
dZd[d\gd]d^ Z6d_d` Z7dadb Z8dcdd Z9dedf Z:dgdh Z;didj Z<dkdl Z=dmdn Z>dodp Z?ej	
de*+dqe@dqgdrds ZAej	
dtdqdugdvdw ZBdxdy ZCej	
dzd{d|gd}d~ ZDej	
dtdqdugdd ZEej	
de*+dqe@dqgej	
dddgej	
de,e2gdd ZFej	
dg ddd ZGdd ZHdd ZIej	
d!ddgdd ZJdLS )TestDatetimeIndexc                 C  D   d}t jt|d tg dd W d    d S 1 sw   Y  d S )NzThe 'closed' keywordmatchT)closedtmassert_produces_warningFutureWarningr   selfmsg r    d/var/www/html/myenv/lib/python3.10/site-packages/pandas/tests/indexes/datetimes/test_constructors.pytest_closed_deprecated&      "z(TestDatetimeIndex.test_closed_deprecatedc                 C  r   )NzThe 'normalize' keywordr   T)	normalizer   r   r    r    r!   test_normalize_deprecated,   r#   z+TestDatetimeIndex.test_normalize_deprecatedc                 C  s>   t dd}t|gdd}t|dgdd}t|| d S )N   D
US/PacifictzM8[s])np
datetime64r   astyper   assert_index_equal)r   valresultexpectedr    r    r!   test_from_dt64_unsupported_unit2   s   z1TestDatetimeIndex.test_from_dt64_unsupported_unitc                 C  s   t dddd}d}tjt|d t|d d W d    n1 s!w   Y  tjt|d tt|d d W d    n1 sAw   Y  d}tjt|d tg d	d d
 W d    d S 1 sbw   Y  d S )N
2016-01-01
   UTCperiodsr*   z:Passed data is timezone-aware, incompatible with 'tz=None'r   r)   z3Cannot pass both a timezone-aware dtype and tz=NoneM8[ns, UTC]dtyper*   )r   pytestraises
ValueErrorr   r,   arrayr   dtir   r    r    r!   test_explicit_tz_none:   s   "z'TestDatetimeIndex.test_explicit_tz_nonec                 C  s   d}t jt|d ttjtdgdd W d    n1 sw   Y  t jt|d ttjtdjgdd W d    d S 1 sCw   Y  d S )NQInferred frequency None from passed values does not conform to passed frequency Dr   
2011-01-01r'   freq)r<   r=   r>   r   pdNaTr   _valuer   r    r    r!   test_freq_validation_with_natI   s   "z/TestDatetimeIndex.test_freq_validation_with_natindexr4      r(   r7   z1 Dayr8   c                 C  s<   |j }|g d }|jd u sJ ||}|jd u sJ d S )N)r            r&   )_datarF   _shallow_copy)r   rK   r?   arrr1   r    r    r!   %test_shallow_copy_inherits_array_freqV   s
   

z7TestDatetimeIndex.test_shallow_copy_inherits_array_freqc                 C  sl   t tjdddgdd}||jfD ]#}t|}t|}t|}|||fD ]}t |}t|| q&qd S )Nz
2015-01-01z1999-04-06 15:14:13
US/Easternr)   )	r   rG   rH   rQ   CategoricalIndexCategoricalSeriesr   r/   )r   rA   dtobjcicarrcserobjr1   r    r    r!   test_categorical_preserves_tzh   s   


z/TestDatetimeIndex.test_categorical_preserves_tzc                 C  s   t jddgdd}tjtdd t| W d    n1 sw   Y  tjtdd t| W d    n1 s:w   Y  tjtdd tt| W d    n1 sWw   Y  tjtdd tt| W d    d S 1 suw   Y  d S )N2016Q12016Q2QrE   zPeriodDtype data is invalidr   )rG   PeriodIndexr<   r=   	TypeErrorr   r   r   )r   datar    r    r!    test_dti_with_period_data_raisesy   s   

"z2TestDatetimeIndex.test_dti_with_period_data_raisesc                 C  s   t jdgdd}d}tjt|d t| W d    n1 s w   Y  tjt|d t| W d    n1 s;w   Y  tjt|d tt| W d    n1 sYw   Y  tjt|d tt| W d    d S 1 sxw   Y  d S )Nr   zm8[ns]r;   z3timedelta64\[ns\] cannot be converted to datetime64r   )	r,   r?   r<   r=   rc   r   r   rG   TimedeltaIndexr   rd   r   r    r    r!   %test_dti_with_timedelta64_data_raises   s   

"z7TestDatetimeIndex.test_dti_with_timedelta64_data_raisesc                 C  sH   t dt dg}tj|}t|}t|tu sJ |j|jks"J d S )Nz2012-05-01T01:00:00.000000z2016-05-01T01:00:00.000000)r   rG   arraysSparseArrayr   typer;   )r   valuesrS   r1   r    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s*J d S )
N20130101rN   rM   rU   r7   20130103ns)r8   rF   )dtdttzdt_with_nulldtns)	rG   	DataFramer   r   rH   rs   r;   r*   zone)r   dfr    r    r!   test_construction_caching   s   
z+TestDatetimeIndex.test_construction_cachingkwargsr*   zdtype.tzr;   r:   c                   sJ   |}t ddd|d  fdd| D }t fi |}t | d S )Nro   rL   hr8   rF   r*   c                      i | ]\}}|t | qS r    r   .0keyr0   ir    r!   
<dictcomp>       z@TestDatetimeIndex.test_construction_with_alt.<locals>.<dictcomp>)r   itemsr   r   r/   )r   rz   tz_aware_fixturer*   r1   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|v r8t jdd	|d }t fi |}t|| t d jdd	} d d}t|| d
}t	j
t|d t d j jdd W d    d S 1 sqw   Y  d S )Nro   rL   r{   r|   c                   r}   r    r   r~   r   r    r!   r      r   zLTestDatetimeIndex.test_construction_with_alt_tz_localize.<locals>.<dictcomp>r*   r6   r)   -cannot supply both a tz and a dtype with a tzr   r(   r:   )r   
_with_freqr   r   asi8
tz_convertr   r/   tz_localizer<   r=   r>   r;   )r   rz   r   r*   r1   r2   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s'J |jd u s.J 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sZJ |jd usaJ |j|jksiJ 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sJ |jd usJ |j|jksJ 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rJ 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J d}d}tjt	|d& tj
t|d tddg W d    n	1 s&w   Y  W d    n	1 s6w   Y  t tdgdd}ttdgdd}tj||dd t|ts]J |jd u seJ t tddd	gdd}ttdgddd}tj||dd t|tsJ |jd usJ |j|jksJ d S )NrD   
2011-01-02idxnameTexact2011-01-01 10:00
Asia/Tokyor)   2011-01-02 10:00r*   r   rU   2011-08-01 10:00objectr;   r   z!DatetimeIndex has mixed timezonesz;parsing datetimes with mixed time zones will raise an errorr   z2013-11-02 22:00-05:00z2013-11-03 22:00-06:00)r   r   r   r   r/   
isinstancer*   r<   r=   rc   r   r   )r   r1   expr   msg_deprr    r    r!   ,test_construction_index_with_mixed_timezones   s   









z>TestDatetimeIndex.test_construction_index_with_mixed_timezonesc                 C  s  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/J |jd u s6J 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sjJ |jd usqJ |j|jksyJ 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sJ |jd usJ |j|jksJ 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rJ 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r%J t tjtjgdd}ttjtjgdd}tj||dd t|tsIJ |jd u sQJ d S )NrD   r   r   r   Tr   r   r   r)   r   r   rU   r   r   r   )	r   rG   rH   r   r   r   r/   r   r*   )r   r1   r   r    r    r!   5test_construction_index_with_mixed_timezones_with_NaTB  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 s'J 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 sSJ 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J d}tjt|d t tddd	td
dd	gdd W d    n1 sw   Y  t tdtd
dd	gddd}t tddd	td
dd	dgddd}t|| t tddd	td
dd	gddd}t tddd	dtd
dd	gddd}t|| t tddd	td
dd	gddd}t|| d S )NrD   r   r   r   Tr   r   r   r)   r   r   rU   r   z!cannot be converted to datetime64r   zM8[ns, US/Eastern]r   )	r   r   r   r/   r   r<   r=   r>   r   )r   r1   r   r   rA   r2   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 )NrD   z
2011-01-03)
r   rG   rH   r   r/   r   r   r,   r?   nan)r   rS   r    r    r!   "test_construction_base_constructor  s    $z4TestDatetimeIndex.test_construction_base_constructorc                 C  s   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 d    d S 1 s=w   Y  d S )	Ni  r&   i  i  ip  rf   zH^Out of bounds nanosecond timestamp: 3000-01-01 00:00:00, at position 0$r   )	r   r   r   r   r/   r<   r=   r
   r   )r   datesr   r   r    r    r!   test_construction_outofbounds&  s   




"z/TestDatetimeIndex.test_construction_outofboundsrd   z
1400-01-01ix  r&   c                 C  s@   d}t jt|d t| W d    d S 1 sw   Y  d S )NzK^Out of bounds nanosecond timestamp: 1400-01-01( 00:00:00)?, at position 0$r   )r<   r=   r
   r   rh   r    r    r!   test_dti_date_out_of_range7  s
   
"z,TestDatetimeIndex.test_dti_date_out_of_rangec                 C  sd   t dddt dddt dddg}t|t dj}t|t d}tg ddd}t|| d S )	Ni  r5         	   rE   )z
2013-10-07z
2013-10-08z
2013-10-09B)r   r   r   BDayrm   r   r/   )r   r   rd   r1   r2   r    r    r!   test_construction_with_ndarrayA  s
   "z0TestDatetimeIndex.test_construction_with_ndarrayc                 C  s   t dd}t |dg}t|d}tdgdd}t|| td  t|dd	}W d    n1 s9w   Y  tdgd
d}t|| d S )Nz2000-01-01 00:00:00rq   i8
US/Centralz2000-01-01T00:00:00zM8[ns, US/Central]rf   r6   r)   r9   )	r,   r-   r?   viewr   r   r   r/   r   )r   r0   rm   r1   r2   r    r    r!   -test_integer_values_and_tz_interpreted_as_utcI  s   z?TestDatetimeIndex.test_integer_values_and_tz_interpreted_as_utcc                 C  sJ  d}t jt|d td W d    n1 sw   Y  dd tdD }t|}tdd tdD }t|| tg d	}t|}t|	d
}t|| t|j
}t|| tg d}t|}t|	d
}t|| t|j
}t|| d}t jt|d tg ddd W d    d S 1 sw   Y  d S )Nz8DatetimeIndex\(\.\.\.\) must be called with a collectionr   1/1/2000c                 s  s$    | ]}t d ddt| V  qdS )  r&   Nr   r   r   r   r    r    r!   	<genexpr>_  s   " z>TestDatetimeIndex.test_constructor_coverage.<locals>.<genexpr>r5   c                 S  s    g | ]}t d ddt| qS )r   r&   r   r   r    r    r!   
<listcomp>b  s     z?TestDatetimeIndex.test_constructor_coverage.<locals>.<listcomp>)
2000-01-01
2000-01-02z
2000-01-03O)r   r   rH   rC   )r   r   z
2000-01-04r'   rE   )r<   r=   rc   r   ranger   r/   r,   r?   r.   r   r>   )r   r   genr1   r2   strings	from_intsr    r    r!   test_constructor_coverageY  s6   


"z+TestDatetimeIndex.test_constructor_coveragerF   YSzW-SUNc                 C  sT  t dd|d}t dd|ttddd}t|| t dd|d	d}t|j|j t d
d|d}t dd|ttddd}t|| t dd|dd}t|j|j t dd|d}t dd|ttddd}t|| t dd|d	d}t|j|j t dd|d}t dd|ttd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:00rE   z2013-01-01T00:00:00z2016-01-01T23:59:59i)minutesrF   r*   zAmerica/Limaz2013-01-01T00:00:00+09:00z2016-01-01T23:59:59+09:00i  r   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   r   r   r   r/   assert_numpy_array_equalr   )r   rF   r   r2   expected_i8r    r    r!   $test_constructor_datetime64_tzformat  sh   z6TestDatetimeIndex.test_constructor_datetime64_tzformatc                 C  sZ   t ddgdd}t ddgdd}t|| t ddgddd}t|| d S )N
2013-01-01
2013-01-02datetime64[ns, US/Eastern]rf   rq   rU   r)   )r   as_unitr   r   r/   )r   r   r2   r    r    r!   test_constructor_dtype  s   
z(TestDatetimeIndex.test_constructor_dtypec                 C  s   t ddgdd}d}tjt|d t |dd W d    n1 s"w   Y  d}tjt|d t |d	d W d    n1 sAw   Y  d
}tjt|d t |ddd W d    n1 saw   Y  t |dd}t|| d S )Nr   r   r   rf   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]r   CET)r*   r;   )r   r<   r=   r>   rc   r   r/   )r   r   r   r1   r    r    r!   )test_constructor_dtype_tz_mismatch_raises  s$   z;TestDatetimeIndex.test_constructor_dtype_tz_mismatch_raisesc                 C  sH   d}t jt|d tddg|d W d    d S 1 sw   Y  d S )NzUnexpected value for 'dtype'r   r&   rO   rf   )r<   r=   r>   r   )r   r;   r   r    r    r!   %test_constructor_invalid_dtype_raises  s   "z7TestDatetimeIndex.test_constructor_invalid_dtype_raisesc                 C  s*   t d}t|g}|jd |jksJ d S )Nl   )b0Z4 r   )r   r   
nanosecond)r   t1r   r    r    r!   test_000constructor_resolution  s   
z0TestDatetimeIndex.test_000constructor_resolutionc                 C  sR   t dgdd}d}tjt|d td|_W d    d S 1 s"w   Y  d S )N2010r6   r)   zCannot directly set timezoner   r(   )r   r<   r=   AttributeErrorpytzr   r*   r@   r    r    r!   test_disallow_setting_tz  
   "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u s-J d S )	Nz2013-01-01 06:00:00r   r)   z2013-01-02 06:00:00r'   )rF   startendr*   zM8[ns, America/Los_Angeles])r;   rF   )r   r   r   r   r/   r   r   r*   )r   r*   r   r   r1   r2   r    r    r!   "test_constructor_start_end_with_tz  s   z4TestDatetimeIndex.test_constructor_start_end_with_tz)r(   rU   r   c                 C  s4   t d|dj}tdg|d}t||ju sJ d S )Nr   r)   )r   r*   r   r   r   )r   r*   non_norm_tzr1   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   r&   )r   r   to_pydatetimer   r/   )r   tsr1   r2   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d}|||jg|d}||g}||ksJ d S )Nz
2018-01-01r)   rq   rf   )r   r   rI   )r   r   r   r*   r;   r   r1   r2   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J d S )Nl     _S r)   r   )r   r   )r   tz_naive_fixturer*   r1   r2   r    r    r!   test_construction_int_rountrip/  s   z0TestDatetimeIndex.test_construction_int_rountripc                 C  sR   t tdddtdddddd}tdd	 |D }tg d
dd}t|| d S )Nr           zYE-DECzAustralia/Melbourner   c                 S  s   g | ]	}|j d ddqS )   r&   )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   r   r/   )r   rK   r1   r2   r    r    r!   3test_construction_from_replaced_timestamps_with_dst7  s   

zETestDatetimeIndex.test_construction_from_replaced_timestamps_with_dstc                 C  sR   t dddd}d}tjt|d t|dd W d    d S 1 s"w   Y  d S )	Nr4   rN   r   r7   z?data is already tz-aware US/Central, unable to set specified tzr   r   r)   )r   r<   r=   rc   r   r@   r    r    r!   *test_construction_with_tz_and_tz_aware_dtiM  r   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 )N2018rH   r)   )	dateutilr*   tzlocalr   r   rG   rH   r   r/   )r   r*   r1   r2   r    r    r!   &test_construction_with_nat_and_tzlocalT  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)r;   rF   	ambiguouszAmerica/New_Yorki     r&   )yearr   r   hour)r   rO   )r   r8   r   )r   r8   r   )r   r   r   r   r   r/   )r   r2   r   r   r1   r   r    r    r!   +test_constructor_with_ambiguous_keyword_argZ  s$   z=TestDatetimeIndex.test_constructor_with_ambiguous_keyword_argc                 C  s   |}t dj|dd}t|ddd}tt d|dt d	|dg}t|| |}t|ddd
}tt d|dt d|dg}t|| d S )Nz2015-03-29 02:30:00shift_forward)nonexistentrO   r{   )r   r8   rF   z2015-03-29 03:00:00+02:00r)   z2015-03-29 04:00:00+02:00)r   r8   rF   z2015-03-29 01:00:00+01:00)r   r   r   r   r   r/   )r   warsawr   r   r1   r2   r   r    r    r!   -test_constructor_with_nonexistent_keyword_argt  s&   



z?TestDatetimeIndex.test_constructor_with_nonexistent_keyword_argc                 C  s   d}t jt|d tdgdd W d    n1 sw   Y  d}t jt|d tdgdd W d    d S 1 s<w   Y  d S )Nz with no precision is not allowedr   r   r-   rf   z2The 'datetime64' dtype has no unit. Please pass in)r<   r=   r>   r   r   r   r    r    r!   $test_constructor_no_precision_raises  s   "z6TestDatetimeIndex.test_constructor_no_precision_raisesc                 C  s8   t dgdd}|jdksJ |d tdddksJ d S )Nr   zdatetime64[us]rf   M8[us]r   r   r&   )r   r;   r   )r   rA   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 )N2019r6   r)   rf   )r   r,   r?   r   r   r   r   rG   rH   r   r/   )r   r1   r2   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_nanrU   c                 C  s0   t ddd|dg}t|}t|j|sJ d S )N  r      )tzinfo)r   r   r   
tz_comparer*   )r   r*   drK   r    r    r!   test_dti_from_tzaware_datetime  s   z0TestDatetimeIndex.test_dti_from_tzaware_datetimetzstrzdateutil/US/Easternc                 C  sn   ddg}t ||}tddd|d}|d}t||d}tt||d}|||fD ]}t|| q,dS )	z^Test different DatetimeIndex constructions with timezone
        Follow-up of GH#4229
        z11/10/2005 08:00:00z11/10/2005 09:00:00z2005-11-10 08:00:00r{   rO   )r   rF   r8   r*   Nr)   )	r   r   r   r   r   r,   r?   r   r/   )r   r  rS   idx1idx2idx3idx4otherr    r    r!   test_dti_tz_constructors  s   
z*TestDatetimeIndex.test_dti_tz_constructorsc                 C  s.   t dddd|d}t|dd}t|| d S )Nz03/12/2012 00:00r5   zW-FRIrU   )r8   rF   r*   unit)rd   r*   r   r   r   r/   )r   r  rngrng2r    r    r!    test_dti_construction_idempotent  s
   
z2TestDatetimeIndex.test_dti_construction_idempotentprefix z	dateutil/c                 C  s,   t tdddg|d d}|j |d  d S )Nr  r&   ESTr)   r   )r   r   r   )r   r  rK   r    r    r!   "test_dti_constructor_static_tzinfo  s   z4TestDatetimeIndex.test_dti_constructor_static_tzinfoc                 C  s2   t dd|dd}tt|ddd}t|| d S )Nz
2012-06-02r5   foo)r8   r*   r   r'   )r   rF   )r   r   listr   r/   )r   r  drdr2r    r    r!   test_dti_convert_datetime_list  s   z0TestDatetimeIndex.test_dti_convert_datetime_listuse_strTFbox_clsc                 C  s   d}|}|st | }|t ur|g}|s(t|tjjr(tjjdd}|	| tj
tj|d |||d W d    d S 1 sBw   Y  d S )Nz2013-11-03 01:59:59.999999zWe implicitly get fold=0.)reasonr   r)   )r   r   r   r   r*   tzfiler<   markxfailapplymarkerr=   r   AmbiguousTimeError)r   r*   r  r  requestdtstritemr!  r    r    r!   $test_dti_ambiguous_matches_timestamp  s   
"z6TestDatetimeIndex.test_dti_ambiguous_matches_timestamp)Nr6   r(   c                 C  s   t d}d}|d urd| d}|ddg}t||d}|d |t |d	 |d
t|d ddd|g}dd |D }tj|dd}t|dd}	|d urU|	d|}	t||	 ttj|t	d|d}
t|
|	 d S )Nz
2999-01-01r   zM8[us, ]z2999-01-02 03:04:05.678910i	  rf   r   r&   r)   rO   usT)r  utcc                 S  s   g | ]}| d jqS )r*  )r   asm8r   r    r    r!   r     s    zNTestDatetimeIndex.test_dti_constructor_with_non_nano_dtype.<locals>.<listcomp>r6   )
r   r   r   r   r   r,   r?   r   r/   r   )r   r*   r   r;   valsr1   	pointwiseexp_valsexp_arrr2   result2r    r    r!   (test_dti_constructor_with_non_nano_dtype  s$   
z:TestDatetimeIndex.test_dti_constructor_with_non_nano_dtypec                 C  s   t  }t  }tddgdd}|jdksJ tjdd}|d |d }|tdks/J ||k s5J |d |d }|tdksGJ ||k sMJ d S )	Nnowtodayr+   rf   r&   )microsecondsr   s)r   r3  r4  r   r;   rG   	Timedeltar   )r   r3  r4  r1   	tolerancediff0diff1r    r    r!   ,test_dti_constructor_with_non_nano_now_today  s   z>TestDatetimeIndex.test_dti_constructor_with_non_nano_now_todayc                 C  sH   t jdt jgt jd}|t}t|dd}t|dd}t|| d S )Nr   rf   r   r)   )	r,   r?   r   float64r.   r   r   r   r/   )r   rS   arr2dti1dti2r    r    r!   5test_dti_constructor_object_float_matches_float_dtype  s
   
zGTestDatetimeIndex.test_dti_constructor_object_float_matches_float_dtyper   zM8[us, US/Pacific]c                 C  s   t jdddd }tjj|d< |t j}t j|d< |t}tj|d< |t}t	||d}t	||d}t	||d}t	||d}	t	|
d}
|jd urV|
d|j}
t||
 t||
 t||
 t|	|
 d S )NrL   r   rf     r   r   r6   )r,   arangerG   rH   valuer.   r<  r   r   r   r   r*   r   r   r   r/   )r   r;   vals1vals2vals3vals4res1res2res3res4r2   r    r    r!   <test_dti_constructor_with_dtype_object_int_matches_int_dtype(  s$   




zNTestDatetimeIndex.test_dti_constructor_with_dtype_object_int_matches_int_dtype)K__name__
__module____qualname__r"   r%   r3   rB   rJ   r<   r!  parametrizer   rG   timedelta_rangerT   r^   re   ri   rn   ry   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r,   int32int64r   r   r   r   r   r   r*   r   r   r   r   r   r?   r   r  r   r   r   r   r   r   r   r   r   r  r	   r  r  r  r  r  r(  r2  r;  r@  rL  r    r    r    r!   r   %   s    


jnm	
	'
=

	






	r   c                   @  sf   e Zd Zdd Zdd Zdd Zdd Zd	d
 Zdd Ze	j
dg ddd Zdd Zdd ZdS )TestTimeSeriesc                 C  s*   t dddd}t|}|j|jksJ d S Nr   z1/2/20005minrE   )r   r   rF   )r   r  r  r    r    r!   &test_dti_constructor_preserve_dti_freqH  s   z5TestTimeSeries.test_dti_constructor_preserve_dti_freqc                 C  sH   t dddd}t|d d}|jd u sJ t|jd d}|jd u s"J d S rU  )r   r   rF   rQ   )r   r  r1   r    r    r!   test_explicit_none_freqN  s
   z&TestTimeSeries.test_explicit_none_freqc                 C  s2   t g d}tjg d|d}tt || d S )N)z1970-01-01 00:00:00.00000000z1970-01-01 00:00:00.00000001z1970-01-01 00:00:00.00000002)r   r5      rf   )r   r,   r?   r   r/   )r   any_int_numpy_dtyper   rS   r    r    r!   test_dti_constructor_small_intX  s
   z-TestTimeSeries.test_dti_constructor_small_intc                 C  s    t dg}|d jdksJ d S )Nz1-1-2000 00:00:01r   r&   )r   second)r   r  r    r    r!   test_ctor_str_intradaye  s   
z%TestTimeSeries.test_ctor_str_intradayc                 C  sF   t jdddt jdd}t|}|jt|t ddk s!J d S )Nr   d   r5   rf   zM8[D]zM8[ns])	r,   rB  rS  r   r   rm   r   r;   all)r   rS   r   r    r    r!   &test_index_cast_datetime64_other_unitsi  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J t jdt jd}t|dd}d|dd< |jdd dk s@J d S )NrA  rf   2   r^  T)copy)r,   rB  rS  r   r   r_  )r   rS   rK   r    r    r!   test_constructor_int64_nocopyo  s   z,TestTimeSeries.test_constructor_int64_nocopyrF   )MEQEYEr'   r   bhminr6  msr*  r{   rq   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:00r&   )r   rF   r8   rE   r(   )r   rF   r*   r8   r   r  )r   rF   orgr   r    r    r!   !test_from_freq_recreate_from_data}  s   z0TestTimeSeries.test_from_freq_recreate_from_datac           
      C  s   g d}d}t jt|d t| W d    n1 sw   Y  g d}t|}tdddddd	g}t|}ttdddddd	g}t|}tjg dd
d}t|}tddgdd}tddgddd}t	|| |||fD ]}	|j
|	j
k s|J qpd S )N)1/1/20051/2/2005z
Jn 3, 2005
2005-01-04z9(\(')?Unknown datetime string format(:', 'Jn 3, 2005'\))?r   )rn  ro  1/3/2005rp  r   r&   ro  rq  rp  r   rf   z
12/05/2007z
25/01/2008T)dayfirstz
2007/05/12z
2008/01/25F)rr  	yearfirst)r<   r=   r>   r   r   r   r,   r?   r   r/   rm   r_  )
r   rS   r   r	  r
  r  r  idx5idx6r  r    r    r!   #test_datetimeindex_constructor_misc  s*   

z2TestTimeSeries.test_datetimeindex_constructor_miscc                 C  st   d}t ddddd}t ddddd}t|gdd	d
}t|g}t|| t|gdd	d}t|g}t|| d S )Nz5/10/16i  r5   rL   r(   r)   r      T)r*   rr  )r*   rs  )r   r   r   r/   )r   r0   dfirstyfirstresult1	expected1r1  	expected2r    r    r!   <test_dti_constructor_object_dtype_dayfirst_yearfirst_with_tz  s   

zKTestTimeSeries.test_dti_constructor_object_dtype_dayfirst_yearfirst_with_tzN)rM  rN  rO  rW  rX  r[  r]  r`  rd  r<   r!  rP  rm  rv  r}  r    r    r    r!   rT  G  s    

rT  )#
__future__r   r   r   r   	functoolsr   operatorr   r   dateutil.tzr	   numpyr,   r<   r   pandas._libs.tslibsr
   r   r   pandasrG   r   r   r   r   r   r   pandas._testing_testingr   pandas.core.arraysr   r   rT  r    r    r    r!   <module>   s2             *