U
    sVc                  	   @   s  d 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	Z
ddlZddlZddlmZ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  mZ dd	l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'G dd dZ(G dd dZ)G dd dZ*G dd deZ+ej,-de+dddeddfedde+dddfgdd Z.G dd dZ/dd  Z0G d!d" d"Z1dS )#z test the scalar Timestamp     N)datetime	timedelta)tzutc)timezoneutc)NpyDatetimeUnit)dateutil_gettzget_timezonemaybe_get_tz
tz_compare)OutOfBoundsDatetime)NaT	Timedelta	Timestamp)offsetsc                   @   s  e Zd Zdd Zejdejd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/d0d1gejd!d"d#gd2d3 Zejd4ed5ed5d6d7gejd8d"ge p\g  d9d: Zd;d< Zd=d> Zd?d@ Zd"S )ATestTimestampPropertiesc                 C   s   d}t jt|d tddd}tddd}W 5 Q R X d}t jt|d |j W 5 Q R X dD ]b}d	D ]X}d
| d| }t jt|d t|| W 5 Q R X t d  t|| W 5 Q R X qfq^d S )Nz.The 'freq' argument in Timestamp is deprecatedmatchz
2021-06-01DfreqBTimestamp.freq is deprecated)monthquarteryear)startendis__)tmassert_produces_warningFutureWarningr   r   getattr)selfmsgtsts2ZperZsideattr r)   P/tmp/pip-unpacked-wheel-xj8nt62q/pandas/tests/scalar/timestamp/test_timestamp.pytest_freq_deprecation*   s    z-TestTimestampProperties.test_freq_deprecationz(ignore:The 'freq' argument:FutureWarningz1ignore:Timestamp.freq is deprecated:FutureWarningc                 C   sh  t ddd}t d}|jdks"t|jdks0t|jr:t|j|rJt|j|tdd sdt|jrnt|j|r~t|j|tdd st|jst|jstt ddd}t d}|jdkst|jdkst|jrt|j|rt|j|tdd st|j	rt|j	|r0t|j	|tdd sLt|jsXt|j	sdtd S )	Nz
2017-10-01r   r         daysz
2017-09-30   )
r   	dayofweekAssertionErrorday_of_weekis_month_startr   r   is_quarter_startis_month_endis_quarter_end)r$   r&   controlr)   r)   r*   test_properties_businessC   s0    




z0TestTimestampProperties.test_properties_businesszattr, expectedr   i  r      day   hour   minute;   secondr   microsecond
nanosecondr1      r3   r      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rG   )r   r#   
isinstanceintr2   )r$   r(   expectedrG   r&   resultr)   r)   r*   test_fieldsb   s    
z#TestTimestampProperties.test_fieldsc              	   C   s4   t d|d}d}tjt|d |j W 5 Q R X d S )NrI   rJ   z1'Timestamp' object has no attribute 'millisecond'r   )r   pytestraisesAttributeErrorZmillisecond)r$   rG   r&   r%   r)   r)   r*   test_millisecond_raises   s    z/TestTimestampProperties.test_millisecond_raisesr   r4   r5   is_year_startc                 C   s   t d|d}t||std S )Nz2014-01-01 00:00:00rJ   r   r#   r2   )r$   r   rG   r&   r)   r)   r*   test_is_start   s    z%TestTimestampProperties.test_is_startr   r6   is_year_endr7   c                 C   s   t d|d}t||std S )Nz2014-12-31 23:59:59rJ   rU   )r$   r   rG   r&   r)   r)   r*   test_is_end   s    z#TestTimestampProperties.test_is_enddataz2017-08-28 23:00:00ESTrJ   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)r    Z
set_localelocaleLC_TIMEcalendarday_name
capitalize
month_nameunicodedata	normalizer2   r   r   npisnan)r$   rY   r[   Zexpected_dayZexpected_monthZ
result_dayZresult_monthZnan_tsr)   r)   r*   
test_names   s"    

z"TestTimestampProperties.test_namesc                 C   sp   |}t d|d}|jstt|jts*tt d|d}|jr@tt d|d}|jsVtt d|d}|jrltd S )Nz2000-01-01 00:00:00rJ   z1999-01-01 00:00:00z2004-01-01 00:00:002100-01-01 00:00:00)r   Zis_leap_yearr2   rK   bool)r$   tz_naive_fixturerG   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   rF   ).0argsr)   r)   r*   
<listcomp>   s   z=TestTimestampProperties.test_woy_boundary.<locals>.<listcomp>))  r-   r-   )ru   r-   rD   )  r-   r-   )rv   r-   rD   )r   r   rF   r2   re   arrayall)r$   drN   rM   r)   r)   r*   test_woy_boundary   s4    




z)TestTimestampProperties.test_woy_boundaryc                 C   s4   t d}|jtddkstt jtddks0td S )Nrh   r-   )Znanoseconds)r   
resolutionr   r2   )r$   rk   r)   r)   r*   test_resolution   s    z'TestTimestampProperties.test_resolution)__name__
__module____qualname__r+   rP   markfilterwarningsr9   parametrizerO   rS   rV   rX   r   r    Zget_localesrg   rl   rz   r|   r)   r)   r)   r*   r   )   s`   

	
  #r   c                   @   sX  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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d.d/ Zd0d1 Ze	j
d2d3d4d5d6d7gd8d9d:d6d;ggd<d= Zd>d? Zd@dA ZdBS )CTestTimestampc                 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	   rJ   rH   z2014-01-31 19:00   r0   )r   tz_localizer=   r2   
tz_convertr   NanorC   )r$   Ztstrr&   localconvr)   r)   r*   test_tz   s    



zTestTimestamp.test_tzc                 C   s   t tdjtkstd S )Nz2014-11-02 01:00Z)r	   r   tzinfor   r2   )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)re   randomseedr   minvaluemaxasm8view
datetime64r2   )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  }d}t	j
t|d t |}W 5 Q R X ||t| |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   )rL   r   r   r2   xyr)   r)   r*   compare  s    z2TestTimestamp.test_class_ops_pytz.<locals>.compareUTC!timezone-aware Timestamp with UTCr   rJ   
   minutes)r   nowr   r   utcnowtodayr_   timegmutctimetupler    r!   r"   utcfromtimestampfromtimestampr   r   timecombiner$   r   current_timer%   Zts_utcZdate_componentZtime_componentr)   r)   r*   test_class_ops_pytz  s>     




z!TestTimestamp.test_class_ops_pytzc              	   C   s   dd }|t  t  |t dtt  |t  t  |t  t  tt  }d}t	j
t|d t |}W 5 Q R X ||t| |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   )rL   re   roundr   r   r2   r   r)   r)   r*   r   B  s    z6TestTimestamp.test_class_ops_dateutil.<locals>.comparer   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*   test_class_ops_dateutilA  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     ru   r-   r   l     *g	# i  r      iH7    )re   int64r   r   r   r2   r   rB   rC   iinfor   r;   )r$   valstampr)   r)   r*   test_basics_nanose  s    zTestTimestamp.test_basics_nanoszvalue, check_kwargsl    Bm@ig jr
Cunitusg  `kBmsg  6Asi*  r   r   )r   hgb6Ai  i  )r   r   r   g  6Ai  )r   r   g `kBr   gyr
Cg W`kBg(jr
Cr0   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   ru   r-   r   r   )
r   r   r2   r   r;   r=   r?   rA   rB   rC   )r   r   r   r   r   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_unitv  s    
zTestTimestamp.test_unitc                 C   s6  t d}t |jtdj }|t | dks2t|jdks@tt |jtdj }|t | dksjt|jdksxt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s2td S )Nz20140101 00:00:00Z5msz.005000r   Z5usz.000005r0   Z5nsz
.000000005r   z6ms 5usz.006005iu  z	200ms 5usz.200005iE )r   r   r   r2   rB   rC   )r$   baserN   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-   r0   )r   r   r2   )r$   ry   r   r)   r)   r*   test_hash_equivalent  s    z"TestTimestamp.test_hash_equivalentz timezone, year, month, day, hourzAmerica/Chicagorm      rq   r-   zAmerica/Santiagoi  rE   r>   c           	   	   C   sL   t |}t||||dd|d}t||||dd|d}t|t|ksHtd S )Nr   )r   r   r;   r=   r?   foldr   r-   )gettzr   hashr2   )	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_foldc              	   C   s   t jtdd* tddd}|j|dj|jks4tW 5 Q R X t jtdd, tddd	d
}|jddj|jksttW 5 Q R X d S )Nr   r   2019-01-01 10:00Hr   rJ   z2019-01-02 12:00r   T)rG   r   )r    r!   r"   r   r   r   r2   r   )r$   rj   t1t2r)   r)   r*   test_tz_conversion_freq  s    "z%TestTimestamp.test_tz_conversion_freqc              	   C   sd   t jtdd tddd}W 5 Q R X t|}t d  t|}W 5 Q R X |j|jks`td S )Nr   r   r   r   r   )	r    r!   r"   r   pickledumpsloadsZ_freqr2   )r$   r&   outresr)   r)   r*   test_pickle_freq_no_warning  s    
z)TestTimestamp.test_pickle_freq_no_warningN)r}   r~   r   r   r   r   r   r   r   rP   r   r   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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   rJ   l     lur   rH   l     c4z20130501T071545.123456789)r   r   r2   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-01r0   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   r2   r   rC   )r$   rM   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_dater2   r$   rr)   r)   r*   test_compare_17002  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_20006  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_hour01>  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_hour13B  s    z-TestTimestampToJulianDate.test_compare_hour13N)r}   r~   r   r   r   r   r   r   r)   r)   r)   r*   r   1  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}| }tddd}||ks(tt|t|ks<t| }t|jd}||ks^tt|t|ksrt|j	|j	kstd S )Nz
2000-01-01ru   r-   r   )
r   to_pydatetimer   r2   typeto_datetime64re   r   r   dtype)r$   r&   rN   rM   r)   r)   r*   test_conversionH  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/Chicagorm   r   rq   r-   r   )r   r   r;   r=   r?   r   rG   )r   r   r   r2   )r$   Ztzstrr&   rk   r)   r)   r*   test_to_pydatetime_foldW  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   r    r!   UserWarningr   r   r2   r$   r&   rM   rN   r)   r)   r*   test_to_pydatetime_nonzero_nano^  s
    z7TestTimestampConversion.test_to_pydatetime_nonzero_nanoc                 C   s4   t ddd}| }||ks t|j|jks0td S N20090415rH   rJ   r   r   r2   r   r$   r   Zdtvalr)   r)   r*   test_timestamp_to_datetimeg  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/EasternrJ   r   r   r)   r)   r*   #test_timestamp_to_datetime_dateutilm  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   pytzr   r   r2   r   r   r)   r)   r*   (test_timestamp_to_datetime_explicit_pytzs  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   r2   r   r   r)   r)   r*   ,test_timestamp_to_datetime_explicit_dateutily  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 |jd t jjd ksRtt j	jdkrbd nt}t| t j	 }W 5 Q R X t
dd}|| t j	kstt || jd t j	jd kstd S )Nr   r   r-   )microseconds)r   r   rC   r   r    r!   r   r   r2   r   r   )r$   Zexp_warningZpydt_maxZpydt_minZtdusr)   r)   r*   test_to_datetime_bijective  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:18rH   rJ   r   )r   r    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 ignoredr   zM8[s]T)copy)	r   r   r   r   to_numpyr2   rP   rQ   
ValueError)r$   r&   r%   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   G  s   	
r   c                   @   s   e Zd ZdS )SubDatetimeN)r}   r~   r   r)   r)   r)   r*   r    s   r  zlh,rhru   r-   )hoursc                 C   s&   | | }t dddd}||ks"td S )Nru   r-   )r  r2   )ZlhZrhrN   rM   r)   r)   r*   test_dt_subclass_add_timedelta  s    r  c                	   @   sT  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!ejjd7d d8d9 Z"d:d; Z#d<d= Z$d>d? Z%d@dA Z&dBdC Z'dDS )ETestNonNanor   r   r   )paramsc                 C   s   |j S N)param)r$   requestr)   r)   r*   reso  s    zTestNonNano.resoc                 C   s   t d|S )Nz
2016-01-01)re   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   _reso)r$   r&   tz_aware_fixturerG   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   r   r   r   )r   r   r2   r  r   NPY_FR_s	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   r2   r   r;   r=   r?   rA   rB   rC   r   weekday
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t }|| d}t	j
t|dB |j slt|jsvt|jst|jrt|jrt|jrtW 5 Q R X d S )Nr   r   )rT   r2   r5   r4   rW   r6   r   ZBDayZ	_set_freqr    r!   r"   )r$   r&   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   r`   r2   r  r)   r)   r*   test_day_name  s    zTestNonNano.test_day_namec                 C   s    t |}| | kstd S r
  )r   rb   r2   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   rK   r2   r   rG   )r$   r&   rG   rN   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   strr2   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   r2   r  r)   r)   r*   test_comparison  s2    zTestNonNano.test_comparisonc                 C   sv   t dd}t|}t|d }||k s.t|j|jks>t||ksJt|j|jk sZt||krft||ksrtd S )Nl     K r   Q )re   r   r   r  r2   r   r$   r  r&   otherr)   r)   r*   test_cmp_cross_reso6  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-   )re   r   r   r  r   r2   r%  r)   r)   r*   !test_cmp_cross_reso_reversed_dt64E  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  r    Zround_trip_pickler2   )r$   r&   r  rG   rtr)   r)   r*   test_pickleM  s    
zTestNonNano.test_picklec                 C   s4   t |}| }|j|jks t|| ks0td S r
  )r   rd   r  r2   )r$   r  r&   r  rN   r)   r)   r*   test_normalizeU  s    zTestNonNano.test_normalizec                 C   s&   |j }||kst|j|jks"td S r
  )r   r2   r   )r$   r  r&   r*  r)   r)   r*   r   [  s    zTestNonNano.test_asm8c                 C   s(   |  }||kst|j|jks$td S r
  )r  r2   r   r$   r  r&   r   r)   r)   r*   test_to_numpy`  s    zTestNonNano.test_to_numpyc                 C   s(   |  }||kst|j|jks$td S r
  )r   r2   r   r-  r)   r)   r*   test_to_datetime64e  s    zTestNonNano.test_to_datetime64c                 C   s    t |}| | kstd S r
  )r   	timestampr2   r  r)   r)   r*   test_timestampj  s    zTestNonNano.test_timestampc                 C   s$   t |}|d|dks td S )Nr   )r   r   r2   r  r)   r)   r*   test_to_periodn  s    zTestNonNano.test_to_periodr  rE   r.   r   c                 C   s   || }t || }t|t s"t|j|jks2t||ks>t|| }t || }t|t s`t|j|jkspt||ks|t|| }|t | }t|t st|j|jkst||kstd S r
  )r   rK   r2   r  )r$   r  r&   r  rN   rM   r)   r)   r*   "test_addsub_timedeltalike_non_nanor  s    z.TestNonNano.test_addsub_timedeltalike_non_nanoz,tz_localize not yet implemented for non-nanoc                 C   s   t d}|| }t|ts t|j|jks0t|j|jks@t|jdksNt|jdks\tt	|j
|j
snt|| }t|tst|j|jkst|j|jd kst|jdkst|jdkstt	|j
|j
std S )Nr-   r<   r:   )r   Z	YearBeginrK   r   r2   r  r   r;   r   r   rG   )r$   r  offrN   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d}|j|jk r"|t	d|j }tjt|d ||  W 5 Q R X tjt|d ||  W 5 Q R X nV|t	d|j }tjt|d ||  W 5 Q R X tjt|d ||  W 5 Q R X d S )Nr   r   r   r   z1Timestamp subtraction with mismatched resolutionsr-   r   )r   r  r   r  r  r  _as_unitr2   rK   r   r   r  rP   rQ   r  	r$   r  r&   r   r&  rN   r%   Zother2r'   r)   r)   r*   %test_sub_datetimelike_mismatched_reso  s@       
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d}|j|jk r"|td|j }tjt|d ||  W 5 Q R X tjt|d ||  W 5 Q R X nV|td|j }tjt|d ||  W 5 Q R X tjt|d ||  W 5 Q R X d}tjt|d |tdd	  W 5 Q R X d S )
Nr   r   r   r   z.Timestamp addition with mismatched resolutionsr-   r   zDAddition between Timestamp and Timedelta with mismatched resolutionsr   )r   r  r   r  r  r  r   r6  r2   rK   r   r   r  rP   rQ   r  re   timedelta64r7  r)   r)   r*   &test_sub_timedeltalike_mismatched_reso  sF       z2TestNonNano.test_sub_timedeltalike_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   r2   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   r2   r  r   re   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  r{   r2   r   r)   r)   r*   r|      s    zTestNonNano.test_resolutionN)(r}   r~   r   rP   Zfixturer  r  r&   r  r  r  r  r  r  r   r"  r#  r'  r   Zxfailr)  r+  r,  r   r.  r/  r1  r2  r   r   r   re   r9  r3  r5  r8  r:  r<  r=  r|   r)   r)   r)   r*   r    sL   





!
 

(-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   r2   r  r   Z	NPY_FR_nsr   re   r   r   r{   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   s0  t d}|d|kst|d}|j|jd ks8t|jtjjksJt|d}|j|jksdt|j|jkstt|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st|jtjjkst|d}|j|jkst|j|jks,td S )	Nz
1970-01-01r   r   r   r   @B r   i ʚ;)	r   r6  r2   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 overflowr   r   r   r   )r   r  r   r  r   rP   rQ   r   r6  r2   r  r  )r$   r   r&   r%   r   r)   r)   r*   test_as_unit_overflows2  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` r   r@  r-   zCannot losslessly convert unitsr   F)Zround_ok)
r   r6  r2   r  r   r  r   rP   rQ   r  )r$   r&   r   rM   r)   r)   r*   test_as_unit_rounding?  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-02r   i  r-   rD   r   r   r$  )r   r6  r   r2   r   r;   r=   r?   rA   rB   rC   r   )r$   r&   r   r)   r)   r*   test_as_unit_non_nanoL  s*    B
z TestAsUnit.test_as_unit_non_nanoN)r}   r~   r   rA  rB  rC  rD  r)   r)   r)   r*   r?    s   r?  )2__doc__r_   r   r   r]   r   rc   Zdateutil.tzr   Znumpyre   rP   r   r   r   Zpandas._libs.tslibs.dtypesr   Zpandas._libs.tslibs.timezonesr   r   r	   r
   r   Zpandas.errorsr   Zpandas.util._test_decoratorsutilZ_test_decoratorsr  Zpandasr   r   r   Zpandas._testingZ_testingr    Zpandas.tseriesr   r   r   r   r   r   r  r   r   r  r  r>  r?  r)   r)   r)   r*   <module>   sJ    Q |=b
	  L