
     f                     
   d dl Z d dlZd dlZd dlmZmZmZmZ d dl	m
Z
 d dlZd dl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 d dlmZmZmZ ej:                  j=                  d      ej:                  j?                  d	      ej:                  jA                         gZ! ejD                   ed
      jG                          ejH                  d
d       ed
      ge!z         d        Z% ejD                   ejH                  dd       ed      jG                          ed      ge!z         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- G d" d#      Z.y)$    N)IncompatibleFrequencyPeriod	Timestamp	to_offset)PerformanceWarning)PeriodIndexSeries	TimedeltaTimedeltaIndexperiod_range)ops)TimedeltaArray)assert_invalid_addsub_typeassert_invalid_comparisonget_upcast_box         )minutess)seconds)paramsc                     | j                   S )zp
    Several timedelta-like and DateOffset instances that are _not_
    compatible with Hourly frequencies.
    paramrequests    ]/var/www/html/py/new-venv/lib/python3.12/site-packages/pandas/tests/arithmetic/test_period.py
not_hourlyr   )        ==    im  Ddaysc                     | j                   S )z{
    Several timedelta-like and DateOffset instances that are _not_
    compatible with Monthly or Annual frequencies.
    r   r   s    r   mismatched_freqr&   9   r    r!   c                      e Zd Zej                  j                  dd edd      g      d        Zd Zej                  j                  dd e	d	       e
d
      dddddg      d        Zej                  j                  d ej                  dd
      j                   ej                  dd
      j                   ej"                  d
       ej"                  d
      j%                  ej&                         e ed
            g d ej"                  dd       ej"                  dd      j%                  e       ej.                  g d      g	      d        Zej                  j                  deej                  d g      d        Zy)TestPeriodArrayLikeComparisonsother2017r"   freqc                     t        g dd      }t        j                  ||      }t        ||d      }t	        j
                  g d      }t        j                  ||      }||k(  }t        j                  ||       y )N)r*   r*   2018r"   r+   TTTFr   tmbox_expectedr   nparrayassert_equal)selfr)   box_with_arrayidxxboxexpectedresults          r   test_eq_scalarz-TestPeriodArrayLikeComparisons.test_eq_scalarR   sc    2=ooc>2c5$/88/0??8T2
)r!   c                 @   t        dd      }t        j                  |j                         d         }t	        j
                  ||      }t        ||d      }||k  }t        j                  g d      }t	        j
                  ||      }t	        j                  ||       y )N2000   periodsr   TTFFF)r   r3   r4   to_numpyr1   r2   r   r5   )r6   r7   pir)   r9   r;   r:   s          r   test_compare_zerodimz3TestPeriodArrayLikeComparisons.test_compare_zerodim_   s}     &!,q)*__R0b%.u8878??8T2
)r!   scalarfooz
2021-01-01r?   r#   	   g      #@  FNc                 d    t        dd      }t        j                  ||      }t        |||       y Nr>   r?   r@   r   r1   r2   r   )r6   r7   rF   rD   parrs        r   test_compare_invalid_scalarz:TestPeriodArrayLikeComparisons.test_compare_invalid_scalarm   s,      &!,r>2!$?r!   r>   r@   1D)rI   i  i  i  i  c                 d    t        dd      }t        j                  ||      }t        |||       y rK   rL   )r6   r7   r)   rD   rM   s        r   test_compare_invalid_listlikez<TestPeriodArrayLikeComparisons.test_compare_invalid_listlike   s,      &!,r>2!$~>r!   	other_boxc                 ,    | j                  t              S N)astypeobjectxs    r   <lambda>z'TestPeriodArrayLikeComparisons.<lambda>   s    QXXfEU r!   c                    t        dd      }t        j                  ||      } ||      }t        ||d      }t	        j
                  g d      }t        j                  ||      }||k(  }t        j                  ||       ||k  }t        j                  ||       ||k\  }t        j                  ||       ||k7  }t        j                  ||        ||k  }t        j                  ||        ||kD  }t        j                  ||         ||d d d         }t	        j
                  g d      }t        j                  ||      }||k(  }t        j                  ||       t	        j
                  g d      }t        j                  ||      }||k  }t        j                  ||       t	        j
                  g d	      }t        j                  ||      }||k\  }t        j                  ||       t	        j
                  g d
      }t        j                  ||      }||k7  }t        j                  ||       t	        j
                  g d      }t        j                  ||      }||k  }t        j                  ||       t	        j
                  g d      }t        j                  ||      }||kD  }t        j                  ||       y )Nr>      r@   T)TTTTT)FFTFF)TTTFF)FFTTT)TTFTT)TTFFF)FFFTT)r   r1   r2   r   r3   r4   r5   )	r6   r7   rR   rD   rM   r)   r9   r:   r;   s	            r   test_compare_object_dtypez8TestPeriodArrayLikeComparisons.test_compare_object_dtype   s:   &!,r>2"dE4088:;??8T2
)
)
)
	*
	*
	*"TrT(#88>???8T2
)88<=??8T2
)88<=??8T2
)88;<??8T2
)88=>??8T2
)88=>??8T2
)r!   )__name__
__module____qualname__pytestmarkparametrizer   r<   rE   r   r
   rN   pd
date_ranger4   timedelta_ranger3   arangerU   float64listrangerV   IndexrQ   r]    r!   r   r(   r(   M   s   
 [[Wvvf3/G&HI
* J
** [[l#1		
@@ [[BMM&!,22BtQ/55BIIaLBIIaL

+qN$BIIdD!BIIdD!((0BHH-.	
??
 [[[4;U*VW6* X6*r!   r(   c                      e Zd Zd Zd Zej                  j                  dg d      d        Zej                  j                  dg d      d        Z	ej                  j                  dg d      d        Z
ej                  j                  dg d      d        Zej                  j                  dg d      d	        Zej                  j                  d
edg      d        Zy)TestPeriodIndexComparisonsc                 ~   t        ddd      }|d   }||k  }|j                  |j                  d   k  }t        j                  ||       |j                  j	                  dd      |k  }t        j                  ||j	                  dd             |t        j                  |      k  }t        j                  ||       y )N2007-01   MrA   r,   
   r   )r   valuesr1   assert_numpy_array_equalreshaper3   r4   )r6   r8   perr;   exps        r   test_pi_cmp_periodz-TestPeriodIndexComparisons.test_pi_cmp_period   s    9bs;"gsjj3::b>)
##FC0 ##B*S0
##FCKKA,>? rxx}$
##FC0r!   c                    t        ddd      }|d   }|D cg c]  }||kD  	 }}t        j                  ||      }t        ||d      }t        j                  ||      }||kD  }t        j                  ||       |d   }||kD  }|D cg c]  }||kD  	 }}t        j                  ||      }t        j                  ||       y c c}w c c}w )Nz
2000-01-01rt   r"   rs      Tr[   )r   r1   r2   r   r5   )	r6   r7   rD   valrX   r:   serr9   r;   s	            r   test_parr_cmp_period_scalar2z7TestPeriodIndexComparisons.test_parr_cmp_period_scalar2   s    ,=e%'(AG((oob.1c3-??8T2s
)es%'(AG((??8T2
) ) )s   CCr,   )rr   2M3Mc                    t        g d|      }t        j                  ||      }t        d|      }t	        ||d      }t        j                  g d      }t        j                  ||      }t        j                  ||k(  |       t        j                  ||k(  |       t        j                  g d      }t        j                  ||      }t        j                  ||k7  |       t        j                  ||k7  |       t        j                  g d      }t        j                  ||      }t        j                  ||kD  |       t        j                  ||k  |       t        j                  g d      }t        j                  ||      }t        j                  ||k  |       t        j                  ||kD  |       t        j                  g d	      }t        j                  ||      }t        j                  ||k\  |       t        j                  ||k  |       t        j                  g d
      }t        j                  ||      }t        j                  ||k  |       t        j                  ||k\  |       y )N2011-012011-022011-032011-04r+   r   TFTFFTFTT)FFTTrB   )FTTT)TTFF)r   r1   r2   r   r   r3   r4   r5   )r6   r,   r7   baserx   r9   ry   s          r   test_parr_cmp_period_scalarz6TestPeriodIndexComparisons.test_parr_cmp_period_scalar   s    GdSt^4YT*dC.hh23ooc4(
S)
tS)hh01ooc4(
S)
tS)hh12ooc4(
s
C(
d
C(hh23ooc4(
s
C(
d
C(hh01ooc4(
S)
tS)hh12ooc4(
S)
tS)r!   c                    t        g d|      }t        j                  ||      }t        g d|      }t        ||d      }t	        j
                  g d      }t        j                  ||      }t        j                  ||k(  |       t	        j
                  g d      }t        j                  ||      }t        j                  ||k7  |       t	        j
                  g d      }t        j                  ||      }t        j                  ||kD  |       t	        j
                  g d      }t        j                  ||      }t        j                  ||k  |       t	        j
                  g d	      }t        j                  ||      }t        j                  ||k\  |       t	        j
                  g d
      }t        j                  ||      }t        j                  ||k  |       y )Nr   r+   )r   r   r   2011-05TFFTFTTFTr   TFFTFTTFr   r0   )r6   r,   r7   r   r8   r9   ry   s          r   test_parr_cmp_piz+TestPeriodIndexComparisons.test_parr_cmp_pi  sd    GdSt^4 FTRdC.hh23ooc4(
S)hh01ooc4(
S)hh23ooc4(
s
C(hh12ooc4(
s
C(hh12ooc4(
S)hh01ooc4(
S)r!   c                    t        g d|      }t        j                  ||      }d| d}t        j                  t
        |      5  |t        dd      k   d d d        t        j                  t
        |      5  t        dd      |k\   d d d        t        g dd      }d	}|t        j                  t        j                  fv r|n|}t        j                  t
        |      5  ||k   d d d        d| d}t        j                  t
        |      5  |t        dd
      k   d d d        t        j                  t
        |      5  t        dd
      |k\   d d d        t        g dd
      }d}|t        j                  t        j                  fv r|n|}t        j                  t
        |      5  ||k   d d d        y # 1 sw Y   mxY w# 1 sw Y   FxY w# 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   r+   )Invalid comparison between dtype=period\[z\] and Periodmatch2011Y)r   201220132014z@Invalid comparison between dtype=period\[Y-DEC\] and PeriodArray4Mz=Invalid comparison between dtype=period\[4M\] and PeriodArray)
r   r1   r2   ra   raises	TypeErrorr   to_arrayrd   r4   )r6   r,   r7   r   msgr8   rev_msgidx_msgs           r    test_parr_cmp_pi_mismatched_freqz;TestPeriodIndexComparisons.test_parr_cmp_pi_mismatched_freq?  s    GdSt^4:4&N]]9C0 	-F6,,	- ]]9C0 	-6$,	- :EU+RXX/FF'C]]9G4 	CK	 ;4&N]]9C0 	.F6--	. ]]9C0 	.6%-	. :FR+RXX/FF'C]]9G4 	CK	 	1	- 	-	- 	-	 	
	. 	.	. 	.	 	sH   G;G&GG)	G54HGGG&)G25G>H
c                 |   t        g d|      }|d   }||kD  }t        j                  g d      }t        j                  ||       ||k  }t        j                  ||       |t
        j                  k(  }t        j                  g d      }t        j                  ||       t
        j                  |k(  }t        j                  ||       |t
        j                  k7  }t        j                  g d      }t        j                  ||       t
        j                  |k7  }t        j                  ||       t        g d|      }||k  }t        j                  g d      }t        j                  ||       ||k(  }t        j                  g d      }t        j                  ||       ||k7  }t        j                  g d      }t        j                  ||       ||k(  }t        j                  g d	      }t        j                  ||       ||k7  }t        j                  g d
      }t        j                  ||       y )Nr   r   NaTr   r+   r   FFFTFFFFTTTTr   r   r   r   rB   r   r   )r   r3   r4   r1   rv   rd   r   )r6   r,   idx1rx   r;   ry   idx2s          r   test_pi_cmp_natz*TestPeriodIndexComparisons.test_pi_cmp_natb  s   C$O1ghh23
##FC0t
##FC0hh34
##FC04
##FC0hh/0
##FC04
##FC0C$Ohh23
##FC0hh34
##FC0hh/0
##FC0hh01
##FC0hh23
##FC0r!   c                 &   t        g d|      }t        g dd      }d| d}t        j                  t        |      5  ||kD   d d d        ||k(  }t	        j
                  g dt        	      }t        j                  ||       y # 1 sw Y   BxY w)
Nr   r+   r   r   r   z\] and PeriodArrayr   r   dtype)	r   ra   r   r   r3   r4   boolr1   rv   )r6   r,   r   diffr   r;   r:   s          r   &test_pi_cmp_nat_mismatched_freq_raiseszATestPeriodIndexComparisons.test_pi_cmp_nat_mismatched_freq_raises  s    C$OC$O:4&@RS]]9C0 	4K	 888E
##FH5	 	s    BBr   Nc                 4   t        t        d      t        j                  t        d      g      }t        t        j                  t        j                  t        d      g      }|"|j	                  |      }|j	                  |      }||k(  }t        j                  g d      }t        j                  ||       ||k7  }t        j                  g d      }t        j                  ||       t        j                  g d      }t        j                  |t        j                  k(  |       t        j                  t        j                  |k(  |       t        j                  g d      }t        j                  |t        j                  k7  |       t        j                  t        j                  |k7  |       t        j                  g d      }t        j                  |t        j                  k  |       t        j                  t        j                  |kD  |       y )N
2011-01-01
2011-01-03)FFTr/   )FFF)TTT)	r   r   rd   r   rU   r3   r4   r1   rv   )r6   r   leftrightr;   r:   s         r   test_comp_natz(TestPeriodIndexComparisons.test_comp_nat  sn   F<0"&&&:NOPRVVRVVVL-ABC;;u%DLL'E8801
##FH588/0
##FH58812
##DBFFNH=
##BFFeOX>88./
##DBFFNH=
##BFFdNH=8812
##D266M8<
##BFFTM8<r!   )r^   r_   r`   rz   r   ra   rb   rc   r   r   r   r   r   rV   r   rl   r!   r   rn   rn      s    1"*& [[V%67#* 8#*J [[V%67 * 8 *D [[V%67  8 D [[V%67)1 8)1V [[V%67
6 8
6 [[Wvtn5= 6=r!   rn   c                       e Zd Zd Zy)TestPeriodSeriesComparisonsc           	         t        t        dd      t        dd      t        dd      t        dd      g      }t        t        dd      t        d	d      t        dd      t        d
d      g      }t        g d      }t        j                  ||k(  |       t        g d      }t        j                  ||k7  |       t        g d      }t        j                  ||kD  |       t        g d      }t        j                  ||k  |       t        g d      }t        j                  ||k\  |       t        g d      }t        j                  ||k  |       y )Nr   r   r+   r   rr   r   r   r   r   r   r   r   r   r   r   r   )r	   r   r1   assert_series_equal)r6   r   r~   ry   s       r   (test_cmp_series_period_series_mixed_freqzDTestPeriodSeriesComparisons.test_cmp_series_period_series_mixed_freq  s.   vC(ys+vC(ys+	
 vC(ys+vC(ys+	
 01
ts{C0./
ts{C001
tcz3//0
tcz3//0
ts{C0./
ts{C0r!   N)r^   r_   r`   r   rl   r!   r   r   r     s    $1r!   r   c                   "    e Zd ZdZd Zd Zd Zy)*TestPeriodIndexSeriesComparisonConsistency2Test PeriodIndex and Period Series Ops consistencyc                 .   t        |      } ||      }t        |t        j                  t        j
                  f      sJ t        j                  ||       t        |      } ||      }t        ||j                        }t        j                  ||       y Nname)r   
isinstancerd   rk   r3   ndarrayr1   r5   r	   r   r   )r6   ru   funcr:   r8   r;   r   ry   s           r   _checkz1TestPeriodIndexSeriesComparisonConsistency._check  sv     &!c (RXXrzz$:;;;
)6NaXFKK0
vs+r!   c                    t        g ddd      }|d   fd}t        j                  g dt        j                        }| j	                  |||       fd	}| j	                  |||       fd
}t        j                  g dt        j                        }| j	                  |||       fd}| j	                  |||       fd}t        j                  g dt        j                        }| j	                  |||       fd}t        j                  g dt        j                        }| j	                  |||       fd}t        j                  g dt        j                        }| j	                  |||       y )Nr   rr   r8   r,   r   r   c                     | k(  S rT   rl   rX   rx   s    r   rY   zPTestPeriodIndexSeriesComparisonConsistency.test_pi_comp_period.<locals>.<lambda>      a3h r!   r   r   c                     | k(  S rT   rl   r   s    r   rY   zPTestPeriodIndexSeriesComparisonConsistency.test_pi_comp_period.<locals>.<lambda>       cQh r!   c                     | k7  S rT   rl   r   s    r   rY   zPTestPeriodIndexSeriesComparisonConsistency.test_pi_comp_period.<locals>.<lambda>  r   r!   r   c                     | k7  S rT   rl   r   s    r   rY   zPTestPeriodIndexSeriesComparisonConsistency.test_pi_comp_period.<locals>.<lambda>  r   r!   c                     | k\  S rT   rl   r   s    r   rY   zPTestPeriodIndexSeriesComparisonConsistency.test_pi_comp_period.<locals>.<lambda>	  r   r!   )TTTFc                     | kD  S rT   rl   r   s    r   rY   zPTestPeriodIndexSeriesComparisonConsistency.test_pi_comp_period.<locals>.<lambda>      a#g r!   r   c                     | k\  S rT   rl   r   s    r   rY   zPTestPeriodIndexSeriesComparisonConsistency.test_pi_comp_period.<locals>.<lambda>  r   r!   r   r3   r4   bool_r   r6   r8   fry   rx   s       @r   test_pi_comp_periodz>TestPeriodIndexSeriesComparisonConsistency.test_pi_comp_period  s   8s
 !fhh2"((CCC CC hh0ACC CC hh0ACC hh2"((CCC hh0ACC r!   c                    t        g ddd      }|d   fd}t        j                  g dt        j                        }| j	                  |||       fd	}| j	                  |||       d
 }t        j                  g dt        j                        }| j	                  |||       d }| j	                  |||       fd}t        j                  g dt        j                        }| j	                  |||       fd}| j	                  |||       d }t        j                  g dt        j                        }| j	                  |||       d }| j	                  |||       fd}t        j                  g dt        j                        }| j	                  |||       fd}t        j                  g dt        j                        }| j	                  |||       d }t        j                  g dt        j                        }| j	                  |||       d }t        j                  g dt        j                        }| j	                  |||       y )Nr   r   r   r   rr   r8   r   r   c                     | k(  S rT   rl   r   s    r   rY   zTTestPeriodIndexSeriesComparisonConsistency.test_pi_comp_period_nat.<locals>.<lambda>  r   r!   r   r   c                     | k(  S rT   rl   r   s    r   rY   zTTestPeriodIndexSeriesComparisonConsistency.test_pi_comp_period_nat.<locals>.<lambda>  r   r!   c                 (    | t         j                  k(  S rT   rd   r   rW   s    r   rY   zTTestPeriodIndexSeriesComparisonConsistency.test_pi_comp_period_nat.<locals>.<lambda>!      a266k r!   r   c                 (    t         j                  | k(  S rT   r   rW   s    r   rY   zTTestPeriodIndexSeriesComparisonConsistency.test_pi_comp_period_nat.<locals>.<lambda>$      bffk r!   c                     | k7  S rT   rl   r   s    r   rY   zTTestPeriodIndexSeriesComparisonConsistency.test_pi_comp_period_nat.<locals>.<lambda>'  r   r!   r   c                     | k7  S rT   rl   r   s    r   rY   zTTestPeriodIndexSeriesComparisonConsistency.test_pi_comp_period_nat.<locals>.<lambda>*  r   r!   c                 (    | t         j                  k7  S rT   r   rW   s    r   rY   zTTestPeriodIndexSeriesComparisonConsistency.test_pi_comp_period_nat.<locals>.<lambda>-  r   r!   r   c                 (    t         j                  | k7  S rT   r   rW   s    r   rY   zTTestPeriodIndexSeriesComparisonConsistency.test_pi_comp_period_nat.<locals>.<lambda>0  r   r!   c                     | k\  S rT   rl   r   s    r   rY   zTTestPeriodIndexSeriesComparisonConsistency.test_pi_comp_period_nat.<locals>.<lambda>3  r   r!   )TFTFc                     | k  S rT   rl   r   s    r   rY   zTTestPeriodIndexSeriesComparisonConsistency.test_pi_comp_period_nat.<locals>.<lambda>7  r   r!   rB   c                 (    | t         j                  kD  S rT   r   rW   s    r   rY   zTTestPeriodIndexSeriesComparisonConsistency.test_pi_comp_period_nat.<locals>.<lambda>;  s    a"&&j r!   c                 (    t         j                  | k\  S rT   r   rW   s    r   rY   zTTestPeriodIndexSeriesComparisonConsistency.test_pi_comp_period_nat.<locals>.<lambda>?  r   r!   r   r   s       @r   test_pi_comp_period_natzBTestPeriodIndexSeriesComparisonConsistency.test_pi_comp_period_nat  s   43U
 !fhh2"((CCC CC !hh3288DCC !CC hh0ACC CC !hh/rxx@CC !CC hh1BCC hh2"((CCC  hh3288DCC !hh3288DCC r!   N)r^   r_   r`   __doc__r   r   r   rl   r!   r   r   r     s    <, !<,!r!   r   c                       e Zd Zd Zy)TestPeriodFrameArithmeticc                 2   t        j                  t        dd      t        dd      gt        dd      t        dd      gd      }|d   j                  d	k(  sJ |d
   j                  d	k(  sJ t        dd      }|j                  }t        j                  t        j                  d|z  d|z  gt              t        j                  d|z  d|z  gt              d      }t        j                  ||z
  |       t        j                  ||z
  d|z         t        j                  t        dd      t        dd      gt        dd      t        dd      gd      }|d   j                  d	k(  sJ |d
   j                  d	k(  sJ t        j                  t        j                  d|z  d|z  gt              t        j                  d|z  d|z  gt              d      }t        j                  ||z
  |       t        j                  ||z
  d|z         y )Nz2015-01rr   r+   z2015-022014-01z2014-02)ABr   	Period[M]r   z2015-03r   r   r         r\   z2015-05z2015-06r?      )
rd   	DataFramer   r   r,   r3   r4   rV   r1   assert_frame_equal)r6   dfpoffry   df2s         r   test_ops_frame_periodz/TestPeriodFrameArithmetic.test_ops_frame_periodI  s   \\YS16)#3NOYS16)#3NO
 #w}}+++#w}}+++93'ffllXXq3wC0?XXrCxc2&A
 	a"fc*
b1fb3h/llYS16)#3NOYS16)#3NO
 3x~~,,,3x~~,,,llXXq3wC0?XXrCxc2&A
 	cBh,
b3hS1r!   N)r^   r_   r`   r   rl   r!   r   r   r   H  s    '2r!   r   c                   j   e Zd Zd Zd Zd Zd Zej                  j                  dg d      d        Z
ej                  j                  dg d      ej                  j                  dej                  j                  d	fej                  j                  d
fej                  j                  dfej                  j                   dfg      d               Zej                  j                  d ed       ed      j'                          ed      j)                          ej*                  ddd       ej*                  ddd       ej*                  ddd      j,                   ej*                  ddd      j,                  d ej0                  g d      g	      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 ej0                  ej:                  g      d!        Zej                  j                  d ej0                  ej:                  g      d"        Zd# Z d$ Z!ej                  j                  d%d& ej0                  d&ejD                  '      g      d(        Z#d) Z$d* Z%ej                  j                  d+d,d-g      d.        Z&d/ Z'ej                  j                  d0ej0                  ej:                  g      ej                  j                  d1e(jR                  e*jV                  g      d2               Z,ej                  j                  d0ej0                  ej:                  g      d3        Z-d4 Z.ej                  j                  d5g d6      d7        Z/d8 Z0d9 Z1d: Z2d; Z3d< Z4d= Z5d> Z6d? Z7d@ Z8dA Z9ej                  j                  d+d,d-g      dB        Z:ej                  j                  d ej0                  dCgdDz  dE'       e;jx                  dCgdDz  dE'      g      dF        Z=dG Z>dH Z?dI Z@y)JTestPeriodIndexArithmeticc                 @   t        ddd      }t        ddd      }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)N1/1/2000r"   r[   r,   rA   1/6/2000z/unsupported operand type\(s\) for \+: .* and .*r   )r   r1   r2   ra   r   r   )r6   r7   rngr)   r   s        r   test_parr_add_iadd_parr_raisesz8TestPeriodIndexArithmetic.test_parr_add_iadd_parr_raisesz  s    :C;Zc1= ooc>2
 A]]9C0 	%K	 ]]9C0 	5LC	 		 		 	s   B9BBBc                     t        ddd      }t        ddd      }|j                  }t        j                  d|z  gdz        }||z
  }t	        j
                  ||       ||z  }t	        j
                  ||       y )Nr  r"   r[   r  r  )r   r,   rd   rk   r1   assert_index_equal)r6   r  r)   r   r:   r;   s         r   test_pi_sub_isub_piz-TestPeriodIndexArithmetic.test_pi_sub_isub_pi  ss    
 :C;Zc1=hh88R#XJN+u
fh/u
c8,r!   c                 N   t        ddd      }|dd  j                  dt        j                        }|dd  j	                  |dd        sJ ||z
  }|j
                  }t        j                  t        j                  d|z  d|z  d|z  d|z  g      }t        j                  ||       y )Nr  r"   r[   r  r   r   )	r   insertrd   r   equalsr,   rk   r1   r
  )r6   r  r)   r;   r   r:   s         r   test_pi_sub_pi_with_natz1TestPeriodIndexArithmetic.test_pi_sub_pi_with_nat  s    :C;ABq"&&)QRyAB(((uhh88RVVQWa#gq3wCHI
fh/r!   c                    t        ddd      }t        ddd      }t        j                  ||      }t        j                  ||      }d}t        j                  t
        |      5  ||z
   d d d        y # 1 sw Y   y xY w)	Nr  r"   r[   r  r  hz;Input has different freq=[hD] from PeriodArray\(freq=[Dh]\)r   )r   r1   r2   ra   r   r   )r6   r7   box_with_array2r  r)   r   s         r    test_parr_sub_pi_mismatched_freqz:TestPeriodIndexArithmetic.test_parr_sub_pi_mismatched_freq  sn    :C;Zc1=ooc>27L]]0< 	%K	 	 	s   &A55A>nr   r   r|   r?   c                    d}d}t        |g ||            }t        |g ||            }t        |g|j                  j                        t        |g|j                  j                        z
  }t        j                  ||z
  |       y )N1991090519920406r+   )r   r,   r   r1   r
  )r6   tick_classesr  p1_dp2_dp1p2r:   s           r   test_sub_n_gt_1_ticksz/TestPeriodIndexArithmetic.test_sub_n_gt_1_ticks  sy     $l1o6$l1o6vBGGLL9KF=
 
 	rBw2r!   zoffset, kwd_namemonthstartingMonthNweekdayc                    ||dini }d}d} ||fddi|}t        |g|      }t        |g|      }	|	|z
  }
t        |g|j                        t        |g|j                        z
  }t        j                  |
|       y )Nr|   r  r  	normalizeFr+   )r   r   r1   r
  )r6   offsetkwd_namer  kwdsr  r  r,   r  r  r;   r:   s               r   test_sub_n_gt_1_offsetsz1TestPeriodIndexArithmetic.test_sub_n_gt_1_offsets  s     !) 4!}"a151D1$d+$d+bvDII6F:
 
 	fh/r!   r)   
2016-01-01r|   r  rs   zEurope/Brussels)rA   tzr   z
Asia/TokyogQ	@)g       @g      @g      @c                 4   t        ddd      }t        j                  ||      }dj                  g d      }t	        |||       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)Nr  r"   r|   r  |)z!(:?cannot add PeriodArray and .*)z&(:?cannot subtract .* from (:?a\s)?.*)z3(:?unsupported operand type\(s\) for \+: .* and .*)z1unsupported operand type\(s\) for [+-]: .* and .*r   )r   r1   r2   joinr   ra   r   r   )r6   r)   r7   r  r   s        r   test_parr_add_sub_invalidz3TestPeriodIndexArithmetic.test_parr_add_sub_invalid  s    & :C;ooc>2hh
 	#3s3]]9C0 	%K	]]9C0 	CK	]]9C0 	%K	]]9C0 	CK	 		 		 		 		 	s0    C*	C62DD*C36C?DDc                    t        ddd      }t        g d      }|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        d}t        j                  t
        |      5  ||z
   d d d        y # 1 sw Y   xY w# 1 sw Y   jxY w# 1 sw Y   MxY w# 1 sw Y   y xY w)	Nr  Qr|   r  -1 Dayr1  r1  zCCannot add or subtract timedelta64\[ns\] dtype from period\[Q-DEC\]r   z/cannot subtract PeriodArray from TimedeltaArray)r   r   ru   ra   r   r   )r6   r  tditdarrr   s        r   *test_pi_add_sub_td64_array_non_tick_raiseszDTestPeriodIndexArithmetic.test_pi_add_sub_td64_array_non_tick_raises  s    :C;;<

T]]9C0 	%K	]]9C0 	CK	 ]]9C0 	%K	@]]9C0 	CK	 		 		 		 		 	s0   C.CC)C5CC&)C25C>c                    t        ddd      }t        g d      }|j                  }t        ddd      }||z   }t        j                  ||       ||z   }t        j                  ||       ||z   }t        j                  ||       ||z   }t        j                  ||       t        ddd      }||z
  }t        j                  ||       ||z
  }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  90Dr|   r  r0  z
12/31/1999z1/2/2000cannot subtract .* from .*r   )r   r   ru   r1   r
  ra   r   r   )r6   r  r2  r3  r:   r;   r   s          r   test_pi_add_sub_td64_array_tickz9TestPeriodIndexArithmetic.test_pi_add_sub_td64_array_tick  s8    :E1=;<

5!Ds
fh/u
fh/s
fh/
fh/
Bs
fh/u
fh/+]]9C0 	CK	 ]]9C0 	#I	 		 		 	s   D;,E;EEpi_freq)r"   Wr/  r  tdi_freqc                 (   |}|t         j                  t        j                  fvr|nt         j                  }t        ddg|      }t        d      |z   }|j                  |      }t        j                  ||      }	|dk(  r||	z
  }
|j                  d      |z
  j                  |      }t        j                  ||      }t        j                  |
|       |d   |	z
  }
|d   j                  d      |z
  j                  |      }t        j                  ||      }t        j                  |
|       y |dk(  rXd	}t        j                  t        |
      5  ||	z
   d d d        t        j                  t        |
      5  |d   |	z
   d d d        y d}t        j                  t        |
      5  ||	z
   d d d        t        j                  t        |
      5  |d   |	z
   d d d        y # 1 sw Y   xY w# 1 sw Y   y xY w# 1 sw Y   NxY w# 1 sw Y   y xY w)Nz1 hoursz2 hoursr+   z2018-03-07 17:16:40r  r   r   r"   nCannot add/subtract timedelta-like from PeriodArray that is not an integer multiple of the PeriodArray's freq.r   z"Cannot add or subtract timedelta64)rd   r4   r1   r   rk   r   r   	to_periodr2   to_timestampr5   ra   r   r   r   )r6   r7   r;  r9  boxr9   r2  dtirD   td64objr;   r:   r   s                r   test_parr_sub_td64arrayz1TestPeriodIndexArithmetic.test_parr_sub_td64array5  s    "((BKK!88sbhhi3(C-.4]]7# //#s+c>'\F,s2==gFHx6HOOFH- UW_F1**3/#5@@IHx5HOOFH-^E  4C@ W 4C@  1    7Cy4 Wy4  1           s0   G$:	G0)G<	H$G-0G9<HHr@  c                    t        t        d      t        d      g      } |t        j                  j	                  dd      t        j                  j	                  dd      g      }t        t        d      t        d      g      j                  t              }t        j                  t              5  ||z   }d d d        t        j                  |       t        j                  t              5  ||z   }d d d        t        j                  |       t        j                  t        j                  j                  d	      t        j                  j                  d	      g      }d
}t        j                   t"        |      5  t        j                  t              5  ||z    d d d        d d d        t        j                   t"        |      5  t        j                  t              5  ||z    d d d        d d d        y # 1 sw Y   IxY w# 1 sw Y   xY w# 1 sw Y   wxY w# 1 sw Y   {xY w# 1 sw Y   DxY w# 1 sw Y   y xY w)N2015Q12016Q2r      r  r   2015Q22015Q4r  z1Input cannot be converted to Period\(freq=Q-DEC\)r   )r   r   rd   offsets
QuarterEndrU   rV   r1   assert_produces_warningr   r
  r3   r4   HourMinutera   r   r   )	r6   r@  rD   offsr:   resres2
unanchoredr   s	            r   test_pi_add_offset_arrayz2TestPeriodIndexArithmetic.test_pi_add_offset_arrayf  s    &*F8,<=>

%%%<

%%"%=
 x 0&2BCDKKFS''(:; 	t)C	
c8,''(:; 	"9D	
dH-XXrzz3RZZ5F5F5F5LMN
 C]]0< 	 ++,>?  Z 	  ]]0< 	 ++,>?  R 	  	 	 		 	   	  	    	  	 s`   3H 0HH&H$H&H>)H2/H> H
HH#	H&&H/2H;	7H>>Ic                    t        t        d      t        d      g      } |t        j                  j	                  dd      t        j                  j	                  dd      g      }t        t        t        |            D cg c]  }||   ||   z
   c}      }|j                  t              }t        j                  t              5  ||z
  }d d d        t        j                  |        |t        j                  j                         t        j                  j                  d      g      }d	}t        j                   t"        |
      5  t        j                  t              5  ||z
   d d d        d d d        t        j                   t"        |
      5  t        j                  t              5  ||z
   d d d        d d d        y c c}w # 1 sw Y   xY w# 1 sw Y   oxY w# 1 sw Y   sxY w# 1 sw Y   <xY w# 1 sw Y   y xY w)NrE  rF  r   rG  rH  rI  r   rL  z6Input has different freq=-1M from Period\(freq=Q-DEC\)r   )r   r   rd   rM  rN  rj   lenrU   rV   r1   rO  r   r
  MonthEndDayra   r   r   )	r6   r@  rD   r)   r  r:   rS  anchoredr   s	            r   test_pi_sub_offset_arrayz2TestPeriodIndexArithmetic.test_pi_sub_offset_array  s    &*F8,<=>

%%%<

%%"%=
 %B.IQ1a 0IJ??6*''(:; 	u*C	
c8,

++-rzz~~~/BCD H]]0< 	++,>? X	 ]]0< 	++,>? 2	 	  J	 	 	 	 	 	sZ   G
GG))G/G)H4G5:HGG&	"G))G25G>	:HH
c                     t        ddd      }||z   }t        ddd      }t        j                  ||       ||z  }t        j                  ||       y )N2000-01-01 09:00r  rt   r  z2000-01-01 10:00r   r1   r
  r6   oner  r;   r:   s        r   test_pi_add_iadd_intz.TestPeriodIndexArithmetic.test_pi_add_iadd_int  sR    -CDs 2bI
fh/s

c8,r!   c                     t        ddd      }||z
  }t        ddd      }t        j                  ||       ||z  }t        j                  ||       y)z
        PeriodIndex.__sub__ and __isub__ with several representations of
        the integer 1, e.g. int, np.int64, np.uint8, ...
        r^  r  rt   r  z2000-01-01 08:00Nr_  r`  s        r   test_pi_sub_isub_intz.TestPeriodIndexArithmetic.test_pi_sub_isub_int  sT    
 -CDs 2bI
fh/s

c8,r!   fiver[   r   c                 `    t        dd      }||z
  }|| z   }t        j                  ||       y )Nrp   2   r@   r_  )r6   re  r  r;   ry   s        r   test_pi_sub_intlikez-TestPeriodIndexArithmetic.test_pi_sub_intlike  s2    9b1tdUm
fc*r!   c                    t        ddd      }t        j                  d      }||z   }t        j                  t        ||      D cg c]
  \  }}||z    c}}      }t        j                  ||       ||z
  }t        j                  t        ||      D cg c]
  \  }}||z
   c}}      }t        j                  ||       y c c}}w c c}}w )Nr(  rt   2Drs   )r   r3   rg   rd   rk   zipr1   r
  )r6   rD   arrr;   rX   yr:   s          r   #test_pi_add_sub_int_array_freqn_gt1z=TestPeriodIndexArithmetic.test_pi_add_sub_int_array_freqn_gt1  s     ,>iimc88s2s|<tq!QU<=
fh/c88s2s|<tq!QU<=
fh/ = =s   C
C
c                 4   t        ddd      }|t        j                  j                  d      z
  }t        ddd      }t	        j
                  ||       |t        j                  j                  d      z  }t	        j
                  ||       t        dd	d
      }|t        j                  j                  d      z
  }t        ddd
      }t	        j
                  ||       |t        j                  j                  d      z  }t	        j
                  ||       y )Nr   2024r   r+   r[   20092019r   2016-12rr   z2013-08z2016-07)r   rd   rM  YearEndr1   r
  rY  r6   r  r;   r:   s       r   test_pi_sub_isub_offsetz1TestPeriodIndexArithmetic.test_pi_sub_isub_offset  s     664rzz))!,,S9
fh/rzz!!!$$
c8,9ic:rzz**1--	93?
fh/rzz""1%%
c8,r!   	transposeTFc                 F   t        dd      }t        |g      }t        dgd      }t        j                  |||      }t        j                  |||      }||j                  z   }t        j
                  ||       |j                  |z   }t        j
                  ||       y )N2016-01r   r+   z2016-03rw  )r   r   r1   r2   r,   r5   )r6   r7   rw  rx   rD   r:   r;   s          r   test_pi_add_offset_n_gt1z2TestPeriodIndexArithmetic.test_pi_add_offset_n_gt1  s    
 YT*#	{6__R9E??8^yQchh
)B
)r!   c                 $   t        dgd      }t        dgd      }t        j                  ||      }t        j                  ||      }|t        d      z   }t        j                  ||       t        d      |z   }t        j                  ||       y )Nry  r   r+   z2016-043ME)r   r1   r2   r   r5   )r6   r7   rD   r:   r;   s        r   &test_pi_add_offset_n_gt1_not_divisiblez@TestPeriodIndexArithmetic.test_pi_add_offset_n_gt1_not_divisible  sz     )40	{6__R0??8^<i&&
)5!B&
)r!   
int_holderopc                     t        t        d      t        d      g      } |ddg      } |||      }t        t        d      t        d      g      }t        j                  ||       y )NrE  r   r?   r\   2016Q1)r   r   r1   r
  )r6   r  r  rD   r)   r;   r:   s          r   test_pi_add_intarrayz.TestPeriodIndexArithmetic.test_pi_add_intarray  s]     &*F5M:;Ar7#Bx 0&-@A
fh/r!   c                 8   t        t        d      t        d      g      } |ddg      }||z
  }t        t        d      t        d      g      }t        j                  ||       d}t	        j
                  t        |      5  ||z
   d d d        y # 1 sw Y   y xY w)NrE  r   r?   r\   2014Q1+bad operand type for unary -: 'PeriodArray'r   )r   r   r1   r
  ra   r   r   )r6   r  rD   r)   r;   r:   r   s          r   test_pi_sub_intarrayz.TestPeriodIndexArithmetic.test_pi_sub_intarray  s     &*F5M:;Ar7#ex 0&-@A
fh/<]]9C0 	BJ	 	 	s   BBc                    |}t        ddd      }t        j                  ||      }t        g dd      }t        j                  ||      }||z   }t        j                  ||       ||z   }t        j                  ||       t        g dd      }t        j                  ||      }||z
  }t        j                  ||       dj                  d	d
g      }t        j                  t        |      5  ||z
   d d d        y # 1 sw Y   y xY w)N
2014-05-01r|   rj  rs   )
2014-05-04z
2014-05-06z
2014-05-08r+   )
2014-04-28z
2014-04-30z
2014-05-02r+  r  4cannot subtract PeriodArray from timedelta64\[[hD]\]r   )	r   r1   r2   r   r5   r,  ra   r   r   )r6   
three_daysr7   r)   r  r:   r;   r   s           r   &test_parr_add_timedeltalike_minute_gt1z@TestPeriodIndexArithmetic.test_parr_add_timedeltalike_minute_gt1!  s    
 <>ooc>2IPTU??8^<u
)
) IPTU??8^<u
)hh>G
 ]]9C0 	CK	 	 	s   0C??Dfreqstr)5ns5us5ms5s5min5h5dc                 (   |}t        dd|      }|d   }t        j                  ||      }t        ||z   d|      }t        j                  ||      }||z   }t        j                  ||       ||z   }t        j                  ||       t        ||z
  d|      }t        j                  ||      }||z
  }t        j                  ||       dj	                  ddg      }	t        j                  t        |	      5  ||z
   d d d        y # 1 sw Y   y xY w)	Nr     rs   r   r+  r  r  r   )r   r1   r2   r5   r,  ra   r   r   )
r6   r  r  r7   r)   r  firstr:   r;   r   s
             r   $test_parr_add_timedeltalike_tick_gt1z>TestPeriodIndexArithmetic.test_parr_add_timedeltalike_tick_gt1B  s     <AAooc>2qwG??8^<u
)
)  qwG??8^<u
)hh>G
 ]]9C0 	CK	 	 	s   9DDc                     |}t        ddd      }t        ddd      }||z   }t        j                  ||       ||z  }t        j                  ||       y )Nr  
2014-05-15r"   r+   r  z
2014-05-18r_  r6   r  r)   r  r:   r;   s         r   $test_pi_add_iadd_timedeltalike_dailyz>TestPeriodIndexArithmetic.test_pi_add_iadd_timedeltalike_dailyb  U    <C@lEu
fh/u
c8,r!   c                     |}t        ddd      }t        ddd      }||z
  }t        j                  ||       ||z  }t        j                  ||       y )Nr  r  r"   r+   r  z
2014-05-12r_  r  s         r   $test_pi_sub_isub_timedeltalike_dailyz>TestPeriodIndexArithmetic.test_pi_sub_isub_timedeltalike_dailyn  r  r!   c                    |}t        ddd      }t        j                  ||      }dj                  ddg      }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)	Nr  r  r"   r+   r+  z7Input has different freq(=.+)? from Period.*?\(freq=D\)r=  r   r   r1   r2   r,  ra   r   r   )r6   	not_dailyr7   r)   r  r   s         r   3test_parr_add_sub_timedeltalike_freq_mismatch_dailyzMTestPeriodIndexArithmetic.test_parr_add_sub_timedeltalike_freq_mismatch_dailyz  s     <C@ooc>2hh LE	
 ]]0< 	%K	]]0< 	5LC	]]0< 	%K	]]0< 	5LC	 		 		 		 		 	s0   C>C+'C7DC(+C47D Dc                     |}t        ddd      }t        ddd      }||z   }t        j                  ||       ||z  }t        j                  ||       y )N2014-01-01 10:002014-01-05 10:00r  r+   z2014-01-01 12:00z2014-01-05 12:00r_  r6   	two_hoursr)   r  r:   r;   s         r   %test_pi_add_iadd_timedeltalike_hourlyz?TestPeriodIndexArithmetic.test_pi_add_iadd_timedeltalike_hourly  Y    -/AL 24FSQu
fh/u
c8,r!   c                 J   |}t        ddd      }t        j                  ||      }dj                  ddg      }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  r+   r+  z7Input has different freq(=.+)? from Period.*?\(freq=h\)r=  r   r  )r6   r   r7   r)   r  r   s         r   2test_parr_add_timedeltalike_mismatched_freq_hourlyzLTestPeriodIndexArithmetic.test_parr_add_timedeltalike_mismatched_freq_hourly  s     -/ALooc>2hh LE	
 ]]0< 	%K	 ]]0< 	5LC	 		 		 	s   B>BBB"c                     |}t        ddd      }t        ddd      }||z
  }t        j                  ||       ||z  }t        j                  ||       y )Nr  r  r  r+   z2014-01-01 08:00z2014-01-05 08:00r_  r  s         r   %test_pi_sub_isub_timedeltalike_hourlyz?TestPeriodIndexArithmetic.test_pi_sub_isub_timedeltalike_hourly  r  r!   c                    t        ddd      }|t        j                  j                  d      z   }t        ddd      }t	        j
                  ||       |t        j                  j                  d      z  }t	        j
                  ||       y )Nr   rp  r   r+   r[   rr  2029)r   rd   rM  rt  r1   r
  ru  s       r   "test_add_iadd_timedeltalike_annualz<TestPeriodIndexArithmetic.test_add_iadd_timedeltalike_annual  sr     664rzz))!,,S9
fh/rzz!!!$$
c8,r!   c                    |}t        d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                  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)Nr   rp  r   r+   z;Input has different freq(=.+)? from Period.*?\(freq=Y-DEC\)r   r   ra   r   r   r6   r&   r)   r  r   s        r   2test_pi_add_sub_timedeltalike_freq_mismatch_annualzLTestPeriodIndexArithmetic.test_pi_add_sub_timedeltalike_freq_mismatch_annual  s    664M]]0< 	%K	]]0< 	5LC	]]0< 	%K	]]0< 	5LC	 		 		 		 		 	/   B8C C)C8CCCC%c                    t        ddd      }t        ddd      }|t        j                  j                  d      z   }t	        j
                  ||       |t        j                  j                  d      z  }t	        j
                  ||       y )Nr   rs  rr   r+   z2014-06z2017-05r[   )r   rd   rM  rY  r1   r
  )r6   r  r:   r;   s       r    test_pi_add_iadd_timedeltalike_Mz:TestPeriodIndexArithmetic.test_pi_add_iadd_timedeltalike_M  sp    9ic:	93?rzz**1--
fh/rzz""1%%
c8,r!   c                    |}t        d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                  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)Nr   rs  rr   r+   z7Input has different freq(=.+)? from Period.*?\(freq=M\)r   r  r  s        r   3test_pi_add_sub_timedeltalike_freq_mismatch_monthlyzMTestPeriodIndexArithmetic.test_pi_add_sub_timedeltalike_freq_mismatch_monthly  s    9ic:I]]0< 	%K	]]0< 	5LC	]]0< 	%K	]]0< 	5LC	 		 		 		 		 	r  c                    t        ddd      }t        j                  d      }t        dgdz  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)
N
1994-04-01rH   19Drs   r   r+   rz  r7  r   )
r   r3   timedelta64r   r1   r2   r5   ra   r   r   )	r6   r7   rw  rD   r)   r:   objr;   r   s	            r   test_parr_add_sub_td64_natz4TestPeriodIndexArithmetic.test_parr_add_sub_td64_nat  s     ,>u%w{7oob.IF??8^yQu
)
)u
)+]]9C0 	CK	 	 	s   C""C+r   rH   zm8[ns]c                 d   t        ddd      }t        dgdz  d      }t        j                  ||      }t        j                  ||      }||z   }t        j                  ||       ||z   }t        j                  ||       ||z
  }t        j                  ||       d}t        j                  t        |      5  ||z
   d d d        |j                         }t        j                  d	d
      |d	<   t        |d	   gdgdz  z   d      }t        j                  ||      }||z   }t        j                  ||       ||z   }t        j                  ||       ||z
  }t        j                  ||       t        j                  t        |      5  ||z
   d d d        y # 1 sw Y   xY w# 1 sw Y   y xY w)Nr  rH   r  rs   r   r+   r7  r   r   ns   )r   r   r1   r2   r5   ra   r   r   copyr3   r  )r6   r7   r)   rD   r:   r  r;   r   s           r   !test_parr_add_sub_tdt64_nat_arrayz;TestPeriodIndexArithmetic.test_parr_add_sub_tdt64_nat_array  sz    ,>w{7oob.1??8^<u
)
)u
)+]]9C0 	CK	 

>>!T*a1w%145A??8^<u
)
)u
)]]9C0 	CK	 		 		 	s   :FF&F#&F/c                 v    t        dd      }|j                  }||z
  }||z
  }t        j                  ||       y )N
2000-12-31r|   r@   )r   r4   r1   r
  )r6   rD   rM   r;   r:   s        r   test_parr_add_sub_indexz1TestPeriodIndexArithmetic.test_parr_add_sub_index+  s9    ,2xx7
fh/r!   c                    t        ddd      }|j                  }t        j                  t        d      t        j
                  j                  d      dg      }t        j                  t              5  ||z   }d d d        t        g dd	      j                  j                  t              }t        j                  |       t        j                  t              5  ||z
  }d d d        t        d
gdz  d	      j                  j                  t              }t        j                  ||       y # 1 sw Y   xY w# 1 sw Y   ZxY w)Nr  r|   r"   rs   r   r#   r   )z
2001-01-01z
2001-01-03z
2001-01-05r+   z
2000-12-30)r   r4   r3   r
   rd   rM  rZ  r1   rO  r   r   _datarU   rV   r5   )r6   rD   rM   r)   r;   r:   s         r   test_parr_add_sub_object_arrayz8TestPeriodIndexArithmetic.test_parr_add_sub_object_array4  s    ,<xx)+RZZ^^A->BC''(:; 	"E\F	" 6S

%v 	 	)''(:; 	"E\F	" ~1<BBII&Q
)	" 	"	" 	"s   3D/D;/D8;Ec                    t        d      }t        dd      }t        j                  |gd      }t	        j
                  ||      }d}t        j                  t        |      5  ||z    d d d        t        j                  t        |      5  ||z    d d d        d}t        j                  t        |      5  |t        |g      z    d d d        t        j                  t        |      5  t        |g      |z    d d d        t        j                  t        |      5  |t        j                  |g      z    d d d        t        j                  t        |      5  t        j                  |g      |z    d d d        |t        j                  u rd}nd	}t        j                  t        |      5  |t        j                  |g      z    d d d        |t        j                  u rd}nd
}t        j                  t        |      5  t        j                  |g      |z    d d d        y # 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   zxY w# 1 sw Y   TxY w# 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*   rr   r+   r   r   z$cannot add PeriodArray and Timestampr   z(cannot add PeriodArray and DatetimeArrayzAunsupported operand type\(s\) for \+: 'Period' and 'DatetimeArrayzBunsupported operand type\(s\) for \+: 'DatetimeArray' and 'Period')r   r   rd   rk   r1   r2   ra   r   r   r	   r   )r6   r7   tsrx   rl  r   s         r    test_period_add_timestamp_raisesz:TestPeriodIndexArithmetic.test_period_add_timestamp_raisesH  s   vV#&hhuK0ooc>24]]9C0 	"H	]]9C0 	H	8]]9C0 	&",	]]9C0 	B4L3	]]9C0 	!"((B4. 	!]]9C0 	!HHbTNS 	! R\\)<CVC]]9C0 	%",,t$$	%R\\)<CWC]]9C0 	%LL"$	% 	%1	 		 		 		 		! 	!	! 	!	% 	%	% 	%s`   $H&H38I +III'/I3I?&H03H= I
II$'I03I<?J)Ar^   r_   r`   r  r  r  r  ra   rb   rc   r  rd   rM  rt  rN  rY  Weekr'  r   to_pydatetimeto_datetime64re   r  r3   r4   r-  r4  r8  rC  rk   rV  r\  rb  rd  int64rh  rn  rv  r{  r~  operatoraddr   raddr  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r   _from_sequencer  r  r  r  rl   r!   r   r  r  s  s/   "- 0 [[S,/3 03 [[S,/[[ZZ)ZZ""O4ZZ  $'ZZ__i(		
0 00& [[ l#l#113l#113BMM,<BMM,6GHBMM,<BBBMM,lCIIBHH_%	
"#"4"> [[Y(<=[[Z$5*  6 >* ^ [[URXXrxx$89  : < [[URXXrxx$89 ::-
- [[Va!288)D%EF+ G+0-$ [[[4-8* 9*$*$ [[\BHHbhh+?@[[THLL#((#;<0 = A0 [[\BHHbhh+?@ A"B [[Y(WX Y>
-
-2	-,	--- [[[4-8 9& [[BHHeWq[1)N))5'A+XF	
F0*("%r!   r  c                       e Zd Zd Zd Zy)TestPeriodSeriesArithmeticc                    t        t        dd      t        dd      gd      }|j                  dk(  sJ t        t        dd      t        d	d      gd      }t        j                  ||      }|t
        j                  u r|j                  dk(  j                         sJ t        j                  ||      }||z   }t        j                  ||       ||z   }t        j                  ||       y )
N
2015-01-01r"   r+   
2015-01-02xxxr   	Period[D]
2015-01-04
2015-01-05)
r	   r   r   r1   r2   rd   r   dtypesallr5   )r6   r  r7   r~   r:   r  r;   s          r   "test_parr_add_timedeltalike_scalarz=TestPeriodSeriesArithmetic.test_parr_add_timedeltalike_scalarn  s    Ls+VLs-KL
 yyK'''Ls+VLs-KL

 ooc>2R\\)JJ+-22444??8^<z!
)c!
)r!   c                 J   t        t        dd      t        dd      gd      }|j                  dk(  sJ t        dd      }|j                  }t        d	|z  d
|z  gdt              }t        j                  ||z
  |       t        j                  ||z
  d|z         t        t        dd      t        dd      gd      }|j                  dk(  sJ t        d|z  d|z  gdt              }t        j                  ||z
  |       t        j                  ||z
  d|z         y )Nr  r"   r+   r  r  r   r  z
2015-01-10rH   r  )r   r   r\   r  r  r?   r   )r	   r   r   r,   rV   r1   r   )r6   r~   rx   r   r:   s2s         r   test_ops_series_periodz1TestPeriodSeriesArithmetic.test_ops_series_period  s   Ls+VLs-KL
 yyK'''\,hh1s7AG,5G
sSy(3
sSy"x-8Ls+VLs-KL
 xx;&&&1s7AG,5G
rCx2
sRxh7r!   N)r^   r_   r`   r  r  rl   r!   r   r  r  m  s    *28r!   r  c                       e Zd ZdZd Zd Zej                  j                  dddg      ej                  j                  dd d	 d
 d d d d d g      d               Z	d Z
d Zd Zd Zd Zd Zd Zy)TestPeriodIndexSeriesMethodsr   c                     t        |      } ||      }t        j                  ||       t        |      } ||      }t        ||j                        }t        j
                  ||       y r   )r   r1   r5   r	   r   r   )r6   ru   r   r:   r8   r;   r~   ry   s           r   r   z#TestPeriodIndexSeriesMethods._check  sU    &!c
)VncXFKK0
vs+r!   c                    t        g ddd      }t        g ddd      }| j                  |d |       | j                  |d |       | j                  |dz   d	 |       |t        d
d      z
  }|j                  }t	        j
                  d|z  d|z  d|z  d|z  gd      }t        j                  ||       t        d
d      |z
  }t	        j
                  d|z  d|z  d|z  d|z  gd      }t        j                  ||       y )Nr   rr   r8   r   )r   r   r   2011-06c                     | dz   S Nr   rl   rW   s    r   rY   z:TestPeriodIndexSeriesMethods.test_pi_ops.<locals>.<lambda>  
    1q5 r!   c                     d| z   S r  rl   rW   s    r   rY   z:TestPeriodIndexSeriesMethods.test_pi_ops.<locals>.<lambda>  r  r!   r   c                     | dz
  S r  rl   rW   s    r   rY   z:TestPeriodIndexSeriesMethods.test_pi_ops.<locals>.<lambda>  
    q1u r!   r   r+   r   r   r|   r   r\   rI  )r   r   r   r,   rd   rk   r1   r
  )r6   r8   r:   r;   r   ry   s         r   test_pi_opsz(TestPeriodIndexSeriesMethods.test_pi_ops  s    8s
 8s
 	C(3C(3C!G_c2vic22hhhhCS!c'1s7;%H
fc*	,s2hhCc28R#X>UK
fc*r!   ngstrg      ?r   c                     | |z   S rT   rl   r  r  s     r   rY   z%TestPeriodIndexSeriesMethods.<lambda>  
    C"H r!   c                     || z   S rT   rl   r  s     r   rY   z%TestPeriodIndexSeriesMethods.<lambda>  
    BH r!   c                     | |z
  S rT   rl   r  s     r   rY   z%TestPeriodIndexSeriesMethods.<lambda>  r  r!   c                     || z
  S rT   rl   r  s     r   rY   z%TestPeriodIndexSeriesMethods.<lambda>  r  r!   c                 .    t        j                  | |      S rT   r3   r  r  s     r   rY   z%TestPeriodIndexSeriesMethods.<lambda>  s    BFF3O r!   c                 .    t        j                  ||       S rT   r  r  s     r   rY   z%TestPeriodIndexSeriesMethods.<lambda>  s    BFF2sO r!   c                 .    t        j                  | |      S rT   r3   subtractr  s     r   rY   z%TestPeriodIndexSeriesMethods.<lambda>  s    BKKR0 r!   c                 .    t        j                  ||       S rT   r  r  s     r   rY   z%TestPeriodIndexSeriesMethods.<lambda>  s    BKKC0 r!   c                     t        g ddd      }t        j                  ||      }dj                  g d      }t	        j
                  t        |      5   |||       d d d        y # 1 sw Y   y xY w)Nr   rr   r8   r   r+  )zunsupported operand type\(s\)zcan only concatenatezmust be strzobject to str implicitlyr   )r   r1   r2   r,  ra   r   r   )r6   r  r   r7   r8   r  r   s          r   test_parr_ops_errorsz1TestPeriodIndexSeriesMethods.test_parr_ops_errors  sh     8s
 ooc>2hh
 ]]9C0 	bM	 	 	s   
A((A1c                 ,   t        g ddd      }t        g ddd      }| j                  |d |       | j                  |d |       | j                  |d |       | j                  |d	z   d
 |       | j                  |d	z   d |       t        g ddd      }t        g ddd      }| j                  |d |       | j                  |d |       | j                  |d |       | j                  |dz   d |       | j                  |dz   d |       y )Nr   r   r   r   rr   r8   r   )r   r   r   r  c                     | dz   S r  rl   rW   s    r   rY   z>TestPeriodIndexSeriesMethods.test_pi_ops_nat.<locals>.<lambda>  r  r!   c                     d| z   S r  rl   rW   s    r   rY   z>TestPeriodIndexSeriesMethods.test_pi_ops_nat.<locals>.<lambda>  r  r!   c                 .    t        j                  | d      S r  r  rW   s    r   rY   z>TestPeriodIndexSeriesMethods.test_pi_ops_nat.<locals>.<lambda>      266!Q< r!   r   c                     | dz
  S r  rl   rW   s    r   rY   z>TestPeriodIndexSeriesMethods.test_pi_ops_nat.<locals>.<lambda>  r  r!   c                 .    t        j                  | d      S r  r  rW   s    r   rY   z>TestPeriodIndexSeriesMethods.test_pi_ops_nat.<locals>.<lambda>      r{{1a'8 r!   r   )z2011-072011-08r   z2011-10c                     | dz   S Nr|   rl   rW   s    r   rY   z>TestPeriodIndexSeriesMethods.test_pi_ops_nat.<locals>.<lambda>  r  r!   c                     d| z   S r  rl   rW   s    r   rY   z>TestPeriodIndexSeriesMethods.test_pi_ops_nat.<locals>.<lambda>  r  r!   c                 .    t        j                  | d      S r  r  rW   s    r   rY   z>TestPeriodIndexSeriesMethods.test_pi_ops_nat.<locals>.<lambda>  r  r!   r|   c                     | dz
  S r  rl   rW   s    r   rY   z>TestPeriodIndexSeriesMethods.test_pi_ops_nat.<locals>.<lambda>   r  r!   c                 .    t        j                  | d      S r  r  rW   s    r   rY   z>TestPeriodIndexSeriesMethods.test_pi_ops_nat.<locals>.<lambda>  r  r!   r   r   )r6   r8   r:   s      r   test_pi_ops_natz,TestPeriodIndexSeriesMethods.test_pi_ops_nat  s   43U
 43U
 	C(3C(3C/:C!G_c2C!G8#> 44e
 44e
 	C(3C(3C/:C!G_c2C!G8#>r!   c                 T   t        g ddd      }d }t        g ddd      }| j                  |||       d }t        g ddd      }| j                  |||       d	 }t        g d
dd      }| j                  |||       d }t        g ddd      }| j                  |||       y )Nr  rr   r8   r   c                 6    | t        j                  g d      z   S Nr  r3   r4   rW   s    r   rY   zDTestPeriodIndexSeriesMethods.test_pi_ops_array_int.<locals>.<lambda>      a"((<00 r!   )r   r   r   r  c                 X    t        j                  | t        j                  g d            S )N)r?   r\   r   r   )r3   r  r4   rW   s    r   rY   zDTestPeriodIndexSeriesMethods.test_pi_ops_array_int.<locals>.<lambda>  s    bffQ 78 r!   )r   r   r   r  c                 6    | t        j                  g d      z
  S r  r  rW   s    r   rY   zDTestPeriodIndexSeriesMethods.test_pi_ops_array_int.<locals>.<lambda>  r  r!   )2010-12r   r   r   c                 X    t        j                  | t        j                  g d            S )N)r|   r   r|   rI  )r3   r  r4   rW   s    r   rY   zDTestPeriodIndexSeriesMethods.test_pi_ops_array_int.<locals>.<lambda>  s    bkk!RXXm%<= r!   )z2010-10r   r   r  r  r6   r8   r   ry   s       r   test_pi_ops_array_intz2TestPeriodIndexSeriesMethods.test_pi_ops_array_int  s    43U
 143U
 	CC 843U
 	CC 043U
 	CC =43U
 	CC r!   c                    t        g ddd      }d }t        g ddd      }| j                  |||       d }t        g ddd      }| j                  |||       d	 }t        g d
dd      }| j                  |||       y )Nr   z
2011-02-01z
2011-03-01z
2011-04-01r"   r8   r   c                 D    | t         j                  j                         z   S rT   rd   rM  rZ  rW   s    r   rY   zATestPeriodIndexSeriesMethods.test_pi_ops_offset.<locals>.<lambda>%  s    a"**..** r!   )z
2011-01-02z
2011-02-02z
2011-03-02z
2011-04-02c                 F    | t         j                  j                  d      z   S r  r'  rW   s    r   rY   zATestPeriodIndexSeriesMethods.test_pi_ops_offset.<locals>.<lambda>-      a"**..++ r!   )r   z
2011-02-03z
2011-03-03z
2011-04-03c                 F    | t         j                  j                  d      z
  S r  r'  rW   s    r   rY   zATestPeriodIndexSeriesMethods.test_pi_ops_offset.<locals>.<lambda>5  r)  r!   )z
2010-12-30z
2011-01-30z
2011-02-27z
2011-03-30r  r"  s       r   test_pi_ops_offsetz/TestPeriodIndexSeriesMethods.test_pi_ops_offset  s    D

 +D

 	CC +D

 	CC +D

 	CC r!   c                 <   t        g ddd      }t        |      }d}||fD ]  }t        j                  t        |      5  |t
        j                  j                  d      z    d d d        t        j                  t        |      5  t
        j                  j                  d      |z    d d d        t        j                  t        |      5  |t
        j                  j                  d      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)Nr%  r"   r8   r   zmCannot add/subtract timedelta-like from PeriodArray that is not an integer multiple of the PeriodArray's freqr   r   )r   r	   ra   r   r   rd   rM  rP  )r6   r8   r~   r   r  s        r   test_pi_offset_errorsz2TestPeriodIndexSeriesMethods.test_pi_offset_errors=  s    D

 Sk< 	 : 	)C4C@ )bjjooa(() 4C@ )

"S() 4C@ )bjjooa(() )	)) )) )) )s$    #C:#D#D:D	D	D	c                    t        g ddd      }|t        dd      z
  }|j                  }t        j                  d|z  d|z  d	|z  d
|z  gd      }t        j                  ||       t        j                  |t        dd            }t        j                  ||       t        dd      |z
  }t        j                  d|z  d|z  d|z  d|z  gd      }t        j                  ||       t        j                  t        dd      |      }t        j                  ||       t        t        j                  t        j                  t        j                  t        j                  gd      }|t        dd      z
  }t        j                  ||       |j                  |j                  k(  sJ t        dd      |z
  }t        j                  ||       |j                  |j                  k(  sJ y )Nr   rr   r8   r   2012-01r+   ir   rG     rt   rH   r   )r   r   r,   rd   rk   r1   r
  r3   r  r   nanr6   r8   r;   r   ry   s        r   test_pi_sub_periodz/TestPeriodIndexSeriesMethods.test_pi_sub_periodS  s   8s
 vic22hhhhc	39cCicBO
fc*S&"=>
fc*	,s2hhS"s(BHa#g>UK
fc*VIC8#>
fc*bffbffbffbff=EJve#..
fc*{{chh&&&C(3.
fc*{{chh&&&r!   c                     t        g ddd      }t        t        j                  gdz  d      }t	        j
                  t        j                  |z
  |       t	        j
                  |t        j                  z
  |       y )Nr  rr   r8   r   r?   r   )r   r   rd   r   r1   r
  )r6   r8   ry   s      r   test_pi_sub_pdnatz.TestPeriodIndexSeriesMethods.test_pi_sub_pdnatq  s[    43U
 bffX\6
bffslC0
cBFFlC0r!   c                    t        g ddd      }|t        dd      z
  }|j                  }t        j                  d|z  t        j
                  d|z  d	|z  gd
      }t        j                  ||       t        dd      |z
  }t        j                  d|z  t        j
                  d|z  d|z  gd
      }t        j                  ||       t        t        j                  t        j                  t        j                  t        j                  gd
      }t        j                  |t        dd      z
  |       t        j                  t        dd      |z
  |       y )Nr   rr   r8   r   r/  r+   r0  r1  r2  r   rG  rt   rH   r   )r   r   r,   rd   rk   r   r1   r
  r   r3   r4  r5  s        r   test_pi_sub_period_natz3TestPeriodIndexSeriesMethods.test_pi_sub_period_natz  s   43U
 vic22hhhhc	26639b3h?eL
fc*	,s2hhS"&&"s(AG<5I
fc*bffbffbffbff=EJ
cF5s$;;SA
fU5;SAr!   N)r^   r_   r`   r   r   r  ra   rb   rc   r  r  r#  r+  r-  r6  r8  r:  rl   r!   r   r  r    s    <	,+. [[TE3<0[[$$$$++00		
 1"?<!8!<),'<1Br!   r  )/r  numpyr3   ra   pandas._libs.tslibsr   r   r   r   pandas.errorsr   pandasrd   r   r	   r
   r   r   pandas._testing_testingr1   pandas.corer   pandas.core.arraysr   pandas.tests.arithmetic.commonr   r   r   rM  	YearBegin
MonthBeginrQ  _common_mismatchfixtureto_pytimedeltar  r   r&   r(   rn   r   r   r   r  r  r  rl   r!   r   <module>rI     s       -     -  JJJJ!JJ  ",,.r3"
  sC s**,s
 * *Dh= h=V%1 %1P_! _!L(2 (2Vw% w%t18 18hjB jBr!   