U
    #c                    @   s   d dl Z d dl Zd dlZd dlZd dlmZmZmZmZm	Z	m
Z
mZmZ d dlmZ zd dlmZ dZW n ek
r   dZY nX ze W n ek
r   eZY nX G dd dZG d	d
 d
ZdS )    N)IS_WASMassert_assert_equalassert_raisesassert_warnssuppress_warningsassert_raises_regexassert_array_equal)pickletimezoneTFc                   @   s	  e Zd Zdd Zdd Zdd Zejddd	d
ddddgdd Z	dd Z
ejdddddgdd Zejdddddgdd Zejdddddgddddgfdd dd!gd!d ddgfdd"ddgd"dddgfd#d$dgd%dd&ggd$d#dgd&d%dggfgejd'd(d)d*d+gd,d- Zd.d/ Zd0d1 Zd2d3 Zejdd4d5d6d7d8d9dd	d
ddddd:gd;d< Zd=d> Zd?d@ ZdAdB ZdCdD ZdEdF ZdGdH ZdIdJ ZdKdL ZdMdN ZdOdP ZdQdR ZejdSdTdUgdVdW ZejdXdYgdZd[gd\d] ZejdSdTdUgejd^d_d`gdadb Zdcdd Z dedf Z!dgdh Z"didj Z#dkdl Z$dmdn Z%dodp Z&dqdr Z'dsdt Z(dudv Z)dwdx Z*dydz Z+d{d| Z,d}d~ Z-ejde./dde./dddfe./dde./ddd"fe./dde./ddd"fe./dd9e./dddfe./de./ddfe./dd4e./dd5dfe.j0dddgdde.j0dgdde.j0dddge.j1dfgdd Z2ejj3e4ddejde./dd
e./dd
fe./de./dd
fe./e.5e.j1j6e./dfgdd Z7ejdddgdd Z8ejde./dd4e./ddfe./dd5e./dd7fgdd Z9ejde./dde./ddfe./dde./ddfe./dde./ddfe./dd9e./ddfe./de./dfe./dd4e./dd5fe.j0dddgdde.j0dgddfgdd Z:ejj3e4ddejde./dd
e./dd
fe./de./dd
fe./e.5e.j1j6e./dfgdd Z;dd Z<dd Z=dd Z>dd Z?dd Z@dd ZAdd ZBdd ZCdd ZDdd ZEdd ZFdd ZGdd ZHdd ZIdd ZJdd ZKdd ZLddĄ ZMejj3eN ddddǄ ZOddɄ ZPdd˄ ZQdd̈́ ZRejde./dde./dde./ddfe./dde./d"de./ddfe./dde./dde./ddfe./dde./dde./ddfe./dde./dde./ddfe./dd9e./dde./ddfe./dd
e./dde./ddfe./de./dde./dfe./dd4e./dd5e./dd5fg	ddׄ ZSejde./dd4e./ddfe./dd5e./dd7fgddل ZTejj3e4ddddۄ ZUejde./dd4dfde./dd7fgdd߄ ZVdd ZWdd ZXdd ZYdd ZZdd Z[dd Z\dd Z]dd Z^dd Z_dd Z`dd Zadd Zbdd Zcejdd4d5d6d7d8d9dd	d
ddddgejdddddgdd  Zddd Zedd Zfejdddgdd	 Zgejd
d4d5d6d7d8d9dd	d
ddddddgdd Zhejd
d4d5ejid6ejjjdddd7d8d9dd	d
ddddejidejjjdddgejdddgdd ZkdS (  TestDateTimec                 C   s2  dD ]L}t d| }t|t d| k t d| }t|t d| k qttt dd tt dt d tt d	t d
 tt dt dkpt dt dk tt dt dkpt dt dk tt dt dk tt dt d tt dt d tt dt dkpXt dt dk tt dt dkpt dt dk tt dt dk ttt jd ttt jd ttt jd ttt jd ttt jd ttt jd ttt jd ttt jd  ttt jd! ttt jd" d S )#N)YMWDhmsmsus   μsnspsfsasz	M8[750%s]zdatetime64[750%s]zm8[%s]ztimedelta64[%s]M8
datetime64z=M8z=M8[s]M8[s]z>M8z<M8z>M8[D]M8[D]<M8[D]z=m8m8z=m8[s]m8[s]z>m8z<m8z>m8[D]m8[D]z<m8[D]zM8[badunit]zm8[badunit]zM8[YY]zm8[YY]Zm4ZM7Zm7ZM16Zm16zM8[3000000000ps])npdtyper   r   strr   	TypeError)selfunitdt1dt2 r,   B/tmp/pip-unpacked-wheel-b2rbor69/numpy/core/tests/test_datetime.pytest_datetime_dtype_creation   sD    z)TestDateTime.test_datetime_dtype_creationc                 C   s  t tjdddd  t tjdddd  t tjdddd  t tjdddd  t tjdddd t tjdddd t tjdddd t tjdddd t tjdddd t tjdddd t tjd	ddd t tjd	ddd  t tjd
ddd  t tjd
ddd  t tjdddd  t tjdddd  t tjdddd  t tjdddd  t tjdddd t tjdddd t tjdddd t tjdddd t tjdddd  t tjdddd  t tjdddd t tjdddd t tjdddd  t tjdddd  t tjdddd t tjdddd t tjdddd t tjdddd  t tjdddd  t tjdddd t tjdddd t tjdddd t tjdddd t tjdddd t tjdddd t tjdddd  t tjdddd  t tjdddd  t tjdddd  d S )Nr!   r   	same_kindcastingsafei8i4Zu4u8Zf4Zb1M8[M]r   M8[Y]m8[M]r#   m8[Y]M8[h]m8[h]zM8[7h]zM8[3h]zM8[6h])r   r$   can_castr(   r,   r,   r-   test_datetime_casting_rulesE   sV    z(TestDateTime.test_datetime_casting_rulesc                 C   st   ddddddddd	d
dg}dddddddddddg}t ||D ]0\}}tj||ddsZttj||dds>tq>d S )Nz
M8[7000ms]z
M8[2000us]z
M8[1000ns]z
M8[5000ns]z
M8[2000ps]z
M8[9000fs]z
M8[1000as]zM8[2000000ps]zM8[1000000as]zM8[2000000000ps]zM8[1000000000as]zM8[7s]zM8[2ms]M8[us]zM8[5us]zM8[2ns]zM8[9ps]zM8[1fs]zM8[2us]zM8[1ps]zM8[1ns]r2   r0   )zipr$   r<   AssertionError)r(   Zsmaller_unitsZlarger_unitsZlarger_unitZsmaller_unitr,   r,   r-    test_datetime_prefix_conversions   s6    z-TestDateTime.test_datetime_prefix_conversionsr)   r   r   r   r   r   r   r   c              	   C   s0   t t tjdgd| dd W 5 Q R X d S )N   zM8[-1]r%   )r   r'   r$   arrayr(   r)   r,   r,   r-   test_prohibit_negative_datetime   s    
z,TestDateTime.test_prohibit_negative_datetimec                 C   sZ   t tdtdtd k t tdtddk t tddtdk d S )NNaT2000r   )r   r$   r   timedelta64r=   r,   r,   r-   test_compare_generic_nat   s
    
z%TestDateTime.test_compare_generic_natsize           c                 C   s4   t |}t t d|}tt j|dd| d S NrI   Z	mergesort)kind)r$   arangetiler   r   argsortr(   rM   expectedarrr,   r,   r-   #test_datetime_nat_argsort_stability   s    
z0TestDateTime.test_datetime_nat_argsort_stabilityc                 C   s4   t |}t t d|}tt j|dd| d S rR   )r$   rT   rU   rK   r   rV   rW   r,   r,   r-   $test_timedelta_nat_argsort_stability   s    
z1TestDateTime.test_timedelta_nat_argsort_stabilityzarr, expectedrI   rC      	   i=3   i$iir%   M8[ns]r?   m8[ns]zm8[us]c                 C   s2   t j||d}t j||d}|  t|| d S )NrE   )r$   rF   sortr   )r(   rY   rX   r%   r,   r,   r-    test_datetime_timedelta_sort_nat   s    z-TestDateTime.test_datetime_timedelta_sort_natc                 C   s  t tddtd t tddtdd t t td t ttdd t ttdd t ttdd t ttdd	 t td td t t jtd
 t tdjtd
 tttjd tdd}tjddd}t |jtd t |jtd t t|| t t|jtd t t|| t t|jtd t t|d| t t|djtd t t|d| t t|djtd t tdtt	
ddd t tddtt	
dddd t tdtt		ddddddd t tddtd t td dtd! t td"dtd# t tt	
dddd$td% t td&dtd t td'd(td  t td)d*td" d S )+Nz
1950-03-12r   z1950-03-12T13r   r   rI   znumpy.datetime64('NaT')z2011-02znumpy.datetime64('2011-02')r      z2000-03-18T16r   r:   rE   r   z
1945-03-25i  rN      z
2045-03-25i  z1980-01-25T14:36:22.5i  rC      $      i  z
1920-03-13z1920-03-13T00z1920-03z1920-03-01T00:00Z1920z1920-01-01T00:00:00r   z2045-03-25T00:00:00.000z1920-03-13T18z1920-03-13T18:33:12r   z1920-03-13T18:33:12.5r   )r   r$   r   r&   reprr%   r   
ValueErrorrF   datetimedater(   abr,   r,   r-   !test_datetime_scalar_construction   s    


   z.TestDateTime.test_datetime_scalar_constructionc              	   C   sX   t t ttdtd W 5 Q R X t t ttdtd W 5 Q R X d S )Nz2000-01-01T00Zz2000-01-01T00z2000-01-01T00-08z2000-01-01T08)r   DeprecationWarningr   r$   r   r=   r,   r,   r-   *test_datetime_scalar_construction_timezone1  s    



z7TestDateTime.test_datetime_scalar_construction_timezonec                 C   sp  t dd}t |g}t|jt d tddd}t |g}t|jt d tdddddd	}t |g}t|jt d t d
}t dd}tddd}tdddddd	}t ||g}t|jt d t ||g}t|jt d t ||g}t|jt d t ||gd}t|jt d t ||gd}t|jt d d S )N
1970-01-01r   r6   i  rC   O      (   Tr   r   r?   )	r$   r   rF   r   r%   rk   rl   Zbool_astype)r(   dtrY   ro   dmdr,   r,   r-   test_datetime_array_find_type:  s.    
z*TestDateTime.test_datetime_array_find_typer   r   r   r   r   r   genericc                 C   sJ   |dkr*t ttd|td| nt ttdtd d S )Nr}   {   )r   r$   rK   int64rG   r,   r,   r-   "test_timedelta_np_int_construction_  s    
z/TestDateTime.test_timedelta_np_int_constructionc                 C   s  t tddtdd t tddtdd t t td	 t td td
 t ttd
d
 t ttd
d t ttddd t ttddd t ttdd t tdjtd tdd}tjddd}t |jtd t |jtd t t|| t t|jtd t t|| t t|jtd t t|d| t t|djtd t t|d| t t|djtd t tddttjdd t tddttjdd t tddttjdd t tddttjdd t tdd ttjdd! t td"dttjd"d# t td$dttjd$d% t td&dttjd&d' tdd}t	t
tj|d( t	t
tj|d) td*d(}t	t
tj|d t	t
tj|d tdd)}t	t
tj|d t	t
tj|d tjdd}t	t
tj|d( t	t
tj|d) tjdd'}t	t
tj|d( t	t
tj|d) t }t	t
tj|d( t	t
tj|d) d S )+N   r   rC   r   x   r   r\   r   r   rI   znumpy.timedelta64('NaT')rN   z	3 secondsznumpy.timedelta64(-3,'s')ru   znumpy.timedelta64(12)r!   r   r;   rE   r"      )daysiesecondsl@D	 r   )microsecondsl   @D	 i r   )Zmilliseconds
   )minutesi  )hours   )weeksr   r      )r   r$   rK   r&   ri   r%   rF   rk   	timedeltar   r'   rm   r,   r,   r-   "test_timedelta_scalar_constructionn  s    

z/TestDateTime.test_timedelta_scalar_constructionc                 C   sL   t dt dt dg}tjdddgdd}tj|dd}t|| d S )Nr   rv      ztimedelta64[D]rE   )rk   r   r$   rF   r   )r(   inputsrX   actualr,   r,   r-   &test_timedelta_object_array_conversion  s    z3TestDateTime.test_timedelta_object_array_conversionc                 C   sB   t tjdd}|t j}t tjddt j}t|| d S )N   r   )r$   rF   rk   r   rx   rK   r   )r(   testr   rX   r,   r,   r-   ,test_timedelta_0_dim_object_array_conversion  s    z9TestDateTime.test_timedelta_0_dim_object_array_conversionc                 C   s   t ddtd d S )NrI   z{0}nat)r   formatr$   rK   r=   r,   r,   r-   test_timedelta_nat_format  s    z&TestDateTime.test_timedelta_nat_formatc                 C   s  t tdjtd t tdjtd t tdjtd t tdjtd t td	jtd
 t tdjtd t tdjtd t tdjtd t tdjtd t tdjtd t tdjtd t tdjtd t tdjtd t tdjtd t tdjtd t tdjtd t tdjtd t tdjtd t tdjtd t tdjtd t td jtd t td!jtd" t td#jtd" t td$jtd" t ttd%d&d'jtd t ttd%d&d'd(d)d*jtd t td+jtd t td,jtd d S )-N2010r7   z2010-03r6   z
2010-03-12r   z2010-03-12T17r:   z2010-03-12T17:15zM8[m]z2010-03-12T17:15:08r   z2010-03-12T17:15:08.1M8[ms]z2010-03-12T17:15:08.12z2010-03-12T17:15:08.123z2010-03-12T17:15:08.1234r?   z2010-03-12T17:15:08.12345z2010-03-12T17:15:08.123456z1970-01-01T00:00:02.1234567r`   z1970-01-01T00:00:02.12345678z1970-01-01T00:00:02.123456789z1970-01-01T00:00:02.1234567890M8[ps]z1970-01-01T00:00:02.12345678901z 1970-01-01T00:00:02.123456789012z!1970-01-01T00:00:02.1234567890123zM8[fs]z"1970-01-01T00:00:02.12345678901234z#1970-01-01T00:00:02.123456789012345z$1970-01-01T00:00:02.1234567890123456M8[as]z%1970-01-01T00:00:02.12345678901234567z&1970-01-01T00:00:02.123456789012345678i           -      todaynow)r   r$   r   r%   rk   rl   r=   r,   r,   r-   (test_timedelta_scalar_construction_units  s    z5TestDateTime.test_timedelta_scalar_construction_unitsc           
      C   s  t jddd}t dd}t|dt jddd t|dt jddd t|dt jddd t|dt jddd t|d	t jdd	d tt |d
t dd
 tt |dt dd tt |dt dd tt |dt dd tt |dt dd tt |d
t dd
 tt |dt dd tt |dt dd tt |dt dd tt |dt dd t t jgd }|d}|d}|d}|d}|d}t t dgd }	t|d|	 t|d|	 t|d|	 t|d|	 t|d|	 t|d|	 t t dgd }	t|d|	 t|d|	 t|d|	 t|d|	 t|d|	 t|d|	 d S )NrI   r   rE   [D]r   r   r6   r7   M8[W]z[s]z[ms]z[M]z[Y]z[W]   fgr   FGr`   ztimedelta64[ns])r$   rF   r   r   rx   nanrK   )
r(   rn   ro   r   ZfnanZlnanZcnanZcfnanZclnanr   r,   r,   r-   test_datetime_nat_casting+  sJ    




z&TestDateTime.test_datetime_nat_castingc                 C   s@  t tjddddd t tjddddd t tjddddd	 t tjd
dddd t tjddddd t tjddddd t tjddddd t tjddddd t tjddddd t tjddddd t tjddddd t tjddddd t tjddddd t tjddddd t tjd dddd! t tjd"dddd# t tjd$dddd% t tjd&dddd' t tjd(dddd) t tjd*dddd+ t tjd,dddd- t tjd.dddd/ d S )0N1599r   rE   r3   g     1600g      1601g    s 1900i!1901iZ1967iZ1968i%1969i1970r   Z1971im  Z1972i  Z1973iH  Z1974i  rJ   i*  2001i;,  Z2400i~e Z2401if 
1600-02-29iW
1600-03-01iXz
2000-02-29i+  z
2000-03-01i	+  
2001-03-22i,  r   r$   rF   rx   r=   r,   r,   r-   test_days_creation\  sd    zTestDateTime.test_days_creationc                 C   sl  t tjddddtddd t tjddddtddd t tjd	dddtd
dd t tjddddtddd t tjddddtddd t tjddddtddd t tjddddtddd t tjddddtddd t tjddddtddd t tjddddtddd d S )Nr   r   rE   rt   i?  rC   r   i@  r   iA  r   il  r   im  rJ     r   i  r   r\      r   rN   r   rh   )r   r$   rF   rx   rk   rl   r=   r,   r,   r-   test_days_to_pydate  s<    z TestDateTime.test_days_to_pydatec                 C   sf   t tdtdk  t tdtdk t tdtdk t tdtdk d S )Nr?   r   M8[2D]r   r   r$   r%   r=   r,   r,   r-   test_dtype_comparison  s    z"TestDateTime.test_dtype_comparisonc                 C   s   t jdtdddgdd}t|d |d  t jd	td
ddgdd}t|d |d  t jdtdddgdd}t|d |d  t jdtj gdd}t|d |d  tt jtdddddt t d d S )Nz
1960-03-12i  rN   ru   r   rE   r   rC   z
1999-12-31i  r   
2000-01-01r   r   r   z1960-03-12T00:00:00)r$   rF   rk   rl   r   r   r   r(   rn   r,   r,   r-   test_pydatetime_creation  s    z%TestDateTime.test_pydatetime_creationc                 C   sN  dddg}t j|dd}t j|dd}t j|dd}t||d t|j|dj t |}||d< t|| t||d	 t |}||d< t|| t||d t|j|dj t |}||d< t|| t||d t |}||d< t|| t||t jd
f t j|jt jd
fd}||d< t|| d S )N
2011-03-16
1920-01-01
2013-05-19SrE   Ur   .ZS0   )	r$   rF   r   rx   r%   
empty_likeZstring_emptyshape)r(   rn   Zstr_aZuni_aZdt_aZdt_bZstr_bZuni_br,   r,   r-   test_datetime_string_conversion  s4    








z,TestDateTime.test_datetime_string_conversion
time_dtyper#   r7   c                 C   sR   t jddg|d}||j }t|| |t j }t||t j d S NZ2017rI   rE   )r$   rF   rx   r%   newbyteorderr	   viewr   )r(   r   timestimes_swappedZ	unswappedr,   r,   r-   test_time_byteswapping  s
    
z#TestDateTime.test_time_byteswappingtime1time2)r   r   )r"   ra   c                 C   s   t |}t |}t jddg|d}||}|| |}t|| || }t|| || | }t|| d S r   )r$   r%   rF   rx   r   r	   )r(   r   r   Zdtype1Zdtype2r   rX   resr,   r,   r-   test_time_byteswapped_cast  s    




z'TestDateTime.test_time_byteswapped_cast	str_dtyper   r   c           	      C   s   t jddg|d}t jddg|d}||}||j }||}t|| ||j }t|| ||j }t|| ||j }||}t|| ||j }t|| ||j }t|| d S r   )r$   rF   rx   r%   r   r	   )	r(   r   r   r   Zfrom_stringsZ
to_stringsr   r   Zfrom_strings_swappedr,   r,   r-   $test_datetime_conversions_byteorders  s&    







z1TestDateTime.test_datetime_conversions_byteordersc                 C   sz   t jdddgdd}tt|d t jddgdd}tt j|d	d
dd idd t dddgd}tt|d d S )Nr   r   r   r   rE   z(['2011-03-16' '1920-01-01' '2013-05-19']z2011-03-16T13:55z1920-01-01T03:12z, rk   c                 S   s   dt j| dd S )Nz'%s'UTCr   )r$   datetime_as_string)xr,   r,   r-   <lambda>  s    z6TestDateTime.test_datetime_array_str.<locals>.<lambda>)	separator	formatterz*['2011-03-16T13:55Z', '1920-01-01T03:12Z']r   rI   Z2030z['2010'  'NaT' '2030'])r$   rF   r   r&   Zarray2stringrx   r   r,   r,   r-   test_datetime_array_str  s    

z$TestDateTime.test_datetime_array_strc                 C   s   t jdddgdd}tt|d t jddgdd}tt|d t jdddgdd}tt|d	 t jddd
gdd}tt|d t jddd
gdd}tt|d t jddd
gdd}tt|d d S )Nr   d   r   rE   z[ -1   0 100]rI   z['NaT' 'NaT']z[   -1 'NaT'     0]i z[     -1   'NaT' 1234567]z>mz<m)r$   rF   r   r&   r   r,   r,   r-   test_timedelta_array_str  s    z%TestDateTime.test_timedelta_array_strc                 C   s   t dtjd D ]}td}tttj||d| td}tttj||d| td}tttj||d| |td }tttj||d| qd}tt|td	 d
}tt|td d}tt|td d S )Nr\   rC   zM8[7D])protocolr   z2016-01-01T00:00:00.000000000z2015-01-01T00:00:00.000000000sh   cnumpy
dtype
p0
(S'M8'
p1
I0
I1
tp2
Rp3
(I4
S'<'
p4
NNNI-1
I-1
I0
((dp5
(S'D'
p6
I7
I1
I1
tp7
tp8
tp9
b.z<M8[7D]sh   cnumpy
dtype
p0
(S'M8'
p1
I0
I1
tp2
Rp3
(I4
S'<'
p4
NNNI-1
I-1
I0
((dp5
(S'W'
p6
I1
I1
I1
tp7
tp8
tp9
b.z<M8[W]si   cnumpy
dtype
p0
(S'M8'
p1
I0
I1
tp2
Rp3
(I4
S'>'
p4
NNNI-1
I-1
I0
((dp5
(S'us'
p6
I1
I1
I1
tp7
tp8
tp9
b.>M8[us])	ranger
   HIGHEST_PROTOCOLr$   r%   r   loadsdumpsr   )r(   protory   ZscalardeltaZpklr,   r,   r-   test_pickle/  s&    


zTestDateTime.test_picklec                 C   s   t d}tt|jd t| d t d d k tt|jddddddddi d	ff	 t| d t d d k dS )
z@Verify that datetime dtype __setstate__ can handle bad argumentsr   )	r   >NNNr   r   r   rC   r\   r   r   Nr   r   Zxxx)r$   r%   r   rj   __setstate__r   
__reduce__r'   r(   ry   r,   r,   r-   test_setstateK  s
    
"$zTestDateTime.test_setstatec              	   C   s  dD ]$}t tt|d t|d t|d  t tt|d t|d t|d  t tt|d t|d t|d  t tt|d	 t|d
 t|d  t tt|d t|d t|d  t tt|d t|d t|d  qtttjtdtd tttjtdtd tttjdd tttjdd tttjdd tttjdd tttjtdtd tttjtdtd d S )N)r   r   z8[2Y]z8[12Y]z8[15Y]z8[3Y]z8[62M]z8[24M]z8[2M]z8[1W]z8[2D]z8[1D]z8[W]z8[13s]z8[s]z8[13W]z8[49s]z8[7s]r9   r#   r8   zm8[W]Zfloat32r!   Zuint64zm8[fs]r"   zm8[as])r   r$   Zpromote_typesr%   r   r'   OverflowError)r(   ZmMr,   r,   r-   test_dtype_promotionS  sZ    
    z!TestDateTime.test_dtype_promotionc                 C   s(   dd }t t| dd }t t| d S )Nc                   S   s   t dd d S )Nz#1971-01-01 00:00:00.000000000000000r    numpyr   rx   r,   r,   r,   r-   cast|  s    z-TestDateTime.test_cast_overflow.<locals>.castc                   S   s   t dd d S )NZ2014z<M8[fs]r   r,   r,   r,   r-   cast2  s    z.TestDateTime.test_cast_overflow.<locals>.cast2)r   r   )r(   r   r   r,   r,   r-   test_cast_overflowz  s    
zTestDateTime.test_cast_overflowc                 C   s0  t jddddddddddddddddgt jd}d	D ]x}| j|d}d
|d< d|d< d|d< d|d< d|d< d|d< d|d< d|d< d|d< t|t||d|  q4dD ]x}| j|d}d|d< d|d< d|d< d|d< d |d< d!|d< d"|d< d#|d< d|d< t|t||d|  qd S )$Nr   ilk3iBr   rC   i=iyGrE   )r   r   r6   r7   z-0001-01-01z-0001-12-31z
0000-01-01r\   z
0001-01-01rN   z
1969-12-31r   rs   r   z
9999-12-31r   10000-01-01r   rI   r   zError roundtripping unit %s)r   zM8[16fs]r   r?   z	M8[300as]zM8[20us]z-0001-01-01T00z-0001-12-31T00z0000-01-01T00z0001-01-01T00z1969-12-31T23:59:59.999999z1970-01-01T00z9999-12-31T23:59:59.99999910000-01-01T00)r$   rF   r   copyr   r   rx   object)r(   rn   r)   ro   r,   r,   r-   test_pyobject_roundtrip  sN          z$TestDateTime.test_pyobject_roundtripc                 C   s   t tjdddtjddd t tjdddtjdddd t tjdddtjd	ddd t tjd
ddtjdddd t tjdddtjdddd d S )Nz
1945-03-01r6   rE   z
1945-03-31z
1969-11-01z1969-11-30T23:59:59.99999r   z
1969-12-01z1969-12-31T23:59:59.99999rs   z1970-01-31T23:59:59.99999z
1980-02-01z1980-02-29T23:59:59.99999r   r=   r,   r,   r-   test_month_truncation  s    z"TestDateTime.test_month_truncationc              	   C   s  dD ]
}t d| }dD ]}t d| }tt jd|dt jd|d tt jd|dt jd|d tt jd|dt jd|d tt jd|dt jd|d tt d|t d| tt d|t d| tt d|t d| tt d|t d| qqd	D ]}t d| }d
D ]}t d| }tt jd|dt jd|d tt jd|dt jd|d tt jd|dt jd|d tt jd|dt jd|d tt d|t d| tt d|t d| tt d|t d| tt d|t d| q.qdD ]}t d| }dD ]|}t d| }tt jt jddd|t jddd|dd tt jt jddd|t jddd|dd qBq,t jddd}t jddd}tt	t j
||dd d S )N)r   r   r   zM8[%s]Z1945rE   r   Z9999Z10000r   )Z6hr   r   r   Z10msr   r   )r   r   r   r   r   z1945-03-12T18z1970-03-12T18z9999-03-12T18r   )r   Z12hr   r   r   Z4sr   r   )r   r   r   r   r   r   z
1932-02-17r   z1932-02-17T00:00:00unsafer0   z10000-04-27z10000-04-27T00:00:00
2012-12-21r   rN   r#   r/   )r$   r%   r   rF   r   r   equalrx   r   r'   less)r(   Zunit1r*   Zunit2r+   rn   ro   r,   r,   r-   test_different_unit_comparison  s    









z+TestDateTime.test_different_unit_comparisonc                 C   s   t jdgdd}t jdgdd}tt |j|j tt |j|j tt |j|j tt |j|j tt |j|j tt |j|j d S )NrN   zm8[4D]rE   r  r   )r$   rF   r   Z	ones_liker%   Z
zeros_liker   rm   r,   r,   r-   test_datetime_like  s    zTestDateTime.test_datetime_likec              	   C   s  t jdgddt jdgddt jdgddt jdgddt jdgddft ddt ddt ddt ddt ddffD ]\}}}}}t| | t| j|j tt || tt |j|j tt || tt |j|j tt || tt |j|j tt || tt |j|j tt || tt || tt || tt |j|j t	 qd S )	NrN   r#   rE   r   r   rC   r   r   )
r$   rF   rK   r   r%   negativeZpositiveabsolutesignr   )r(   tdatdbZtdzeroZtdoneZtdmoner,   r,   r-   test_datetime_unary   s:    




z TestDateTime.test_datetime_unaryc                 C   s*  t jdgddt jdgddt jdgddt jdgddt jdgd	dt jd
gddt jdgddft ddt ddt ddt ddt ddt d
dt ddffD ]r\}}}}}}}t|| | t|| jt d t|d |d  t|d jt d t|d | t|d jt d td| | td| jt d td| | td| jt d t|d |d  t|d | t|d jt d t|d | t|d | t|d jt d td| | td| | td| jt d td| | td| | td| jt d t|| | t|| | t|| jt d t|| | t|| | t|| jt d tt j||dd| tt j||ddjt d tt j||dd| tt j||ddjt d ttt j|| qd S )Nr  r   rE   
2012-12-24z2012-12-21T11r:   rI   rN   r#      r;   S   r   [h]TrC   H   Fr  r0   )	r$   rF   r   rK   r   r%   addr   r'   )r(   dtadtbdtcdtnatr  r  tdcr,   r,   r-   test_datetime_add(  sn    






zTestDateTime.test_datetime_addc           
      C   sV  t jdgddt jdgddt jdgddt jdgddt jdgddt jd	gddt jd
gddt jdgddt jdgddf	t ddt ddt ddt ddt ddt d	dt d
dt ddt ddf	fD ]n\	}}}}}}}}}	t|| |	 t|| jt d t|| |	  t|| jt d t|	d |	d  t|	d jt d t|	d |  t|	d jt d td| |  td| jt d td| |	 td| jt d t|d |d  t|d | t|d jt d t|d
 | t|d
 | t|d
 jt d t|| | t|| | t|| jt d tt j||dd| tt j||ddjt d tt j||ddt dd tt j||ddjt d tt j||ddt dd tt j||ddjt d ttt j|| ttt jd| ttt jd
| qd S )Nr  r   rE   r  z
1940-12-24z1940-12-24T00r:   z1940-12-23T13rI   rN   r#   r  r;   =   r   r  TrC   r  Fr  r0   r   r   )	r$   rF   r   rK   r   r%   subtractr   r'   )
r(   r  r  r  ZdtdZdter  r  r  r  r,   r,   r-   test_datetime_subtractn  s|    











z#TestDateTime.test_datetime_subtractc           
   	   C   s$  t jdgddt jdgddt jdgddt jdgddft ddt dd	t dd	t dd	ffD ]\}}}}t|d
 | t|d
 jt d td
| | td
| jt d t|d | t|d jt d td| | td| jt d ttt j|| ttt j|| ttt j|| ttt j|d
 ttt jd
| ttt j|d ttt jd| qht	 }|
td t d}dd }ttfD ]&}|||d
| |||d| qtdtdfD ]6}	|t d|	| |t d|	| |||	| qW 5 Q R X d S )Nr  r   rE   r   r;   r]   ru   r   r  r\         ?z%invalid value encountered in multiplyrI   c                 S   s    t | | | t ||  | d S Nr   )rn   ro   r   r,   r,   r-   check  s    z2TestDateTime.test_datetime_multiply.<locals>.checkr   infr   rC   )r$   rF   r   rK   r   r%   r   r'   multiplyr   filterRuntimeWarningintfloat)
r(   r  r  r  r  supr   r   tpr   r,   r,   r-   test_datetime_multiply  sL    




z#TestDateTime.test_datetime_multiplyzop1, op2, expr   r   r   r   ib  <   Z13r!   rE   r   c                 C   s   t || | d S r  r  )r(   op1op2expr,   r,   r-   test_timedelta_floor_divide  s    z(TestDateTime.test_timedelta_floor_dividezfp errors don't work in wasm)reasonzop1, op2r   2   r   c              	   C   s8   t t& || }t|d t|jtj W 5 Q R X d S )Nr   )r   r$  r   r%   r$   r   )r(   r,  r-  r   r,   r,   r-   !test_timedelta_floor_div_warnings  s    

z.TestDateTime.test_timedelta_floor_div_warningsz
val1, val2)l         rC   )l         r^   c                 C   s2   t |}t |}|| }|| }t|| d S r  )r$   rK   r   )r(   val1val2r,  r-  r   rX   r,   r,   r-   "test_timedelta_floor_div_precision%  s
    


z/TestDateTime.test_timedelta_floor_div_precisionc              	   C   s"   t td ||  W 5 Q R X d S Nzcommon metadata divisorr   r'   r(   r3  r4  r,   r,   r-   test_timedelta_floor_div_error6  s    	z+TestDateTime.test_timedelta_floor_div_errorc                 C   s$   || || f}t t||| d S r  )r   divmod)r(   r,  r-  rX   r,   r,   r-   test_timedelta_divmodB  s    z"TestDateTime.test_timedelta_divmodzdoes not work in wasmc              	   C   sP   t t || || f}W 5 Q R X t t t||}W 5 Q R X t|| d S r  )r   r$  r:  r   )r(   r,  r-  rX   r   r,   r,   r-   test_timedelta_divmod_warnings]  s
    

z+TestDateTime.test_timedelta_divmod_warningsc           	   	   C   s  t jdgddt jdgddt jdgddt jdgddt jdgddft dd	t dd
t dd
t dd
t ddffD ]H\}}}}}t|d | t|d jt d t|d | t|d jt d t|| d tt ||d tt ||d t|| d t|| jt d t|| d t|| d tt	t jd| tt	t jd| tt	t j|| tt	t j|| tt	t j|d tt	t jd| tt	t j|d tt	t jd| qt
 }|td t d}ttfD ]Z}tt d|d | tt d|d | t||d | t||d | qtt dtd t d tt dtd t d t|td | tt dtd | tt dtd | t|td | W 5 Q R X d S )Nr  r   rE   r   r;   r]   ru   zm8[m]r   r  z[m]r\   g      ?gUUUUUU?r  Zf8r+  g?z.*encountered in dividerI   rC   r   r!  r   )r$   rF   r   rK   r   r%   divideZtrue_divider   r'   r   r#  r$  r%  r&  )	r(   r  r  r  r  Ztddr'  r   r(  r,   r,   r-   test_datetime_divider  s^    






z!TestDateTime.test_datetime_dividec                 C   s   t d}t jdddddgdd}tt ||dd	d	d	d	g tt ||d	ddddg tt ||d	d	dd	dg tt ||dd	dd	dg tt ||d	dd	dd	g tt 	||ddd	dd	g d S )
Nz2000-03-12T18:00:00.000000z2000-03-12T17:59:59.999999z2000-03-12T18:00:00.000001z1970-01-11T12:00:00.909090z2016-01-11T12:00:00.909090zdatetime64[us]rE   rC   r   )
r$   r   rF   r   r  	not_equalr  
less_equalgreatergreater_equalrm   r,   r,   r-   test_datetime_compare  s    
z"TestDateTime.test_datetime_comparec                 C   s  t dd}t d}t dd}t dd}t jt jt jt jt jfD ]d}t|||  t|||  t|||  t|||  t|||  t|||  qFtt 	|| tt 	|| tt 	|| tt 	|| tt 	|| tt 	|| d S )NrI   r   r   r   rC   )
r$   r   rK   r  r  r@  rA  rB  r   r?  )r(   Zdt_natZdt_otherZtd_natZtd_otheropr,   r,   r-   test_datetime_compare_nat  s(    
 z&TestDateTime.test_datetime_compare_natc                 C   s  t jddd}t jddd}tt ||| tt ||jt d tt ||| tt ||jt d tt ||| tt ||jt d tt ||| tt ||jt d tt |d|d|d t jddd}t jddd}tt ||| tt ||| tt ||| tt ||| tt ||| tt ||| tt ||| tt ||| t jd	d
d}t jddd}tt ||| tt ||jt d tt ||| tt ||jt d tt ||| tt ||jt d tt ||| tt ||jt d tt |d|d|d t jd	d
d}t jddd}t	t
t j||dd t	t
t j||dd t	t
t j||dd t	t
t j||dd d S )Nz1999-03-12T13zM8[2m]rE   z1999-03-12T12r   r3   rI   r:   rN   r;   i-*  r"   r/   r0   )r$   rF   r   Zminimumr%   ZfminmaximumZfmaxr   r   r'   )r(   rn   ro   r  r,   r,   r-   test_datetime_minmax  sL    $$z!TestDateTime.test_datetime_minmaxc                 C   s0   t jddd}d|d< t|d  jdk d S )NrN   r   rE   i  r   r   )r$   Zonesr   itemhourr(   tr,   r,   r-   
test_hours  s    zTestDateTime.test_hoursc                 C   sL   t tdtdk t tdtdk t tdtdk d S )NzM8[Y/4]zM8[3M]zM8[Y/13]zM8[4W]z	M8[3Y/73]zM8[15D]r   r=   r,   r,   r-   test_divisor_conversion_year  s    z)TestDateTime.test_divisor_conversion_yearc                 C   sL   t tdtdk t tdtdk t tdtdk d S )NzM8[M/2]zM8[2W]zM8[M/15]r   z	M8[3M/40]zM8[54h]r   r=   r,   r,   r-   test_divisor_conversion_month   s    z*TestDateTime.test_divisor_conversion_monthc                 C   sL   t tdtdk t tdtdk t tdtdk d S )Nzm8[W/7]r#   z	m8[3W/14]zm8[36h]z
m8[5W/140]zm8[360m]r   r=   r,   r,   r-   test_divisor_conversion_week%  s    z)TestDateTime.test_divisor_conversion_weekc                 C   sL   t tdtdk t tdtdk t tdtdk d S )NzM8[D/12]zM8[2h]z	M8[D/120]zM8[12m]z
M8[3D/960]zM8[270s]r   r=   r,   r,   r-   test_divisor_conversion_day*  s    z(TestDateTime.test_divisor_conversion_dayc                 C   s4   t tdtdk t tdtdk d S )Nzm8[h/30]zm8[2m]z
m8[3h/300]zm8[36s]r   r=   r,   r,   r-   test_divisor_conversion_hour/  s    z)TestDateTime.test_divisor_conversion_hourc                 C   s4   t tdtdk t tdtdk d S )Nzm8[m/30]zm8[2s]z
m8[3m/300]z	m8[600ms]r   r=   r,   r,   r-   test_divisor_conversion_minute3  s    z+TestDateTime.test_divisor_conversion_minutec                 C   s4   t tdtdk t tdtdk d S )Nz	m8[s/100]zm8[10ms]zm8[3s/10000]z	m8[300us]r   r=   r,   r,   r-   test_divisor_conversion_second7  s    z+TestDateTime.test_divisor_conversion_secondc                 C   s*   t tdtdk ttdd  d S )Nz
M8[fs/100]zM8[10as]c                   S   s
   t dS )NzM8[3fs/10000]r$   r%   r,   r,   r,   r-   r   =      z9TestDateTime.test_divisor_conversion_fs.<locals>.<lambda>)r   r$   r%   r   rj   r=   r,   r,   r-   test_divisor_conversion_fs;  s    z'TestDateTime.test_divisor_conversion_fsc                 C   s   t tdd  d S )Nc                   S   s
   t dS )Nz	M8[as/10]rT  r,   r,   r,   r-   r   @  rU  z9TestDateTime.test_divisor_conversion_as.<locals>.<lambda>)r   rj   r=   r,   r,   r-   test_divisor_conversion_as?  s    z'TestDateTime.test_divisor_conversion_asc              	   C   s  t tdgtdtdgtd t tdgtdtdgtd t tdgtdtdgtd tt0 t tdgtdtdgtd W 5 Q R X tt0 t tdgtdtd	gtd W 5 Q R X tt0 t td
gtdtdgtd W 5 Q R X tt0 t tdgtdtdgtd W 5 Q R X tt0 t tdgtdtdgtd W 5 Q R X tt t tdtd W 5 Q R X d S )Nz1980-02-29T01:02:03r   z1980-02-29 01:02:03z+1980-02-29T01:02:03z+1980-02-29 01:02:03z-1980-02-29T01:02:03z-1980-02-29 01:02:03z+1980-02-29 01:02:03Zz-1980-02-29 01:02:03Zz1980-02-29T02:02:03z1980-02-29 00:32:03-0130z1980-02-28T22:32:03z1980-02-29 00:02:03+01:30z1980-02-29T02:32:03.506z1980-02-29 00:32:03.506-02z1977-03-02T12:30-0230z1977-03-02T15:00)r   r$   rF   r%   r   rq   r   r=   r,   r,   r-   test_string_parser_variantsB  sL    






z(TestDateTime.test_string_parser_variantsc              	   C   sX  t ttjdgtd t ttjdgtd t ttjdgtd t ttjdgtd t ttjdgtd t ttjdgtd t ttjdgtd t ttjd	gtd t ttjd
gtd t ttjdgtd t ttjdgtd t ttjdgtd t ttjdgtd t ttjdgtd t ttjdgtd t ttjdgtd t ttjdgtd t ttjdgtd t ttjdgtd t ttjdgtd t ttjdgtd t ttjdgtd t ttjdgtd t ttjdgtd t ttjdgtd t ttjdgtd t ttjdgtd t ttjdgtd t ttjdgtd t ttjdgtd t ttjd gtd t ttjd!gtd t ttjd"gtd t ttjd#gtd t ttjd$gtd t ttjd%gtd t ttjd&gtd tt t ttjd'gtd W 5 Q R X tt t ttjd(gtd W 5 Q R X tt t ttjd)gtd W 5 Q R X tt t ttjd*gtd W 5 Q R X tt t ttjd+gtd W 5 Q R X d S ),NZbadvaluer?   Z1980Xz1980-z1980-00z1980-13z1980-1z	1980-1-02z1980-Morz1980-01-z	1980-01-0z
1980-01-00z
1980-01-32z
1979-02-29z
1980-02-30z
1980-03-32z
1980-04-31z
1980-05-32z
1980-06-31z
1980-07-32z
1980-08-32z
1980-09-31z
1980-10-32z
1980-11-31z
1980-12-32z1980-02-03%z1980-02-03 qz1980-02-03 25z1980-02-03T25z1980-02-03 24:01z1980-02-03T24:01z1980-02-03 -1z1980-02-03 01:z1980-02-03 01:-1z1980-02-03 01:60z1980-02-03 01:60:z1980-02-03 01:10:-1z1980-02-03 01:01:60z1980-02-03 01:01:00+0661z1980-02-03 01:01:00+2500z1980-02-03 01:01:00-0070z1980-02-03 01:01:00-3000z1980-02-03 01:01:00-25:00)r   rj   r$   rF   r%   r   rq   r=   r,   r,   r-   test_string_parser_error_checkf  s    




z+TestDateTime.test_string_parser_error_checkc              	   C   s   d}t j|gddd t j}dD ]>}|d9 }t j|gd| d}t||d t jd| d	 q$t|d t jd
 tt t dd W 5 Q R X tt t 	dd W 5 Q R X d S )Nz1980-03-23 20:00:00zdatetime64[s]rE   r   )r   r   r   rQ   zdatetime64[%s]z%Datetime conversion error for unit %s)err_msgl     m	1#l            r   )
r$   rF   rx   r   r   pytestraisesr   r   rK   )r(   rl   Z	timestepsr)   r   r,   r,   r-   test_creation_overflow  s    z#TestDateTime.test_creation_overflowc                 C   s  d}d}t tt|dd t tt|dd t tt|dd t tt|dd	 t tt|d
d t tt|dd t tt|dd dD ]}t tt||d qd}t tt|dd t tt|dd t tt|dd d}t tt|d| d}t tt|dd t tt|dd t tt|dd d}t tt|d| td d!}t tj|dd"d#d$ t tj|dd"d#d% t tj|d&d"d#d' t tj|dd"d#d' t tj|dd(d) t tj|d
d(d* t tj|dd(d+ t tj|dd(d, t tj|d!d(d  t tj|dd(d- t tj|dd(d. t tj|dd(d/ t tj|dd(d0 t tjtd d!d1d(d  t tjtd2d!d1d(d3 t tjtd+d!d1d(d+ t tjtd4d!d1d(d* t tjtd5d!d1d(d6 t tjtd7d!d1d(d' t tjtd8d!d1d(d9 t tjtd:d!d1d(d; d S )<Nz
1959-10-13z&1959-10-13T12:34:56.789012345678901234r   Z1959r   z1959-10r   r   z1959-10-13T12r   z1959-10-13T12:34r   z1959-10-13T12:34:56r   z1959-10-13T12:34:56.789)r   r   s   usz1959-10-13T12:34:56.789012z&1969-12-31T23:34:56.789012345678901234r   z1969-12-31T23:34:56.789012345r   z 1969-12-31T23:34:56.789012345678r   z#1969-12-31T23:34:56.789012345678901z&1969-12-31T23:59:57.789012345678901234r   z&1970-01-01T00:34:56.789012345678901234z1970-01-01T00:34:56.789012345z 1970-01-01T00:34:56.789012345678z#1970-01-01T00:34:56.789012345678901z&1970-01-01T00:00:05.789012345678901234z2032-07-18T12:23:34.123456r   r  )r)   r1   Z2032z2032-07r   z
2032-07-18)r)   z2032-07-18T12z2032-07-18T12:23z2032-07-18T12:23:34z2032-07-18T12:23:34.123z2032-07-18T12:23:34.123456000z 2032-07-18T12:23:34.123456000000z#2032-07-18T12:23:34.123456000000000z&2032-07-18T12:23:34.123456000000000000autoz2032-07-18T12:23:34.12z2032-07-18T12:23:34.120z2032-07-18T12:23:00z2032-07-18T12:00:00z2032-07-18T12:00z2032-07-18T00:00:00z2032-07-01T00:00:00z
2032-07-01z2032-01-01T00:00:00z
2032-01-01)r   r$   r   r   )r(   rl   rk   r   rn   r,   r,   r-   test_datetime_as_string  s   
 
 
 
 
 
 
 
 z$TestDateTime.test_datetime_as_stringz!The pytz module is not available.c                 C   sJ  t dd}tt |d tt j|ddd tt j|ddd tt j|dddk t dd}tt j|td	dd
 tt j|tddd tt j|tddd tt j|td	dd tt j|tddd tt j|tddd ttt j|dtdd tt j|dtdddd tt j|dtd	ddd d S )Nz2010-03-15T06:30r   Znaiver   r   z2010-03-15T06:30Zlocalz2010-02-15T06:30z
US/Centralz2010-03-15T01:30-0500z
US/Easternz2010-03-15T02:30-0400z
US/Pacificz2010-03-14T23:30-0700z2010-02-15T00:30-0600z2010-02-15T01:30-0500z2010-02-14T22:30-0800r   )r)   r   r  )r)   r   r1   z
2010-03-14z
2010-02-15)r$   r   r   r   r   tzr   r'   rm   r,   r,   r-    test_datetime_as_string_timezone5  s^    

 
 z-TestDateTime.test_datetime_as_string_timezonec                 C   s  t jdddd}t|jt d t|t jdddddgdd t jd	d
ddd}t|jt d t|t jd	dddgdd t jddddd}t|jt d t|t dt jddd  t jddddd}t|jt d t|t dt jddd  t jddt ddd}t|jt d t|t dt jddd  ttt jt dt dd d tt	t jt ddt d d! tt	t jt d"d#t d d$ d S )%Nz
2010-01-05z
2010-01-10r   rE   z
2010-01-06z
2010-01-07z
2010-01-08z
2010-01-09z
1950-02-10z
1950-02-06r   z
1950-02-09z
1950-02-08z
1950-02-07z1969-05z1970-05r\   r   r6   ru   )stepr   r   rN   r7   z
1969-12-19rh   r   r   z
2011-03-01r   r   r   z2012-02-03T14r   r   )
r$   rT   r   r%   rF   r   rK   r   rj   r'   r   r,   r,   r-   test_datetime_arange]  sZ    
 
 


z!TestDateTime.test_datetime_arangec                 C   s6   t jddd}tt ||d | ttt j| d S )Nz
2010-01-04r   rE   rC   )r$   rF   r   rT   r   rj   r(   r{   r,   r,   r-   test_datetime_arange_no_dtype  s    z*TestDateTime.test_datetime_arange_no_dtypec                 C   s   t jdddd}t|jt d t|t dt dd  t jt dddddd}t|jt d t|t ddt ddd  ttt jt dt d	d ttt jt dd
t d	d ttt jt ddt d	d
 d S )NrN   r   r!   rE   r   r   r\   r"   r   r   r   r   )r$   rT   r   r%   rK   r   rj   r'   r   r,   r,   r-   test_timedelta_arange  s       

z"TestDateTime.test_timedelta_arangezval1, val2, expectedr   rd   rh   r   9   i  i  c                 C   s   t || | d S r  r  )r(   r3  r4  rX   r,   r,   r-   test_timedelta_modulus  s    $z#TestDateTime.test_timedelta_modulusc              	   C   s"   t td ||  W 5 Q R X d S r6  r7  r8  r,   r,   r-   test_timedelta_modulus_error  s    	z)TestDateTime.test_timedelta_modulus_errorc              	   C   s@   t t. tddtdd }t|td W 5 Q R X d S )Nr   r   r   rI   )r   r$  r$   rK   r   )r(   r   r,   r,   r-   "test_timedelta_modulus_div_by_zero  s    
z/TestDateTime.test_timedelta_modulus_div_by_zero   g      @c              	   C   s"   t td ||  W 5 Q R X d S )Nz*'remainder' cannot use operands with typesr7  r8  r,   r,   r-   &test_timedelta_modulus_type_resolution  s    z3TestDateTime.test_timedelta_modulus_type_resolutionc                 C   s@   t jddd}tt ||d | tt |t d| d S )Nr   r#   rE   rC   r   )r$   rF   r   rT   re  r,   r,   r-   test_timedelta_arange_no_dtype  s    z+TestDateTime.test_timedelta_arange_no_dtypec                 C   s   t jdddgdd}tt j|jt d tt j|t d t jdddd	d
gdd}tt j|jt d tt j|t d	d d S )Nz
2010-01-02z
1999-03-14z1833-03r   rE   rC   r   r   r   r\   r"   r   )r$   rF   r   rF  reducer%   r   rK   r   r,   r,   r-   test_datetime_maximum_reduce  s    
z)TestDateTime.test_datetime_maximum_reducec                 C   s,   t jddd}t| | t|  d S )NrQ   r"   rE   )r$   rT   r	   Zmeansumlenr   r,   r,   r-   test_timedelta_correct_mean  s    z(TestDateTime.test_timedelta_correct_meanc              	   C   s   t jddgdd}d}tjt|d t j| W 5 Q R X tjt|d t j| W 5 Q R X tjt|d t j|dg W 5 Q R X d S )Nz
2021-12-02z
2019-05-12r   rE   z&the resolved dtypes are not compatible)matchr   )	r$   rF   r[  r\  r'   r  ro  
accumulateZreduceat)r(   rY   msgr,   r,   r-   $test_datetime_no_subtract_reducelike  s    z1TestDateTime.test_datetime_no_subtract_reducelikec                 C   sp  t tjdddddtd t tjdddddtd	 t tjdddddtd	 t tjd
dddtd t tjd
dddtd t tjd
dddtd t tjd
dddtd t tjd
dddtd t tjd
dddtd t tjddddtd t tjddddtd t tjddddtd t tjddddtd t tjddddtd tttjdd t tddtd t tddtd t tjddd d!td" t tjd"d#d d!td t tjtd$d%d&dtd$ t tjtd$d%ddtd$ t tjtd$d%ddtd$ d S )'Nz2011-06r   forwardMon)rollweekmaskz
2011-06-06z2011-07r   z
2011-06-27z2010-08backward)rz  z
2010-07-30Z	precedingmodifiedprecedingz
2010-08-02modifiedfollowingZ	followingz
2010-10-30z
2010-11-01z
2010-10-29z
2010-10-16z
2010-10-18z
2010-10-15z
2011-06-04z
2006-02-01re   z
2006-03-08z
2007-02-25r  ZSatSunr{  z
2007-04-07irI   rC   r   )r   r$   busday_offsetr   r   rj   r=   r,   r,   r-   test_datetime_busday_offset	  s    z(TestDateTime.test_datetime_busday_offsetc              
   C   s\  t jdddddddgd}t|jt jdddgdd t|jt jd	d	d	d	d	d
d
gdd t jdd}t|jt jd
d	d	d	d	d
d	gdd t jdd}t|jt jd
d
d	d	d
d
d	gdd t jdd}t|jt jd	d	d
d
d
d
d
gdd ttt jd
d
d
d
d
d
d
gd ttt jdd ttt jdd ttt jdd ttt jdd ttt jdd d S )NrI   
2011-01-17z
2011-03-06
2011-12-26
2011-05-30holidaysr   rE   rC   r   ?zSun TueWed  Thu	Frir  Z0011001zMon TueZsatsun z
Mon Tue WeZMaxz
Monday Tue)r$   busdaycalendarr   r  rF   r{  r   rj   )r(   bddr,   r,   r-   test_datetime_busdaycalendarF  s.      $$$$z)TestDateTime.test_datetime_busdaycalendarc                 C   sl  t tjdddgdtd t tjdddgdtd t tjdddgdtd t tjdd	dgdtd t tjdd
dgdtd t tjdd
dgdtd t tjddddgdtd t tjdd	ddgdtd t tjddddgdtd t tjdd	ddgdtd t tjddddgdtd t tjdd	ddgdtd t tjddddgdtd t tjdd	ddgdtd t tjdddddgdtd t tjdd	dddgdtd ddddddddg}tjd|d}t tjdd|dtdd t tjdd|dtdd t tjdd|dtdd t tjdd|dtdd t tjdd|dtdd t tjdd|dtdd t tjdd|dtdd  t tjdd!|dtdd" t tjdd#|dtdd$ t tjdd"|dtdd% t tjdd"|d&tdd% t tjd'd	|dtd'd( t tjd'd)|dtd'd
 t tjd'd
|dtd'd* t tjd'd+|dtd'd, t tjd'd-|dtd'd. t tjd'd/|dtd'd0 t tjd'd1|dtd'd2 t tjd'd3|dtd'd4 t tjd'd5|dtd'd6 t tjd'd5|d&td'd6 tttjd'd7d|d8 tttjd'd7||d9 t tjdd:d;|d<td= t tjdd:d;|d<td= t tjdd:d>|d<td? t tjd@d:dAd@dBdCdDdEgd<tdF t tjdGd:dHdIdJdDdKdLdGgd<tdM d S )NNz
2011-11-10rC   
2011-11-11r  z
2011-11-14z
2011-11-04r   z
2011-11-18r   rI   
2011-11-24
2011-10-10
2011-12-25r  
2011-02-21r  
2012-01-021111100r{  r  z
2011-10-03r   r      r   rv   #   %   rg   '   8   ;   rh  r  r+  @   B   	busdaycal
2012-01-03r^   r*  ir  iiiiiiiiiiiir{  r  r  r  r   rx  )rz  r  z
2011-12-27r|  z
2011-12-23z
2012-02-27r~  z
2012-02-26z
2012-02-28z
2012-03-01z
2012-02-29z
2012-02-24z
2012-03-06r}  z
2012-03-02z
2012-03-03z
2012-03-05z
2012-03-07z
2012-03-08)r   r$   r  r   r  r   rj   r(   r  r  r,   r,   r-   $test_datetime_busday_holidays_offseth  s      




















        z1TestDateTime.test_datetime_busday_holidays_offsetc                 C   s4  ddddddddd	d
ddddddg}t jd|d}t jdt dd|d}tt jd||dt d tt j|d|dt d  t jdt d d|d}tt j|d|dt d tt jd||dt d  ttt jddd|d ttt jdd||d tt jddddd tt jddddd d S )N
2011-01-01r  r  r  r  r  r  r  r  r  
2011-07-01
2011-07-04
2011-09-05r  r  in  rx  )rz  r  r  z
2011-12-31r  z
2012-02-03r  r  z2011-03z2011-04ry  r  r   r*  )r$   r  r  rT   r   Zbusday_countr   rj   )r(   r  r  datesr,   r,   r-   #test_datetime_busday_holidays_count	  sZ              
 
  z0TestDateTime.test_datetime_busday_holidays_countc                 C   s   ddddddddd	d
dddddddg}t jd|d}tt dd tt dd tt dd tt j||dt jt|dd d S )Nr  r  r  r  r  r  r  r  r  r  r  r  r  rI   r  r  Fz
2011-01-02z
2011-01-03Tr  r  rE   )r$   r  r   Z	is_busdayzerosrr  r  r,   r,   r-   test_datetime_is_busday4	  s,             z$TestDateTime.test_datetime_is_busdayc              	   C   s   t d}t|t jd t d}t|t jd tt" t d}t|t jd W 5 Q R X tt" t d}t|t jd W 5 Q R X t d}tt|d d S )N2038-01-19T03:14:07iz2038-01-19T03:14:08l        z2038-01-19T04:14:07+0100z2038-01-19T04:14:08+0100z2038-01-20T13:21:14)r$   r   r   r   r   r   rq   r&   r   r,   r,   r-   test_datetime_y2038E	  s    






z TestDateTime.test_datetime_y2038c                 C   s.  t ttdd t ttdd t ttd  t ttdd t ttdd  tdddg}dD ]}tjd	d
dgd| d}tt|| tjd	d
dgd| d}tt|| tjd	d
dgd| d}tt|| tjd	d
dgd| d}tt|| qd S )NrI   r   r   r  "   FT)r   r   r   r   r   r   r   r   r   r   r   r   r   r~   <datetime64[%s]rE   >datetime64[%s]<timedelta64[%s]>timedelta64[%s])r   r$   isnatr   rK   rF   r   )r(   r   r)   rY   r,   r,   r-   
test_isnatY	  s    zTestDateTime.test_isnatc                 C   s:   t jd D ]*}|t jd krq
ttt jt d| q
d S )NZAllZDatetimer   )r$   Z	typecodesr   r'   r  r  rJ  r,   r,   r-   test_isnat_errorn	  s    zTestDateTime.test_isnat_errorc                 C   sv   t ttdd  t ttdd  t ttd t ttdd  t ttdd d S )NrI   r   r   r  r  )r   r$   isfiniter   rK   r=   r,   r,   r-   test_isfinite_scalaru	  s
    z!TestDateTime.test_isfinite_scalardstrr  r  r  r  c                 C   s   dddg}t j||| d}t dddg}t dddg}t dddg}tt || tt || tt || dS )zLcheck isfinite, isinf, isnan for all units of <M, >M, <m, >m dtypes
        r~   r  rI   rE   TFN)r$   rF   r   r  isinfisnan)r(   r)   r  Zarr_valrY   posnegfalser,   r,   r-   test_isfinite_isinf_isnan_units}	  s    
z,TestDateTime.test_isfinite_isinf_isnan_unitsc                 C   s   t tttdtd d S )Nr   )r   rA   r   r$   r   rK   r=   r,   r,   r-   test_assert_equal	  s     zTestDateTime.test_assert_equalc                 C   sR   g g  }}| | | | td g}||d< tt|jd tt|jd d S )Nr   r   r!   )appendr$   rF   r   rj   rx   )r(   rn   ro   Zobj_arrr,   r,   r-   test_corecursive_input	  s    


z#TestDateTime.test_corecursive_inputr   r,   )rC   c                 C   s   t jdtd|}t jddd|}|jt dks<tt|d| t d|d< t|d| |d}t|dd| d S )Nz
2020-10-10rE   r   r   .r   )	r$   rF   r   Zreshaper%   rA   r   rx   Zbytes_)r(   r   rY   r   r,   r,   r-    test_discovery_from_object_array	  s    
z-TestDateTime.test_discovery_from_object_array	time_unitZ10DZ2Mc                 C   sX   t d|}t t t jj|}t t t jj |}||  k rN|k sTn tdS )zY
        Dates should have symmetric limits around the unix epoch at +/-np.int64
        r   N)r$   r   iinfor   maxrA   )r(   r  epochZlatestZearliestr,   r,   r-   test_limit_symmetry	  s    	z TestDateTime.test_limit_symmetryzgh-13197)Zmarkszsimilar to gh-13197r
  c                 C   s:   t t t jj| |}t t||}||ks6tdS )z
        Limits should roundtrip when converted to strings.

        This tests the conversion to and from npy_datetimestruct.
        N)r$   r   r  r   r  r&   rA   )r(   r  r
  limitZlimit_via_strr,   r,   r-   test_limit_str_roundtrip	  s    z%TestDateTime.test_limit_str_roundtripN)l__name__
__module____qualname__r.   r>   rB   r[  markZparametrizerH   rL   rZ   r[   rc   rp   rr   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$   rK   rF   r   r/  Zskipifr   r  minr2  r5  r9  r;  r<  r>  rC  rE  rG  rL  rM  rN  rO  rP  rQ  rR  rS  rV  rW  rX  rY  r]  r_  	_has_pytzrb  rd  rf  rg  ri  rj  rk  rm  rn  rp  rs  rw  r  r  r  r  r  r  r  r  r  r  r  r  r  r  paramZxfailr  r,   r,   r,   r-   r      s  *I      
   
   






  L	%           
	V	
P1'&

'
%?(FK8













	



















A;$Sj
')
























#









=" )$     

             
         r   c                   @   s$   e Zd Zdd Zdd Zdd ZdS )TestDateTimeDatac                 C   s(   t jdgt jd}tt |jd d S )Nz
1980-03-23rE   )r   rC   )r$   rF   r   r   datetime_datar%   r   r,   r,   r-   
test_basic	  s    zTestDateTimeData.test_basicc                 C   sD   t dd}t |jdks tt dd}t |jdks@td S )NrJ   )s   msr   )r   r   s   5msr$   r   r  r%   rA   r   r,   r,   r-   
test_bytes	  s    zTestDateTimeData.test_bytesc                 C   sD   t dd}t |jdks tt dd}t |jdks@td S )NrJ   )r   r   )r   r   u   5μsr  r   r,   r,   r-   test_non_ascii	  s    zTestDateTimeData.test_non_asciiN)r  r  r  r  r  r  r,   r,   r,   r-   r  	  s   r  )r   r$   rk   r[  Znumpy.testingr   r   r   r   r   r   r   r	   Znumpy.compatr
   Zpytzr   ra  r  ImportErrorRecursionError	NameErrorRuntimeErrorr   r  r,   r,   r,   r-   <module>   sF   (

                   I