U
    f/e                     @   s  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 G dd	 d	ZG d
d dZG dd dZG dd dZG dd dZG dd dZ G dd dZ!G dd dZ"dS )    N)IncompatibleFrequencyPeriod	Timestamp	to_offset)PerformanceWarning)PeriodIndexSeries	TimedeltaTimedeltaIndexperiod_range)ops)TimedeltaArray)assert_invalid_comparisonc                
   @   s   e Zd Zdd Zejdde e	ddddgd	d
 Z
ejdejdddjejdddjededejeedgdd Zejdeejdd gdd ZdS )TestPeriodArrayLikeComparisonsc                 C   sz   |t jt jfkr|ntj}tddd}t| d }t||}||k}tddddg}t||}t	|| d S )N2000   periodsr   TF)
pdIndexarraynpndarrayr   Zto_numpytmbox_expectedassert_equal)selfbox_with_arrayxboxpiotherresultexpected r#   G/tmp/pip-unpacked-wheel-tiezk1ph/pandas/tests/arithmetic/test_period.pytest_compare_zerodim'   s    z3TestPeriodArrayLikeComparisons.test_compare_zerodimscalarZfoor   days	   g      #@c                 C   s(   t ddd}t||}t||| d S Nr   r   r   r   r   r   r   )r   r   r&   r   parrr#   r#   r$   test_compare_invalid_scalar6   s    z:TestPeriodArrayLikeComparisons.test_compare_invalid_scalarr    r   r   Z1Dc                 C   s(   t ddd}t||}t||| d S r*   r+   )r   r   r    r   r,   r#   r#   r$   test_compare_invalid_listlike?   s    z<TestPeriodArrayLikeComparisons.test_compare_invalid_listlike	other_boxc                 C   s
   |  tS N)astypeobjectxr#   r#   r$   <lambda>N       z'TestPeriodArrayLikeComparisons.<lambda>c           	      C   s&  t ddd}t||}|tjtjfkr.tjn|}||}tdddddg}t||}||k}t|| ||k}t|| ||k}t|| ||k}t||  ||k }t||  ||k}t||  ||d d d }tdddddg}t||}||k}t|| tdddddg}t||}||k}t|| tdddddg}t||}||k}t|| tdddddg}t||}||k}t|| tdddddg}t||}||k }t|| tdddddg}t||}||k}t|| d S )Nr      r   TF)	r   r   r   r   r   r   r   r   r   )	r   r   r/   r   r,   r   r    r"   r!   r#   r#   r$   test_compare_object_dtypeN   sV    z8TestPeriodArrayLikeComparisons.test_compare_object_dtypeN)__name__
__module____qualname__r%   pytestmarkparametrizer   nowr	   r-   r   
date_ranger   Ztimedelta_ranger   Zaranger1   Zfloat64listranger.   r9   r#   r#   r#   r$   r   "   s$    



r   c                   @   s2  e Zd Zejddedddgdd Zejdddddge	dddgej	dddge
dedddggd	d
 Zdd Zdd Zejddddgdd Zejddddgdd Zejddddgdd Zejddddgdd Zejddddgdd Zejde
dgdd  ZdS )!TestPeriodIndexComparisonsr    2017Dfreqc                 C   s:   t dddgdd}tdddg}||k}t|| d S )NrE   2018rF   rG   TF)r   r   r   r   assert_numpy_array_equal)r   r    idxr"   r!   r#   r#   r$   test_eq   s    z"TestPeriodIndexComparisons.test_eqi  dtypec              	   C   s   t dddgdd}tdddg}||k}t|| dddg}tjt|d	 ||k  W 5 Q R X tjt|d	 ||k W 5 Q R X tjt|d	 ||k W 5 Q R X tjt|d	 ||k W 5 Q R X d S )
NrE   rI   rF   rG   F|z5not supported between instances of 'Period' and 'int'z1Invalid comparison between dtype=period\[D\] and match)	r   r   r   r   rJ   joinr=   raises	TypeError)r   r    rK   r"   r!   msgr#   r#   r$   test_eq_integer_disallowed   s"    z5TestPeriodIndexComparisons.test_eq_integer_disallowedc                 C   s:   t dddd}||d k }|j|jd k }t|| d S )N2007-01   Mr   rH   
   )r   valuesr   rJ   )r   rK   r!   expr#   r#   r$   test_pi_cmp_period   s    z-TestPeriodIndexComparisons.test_pi_cmp_periodc                    s   |t jt jfkr|ntj}tdddd}tddd  fdd|D }t||}t||}| k}t	|| |d	  | k} fd
d|D }t||}t	|| d S )Nz
2000-01-01r[   rF   rZ   z
2000-01-04rG   c                    s   g | ]}| kqS r#   r#   .0r4   valr#   r$   
<listcomp>   s     zKTestPeriodIndexComparisons.test_parr_cmp_period_scalar2.<locals>.<listcomp>r7   c                    s   g | ]}| kqS r#   r#   r_   ra   r#   r$   rc      s     )
r   r   r   r   r   r   r   r   r   r   )r   r   r   r   r"   serr!   r#   ra   r$   test_parr_cmp_period_scalar2   s    z7TestPeriodIndexComparisons.test_parr_cmp_period_scalar2rH   rY   2M3Mc                 C   s  |t jt jfkrtjn|}tddddg|d}t||}td|d}tddddg}t||}t	||k| t	||k| tddddg}t||}t	||k| t	||k| tddddg}t||}t	||k| t	||k | tddddg}t||}t	||k | t	||k| tddddg}t||}t	||k| t	||k| tddddg}t||}t	||k| t	||k| d S )N2011-012011-022011-032011-04rG   FT)
r   r   r   r   r   r   r   r   r   r   )r   rH   r   r   baseperr]   r#   r#   r$   test_parr_cmp_period_scalar   s8    z6TestPeriodIndexComparisons.test_parr_cmp_period_scalarc                 C   sf  |t jt jfkrtjn|}tddddg|d}t||}tddddg|d}tddddg}t||}t||k| tddddg}t||}t||k| tddddg}t||}t||k| tddddg}t||}t||k | tddddg}t||}t||k| tddddg}t||}t||k| d S )	Nrh   ri   rj   rk   rG   2011-05FT)	r   r   r   r   r   r   r   r   r   )r   rH   r   r   rl   rK   r]   r#   r#   r$   test_parr_cmp_pi   s,    z+TestPeriodIndexComparisons.test_parr_cmp_pic              	   C   s  t ddddg|d}t||}d| d}tjt|d |td	d
dk W 5 Q R X tjt|d td	d
d|k W 5 Q R X t d	dddgd
d}d}|tjtj	fkr|n|}tjt|d ||k W 5 Q R X d| d}tjt|d |td	ddk W 5 Q R X tjt|d td	dd|k W 5 Q R X t d	dddgdd}d}|tjtj	fkr`|n|}tjt|d ||k W 5 Q R X d S )Nrh   ri   rj   rk   rG   )Invalid comparison between dtype=period\[z\] and PeriodrP   2011A201220132014z@Invalid comparison between dtype=period\[A-DEC\] and PeriodArray4Mz=Invalid comparison between dtype=period\[4M\] and PeriodArray)
r   r   r   r=   rS   rT   r   to_arrayr   r   )r   rH   r   rl   rU   rK   Zrev_msgZidx_msgr#   r#   r$    test_parr_cmp_pi_mismatched_freq  s,    z;TestPeriodIndexComparisons.test_parr_cmp_pi_mismatched_freqc                 C   s  t ddddg|d}|td|dk}tddddg}t|| td|d|k }t|| |td|dk}tddddg}t|| td|d|k}t|| |td|dk}tddddg}t|| td|d|k}t|| t ddddg|d}||k }tddddg}t|| ||k}tddddg}t|| ||k}tddddg}t|| ||k}tddddg}t|| ||k}tddddg}t|| d S )	Nrh   ri   NaTro   rG   FTrk   )r   r   r   r   r   rJ   )r   rH   idx1r!   r]   Zidx2r#   r#   r$   test_pi_cmp_nat?  s@    z*TestPeriodIndexComparisons.test_pi_cmp_natc              	   C   s   t ddddg|d}t ddddgdd}d| d	}tjt|d
 ||k W 5 Q R X ||k}tjddddgtd}t|| d S )Nrh   ri   rz   ro   rG   rk   rw   rq   z\] and PeriodArrayrP   FrM   )	r   r=   rS   rT   r   r   boolr   rJ   )r   rH   r{   ZdiffrU   r!   r"   r#   r#   r$   &test_pi_cmp_nat_mismatched_freq_raisesj  s    zATestPeriodIndexComparisons.test_pi_cmp_nat_mismatched_freq_raisesrN   Nc                 C   s2  t tdtjtdg}t tjtjtdg}|d k	rJ||}||}||k}tdddg}t|| ||k}tdddg}t|| tdddg}t|tjk| ttj|k| tdddg}t|tjk| ttj|k| tdddg}t|tjk | ttj|k| d S )N
2011-01-01
2011-01-03FT)	r   r   r   rz   r1   r   r   r   rJ   )r   rN   leftrightr!   r"   r#   r#   r$   test_comp_natx  s(    

z(TestPeriodIndexComparisons.test_comp_nat)r:   r;   r<   r=   r>   r?   r   rL   r   r   r2   r   r   rV   r^   re   rn   rp   ry   r|   r~   r   r#   r#   r#   r$   rD      s4   



&
"
"
*
rD   c                   @   s   e Zd Zdd ZdS )TestPeriodSeriesComparisonsc                 C   s$  t tdddtdddtdddtdddg}t tdddtd	ddtdddtd
ddg}t ddddg}t||k| t ddddg}t||k| t ddddg}t||k| t ddddg}t||k | t ddddg}t||k| t ddddg}t||k| d S )Nrr   rs   rG   ri   rY   ru   rk   rt   rh   ro   FTr   r   r   assert_series_equal)r   rl   rd   r]   r#   r#   r$   (test_cmp_series_period_series_mixed_freq  s4    



	



	zDTestPeriodSeriesComparisons.test_cmp_series_period_series_mixed_freqN)r:   r;   r<   r   r#   r#   r#   r$   r     s   r   c                   @   s(   e Zd ZdZdd Zdd Zdd ZdS )	*TestPeriodIndexSeriesComparisonConsistency2Test PeriodIndex and Period Series Ops consistencyc                 C   s`   t |}||}t|tjtjfs&tt|| t	|}||}t	||j
d}t|| d S Nname)r   
isinstancer   r   r   r   AssertionErrorr   r   r   r   r   )r   r\   funcr"   rK   r!   sr]   r#   r#   r$   _check  s    z1TestPeriodIndexSeriesComparisonConsistency._checkc                 C   s,  t ddddgddd}dd	 }tjd
d
dd
gtjd}| ||| dd	 }| ||| dd	 }tjddd
dgtjd}| ||| dd	 }| ||| dd	 }tjdddd
gtjd}| ||| dd	 }tjd
d
d
dgtjd}| ||| dd	 }tjdddd
gtjd}| ||| d S )Nrh   ri   rj   rk   rY   rK   rH   r   c                 S   s   | t dddkS Nrj   rY   rG   r   r3   r#   r#   r$   r5     r6   zPTestPeriodIndexSeriesComparisonConsistency.test_pi_comp_period.<locals>.<lambda>FTrM   c                 S   s   t ddd| kS r   r   r3   r#   r#   r$   r5     r6   c                 S   s   | t dddkS r   r   r3   r#   r#   r$   r5     r6   c                 S   s   t ddd| kS r   r   r3   r#   r#   r$   r5     r6   c                 S   s   t ddd| kS r   r   r3   r#   r#   r$   r5     r6   c                 S   s   | t dddkS r   r   r3   r#   r#   r$   r5     r6   c                 S   s   t ddd| kS r   r   r3   r#   r#   r$   r5     r6   r   r   r   Zbool_r   r   rK   fr]   r#   r#   r$   test_pi_comp_period  s0    
  z>TestPeriodIndexSeriesComparisonConsistency.test_pi_comp_periodc                 C   s  t ddddgddd}dd	 }tjd
d
dd
gtjd}| ||| dd	 }| ||| dd	 }tjd
d
d
d
gtjd}| ||| dd	 }| ||| dd	 }tjddd
dgtjd}| ||| dd	 }| ||| dd	 }tjddddgtjd}| ||| dd	 }| ||| dd	 }tjdd
dd
gtjd}| ||| dd	 }tjdd
d
d
gtjd}| ||| dd	 }tjd
d
d
d
gtjd}| ||| dd	 }tjd
d
d
d
gtjd}| ||| d S )Nrh   rz   rj   rk   rY   rK   r   c                 S   s   | t dddkS r   r   r3   r#   r#   r$   r5     r6   zTTestPeriodIndexSeriesComparisonConsistency.test_pi_comp_period_nat.<locals>.<lambda>FTrM   c                 S   s   t ddd| kS r   r   r3   r#   r#   r$   r5     r6   c                 S   s
   | t jkS r0   r   rz   r3   r#   r#   r$   r5     r6   c                 S   s
   t j| kS r0   r   r3   r#   r#   r$   r5     r6   c                 S   s   | t dddkS r   r   r3   r#   r#   r$   r5     r6   c                 S   s   t ddd| kS r   r   r3   r#   r#   r$   r5     r6   c                 S   s
   | t jkS r0   r   r3   r#   r#   r$   r5     r6   c                 S   s
   t j| kS r0   r   r3   r#   r#   r$   r5   
  r6   c                 S   s   t ddd| kS r   r   r3   r#   r#   r$   r5     r6   c                 S   s   | t dddk S r   r   r3   r#   r#   r$   r5     r6   c                 S   s
   | t jkS r0   r   r3   r#   r#   r$   r5     r6   c                 S   s
   t j| kS r0   r   r3   r#   r#   r$   r5     r6   r   r   r#   r#   r$   test_pi_comp_period_nat  sJ    
  zBTestPeriodIndexSeriesComparisonConsistency.test_pi_comp_period_natN)r:   r;   r<   __doc__r   r   r   r#   r#   r#   r$   r     s   r   c                   @   s   e Zd Zdd ZdS )TestPeriodFrameArithmeticc                 C   s  t tdddtdddgtdddtdddgd}|d jd	ksJt|d
 jd	ks\ttddd}|j}t tjd| d| gtdtjd| d| gtdd}t	
|| | t	
|| d|  t tdddtdddgtdddtdddgd}|d jd	kst|d
 jd	ks.tt tjd| d| gtdtjd| d| gtdd}t	
|| | t	
|| d|  d S )Nz2015-01rY   rG   z2015-022014-01z2014-02)rs   Brs   z	Period[M]r   z2015-03      rM         r8   z2015-05z2015-06r      )r   Z	DataFramer   rN   r   rH   r   r   r2   r   Zassert_frame_equal)r   Zdfpoffr]   Zdf2r#   r#   r$   test_ops_frame_period#  s<    z/TestPeriodFrameArithmetic.test_ops_frame_periodN)r:   r;   r<   r   r#   r#   r#   r$   r   "  s   r   c                   @   sV  e Zd Zdd Zdd Zdd Zdd Zej	d	d
dddgdd Z
ej	d	d
dddgej	dejjdfejjdfejjdfejjdfgdd Zej	ddeddggej	dejejejejgdd Zej	de e  e  ejdddd ejddd!d"ejddd#d j ejddd$d"j gd%d& Z!d'd( Z"d)d* Z#ej	d+d,d-d.dgej	d/ddgd0d1 Z$ej	d2ejej%gd3d4 Z&ej	d2ejej%gd5d6 Z'd7d8 Z(d9d: Z)ej	d;d<ejd<ej*d=gd>d? Z+d@dA Z,ej	dBdCdDgdEdF Z-dGdH Z.ej	dIejej%gej	dejejgdJdK Z/ej	dIejej%gdLdM Z0dNdO Z1ej	dPdQdRdSdTdUdVdWgdXdY Z2dZd[ Z3d\d] Z4d^d_ Z5d`da Z6dbdc Z7ddde Z8dfdg Z9dhdi Z:djdk Z;dldm Z<ej	dBdCdDgdndo Z=ej	dejdpgdq drd=e>?dpgdq gdsdt Z@dudv ZAdwdx ZBdS )yTestPeriodIndexArithmeticc              	   C   st   t dddd}t dddd}t||}d}tjt|d ||  W 5 Q R X tjt|d ||7 }W 5 Q R X d S )N1/1/2000rF   r7   rH   r   1/6/2000z/unsupported operand type\(s\) for \+: .* and .*rP   r   r   r   r=   rS   rT   r   r   rngr    rU   r#   r#   r$   test_parr_add_iadd_parr_raisesT  s    z8TestPeriodIndexArithmetic.test_parr_add_iadd_parr_raisesc                 C   sb   t dddd}t dddd}|j}td| gd }|| }t|| ||8 }t|| d S )Nr   rF   r7   r   r   )r   rH   r   r   r   assert_index_equal)r   r   r    r   r"   r!   r#   r#   r$   test_pi_sub_isub_pie  s    z-TestPeriodIndexArithmetic.test_pi_sub_isub_pic                 C   s   t dddd}|dd  dtj}|dd  |dd  sBt|| }|j}ttjd| d| d| d| g}t	|| d S )Nr   rF   r7   r   r   r   )
r   insertr   rz   equalsr   rH   r   r   r   )r   r   r    r!   r   r"   r#   r#   r$   test_pi_sub_pi_with_natu  s    &z1TestPeriodIndexArithmetic.test_pi_sub_pi_with_natc              	   C   sR   t dddd}t dddd}t||}d}tjt|d ||  W 5 Q R X d S )	Nr   rF   r7   r   r   Hz;Input has different freq=[HD] from PeriodArray\(freq=[DH]\)rP   )r   r   r   r=   rS   r   r   r#   r#   r$    test_parr_sub_pi_mismatched_freq  s    z:TestPeriodIndexArithmetic.test_parr_sub_pi_mismatched_freqnr   r      r   c                 C   sd   d}d}t |g||d}t |g||d}t |g|jjdt |g|jjd }t|| | d S )N1991090519920406rG   )r   rH   rl   r   r   )r   Ztick_classesr   p1_dp2_dp1p2r"   r#   r#   r$   test_sub_n_gt_1_ticks  s     z/TestPeriodIndexArithmetic.test_sub_n_gt_1_tickszoffset, kwd_namemonthstartingMonthNweekdayc                 C   s   |d k	r|dini }d}d}||fddi|}t |g|d}t |g|d}	|	| }
t |g|jdt |g|jd }t|
| d S )Nr   r   r   	normalizeFrG   )r   rl   r   r   )r   offsetZkwd_namer   kwdsr   r   rH   r   r   r!   r"   r#   r#   r$   test_sub_n_gt_1_offsets  s     z1TestPeriodIndexArithmetic.test_sub_n_gt_1_offsetsr    gQ	@g       @g      @opc              	   C   sT   t jddgdd}|d}t||}d}tjt|d ||| W 5 Q R X d S )Nr   
2011-01-02rF   rG   zmunsupported operand type\(s\) for [+-]: .* and .*|Concatenation operation is not implemented for NumPy arraysrP   )r   ZDatetimeIndex	to_periodr   r   r=   rS   rT   )r   r   r    r   dtir   rU   r#   r#   r$   test_parr_add_sub_float_raises  s    
z8TestPeriodIndexArithmetic.test_parr_add_sub_float_raisesz
2016-01-01r   rZ   zEurope/Brussels)r   tzSz
Asia/Tokyoc              	   C   s   t dddd}t||}d}tjt|d ||  W 5 Q R X tjt|d ||  W 5 Q R X tjt|d ||  W 5 Q R X tjt|d ||  W 5 Q R X d S )Nr   rF   r   r   z|(:?cannot add PeriodArray and .*)|(:?cannot subtract .* from (:?a\s)?.*)|(:?unsupported operand type\(s\) for \+: .* and .*)rP   r   )r   r    r   r   rU   r#   r#   r$   test_parr_add_sub_invalid  s    z3TestPeriodIndexArithmetic.test_parr_add_sub_invalidc              	   C   s   t dddd}tdddg}|j}d}tjt|d ||  W 5 Q R X tjt|d ||  W 5 Q R X tjt|d ||  W 5 Q R X d}tjt|d ||  W 5 Q R X d S )	Nr   Qr   r   -1 DayzCCannot add or subtract timedelta64\[ns\] dtype from period\[Q-DEC\]rP   z2cannot subtract PeriodArray from timedelta64\[ns\])r   r
   r\   r=   rS   rT   )r   r   tditdarrrU   r#   r#   r$   *test_pi_add_sub_td64_array_non_tick_raises  s    zDTestPeriodIndexArithmetic.test_pi_add_sub_td64_array_non_tick_raisesc              	   C   s  t dddd}tdddg}|j}t dddd}|| }t|| || }t|| || }t|| || }t|| t dddd}|| }t|| || }t|| d}tjt|d	 ||  W 5 Q R X tjt|d	 ||  W 5 Q R X d S )
Nr   Z90Dr   r   r   z
12/31/1999z1/2/2000cannot subtract .* from .*rP   )r   r
   r\   r   r   r=   rS   rT   )r   r   r   r   r"   r!   rU   r#   r#   r$   test_pi_add_sub_td64_array_tick  s,    z9TestPeriodIndexArithmetic.test_pi_add_sub_td64_array_tickpi_freqrF   Wr   tdi_freqc              	   C   sr  |}|t jtjfkr|nt j}tddg|d}td| }||}t||}	|dkr||	 }
|	d| |}t||}t
|
| |d |	 }
|d 	d| |}t||}t
|
| n|dkr"d	}tjt|d
 ||	  W 5 Q R X tjt|d
 |d |	  W 5 Q R X nLd}tjt|d
 ||	  W 5 Q R X tjt|d
 |d |	  W 5 Q R X d S )Nz1 hoursz2 hoursrG   z2018-03-07 17:16:40r   r   r   rF   z.Input has different freq=None from PeriodArrayrP   z"Cannot add or subtract timedelta64)r   r   r   rx   r   r
   r   r   r   Zto_timestampr   r=   rS   r   rT   )r   r   r   r   boxr   r   r   r   Ztd64objr!   r"   rU   r#   r#   r$   test_parr_sub_td64array  s4    

z1TestPeriodIndexArithmetic.test_parr_sub_td64arrayr   c           	   
   C   s:  t tdtdg}|tjjdddtjjdddg}t tdtdg}tt || }W 5 Q R X t|| tt || }W 5 Q R X t|| t	
tjjdd	tjjdd	g}d
}tjt|d$ tt ||  W 5 Q R X W 5 Q R X tjt|d$ tt ||  W 5 Q R X W 5 Q R X d S )N2015Q12016Q2r      r   r   Z2015Q2Z2015Q4r   z1Input cannot be converted to Period\(freq=Q-DEC\)rP   )r   r   r   offsets
QuarterEndr   assert_produces_warningr   r   r   r   HourZMinuter=   rS   r   )	r   r   r   Zoffsr"   resZres2Z
unanchoredrU   r#   r#   r$   test_pi_add_offset_arrayD  s*    "z2TestPeriodIndexArithmetic.test_pi_add_offset_arrayc              
      s  t tdtdg|tjjdddtjjdddg t  fddttD }tt	   }W 5 Q R X t
|| |tj tjjd	d
g}d}tjt|d$ tt	 |  W 5 Q R X W 5 Q R X tjt|d$ tt	 |  W 5 Q R X W 5 Q R X d S )Nr   r   r   r   r   r   c                    s   g | ]}|  |  qS r#   r#   )r`   r   r    r   r#   r$   rc   n  s     zFTestPeriodIndexArithmetic.test_pi_sub_offset_array.<locals>.<listcomp>r   r   z6Input has different freq=-1M from Period\(freq=Q-DEC\)rP   )r   r   r   r   r   rC   lenr   r   r   r   MonthEndDayr=   rS   r   )r   r   r"   r   ZanchoredrU   r#   r   r$   test_pi_sub_offset_arrayc  s$     z2TestPeriodIndexArithmetic.test_pi_sub_offset_arrayc                 C   sH   t dddd}|| }t dddd}t|| ||7 }t|| d S )N2000-01-01 09:00r   r[   r   z2000-01-01 10:00r   r   r   r   Zoner   r!   r"   r#   r#   r$   test_pi_add_iadd_int  s    z.TestPeriodIndexArithmetic.test_pi_add_iadd_intc                 C   sH   t dddd}|| }t dddd}t|| ||8 }t|| dS )z
        PeriodIndex.__sub__ and __isub__ with several representations of
        the integer 1, e.g. int, np.int64, np.uint8, ...
        r   r   r[   r   z2000-01-01 08:00Nr   r   r#   r#   r$   test_pi_sub_isub_int  s    z.TestPeriodIndexArithmetic.test_pi_sub_isub_intfiver7   rM   c                 C   s.   t ddd}|| }||  }t|| d S )NrW   2   r   r   )r   r   r   r!   r]   r#   r#   r$   test_pi_sub_intlike  s    
z-TestPeriodIndexArithmetic.test_pi_sub_intlikec                 C   s   t dddd}|tjd }t dddd}t|| |tjd8 }t|| t dd	d
d}|tjd }t ddd
d}t|| |tjd8 }t|| d S )Nrv   2024rs   rG   r7   Z20092019r   2016-12rY   z2013-08z2016-07)r   r   r   YearEndr   r   r   r   r   r!   r"   r#   r#   r$   test_pi_sub_isub_offset  s    z1TestPeriodIndexArithmetic.test_pi_sub_isub_offset	transposeTFc                 C   st   t ddd}t|g}tdgdd}tj|||d}tj|||d}||j }t|| |j| }t|| d S )N2016-01rf   rG   z2016-03r   )r   r   r   r   rH   r   )r   r   r   rm   r   r"   r!   r#   r#   r$   test_pi_add_offset_n_gt1  s    


z2TestPeriodIndexArithmetic.test_pi_add_offset_n_gt1c                 C   sh   t dgdd}t dgdd}t||}t||}|td }t|| td| }t|| d S )Nr   rf   rG   z2016-04rg   )r   r   r   r   r   )r   r   r   r"   r!   r#   r#   r$   &test_pi_add_offset_n_gt1_not_divisible  s    z@TestPeriodIndexArithmetic.test_pi_add_offset_n_gt1_not_divisible
int_holderc                 C   sN   t tdtdg}|ddg}|||}t tdtdg}t|| d S )Nr   rz   r   r8   Z2016Q1)r   r   r   r   )r   r   r   r   r    r!   r"   r#   r#   r$   test_pi_add_intarray  s
    
z.TestPeriodIndexArithmetic.test_pi_add_intarrayc              	   C   sr   t tdtdg}|ddg}|| }t tdtdg}t|| d}tjt|d ||  W 5 Q R X d S )Nr   rz   r   r8   Z2014Q1z+bad operand type for unary -: 'PeriodArray'rP   )r   r   r   r   r=   rS   rT   )r   r   r   r    r!   r"   rU   r#   r#   r$   test_pi_sub_intarray  s    z.TestPeriodIndexArithmetic.test_pi_sub_intarrayc              	   C   s   |}t dddd}tdddgdd}|| }t|| || }t|| td	d
dgdd}|| }t|| d}tjt|d ||  W 5 Q R X d S )N
2014-05-01r   Z2DrZ   
2014-05-04z
2014-05-06z
2014-05-08rG   
2014-04-28z
2014-04-30z
2014-05-02h(:?bad operand type for unary -: 'PeriodArray')|(:?cannot subtract PeriodArray from timedelta64\[[hD]\])rP   )r   r   r   r   r=   rS   rT   )r   
three_daysr    r   r"   r!   rU   r#   r#   r$   $test_pi_add_timedeltalike_minute_gt1  s    z>TestPeriodIndexArithmetic.test_pi_add_timedeltalike_minute_gt1freqstrZ5nsZ5usZ5msZ5sZ5TZ5hZ5dc              	   C   s   |}t dd|d}t |d | d|d}|| }t|| || }t|| t |d | d|d}|| }t|| d}tjt|d ||  W 5 Q R X d S )Nr     rZ   r   r  rP   )r   r   r   r=   rS   rT   )r   r  r  r    r   r"   r!   rU   r#   r#   r$   "test_pi_add_timedeltalike_tick_gt1  s    z<TestPeriodIndexArithmetic.test_pi_add_timedeltalike_tick_gt1c                 C   sL   |}t dddd}t dddd}|| }t|| ||7 }t|| d S )Nr  
2014-05-15rF   rG   r  z
2014-05-18r   r   r  r    r   r"   r!   r#   r#   r$   $test_pi_add_iadd_timedeltalike_daily'  s    z>TestPeriodIndexArithmetic.test_pi_add_iadd_timedeltalike_dailyc                 C   sL   |}t dddd}t dddd}|| }t|| ||8 }t|| d S )Nr  r  rF   rG   r  z
2014-05-12r   r  r#   r#   r$   $test_pi_sub_isub_timedeltalike_daily3  s    z>TestPeriodIndexArithmetic.test_pi_sub_isub_timedeltalike_dailyc              	   C   s   |}t dddd}d}tjt|d ||  W 5 Q R X tjt|d ||7 }W 5 Q R X tjt|d ||  W 5 Q R X tjt|d ||8 }W 5 Q R X d S )Nr  r  rF   rG   z7Input has different freq(=.+)? from Period.*?\(freq=D\)rP   r   r=   rS   r   )r   Z	not_dailyr    r   rU   r#   r#   r$   1test_pi_add_sub_timedeltalike_freq_mismatch_daily?  s    zKTestPeriodIndexArithmetic.test_pi_add_sub_timedeltalike_freq_mismatch_dailyc                 C   sL   |}t dddd}t dddd}|| }t|| ||7 }t|| d S )N2014-01-01 10:002014-01-05 10:00r   rG   z2014-01-01 12:00z2014-01-05 12:00r   r   Z	two_hoursr    r   r"   r!   r#   r#   r$   %test_pi_add_iadd_timedeltalike_hourlyL  s    z?TestPeriodIndexArithmetic.test_pi_add_iadd_timedeltalike_hourlyc              	   C   s^   |}t dddd}d}tjt|d ||  W 5 Q R X tjt|d ||7 }W 5 Q R X d S )Nr  r  r   rG   z7Input has different freq(=.+)? from Period.*?\(freq=H\)rP   r  )r   Z
not_hourlyr    r   rU   r#   r#   r$   0test_pi_add_timedeltalike_mismatched_freq_hourlyW  s    zJTestPeriodIndexArithmetic.test_pi_add_timedeltalike_mismatched_freq_hourlyc                 C   sL   |}t dddd}t dddd}|| }t|| ||8 }t|| d S )Nr  r  r   rG   z2014-01-01 08:00z2014-01-05 08:00r   r  r#   r#   r$   %test_pi_sub_isub_timedeltalike_hourlyb  s    z?TestPeriodIndexArithmetic.test_pi_sub_isub_timedeltalike_hourlyc                 C   sX   t dddd}|tjd }t dddd}t|| |tjd7 }t|| d S )Nrv   r   rs   rG   r7   r   Z2029)r   r   r   r   r   r   r   r#   r#   r$   "test_add_iadd_timedeltalike_annualm  s    z<TestPeriodIndexArithmetic.test_add_iadd_timedeltalike_annualc              	   C   s   |}t dddd}d}tjt|d ||  W 5 Q R X tjt|d ||7 }W 5 Q R X tjt|d ||  W 5 Q R X tjt|d ||8 }W 5 Q R X d S )Nrv   r   rs   rG   z;Input has different freq(=.+)? from Period.*?\(freq=A-DEC\)rP   r  r   Zmismatched_freqr    r   rU   r#   r#   r$   2test_pi_add_sub_timedeltalike_freq_mismatch_annualw  s    zLTestPeriodIndexArithmetic.test_pi_add_sub_timedeltalike_freq_mismatch_annualc                 C   sX   t dddd}t dddd}|tjd }t|| |tjd7 }t|| d S )Nr   r   rY   rG   z2014-06z2017-05r7   )r   r   r   r   r   r   )r   r   r"   r!   r#   r#   r$    test_pi_add_iadd_timedeltalike_M  s    z:TestPeriodIndexArithmetic.test_pi_add_iadd_timedeltalike_Mc              	   C   s   |}t dddd}d}tjt|d ||  W 5 Q R X tjt|d ||7 }W 5 Q R X tjt|d ||  W 5 Q R X tjt|d ||8 }W 5 Q R X d S )Nr   r   rY   rG   z7Input has different freq(=.+)? from Period.*?\(freq=M\)rP   r  r  r#   r#   r$   3test_pi_add_sub_timedeltalike_freq_mismatch_monthly  s    zMTestPeriodIndexArithmetic.test_pi_add_sub_timedeltalike_freq_mismatch_monthlyc           	   	   C   s   t dddd}td}tdgd dd}tj|||d}tj|||d}|| }t|| || }t|| || }t|| d}tjt	|d	 ||  W 5 Q R X d S )
N
1994-04-01r)   19DrZ   rz   rG   r   r   rP   )
r   r   Ztimedelta64r   r   r   r   r=   rS   rT   )	r   r   r   r   r    r"   objr!   rU   r#   r#   r$   test_parr_add_sub_td64_nat  s    
z4TestPeriodIndexArithmetic.test_parr_add_sub_td64_natrz   r)   zm8[ns]c              	   C   s   t dddd}tdgd dd}t||}t||}|| }t|| || }t|| || }t|| d}tjt|d ||  W 5 Q R X d S )	Nr  r)   r  rZ   rz   rG   r   rP   )r   r   r   r   r   r=   rS   rT   )r   r   r    r   r"   r  r!   rU   r#   r#   r$   !test_parr_add_sub_tdt64_nat_array  s    z;TestPeriodIndexArithmetic.test_parr_add_sub_tdt64_nat_arrayc                 C   s2   t ddd}|j}|| }|| }t|| d S )N
2000-12-31r   r   )r   r   r   r   )r   r   r,   r!   r"   r#   r#   r$   test_parr_add_sub_index  s
    z1TestPeriodIndexArithmetic.test_parr_add_sub_indexc              	   C   s   t dddd}|j}ttddtjddg}tt	 || }W 5 Q R X t
dd	d
gddj}t|| tt	 || }W 5 Q R X t
dgd ddj}t|| d S )Nr!  r   rF   rZ   r   r'   r   z
2001-01-01z
2001-01-03z
2001-01-05rG   z
2000-12-30)r   r   r   r	   r   r   r   r   r   r   r   r   )r   r   r,   r    r!   r"   r#   r#   r$   test_parr_add_sub_object_array  s     z8TestPeriodIndexArithmetic.test_parr_add_sub_object_array)Cr:   r;   r<   r   r   r   r   r=   r>   r?   r   r   r   r   r   r   ZWeekr   r   r   operatoraddr   ZraddsubZrsubr   r   r@   Zto_pydatetimeZto_datetime64rA   _datar   r   r   r   r   r   r   r   r   Zint64r   r   r   r   r   r  r  r
  r  r  r  r  r  r  r  r  r  r  r  r   Z_from_sequencer   r"  r#  r#   r#   r#   r$   r   M  s   






	


+

	

	





	r   c                   @   s   e Zd Zdd Zdd ZdS )TestPeriodSeriesArithmeticc                 C   s   t tdddtdddgdd}|jdks.tt tdddtdddgdd}|td	 }t|| td	| }t|| |tjj	
  }t|| tjj	
 | }t|| d S )
N
2015-01-01rF   rG   
2015-01-02xxxr   	Period[D]z
2015-01-03z1 days)r   r   rN   r   r	   r   r   r   Ztseriesr   r   )r   rd   r"   r!   r#   r#   r$   test_ops_series_timedelta  s"    z4TestPeriodSeriesArithmetic.test_ops_series_timedeltac                 C   s   t tdddtdddgdd}|jdks.ttddd}|j}t d	| d
| gdtd}t|| | t|| d|  t tdddtdddgdd}|jdkstt d| d| gdtd}t|| | t|| d|  d S )Nr)  rF   rG   r*  r+  r   r,  z
2015-01-10r)      )r   rN   r8   z
2015-01-05z
2015-01-04r   r   )r   r   rN   r   rH   r2   r   r   )r   rd   rm   r   r"   s2r#   r#   r$   test_ops_series_period  s$    z1TestPeriodSeriesArithmetic.test_ops_series_periodN)r:   r;   r<   r-  r0  r#   r#   r#   r$   r(    s   r(  c                   @   s   e Zd ZdZdd Zdd Zejdddgejd	d
d dd dd dd dd dd dd dd gdd Z	dd Z
dd Zdd Zdd Zdd Zdd  Zd!d" Zejd#d$d%d&d'd(gd)d* Zd(S )+TestPeriodIndexSeriesMethodsr   c                 C   sJ   t |}||}t|| t|}||}t||jd}t|| d S r   )r   r   r   r   r   r   )r   r\   r   r"   rK   r!   rd   r]   r#   r#   r$   r     s    z#TestPeriodIndexSeriesMethods._checkc                 C   s   t ddddgddd}t dddd	gddd}| |d
d | | |dd | | |d dd | |tddd }|j}tjd| d| d| d| gdd}t|| tddd| }tjd| d| d| d| gdd}t|| d S )Nrh   ri   rj   rk   rY   rK   r   ro   2011-06c                 S   s   | d S Nr   r#   r3   r#   r#   r$   r5   3  r6   z:TestPeriodIndexSeriesMethods.test_pi_ops.<locals>.<lambda>c                 S   s   d|  S r3  r#   r3   r#   r#   r$   r5   4  r6   r   c                 S   s   | d S r3  r#   r3   r#   r#   r$   r5   6  r6   rG   r   r   r   r   r8   r   )r   r   r   rH   r   r   r   r   )r   rK   r"   r!   r   r]   r#   r#   r$   test_pi_ops*  s(    
  
  &&z(TestPeriodIndexSeriesMethods.test_pi_opsngstrg      ?r   c                 C   s   | | S r0   r#   r  r6  r#   r#   r$   r5   E  r6   z%TestPeriodIndexSeriesMethods.<lambda>c                 C   s   ||  S r0   r#   r8  r#   r#   r$   r5   F  r6   c                 C   s   | | S r0   r#   r8  r#   r#   r$   r5   G  r6   c                 C   s   ||  S r0   r#   r8  r#   r#   r$   r5   H  r6   c                 C   s   t | |S r0   r   r%  r8  r#   r#   r$   r5   I  r6   c                 C   s   t || S r0   r9  r8  r#   r#   r$   r5   J  r6   c                 C   s   t | |S r0   r   subtractr8  r#   r#   r$   r5   K  r6   c                 C   s   t || S r0   r:  r8  r#   r#   r$   r5   L  r6   c              	   C   sN   t ddddgddd}t||}d}tjt|d	 ||| W 5 Q R X d S )
Nrh   ri   rj   rk   rY   rK   r   zWunsupported operand type\(s\)|can only concatenate|must be str|object to str implicitlyrP   )r   r   r   r=   rS   rT   )r   r6  r   r   rK   r  rU   r#   r#   r$   test_parr_ops_errorsA  s    
  z1TestPeriodIndexSeriesMethods.test_parr_ops_errorsc                 C   s   t ddddgddd}t dddd	gddd}| |d
d | | |dd | | |dd | | |d dd | | |d dd | t ddddgddd}t ddddgddd}| |dd | | |dd | | |dd | | |d dd | | |d dd | d S )Nrh   ri   rz   rk   rY   rK   r   rj   r2  c                 S   s   | d S r3  r#   r3   r#   r#   r$   r5   d  r6   z>TestPeriodIndexSeriesMethods.test_pi_ops_nat.<locals>.<lambda>c                 S   s   d|  S r3  r#   r3   r#   r#   r$   r5   e  r6   c                 S   s   t | dS r3  r9  r3   r#   r#   r$   r5   f  r6   r   c                 S   s   | d S r3  r#   r3   r#   r#   r$   r5   h  r6   c                 S   s   t | dS r3  r:  r3   r#   r#   r$   r5   i  r6   rf   z2011-072011-08z2011-10c                 S   s   | d S Nr   r#   r3   r#   r#   r$   r5   s  r6   c                 S   s   d|  S r>  r#   r3   r#   r#   r$   r5   t  r6   c                 S   s   t | dS r>  r9  r3   r#   r#   r$   r5   u  r6   r   c                 S   s   | d S r>  r#   r3   r#   r#   r$   r5   w  r6   c                 S   s   t | dS r>  r:  r3   r#   r#   r$   r5   x  r6   r   r   )r   rK   r"   r#   r#   r$   test_pi_ops_nat\  s<    
  
  
  
  z,TestPeriodIndexSeriesMethods.test_pi_ops_natc                 C   s   t ddddgddd}dd	 }t dddd
gddd}| ||| dd	 }t ddddgddd}| ||| dd	 }t ddddgddd}| ||| dd	 }t ddddgddd}| ||| d S )Nrh   ri   rz   rk   rY   rK   r   c                 S   s   | t ddddg S Nr   r   r   r   r   r   r3   r#   r#   r$   r5     r6   zDTestPeriodIndexSeriesMethods.test_pi_ops_array_int.<locals>.<lambda>r=  c              	   S   s   t | t ddddgS )Nr   r8   r   r   )r   r%  r   r3   r#   r#   r$   r5     r6   ro   r2  c                 S   s   | t ddddg S rA  rB  r3   r#   r#   r$   r5     r6   z2010-12c              	   S   s   t | t ddddgS )Nr   r   r   )r   r;  r   r3   r#   r#   r$   r5     r6   z2010-10r?  r   r#   r#   r$   test_pi_ops_array_intz  sB    
  
  
  
  
  z2TestPeriodIndexSeriesMethods.test_pi_ops_array_intc                 C   s   t ddddgddd}dd	 }t d
dddgddd}| ||| dd	 }t ddddgddd}| ||| dd	 }t ddddgddd}| ||| d S )Nr   
2011-02-01
2011-03-01
2011-04-01rF   rK   r   c                 S   s   | t j  S r0   r   r   r   r3   r#   r#   r$   r5     r6   zATestPeriodIndexSeriesMethods.test_pi_ops_offset.<locals>.<lambda>r   z
2011-02-02z
2011-03-02z
2011-04-02c                 S   s   | t jd S r3  rG  r3   r#   r#   r$   r5     r6   r   z
2011-02-03z
2011-03-03z
2011-04-03c                 S   s   | t jd S r3  rG  r3   r#   r#   r$   r5     r6   z
2010-12-30z
2011-01-30z
2011-02-27z
2011-03-30r?  r   r#   r#   r$   test_pi_ops_offset  s4    



z/TestPeriodIndexSeriesMethods.test_pi_ops_offsetc              
   C   s   t ddddgddd}t|}||fD ]}d}tjt|d	 |tjd
  W 5 Q R X tjt|d	 tjd
|  W 5 Q R X d}tjt|d	 |tjd
  W 5 Q R X q&d S )Nr   rD  rE  rF  rF   rK   r   z4Input has different freq=2H from Period.*?\(freq=D\)rP   r   z5Input has different freq=-2H from Period.*?\(freq=D\))r   r   r=   rS   r   r   r   r   )r   rK   rd   r  rU   r#   r#   r$   test_pi_offset_errors  s    
z2TestPeriodIndexSeriesMethods.test_pi_offset_errorsc                 C   s\  t ddddgddd}|tddd	 }|j}tjd
| d| d| d| gdd}t|| t|tddd	}t|| tddd	| }tjd| d| d| d| gdd}t|| ttddd	|}t|| t	tj
tj
tj
tj
gdd}|tddd	 }t|| |j|jks*ttddd	| }t|| |j|jksXtd S )Nrh   ri   rj   rk   rY   rK   r   2012-01rG   ir   r      r[   r)   rz   )r   r   rH   r   r   r   r   r   r;  r
   nanr   r   rK   r!   r   r]   r#   r#   r$   test_pi_sub_period  s.    
  &&z/TestPeriodIndexSeriesMethods.test_pi_sub_periodc                 C   sR   t ddddgddd}ttjgd dd	}ttj| | t|tj | d S )
Nrh   ri   rz   rk   rY   rK   r   r   r   )r   r
   r   rz   r   r   )r   rK   r]   r#   r#   r$   test_pi_sub_pdnat  s    
  z.TestPeriodIndexSeriesMethods.test_pi_sub_pdnatc                 C   s   t ddddgddd}|tddd	 }|j}tjd
| tjd| d| gdd}t|| tddd	| }tjd| tjd| d| gdd}t|| tt	j
t	j
t	j
t	j
gdd}t|tddd	 | ttddd	| | d S )Nrh   rz   rj   rk   rY   rK   r   rJ  rG   rK  rL  rM  r   r   r[   r)   )r   r   rH   r   r   rz   r   r   r
   r   rO  rP  r#   r#   r$   test_pi_sub_period_nat  s    
  $$z3TestPeriodIndexSeriesMethods.test_pi_sub_period_natscalarsaFr   g      ?Nc                 C   s<   t ddg}t tdtdgdd}||k}t|| d S )NFr   Z2020zperiod[A-DEC]rM   r   )r   rT  r"   r   r!   r#   r#   r$   test_comparison_operations  s    z7TestPeriodIndexSeriesMethods.test_comparison_operations)r:   r;   r<   r   r   r5  r=   r>   r?   r<  r@  rC  rH  rI  rQ  rR  rS  rV  r#   r#   r#   r$   r1    s4   	r1  )#r$  Znumpyr   r=   Zpandas._libs.tslibsr   r   r   r   Zpandas.errorsr   Zpandasr   r   r   r	   r
   r   Zpandas._testingZ_testingr   Zpandas.corer   Zpandas.core.arraysr   Zpandas.tests.arithmetic.commonr   r   rD   r   r   r   r   r(  r1  r#   r#   r#   r$   <module>   s2   g  (d+      4