
    .id                       d dl m Z mZmZmZ d dl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Zd dlmZmZmZmZmZmZmZmZmZ d dlmZ d dlmZ d dlmZm Z m!Z!m"Z"  G d	 d
      Z# G d d      Z$ G d d      Z% G d d      Z& G d d      Z' G d d      Z( G d d      Z) G d d      Z*e	jV                  jY                  dg d      e	jV                  jY                  dg d      d               Z-d Z.d Z/d  Z0d! Z1y)"    )datetimetime	timedeltatimezone)productN)localize_pydatetime)shift_months)	
DateOffsetDatetimeIndexNaTPeriodSeries	TimedeltaTimedeltaIndex	Timestamp
date_range)	roperator)assert_cannot_addassert_invalid_addsub_typeassert_invalid_comparisonget_upcast_boxc                   X   e Zd Zd Zej
                  j                  ddddd e        ed       e	d	d
d
      j                         dej                  g	      d        Zej
                  j                  d e ed             ej                   d       ej                   d      j#                  ej$                         ej                   d      j#                  e       ej(                  dd      j*                   ej*                   ej(                  dd             e ej(                  dd             ej(                  dd      j#                  e       ej,                  ddd      j*                   ej,                  ddd      j#                  e      g
      d        Zd Zd Zy)"TestDatetime64ArrayLikeComparisonsc                 J   |}|}t        dd|      }t        j                  |j                         d         }t	        j
                  ||      }t        ||d      }||k  }	t        j                  g d      }
t	        j
                  |
|      }
t	        j                  |	|
       y )N20130101   periodstzr   TTFF)r   nparrayto_numpytmbox_expectedr   assert_equal)selftz_naive_fixturebox_with_arrayr   boxdtiotherdtarrxboxresultexpecteds              e/var/www/app/trading-bot/venv/lib/python3.12/site-packages/pandas/tests/arithmetic/test_datetime64.pytest_compare_zerodimz7TestDatetime64ArrayLikeComparisons.test_compare_zerodim3   s    Q26*+S)eUD1%8801??8T2
)    r,   fooc   g      @   daysi     Nc                 j    |}t        dd|      }t        j                  ||      }t        |||       y )N1/1/2000
   r   )r   r$   r%   r   )r'   r,   r(   r)   r   rngr-   s          r1   test_dt64arr_cmp_scalar_invalidzBTestDatetime64ArrayLikeComparisons.test_dt64arr_cmp_scalar_invalidB   s3    ( RB7^4!%?r3   r=   1nsr   1 Dayz
1971-01-01Dfreqr   c                     |}t        ddd|      j                  }t        j                  ||      }t	        |||       y )N
1970-01-01nsr=   rE   r   r   )r   _datar$   r%   r   )r'   r,   r(   r)   r   dtaobjs          r1   "test_dt64arr_cmp_arraylike_invalidzETestDatetime64ArrayLikeComparisons.test_dt64arr_cmp_arraylike_invalid\   s;    & D"DJJooc>2!#un=r3   c           	         |}t        ddd|      j                  }t        j                  ddd|d   t	        d	      g      }||k(  }t        j                  g d
      }t        j                  ||       ||k7  }t        j                  ||        d}t        j                  t        |      5  ||k   d d d        t        j                  t        |      5  ||kD   d d d        t        j                  t        |      5  ||k   d d d        t        j                  t        |      5  ||k\   d d d        y # 1 sw Y   xY w# 1 sw Y   hxY w# 1 sw Y   KxY w# 1 sw Y   y xY w)NrG   h   rI   r   r:   r7   r   r8   )FFFTFzDInvalid comparison between|Cannot compare type|not supported betweenmatch)
r   rJ   r!   r"   r   r$   assert_numpy_array_equalpytestraises	TypeError)r'   r(   r   rK   r,   r/   r0   msgs           r1   test_dt64arr_cmp_mixed_invalidzATestDatetime64ArrayLikeComparisons.test_dt64arr_cmp_mixed_invalidu   s4   CrBHH!Q3q69!+<=>88>?
##FH5
##FXI6T]]9C0 	%K	]]9C0 	%K	]]9C0 	5L	]]9C0 	5L	 		 		 		 		 	s0   .D8E E)E8EEEE%c                 *   |}|}t        d|      }t        |t        g      }t        j                  ||      }t        ||d      }t        ddgt        j                        }	t        j                  |	|      }	||k(  }
t        j                  |
|	       y )Nz
2021-01-01r   TFdtype)	r   r   r   r$   r%   r   r!   bool_r&   )r'   r(   r)   r   r*   tsserrL   r.   r0   r/   s              r1   test_dt64arr_nat_comparisonz>TestDatetime64ArrayLikeComparisons.test_dt64arr_nat_comparison   s    |+b#Yooc3'c2t,4-rxx8??8T2
)r3   )__name__
__module____qualname__r2   rT   markparametrizeobjectr   r   dater!   nanr?   listrangearangeastypefloat32pdtimedelta_ranger"   period_rangerM   rX   r`    r3   r1   r   r   .   s   
* [[H1 T1a %%'FF	
$@%$@ [[ rOBIIbMBIIbM  ,BIIbM  (Bub177BHH'R''r:;###E267Bw3::6BBOOLsB?EEBOOLsB?FFvN	
 >! >.*r3   r   c                   \   e Zd Zej                  j                  d ed      e ed      gee ed      gf ed      e ed      gee ed      gf e	dd      e e	d	d      gee e	d	d      gfg      ej                  j                  d
ddg      ej                  j                  dde
g      ej                  j                  dej                  g dfej                  g dfej                  g dfej                  g dfej                   g dfej"                  g dfg      d                             Zej                  j                  d ed      e ed      g ed      e ed      g e	dd      e e	d	d      gg      ej                  j                  dde
g      d               Zej                  j                  d eddd       eddd      g      d        Zej                  j                  dg d      d        Zd Zej                  j                  d  ed!       ed"dd       ej2                  d#d$      g      ej                  j                  d%ej                  g d&fej"                  g d'fej                  g d(fej                  g d)fg      d*               Zd+ Zy),TestDatetime64SeriesComparisonpair
2011-01-01
2011-01-031 daysz3 daysz2011-01MrE   z2011-03reverseTFr\   Nzop, expectedFFTTTFFFFc                     |}|\  }}	|r|	|}	}t        ||      }
 ||	|      } ||
|      }t        j                  |t        |             y )Nr[   )r   r$   assert_series_equal)r'   r\   index_or_seriesrz   rt   opr0   r*   lhsrhsleftrightr/   s                r1   test_nat_comparisonsz3TestDatetime64SeriesComparison.test_nat_comparisons   sW    N SCCc'Cu%D%
vvh'78r3   datac                    |}t        ||      }t        j                  ||      }t        |t        d      }g d}t        j                  ||      }|t
        j                  u r|t        u rt        j                  |d      }t        j                  |t        k(  |       t        j                  t        |k(  |       g d}t        j                  ||      }|t
        j                  u r|t        u rt        j                  |d      }t        j                  |t        k7  |       t        j                  t        |k7  |       g d}t        j                  ||      }|t
        j                  u r|t        u rt        j                  |d      }t        j                  |t        k  |       t        j                  t        |kD  |       t        j                  |t        k  |       t        j                  t        |k\  |       t        j                  |t        kD  |       t        j                  t        |k  |       t        j                  |t        k\  |       t        j                  t        |k  |       y )Nr[   Tr}   boolTTT)	r   r$   r%   r   r   rn   r"   rf   r&   )r'   r\   r   r)   r*   r   r.   r0   s           r1   test_nat_comparisons_scalarz:TestDatetime64SeriesComparison.test_nat_comparisons_scalar   s    d%(tS)dC.(??8T2"((?uxx7H
X.
tX.%??8T2"((?uxx7H
X.
tX.(??8T2"((?uxx7H
s
H-
d
H-
X.
tX.
s
H-
d
H-
X.
tX.r3   vali  r:      rP   c                     t        t        dd            }||kD  }t        |D cg c]  }||kD  	 c}      }t        j                  ||       y c c}w Nr<   r=   rA   )r   r   r$   r   )r'   r   seriesr/   xr0   s         r1   test_series_comparison_scalarsz=TestDatetime64SeriesComparison.test_series_comparison_scalars  sJ    
:r:;#F3q1s734
vx0 4s   Az
left,right))ltgt)lege)eqr   )ner   c                    t        t        dd      d      }|j                  d      }t        d      |d	<   t        d      |d
<   t	        t
        |      }t	        t
        |      } ||t        d            } |t        d      |      }t        j                  ||        ||t        d            } |t        d      |      }t        j                  ||        ||t        d            } |t        d      |      }t        j                  ||        ||t              } |t        |      }t        j                  ||       y )N20010101r=   rA   datesnameT)deepnatr   r   20010109)	r   r   copyr   getattroperatorr$   r   r   )	r'   r   r   r_   s_natleft_fright_fr0   r/   s	            r1   test_timestamp_compare_seriesz<TestDatetime64SeriesComparison.test_timestamp_compare_series
  s!    Z
B7gFd#5!A5!A4((E* #y45:.4
vx0 #y/05)3/
vx0 %:!67:.6
vx0 %%e$
vx0r3   c                 n   |}t        t        d      t        d      t        g      }t        j                  ||      }t        ||d      }||k7  }t        j                  g d|      }t        j                  ||       |t        j                  u r-t        j                  t        d      5  ||d   k7   d d d        n6||d   k7  }t        j                  g d|      }t        j                  ||       |t        j                  u r-t        j                  t        d      5  ||d	   k7   d d d        n6||d	   k7  }t        j                  g d
|      }t        j                  ||       ||k(  }t        j                  g d|      }t        j                  ||       |t        j                  u r-t        j                  t        d      5  ||d   k(   d d d        n6||d   k(  }t        j                  g d|      }t        j                  ||       |t        j                  u r-t        j                  t        d      5  ||d	   k(   d d d        y ||d	   k(  }t        j                  g d|      }t        j                  ||       y # 1 sw Y   xY w# 1 sw Y   5xY w# 1 sw Y   xY w# 1 sw Y   y xY w)Nz2000-01-29 01:59:00z
2000-01-30Tr{   znot alignedrQ   r   )FTTr7   r   r|   r    r}   )r   r   r   r$   r%   r   r&   rn   	DataFramerT   rU   
ValueError)r'   r)   r*   r_   r.   r/   r0   s          r1   test_dt64arr_timestamp_equalityz>TestDatetime64SeriesComparison.test_dt64arr_timestamp_equality-  sO   i 56	,8OQTUVooc3'c3-??#7>
)",, z? s1v  CF]F':DAHOOFH-",, z? s1v  CF]F'94@HOOFH-??#6=
)",, z? s1v  CF]F';TBHOOFH-",, z? s1v  CF]F'<dCHOOFH-Q    s0   *	J	J	J<	J+JJJ(+J4datetimeliker   i  z2013-01-01T00:00rH   zop,expected)TFFF)TTFF)FTFF)FFFTc                     t        t        d      t        d      t        j                  t        d      gd      } |||      }t        |d      }t	        j
                  ||       y )N20120101r   20130103Ar   )r   r   r!   rh   r$   r   )r'   r   r   r0   r_   r/   s         r1   !test_dt64_compare_datetime_scalarz@TestDatetime64SeriesComparison.test_dt64_compare_datetime_scalarf  sa    ( *%*%*%	 
 C&(-
vx0r3   c                     t        d      }t        g dd      }t        g dd      }t        j                  |t	        j
                  ||             y )N
2024-07-01)z
2024-06-01r   
2024-08-01zdatetime64[us]r[   )r   r   r   )r   r   r$   r   r!   maximum)r'   r^   	ts_seriesr0   s       r1   test_ts_series_numpy_maximumz;TestDatetime64SeriesComparison.test_ts_series_numpy_maximum  sM     |$6"
	
 6"

 	xB	)BCr3   )ra   rb   rc   rT   rd   re   r   r   r   r   rf   r   r   r   r   r   r   r   r   r   r   r   r   r   r!   
datetime64r   r   rq   r3   r1   rs   rs      s    [[ <(#y/FGc9\23
 8$c9X+>?c9X./
 	,c6)#3NOc6)#67	
" [[Yu6[[WtVn5[[[[./[[-.[[/0[[/0[[./[[./	

9
 6 7#<9, [[|$c9\+BCx #y':;IC(#vic/JK	
 [[WtVn5"/ 6"/H [[UXdAq%98D!Q;O$PQ1 R1 [[N11@7.r [[j!T1a BMM,d3	
 [[[[56[[45[[56[[56		
1"1 Dr3   rs   c            	          e Zd Zd Zej
                  j                  d eddd       ed       e	j                  d      g      d        Zej
                  j                  ddeg      d	        Zd
 Zd Zd Zej
                  j                  d eddd       ed       e	j                  d      g      ej
                  j#                  d      d               Zd Zd Zd Zej
                  j                  d ej.                  dd       ej.                  dd      j1                          ej.                  dd      j2                  j5                  d      gd       d        Zd Zy)TestDatetimeIndexComparisonsc                 $   t        dd      }|t        |      dz     }t        |      j                         }t	        j
                  |      } |||      } |||      }t        |t        j                        sJ t        j                  ||       y )Nz
2020-01-01r=   rA   r7   )
r   lenr   to_datetime64r!   r"   
isinstancendarrayr$   rS   )r'   comparison_opindexelementarr
arr_resultindex_results          r1   test_comparatorsz-TestDatetimeIndexComparisons.test_comparators  s|    <4E
a(G$224hhuo"30
$UG4,

333
##J=r3   r,     r:   
2016-01-01c                    |}t        dd|      }|[t        |t        j                        r+t	        j
                  t        |      j                   d       t        ||j                        }||k(  }t        j                  ddg      }t        j                  ||       ||kD  }t        j                  ddg      }t        j                  ||       ||k\  }t        j                  ddg      }t        j                  ||       ||k  }t        j                  ddg      }t        j                  ||       ||k  }t        j                  ddg      }t        j                  ||       y )Nr   r7   r   z is not tz awareTF)r   r   r!   r   rT   skiptypera   r   tzinfor"   r$   rS   )r'   r,   r(   r   r+   r/   r0   s          r1   test_dti_cmp_datetimelikez6TestDatetimeIndexComparisons.test_dti_cmp_datetimelike  s0   
 qR8>%/tE{3344DEF'szz:E88T5M*
##FH5u88UDM*
##FH588T4L)
##FH5u88UEN+
##FH588T5M*
##FH5r3   r\   Nc                    t        t        d      t        t        d      g      }t        t        t        t        d      g      }t        j                  ||      }t        j                  ||      }t        ||d      }||}}|t        u r*|j                  t              |j                  t              }}||k(  }t        j                  g d      }	t        j                  |	|      }	t        j                  ||	       ||k7  }t        j                  g d      }	t        j                  |	|      }	t        j                  ||	       t        j                  g d      }	t        j                  |	|      }	t        j                  |t        k(  |	       t        j                  t        |k(  |	       t        j                  g d      }	t        j                  |	|      }	t        j                  |t        k7  |	       t        j                  t        |k7  |	       t        j                  g d      }	t        j                  |	|      }	t        j                  |t        k  |	       t        j                  t        |kD  |	       y )Nru   rv   Tr{   r|   r}   r   )r   r   r   r$   r%   r   rf   rl   r!   r"   r&   )
r'   r\   r)   r   r   r.   r   r   r/   r0   s
             r1   test_dti_cmp_natz-TestDatetimeIndexComparisons.test_dti_cmp_nat  s   i5sIl<STUsC<)@ABt^4~6dE40SF?{{6*ELL,@C8801??8T2
)88/0??8T2
)8812??8T2
s
H-
s
H-88./??8T2
s
H-
s
H-8812??8T2
c	8,
c	8,r3   c           
      `
   t        j                  dt        j                  dt        j                  ddg      }t        j                  ddt        j                  t        j                  ddg      }t	        dt
        dt
        d	d
g      }t	        ddt
        t
        dd
g      }t        j                  t        j                  d      t        j                  d      t        j                  d      t        j                  d      t        j                  d      t        j                  d      g      }||f||f||fg}t        j                  d       5  |D ]2  \  }}||k  }	t        j                  g d      }
t        j                  |	|
       ||kD  }	t        j                  g d      }
t        j                  |	|
       ||k  }	t        j                  g d      }
t        j                  |	|
       ||k\  }	t        j                  g d      }
t        j                  |	|
       ||k(  }	t        j                  g d      }
t        j                  |	|
       ||k7  }	t        j                  g d      }
t        j                  |	|
       5 	 d d d        t        j                  d       5  |t        j                  f|t
        ffD ]  \  }}||k  }	t        j                  g d      }
t        j                  |	|
       ||kD  }	t        j                  |	|
       ||k  }	t        j                  |	|
       ||k\  }	t        j                  |	|
       ||k(  }	t        j                  |	|
       ||k7  }	t        j                  g d      }
t        j                  |	|
        	 d d d        t        j                  d       5  |df|t        ddd      ffD ]2  \  }}||k  }	t        j                  g d      }
t        j                  |	|
       ||kD  }	t        j                  g d      }
t        j                  |	|
       ||k  }	t        j                  g d      }
t        j                  |	|
       ||k\  }	t        j                  g d      }
t        j                  |	|
       ||k(  }	t        j                  g d      }
t        j                  |	|
       ||k7  }	t        j                  g d       }
t        j                  |	|
       5 	 d d d        y # 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   y xY w)!N      ?      @g      @g      @       @g      @
2014-01-01
2014-03-01
2014-05-01
2014-07-01z
2014-02-01z
2014-06-01z2014-02-01 00:00z2014-03-01 00:00r   z2014-06-01 00:00z2014-07-01 00:00)TFFFTF)TFFFTT)FFFFFT)TTTTTF)FFFFFF)TTTTTTr   i  r:   )TFFFFF)FFFFTT)TFTFFF)FFTFTT)FFTFFF)TTFTTT)rn   Indexr!   rh   r   r   r"   r   r$   assert_produces_warningrS   r   )r'   fidx1fidx2didx1didx2darrcasesidx1idx2r/   r0   r   s               r1   +test_dti_cmp_nat_behaves_like_float_cmp_nanzHTestDatetimeIndexComparisons.test_dti_cmp_nat_behaves_like_float_cmp_nan  sc   #rvvsBFFC=>#sBFFBFFC=>3c<N
 <c<N
 xx0101e$e$0101	
 %%? ''- 	># >
d88$LM++FH=88$LM++FH=88$KL++FH=88$KL++FH=88$MN++FH=88$IJ++FH=/>	>4 ''- 	>$bffos|< >	c88$NO++FH=++FH=++FH=++FH=++FH=88$HI++FH=#>	>* ''- 	>$aj5(4A2F*GH >	c88$MN++FH=88$LM++FH=88$LM++FH=88$KL++FH=88$MN++FH=88$IJ++FH=+>	> 	>_	> 	>4	> 	>*	> 	>s'   D9T
%C3T6E
T$
TT!$T-c           	         |}|}t        ddd      }|j                  d      }t        j                  ||      }t        j                  ||      }|t        j
                  u rd }nt        }|t        j                  t        j                  fvrZd}t        j                  t        |      5   |||       d d d        t        j                  t        |      5   || ||             d d d        t        j                  t        |      5   ||t        j                   ||      t        	             d d d        t        j                  t        |      5   |||       d d d        t        j                  t        |      5   || ||             d d d        t        j                  t        |      5   ||t        j                   ||      t        	             d d d        t        j                   ||k(        sJ t        j                   | ||      k(        sJ t        j                    ||      |k(        sJ t        j                   t        j                   ||      t        	      |k(        sJ t        j                   |t        j                   ||      t        	      k(        sJ t        j                   ||k(        sJ t        j                   | ||      k(        sJ t        j                    ||      |k(        sJ t        j                   t        j                   ||      t        	      |k(        sJ t        j                   |t        j                   ||      t        	      k(        sJ y # 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   ixY w# 1 sw Y   IxY w# 1 sw Y   #xY w# 1 sw Y   xY w)
Nr      rH   r   unit
US/Pacificc                 b    | j                  t              j                  j                         d   S )Nr   )rl   rf   valuestolistr   s    r1   <lambda>zQTestDatetimeIndexComparisons.test_comparison_tzawareness_compat.<locals>.<lambda>W  s#    qxx/66==?B r3   z^Invalid comparison between dtype=datetime64\[ns.*\] and (Timestamp|DatetimeArray|list|ndarray)rQ   r[   )r   tz_localizer$   r%   rn   r   ri   r   r   r   rT   rU   rV   r!   r"   rf   all)	r'   r   r)   r   r*   drdzr   rW   s	            r1   "test_comparison_tzawareness_compatz?TestDatetimeIndexComparisons.test_comparison_tzawareness_compatK  s   ad;^^L)__R%__R%",,BFFhkk8;;//=  y4 2r
 y4 #2vbz"#y4 ;2rxxr
&9:;y4 2r
 y4 #2vbz"#y4 ;2rxxr
&9:; vvbBhvvbF2J&'''vvfRjB&'''vvbhhvbz8B>???vvbBHHVBZv>>???vvbBhvvbF2J&'''vvfRjB&'''vvbhhvbz8B>???vvbBHHVBZv>>???5 # #; ; # #; ;sH   ,
NN)N
N)N68)ONNN&)N36O Oc                 ^   |}t        ddd      }|j                  d      }t        j                  ||      }t        j                  ||      }t	        d      }t	        dd      }t        j                  ||kD        sJ d	}|t        j                  t        j                  fvr-t        j                  t        |
      5   |||       d d d        t        j                  ||kD        sJ |t        j                  t        j                  fvr-t        j                  t        |
      5   |||       d d d        |t        j                  t        j                  fvr.t        j                  t        |
      5   |||       d d d        y y # 1 sw Y   xY w# 1 sw Y   fxY w# 1 sw Y   y xY w)Nr   r   rH   r   r   z2000-03-14 01:59zEurope/AmsterdamrZ   zAInvalid comparison between dtype=datetime64\[ns.*\] and TimestamprQ   )r   r   r$   r%   r   r!   r   r   r   r   rT   rU   rV   )	r'   r   r)   r   r   r   r^   ts_tzrW   s	            r1   *test_comparison_tzawareness_compat_scalarszGTestDatetimeIndexComparisons.test_comparison_tzawareness_compat_scalars|  s^   ad;^^L)__R0__R0 )*,1CDvvb2gRhkk8;;//y4 2u vvb5j!!!hkk8;;//y4 2r
 hkk8;;//y4 2r
  0 
 
 s$   ?
F(
F7
F#FF #F,z*ignore:elementwise comp:DeprecationWarningc                    |}|}t        dd|d      }t        j                  ||      }t        ||d      }	|t        j
                  t        j                  fv r|t        j                  u }
t        j                  |
|
gt              }t        j                  ||	      } |||      }t        j                  ||        |||      }t        j                  ||       y dt        |      j                   }t        j                  t        |      5   |||       d d d        t        j                  t        |      5   |||       d d d        y # 1 sw Y   7xY w# 1 sw Y   y xY w)	Nr   r7   rH   r   r   r   Tr[   z:Invalid comparison between dtype=datetime64\[ns, .*\] and rQ   )r   r$   r%   r   r   r   r   r!   r"   r   r&   r   ra   rT   rU   rV   )r'   r   r,   tz_aware_fixturer)   r   r   r+   r-   r.   exboolr0   r/   rW   s                 r1   "test_scalar_comparison_tzawarenessz?TestDatetimeIndexComparisons.test_scalar_comparison_tzawareness  s8    qRdC^4eUD1(++x{{++8;;&Fxx 0=Hx6Hu%FOOFH-u%FOOFH-E{++,.  y4 !5% !y4 !5% ! !! !! !s   
E=
EEE%c                 J   |}t        dt        dt        ddg      }t        j                  |t        j
                  k(  gt        |      z        } ||t              }t        j                  ||        ||j                  d      t              }t        j                  ||       y )Nr   r   r   r   r   )
r   r   r!   r"   r   r   r   r$   rS   r   )r'   r   r   r+   r0   r/   s         r1   test_nat_comparison_tzawarenessz<TestDatetimeIndexComparisons.test_nat_comparison_tzawareness  s     3c<N
 88R8;;./#c(:;C
##FH5COOL137
##FH5r3   c                    |}t        dd|      }d}||k(  }t        j                  dgdgdz  z         }t        j                  ||       ||k7  }t        j                  dgdgdz  z         }t        j                  ||       ||k  }t        j                  dgdz        }t        j                  ||       ||k  }t        j                  dgdgdz  z         }t        j                  ||       ||kD  }t        j                  dgdgdz  z         }t        j                  ||       ||k\  }t        j                  dgdz        }t        j                  ||       y )Nr<   r=   r   TF	   )r   r!   r"   r$   rS   )r'   r(   r   r>   r,   r/   r0   s          r1   test_dti_cmp_strz-TestDatetimeIndexComparisons.test_dti_cmp_str  sF    RB788TFeWq[01
##FH588UGtfqj01
##FH5u88UGbL)
##FH588TFeWq[01
##FH5u88UGtfqj01
##FH588TFRK(
##FH5r3   c                 p    t        dd      }|t        |      k(  }||k(  }t        j                  ||       y r   )r   ri   r$   rS   )r'   r>   r/   r0   s       r1   test_dti_cmp_listz.TestDatetimeIndexComparisons.test_dti_cmp_list  s5    R0S	!#:
##FH5r3   1Dr=   rA   m8[ns]c                 ,    t        |       j                  S N)r   ra   r   s    r1   r   z%TestDatetimeIndexComparisons.<lambda>  s    d1g&& r3   )idsc                    t        ddd      }||k(  }t        j                  dgdz        }t        |t              r,t        j                  |t	        ||j                               nt        j                  ||       ||k7  }t        j                  dgdz        }t        |t              r,t        j                  |t	        ||j                               nt        j                  ||       d}t        j                  t        |	      5  ||k   d d d        t        j                  t        |	      5  ||k   d d d        t        j                  t        |	      5  ||kD   d d d        t        j                  t        |	      5  ||k\   d d d        y # 1 sw Y   xY w# 1 sw Y   hxY w# 1 sw Y   KxY w# 1 sw Y   y xY w)
N
2000-01-01r=   
Asia/Tokyor   F)r   TzInvalid comparison betweenrQ   )r   r!   r"   r   r   r$   r   r   rS   rT   rU   rV   )r'   r,   r+   r/   r0   rW   s         r1   test_dti_cmp_tdi_tzawarenessz9TestDatetimeIndexComparisons.test_dti_cmp_tdi_tzawareness  sh    rlC88UGbL)eV$""66(%+++NO''988TFRK(eV$""66(%+++NO''9*]]9C0 	%K	]]9C0 	5L	]]9C0 	%K	]]9C0 	5L	 		 		 		 		 	s0   F5F"F.F:F"F+.F7:Gc                 J   t        ddd      }|j                  d      }||k(  }t        j                  dgdz        }t	        j
                  ||       |j                  d       }||k7  }t	        j
                  ||       t        j                  t        |d d       t        d	      gdz  z         }||k(  }t        j                  dgdz  d
gdz  z         }t	        j
                  ||       d}t        j                  t        |      5  ||k\   d d d        y # 1 sw Y   y xY w)Nr  r=   r  r   OTrP   r:   r8   FzB>=' not supported between instances of 'Timestamp' and 'Timedelta'rQ   )r   rl   r!   r"   r$   rS   r   ri   r   rT   rU   rV   )r'   r+   r,   r/   r0   rW   s         r1   test_dti_cmp_object_dtypez6TestDatetimeIndexComparisons.test_dti_cmp_object_dtype  s   rlC

388TFRK(
##FH5%
##FH5c"1g)*;)<q)@@A88TFQJ%145
##FH5R]]9C0 	5L	 	 	s   
DD")ra   rb   rc   r   rT   rd   re   r   r   r!   r   r   rf   r   r   r   r   filterwarningsr   r   r   r   rn   ro   	to_seriesasi8viewr	  r  rq   r3   r1   r   r     s   
> [[	$1	y6l8ST6	68 [[WtVn5#- 6#-J]>~/@b< [[	$1	y6l8ST [[ LM! N!:66>6 [[BtR0BtR0::<BtR055::8D	

 '  <r3   r   c                   ~   e Zd Zej                  j
                  d        Zd Zd Zd Z	d Z
d Zej                  j                  d ed       ed      j                          ed      j                          ej"                  dd	      g      d
        Zd Zd Zd Zd Zd Zd Zej                  j                  dg d      ej                  j                  dddg      d               Zej                  j                  dd ej4                  ddg       edd	       eddd      g      ej                  j                  d dd	g      d!               Zej                  j                  d"g d#      ej                  j                  d dd	g      d$               Zej                  j?                  d%      d&        Z ej                  j                  d' e! ed(       ed(      g       e!e" ed(      g       e!e"e"gd)*      g      ej                  j                  d+dd, ej4                  d      g      d-               Z#y).TestDatetime64Arithmeticc                 d   |}t        dd|d      }t        dd|d      }||j                  d       }t        j                  ||      }t        j                  ||      }||z   }t        j                  ||       ||z   }t        j                  ||       ||z  }t        j                  ||       y )Nr  
2000-02-01rH   r   r   z2000-01-01 02:00z2000-02-01 02:00r   
_with_freqr$   r%   r&   r'   r(   	two_hoursr)   r   r>   r0   r/   s           r1   %test_dt64arr_add_timedeltalike_scalarz>TestDatetime64Arithmetic.test_dt64arr_add_timedeltalike_scalar=  s    
 |F02DRVW>**40Hooc>2??8^<y
)S
)y
X&r3   c                 .   |}t        dd|d      }t        dd|d      }||j                  d       }t        j                  ||      }t        j                  ||      }||z
  }t        j                  ||       ||z  }t        j                  ||       y )Nr  r  rH   r  z1999-12-31 22:00z2000-01-31 22:00r  r  s           r1   %test_dt64arr_sub_timedeltalike_scalarz>TestDatetime64Arithmetic.test_dt64arr_sub_timedeltalike_scalarU  s     |F02DRVW>**40Hooc>2??8^<y
)y
X&r3   c                    t        dd      j                  d      }t        j                  ||      }t	        d      j                  d      }t	        d      }||z
  }t        g d      }t        j                  ||      }t        j                  ||       ||z
  }t        g d      }t        j                  ||      }t        j                  ||       d	}t        j                  t        |
      5  ||z
   d d d        t        j                  t        |
      5  ||z
   d d d        y # 1 sw Y   3xY w# 1 sw Y   y xY w)Nr   r   rA   
US/EasternCETi5)3)0 days 06:00:00z1 days 06:00:00z2 days 06:00:00)-1 days +18:00:00z-2 days +18:00:00z-3 days +18:00:00;Cannot subtract tz-naive and tz-aware datetime-like objectsrQ   )
r   r   r$   r%   r   r   r&   rT   rU   rV   r'   r)   t1t2tnaiver/   r0   rW   s           r1   .test_dt64_array_sub_dt_with_different_timezonezGTestDatetime64Arithmetic.test_dt64_array_sub_dt_with_different_timezoneh  s   
A.::<H__R0z"..u58$b!E
 ??8^<
)b!K
 ??8^<
)K]]9C0 	K	 ]]9C0 	RK	 		 		 	s   1D)D5)D25D>c                    t        dd      j                  d      }t        j                  ||      }t        dd      j                  d      }t        j                  ||      }t        dd      }||z
  }t	        g d      }t        j                  ||      }t        j
                  ||       ||z
  }t	        g d      }t        j                  ||      }t        j
                  ||       d}t        j                  t        |	      5  ||z
   d d d        t        j                  t        |	      5  ||z
   d d d        y # 1 sw Y   3xY w# 1 sw Y   y xY w)
Nr   r   rA   r  r  )r   r   r   )r!  r!  r!  r"  rQ   )	r   r   r$   r%   r   r&   rT   rU   rV   r#  s           r1   6test_dt64_array_sub_dt64_array_with_different_timezonezOTestDatetime64Arithmetic.test_dt64_array_sub_dt64_array_with_different_timezone  s(   
A.::<H__R0
A.::5A__R0J2b!E
 ??8^<
)b!K
 ??8^<
)K]]9C0 	K	 ]]9C0 	RK	 		 		 	s   E4EEEc                    |}t        dd|dd      }t        j                  d      }t        dgdz  |      j	                  d      }t        j                  ||      }t        j                  ||      }||z   }t        j                  ||       ||z   }t        j                  ||       ||z
  }t        j                  ||       d}	t        j                  t        |		      5  ||z
   d d d        y # 1 sw Y   y xY w)
Nz
1994-04-01r   QSrH   r   r   rE   r   r   rZ   cannot subtractrQ   )r   r!   timedelta64r   as_unitr$   r%   r&   rT   rU   rV   )
r'   r)   r(   r   r+   r,   r0   rL   r/   rW   s
             r1   test_dt64arr_add_sub_td64_natz6TestDatetime64Arithmetic.test_dt64arr_add_sub_td64_nat  s    qRdNu% %14<<TBooc>2??8^<u
)
)u
)]]9C0 	CK	 	 	s   "C11C:c                 H   |}t        dd|      }t        g d      }|j                  }t        ddd|      }t        j                  ||      }t        j                  ||      }||z   }	t        j
                  |	|       ||z   }	t        j
                  |	|       t        ddd|      }t        j                  ||      }||z
  }	t        j
                  |	|       dj                  g d	      }
t        j                  t        |

      5  ||z
   d d d        y # 1 sw Y   y xY w)Nr   r   r   )-1 Dayr2  r2  z
2015-12-31z
2016-01-02z
2016-01-04|)*cannot subtract DatetimeArray from ndarray0cannot subtract a datelike from a TimedeltaArrayz,cannot subtract DatetimeArray from TimedeltarQ   )
r   r   r   r$   r%   r&   joinrT   rU   rV   )r'   r(   r)   r   r+   tditdarrr0   r-   r/   rW   s              r1    test_dt64arr_add_sub_td64ndarrayz9TestDatetime64Arithmetic.test_dt64arr_add_sub_td64ndarray  s    qR8;<

lL!K^4??8^<
)
)lL!K??8^<
)hh
 ]]9C0 	EM	 	 	s   	DD!r^   
2013-01-01rC   c                 J   t        dd      j                  d       }t        j                  ||      }t	        g d      }t        j                  ||      }||z
  }t        j
                  ||       ||z
  }t        j
                  ||        t        j
                  ||        y )Nr:  r   rA   )z0 DaysrB   z2 Days)r   r  r$   r%   r   r&   )r'   r)   r^   idxr0   r/   s         r1   test_dt64arr_sub_dtscalarz2TestDatetime64Arithmetic.test_dt64arr_sub_dtscalar  s     q1<<TBooc>2!"?@??8^<r
)c
	*
	*r3   c                 |   t        ddddd      }|j                  d       }|d   }t        j                  ||      }t	        t        j                  dd      t        j                  dd      gd	
      }t        j                  ||      }t        j                  ||z
  |       t        j                  ||z
  |        y )Nz
2014-03-17r7   rC   r  rH   )r   rE   r   r   r   r:   r  r[   )r   r  r$   r%   r   r!   r.  r&   )r'   r)   r_   r^   delta_seriesr0   s         r1   "test_dt64arr_sub_timestamp_tzawarez;TestDatetime64Arithmetic.test_dt64arr_sub_timestamp_tzaware  s    qs|RVWnnT"Vooc>2^^As#R^^As%;<H
 ??<@
b(+
S8),r3   c                    t        t        t        d      g      j                  |      }t	        j
                  ||      }|t        z
  }t        t        t        gd| d      }t	        j
                  ||      }t	        j                  ||       |j                  d      }t	        j
                  ||      }|t        z
  }t        t        t        gd| d      }t	        j
                  ||      }t	        j                  ||       y )N19900315timedelta64[]r[   r  )	r   r   r   r/  r$   r%   r   r&   r   )	r'   r)   r   r+   r_   r/   r0   dti_tzser_tzs	            r1   test_dt64arr_sub_NaTz-TestDatetime64Arithmetic.test_dt64arr_sub_NaT  s    S)J"789AA$Gooc>2s3*l4&,BC??8^<
).8#3*l4&,BC??8^<
)r3   c                 X   t        dd|      }||z
  }t        j                  ||      }t        j                  ||      j                  t              }t        j
                  |      5  ||j                  t              z
  }d d d        t        j                  |       y # 1 sw Y    xY wNr   r   r   )r   r$   r%   rl   rf   r   r&   )r'   performance_warningr)   r(   r+   r0   rL   r/   s           r1   !test_dt64arr_sub_dt64object_arrayz:TestDatetime64Arithmetic.test_dt64arr_sub_dt64object_array  s     q5EF9ooc>2??8^<CCFK''(;< 	.3::f--F	.
)	. 	.s   (B  B)c                     t        ddd       }|j                  }t        j                  ||      }||z
  }||z
  }t        j                  ||       ||z
  }t        j                  ||       y rI  )r   r   r$   r%   r&   )r'   r)   r+   dt64valsr-   r0   r/   s          r1   "test_dt64arr_naive_sub_dt64ndarrayz;TestDatetime64Arithmetic.test_dt64arr_naive_sub_dt64ndarray!  sb    qT:::^45=!
)E!
)r3   c                 @   |}t        dd|      }|j                  }t        j                  ||      }d}t	        j
                  t        |      5  ||z
   d d d        t	        j
                  t        |      5  ||z
   d d d        y # 1 sw Y   3xY w# 1 sw Y   y xY w)Nr   r   r   z.Cannot subtract tz-naive and tz-aware datetimerQ   )r   r   r$   r%   rT   rU   rV   )r'   r   r)   r   r+   rM  r-   rW   s           r1   )test_dt64arr_aware_sub_dt64ndarray_raiseszBTestDatetime64Arithmetic.test_dt64arr_aware_sub_dt64ndarray_raises-  s     qR8::^4>]]9C0 	H	]]9C0 	u	 		 		 	s   B9BBBc                     |}t        dd|      }||j                  d      }n|j                  d       }t        j                  ||      }t	        ||j
                         t	        ||       t	        ||       t	        ||d          t	        ||d   j                                t	        ||d   j                                t	        ||d          t	        ||d   j                                t	        |t        j                  dd             y )Nr   r   r   r  r   ru   rC   )
r   r   r$   r%   r   r   to_pydatetimer   r!   r   )r'   r(   r)   r   r+   dti2r-   s          r1   test_dt64arr_add_dtlike_raisesz7TestDatetime64Arithmetic.test_dt64arr_add_dtlike_raises>  s     qR8:??<0D??4(D^4%,%%%'%Q(%Q!5!5!78%Q!5!5!78%a)%a!6!6!89%|S!ABr3   rE   )rO   rC   W2MEMSQEBNr\   Nuint8c                    |}|t        ddg|      }nt        dd||      } ||      }t        j                  ddg      }||j	                  |      }d	j                  g d
      }	t        |d|	       t        |t        j                  d      |	       t        |t        j                  dt        j                        |	       t        |||	       t        |t        j                  |      |	       t        |t        j                  |      |	       t        |t        j                  |      |	       t        |t        j                  |      |	       t        |t        |      |	       y )Nr   z2017-04-05 06:07:08rZ   r   r7   )r   rE   r   r   r5   r3  )z Addition/subtraction of integers"cannot subtract DatetimeArray fromz(can only perform ops with numeric valuesz%unsupported operand type.*Categoricalz:unsupported operand type\(s\) for -: 'int' and 'Timestamp'r:   r   r[   )r   r   r!   r"   rl   r6  r   int64rn   Categoricalr   r   )
r'   r\   index_or_series_or_arrayrE   r(   r   r+   rL   r,   rW   s
             r1   test_dt64arr_addsub_intlikez4TestDatetime64Arithmetic.test_dt64arr_addsub_intlikeZ  s    <(= >2FC\14BGC&s+!R!LL'Ehh	
 	#33/"3S9"3"(((CSI"3s3"3="3="3u(=sC"3="3us;r3   r,   gQ	@r   r   ru   ry   r:   r7   r   dti_freqc                     t        ddg|      }t        j                  ||      }dj                  g d      }t	        |||       y )Nru   
2011-01-02ry   r3  )zunsupported operand typecannot (add|subtract)zcannot use operands with typesz7ufunc '?(add|subtract)'? cannot use operands with typesz;Concatenation operation is not implemented for NumPy arrays)r   r$   r%   r6  r   )r'   ra  r,   r)   r+   r-   rW   s          r1   test_dt64arr_add_sub_invalidz5TestDatetime64Arithmetic.test_dt64arr_add_sub_invalid  sF     \<8xH^4hh
 	#5%5r3   pi_freq)rC   rU  QrO   c                     t        ddg|      }|j                  |      }t        j                  ||      }t        j                  ||      }dj	                  g d      }	t        |||	       y )Nru   rc  ry   r3  )rd  unsupported operandzdescriptor.*requireszufunc.*cannot use operands)r   	to_periodr$   r%   r6  r   )
r'   ra  rf  r)   box_with_array2r+   pir-   parrrW   s
             r1   test_dt64arr_add_sub_parrz2TestDatetime64Arithmetic.test_dt64arr_add_sub_parr  sd     \<8xH]]7#^4r?3hh
 	#5$4r3   (ignore::pandas.errors.PerformanceWarningc                    |}t        dd|      }t        d      D cg c]  }t        |||       }}t        j                  ||      }t        j                  ||      }dj                  ddg      }t        |||       y c c}w )N
2012-01-01r   r   r3  ri  r4  )rW   )r   rj   r   r$   r%   r6  r   )r'   r)   r(   r   obj1iobj2rW   s           r1   'test_dt64arr_addsub_time_objects_raisesz@TestDatetime64Arithmetic.test_dt64arr_addsub_time_objects_raises  s     ,b9',Qx0!Q100t^4t^4hh%<
 	#437 1s   Bdt64_seriesrB  datetime64[ns]r[   oner   c                    t        j                  ||      }d}t        j                  t        |      5  ||z   d d d        t        j                  t        |      5  ||z   d d d        t        j                  t        |      5  ||z   d d d        t        j                  t        |      5  ||z   d d d        y # 1 sw Y   xY w# 1 sw Y   hxY w# 1 sw Y   KxY w# 1 sw Y   y xY w)Nz&cannot perform .* with this index typerQ   )r$   r%   rT   rU   rV   )r'   rx  rv  r)   rL   rW   s         r1   !test_dt64_mul_div_numeric_invalidz:TestDatetime64Arithmetic.test_dt64_mul_div_numeric_invalid  s     ook>:6 ]]9C0 	#I	]]9C0 	#I	 ]]9C0 	#I	]]9C0 	#I	 		 		 		 		 	s/   B>C
C/C">C
CC"C+)$ra   rb   rc   rT   rd   arm_slowr  r  r'  r)  r0  r9  re   r   rR  r   r!   r   r=  r@  rG  rK  rN  rP  rT  r`  r"   r   r   re  rn  r  ru  r   r   rz  rq   r3   r1   r  r  6  sp    [[' '.'&68*D [[l#l#113l#113 BMM,,	

+
+-***
*"C8 [[V%RS[[WtWo6$< 7 T$<L [[BHHc3Z <c*AqM	

 [[Z$56 6
6 [[Y(<=[[Z$55 6 >5& [[ JK8 L82 [[Ij)9Z+@ABC:./0C:%56	
 [[UQXRXXa[$9: ;r3   r  c                   "   e Zd Zd Zd Zej                  j                  dg d      d        Zd Z	d Z
ej                  j                  d      ej                  j                  d	g d
d
ddifddddifddddddddifdddifddddddddddd d!d"d#d$dd%ifd&d'd'd%d(d)fd*d+d%d(d,fd-d%d%d.fd/d0d1d2ifd0ddif      ej                  j                  d3d4d5g      ej                  j                  d6d+dg      ej                  j                  d7d8d9g      d:                                    Zej                  j                  d;ej                  j                         ej                  j!                  d%<      gej                  j#                  d'=      ej                  j                         gej                  j#                  d'=      ej                  j#                  d'=      gg      ej                  j                  d>ej&                  ej*                  ej,                  g      d?               Zej                  j                  d@dA eddBC       edD       edE       edF       edG      gd8fdA edH       edI       edJ       edK       edL      gdMfdN eddBC       edO       edP       edQ       edR      gd8fdN edH       edS       edT       edU       edV      gdWfg      dX        ZdY Zy8)Z"TestDatetime64DateOffsetArithmeticc                    t        t        d      t        d      g      j                  j                  |      }t        t        d      t        d      g      j                  j                  |      }t	        j
                  ||      }t	        j
                  ||      }|t        j                  j                  d      z   }t	        j                  ||       t        j                  j                  d      |z   }t	        j                  ||       y )N20130101 9:0120130101 9:02z20130101 9:01:05z20130101 9:02:05rP   )
r   r   dtr/  r$   r%   rn   offsetsSecondr&   )r'   r)   r   r_   r0   r/   result2s          r1   'test_dt64arr_series_add_tick_DateOffsetzJTestDatetime64DateOffsetArithmetic.test_dt64arr_series_add_tick_DateOffset  s     '?)CD

"WWT] 	 )*I6H,IJ

"WWT] 	 ooc>2??8^<rzz((++
)**##A&,
*r3   c                 b   t        t        d      t        d      g      }t        t        d      t        d      g      }t        j                  ||      }t        j                  ||      }|t        j
                  j                  d      z
  }t        j                  ||       t        j
                  j                  d       |z   }t        j                  ||       d}t        j                  t        |      5  t        j
                  j                  d      |z
   d d d        y # 1 sw Y   y xY w)Nr  r  z20130101 9:00:55z20130101 9:01:55rP   z)cannot subtract DatetimeArray from SecondrQ   )r   r   r$   r%   rn   r  r  r&   rT   rU   rV   )r'   r)   r_   r0   r/   r  rW   s          r1   'test_dt64arr_series_sub_tick_DateOffsetzJTestDatetime64DateOffsetArithmetic.test_dt64arr_series_sub_tick_DateOffset  s     i0)O2LMN)*I6H,IJ
 ooc>2??8^<rzz((++
)::$$Q''#-
*9]]9C0 	'JJa 3&	' 	' 	's   9#D%%D.cls_name)DayHourMinuter  MilliMicroNanoc                     t        t        d      t        d      g      }t        j                  ||      }t	        t
        j                  |      }| |d      z     |d      |z    | |d      z
   y )Nr  r  rP   )r   r   r$   r%   r   rn   r  )r'   r  r)   r_   
offset_clss        r1   *test_dt64arr_add_sub_tick_DateOffset_smokezMTestDatetime64DateOffsetArithmetic.test_dt64arr_add_sub_tick_DateOffset_smoke  sa     i0)O2LMNooc>2RZZ2
jm1jmr3   c                    |}|dk(  r^t        dd|d      }|t        j                  j                  d      z   }|d   t        j                  j                  d      z   |d   k(  sJ t        dd|d	d
      }t	        g dd	|      j                  d      }t        j                  ||      }t        j                  ||      }t        j                  j                  d      t        j                  dd	      t        d      fD ]~  }||z   }t        j                  ||       ||z   }t        j                  ||       ||z
  }t        j                  ||       d}	t        j                  t        |	      5  ||z
   d d d         y # 1 sw Y   xY w)Nr   z
2012-11-01r   rH   r   rP   r   z2010-11-01 00:00rO   r,  )z2010-11-01 05:00z2010-11-01 06:00z2010-11-01 07:00)rE   r   )hoursr\  rQ   )r   rn   r  r  r   r/  r$   r%   r!   r.  r   r&   rT   rU   rV   )
r'   r   r)   r   r   offsetr0   scalar	roundtriprW   s
             r1   test_dti_add_tick_tzawarez<TestDatetime64DateOffsetArithmetic.test_dti_add_tick_tzaware   sb   |Q2DIERZZ__Q//F8bjjooa00F1I===-qRcPTU H
 '$-	 	 ~6??8^<zzq)2>>!S+A9STCUV 	FV^FOOFH-e^FOOFH-IOOIu-6Cy4  	 s   2FF	c                 T   t        t        d      t        d      t        d      t        d      t        d      t        d      t        d      t        d      g      j                  |      }t        j                  ||      }|t
        j                  u r|j                  d	   n|}g d
}t        |      D ]  \  }\  }}t        di ||i}	|}
|dk(  r|dk7  rd}
t        |D cg c]  }||	z   	 c}      j                  |
      }t        j                  ||      }t        j                  |||	z          t        |D cg c]  }||	z
  	 c}      j                  |
      }t        j                  ||      }t        j                  |||	z
         t        di t        |d |dz          }	t        |D cg c]  }||	z   	 c}      j                  |
      }t        j                  ||      }t        j                  |||	z          t        |D cg c]  }||	z
  	 c}      j                  |
      }t        j                  ||      }t        j                  |||	z
         d}t        j                  t        |      5  |	|z
   d d d         y c c}w c c}w c c}w c c}w # 1 sw Y   xY w)N2000-01-05 00:15:002000-01-31 00:23:00r  
2000-03-31
2000-02-29
2000-12-31
2000-05-15
2001-06-15r   ))yearsr7   )monthsrP   )r9   r   )r  rP   )minutesr=   )secondsr7   )microsecondsrP   r  rH   usr:   r\  rQ   rq   )r   r   r/  r$   r%   rn   r   iloc	enumerater
   r&   dictrT   rU   rV   )r'   r)   r   vec	vec_itemsrelative_kwargsrs  offset_unitvalueoffexp_unitr   r0   rW   s                 r1   *test_dt64arr_add_sub_relativedelta_offsetszMTestDatetime64DateOffsetArithmetic.test_dt64arr_add_sub_relativedelta_offsetsB  sa   /0/0,',',',',','	
 '$- 	 ooc>2#1R\\#ACHHQKs	
 (1'A 	#A#U4U34CHn, %y%A!a#g%ABJJ8THx@HOOHcCi0$y%A!a#g%ABJJ8THx@HOOHcCi0>tOGa!e$<=>C$y%A!a#g%ABJJ8THx@HOOHcCi0$y%A!a#g%ABJJ8THx@HOOHcCi06Cy4 c	 5	 &B &B &B &B s$   !J	
;J
/J
	J
7JJ'	ro  cls_and_kwargs	YearBeginmonthrP   YearEnd
MonthBeginMonthEndSemiMonthEndSemiMonthBeginWeekweekdayr   r   BusinessDayBDay
QuarterEndQuarterBeginCustomBusinessDayCDay
CBMonthEndCBMonthBeginBMonthBegin	BMonthEndBusinessHour
BYearBeginBYearEndBQuarterBeginLastWeekOfMonthr7   FY5253Quarterr:   nearest)qtr_with_extra_weekstartingMonthr  	variationFY5253r   )r  r  r  WeekOfMonth)r  weekEasterr
   dayr   	normalizeTFnr   Nz
US/Centralc                    t        |t              r|\  }}n|}i }|dk(  r|dv ry t        t        d      t        d      t        d      t        d      t        d      t        d      t        d	      t        d
      g      j	                  |      j                  |      }	t        j                  |	|      }	|t        j                  u r|	j                  d   n|	}
t        t        j                  |      } ||fd|i|}t        |
D cg c]  }||z   	 c}      j	                  |      }t        j                  ||      }t        j                  ||	|z          t        j                  |||	z          t        |
D cg c]  }||z
  	 c}      j	                  |      }t        j                  ||      }t        j                  ||	|z
         t        |
D cg c]  }||z   	 c}      j	                  |      }t        j                  ||      }t        j                  |||	z          d}t        j                  t         |      5  ||	z
   d d d        y c c}w c c}w c c}w # 1 sw Y   y xY w)Nr   )r  r  r  r  r  r  r  r  r  r  r  r  r  r\  rQ   )r   tupler   r   r/  r   r$   r%   rn   r   r  r   r  r&   rT   rU   rV   )r'   r)   r  r  r  r   r   r  kwargsr  r  r  r  r   r0   rW   s                   r1    test_dt64arr_add_sub_DateOffsetszCTestDatetime64DateOffsetArithmetic.test_dt64arr_add_sub_DateOffsets  s#   n ne,  .Hf%HF6h #
 
  3434l+l+l+l+l+l+	 WT][_ 	  ooc>2#1R\\#ACHHQKs	RZZ2
A==f= !i!@!f*!@AII$O??8^<
#,/
&3,/ i!@!f*!@AII$O??8^<
#,/ i!@&1*!@AII$O??8^<
&3,/2]]9C0 	SL	 	 "A
 "A "A	 	s   I8II II'r,   r  )r  r   c           
         |}t        dd|      }t        j                  ||      }t        j                  |      }t        t        t        |            D 	cg c]  }	 |||	   ||	          c}	      }
t        j                  |
|      j                  t              }
t        j                  |      5   |||      }d d d        t        j                  |
       t        j                  ||      }|t        j                  u r-|t        j                  u rt        j                  |
t              }
t        j                  |      5   |||      }d d d        t        j                  ||
       y c c}	w # 1 sw Y   xY w# 1 sw Y   1xY w)N
2017-01-01r7   r   r[   )r   r$   r%   r!   r"   r   rj   r   rl   rf   r   r&   rn   r   radd)r'   rJ  r(   r)   r   r,   r   r+   r-   r  r0   ress               r1   !test_dt64arr_add_sub_offset_arrayzDTestDatetime64DateOffsetArithmetic.test_dt64arr_add_sub_offset_array  s6     qR8^4 c#h!P1"SVU1X"6!PQ??8^<CCFK''(;< 	#UE"C	#
X& ~6RXX%"	*>xx7H''(;< 	#UE"C	#
X& "Q	# 	#	# 	#s   E-2
E2
E>2E;>Fzop, offset, exp, exp_freq__add__r=   )r  r9   z
2014-04-11z
2015-04-11z
2016-04-11z
2017-04-11)r  z
2014-04-01z
2015-04-01z
2016-04-01z
2017-04-01zYS-APR__sub__z
2013-09-21z
2014-09-21z
2015-09-21z
2016-09-21z
2013-10-01z
2014-10-01z
2015-10-01z
2016-10-01zYS-OCTc                    |}t        ddd|d      }t        j                  ||d      }t        ||      }	 |	|      }
t	        ||      j                  d      }t        j                  ||d      }t        j                  |
|       y )Nz01 Jan 2014z01 Jan 2017YSrH   )startendrE   r   r   FrZ   )r   r$   r%   r   r   r/  r&   )r'   r   r  expexp_freqr   r)   r   rg   mthr/   r0   s               r1   #test_dti_add_sub_nonzero_mth_offsetzFTestDatetime64DateOffsetArithmetic.test_dti_add_sub_nonzero_mth_offset  s    j ]"4
 t^U;dBV ,44T:??8^UC
)r3   c                     t        g dd      }|t        d      z   }t        g dd      }t        j                  ||       |t        dd      z   }t        g d	d      }t        j                  ||       y )
N)z2000-01-01 00:00:00.012345678z2000-01-31 00:00:00.012345678z2000-02-29 00:00:00.012345678rw  r[   r   )milliseconds)z2000-01-01 00:00:00.016345678z2000-01-31 00:00:00.016345678z2000-02-29 00:00:00.016345678r:   )r9   r  )z2000-01-02 00:00:00.016345678z2000-02-01 00:00:00.016345678z2000-03-01 00:00:00.016345678)r   r
   r$   assert_index_equal)r'   r+   r/   r0   s       r1   -test_dt64arr_series_add_DateOffset_with_millizPTestDatetime64DateOffsetArithmetic.test_dt64arr_series_add_DateOffset_with_milliS  s    
 #
 zq11 
 #
 	fh/zqq99 
 #
 	fh/r3   )ra   rb   rc   r  r  rT   rd   re   r  r  r  r  r  rn   r  r  r  r
   r   addr   r  subr  r   r  r  rq   r3   r1   r}  r}    s   
+&'( [[Q		D6z [[ JK[[)	
)	
7A,')	
 )	
 !%	)	

 )	
 )	
 )	
 )	
 )	
 i^$)	
 i^$)	
 )	
 )	
 )	
 )	
   !)	
" #)	
$ %)	
& ')	
( ))	
* +)	
, -)	
. /)	
0 1)	
2 3)	
4 A/5)	
8  +,%& !*	7)	
H 1qyQRI)	
J 156K)	
L M)	
N E1:&O)	
P GQ<(Q)	
,Z [[[4-8[[S1a&)[[TD,#78< 9 * 9[, Lb<| [[ZZ  "BJJNNQN$78ZZ"""+RZZ-@-@-BCZZ"""+RZZ-B-B-B-KL		
 [[THLL)..(,,#OP' Q'4 [[# !"-l+l+l+l+	 
 !$l+l+l+l+	 
 !"-l+l+l+l+	 
 !$l+l+l+l+	 
E-	
0b*c0b* 0r3   r}  c                   $    e Zd Zd Zd Zd Zd Zy)TestDatetime64OverflowHandlingc                 0   t        t        d      gd      }t        t        g      }t        j                  ||      }t        j                  ||      }t        t        gd      }t        j                  ||      }||z
  }t        j                  ||       y )Nz
1969-12-31M8[ns]r[   r  )r   r   r   r$   r%   r   r&   )r'   r)   r   r   r0   r/   s         r1   test_dt64_overflow_maskingz9TestDatetime64OverflowHandling.test_dt64_overflow_maskingw  sv    y./x@ut^4~6!3%x8??8^<
)r3   c                 v   t        d      }t        d      }t        dddd      }t        |      }d}t	        j
                  t        |	      5  ||z
   d d d        t	        j
                  t        |	      5  ||z
   d d d        t	        j
                  t        |	      5  ||z    d d d        t	        j
                  t        |	      5  ||z    d d d        t        |j                  d
<   t        g dd      }||z   }t        j                  ||       ||z   }t        j                  ||       t        |j                  dd  t        g dd      }||z
  }t        j                  ||       ||z
  }t        j                  ||        y # 1 sw Y   7xY w# 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   xY w)Nz
1700-01-31z
20000 Daysz
1949-09-30100YEr   rH   )rE   r   r   Overflow in int64 additionrQ   r5   )z
2004-10-03z
2104-10-04z
2204-10-04r   rw  r[   r:   )z
91279 Daysr   r   r   timedelta64[ns])r   r   r   r   rT   rU   OverflowErrorr   r  r$   r   )r'   r  tdr+   r_   rW   r0   r  s           r1   test_dt64_series_arith_overflowz>TestDatetime64OverflowHandling.test_dt64_series_arith_overflow  s   |$|$GQTJSk*]]=4 	"H	]]=4 	H	]]=4 	"H	]]=4 	H	 =EU
 Bh
sH-3h
sH-=EVWBh
sH-3h
sXI./	 		 		 		 	s0   F	7F F#	F/	FF #F,/F8c                    t        j                  dt        j                  g      j	                  d      }t        j                  dt        j
                  g      j	                  d      }t        d      j	                  d      }||j                         |j                         j                  d      |j                         j                  d      g}t        d      j	                  d      }||j                         |j                         j                  d      |j                         j                  d      g}d}|D ]+  }t        j                  t        |      5  ||z
   d d d        - t        j                  j                  |j                  z
  }	|D ]  }||z
  }
|
d	   j                  |	k(  rJ  t        j
                  j                  |j                  z
  }	|D ]  }||z
  }
|
d	   j                  |	k(  rJ  |D ]+  }t        j                  t        |      5  ||z
   d d d        - y # 1 sw Y   xY w# 1 sw Y   DxY w)
N2021-12-28 17:19rH   
1950-01-01rw  zdatetime64[D]
1980-01-01r  rQ   r:   )rn   to_datetimer   maxr/  minrR  r   rl   rT   rU   r  _value)r'   dtimaxdtimintsnegts_neg_variantstsposts_pos_variantsrW   variantr0   r  s              r1   )test_datetimeindex_sub_timestamp_overflowzHTestDatetime64OverflowHandling.test_datetimeindex_sub_timestamp_overflow  s   !3Y]] CDLLTR!3Y]] CDLLTR,'//5!!(()9:!((9	
 ,'//5!!(()9:!((9	
 +& 	!G}C8 ! ! !	! ==''%,,6& 	-G7"Cq6==H,,,	- ==''%,,6& 	-G7"Cq6==H,,,	- ' 	!G}C8 ! ! !	!! !! !s   H*H6*H3	6H?	c                 2   t        j                  dt        j                  g      j	                  d      }t        j                  dt        j
                  g      j	                  d      }t        j                  ddg      j	                  d      }t        j                  ddg      j	                  d      }t        j                  j                  |d   j                  z
  }||z
  }|d   j                  |k(  sJ t        j
                  j                  |d   j                  z
  }||z
  }|d   j                  |k(  sJ d}t        j                  t        |      5  ||z
   d d d        t        j                  t        |      5  ||z
   d d d        t        j                  t        j
                  g      }|t        j                  z   t        d      z   }	t        j                  t        |      5  |	|z
   d d d        t        j                  t        j                  g      }
|
t        j
                  z   t        d      z
  }t        j                  t        |      5  |
|z
   d d d        y # 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   y xY w)	Nr  rH   r  r  r:   r  rQ   1us)rn   r   r   r  r/  r  r  rT   rU   r  r   )r'   r  r  ts_negts_posr0   r/   rW   tminr$  tmaxr%  s               r1   -test_datetimeindex_sub_datetimeindex_overflowzLTestDatetime64OverflowHandling.test_datetimeindex_sub_datetimeindex_overflow  s   !3Y]] CDLLTR!3Y]] CDLLTR| <=EEdK| <=EEdK ==''&)*:*::&ay8+++==''&)*:*::&ay8+++*]]=4 	VO	 ]]=4 	VO	 ~~y}}o.IMM!Ie$44]]=4 	I	 ~~y}}o.IMM!Ie$44]]=4 	2I	 		 		 		 	
	 	s0   I(I5-JJ(I25I>J
JN)ra   rb   rc   r  r  r  r  rq   r3   r1   r  r  t  s    */@$!L r3   r  c                      e Zd Zd Zd Zd Zej                  j                  d e	d       e	d      e
g e	d       e	d       e	d	      gd
dgg e	d       e	d      e
g edd       edd      e
gg dg e	dd       e	dd      e
g edd      e
 edd      gg dgg      d        Zd Zd Zd Zd Zd Zd Zy)TestTimestampSeriesArithmeticc                 X   t        d      }t        d      } ||      } ||      }t        j                  |||z          t        j                  |||z
         t        j                  |||z          d}t        j                  t
        |      5  ||z
   d d d        y # 1 sw Y   y xY w)Nr  r[   r  r-  rQ   )r   r$   r&   rT   rU   rV   )r'   r)   abrW   s        r1   test_empty_series_add_subz7TestTimestampSeriesArithmetic.test_empty_series_add_sub  s    ""11
1q5!
1q5!
1q5!]]9C0 	E	 	 	s   B  B)c                    t        t        dd      gdz        }t        j                  |j                  d<   t        t        d      t        d      t        d      g      }t        j                  |j                  d<   t        t        d      t        d	      t        d
      g      }||z
   ||z
   ||z    ||z    ||z
   ||z    ||z    y )NrP   r   r  r  r7   20111230r   20120103201112312012010220120104)r   r   r!   rh   r  r   )r'   td1dt1dt2s       r1   test_operators_datetimelikez9TestTimestampSeriesArithmetic.test_operators_datetimelike  s    i156:;ff *%*%*%
 ff*%*%*%
 	c	c	 	c	c	c	 	c	c	r3   c           
          t        t        dddddd            }t        ddddd      }t        |gd	| d
      }||z
  }t        j                  |d      }|j
                  d| d
k(  sJ y )Ni  r:            r   r      M8[rD  r[   r  rC  )r   r   r   r$   get_finest_unitr\   )r'   r   r^   r  r_   r/   r  s          r1   test_dt64ser_sub_datetime_dtypez=TestTimestampSeriesArithmetic.test_dt64ser_sub_datetime_dtype  s{    xaBB78dAr2r*bT3tfA/r %%dD1||hZq9999r3   zleft, right, op_failr  r   r  r  r  r  __rsub__rP   r   r  )r  __radd__r  r  rZ   c                     |}t        |      }t        |      }t        ||d       }||vr-t        j                  t        d      5   ||       d d d        y  ||       y # 1 sw Y   y xY w)Nz%operate|[cC]annot|unsupported operandrQ   )r   r   rT   rU   rV   )	r'   r   r   op_failall_arithmetic_operatorsop_strarg1arg2r   s	            r1   #test_operators_datetimelike_invalidzATestTimestampSeriesArithmetic.test_operators_datetimelike_invalid,  ss    8 *d|e} T64(  !H  4  tH s   	A  A)c                    t        t        dd      g      j                  j                  |      }t        t        dd      g      j                  j                  |      }||z
  }t        t	        d      g      j                  j                  |      }t        j                  ||       ||z
  }t        t	        d      g      j                  j                  |      }t        j                  ||       y )Nz
2016-02-10zAmerica/Sao_PaulorZ   z
2016-02-082daysz-2days)r   r   r  r/  r   r$   r   )r'   r   s1s2r/   r0   s         r1   test_sub_single_tzz0TestTimestampSeriesArithmetic.test_sub_single_tzZ  s    Y|0CDEFIIQQRVWY|0CDEFIIQQRVWb9W-./22::4@
vx0b9X./033;;DA
vx0r3   c                     t        ddd      }t        |      }t        t        dgdz              }||z
  }t        j                  ||       ||z
  }t        j                  ||       y )Nz
1999-09-30r=   r   r   0days)r   r   r   r$   r   )r'   r+   r_   r0   r  s        r1   test_dt64tz_series_sub_dtitzz:TestTimestampSeriesArithmetic.test_dt64tz_series_sub_dtitze  sb     rlCSk.'R89Ci
sH-Ci
sH-r3   c           	         t        t        ddddt        j                        t        g      j
                  j                  |      }t        ddddt        j                        }t        j                  |d      }t        t        d      t        g      j
                  j                  |      }||z
  }t        j                  ||       |t        |      z
  }t        j                  ||       y )	Nr            )r   r(  r  rw   )r   r   r   utcr   r  r/  r$   r*  r   r   r   )r'   r   r_   r  r  r  r/   r  s           r1   test_sub_datetime_compatz6TestTimestampSeriesArithmetic.test_sub_datetime_compatq  s    htQBx||DcJKNNVV
 dAr2hll;%%dD1i)3/033;;HEr
vs+	"%
w,r3   c                 N   t        t        d      t        d      g      }|t        j                  j	                  d      z   }t        j                  j	                  d      |z   }t        t        d      t        d      g      }t        j                  ||       t        j                  ||       |t        j                  j                  d      z   t        j                  j	                  d      z   }t        t        d      t        d      g      }t        j                  ||       y )Nr  r  rP   z20130101 9:01:00.005z20130101 9:02:00.005z20130101 9:06:00.005z20130101 9:07:00.005)r   r   rn   r  r  r$   r   r  )r'   sr/   r  r0   s        r1   *test_dt64_series_add_mixed_tick_DateOffsetzHTestTimestampSeriesArithmetic.test_dt64_series_add_mixed_tick_DateOffset  s     Io.	/0JKLRZZ%%a((**""1%)-.	:P0QR
 	vx0
w1RZZ&&q))BJJ,<,<Q,??-.	:P0QR
 	vx0r3   c                    t        t        t        d      g      j                  j	                  |      }t        t        t        gd| d      }t        t        gd| d      }t        j                  t         |z   |       d}t        j                  t        |      5  | |z    d d d        t        j                  t         |z   |       t        j                  t        |      5  | |z    d d d        t        j                  |t        z   |       t        j                  t        |z   |       t        j                  |t        z   |       t        j                  t        |z   |       y # 1 sw Y   xY w# 1 sw Y   xY w)NrB  zdatetime64[rD  r[   z-bad operand type for unary -: 'DatetimeArray'rQ   )
r   r   r   r  r/  r$   r   rT   rU   rV   )r'   r   datetime_seriesnat_series_dtype_timestampsingle_nat_dtype_datetimerW   s         r1   test_datetime64_ops_natz5TestTimestampSeriesArithmetic.test_datetime64_ops_nat  sh    #y'<!=>AAII$O%+S#JD6QR>S%T"$*C5+dV18M$N! 	to57QR=]]9C0 	9&&8	9 	D--/I	
 ]]9C0 	D&&)CC	D 	&,.H	
 	,,.H	
 	&,.H	
 	,,.H	
)	9 	9	D 	Ds    E,(E8,E58Fc                 	   d}t        t        dd|      d      }|j                         }t        j                  |j
                  d<   t        t        j                  ddd	
            }|j                         }t        j                  |j
                  d<   |j                  j                  J ||d   z   }|j                  j                  d       |d   z   j                  j                  |      }t        j                  ||       ||d   z   }|j                  j                  d       |d   z   j                  j                  |      }t        j                  ||       |d   |z   }|j                  j                  d       |d   z   j                  j                  |      }t        j                  ||       |d   |z   }|j                  j                  d       |d   z   j                  j                  |      }t        j                  ||       ||d   z
  }|j                  j                  d       |d   z
  j                  j                  |      }t        j                  ||       d}t        j                  t         |      5  |d   |z
   d d d        ||d   z
  }|j                  j                  d       |d   z
  j                  j                  |      }t        j                  ||       t        j                  t         |      5  |d   |z
   d d d        ||z   }|j                  j                  d       |z   j                  j                  |      }t        j                  ||       ||z   }|j                  j                  d       |z   j                  j                  |      }t        j                  ||       ||z
  }|j                  j                  d       |z
  j                  j                  |      }t        j                  ||       ||z
  }|j                  j                  d       |z
  j                  j                  |      }t        j                  ||       d}t        j                  t         |      5  ||z
   d d d        t        j                  t         |      5  ||z
   d d d        y # 1 sw Y   +xY w# 1 sw Y   xY w# 1 sw Y   MxY w# 1 sw Y   y xY w)Nr  z2000-01-01 09:00:00rP   r   r4   r   r7   z1 days 1 minrO   )r   rE   r:   r   r\  rQ   rd  )r   r   r   r!   rh   r  rn   ro   _valuesrE   r  r   r$   r   rT   rU   rV   )	r'   r   r!  r"  r   td2r/   r  rW   s	            r1   *test_operators_datetimelike_with_timezoneszHTestTimestampSeriesArithmetic.test_operators_datetimelike_with_timezones  s   Z 5qRHuUhhjffR''LMhhjff{{'''s1vvv!!$'#a&044@@D
vs+s1vvv!!$'#a&044@@D
vs+ Q#vv!!$'#a&044@@D
vs+Q#vv!!$'#a&044@@D
vs+s1vvv!!$'#a&044@@D
vs+2]]9C0 	FSL	 s1vvv!!$'#a&044@@D
vs+]]9C0 	FSL	 svv!!$'#-11==bA
vs+svv!!$'#-11==bA
vs+svv!!$'#-11==bA
vs+svv!!$'#-11==bA
vs+%]]9C0 	#I	]]9C0 	#I	 	7	 		 	&	 		 	s0   	R6	S>S'S6S SSS%N)ra   rb   rc   r  r#  r+  rT   rd   re   r   r   r   r4  r9  r<  rB  rE  rJ  rN  rq   r3   r1   r  r    s   B	: [[ :&	*(=sC:&	*(=y?TUJ' :&	*(=sC1a0)Aq2QSVW2 j\:j\:
 1a0#yTU7VW2	
010,	1
.-1&
H<r3   r  c                      e Zd Zd Zd Zd Zd Zd Zd Ze	j                  j                  dej                  ej                  g      d        Zd	 Zd
 Zd Ze	j                  j                  dej                  ej(                  ej                  g      d        Ze	j                  j                  dej.                  ej2                  g      d        Zy)TestDatetimeIndexArithmeticc                    |}t        t        d|      gdz        }t        j                  dd      }t	        dd|      }|j                  d       }||z   }t        j                  ||       ||z   }t        j                  ||       ||j                  z   }t        j                  ||       |j                  |z   }t        j                  ||       y Nr  rZ   r=   0 daysrA   r   	r   r   rn   ro   r   r  r$   r  r   r'   r(   r   r+   r7  r0   r/   s          r1   test_dti_add_tdiz,TestDatetimeIndexArithmetic.test_dti_add_tdi  s    Y|;<rAB  26lB2>&&t, s
fh/s
fh/ szz!
fh/c!
fh/r3   c                 X   |}t        t        d|      gdz        }t        j                  dd      }t	        dd|      }|j                  d       }t        t        d|      gdz        }||z  }t        j                  ||       t        j                  dd      }||z  }t        j                  ||       t        t        d|      gdz        }||j                  z  }t        j                  ||       t        j                  dd      }||z  }t        j                  ||       y rR  rT  rU  s          r1   test_dti_iadd_tdiz-TestDatetimeIndexArithmetic.test_dti_iadd_tdi  s   Y|;<rAB  26lB2>&&t, 	,2 >?"DE#
fh/##Hb9#
fh/ 	,2 >?"DE#**
fh/##Hb9#
fh/r3   c                    |}t        t        d|      gdz        }t        j                  dd      }t	        dd|d      }|j                  d       }||z
  }t        j                  ||       d}t        j                  t        |	      5  ||z
   d d d        ||j                  z
  }t        j                  ||       d
}t        j                  t        |	      5  |j                  |z
   d d d        y # 1 sw Y   dxY w# 1 sw Y   y xY w)Nr  rZ   r=   rS  rA   -1D)r   r   rE   z cannot subtract .*TimedeltaArrayrQ   r5  )r   r   rn   ro   r   r  r$   r  rT   rU   rV   r   )r'   r(   r   r+   r7  r0   r/   rW   s           r1   test_dti_sub_tdiz,TestDatetimeIndexArithmetic.test_dti_sub_tdi)  s    Y|;<rAB  26lB2EJ&&t, s
fh/0]]9C0 	#I	 szz!
fh/@]]9C0 	JJ	 		 		 	s   C5D5C>D
c                    |}t        t        d|      gdz        j                  |      }t        j                  dd|      }t        dd|d|      }|j                  d       }t        t        d|      gdz        j                  |      }||z  }t        j                  ||       |j                  j                         }||z  }t        j                  ||j                         |j                  j                         }	t        j                  |	||	       t        j                  |	|j                         d	}
t        j                  t         |

      5  ||z  }d d d        t        t        d|      gdz        j                  |      }||j"                  z  }t        j                  ||       t        j                  t         |

      5  |xj"                  |z  c_        d d d        t        j                  t         |

      5  |xj$                  |z  c_        d d d        y # 1 sw Y   xY w# 1 sw Y   OxY w# 1 sw Y   y xY w)Nr  rZ   r=   rS  r   rZ  r,  )outr5  rQ   )r   r   r/  rn   ro   r   r  r$   r  rJ   r   assert_datetime_array_equalr!   subtractrT   rU   rV   r   rL  )r'   r(   r   r   r+   r7  r0   r/   rK   r]  rW   s              r1   test_dti_isub_tdiz-TestDatetimeIndexArithmetic.test_dti_isub_tdiA  s   Y|;<rABJJ4P  2DAlB2EPTU&&t, 	,2 >?"DEMMdS#
fh/ iinns

&&sHNN;iinn
C#&
&&sHNN;@]]9C0 	3JC	 	,2 >?"DEMMdS#**
fh/]]9C0 	JJ#J	 ]]9C0 	KK3K	 		 		 		 	s$   H&H2H>&H/2H;>Ic                     t        dd|      }|j                  }||z
  }||z
  }t        j                  ||       |}||z   }||z   }t        j                  ||       ||z
  }||z
  }t        j                  ||       y )Nr   r   r   )r   r"   r$   r  )r'   r(   r+   rK   r/   r0   r7  s          r1   test_dta_add_sub_indexz2TestDatetimeIndexArithmetic.test_dta_add_sub_indexm  s    Q3CDiis9
fh/s9
fh/s9
fh/r3   c                 
   t        dd|      }t        dd|      j                  d      }t        g d      j                  |      }||z
  }t	        j
                  ||       ||z
  }t	        j
                  ||       d}t        j                  t        |      5  ||z
   d d d        t        j                  t        |      5  ||z
   d d d        ||z  }t	        j
                  ||       t        dd|      }t        dd|      }d	}t        j                  t        |      5  ||z
   d d d        t        d
t        j                  dg      j                  |      }t        ddt        j                  g      j                  |      }t        dt        j                  t        j                  g      j                  |      }||z
  }t	        j
                  ||       y # 1 sw Y   @xY w# 1 sw Y   $xY w# 1 sw Y   xY w)Nr   r   r   r  )r   r   r   r"  rQ   r   z$cannot add indices of unequal lengthrq  z
2012-01-03z
2012-01-02rw   )r   r   r   r/  r$   r  rT   rU   rV   r   r   r!   rh   )	r'   r   r+   rE  r0   r/   rW   dti1rS  s	            r1   test_sub_dti_dtiz,TestDatetimeIndexArithmetic.test_sub_dti_dti~  s    QT:J=II,W!),44T:s
fh/&
fh/K]]9C0 	SL	 ]]9C0 	&L	 	s

c8, *ad;*ad;4]]:S1 	4K	 lBFFLABJJ4PlL"&&ABJJ4P!8RVVRVV"<=EEdK
fh/-	 		 		 	s$   GG,&G9G),G69Hr   c                 V   t        t        d      t        d      t        d      t        d      g      } ||      }g dfd}t        t        d      gdz   D ]L  \  }}}}	}
 |||||	|
      }t	        ||||	|
	      } |||      } |||      }t        j                  ||       N y )
N20130301z20130228 23:00:00z20130228 22:00:00z20130228 21:00:00)rC   rO   mrD  r  c            	      r    t        j                  t        t        t         j                  |                   S r  )r!   sumri   mapr.  )args	intervalss    r1   r.  z_TestDatetimeIndexArithmetic.test_timedelta64_equal_timedelta_supported_ops.<locals>.timedelta64  s$    66$s2>>4CDEEr3   r7   rP   )r9   r  r  r  r  )r   r   r   rj   r   r$   r&   )r'   r   r)   r_   rL   r.  drO   rh  rD  r  nptdpytdr   r   rm  s                  @r1   .test_timedelta64_equal_timedelta_supported_opszJTestDatetimeIndexArithmetic.test_timedelta64_equal_timedelta_supported_ops  s    *%-.-.-.	
 S!.		F &q
Q8 	&NAq!Qq!Q2.D!1aQSTDS$-CS$-COOC%	&r3   c                    t        t        t        d      g      }t        t        t        d      g      }t        t        t        gd      }t        t        t        gd      }t        t        gd      }t        t        gd      }t	        j
                  ||z
  |       t	        j
                  ||z
  |       t	        j
                  | |z   |       t	        j
                  ||z
  |       t	        j
                  ||z
  |       t	        j
                  | |z   |       d}t        j                  t        |      5  ||z
   d d d        t	        j
                  ||z   |       t	        j
                  ||z   |       t	        j
                  ||z   |       t	        j
                  ||z   |       t	        j
                  ||z   |       t	        j
                  ||z   |       y # 1 sw Y   xY w)N1srB  r  r[   rw  zcannot subtract a datelikerQ   )	r   r   r   r   r$   r   rT   rU   rV   )r'   timedelta_seriesrG  nat_series_dtype_timedeltarH  rI  single_nat_dtype_timedeltarW   s           r1   )test_ops_nat_mixed_datetime64_timedelta64zETestDatetimeIndexArithmetic.test_ops_nat_mixed_datetime64_timedelta64  s   !3	$"89 #y'<!=>%+S#J>O%P"%+S#J>N%O"$*C58H$I!%+SE9J%K" 	779S	
 	88:T	
 	''/9;U	
 	&)BB&	

 	&)CC&	
 	''*DD&	
 +]]9C0 	988	9 	&)CC&	
 	&)CC&	

 	&)CC&	
 	&)CC&	

 	&)BB&	
 	%(BB&	
5	9 	9s   <G!!G*c                    t        dddd|      }t        j                  dd      }t        dddd|      }||z   t        j                  ||      fD ];  }t	        |t
              sJ t        j                  ||       |j                  dk(  r;J  t        d	ddd|      }||z
  t        j                  ||      fD ];  }t	        |t
              sJ t        j                  ||       |j                  dk(  r;J  |j                  d       }t        j                  t        j                  dd      t        j                  d
d      t        j                  dd      g      }t        g dd      j                  |      }||z   t        j                  ||      fD ]3  }t        j                  ||       |j                  |j                  k(  r3J  t        g dd      j                  |      }||z
  t        j                  ||      fD ]E  }t	        |t
              sJ t        j                  ||       |j                  |j                  k(  rEJ  y )Nru   r   2Dr   )r   rE   r   r   r:   rC   rc  
2010-12-31r7   )rc  z
2011-01-05z
2011-01-08r   )rz  ru   rc  )r   r!   r.  r  r   r   r$   r  rE   r_  r  r"   r/  )r'   r   r<  deltar  r/   s         r1   test_ufunc_coercionsz0TestDatetimeIndexArithmetic.test_ufunc_coercions	  s   qt#DQq#&qt#DQU{BFF3$67 	'Ffm444!!&#.;;$&&&	'
 qt#DQU{BKKU$;< 	'Ffm444!!&#.;;$&&&	' nnT"^^As#R^^As%;R^^As=ST
 6S

'$- 	 U{BFF3$67 	+F!!&#.;;#((***	+ 6S

'$- 	 U{BKKU$;< 	+Ffm444!!&#.;;#((***	+r3   c                 .   |}t        ddg||d         j                  d      }t        t        d      gdz  ||d	   
      }t        |t        d      z   ||d   
      }|d   |_        |j
                  |j
                  k(  sJ ||z   }t        j                  ||       ||z   }t        j                  ||       |t        d      z   }|j                  |z   }	t        j                  |	|       ||j                  z   }
t        j                  |
|       y )Nz2016-06-28 05:30z2016-06-28 05:31r   )r   r   rH   rP   )r  r7   r:   )r   r   )
r   r/  r   r   r   r\   r$   r   r   r  )r'   r(   namesr   r   r_   r0   r/   r  result3result4s              r1   test_dti_add_seriesz/TestDatetimeIndexArithmetic.test_dti_add_series.	  s   !34%(

'$- 	 i*+a/u58L%)A"66e%PQ(S a~~,,,u
vx0#+
w19Q//**u$
gx0#**$
gx0r3   c           
      D   |}|}t        dd||d         } |t        j                  j                         t        j                  j	                  d      g|d         }	t        ||	      }
t        j                  |      5   |||	      }d d d        t        t        t        |            D cg c]  } |||   |	|          c}|d   d	      }t        j                  ||
      j                  t              }t        j                  |       y # 1 sw Y   xY wc c}w )
Nr  r7   r   )r   r   r   r  r:   r   infer)r   rE   )r   rn   r  r  r  r   r$   r   r   rj   r   r%   rl   rf   r&   )r'   rJ  r(   r~  r   r   	other_boxr   r+   r,   r.   r  r  r0   s                 r1    test_dti_addsub_offset_arraylikez<TestDatetimeIndexArithmetic.test_dti_addsub_offset_arraylikeE	  s    
 $	qReAhG2::..0"**..1.2EFUSTXVc5)''(;< 	!S%.C	! !+0S?;aRAa!;%(QX
 ??8T299&A
X&	! 	! <s   
D.DDr  c                    |}t        dd|      }t        j                  ||      } |t        j                  j                         t        d      g      }t        ||      }	t        ddg|      }
t        j                  |
|	      j                  t              }
t        j                  |      5  ||z   }d d d        t        j                  |
       t        d	d
g|      }
t        j                  |
|	      j                  t              }
t        j                  |      5  ||z
  }d d d        t        j                  ||
       y # 1 sw Y   xY w# 1 sw Y   ,xY w)Nr  r7   r   r   r8   z
2017-01-31z
2017-01-06rZ   z
2016-12-31z
2016-12-29)r   r$   r%   rn   r  r  r   r   r   rl   rf   r   r&   )r'   rJ  r(   r)   r  r   r+   r-   r,   r.   r0   r/   s               r1    test_dti_addsub_object_arraylikez<TestDatetimeIndexArithmetic.test_dti_addsub_object_arraylike[	  s$    qR8^42::..0)2CDEeU+ ,!=BRS??8T299&A''(;< 	#U]F	#
) ,!=BRS??8T299&A''(;< 	#U]F	#
)	# 	#	# 	#s   0E!EEEN)ra   rb   rc   rV  rX  r[  r`  rb  re  rT   rd   re   r   r  r  rq  rw  r|  r  r   r  r  rn   r   r!   r"   r  rq   r3   r1   rP  rP    s    0,040#X0"$0T [[THLL(,,#?@& A&2C
J%+N1. [[THLL)..(,,#OP' Q'* [[[288RXX*>?* @*r3   rP  r  )r5   r   r:   r  )r   r7   c           	      4   t        t        d      t        d      t        d      t        d      t        d      g      j                  |      }t        |j                  | dz  |z   |j
                  j                        }|j                  d|j                   d	      }t        |      }|D cg c]&  }|t        j                  j                  | |
      z   ( }}t        |      j                  |j                        }	t        j                  ||	       y c c}w )Nr  r  r  r  r  r@  )resor)  rD  )r  r  )r   r   r/  r	   r  rJ   _cresor  r   rn   r  r
   r$   r  )
r  r  r   r+   shiftedshifted_dt64actualr   rawr0   s
             r1   test_shift_monthsr  u	  s     +,+,l#l#l#	
 gdm  388URZ&%8syy?O?OPG<<#chhZq 12L<(FJM
NQ1rzz$$5$@@
NC
NS!))#((3H&(+ Os   -+Dc                 8   t        ddd      }|j                  j                  d      }t        j                  t        d      D cg c]"  }t        j                  j                  |      g$ c}      }|j                  |j                  k(  sJ t        j                  |       5  ||z   }d d d        t        j                  |       5  |d d df   |d d df   z   j                  dd      }d d d        t        j                         t        j                  |       5  ||j                  t              z
  }d d d        j                  dk(  sJ t        d	 |j!                         D              sJ y c c}w # 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   ZxY w)
Nz
1994-02-132Wr   rD   )r   r:   r   r5   r:   c              3   :   K   | ]  }|j                   d k(    yw)r   N)r  ).0r  s     r1   	<genexpr>z6test_dt64arr_addsub_object_dtype_2d.<locals>.<genexpr>	  s     8"ryyA~8s   )r   rJ   reshaper!   r"   rj   rn   r  r  shaper$   r   rS   rl   rf   r   ravel)rJ  r+   rK   r  r,   r/   r0   r  s           r1   #test_dt64arr_addsub_object_dtype_2dr  	  s]    \a
8C
))

F
#CHH58<arzz~~a()<=E;;#))###		#	#$7	8 u		#	#$7	8 <1Iad+44R;< 1		#	#$7	8 +

6**+ ==F"""88888 = < <
+ +s*   'E3$E8$FF8FFFc                  2   t        g dd      } | t        j                  dd      z
  }t        t        gdz  d      }t	        j
                  ||       | t        j                  dd      z   }t        t        gdz  d      }t	        j
                  ||       y )Nl   CE|l   |< l   ({?M5datetime64[ms]r[   r   msr   timedelta64[ms]r   r!   r   r   r$   r   r.  r_   r/   r0   s      r1   (test_non_nano_dt64_addsub_np_nat_scalarsr  	  s    
<DT
UC2==--Fseai'89H68,2>>%..Fseai'78H68,r3   c                  .   t        g dd      } | t        j                  d      z
  }t        t        gdz  d      }t	        j
                  ||       | t        j                  d      z   }t        t        gdz  d      }t	        j
                  ||       y )Nr  r  r[   r   r   r  r  r  s      r1   1test_non_nano_dt64_addsub_np_nat_scalars_unitlessr  	  s~     <DT
UC2==''Fseai'89H68,2>>%((Fseai'78H68,r3   c                  2   t        g dd      } | t        j                  dd      z
  }t        t        gdz  d      }t	        j
                  ||       | t        j                  dd      z   }t        t        gdz  d      }t	        j
                  ||       y )N)i,0  iZ  iہ  zdatetime64[s]r[   r   rC   r   ztimedelta64[s]r  r  s      r1   9test_non_nano_dt64_addsub_np_nat_scalars_unsupported_unitr  	  s~    
&o
>C2==,,Fseai'78H68,2>>%--Fseai7H68,r3   )2r   r   r   r   	itertoolsr   r   numpyr!   rT   pandas._libs.tslibs.conversionr   pandas._libs.tslibs.offsetsr	   pandasrn   r
   r   r   r   r   r   r   r   r   pandas._testing_testingr$   pandas.corer   pandas.tests.arithmetic.commonr   r   r   r   r   rs   r   r  r}  r  r  rP  rd   re   r  r  r  r  r  rq   r3   r1   <module>r     s       > 4 
 
 
  ! m* m*`wD wDtW W|m m`K0 K0\w wtD DN}* }*@ *-:., / .,&90	-
-	-r3   