a
    j=ic                     @   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mZ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_addsub_typeassert_invalid_comparisonget_upcast_boxc                   @   s  e Zd Zejddedddgdd Zdd Zejd	d
e	de
ddd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eddeddeeg dg	dd Zejdeejdd gdd  ZdS )!TestPeriodArrayLikeComparisonsother2017Dfreqc                 C   sZ   t g ddd}t||}t||d}tg d}t||}||k}t|| d S )N)r   r   Z2018r   r   TTTFr   tmbox_expectedr   nparrayassert_equal)selfr   box_with_arrayidxxboxexpectedresult r$   t/home/droni/.local/share/virtualenvs/DPS-5Je3_V2c/lib/python3.9/site-packages/pandas/tests/arithmetic/test_period.pytest_eq_scalar+   s    z-TestPeriodArrayLikeComparisons.test_eq_scalarc                 C   sh   t ddd}t| d }t||}t||d}||k}tg d}t||}t|| d S )N2000   periodsr   TTFFF)r   r   r   Zto_numpyr   r   r   r   )r   r   pir   r!   r#   r"   r$   r$   r%   test_compare_zerodim9   s    z3TestPeriodArrayLikeComparisons.test_compare_zerodimscalarZfooz
2021-01-01r(   days	   g      #@  FNc                 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_scalarG   s    z:TestPeriodArrayLikeComparisons.test_compare_invalid_scalarr'   r)   Z1D)r2   i  i  i  i  c                 C   s(   t ddd}t||}t||| d S r3   r4   )r   r   r   r,   r5   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>o       z'TestPeriodArrayLikeComparisons.<lambda>c           	      C   s  t ddd}t||}||}t||d}tg d}t||}||k}t|| ||k}t|| ||k}t|| ||k}t||  ||k }t||  ||k}t||  ||d d d }tg d}t||}||k}t|| tg d}t||}||k}t|| tg d	}t||}||k}t|| tg d
}t||}||k}t|| tg d}t||}||k }t|| tg d}t||}||k}t|| d S )Nr'      r)   T)TTTTT)FFTFF)TTTFF)FFTTT)TTFTT)TTFFF)FFFTT)r   r   r   r   r   r   r   )	r   r   r8   r,   r5   r   r!   r"   r#   r$   r$   r%   test_compare_object_dtypeo   sV    z8TestPeriodArrayLikeComparisons.test_compare_object_dtype)__name__
__module____qualname__pytestmarkparametrizer   r&   r-   r   r	   r6   pd
date_ranger   Ztimedelta_ranger   aranger:   float64listranger;   Indexr7   rB   r$   r$   r$   r%   r   &   s@   




r   c                   @   s   e Zd Zdd Zdd Zejdg ddd Zejdg dd	d
 Z	ejdg ddd Z
ejdg ddd Zejdg ddd Zejdedgdd ZdS )TestPeriodIndexComparisonsc                 C   s~   t dddd}|d }||k }|j|jd k }t|| |jdd|k }t||dd |t|k }t|| d S )N2007-01   Mr*   r   
      )r   valuesr   assert_numpy_array_equalZreshaper   r   )r   r    perr#   expr$   r$   r%   test_pi_cmp_period   s    z-TestPeriodIndexComparisons.test_pi_cmp_periodc                    s   t dddd}|d   fdd|D }t||}t| d}t||}| k}t|| |d	  | k} fd
d|D }t||}t|| d S )Nz
2000-01-01rU   r   rT      c                    s   g | ]}| kqS r$   r$   .0r=   valr$   r%   
<listcomp>   r?   zKTestPeriodIndexComparisons.test_parr_cmp_period_scalar2.<locals>.<listcomp>Tr@   c                    s   g | ]}| kqS r$   r$   r]   r_   r$   r%   ra      r?   )r   r   r   r   r   )r   r   r,   r"   serr!   r#   r$   r_   r%   test_parr_cmp_period_scalar2   s    z7TestPeriodIndexComparisons.test_parr_cmp_period_scalar2r   )rS   2M3Mc                 C   s  t g d|d}t||}td|d}t||d}tg d}t||}t||k| t||k| tg d}t||}t||k| t||k| tg d}t||}t||k| t||k | tg d}t||}t||k | t||k| tg d	}t||}t||k| t||k| tg d
}t||}t||k| t||k| d S )N2011-012011-022011-032011-04r   rh   TFTFFTFTT)FFTTr+   )FTTT)TTFF)r   r   r   r   r   r   r   r   )r   r   r   baserY   r!   rZ   r$   r$   r%   test_parr_cmp_period_scalar   s8    z6TestPeriodIndexComparisons.test_parr_cmp_period_scalarc                 C   s8  t g d|d}t||}t g d|d}t||d}tg d}t||}t||k| tg d}t||}t||k| tg d}t||}t||k| tg d}t||}t||k | tg d	}t||}t||k| tg d
}t||}t||k| d S )Nrf   r   )rh   rg   ri   2011-05TFFTFTTFTrk   TFFTFTTFrl   r   )r   r   r   rm   r    r!   rZ   r$   r$   r%   test_parr_cmp_pi   s,    z+TestPeriodIndexComparisons.test_parr_cmp_pic                 C   s  t g d|d}t||}d| d}tjt|d  |tdddk W d    n1 s\0    Y  tjt|d  tddd|k W d    n1 s0    Y  t g ddd}d	}|tjtj	fv r|n|}tjt|d ||k W d    n1 s0    Y  d| d}tjt|d  |tdd
dk W d    n1 sH0    Y  tjt|d  tdd
d|k W d    n1 s0    Y  t g dd
d}d}|tjtj	fv r|n|}tjt|d ||k W d    n1 s0    Y  d S )Nrf   r   )Invalid comparison between dtype=period\[z\] and Periodmatch2011A)rx   201220132014z@Invalid comparison between dtype=period\[A-DEC\] and PeriodArray4Mz=Invalid comparison between dtype=period\[4M\] and PeriodArray)
r   r   r   rF   raises	TypeErrorr   to_arrayrI   r   )r   r   r   rm   msgr    Zrev_msgZidx_msgr$   r$   r%    test_parr_cmp_pi_mismatched_freq  s,    ..&00z;TestPeriodIndexComparisons.test_parr_cmp_pi_mismatched_freqc                 C   s  t g d|d}|d }||k}tg d}t|| ||k }t|| |tjk}tg d}t|| tj|k}t|| |tjk}tg d}t|| tj|k}t|| t g d|d}||k }tg d}t|| ||k}tg d}t|| ||k}tg d}t|| ||k}tg d	}t|| ||k}tg d
}t|| d S )Nrg   rh   NaTro   r      FFFTFFFFTTTTrh   rg   rj   r   r+   rq   rp   )r   r   r   r   rX   rI   r   )r   r   idx1rY   r#   rZ   Zidx2r$   r$   r%   test_pi_cmp_nat<  sB    



z*TestPeriodIndexComparisons.test_pi_cmp_natc                 C   s   t g d|d}t g ddd}d| d}tjt|d ||k W d    n1 sX0    Y  ||k}tjg dtd	}t|| d S )
Nr   r   r   r}   ru   z\] and PeriodArrayrv   r   dtype)	r   rF   r~   r   r   r   boolr   rX   )r   r   r   diffr   r#   r"   r$   r$   r%   &test_pi_cmp_nat_mismatched_freq_raisesh  s    &zATestPeriodIndexComparisons.test_pi_cmp_nat_mismatched_freq_raisesr   Nc                 C   s(  t tdtjtdg}t tjtjtdg}|d urJ||}||}||k}tg d}t|| ||k}tg d}t|| tg d}t|tjk| ttj|k| tg d}t|tjk| ttj|k| tg d}t|tjk | ttj|k| d S )N
2011-01-01
2011-01-03)FFTr   )FFF)TTT)	r   r   rI   r   r:   r   r   r   rX   )r   r   leftrightr#   r"   r$   r$   r%   test_comp_natv  s(    

z(TestPeriodIndexComparisons.test_comp_nat)rC   rD   rE   r[   rc   rF   rG   rH   rn   rt   r   r   r   r;   r   r$   r$   r$   r%   rP      s   
%
"
"
+
rP   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 g d}t||k| t g d}t||k| t g d}t||k| t g d}t||k | t g d}t||k| t g d}t||k| d S )Nrx   ry   r   rh   rS   r{   rj   rz   rg   ro   rp   rq   rk   rr   rs   rl   )r   r   r   assert_series_equal)r   rm   rb   rZ   r$   r$   r%   (test_cmp_series_period_series_mixed_freq  s4    



	



	zDTestPeriodSeriesComparisons.test_cmp_series_period_series_mixed_freqN)rC   rD   rE   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&J t|| t|}||}t||j	d}t
|| d S Nname)r   
isinstancerI   rO   r   Zndarrayr   r   r   r   r   )r   rW   funcr"   r    r#   srZ   r$   r$   r%   _check  s    z1TestPeriodIndexSeriesComparisonConsistency._checkc                    s8  t g dddd}|d   fdd}tjg dtjd	}| |||  fd
d}| |||  fdd}tjg dtjd	}| |||  fdd}| |||  fdd}tjg dtjd	}| |||  fdd}tjg dtjd	}| |||  fdd}tjg dtjd	}| ||| d S )Nrf   rS   r    r   r   rV   c                    s   |  kS r9   r$   r<   rY   r$   r%   r>     r?   zPTestPeriodIndexSeriesComparisonConsistency.test_pi_comp_period.<locals>.<lambda>rp   r   c                    s    | kS r9   r$   r<   r   r$   r%   r>     r?   c                    s   |  kS r9   r$   r<   r   r$   r%   r>     r?   rq   c                    s    | kS r9   r$   r<   r   r$   r%   r>     r?   c                    s    | kS r9   r$   r<   r   r$   r%   r>     r?   )TTTFc                    s   |  kS r9   r$   r<   r   r$   r%   r>     r?   r   c                    s    | kS r9   r$   r<   r   r$   r%   r>     r?   r   r   r   Zbool_r   r   r    frZ   r$   r   r%   test_pi_comp_period  s.    
z>TestPeriodIndexSeriesComparisonConsistency.test_pi_comp_periodc                    s  t g dddd}|d   fdd}tjg dtjd	}| |||  fd
d}| ||| dd }tjg dtjd	}| ||| dd }| |||  fdd}tjg dtjd	}| |||  fdd}| ||| dd }tjg dtjd	}| ||| dd }| |||  fdd}tjg dtjd	}| |||  fdd}tjg dtjd	}| ||| dd }tjg dtjd	}| ||| dd }tjg dtjd	}| ||| d S )Nrg   r   ri   rj   rS   r    r   rV   c                    s   |  kS r9   r$   r<   r   r$   r%   r>     r?   zTTestPeriodIndexSeriesComparisonConsistency.test_pi_comp_period_nat.<locals>.<lambda>rp   r   c                    s    | kS r9   r$   r<   r   r$   r%   r>     r?   c                 S   s
   | t jkS r9   rI   r   r<   r$   r$   r%   r>     r?   r   c                 S   s
   t j| kS r9   r   r<   r$   r$   r%   r>     r?   c                    s   |  kS r9   r$   r<   r   r$   r%   r>     r?   rq   c                    s    | kS r9   r$   r<   r   r$   r%   r>     r?   c                 S   s
   | t jkS r9   r   r<   r$   r$   r%   r>     r?   r   c                 S   s
   t j| kS r9   r   r<   r$   r$   r%   r>   
  r?   c                    s    | kS r9   r$   r<   r   r$   r%   r>     r?   )TFTFc                    s   |  k S r9   r$   r<   r   r$   r%   r>     r?   r+   c                 S   s
   | t jkS r9   r   r<   r$   r$   r%   r>     r?   c                 S   s
   t j| kS r9   r   r<   r$   r$   r%   r>     r?   r   r   r$   r   r%   test_pi_comp_period_nat  sH    
zBTestPeriodIndexSeriesComparisonConsistency.test_pi_comp_period_natN)rC   rD   rE   __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sJJ |d
 jd	ks\J 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J |d
 jd	ks.J t tjd| d| gtdtjd| d| gtdd}t	|| | t	|| d|  d S )Nz2015-01rS   r   z2015-022014-01z2014-02)ry   Bry   z	Period[M]r   z2015-03rV   r   r         rA   z2015-05z2015-06r(      )
rI   	DataFramer   r   r   r   r   r;   r   Zassert_frame_equal)r   dfpoffrZ   Zdf2r$   r$   r%   test_ops_frame_period#  s<    z/TestPeriodFrameArithmetic.test_ops_frame_periodN)rC   rD   rE   r   r$   r$   r$   r%   r   "  s   r   c                   @   s  e Zd Zdd Zdd Zdd Zdd Zej	d	g d
dd Z
ej	d	g d
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eded ed 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deg dg	dd  Zd!d" Zd#d$ Zej	d%g d&ej	d'ddgd(d) Zej	d*ejejgd+d, Zej	d*ejejgd-d. Zd/d0 Z d1d2 Z!ej	d3d4ejd4ej"d5gd6d7 Z#d8d9 Z$d:d; Z%ej	d<d=d>gd?d@ Z&dAdB Z'ej	dCejejgej	dDe(j)e*j+gdEdF Z,ej	dCejejgdGdH Z-dIdJ Z.ej	dKg dLdMdN Z/dOdP Z0dQdR Z1dSdT Z2dUdV Z3dWdX Z4dYdZ Z5d[d\ Z6d]d^ Z7d_d` Z8dadb Z9ej	d<d=d>gdcdd Z:ej	dejdegdf dgd5e;<degdf gdhdi Z=djdk Z>dldm Z?dS )nTestPeriodIndexArithmeticc                 C   s   t dddd}t dddd}t||}d}tjt|d ||  W d    n1 sX0    Y  tjt|d ||7 }W d    n1 s0    Y  d S )N1/1/2000r   r@   r   r*   1/6/2000z/unsupported operand type\(s\) for \+: .* and .*rv   )r   r   r   rF   r~   r   )r   r   rngr   r   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   r   r@   r   r   )r   r   rI   rO   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  sBJ || }|j}ttjd| d| d| d| g}t|| d S )Nr   r   r@   r   r   r   )	r   insertrI   r   equalsr   rO   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||}t||}d}tjt|d ||  W d    n1 sd0    Y  d S )	Nr   r   r@   r   r   Hz;Input has different freq=[HD] from PeriodArray\(freq=[DH]\)rv   )r   r   r   rF   r~   r   )r   r   Zbox_with_array2r   r   r   r$   r$   r%    test_parr_sub_pi_mismatched_freq  s    z:TestPeriodIndexArithmetic.test_parr_sub_pi_mismatched_freqnr   rV   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19920406r   )r   r   rm   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 u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   	normalizeFr   )r   rm   r   r   )r   offsetZkwd_namer   kwdsr   r   r   r   r   r#   r"   r$   r$   r%   test_sub_n_gt_1_offsets  s    z1TestPeriodIndexArithmetic.test_sub_n_gt_1_offsetsr   
2016-01-01r\   r   rT   zEurope/Brussels)r*   tzSz
Asia/TokyogQ	@)g       @g      @g      @c                 C   s  t dddd}t||}dg d}t||| tjt|d ||  W d    n1 s`0    Y  tjt|d ||  W d    n1 s0    Y  tjt|d ||  W d    n1 s0    Y  tjt|d ||  W d    n1 s0    Y  d S )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 .*rv   )r   r   r   joinr   rF   r~   r   )r   r   r   r   r   r$   r$   r%   test_parr_add_sub_invalid  s    &&&z3TestPeriodIndexArithmetic.test_parr_add_sub_invalidc                 C   s  t dddd}tg d}|j}d}tjt|d ||  W d    n1 sP0    Y  tjt|d ||  W d    n1 s0    Y  tjt|d ||  W d    n1 s0    Y  d}tjt|d ||  W d    n1 s0    Y  d S )	Nr   Qr\   r   -1 Dayr   r   zCCannot add or subtract timedelta64\[ns\] dtype from period\[Q-DEC\]rv   z9cannot subtract period\[Q-DEC\]-dtype from TimedeltaArray)r   r
   rW   rF   r~   r   )r   r   tditdarrr   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g d}|j}t dddd}|| }t|| || }t|| || }t|| || }t|| t dddd}|| }t|| || }t|| d}tjt|d	 ||  W d    n1 s0    Y  tjt|d	 ||  W d    n1 s0    Y  d S )
Nr   Z90Dr\   r   r   z
12/31/1999z1/2/2000cannot subtract .* from .*rv   )r   r
   rW   r   r   rF   r~   r   )r   r   r   r   r"   r#   r   r$   r$   r%   test_pi_add_sub_td64_array_tick  s,    &z9TestPeriodIndexArithmetic.test_pi_add_sub_td64_array_tickpi_freq)r   Wr   r   tdi_freqc                 C   s  |}|t jtjfv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rNd	}tjt|d
 ||	  W d    n1 s0    Y  tjt|d
 |d |	  W d    n1 sB0    Y  nxd}tjt|d
 ||	  W d    n1 s0    Y  tjt|d
 |d |	  W d    n1 s0    Y  d S )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.rv   z"Cannot add or subtract timedelta64)rI   r   r   r   rO   r
   r   Z	to_periodr   Zto_timestampr   rF   r~   r   r   )r   r   r   r   boxr!   r   Zdtir,   Ztd64objr#   r"   r   r$   r$   r%   test_parr_sub_td64array  s6    

(.(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 d    n1 st0    Y  t|| tt || }W d    n1 s0    Y  t|| t	
tjjdd	tjjdd	g}d
}tjt|dD tt ||  W d    n1 s(0    Y  W d    n1 sH0    Y  tjt|dD tt ||  W d    n1 s0    Y  W d    n1 s0    Y  d S )N2015Q12016Q2r      r   r   Z2015Q2Z2015Q4r   z1Input cannot be converted to Period\(freq=Q-DEC\)rv   )r   r   rI   offsets
QuarterEndr   assert_produces_warningr   r   r   r   HourZMinuterF   r~   r   )	r   r   r,   Zoffsr"   resZres2Z
unanchoredr   r$   r$   r%   test_pi_add_offset_array@  s*    &&"H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 d    n1 s0    Y  t
|| |tj tjjd	d
g}d}tjt|dB tt	 |  W d    n1 s0    Y  W d    n1 s0    Y  tjt|dD tt	 |  W d    n1 sR0    Y  W d    n1 sr0    Y  d S )Nr   r   r   r   r   r   c                    s   g | ]}|  |  qS r$   r$   )r^   r   r   r,   r$   r%   ra   j  r?   zFTestPeriodIndexArithmetic.test_pi_sub_offset_array.<locals>.<listcomp>rV   r   z6Input has different freq=-1M from Period\(freq=Q-DEC\)rv   )r   r   rI   r   r   rN   lenr   r   r   r   MonthEndDayrF   r~   r   )r   r   r"   r   Zanchoredr   r$   r   r%   test_pi_sub_offset_array_  s$     &F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   rU   r   z2000-01-01 10:00r   r   r   r   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   rU   r   z2000-01-01 08:00Nr   r   r$   r$   r%   test_pi_sub_isub_int  s    z.TestPeriodIndexArithmetic.test_pi_sub_isub_intfiver@   r   c                 C   s.   t ddd}|| }||  }t|| d S )NrQ   2   r)   r   )r   r   r   r#   rZ   r$   r$   r%   test_pi_sub_intlike  s    
z-TestPeriodIndexArithmetic.test_pi_sub_intlikec                 C   sx   t dddd}td}|| }tdd t||D }t|| || }tdd t||D }t|| d S )Nr   rU   2DrT   c                 S   s   g | ]\}}|| qS r$   r$   r^   r=   yr$   r$   r%   ra     r?   zQTestPeriodIndexArithmetic.test_pi_add_sub_int_array_freqn_gt1.<locals>.<listcomp>c                 S   s   g | ]\}}|| qS r$   r$   r  r$   r$   r%   ra     r?   )r   r   rK   rI   rO   zipr   r   )r   r,   Zarrr#   r"   r$   r$   r%   #test_pi_add_sub_int_array_freqn_gt1  s    
z=TestPeriodIndexArithmetic.test_pi_add_sub_int_array_freqn_gt1c                 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 )Nr|   2024ry   r   r@   Z20092019r   2016-12rS   z2013-08z2016-07)r   rI   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-01rd   r   z2016-03r  )r   r   r   r   r   r   )r   r   r  rY   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  rd   r   z2016-04re   )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_holderopc                 C   sN   t tdtdg}|ddg}|||}t tdtdg}t|| d S )Nr   r   r(   rA   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   s   t tdtdg}|ddg}|| }t tdtdg}t|| d}tjt|d ||  W d    n1 sx0    Y  d S )Nr   r   r(   rA   Z2014Q1+bad operand type for unary -: 'PeriodArray'rv   )r   r   r   r   rF   r~   r   )r   r  r,   r   r#   r"   r   r$   r$   r%   test_pi_sub_intarray  s    z.TestPeriodIndexArithmetic.test_pi_sub_intarrayc                 C   s   |}t dddd}t||}tg ddd}t||}|| }t|| || }t|| tg ddd}t||}|| }t|| dd	d
g}tjt|d ||  W d    n1 s0    Y  d S )N
2014-05-01r\   r  rT   )
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]\]rv   )	r   r   r   r   r   r   rF   r~   r   )r   
three_daysr   r   r   r"   r#   r   r$   r$   r%   &test_parr_add_timedeltalike_minute_gt1  s(    z@TestPeriodIndexArithmetic.test_parr_add_timedeltalike_minute_gt1freqstr)Z5nsZ5usZ5msZ5sZ5TZ5hZ5dc           
      C   s   |}t dd|d}|d }t||}t || d|d}t||}|| }t|| || }t|| t || d|d}t||}|| }t|| dddg}	tjt|	d ||  W d    n1 s0    Y  d S )	Nr     rT   r   r   r  r  rv   )r   r   r   r   r   rF   r~   r   )
r   r  r  r   r   r   firstr"   r#   r   r$   r$   r%   $test_parr_add_timedeltalike_tick_gt1  s*    z>TestPeriodIndexArithmetic.test_parr_add_timedeltalike_tick_gt1c                 C   sL   |}t dddd}t dddd}|| }t|| ||7 }t|| d S )Nr  
2014-05-15r   r   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"  r   r   r  z
2014-05-12r   r#  r$   r$   r%   $test_pi_sub_isub_timedeltalike_dailyG  s    z>TestPeriodIndexArithmetic.test_pi_sub_isub_timedeltalike_dailyc                 C   s  |}t dddd}t||}dddg}tjt|d ||  W d    n1 sX0    Y  tjt|d ||7 }W d    n1 s0    Y  tjt|d ||  W d    n1 s0    Y  tjt|d ||8 }W d    n1 s0    Y  d S )	Nr  r"  r   r   r   z7Input has different freq(=.+)? from Period.*?\(freq=D\)r   rv   r   r   r   r   rF   r~   r   )r   Z	not_dailyr   r   r   r   r$   r$   r%   3test_parr_add_sub_timedeltalike_freq_mismatch_dailyS  s     	&&&zMTestPeriodIndexArithmetic.test_parr_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   r   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}t||}dddg}tjt|d ||  W d    n1 sX0    Y  tjt|d ||7 }W d    n1 s0    Y  d S )	Nr(  r)  r   r   r   z7Input has different freq(=.+)? from Period.*?\(freq=H\)r   rv   r&  )r   Z
not_hourlyr   r   r   r   r$   r$   r%   2test_parr_add_timedeltalike_mismatched_freq_hourlyw  s    
&zLTestPeriodIndexArithmetic.test_parr_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   r   z2014-01-01 08:00z2014-01-05 08:00r   r*  r$   r$   r%   %test_pi_sub_isub_timedeltalike_hourly  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 )Nr|   r  ry   r   r@   r	  Z2029)r   rI   r   r  r   r   r  r$   r$   r%   "test_add_iadd_timedeltalike_annual  s    z<TestPeriodIndexArithmetic.test_add_iadd_timedeltalike_annualc                 C   s   |}t dddd}d}tjt|d ||  W d    n1 sB0    Y  tjt|d ||7 }W d    n1 sx0    Y  tjt|d ||  W d    n1 s0    Y  tjt|d ||8 }W d    n1 s0    Y  d S )Nr|   r  ry   r   z;Input has different freq(=.+)? from Period.*?\(freq=A-DEC\)rv   r   rF   r~   r   r   Zmismatched_freqr   r   r   r$   r$   r%   2test_pi_add_sub_timedeltalike_freq_mismatch_annual  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
  rS   r   z2014-06z2017-05r@   )r   rI   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 d    n1 sB0    Y  tjt|d ||7 }W d    n1 sx0    Y  tjt|d ||  W d    n1 s0    Y  tjt|d ||8 }W d    n1 s0    Y  d S )Nr   r
  rS   r   z7Input has different freq(=.+)? from Period.*?\(freq=M\)rv   r/  r0  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 d    n1 s0    Y  d S )
N
1994-04-01r1   19DrT   r   r   r  r   rv   )
r   r   timedelta64r   r   r   r   rF   r~   r   )	r   r   r  r,   r   r"   objr#   r   r$   r$   r%   test_parr_add_sub_td64_nat  s    
z4TestPeriodIndexArithmetic.test_parr_add_sub_td64_natr   r1   zm8[ns]c                 C   sf  t dddd}tdgd dd}t||}t||}|| }t|| || }t|| || }t|| d}tjt|d ||  W d    n1 s0    Y  | }t	
d	d
|d	< t|d	 gdgd  dd}t||}|| }t|| || }t|| || }t|| tjt|d ||  W d    n1 sX0    Y  d S )Nr4  r1   r5  rT   r   r   r   rv   r   ns   )r   r   r   r   r   rF   r~   r   copyr   r6  )r   r   r   r,   r"   r7  r#   r   r$   r$   r%   !test_parr_add_sub_tdt64_nat_array  s2    &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,   r5   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 d    n1 sZ0    Y  t
g ddd	j}t|| tt	 || }W d    n1 s0    Y  t
d
gd dd	j}t|| d S )Nr=  r\   r   rT   r   r/   rV   )z
2001-01-01z
2001-01-03z
2001-01-05r   z
2000-12-30)r   r   r   r	   rI   r   r   r   r   r   r   r   )r   r,   r5   r   r#   r"   r$   r$   r%   test_parr_add_sub_object_array  s    &&z8TestPeriodIndexArithmetic.test_parr_add_sub_object_array)@rC   rD   rE   r   r   r   r   rF   rG   rH   r   rI   r   r  r   r   ZWeekr   r   Zto_pydatetimeZto_datetime64rJ   _datar   r   r   r   r   r   rO   r   r   r   r   int64r  r  r  r  r  operatoraddr   Zraddr  r  r  r!  r$  r%  r'  r+  r,  r-  r.  r1  r2  r3  r8  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.J t tdddtd	ddgdd}t||}|tju rv|jdk svJ t||}|| }t	|| || }t	|| d S )
N
2015-01-01r   r   
2015-01-02xxxr   	Period[D]
2015-01-04
2015-01-05)
r   r   r   r   r   rI   r   Zdtypesallr   )r   r  r   rb   r"   r7  r#   r$   r$   r%   "test_parr_add_timedeltalike_scalar#  s"    
z=TestPeriodSeriesArithmetic.test_parr_add_timedeltalike_scalarc                 C   s   t tdddtdddgdd}|jdks.J 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sJ t d| d| gdtd}t|| | t|| d|  d S )NrE  r   r   rF  rG  r   rH  z
2015-01-10r1   r:  )r   r   rA   rJ  rI  r(   rV   )r   r   r   r   r;   r   r   )r   rb   rY   r   r"   s2r$   r$   r%   test_ops_series_period<  s$    z1TestPeriodSeriesArithmetic.test_ops_series_periodN)rC   rD   rE   rL  rN  r$   r$   r$   r%   rD  "  s   rD  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d#S )$TestPeriodIndexSeriesMethodsr   c                 C   sJ   t |}||}t|| t|}||}t||jd}t|| d S r   )r   r   r   r   r   r   )r   rW   r   r"   r    r#   rb   rZ   r$   r$   r%   r   Y  s    z#TestPeriodIndexSeriesMethods._checkc                 C   s   t g dddd}t g d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 )Nrf   rS   r    r   )ri   rj   ro   2011-06c                 S   s   | d S NrV   r$   r<   r$   r$   r%   r>   m  r?   z:TestPeriodIndexSeriesMethods.test_pi_ops.<locals>.<lambda>c                 S   s   d|  S rQ  r$   r<   r$   r$   r%   r>   n  r?   rV   c                 S   s   | d S rQ  r$   r<   r$   r$   r%   r>   p  r?   rg   r   r   r   r\   r   rA   r   )r   r   r   r   rI   rO   r   r   )r   r    r"   r#   r   rZ   r$   r$   r%   test_pi_opsd  s     

&&z(TestPeriodIndexSeriesMethods.test_pi_opsngstrg      ?r   c                 C   s   | | S r9   r$   r7  rT  r$   r$   r%   r>     r?   z%TestPeriodIndexSeriesMethods.<lambda>c                 C   s   ||  S r9   r$   rV  r$   r$   r%   r>     r?   c                 C   s   | | S r9   r$   rV  r$   r$   r%   r>     r?   c                 C   s   ||  S r9   r$   rV  r$   r$   r%   r>     r?   c                 C   s   t | |S r9   r   rC  rV  r$   r$   r%   r>     r?   c                 C   s   t || S r9   rW  rV  r$   r$   r%   r>     r?   c                 C   s   t | |S r9   r   subtractrV  r$   r$   r%   r>     r?   c                 C   s   t || S r9   rX  rV  r$   r$   r%   r>     r?   c                 C   sh   t g dddd}t||}dg d}tjt|d ||| W d    n1 sZ0    Y  d S )Nrf   rS   r    r   r   )zunsupported operand type\(s\)zcan only concatenatezmust be strzobject to str implicitlyrv   )r   r   r   r   rF   r~   r   )r   rT  r   r   r    r7  r   r$   r$   r%   test_parr_ops_errors{  s    
	z1TestPeriodIndexSeriesMethods.test_parr_ops_errorsc                 C   s  t g dddd}t g dddd}| |dd | | |dd | | |d	d | | |d
 dd | | |d
 dd | t g dddd}t g dddd}| |dd | | |dd | | |dd | | |d dd | | |d dd | d S )Nrg   rh   r   rj   rS   r    r   )ri   rj   r   rP  c                 S   s   | d S rQ  r$   r<   r$   r$   r%   r>     r?   z>TestPeriodIndexSeriesMethods.test_pi_ops_nat.<locals>.<lambda>c                 S   s   d|  S rQ  r$   r<   r$   r$   r%   r>     r?   c                 S   s   t | dS rQ  rW  r<   r$   r$   r%   r>     r?   rV   c                 S   s   | d S rQ  r$   r<   r$   r$   r%   r>     r?   c                 S   s   t | dS rQ  rX  r<   r$   r$   r%   r>     r?   rd   )z2011-072011-08r   z2011-10c                 S   s   | d S Nr\   r$   r<   r$   r$   r%   r>     r?   c                 S   s   d|  S r]  r$   r<   r$   r$   r%   r>     r?   c                 S   s   t | dS r]  rW  r<   r$   r$   r%   r>     r?   r\   c                 S   s   | d S r]  r$   r<   r$   r$   r%   r>     r?   c                 S   s   t | dS r]  rX  r<   r$   r$   r%   r>     r?   r   r   )r   r    r"   r$   r$   r%   test_pi_ops_nat  s,    



z,TestPeriodIndexSeriesMethods.test_pi_ops_natc                 C   s   t g dddd}dd }t g dddd}| ||| dd }t g d	ddd}| ||| d
d }t g dddd}| ||| dd }t g dddd}| ||| d S )Nr[  rS   r    r   c                 S   s   | t g d S Nr   r   r   r<   r$   r$   r%   r>     r?   zDTestPeriodIndexSeriesMethods.test_pi_ops_array_int.<locals>.<lambda>)rh   rj   r   r\  c                 S   s   t | t g dS )N)r(   rA   r   rV   )r   rC  r   r<   r$   r$   r%   r>     r?   )ro   rg   r   rP  c                 S   s   | t g d S r`  ra  r<   r$   r$   r%   r>     r?   )2010-12rb  r   rb  c                 S   s   t | t g dS )N)r\   rV   r\   r   )r   rY  r   r<   r$   r$   r%   r>     r?   )z2010-10rb  r   rP  r^  r   r$   r$   r%   test_pi_ops_array_int  s.    




z2TestPeriodIndexSeriesMethods.test_pi_ops_array_intc                 C   s   t g dddd}dd }t g dddd}| ||| dd }t g d	ddd}| ||| d
d }t g dddd}| ||| d S )Nr   z
2011-02-01z
2011-03-01z
2011-04-01r   r    r   c                 S   s   | t j  S r9   rI   r   r   r<   r$   r$   r%   r>     r?   zATestPeriodIndexSeriesMethods.test_pi_ops_offset.<locals>.<lambda>)z
2011-01-02z
2011-02-02z
2011-03-02z
2011-04-02c                 S   s   | t jd S rQ  re  r<   r$   r$   r%   r>     r?   )r   z
2011-02-03z
2011-03-03z
2011-04-03c                 S   s   | t jd S rQ  re  r<   r$   r$   r%   r>     r?   )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 g dddd}t|}d}||fD ]}tjt|d  |tjd  W d    n1 s^0    Y  tjt|d  tjd|  W d    n1 s0    Y  tjt|d  |tjd  W d    q&1 s0    Y  q&d S )Nrd  r   r    r   zmCannot add/subtract timedelta-like from PeriodArray that is not an integer multiple of the PeriodArray's freqrv   rV   )r   r   rF   r~   r   rI   r   r   )r   r    rb   r   r7  r$   r$   r%   test_pi_offset_errors  s    ..z2TestPeriodIndexSeriesMethods.test_pi_offset_errorsc                 C   sX  t g d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&J tddd| }t|| |j|jksTJ d S )Nrf   rS   r    r   2012-01r   ir   r      rU   r1   r   )r   r   r   rI   rO   r   r   r   rY  r
   nanr   r    r#   r   rZ   r$   r$   r%   test_pi_sub_period	  s*    
&&z/TestPeriodIndexSeriesMethods.test_pi_sub_periodc                 C   sN   t g dddd}ttjgd dd}ttj| | t|tj | d S )Nr[  rS   r    r   r(   r   )r   r
   rI   r   r   r   )r   r    rZ   r$   r$   r%   test_pi_sub_pdnat'  s    
z.TestPeriodIndexSeriesMethods.test_pi_sub_pdnatc                 C   s   t g d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 )Nr   rS   r    r   rh  r   ri  rj  rk  r   r   rU   r1   r   )r   r   r   rI   rO   r   r   r   r
   r   rm  rn  r$   r$   r%   test_pi_sub_period_nat0  s    
$$z3TestPeriodIndexSeriesMethods.test_pi_sub_period_natN)rC   rD   rE   r   r   rS  rF   rG   rH   rZ  r_  rc  rf  rg  ro  rp  rq  r$   r$   r$   r%   rO  V  s0   	rO  )%rB  numpyr   rF   Zpandas._libs.tslibsr   r   r   r   Zpandas.errorsr   ZpandasrI   r   r   r	   r
   r   Zpandas._testingZ_testingr   Zpandas.corer   Zpandas.core.arraysr   Zpandas.tests.arithmetic.commonr   r   r   r   rP   r   r   r   r   rD  rO  r$   r$   r$   r%   <module>   s2   
  l(f+     Z4