U
    >vfz                  	   @   s  d Z ddlZddlmZmZm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mZ ddlZddlZddlZddlmZ ddlmZ ddlmZmZmZmZ dd	lmZ dd
lmZ ddl m!  m"Z# ddl$m%Z%m&Z&m'Z' ddl(m)Z* ddl+m,Z, ddl-m.Z. G dd dZ/G dd dZ0G dd dZ1G dd dZ2G dd dZ3G dd deZ4ej56de4ddde&ddfe&dde4dddfgdd Z7G d d! d!Z8d"d# Z9G d$d% d%Z:d&d' Z;d(d) Z<d*d+ Z=dS ),z test the scalar Timestamp     N)datetime	timedeltatimezone)tzlocaltzutc)given
strategies)utc)NpyDatetimeUnit)dateutil_gettzget_timezonemaybe_get_tz
tz_compare)IS64)OutOfBoundsDatetime)NaT	Timedelta	Timestamp)offsets)	to_offsetc                   @   s  e Zd Zdd Zejdddgddgdd	gd
dgddgddgddgddgddgddgddgddgddgddgdd	ggejdddgd d! Zejdddgd"d# Zejd$d%d&d'gejdddgd(d) Z	ejd*d+d,d-gejdddgd.d/ Z
ejd0ed1ed1d2d3gejd4dge  d5d6 Zd7d8 Zd9d: Zd;d< Zejd=d>d?d@dAdBgdCdD Zee edEdFgdGdHdI ZdS )JTestTimestampPropertiesc                 C   s  t d}td}|jdkst|jdks,t|js6t||rDt||tdd s\t||rjt||tdd sttd}|jdkst|jdkst|jst||rt||tdd st|j	st|	|rt|	|tdd std S )NBz
2017-10-01      daysz
2017-09-30   )
r   r   	dayofweekAssertionErrorday_of_weekis_month_startr   is_quarter_startis_month_endis_quarter_end)selffreqts r'   P/tmp/pip-unpacked-wheel-vdrwu74i/pandas/tests/scalar/timestamp/test_timestamp.pytest_properties_business1   s$    


z0TestTimestampProperties.test_properties_businesszattr, expectedyeari  month   day   hour   minute;   secondr   microsecond
nanosecondr      r   Zquarter   Z	dayofyearim  Zday_of_yearweekr   ZdaysinmonthtzN
US/Easternc                 C   s4   t d|d}t||}t|ts$t||ks0td S )N2014-12-31 23:59:00r9   )r   getattr
isinstanceintr   )r$   attrexpectedr9   r&   resultr'   r'   r(   test_fieldsG   s    
z#TestTimestampProperties.test_fieldsc              	   C   s4   t d|d}d}tjt|d |j W 5 Q R X d S )Nr;   r<   z1'Timestamp' object has no attribute 'millisecond'match)r   pytestraisesAttributeErrorZmillisecond)r$   r9   r&   msgr'   r'   r(   test_millisecond_raisese   s    z/TestTimestampProperties.test_millisecond_raisesstartr    r!   is_year_startc                 C   s   t d|d}t||std S )Nz2014-01-01 00:00:00r<   r   r=   r   )r$   rK   r9   r&   r'   r'   r(   test_is_startl   s    z%TestTimestampProperties.test_is_startendr"   is_year_endr#   c                 C   s   t d|d}t||std S )Nz2014-12-31 23:59:59r<   rM   )r$   rO   r9   r&   r'   r'   r(   test_is_endt   s    z#TestTimestampProperties.test_is_enddataz2017-08-28 23:00:00ESTr<   time_localec              	   C   s   |d krd}d}n6t |tj" tjd  }tjd  }W 5 Q R X ||}||}t	d|}t	d|}t	d|}t	d|}||kst
||kst
tt}t||st
t||st
d S )NZMondayZAugustr      ZNFD)tmZ
set_localelocaleLC_TIMEcalendarday_name
capitalize
month_nameunicodedata	normalizer   r   r   npisnan)r$   rR   rT   Zexpected_dayZexpected_monthZ
result_dayZresult_monthZnan_tsr'   r'   r(   
test_names{   s"    

z"TestTimestampProperties.test_namesc                 C   s   |}t s|t krtd td|d}|js2tt|jtsBttd|d}|jrXttd|d}|jsnttd|d}|jrtd S )Nz>tzlocal() on a 32 bit platform causes internal overflow errorsz2000-01-01 00:00:00r<   z1999-01-01 00:00:00z2004-01-01 00:00:00z2100-01-01 00:00:00)	r   r   rF   skipr   Zis_leap_yearr   r>   bool)r$   Ztz_naive_fixturer9   dtr'   r'   r(   test_is_leap_year   s    


z)TestTimestampProperties.test_is_leap_yearc                 C   s   t ddd}t|j}d}||ks&tt ddd}t|j}d}||ksLtt ddd}t|j}d	}||ksrtt d
dd}t|j}d	}||kstt d
dd}t|j}d	}||ksttdd dD }|ddd	d	gk std S )N  r,   r.   r   i     4   i  5   i     c                 S   s   g | ]}t t| jqS r'   )r   r   r8   ).0argsr'   r'   r(   
<listcomp>   s   z=TestTimestampProperties.test_woy_boundary.<locals>.<listcomp>))  r   r   )rn   r   r6   )  r   r   )ro   r   r6   )r   r   r8   r   r_   arrayall)r$   drB   rA   r'   r'   r(   test_woy_boundary   s4    




z)TestTimestampProperties.test_woy_boundaryc                 C   s   t d}|jtddkstt jtddks0t|djtddksJt|djtddksdt|djtdd	ks~td S )
Nz2100-01-01 00:00:00.000000000r   )Znanosecondsusmicrosecondsms)Zmillisecondss)seconds)r   
resolutionr   r   as_unit)r$   rd   r'   r'   r(   test_resolution   s    z'TestTimestampProperties.test_resolutionzdate_string, expected)z	0000-2-29r   )z0000-3-1r6   )z
1582-10-14rj   )z	-0040-1-1r7   )z
2023-06-18r   c                 C   s    t |}| }||kstd S N)r   weekdayr   )r$   Zdate_stringrA   r&   Zdowr'   r'   r(   test_dow_historic   s    z)TestTimestampProperties.test_dow_historic- )r&   signc                 C   sz   | t |jd dt |jd dt |jd }t| }t|td 	dd d }||ksvt
d S )Nr7   r   r6   
1970-01-01int64   )strr*   zfillr+   r-   r   r~   r_   
datetime64Zastyper   )r$   r&   r   rB   rA   r'   r'   r(   test_dow_parametric   s    :z+TestTimestampProperties.test_dow_parametric)__name__
__module____qualname__r)   rF   markparametrizerC   rJ   rN   rQ   r   rV   Zget_localesra   re   rs   r|   r   r   stZ	datetimesZsampled_fromr   r'   r'   r'   r(   r   0   sx   	
  #

r   c                   @   sP  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	e
jddi gdddigdddigdddigddddgdddddgd dd!d"gd#dd$d"gd%dd$d"gd&dd!d"gd'dd(d"gd)dd*d"gd#dd$d"gd+dd(d(dgd dd!d"gd,dd-dggd.d/ Zd0d1 Zd2d3 Ze
jd4d5d6d7d8d9gd:d;d<d8d=ggd>d? Zd@S )ATestTimestampc                 C   sF   t  jtjkstt djtjks*tt dddjtjksBtd S )NUTC
2016-01-01r<   )r   utcnowr9   r   r	   r   nowr$   r'   r'   r(   test_default_to_stdlib_utc	  s    z(TestTimestamp.test_default_to_stdlib_utcc                 C   s   d}t |}|d}|jdks$t|t |ddks8t|d}|t dddksVt|jdksdtt |td }|d}|jdkst|jdkst|d}|jdkst|jdkstd S )	Nz2014-02-01 09:00
Asia/Tokyo	   r<   r:   z2014-01-31 19:00   r   )r   Ztz_localizer/   r   
tz_convertr   Nanor5   )r$   Ztstrr&   localconvr'   r'   r(   test_tz  s    



zTestTimestamp.test_tzc                 C   s   t tdjtjkstd S )Nz2014-11-02 01:00Z)r   r   tzinfor   r	   r   r   r'   r'   r(   test_utc_z_designator!  s    z#TestTimestamp.test_utc_z_designatorc                 C   s   t jd tjjtjjdg}|D ]8}t|jdt 	|dd  krT|ks"n t
q"tdjdt 	dddkst
d S )Niayy   i8nsZnat)r_   randomseedr   min_valuemaxasm8viewr   r   )r$   r   nr'   r'   r(   	test_asm8$  s     zTestTimestamp.test_asm8c                 C   s
  dd }|t  t  |t dttd |t  t  |t  t  tt 	 }t 
|}| |kst|t |t| |t |dt|t |t j|ddt|t t }|tdd  }|t ||t|| d S )Nc                 S   s(   t t| jt|j d dks$td S Ng    eAr   )r?   r   r   r   xyr'   r'   r(   compare0  s    z2TestTimestamp.test_class_ops_pytz.<locals>.comparer   r<   
   minutes)r   r   r   pytzr   r   todayrY   timegmutctimetupleutcfromtimestamp	timestampr   fromtimestampr	   r   timecombiner$   r   current_timeZts_utcZdate_componentZtime_componentr'   r'   r(   test_class_ops_pytz/  s4    
 




z!TestTimestamp.test_class_ops_pytzc                 C   s   dd }|t  t  |t dtt  |t  t  |t  t  tt  }t 	|}|
 |kst|t |t| t }|tdd  }|t ||t|| d S )Nc                 S   s8   t tt| jd tt|jd  dks4td S r   )r?   r_   roundr   r   r   r   r'   r'   r(   r   Q  s    z6TestTimestamp.test_class_ops_dateutil.<locals>.comparer   r   r   )r   r   r   r   r   r   rY   r   r   r   r   r   r   r   r   r   r   r'   r'   r(   test_class_ops_dateutilP  s$    	
 

z%TestTimestamp.test_class_ops_dateutilc                 C   s   t dd}t|dd }|jdks0t|jdks>t|jdksLt|jdksZtt 	t jj
d }t|}|jd	kst|jd
kst|jdkst|jdkst|jdkstd S )Nl     $=3izM8[ns]r     rn   r   r   l     *g	# i  r      iH7    )r_   r   r   r   r*   r   r+   r4   r5   iinfor   r-   )r$   valstampr'   r'   r(   test_basics_nanosn  s    zTestTimestamp.test_basics_nanoszvalue, check_kwargsl    Bm@ig jr
Cunitrt   g  `kBrw   g  6Arx   i*  Dr   )r   hgb6Ai  i  )r   rt   r   g  6Ai  )r   rt   g `kBr   gyr
Cg W`kBg(jr
Cr   g@s
C  g) `kBg    f@r,   c                 C   s   ddd}||f| d S )Nr   r   c                 S   s   t | |d}|jdkst|jdks(t|jdks6t|j|ksDt|dkrx|jdksZt|j|ksht|j|kstn*|jdkst|jdkst|jdkst|j	|kstd S )Nr   rn   r   r   r   )
r   r*   r   r+   r-   r/   r1   r3   r4   r5   )valuer   r   rx   rt   r   r   r'   r'   r(   check  s    z&TestTimestamp.test_unit.<locals>.check)Nr   r   r   r   r'   )r$   r   Zcheck_kwargsr   r'   r'   r(   	test_unit  s    
zTestTimestamp.test_unitc                 C   s<  t dd}t |jtdj }|t | dks8t|jdksFtt |jtdj }|t | dkspt|jdks~tt |jtd	j }|t | d
kst|jdkst|jdkstt |jtdj }|t | dkst|jdkstt |jtdj }|t | dks(t|jdks8td S )Nz20140101 00:00:00r   Z5msz.005000r   Z5usz.000005r   Z5nsz
.000000005r   z6ms 5usz.006005iu  z	200ms 5usz.200005iE )r   r{   r   r   r   r4   r5   )r$   baserB   r'   r'   r(   test_roundtrip  s"    zTestTimestamp.test_roundtripc                 C   s4   t ddddi}tt ddd}|| dks0td S )N  r   r   )r   r   r   )r$   rr   r   r'   r'   r(   test_hash_equivalent  s    z"TestTimestamp.test_hash_equivalentz timezone, year, month, day, hourzAmerica/Chicagorf      rj   r   zAmerica/Santiagoi  r7   r0   c           	   	   C   sL   t |}t||||dd|d}t||||dd|d}t|t|ksHtd S )Nr   )r*   r+   r-   r/   r1   foldr   r   )gettzr   hashr   )	r$   r   r*   r+   r-   r/   Ztest_timezoneZtransition_1Ztransition_2r'   r'   r(   test_hash_timestamp_with_fold  s(    		z+TestTimestamp.test_hash_timestamp_with_foldN)r   r   r   r   r   r   r   r   r   r   rF   r   r   r   r   r   r   r'   r'   r'   r(   r     sN   !




r   c                   @   s   e Zd Zdd Zdd ZdS )TestTimestampNsOperationsc                 C   s   t d}d}d}|j|kst|t|ks.tt ddd}|j|d ksLt|t|ks\tt ddd}|j|ksvt|t|kstt ddd}|j|d	 kst|t|kstt d
}|j|kst|t|kstd S )Nz2013-05-01 07:15:45.123456789l   W3QQ z#2013-05-01 07:15:45.123456789+09:00r   r<   l     lur   r:   l     c4z20130501T071545.123456789)r   r   r   repr)r$   r&   Zexpected_reprZexpected_valuer'   r'   r(   test_nanosecond_string_parsing  s"    z8TestTimestampNsOperations.test_nanosecond_string_parsingc                 C   s`  d}t dtd }t|dks&t|j|ks4t|jdksBtt |}t|dksZt|j|ksht|jdksvtt d}t|dkst|j|kst|jdkstd}|td }t|dkst|j|kst|jdkstt |}t|dkst|j|kst|jdks"tt d	}t|dks<t|j|ksLt|jdks\td S )
Nl    bx z
2011-01-01r   z*Timestamp('2011-01-01 00:00:00.000000005')z2011-01-01 00:00:00.000000005l   
 bx z*Timestamp('2011-01-01 00:00:00.000000010')r   z2011-01-01 00:00:00.000000010)r   r   r   r   r   r   r5   )r$   rA   tr'   r'   r(   test_nanosecond_timestamp  s4    z3TestTimestampNsOperations.test_nanosecond_timestampN)r   r   r   r   r   r'   r'   r'   r(   r     s   r   c                   @   s4   e Zd Zdd Zdd Zdd Zdd Zd	d
 ZdS )TestTimestampToJulianDatec                 C   s   t d }|dkstd S )Nz
1700-06-23g   AAr   to_julian_dater   r$   rr'   r'   r(   test_compare_1700&  s    z+TestTimestampToJulianDate.test_compare_1700c                 C   s   t d }|dkstd S )Nz
2000-04-12g   @_BAr   r   r'   r'   r(   test_compare_2000*  s    z+TestTimestampToJulianDate.test_compare_2000c                 C   s   t d }|dkstd S )Nz
2100-08-12g   @BAr   r   r'   r'   r(   test_compare_2100.  s    z+TestTimestampToJulianDate.test_compare_2100c                 C   s   t d }|dkstd S )Nz2000-08-12T01:00:00gUUUEBAr   r   r'   r'   r(   test_compare_hour012  s    z-TestTimestampToJulianDate.test_compare_hour01c                 C   s   t d }|dkstd S )Nz2000-08-12T13:00:00gUUUBAr   r   r'   r'   r(   test_compare_hour136  s    z-TestTimestampToJulianDate.test_compare_hour13N)r   r   r   r   r   r   r   r   r'   r'   r'   r(   r   %  s
   r   c                   @   sb   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d Zdd Zdd Zdd ZdS )TestTimestampConversionc                 C   s   t dd}| }tddd}||ks.tt|t|ksBt| }t|j	d}||ksdtt|t|ksxt|j
|j
kstd S )N
2000-01-01r   rn   r   )r   r{   to_pydatetimer   r   typeto_datetime64r_   r   r   dtype)r$   r&   rB   rA   r'   r'   r(   test_conversion<  s    z'TestTimestampConversion.test_conversionc              	   C   s4   d}t dddddd|d}| }|jdks0td S )Nz+dateutil/usr/share/zoneinfo/America/Chicagorf   r   rj   r   r   )r*   r+   r-   r/   r1   r   r9   )r   r   r   r   )r$   Ztzstrr&   rd   r'   r'   r(   test_to_pydatetime_foldK  s    z/TestTimestampConversion.test_to_pydatetime_foldc              	   C   sJ   t d}tt. tddddddd}| }||ks<tW 5 Q R X d S )Nz2011-01-01 9:00:00.123456789r   r   r   r   i@ )r   rV   assert_produces_warningUserWarningr   r   r   r$   r&   rA   rB   r'   r'   r(   test_to_pydatetime_nonzero_nanoR  s
    z7TestTimestampConversion.test_to_pydatetime_nonzero_nanoc                 C   s4   t ddd}| }||ks t|j|jks0td S N20090415r:   r<   r   r   r   r   r$   r   Zdtvalr'   r'   r(   test_timestamp_to_datetime[  s    z2TestTimestampConversion.test_timestamp_to_datetimec                 C   s4   t ddd}| }||ks t|j|jks0td S )Nr   zdateutil/US/Easternr<   r   r   r'   r'   r(   #test_timestamp_to_datetime_dateutila  s    z;TestTimestampConversion.test_timestamp_to_datetime_dateutilc                 C   s:   t dtdd}| }||ks&t|j|jks6td S r   )r   r   r   r   r   r   r   r'   r'   r(   (test_timestamp_to_datetime_explicit_pytzg  s    z@TestTimestampConversion.test_timestamp_to_datetime_explicit_pytzc                 C   s8   t dtdd}| }||ks$t|j|jks4td S r   )r   r   r   r   r   r   r'   r'   r(   ,test_timestamp_to_datetime_explicit_dateutilm  s    zDTestTimestampConversion.test_timestamp_to_datetime_explicit_dateutilc              	   C   s   t jjdkrd nt}t| t j }W 5 Q R X t |djd t jjd ksXt	t j
jdkrhd nt}t| t j
 }W 5 Q R X tdd}|| t j
kst	t || djd t j
jd kst	d S )Nr   r   r   r   ru   )r   r   r5   r   rV   r   r   r{   r   r   r   r   )r$   Zexp_warningZpydt_maxZpydt_minZtdusr'   r'   r(   test_to_datetime_bijectivet  s     


z2TestTimestampConversion.test_to_datetime_bijectivec              	   C   s0   t ddd}tt |d W 5 Q R X d S )Nz2009-04-15 16:17:18r:   r<   r   )r   rV   r   r   	to_periodr$   r&   r'   r'   r(   test_to_period_tz_warning  s    z1TestTimestampConversion.test_to_period_tz_warningc              	   C   sr   t t }| | ks td}tjt|d |d W 5 Q R X tjt|d |jdd W 5 Q R X d S )Nz$dtype and copy arguments are ignoredrD   zM8[s]T)copy)	r   r   r   r   to_numpyr   rF   rG   
ValueError)r$   r&   rI   r'   r'   r(   test_to_numpy_alias  s    z+TestTimestampConversion.test_to_numpy_aliasN)r   r   r   r   r   r   r   r   r   tdZskip_if_windowsr   r   r  r  r'   r'   r'   r(   r   ;  s   	
r   c                   @   s   e Zd ZdS )SubDatetimeN)r   r   r   r'   r'   r'   r(   r    s   r  zlh,rhrn   r   )hoursc                 C   s&   | | }t dddd}||ks"td S )Nrn   r   )r  r   )ZlhZrhrB   rA   r'   r'   r(   test_dt_subclass_add_timedelta  s    r	  c                	   @   s^  e Zd Zejdddgddd Zejdd Zejd	d
 Zej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jjdd d!d" Zd#d$ Zd%d& Zd'd( Zd)d* Zd+d, Zd-d. Zd/d0 Zejd1ed2d3ed2d3e d2d4gd5d6 Z!d7d8 Z"d9d: Z#d;d< Z$d=d> Z%d?d@ Z&dAdB Z'dCdD Z(dEdF Z)dGdH Z*dIS )JTestNonNanorx   rw   rt   )paramsc                 C   s   |j S r}   )param)r$   requestr'   r'   r(   reso  s    zTestNonNano.resoc                 C   s   t d|S )Nr   )r_   r   )r$   r  r'   r'   r(   dt64  s    zTestNonNano.dt64c                 C   s
   t |S r}   )r   
_from_dt64)r$   r  r'   r'   r(   r&     s    zTestNonNano.tsc                 C   s   t |}t|j|j|S r}   )r   r   _from_value_and_resor   _creso)r$   r&   tz_aware_fixturer9   r'   r'   r(   ts_tz  s    zTestNonNano.ts_tzc                 C   sj   |j |dkst|dkr0|jtjjksftn6|dkrL|jtjjksftn|dkrf|jtjjksftd S )Nr   rx   rw   rt   )	r   r   r   r  r
   NPY_FR_sr   	NPY_FR_ms	NPY_FR_us)r$   r  r&   r  r'   r'   r(   test_non_nano_construction  s    z&TestNonNano.test_non_nano_constructionc                 C   s   t |}|j|jkst|j|jks(t|j|jks8t|j|j  krh|j  krh|j  krhdksnn t|j	dks|t|
 |
 kst| | kst| | kstd S )Nr   )r   r*   r   r+   r-   r/   r1   r3   r4   r5   r   r~   
isoweekdayr$   r  r&   altr'   r'   r(   test_non_nano_fields  s    6z TestNonNano.test_non_nano_fieldsc                 C   s|   |j s
t|jst|jst|jr(t|jr2t|jr<t|j sFt|jsPt|jsZt|jrdt|jrnt|jrxtd S r}   )rL   r   r!   r    rP   r"   r   r'   r'   r(   test_start_end_fields  s    










z!TestNonNano.test_start_end_fieldsc                 C   s    t |}| | kstd S r}   )r   rZ   r   r  r'   r'   r(   test_day_name  s    zTestNonNano.test_day_namec                 C   s    t |}| | kstd S r}   )r   r\   r   r  r'   r'   r(   test_month_name  s    zTestNonNano.test_month_namec                 C   sX   t |j|jt}td}||}t|t s4t	|j|jksDt	t
|j|sTt	d S )Nz
US/Pacific)r   r  r   r  r	   r   r   r   r>   r   r   r9   )r$   r&   r9   rB   r'   r'   r(   test_tz_convert  s    

zTestNonNano.test_tz_convertc                 C   s4   t |}t|t|kstt|t|ks0td S r}   )r   r   r   r   r  r'   r'   r(   	test_repr  s    zTestNonNano.test_reprc                 C   s4  t |}||kst||ks t||ks,t||ks8t||krDt||krPt||kr\t||krht||k rtt||k rt||k rt||k rt||krt||krt||krt||krt||kst||kst||kst||kst||kst||kst||ks"t||ks0td S r}   )r   r   r  r'   r'   r(   test_comparison
  s2    zTestNonNano.test_comparisonc                 C   s|   t dd}t|}t|d d}||k s4t|j|jksDt||ksPt|j|jk s`t||krlt||ksxtd S )Nl     K rx   Q r   )r_   r   r   r  r{   r   r   r$   r  r&   otherr'   r'   r(   test_cmp_cross_reso+  s    
zTestNonNano.test_cmp_cross_resoz*Dispatches to np.datetime64 which is wrong)reasonc                 C   s4   t dd}t|}t|d }|j|k s0td S )Ni  r   r   )r_   r   r   r  r   r   r$  r'   r'   r(   !test_cmp_cross_reso_reversed_dt64:  s    
z-TestNonNano.test_cmp_cross_reso_reversed_dt64c                 C   sH   |}t |}t|j|j|}t|}|j|jks8t||ksDtd S r}   )r   r   r  r   r  rV   Zround_trip_pickler   )r$   r&   r  r9   rtr'   r'   r(   test_pickleB  s    
zTestNonNano.test_picklec                 C   s4   t |}| }|j|jks t|| ks0td S r}   )r   r^   r  r   )r$   r  r&   r  rB   r'   r'   r(   test_normalizeJ  s    zTestNonNano.test_normalizec                 C   s&   |j }||kst|j|jks"td S r}   )r   r   r   )r$   r  r&   r)  r'   r'   r(   r   P  s    zTestNonNano.test_asm8c                 C   s(   |  }||kst|j|jks$td S r}   )r  r   r   r$   r  r&   resr'   r'   r(   test_to_numpyU  s    zTestNonNano.test_to_numpyc                 C   s(   |  }||kst|j|jks$td S r}   )r   r   r   r,  r'   r'   r(   test_to_datetime64Z  s    zTestNonNano.test_to_datetime64c                 C   s    t |}| | kstd S r}   )r   r   r   r  r'   r'   r(   test_timestamp_  s    zTestNonNano.test_timestampc                 C   s$   t |}|d|dks td S )Nr   )r   r   r   r  r'   r'   r(   test_to_periodc  s    zTestNonNano.test_to_periodr  r7   r   r   c                 C   s   t |jt|j}|| }t|| }t|ts4t|j|ksBt||ksNt|| }t|| }t|tspt|j|ks~t||kst|| }|t| }t|tst|j|kst||kstd S r}   )r   r  r   r   r>   r   )r$   r  r&   r  Zexp_resorB   rA   r'   r'   r(   "test_addsub_timedeltalike_non_nanog  s     z.TestNonNano.test_addsub_timedeltalike_non_nanoc                 C   s  t d}|| }t|ts t|j|jks0t|jdkrZ|jdkrZ|j|jd ksjtn|j|jksjt|jdksxt|jdkstt	|j
|j
st|| }t|tst|j|jkst|j|jd kst|jdkst|jdkstt	|j
|j
std S )Nr   r,   r.   )r   ZYearEndr>   r   r   r  r+   r-   r*   r   r9   )r$   r  offrB   r'   r'   r(   test_addsub_offset  s"    
zTestNonNano.test_addsub_offsetc           
      C   s  |}t jjdt jjdt jjdi|j }||}|j|jks@t|| }t|t	sVt|j
dksdt|jt|j|jks|t|| }t|t	st|j
dkst|jt|j|jkst|j|jk rJ|t	d|j }||j| }|| }||kst|jt|j|jkst|| }|| ks.t|jt|j|jkstn|t	d|j }	|	||	j }|	| }||kst|jt|j|jkst||	 }|| kst|jt|j|jkstd S Nrw   rx   rt   r   r   )r
   r  r   r  r  r  r{   r   r>   r   r   r   r  r   
r$   r  r&   r   r%  rB   Zother2expr-  Zts2r'   r'   r(   %test_sub_datetimelike_mismatched_reso  sJ       
z1TestNonNano.test_sub_datetimelike_mismatched_resoc           
      C   s  |}t jjdt jjdt jjdi|j }td|}|j|jksDt|| }t	|t
sZt||ksft|jt|j|jks~t|| }t	|t
st||kst|jt|j|jkst|j|jk rH|td|j }||j| }|| }||kst|jt|j|jkst|| }||ks,t|jt|j|jkstn|td|j }	|	||	j }|	| }||kst|jt|j|jkst||	 }||kst|jt|j|jkstd S r5  )r
   r  r   r  r  r  r   r{   r   r>   r   r   r  r   r6  r'   r'   r(   &test_sub_timedeltalike_mismatched_reso  sJ       z2TestNonNano.test_sub_timedeltalike_mismatched_resoc                 C   sB   t dddddd}tddd}|| }|j|jks>td S )Ni  r   i?B )r*   r+   r-   r4   rt   ru   )r   r{   r   r  r   )r$   r&   r  r-  r'   r'   r(   "test_addition_doesnt_downcast_reso  s    z.TestNonNano.test_addition_doesnt_downcast_resoc                 C   sL   |}|t dd }|dt dd }||ks6t|jtjjksHtd S )Nr   r   )r_   timedelta64r{   r   r  r
   	NPY_FR_nsr   )r$   r  r&   r-  r7  r'   r'   r(   $test_sub_timedelta64_mismatched_reso  s
    z0TestNonNano.test_sub_timedelta64_mismatched_resoc                 C   s:   |j |kst|j j|jks t|j jtjd ks6td S Nr   )r   r   r  r   r   r   r'   r'   r(   test_min  s    zTestNonNano.test_minc                 C   s>   |j |kst|j j|jks t|j jttjj ks:td S r}   )r   r   r  r   r_   r   r   r   r'   r'   r(   test_max	  s    zTestNonNano.test_maxc                 C   s4   t d|j}|j}||ks t|j|jks0td S r>  )r   r  r  rz   r   r   r'   r'   r(   r|     s    zTestNonNano.test_resolutionc                 C   s8   t ddd}|t dkst| tddks4td S )NldW
1 rx   r   z
0300-01-01z0300-01-01T00:00:00)r   r   r  r_   r   )r$   rB   r'   r'   r(   test_out_of_ns_bounds  s    z!TestNonNano.test_out_of_ns_boundsN)+r   r   r   rF   Zfixturer  r  r&   r  r  r  r  r  r  r   r!  r"  r&  r   Zxfailr(  r*  r+  r   r.  r/  r0  r1  r   r   r   r_   r;  r2  r4  r8  r9  r:  r=  r?  r@  r|   rA  r'   r'   r'   r(   r
    sP   





!
 
0.r
  c                   C   s   t jt tjd kstt jjtjjks,tt j	t t
t
jj	ksHtt j	jtjjks\tt jtdksntt jjtjjkstd S r>  )r   r   r   r   r   r  r
   r<  r   r   r_   r   r   rz   r   r'   r'   r'   r(   'test_timestamp_class_min_max_resolution  s    rB  c                   @   s,   e Zd Zdd Zdd Zdd Zdd Zd	S )

TestAsUnitc                 C   sH  t dd}|jdkst|d|ks.t|d}|j|jd ksLt|jtjjks^t|d}|j|jksxt|j|jkst|d}|j|jd kst|jtj	jkst|d}|j|jkst|j|jkst|d}|j|jd kst|jtj
jkst|d}|j|jks2t|j|jksDtd S )	Nr   r   rt   r   rw   @B rx   i ʚ;)r   r{   r   r   r   r  r
   r  r   r  r  )r$   r&   r-  r)  r'   r'   r(   test_as_unit)  s*    





zTestAsUnit.test_as_unitc              	   C   sp   d}t |tjjd }d}tjt|d |d W 5 Q R X |d}|j	|d ksZt
|jtjjkslt
d S )Nl     &oz=Cannot cast 2262-04-12 00:00:00 to unit='ns' without overflowrD   r   rw   r   )r   r  r
   r  r   rF   rG   r   r{   r   r   r  r  )r$   rt   r&   rI   r-  r'   r'   r(   test_as_unit_overflowsG  s    
z!TestAsUnit.test_as_unit_overflowsc              	   C   sr   t d}|d}t d}||ks&t|jtjjks8t|jdksFttj	t
dd |jddd W 5 Q R X d S )	Ni` rw   rD  r   zCannot losslessly convert unitsrD   F)Zround_ok)r   r{   r   r  r
   r  r   r   rF   rG   r  )r$   r&   r-  rA   r'   r'   r(   test_as_unit_roundingT  s    
z TestAsUnit.test_as_unit_roundingc                 C   s  t dd}|jdkst|jdks*t|jdks8t|j|j  krt|j  krt|j	  krt|j
  krtdkszn t|d}|jdkst|jdkst|jdkst|jdkst|j|j  kr|j  kr|j	  kr|j
  krdksn td S )	Nz
1970-01-02rw   i  r   r6   r   rx   r#  )r   r{   r*   r   r+   r-   r/   r1   r3   r4   r5   r   )r$   r&   r-  r'   r'   r(   test_as_unit_non_nanoa  s*    B
z TestAsUnit.test_as_unit_non_nanoN)r   r   r   rE  rF  rG  rH  r'   r'   r'   r(   rC  (  s   rC  c               	   C   s:   t d  td} W 5 Q R X tddd}| |ks6td S )Nz
13-01-2000rn   r      )rV   r   r   r   )rB   rA   r'   r'   r(   test_delimited_datex  s    rJ  c                  C   s.   t ddd} |  }td}||ks*td S )Nr   r   r<   )	rn   r   r   r   r   r   r   r   r   )r   r   r   struct_timer   )r&   rB   rA   r'   r'   r(   test_utctimetuple  s    
rL  c               	   C   s4   t d} d}tjt|d | d W 5 Q R X d S )Nz-2000-01-01z^strftime not yet supported on Timestamps which are outside the range of Python's standard library. For now, please call the components you need \(such as `.year` and `.month`\) and construct your string from there.$rD   z%Y)r   rF   rG   NotImplementedErrorstrftime)r&   rI   r'   r'   r(   test_negative_dates  s
    rO  )>__doc__rY   r   r   r   rW   r   r]   Zdateutil.tzr   r   Z
hypothesisr   r   r   Znumpyr_   rF   r   r	   Zpandas._libs.tslibs.dtypesr
   Zpandas._libs.tslibs.timezonesr   r   r   r   r   Zpandas.compatr   Zpandas.errorsr   Zpandas.util._test_decoratorsutilZ_test_decoratorsr  Zpandasr   r   r   Zpandas._testingZ_testingrV   Zpandas.tseriesr   Zpandas.tseries.frequenciesr   r   r   r   r   r   r  r   r   r	  r
  rB  rC  rJ  rL  rO  r'   r'   r'   r(   <module>   sV    Y a=h
	  fP