o
    _~#gA                     @   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 s#w   Y  d}tjt|d |td  W d    n1 sBw   Y  tjt|d |t	d  W d    d S 1 saw   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   max	to_periodjoinpytestraisesOverflowErrorr   r   Nano)selfpermsg r   /var/www/static.ux5.de/https/Moving-Object-Detection-with-OpenCV/env/lib/python3.10/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sJ 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 s-w   Y  tjt|d d	|  W d    n1 sHw   Y  tjt|d ||  W d    d S 1 sdw   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   s|   t dddt ddd}}|| }|d|j ksJ d}tjt|d |t dd	d  W d    d S 1 s7w   Y  d S )
N2011Yr   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sJ || d| ks#J d}tjt|d |t d	d
d  W d    d S 1 s@w   Y  d S )N
2011-01-01r   r-   z
2011-01-15i   z0Input has different freq=M from Period\(freq=D\)r   z2011-02r0   r1   )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s,J d S )N19910905r-   19920406)r   r(   r   base)r   tick_classesr:   p1p2expectedr   r   r   test_sub_n_gt_1_ticksT   s   z*TestPeriodArithmetic.test_sub_n_gt_1_ticks	normalizeTFzoffset, kwd_namer!   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s@J d S )Nr;   r<   r=   r-   )r   r   r>   )r   offsetkwd_namer:   rD   kwdsp1_dp2_dr@   rA   rB   r   r   r   test_sub_n_gt_1_offsets`   s    z,TestPeriodArithmetic.test_sub_n_gt_1_offsetsc              
   C   s  dD ]t}t d|d}t d|d}|td |ksJ td| |ks&J tdtdt tddtdfD ]:}d	}t	j
t|d
 ||  W d    n1 sUw   Y  t	j
t|d
 ||  W d    n1 spw   Y  q;qd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ddg}tdtdt tddtdfD ]9}t	j
t|d
 ||  W d    n1 sw   Y  t	j
t|d
 ||  W d    n	1 s	w   Y  qqydD ]}t d|d}t d|d}|td |ks-J td| |ks9J t d|d}|td |ksKJ td| |ksWJ t d|d}|tdd |ksjJ tdd| |kswJ t d|d}|tdd |ksJ td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 dddg}tdtdt td d!td"dfD ];}t	j
t|d
 ||  W d    n	1 sw   Y  t	j
t|d
 ||  W d    n	1 s#w   Y  qqd#D ]}t d$|d}t d%|d}|td |ksIJ td| |ksUJ t d&|d}|td' |ksgJ td'| |kssJ d(}t d&|d}|td'd! |ksJ td'd!| |ksJ t d)|d}|td*d |ksJ td*d| |ksJ 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 ];}t	j
t|d
 ||  W d    n	1 s*w   Y  t	j
t|d
 ||  W d    n	1 sFw   Y  qq.d S )4Nr,   2Y3Yr+   r-   2013r#   r   m  r   z<Input has different freq|Input cannot be converted to Periodr   r0   2M3M2011-03z2011-05z2012-03   r   Input has different freq#Input cannot be converted to Periodr   2D3D
2011-04-01z
2011-04-06   
2011-04-02   
2011-04-03Q s
2011-03-300   hoursr/   h   rh   2h3h2011-04-01 09:00z2011-04-03 09:00z2011-04-01 12:00r;   zcannot use operands with typesz2011-04-01 10:00  z2011-04-01 11:00x   minutesz2011-04-05 12:00   daysrq        rg   rq   )r   r   YearEnd	YearBegin
MonthBeginMinutenptimedelta64r   r   r   r   MonthEndr   DayHour)r   r   r   expr8   r   r   r   r   test_period_add_offsetw   s   














z+TestPeriodArithmetic.test_period_add_offsetc              
   C   s  d ddg}dD ]J}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    n1 sMw   Y  q5q	dD ]Y}td|d}|td td|dksmJ |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    n1 sw   Y  qqVd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 sFw   Y  q-qd"D ]}td#|d}|td td$|dkshJ |td% td&|dksxJ |td%d  td&|dksJ |td'd td(|dksJ |t	d)d* td+|dksJ |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 sw   Y  qҐqPd S )2Nr   rW   rX   rM   r+   r-   r#   2009r   rQ   r   r   rR   rU   2011-01rV   z2010-03rY   r\   r]   z
2011-03-27r_   z
2011-03-31rc   ra   rb   rd   r`   re   rf   r/   rh   ri   rj   rm   z2011-03-30 09:00r;   z2011-04-01 06:00rn   z2011-04-01 08:00ro   rp   z2011-04-01 07:00rr   rs   z2011-03-28 06:00ru   rv   rw   )r   r   r   rx   ry   rz   r{   r|   r}   r   r   r   r   r~   r   r   )r   r   r   r   r8   r   r   r   test_period_sub_offset  s   




  


  " 


z+TestPeriodArithmetic.test_period_sub_offsetr   rR   c                 C   sP   t d|d}t| tu sJ |t tu sJ t| tu sJ |t tu s&J d S )Nr   r-   )r   r   )r   r   r   r   r   r   test_period_addsub_natZ  s
   z+TestPeriodArithmetic.test_period_addsub_natunit)r
   usmsrb   mc                 C   s   t dd}td|}|| tu sJ || tu sJ || tu s#J tjtdd ||  W d    d S 1 s:w   Y  d S )Nz
2022-06-01r   r   zunsupported operandr   )r   r|   r}   r   r   r   r)   )r   r   r   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sJ |td }t ddd}||ks+J d}tjt|d |td  W d    n1 sFw   Y  tjt|d |td  W d    d S 1 sew   Y  d S )	Nr\   r   r-   r^   r#   rc   z-Input cannot be converted to Period\(freq=D\)r   )r   r   r   r   r   r   r   )r   r   r4   r   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 s"w   Y  d}tjt|d ||  W d    d S 1 s@w   Y  d S )N2017r0   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*   r5   r9   r   markparametrizerC   r   rx   
QuarterEndr~   WeekrL   r   r   r   r   r   r   r   r   r   r   r	      s8    	
	 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 sJ ||ks"J ||kr(J ||kr.J d S )N2000-01r0   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sJ ||k r"J ||kr(J d S Nr   r0   r$   )r   r2   r3   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.w   Y  tjt|d ||k W d    n1 sIw   Y  tjt|d ||k W d    n1 sdw   Y  tjt|d ||k W d    d S 1 sw   Y  d S )Nr   r0   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 ]p\}}tjt|d ||k W d    n1 s=w   Y  tjt|d ||k W d    n1 sXw   Y  tjt|d ||k  W d    n1 ssw   Y  tjt|d ||k W d    n1 sw   Y  q#d S )Nr   r0   r   z'(Period|int)'z#not supported between instances of z and r   )r   r   r   r)   )r   r   
int_or_perr   r2   r3   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 ](\}}||k r"J ||kr(J ||kr.J ||ks4J ||kr:J ||kr@J qd S )Nr6   r   r-   )r   r   r   )r   r   r   r2   r3   r   r   r   test_period_comparison_nat  s   z0TestPeriodComparisons.test_period_comparison_natzzerodim_arr, expectedr   Fr   r0   Tc                 C   s.   t dd}||k|u sJ ||k|u sJ d S r   r$   )r   zerodim_arrrB   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   r|   arrayr   r   r   r   r   r   r     s     r   )datetimer   numpyr|   r   pandas._libs.tslibs.periodr   pandasr   r   r   r   r   r	   r   r   r   r   r   <module>   s    	   