o
    d                  	   @   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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Z,G dd dZ-G dd dZ.G dd dZ/G dd deZ0ej12de0ddde"ddfe"dde0dddfgdd Z3G dd  d Z4d!d" Z5G d#d$ d$Z6d%d& Z7d'd( Z8d)d* Z9dS )+z test the scalar Timestamp     N)datetime	timedeltatimezone)tzlocaltzutc)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$g d%ejdddgd&d' Z	ejd(g d)ejdddgd*d+ Z
ejd,ed-ed-d.d/gejd0dge  d1d2 Zd3d4 Zd5d6 Zd7d8 ZdS )9TestTimestampPropertiesc                 C   s
  t d}td}|jdksJ |jdksJ |jsJ ||r"J ||tdd s.J ||r5J ||tdd sAJ td}|jdksLJ |jdksSJ |jsXJ ||r_J ||tdd skJ |jspJ ||rwJ ||tdd sJ d S )NBz
2017-10-01      daysz
2017-09-30   )	r   r   	dayofweekday_of_weekis_month_startr   is_quarter_startis_month_endis_quarter_end)selffreqts r$   `/app/.heroku/python/lib/python3.10/site-packages/pandas/tests/scalar/timestamp/test_timestamp.pytest_properties_business-   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J ||ksJ d S )N2014-12-31 23:59:00r6   )r   getattr
isinstanceint)r!   attrexpectedr6   r#   resultr$   r$   r%   test_fieldsC   s   
z#TestTimestampProperties.test_fieldsc                 C   sJ   t d|d}d}tjt|d |j W d    d S 1 sw   Y  d S )Nr8   r9   z1'Timestamp' object has no attribute 'millisecond'match)r   pytestraisesAttributeErrorZmillisecond)r!   r6   r#   msgr$   r$   r%   test_millisecond_raisesa   s
   "z/TestTimestampProperties.test_millisecond_raisesstart)r   r   is_year_startc                 C      t d|d}t||sJ d S )Nz2014-01-01 00:00:00r9   r   r:   )r!   rH   r6   r#   r$   r$   r%   test_is_starth   s   z%TestTimestampProperties.test_is_startend)r   is_year_endr    c                 C   rJ   )Nz2014-12-31 23:59:59r9   rK   )r!   rM   r6   r#   r$   r$   r%   test_is_endp   s   z#TestTimestampProperties.test_is_enddataz2017-08-28 23:00:00ESTr9   time_localec                 C   s   |d u r	d}d}n%t |tj tjd  }tjd  }W d    n1 s)w   Y  ||}||}t	d|}t	d|}t	d|}t	d|}||ksVJ ||ks\J t
t}t||sjJ t||stJ d S )NZMondayZAugustr      ZNFD)tmZ
set_localelocaleLC_TIMEcalendarday_name
capitalize
month_nameunicodedata	normalizer   r   npisnan)r!   rP   rR   Zexpected_dayZexpected_monthZ
result_dayZresult_monthZnan_tsr$   r$   r%   
test_namesw   s$   

z"TestTimestampProperties.test_namesc                 C   s   |}t s|t krtd td|d}|jsJ t|jts!J td|d}|jr,J td|d}|js7J td|d}|jrBJ d S )Nz>tzlocal() on a 32 bit platform causes internal overflow errorsz2000-01-01 00:00:00r9   z1999-01-01 00:00:00z2004-01-01 00:00:00z2100-01-01 00:00:00)r   r   rC   skipr   Zis_leap_yearr;   bool)r!   Ztz_naive_fixturer6   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J t ddd}t|j}d}||ks&J t ddd}t|j}d	}||ks9J t d
dd}t|j}d	}||ksLJ t d
dd}t|j}d	}||ks_J tdd dD }|g dk ssJ d S )N  r)   r+   r   i     4   i  5   i     c                 S   s   g | ]	}t t| jqS r$   )r   r   r5   ).0argsr$   r$   r%   
<listcomp>   s    z=TestTimestampProperties.test_woy_boundary.<locals>.<listcomp>))  r   r   )rl   r   r3   )  r   r   )rm   r   r3   )rf   rf   rg   rg   )r   r   r5   r]   arrayall)r!   dr?   r>   r$   r$   r%   test_woy_boundary   s4   




z)TestTimestampProperties.test_woy_boundaryc                 C   s   t d}|jtddksJ t jtddksJ |djtddks%J |djtddks2J |djtdd	ks?J d S )
Nz2100-01-01 00:00:00.000000000r   )nanosecondsusmicrosecondsms)Zmillisecondss)seconds)r   
resolutionr   as_unit)r!   rb   r$   r$   r%   test_resolution   s   z'TestTimestampProperties.test_resolution)__name__
__module____qualname__r&   rC   markparametrizer@   rG   rL   rO   r   rT   Zget_localesr_   rc   rq   r{   r$   r$   r$   r%   r   ,   sX    	
#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	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d4g d5g d6gd7d8 Zd9S ):TestTimestampc                 C   sF   t  jtju s
J t djtju sJ t dddjtju s!J d S )NUTC
2016-01-01r9   )r   utcnowr6   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J |t |ddksJ |d}|t dddks+J |jdks2J t |td }|d}|jdksGJ |jdksNJ |d}|jdksZJ |jdksaJ d S )	Nz2014-02-01 09:00
Asia/Tokyo	   r9   r7   z2014-01-31 19:00   r   )r   Ztz_localizer,   
tz_convertr   Nanor2   )r!   Ztstrr#   localconvr$   r$   r%   test_tz   s   



zTestTimestamp.test_tzc                 C   s   t tdjtju sJ d S )Nz2014-11-02 01:00Z)r
   r   tzinfor   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 ]}t|jdt 	|dd  kr+|ks.J  J qtdjdt 	dddksBJ d S )Niayy   i8nsZnat)
r]   randomseedr   min_valuemaxasm8view
datetime64)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sCJ |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J d S Ng    eAr   )r<   r   r   xyr$   r$   r%   compare  s   (z2TestTimestamp.test_class_ops_pytz.<locals>.comparer   r9   
   minutes)r   r   r   pytzr   r   todayrW   timegmutctimetupleutcfromtimestamp	timestampfromtimestampr   r   timecombiner!   r   current_timeZts_utcZdate_componentZtime_componentr$   r$   r%   test_class_ops_pytz
  s2   





z!TestTimestamp.test_class_ops_pytzc                 C   s   dd }|t  t  |t dtt  |t  t  |t  t  tt  }t 	|}|
 |ksAJ |t |t| t }|tdd  }|t ||t|| d S )Nc                 S   s8   t tt| jd tt|jd  dksJ d S r   )r<   r]   roundr   r   r   r$   r$   r%   r   ,  s   
z6TestTimestamp.test_class_ops_dateutil.<locals>.comparer   r   r   )r   r   r   r   r   r   rW   r   r   r   r   r   r   r   r   r   r$   r$   r%   test_class_ops_dateutil+  s"   	


z%TestTimestamp.test_class_ops_dateutilc                 C   s   t dd}t|dd }|jdksJ |jdksJ |jdks&J |jdks-J t t jj	d }t|}|jd	ksAJ |jd
ksHJ |j
dksOJ |jdksVJ |jdks]J d S )Nl     $=3izM8[ns]r     rl   r   r   l     *g	# i  r      iH7    )r]   int64r   r   r'   r(   r1   r2   iinfor   r*   )r!   valstampr$   r$   r%   test_basics_nanosI  s   zTestTimestamp.test_basics_nanoszvalue, check_kwargsl    Bm@ig jr
Cunitrs   g  `kBrv   g  6Arw   i*  Dr   )r   hgb6Ai  i  )r   rs   r   g  6Ai  )r   rs   g `kBr   gyr
Cg W`kBg(jr
Cr   g@s
C  g) `kBg    f@r)   c                 C   s   ddd}||fi | d S )Nr   r   c                 S   s   t | |d}|jdksJ |jdksJ |jdksJ |j|ks"J |dkr<|jdks-J |j|ks4J |j|ks;J n|jdksCJ |jdksJJ |jdksQJ |j|ksXJ d S )Nr   rl   r   r   r   )	r   r'   r(   r*   r,   r.   r0   r1   r2   )valuer   r   rw   rs   r   r   r$   r$   r%   checkv  s   z&TestTimestamp.test_unit.<locals>.check)Nr   r   r   r   r$   )r!   r   Zcheck_kwargsr   r$   r$   r%   	test_unitZ  s   
zTestTimestamp.test_unitc                 C   s8  t dd}t |jtdj }|t | dksJ |jdks#J t |jtdj }|t | dks8J |jdks?J t |jtd	j }|t | d
ksTJ |jdks[J |jdksbJ t |jtdj }|t | dkswJ |jdks~J t |jtdj }|t | dksJ |jdksJ 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   rz   r   r   r1   r2   )r!   baser?   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sJ d S )N  r   r   )r   r   )r!   rp   r   r$   r$   r%   test_hash_equivalent  s   z"TestTimestamp.test_hash_equivalentz timezone, year, month, day, hour)zAmerica/Chicagord      rh   r   )zAmerica/Santiagoi  r4   rh   r-   c           	   	   C   sL   t |}t||||dd|d}t||||dd|d}t|t|ks$J d S )Nr   )r'   r(   r*   r,   r.   foldr   r   )gettzr   hash)	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   rC   r   r   r   r   r   r   r$   r$   r$   r%   r      sP    !




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J |t|v sJ t ddd}|j|d ks&J |t|v s.J t ddd}|j|ks;J |t|v sCJ t ddd}|j|d	 ksRJ |t|v sZJ t d
}|j|kseJ |t|v smJ d S )Nz2013-05-01 07:15:45.123456789l   W3QQ z#2013-05-01 07:15:45.123456789+09:00r   r9   l     lur   r7   l     c4z20130501T071545.123456789)r   r   repr)r!   r#   Zexpected_reprZexpected_valuer$   r$   r%   test_nanosecond_string_parsing  s"   z8TestTimestampNsOperations.test_nanosecond_string_parsingc                 C   sT  d}t dtd }t|dksJ |j|ksJ |jdks!J t |}t|dks-J |j|ks4J |jdks;J t d}t|dksGJ |j|ksNJ |jdksUJ d}|td }t|dksfJ |j|ksmJ |jdkstJ t |}t|dksJ |j|ksJ |jdksJ t d	}t|dksJ |j|ksJ |jdksJ 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   r2   )r!   r>   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      t d }|dksJ d S )Nz
1700-06-23g   AAr   to_julian_dater!   rr$   r$   r%   test_compare_1700     z+TestTimestampToJulianDate.test_compare_1700c                 C   r   )Nz
2000-04-12g   @_BAr   r   r$   r$   r%   test_compare_2000  r   z+TestTimestampToJulianDate.test_compare_2000c                 C   r   )Nz
2100-08-12g   @BAr   r   r$   r$   r%   test_compare_2100	  r   z+TestTimestampToJulianDate.test_compare_2100c                 C   r   )Nz2000-08-12T01:00:00gUUUEBAr   r   r$   r$   r%   test_compare_hour01  r   z-TestTimestampToJulianDate.test_compare_hour01c                 C   r   )Nz2000-08-12T13:00:00gUUUBAr   r   r$   r$   r%   test_compare_hour13  r   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J t|t|ks!J | }t|jd}||ks2J t|t|ks<J |j	|j	ksDJ d S )N
2000-01-01r   rl   r   )
r   rz   to_pydatetimer   typeto_datetime64r]   r   r   dtype)r!   r#   r?   r>   r$   r$   r%   test_conversion  s   z'TestTimestampConversion.test_conversionc              	   C   s4   d}t dddddd|d}| }|jdksJ d S )Nz+dateutil/usr/share/zoneinfo/America/Chicagord   r   rh   r   r   )r'   r(   r*   r,   r.   r   r6   )r   r   r   )r!   Ztzstrr#   rb   r$   r$   r%   test_to_pydatetime_fold&  s   z/TestTimestampConversion.test_to_pydatetime_foldc              	   C   s`   t d}tt tddddddd}| }||ksJ W d    d S 1 s)w   Y  d S )Nz2011-01-01 9:00:00.123456789r   r   r   r   i@ )r   rT   assert_produces_warningUserWarningr   r   r!   r#   r>   r?   r$   r$   r%   test_to_pydatetime_nonzero_nano-  s   "z7TestTimestampConversion.test_to_pydatetime_nonzero_nanoc                 C   4   t ddd}| }||ksJ |j|jksJ d S N20090415r7   r9   r   r   r   r!   r   Zdtvalr$   r$   r%   test_timestamp_to_datetime6     z2TestTimestampConversion.test_timestamp_to_datetimec                 C   r   )Nr   zdateutil/US/Easternr9   r   r   r$   r$   r%   #test_timestamp_to_datetime_dateutil<  r   z;TestTimestampConversion.test_timestamp_to_datetime_dateutilc                 C   s:   t dtdd}| }||ksJ |j|jksJ d S r   )r   r   r   r   r   r   r$   r$   r%   (test_timestamp_to_datetime_explicit_pytzB  s   z@TestTimestampConversion.test_timestamp_to_datetime_explicit_pytzc                 C   s8   t dtdd}| }||ksJ |j|jksJ d S r   )r   r   r   r   r   r$   r$   r%   ,test_timestamp_to_datetime_explicit_dateutilH  s   zDTestTimestampConversion.test_timestamp_to_datetime_explicit_dateutilc                 C   s   t jjdkrd nt}t| t j }W d    n1 sw   Y  t |djd t jjd ks6J t j	jdkr>d nt}t| t j	 }W d    n1 sUw   Y  t
dd}|| t j	kshJ t || djd t j	jd ks|J d S )Nr   r   r   r   rt   )r   r   r2   r   rT   r   r   rz   r   r   r   )r!   Zexp_warningZpydt_maxZpydt_minZtdusr$   r$   r%   test_to_datetime_bijectiveO  s$   



z2TestTimestampConversion.test_to_datetime_bijectivec                 C   sF   t ddd}tt |d W d    d S 1 sw   Y  d S )Nz2009-04-15 16:17:18r7   r9   r   )r   rT   r   r   	to_periodr!   r#   r$   r$   r%   test_to_period_tz_warningi  s   "z1TestTimestampConversion.test_to_period_tz_warningc                 C   s   t t }| | ksJ d}tjt|d |d W d    n1 s)w   Y  tjt|d |jdd W d    d S 1 sGw   Y  d S )Nz$dtype and copy arguments are ignoredrA   zM8[s]T)copy)r   r   r   r   to_numpyrC   rD   
ValueError)r!   r#   rF   r$   r$   r%   test_to_numpy_aliasq  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,rhrl   r   )hoursc                 C   s&   | | }t dddd}||ksJ d S )Nrl   r   )r   )ZlhZrhr?   r>   r$   r$   r%   test_dt_subclass_add_timedelta  s   r   c                	   @   s\  e Zd Zejg d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-d. Zejd/ed0d1ed0d1e d0d2gd3d4 Z!d5d6 Z"d7d8 Z#d9d: Z$d;d< Z%d=d> Z&d?d@ Z'dAdB Z(dCdD Z)dEdF Z*dGS )HTestNonNano)rw   rv   rs   )paramsc                 C   s   |j S N)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_fixturer6   r$   r$   r%   ts_tz  s   zTestNonNano.ts_tzc                 C   sr   |j |dks
J |dkr|jtjjksJ d S |dkr(|jtjjks&J d S |dkr5|jtjjks7J d S d S )Nr   rw   rv   rs   )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J |j|jksJ |j|jksJ |j|j  kr5|j  kr5|j  kr5dks8J  J |jdks?J |	 |	 ksIJ |
 |
 ksSJ | | ks]J d S )Nr   )r   r'   r(   r*   r,   r.   r0   r1   r2   r   weekday
isoweekdayr!   r  r#   altr$   r$   r%   test_non_nano_fields  s   8z TestNonNano.test_non_nano_fieldsc                 C   s|   |j sJ |js
J |jsJ |jrJ |jrJ |jrJ |j s#J |js(J |js-J |jr2J |jr7J |jr<J d S r  )rI   r   r   rN   r   r   r$   r$   r%   test_start_end_fields  s   










z!TestNonNano.test_start_end_fieldsc                 C       t |}| | ksJ d S r  )r   rX   r  r$   r$   r%   test_day_name     zTestNonNano.test_day_namec                 C   r  r  )r   rZ   r  r$   r$   r%   test_month_name  r  zTestNonNano.test_month_namec                 C   sX   t |j|jt}td}||}t|t sJ |j|jks"J t	|j
|s*J d S )Nz
US/Pacific)r   r	  r   r
  r   r   r   r   r;   r   r6   )r!   r#   r6   r?   r$   r$   r%   test_tz_convert  s   

zTestNonNano.test_tz_convertc                 C   s4   t |}t|t|ksJ t|t|ksJ d S r  )r   strr   r  r$   r$   r%   	test_repr  s   zTestNonNano.test_reprc                 C   s,  t |}||ks
J ||ksJ ||ksJ ||ksJ ||kr"J ||kr(J ||kr.J ||kr4J ||k r:J ||k r@J ||k rFJ ||k rLJ ||krRJ ||krXJ ||kr^J ||krdJ ||ksjJ ||kspJ ||ksvJ ||ks|J ||ksJ ||ksJ ||ksJ ||ksJ d S r  )r   r  r$   r$   r%   test_comparison  s2   zTestNonNano.test_comparisonc                 C   s|   t dd}t|}t|d d}||k sJ |j|jks"J ||ks(J |j|jk s0J ||kr6J ||ks<J d S )Nl     K rw   Q r   )r]   r   r   r  rz   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 sJ d S )Ni  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sJ ||ks"J d S r  )r   r   r	  r   r
  rT   Zround_trip_pickle)r!   r#   r  r6   rtr$   r$   r%   test_pickle  s   
zTestNonNano.test_picklec                 C   s4   t |}| }|j|jksJ || ksJ d S r  )r   r\   r
  )r!   r  r#   r  r?   r$   r$   r%   test_normalize%  s   zTestNonNano.test_normalizec                 C   s&   |j }||ks	J |j|jksJ d S r  )r   r   )r!   r  r#   r%  r$   r$   r%   r   +  s   zTestNonNano.test_asm8c                 C   (   |  }||ks
J |j|jksJ d S r  )r   r   r!   r  r#   resr$   r$   r%   test_to_numpy0     zTestNonNano.test_to_numpyc                 C   r(  r  )r   r   r)  r$   r$   r%   test_to_datetime645  r,  zTestNonNano.test_to_datetime64c                 C   r  r  )r   r   r  r$   r$   r%   test_timestamp:  r  zTestNonNano.test_timestampc                 C   s$   t |}|d|dksJ d S )Nr   )r   r   r  r$   r$   r%   test_to_period>  s   zTestNonNano.test_to_periodr   r4   r   r   c                 C   s   t |jt|j}|| }t|| }t|tsJ |j|ks!J ||ks'J || }t|| }t|ts8J |j|ks?J ||ksEJ || }|t| }t|tsVJ |j|ks]J ||kscJ d S r  )r   r
  r   r   r;   )r!   r  r#   r   Zexp_resor?   r>   r$   r$   r%   "test_addsub_timedeltalike_non_nanoB  s    z.TestNonNano.test_addsub_timedeltalike_non_nanoc                 C   s  t d}|| }t|tsJ |j|jksJ |jdkr-|jdkr-|j|jd ks,J n|j|jks5J |jdks<J |jdksCJ t|j	|j	sLJ || }t|tsWJ |j|jks_J |j|jd ksiJ |jdkspJ |jdkswJ t|j	|j	sJ d S )Nr   r)   r+   )
r   ZYearEndr;   r   r
  r(   r*   r'   r   r6   )r!   r  offr?   r$   r$   r%   test_addsub_offsetZ  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 J || }t|ts+J |j	dks2J |jt
|j|jks>J || }t|tsIJ |j	dksPJ |jt
|j|jks\J |j|jk r|td|j }||j| }|| }||ks}J |jt
|j|jksJ || }|| ksJ |jt
|j|jksJ d S |td|j }	|	||	j }|	| }||ksJ |jt
|j|jksJ ||	 }|| ksJ |jt
|j|jksJ d S Nrv   rw   rs   r   r   )r   r  r   r  r  r
  rz   r;   r   r   r   r	  r   
r!   r  r#   r   r!  r?   Zother2expr*  Zts2r$   r$   r%   %test_sub_datetimelike_mismatched_resor  sD   
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s"J || }t|t	s-J ||ks3J |jt
|j|jks?J || }t|t	sJJ ||ksPJ |jt
|j|jks\J |j|jk r|td|j }||j| }|| }||ks}J |jt
|j|jksJ || }||ksJ |jt
|j|jksJ d S |td|j }	|	||	j }|	| }||ksJ |jt
|j|jksJ ||	 }||ksJ |jt
|j|jksJ d S r3  )r   r  r   r  r  r
  r   rz   r;   r   r   r	  r   r4  r$   r$   r%   &test_sub_timedeltalike_mismatched_reso  sD   z2TestNonNano.test_sub_timedeltalike_mismatched_resoc                 C   sB   t dddddd}tddd}|| }|j|jksJ d S )Ni  r   i?B )r'   r(   r*   r1   rs   rt   )r   rz   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sJ |jtjjks$J d S )Nr   r   )r]   timedelta64rz   r
  r   	NPY_FR_nsr   )r!   r  r#   r*  r5  r$   r$   r%   $test_sub_timedelta64_mismatched_reso  s
   z0TestNonNano.test_sub_timedelta64_mismatched_resoc                 C   s:   |j |ksJ |j j|jksJ |j jtjd ksJ d S Nr   )r   r
  r   r   r   r$   r$   r%   test_min  s   zTestNonNano.test_minc                 C   s>   |j |ksJ |j j|jksJ |j jttjj ksJ d S 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J |j|jksJ d S r<  )r   r	  r
  ry   r   r$   r$   r%   r{     s   zTestNonNano.test_resolutionc                 C   s8   t ddd}|t dksJ | tddksJ d S )NldW
1 rw   r   z
0300-01-01z0300-01-01T00:00:00)r   r   r]   r   )r!   r?   r$   r$   r%   test_out_of_ns_bounds  s   z!TestNonNano.test_out_of_ns_boundsN)+r|   r}   r~   rC   Zfixturer  r  r#   r  r  r  r  r  r  r  r  r  r"  r   Zxfailr$  r&  r'  r   r+  r-  r.  r/  r   r   r   r]   r9  r0  r2  r6  r7  r8  r;  r=  r>  r{   r?  r$   r$   r$   r%   r    sP    





!

0.r  c                   C   s   t jt tjd ksJ t jjtjjksJ t jt t	
t	jjks$J t jjtjjks.J t jtdks7J t jjtjjksAJ d S r<  )r   r   r   r   r
  r   r:  r   r   r]   r   r   ry   r   r$   r$   r$   r%   'test_timestamp_class_min_max_resolution  s   r@  c                   @   s,   e Zd Zdd Zdd Zdd Zdd Zd	S )

TestAsUnitc                 C   s@  t dd}|jdksJ |d|u sJ |d}|j|jd ks&J |jtjjks/J |d}|j|jks<J |j|jksDJ |d}|j|jd ksSJ |jtjjks\J |d}|j|jksiJ |j|jksqJ |d}|j|jd ksJ |jtj	jksJ |d}|j|jksJ |j|jksJ d S )	Nz
1970-01-01r   rs   r   rv   @B rw   i ʚ;)
r   rz   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   s   d}t |tjjd }d}tjt|d |d W d    n1 s$w   Y  |d}|j	|d ks7J |j
tjjks@J d S )Nl     &oz=Cannot cast 2262-04-12 00:00:00 to unit='ns' without overflowrA   r   rv   r   )r   r	  r   r  r   rC   rD   r   rz   r   r
  r  )r!   rs   r#   rF   r*  r$   r$   r%   test_as_unit_overflows"  s   
z!TestAsUnit.test_as_unit_overflowsc                 C   s   t d}|d}t d}||ksJ |jtjjksJ |jdks#J tjt	dd |jddd W d    d S 1 s=w   Y  d S )	Ni` rv   rB  r   zCannot losslessly convert unitsrA   F)Zround_ok)
r   rz   r
  r   r  r   r   rC   rD   r   )r!   r#   r*  r>   r$   r$   r%   test_as_unit_rounding/  s   
"z TestAsUnit.test_as_unit_roundingc                 C   s  t dd}|jdksJ |jdksJ |jdksJ |j|j  kr;|j  kr;|j  kr;|j	  kr;dks>J  J |d}|j
dksJJ |jdksQJ |jdksXJ |jdks_J |j|j  kr~|j  kr~|j  kr~|j	  kr~dksJ  J d S )	Nz
1970-01-02rv   i  r   r3   r   rw   r  )r   rz   r'   r(   r*   r,   r.   r0   r1   r2   r   )r!   r#   r*  r$   r$   r%   test_as_unit_non_nano<  s*   D
z TestAsUnit.test_as_unit_non_nanoN)r|   r}   r~   rC  rD  rE  rF  r$   r$   r$   r%   rA    s
    rA  c                  C   sN   t d  td} W d    n1 sw   Y  tddd}| |ks%J d S )Nz
13-01-2000rl   r      )rT   r   r   )r?   r>   r$   r$   r%   test_delimited_dateS  s
   
rH  c                  C   s.   t ddd} |  }td}||ksJ d S )Nr   r   r9   )	rl   r   r   r   r   r   r   r   r   )r   r   r   struct_time)r#   r?   r>   r$   r$   r%   test_utctimetuple[  s   
rJ  c                  C   sJ   t d} d}tjt|d | d W d    d S 1 sw   Y  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.$rA   z%Y)r   rC   rD   NotImplementedErrorstrftime)r#   rF   r$   r$   r%   test_negative_datesc  s   "rM  ):__doc__rW   r   r   r   rU   r   r[   Zdateutil.tzr   r   numpyr]   rC   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_testingrT   Zpandas.tseriesr   Zpandas.tseries.frequenciesr   r   r   r   r   r   r   r   r   r   r  r@  rA  rH  rJ  rM  r$   r$   r$   r%   <module>   sV     8 a=h
	  fP