a
    PfA                     @   sd   d dl mZ d dlZd dlZd dlmZ d dlmZm	Z	m
Z
mZmZ G dd dZG dd dZdS )	    )	timedeltaN)IncompatibleFrequency)NaTPeriod	Timedelta	Timestampoffsetsc                
   @   s   e Zd Zd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ddgej	
dg dej	
dejdfejdfejdfejdfgdd Zdd Zdd Zej	
dg ddd  Zej	
d!g d"d#d$ Zd%d& Zd'd( ZdS ))TestPeriodArithmeticc                 C   s   t jd}dddg}tjt|d |d  W d    n1 sF0    Y  d}tjt|d |td  W d    n1 s0    Y  tjt|d |t	d  W d    n1 s0    Y  d S )Nns|z)Python int too large to convert to C longzint too big to convertmatch   zvalue too large)
r   maxZ	to_periodjoinpytestraisesOverflowErrorr   r   ZNano)selfpermsg r   c/var/www/ai-form-bot/venv/lib/python3.9/site-packages/pandas/tests/scalar/period/test_arithmetic.pytest_add_overflow_raises   s    &*z-TestPeriodArithmetic.test_add_overflow_raisesc                 C   sD   t ddddd}t ddddd}|d |ks0J d| |ks@J d S )ND  r   freqyearmonthday   r   )r   per1per2r   r   r   test_period_add_integer&   s    z,TestPeriodArithmetic.test_period_add_integerc                 C   s   t ddddd}t ddddd}dg d}tjt|d |d	  W d    n1 sZ0    Y  tjt|d d	|  W d    n1 s0    Y  tjt|d ||  W d    n1 s0    Y  d S )
Nr   r   r   r   r!   r   )zunsupported operand type\(s\)zcan only concatenate strzmust be str, not Periodr   str)r   r   r   r   	TypeError)r   r#   r$   r   r   r   r   test_period_add_invalid,   s    &&z,TestPeriodArithmetic.test_period_add_invalidc                 C   sz   t dddt ddd }}|| }|d|j ks4J d}tjt|d  |t dd	d  W d    n1 sl0    Y  d S )
N2011Yr   Z2007   z4Input has different freq=M from Period\(freq=Y-DEC\)r   z2007-01Mr   r   r   r   r   )r   leftrightresultr   r   r   r   test_period_sub_period_annual?   s    z2TestPeriodArithmetic.test_period_sub_period_annualc                 C   s   t ddd}t ddd}|j}|| d| ks2J || d| ksFJ d}tjt|d  |t d	d
d  W d    n1 s~0    Y  d S )N
2011-01-01r   r+   z
2011-01-15i   z0Input has different freq=M from Period\(freq=D\)r   z2011-02r-   r.   )r   r#   r$   offr   r   r   r   test_period_sub_periodH   s    z+TestPeriodArithmetic.test_period_sub_periodn)r   r!      r,   c                 C   s\   t d||d}t d||d}t t||jjdt t||jjd }|| |ksXJ d S )N19910905r+   19920406)r   r&   r   base)r   Ztick_classesr7   p1p2expectedr   r   r   test_sub_n_gt_1_ticksT   s    z*TestPeriodArithmetic.test_sub_n_gt_1_ticks	normalizeTFzoffset, kwd_namer   ZstartingMonthNweekdayc                 C   s   |d ur|dini }d}d}t ||||fi |d}t ||||fi |d}	t ||	jjdt ||jjd }
|	| |
ksJ d S )Nr8   r9   r:   r+   )r   r   r;   )r   offsetZkwd_namer7   r@   kwdsZp1_dZp2_dr<   r=   r>   r   r   r   test_sub_n_gt_1_offsets`   s     z,TestPeriodArithmetic.test_sub_n_gt_1_offsetsc              
   C   s  dD ]}t d|d}t d|d}|td |ks6J td| |ksLJ tdtdt tddtdfD ]t}d	}t	j
t|d
 ||  W d    n1 s0    Y  t	j
t|d
 ||  W d    qv1 s0    Y  qvqdD ]8}t d|d}t d|d}|td |ks(J td| |ks@J t d|d}|td |ksdJ td| |ks|J dddg}tdtdt tddtdfD ]v}t	j
t|d
 ||  W d    n1 s0    Y  t	j
t|d
 ||  W d    n1 s0    Y  qqdD ]0}t d|d}t d|d}|td |kshJ td| |ksJ t d|d}|td |ksJ td| |ksJ t d|d}|tdd |ksJ tdd| |ksJ t d|d}|tdd |ks"J tdd| |ks<J t d|d}|td |ks^J td| |kstJ t d|d}|tdd |ksJ tdd| |ksJ dddg}tdtdt td d!td"dfD ]v}t	j
t|d
 ||  W d    n1 s0    Y  t	j
t|d
 ||  W d    n1 sT0    Y  qq2d#D ]>}t d$|d}t d%|d}|td |ksJ td| |ksJ t d&|d}|td' |ksJ td'| |ksJ d(}t d&|d}|td'd! |ksJ td'd!| |ks8J t d)|d}|td*d |ks^J td*d| |ksxJ t d+|d}|td,d- |ksJ td,d-| |ksJ t d.|d}|td d/d0 |ksJ td d/d0| |ksJ dddg}tdtdt td1dtd"d2d3fD ]v}t	j
t|d
 ||  W d    n1 sb0    Y  t	j
t|d
 ||  W d    n1 s0    Y  q0qjd S )4Nr*   Z2YZ3Yr)   r+   Z2013r!   r   m  r   z<Input has different freq|Input cannot be converted to Periodr   r-   Z2MZ3M2011-03z2011-05z2012-03   r   Input has different freq#Input cannot be converted to Periodr   Z2DZ3D
2011-04-01z
2011-04-06   
2011-04-02   
2011-04-03Q s
2011-03-300   hoursr,   h   rY   Z2hZ3h2011-04-01 09:00z2011-04-03 09:00z2011-04-01 12:00r8   zcannot use operands with typesz2011-04-01 10:00  z2011-04-01 11:00x   minutesz2011-04-05 12:00   daysr`        rX   r`   )r   r   YearEnd	YearBegin
MonthBeginMinutenptimedelta64r   r   r   r   MonthEndr   DayHour)r   r   r   expr5   r   r   r   r   test_period_add_offsetw   s    
&*

(.

(0


(z+TestPeriodArithmetic.test_period_add_offsetc              
   C   s  d ddg}dD ]}td|d}|td td|dks@J tdtd	t td
dt	d
fD ]:}t
jt|d ||  W d    qj1 s0    Y  qjqdD ]}td|d}|td td|dksJ |td td|dksJ tdtd	t td
dt	d
fD ]>}t
jt|d ||  W d    n1 sT0    Y  q"qdD ]@}td|d}|td td|dksJ |td td|dksJ |tdd td|dksJ |tdd td|dksJ |t	d td|dksJ |t	dd td|dks<J tdtd	t tdd t	d!dfD ]>}t
jt|d ||  W d    n1 s0    Y  qhqhd"D ]F}td#|d}|td td$|dksJ |td% td&|dksJ |td%d  td&|dks$J |td'd td(|dksFJ |t	d)d* td+|dksfJ |t	dd,d- td.|dksJ tdtd	t td/dt	d!d0d1fD ]>}t
jt|d ||  W d    n1 s0    Y  qqd S )2Nr   rJ   rK   rE   r)   r+   r!   Z2009r   rF   r   r   rG   rH   2011-01rI   z2010-03rL   rM   rN   z
2011-03-27rP   z
2011-03-31rT   rR   rS   rU   rQ   rV   rW   r,   rY   rZ   r[   r\   z2011-03-30 09:00r8   z2011-04-01 06:00r]   z2011-04-01 08:00r^   r_   z2011-04-01 07:00ra   rb   z2011-03-28 06:00rd   re   rf   )r   r   r   rg   rh   ri   rj   rk   rl   r   r   r   r   rm   rn   ro   )r   r   r   r   r5   r   r   r   test_period_sub_offset  s    
*
.
  " 
0
  " 

z+TestPeriodArithmetic.test_period_sub_offsetr   rG   c                 C   sP   t d|d}t| tu sJ |t tu s,J t| tu s<J |t tu sLJ d S )Nrr   r+   )r   r   )r   r   r   r   r   r   test_period_addsub_natZ  s
    z+TestPeriodArithmetic.test_period_addsub_natunit)r
   usmsrS   mc                 C   s   t dd}td|}|| tu s&J || tu s6J || tu sFJ tjtdd ||  W d    n1 sr0    Y  d S )Nz
2022-06-01r   r   zunsupported operandr   )r   rk   rl   r   r   r   r'   )r   ru   r   Znatr   r   r   test_period_add_sub_td64_natg  s    
z1TestPeriodArithmetic.test_period_add_sub_td64_natc                 C   s   t ddd}|t  }t ddd}||ks0J |td }t ddd}||ksVJ d}tjt|d |td  W d    n1 s0    Y  tjt|d |td  W d    n1 s0    Y  d S )	NrM   r   r+   rO   r!   rT   z-Input cannot be converted to Period\(freq=D\)r   )r   r   rn   r   r   r   ro   )r   r   r1   rp   r   r   r   r   test_period_ops_offsett  s    ,z+TestPeriodArithmetic.test_period_ops_offsetc                 C   s   t d}tddd}d}tjt|d ||  W d    n1 sD0    Y  d}tjt|d ||  W d    n1 s~0    Y  d S )NZ2017r-   r+   z>unsupported operand type\(s\) for \+: 'Timestamp' and 'Period'r   z>unsupported operand type\(s\) for \+: 'Period' and 'Timestamp')r   r   r   r   r'   )r   tsr   r   r   r   r    test_period_add_timestamp_raises  s    &z5TestPeriodArithmetic.test_period_add_timestamp_raises)__name__
__module____qualname__r   r%   r(   r2   r6   r   markparametrizer?   r   rg   Z
QuarterEndrm   ZWeekrD   rq   rs   rt   ry   rz   r|   r   r   r   r   r	      s6   	
	 S

r	   c                	   @   sh   e Zd Zdd Zdd Zdd Zdd Zd	d
 Zej	
deddfeedddffdd ZdS )TestPeriodComparisonsc                 C   s`   t dd}t dd}||kr J ||ks,J ||k s8J ||ksDJ ||krPJ ||kr\J d S )N2000-01r-   z2000-02r"   )r   janfebr   r   r    test_period_comparison_same_freq  s    

z6TestPeriodComparisons.test_period_comparison_same_freqc                 C   sT   t dd}t dd}||ks J ||ks,J ||ks8J ||k rDJ ||krPJ d S Nr   r-   r"   )r   r/   r0   r   r   r   3test_period_comparison_same_period_different_object  s    

zITestPeriodComparisons.test_period_comparison_same_period_different_objectc                 C   s  t dd}t dd}||kr J ||ks,J d}tjt|d ||k  W d    n1 s\0    Y  tjt|d ||k W d    n1 s0    Y  tjt|d ||k W d    n1 s0    Y  tjt|d ||k W d    n1 s0    Y  d S )Nr   r-   z
2012-01-01r   z0Input has different freq=D from Period\(freq=M\)r   )r   r   r   r   )r   r   r    r   r   r   r   &test_period_comparison_mismatched_freq  s    

&&&z<TestPeriodComparisons.test_period_comparison_mismatched_freqc              	   C   s.  t dd}|dkrJ |dks"J d}d| d| }|dfd|ffD ]\}}tjt|d ||k W d    n1 sz0    Y  tjt|d ||k W d    n1 s0    Y  tjt|d ||k  W d    n1 s0    Y  tjt|d ||k W d    qF1 s0    Y  qFd S )Nr   r-   r   z'(Period|int)'z#not supported between instances of z and r   )r   r   r   r'   )r   r   Z
int_or_perr   r/   r0   r   r   r   #test_period_comparison_invalid_type  s    
&&&z9TestPeriodComparisons.test_period_comparison_invalid_typec                 C   s   t ddd}td}t|f|tft|f|tffD ]P\}}||k rDJ ||krPJ ||kr\J ||kshJ ||krtJ ||kr0J q0d S )Nr3   r   r+   )r   r   r   )r   r   r{   r/   r0   r   r   r   test_period_comparison_nat  s    z0TestPeriodComparisons.test_period_comparison_natzzerodim_arr, expectedr   Fr   r-   Tc                 C   s.   t dd}||k|u sJ ||k|u s*J d S r   r"   )r   Zzerodim_arrr>   r   r   r   r   (test_period_comparison_numpy_zerodim_arr  s    
z>TestPeriodComparisons.test_period_comparison_numpy_zerodim_arrN)r}   r~   r   r   r   r   r   r   r   r   r   rk   arrayr   r   r   r   r   r   r     s    r   )datetimer   numpyrk   r   Zpandas._libs.tslibs.periodr   Zpandasr   r   r   r   r   r	   r   r   r   r   r   <module>   s   	   