U
    `»{jèÕ  ã                   @   s,  d dl mZm Z mZ d dlZd dlZd dlZd dlmZm	Z
 d dlmZmZ d dlmZ d dlmZ d dlmZmZ d dlmZmZ d dlZd d	lmZmZmZmZ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'dd„ Z(dd„ Z)dd„ Z*dd„ Z+dS )é    )ÚdateÚdatetimeÚ	timedeltaN)ÚiNaTÚperiod)ÚDAYSÚMONTHS)ÚOutOfBoundsDatetime)ÚDateParseError)ÚINVALID_FREQ_ERR_MSGÚIncompatibleFrequency)Údateutil_gettzÚmaybe_get_tz)ÚNaTÚPeriodÚ	TimedeltaÚ	TimestampÚoffsetsc                	   @   sZ  e Zd Z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d„ Zdd„ Zdd„ Zej de¡dd„ ƒZej de¡dd„ ƒZej de¡ej deddƒ¡d d!„ ƒƒZd"d#„ Zej d$d%d&d'd(g¡d)d*„ ƒZd+d,„ Zd-d.„ Zd/d0„ Zej dd1d2d3g¡ej d4d5d6d7d8g¡ej d9d:d;d<d=g¡d>d?„ ƒƒƒZej d4ed@ƒ¡dAdB„ ƒZdCS )DÚTestPeriodConstructionc              	   C   sZ   t  d¡}d}tjt|d�� t|ƒ W 5 Q R X tjt|d�� t|dd� W 5 Q R X d S )Nzm8[ns]ú2Value must be Period, string, integer, or datetime©ÚmatchÚD©Úfreq)r   Zto_numpyÚpytestÚraisesÚ
ValueErrorr   )ÚselfÚtdÚmsg© r!   úe/var/www/html/bwave/python/venv/lib/python3.8/site-packages/pandas/tests/scalar/period/test_period.pyÚtest_from_td64nat_raises*   s    
z/TestPeriodConstruction.test_from_td64nat_raisesc              	   C   sD  t ddd�}t dƒ}||ks t‚t ddd�}t dƒ}t ddd�}||ksLt‚||ksXt‚t ddd�}t ddd�}||ks|t‚||ksˆt‚t  d	¡}t t ¡ d	d�}t  d
¡}||ks¸t‚||ksÄt‚t ddd�}t ddd�}||ksèt‚t ddddd�}t ddd�}||k�st‚t ddddd�}||k�s0t‚t dƒ}t tdddddddƒdd�}||k�sbt‚t ddd�}||k�s|t‚t dƒ}t tdddddddƒdd�}||k�s®t‚t ddd�}||k�sÈt‚d}tjt|d�� t d d!� W 5 Q R X d"}tjt|d�� t d#d$d� W 5 Q R X tjtd%d�� t dd&d� W 5 Q R X d S )'Nú1/1/2005ÚMr   zJan 2005Ú2005ÚAÚaÚmÚQÚqÚ1982ÚminZMINéÕ  é   é   r   ©ÚyearÚmonthÚdayr   z3/1/2005Údú2007-01-01 09:00:00.001é×  é	   r   éè  ÚLú2007-01-01 09:00:00.00101éò  ÚUz"Must supply freq for ordinal valuer   éý )ÚordinalzInvalid frequency: Xz2007-1-1ÚXzpass as a string instead)ÚMinr0   )r   ÚAssertionErrorÚnowr   r   r   r   Ú	TypeError)r   Úi1Úi2Úi3Úi4Úi5Úexpectedr    r!   r!   r"   Útest_construction5   sV    

z(TestPeriodConstruction.test_constructionc                 C   sT   t dƒ}t|dd�}| ¡ }||ks(t‚|j}t|dd�}| ¡ }|j|ksPt‚d S )Nz2022-04-20 09:23:24.123456789Únsr   )r   r   Úto_timestamprB   Zasm8)r   ÚtsÚperÚrtZdt64Úper2Zrt2r!   r!   r"   Ú&test_construction_from_timestamp_nanost   s    z=TestPeriodConstruction.test_construction_from_timestamp_nanosc                 C   sª   t ddd�}t ddd�}|| d¡ks*t‚t ddd�}|| d¡ksHt‚t ddd�}|| d¡ksft‚t ddd�}||ks~t‚t dd	d
dd�}t ddd�}||ks¦t‚d S )Nú3/10/12ÚBr   r   z3/11/12z3/12/12ÚbéÜ  r/   é
   r1   )r   ÚasfreqrB   )r   rE   rF   rG   r!   r!   r"   Útest_construction_bdayƒ   s    z-TestPeriodConstruction.test_construction_bdayc                 C   s,  t dddd�}t ddd�}||ks&t‚t dddd�}t ddd�}||ksLt‚t d	ƒ}t dddd�}t d
ƒ}||ksvt‚||ks‚t‚t dƒ}||ks–t‚t dƒ}||ksªt‚t dƒ}||ks¾t‚t dƒ}||ksÒt‚t dƒ}||ksæt‚t dƒ}||ksút‚t dƒ}|jdk�st‚t dƒ}||k�s(t‚d S )Nr.   r0   r*   ©r2   Úquarterr   r$   r   r/   z9/1/2005Z2005Q1Z2005q1Z05Q1Z05q1Z1Q2005Z1q2005Z1Q05Z1q05Z4Q1984iÀ  Z4q1984)r   rB   r2   )r   rE   rF   rG   Úlowerr!   r!   r"   Útest_construction_quarter•   s6    z0TestPeriodConstruction.test_construction_quarterc                 C   s&  t ddd�}t ddd�}||ks$t‚t ddd�}||ks<t‚t ddd�}||ksTt‚t ddd�}|jdksnt‚t tdd	d	ƒdd�}t ddd�}||ksšt‚t tdd	d	ƒdd�}t tdd	d	ƒdd�}t t d
¡dd�}t ddd�}t ddd�}||ksøt‚||k�st‚||k�st‚||k�s"t‚d S )Nú2007-01r%   r   Ú200701r>   ©r?   r   éI  r7   r0   ú
2007-01-01ú2007-01-01 00:00:00ú2007-01-01 00:00:00.000)r   rB   r2   r   r   ÚnpÚ
datetime64©r   rJ   rE   rF   rG   rH   rI   r!   r!   r"   Útest_construction_month¹   s*    z.TestPeriodConstruction.test_construction_monthc              	   C   sv  t dt ¡ d�t ddd�ks t‚t dt ¡ d�t ddd�ks@t‚t dt ¡ d�t ddd�ks`t‚t dt ¡ d�t ddd�ks€t‚t dt ¡ d�t ddd�ks t‚t d	d
tjdd�d�t d	d
dd�ksÈt‚t d	dtjdd�d�t d	ddd�ksðt‚t d	dd
t ¡ d�t d	dd
dd�k�st‚t dddt ¡ d�t ddddd�k�sDt‚t ddd�}t d	dd
t d¡d�|k�spt‚t d	dd
dd�|k�sŠt‚t dddt d¡d�t ddddd�k�s¶t‚t dt ¡ d�t ddd�k�sØt‚t dt ¡ d�}t ddd�}||k�st‚|j	dk�st‚|j	dk�s"t‚t t
dd
d
ƒdd�}t ddd�}||k�sPt‚t tdd
d
ƒdd�}t t
dd
d
ƒdd�}t t d¡dd�}t ddd�}t ddd�}||k�s°t‚||k�s¾t‚||k�sÌt‚||k�sÚt‚t dƒ}t t
dd
d
d d!d!d"ƒd#d�}||k�st‚t dd#d�}||k�s&t‚t d$ƒ}t t
dd
d
d d!d!d%ƒd&d�}||k�sXt‚t d$d&d�}||k�srt‚d S )'Nr$   r   r%   r&   r'   rS   rT   r   r.   r0   é   )ÚstartingMonthrZ   r*   é   r/   r1   rV   rW   z
2005-03-01Ú3DZ3Br>   r`   ra   r7   r_   rb   rc   rd   r6   r8   r   r9   r:   r;   r<   r=   )r   r   ÚMonthEndrB   ÚYearEndZBusinessDayÚDayÚ
QuarterEndZBDayr2   r   r   re   rf   rg   r!   r!   r"   Útest_period_constructor_offsetsÖ   s”     ÿ   ÿ   
ÿþ  
ÿþ   ÿ   ÿ    ÿ"z6TestPeriodConstruction.test_period_constructor_offsetsc              	   C   sx  d}t jt|d�� tt ¡ ƒ W 5 Q R X t jt|d�� tt ¡  ¡ ƒ W 5 Q R X d}t jt|d�� tddd� W 5 Q R X d}t jt|d�� tddd� W 5 Q R X d	}t jt|d�� td
ddd� W 5 Q R X d}t jt|d�� tdd� W 5 Q R X d}t jt|d�� tddƒ W 5 Q R X d}t jt|d�� tddƒ W 5 Q R X d}t jt|d�� tddƒ W 5 Q R X d S )Nz#Must supply freq for datetime valuer   r   gš™™™™™ù?r   r   zOrdinal must be an integerr`   z?Only value or ordinal but not both should be given but not bothrk   r0   )r?   Úvaluer   z%If value is None, freq cannot be None)r3   z-Given date string -2000 not likely a datetimez-2000r'   zday is out of range for monthÚ0z/Unknown datetime string format, unable to parsez	1/1/-2000)r   r   r   r   r   rC   r   r
   ©r   r    r!   r!   r"   Útest_invalid_arguments  s4    z-TestPeriodConstruction.test_invalid_argumentsc                 C   sf   t ddd�}t dddd�|ks"t‚t d ƒtks2t‚t ddd�}t |d	d�}t d
d	d�}||ksbt‚d S )Nr^   Ú2Mr   r7   r0   )r2   r3   r   rb   r   r'   Ú2007)r   rB   r   )r   rJ   ÚpÚresultÚexpr!   r!   r"   Útest_constructor_corner:  s    z.TestPeriodConstruction.test_constructor_cornerc                 C   sž   t dƒ}|jdkst‚t dƒ}|jdks,t‚t dƒ}|jdksBt‚t dƒ}|jdksXt‚t d	ƒ}|jd
ksnt‚t dƒ}|jdks„t‚t dƒ}|jdksšt‚d S )Nrb   r   z2007-01-01 07ÚHz2007-01-01 07:10ÚTz2007-01-01 07:10:15ÚSz2007-01-01 07:10:15.123r:   z2007-01-01 07:10:15.123000r=   z2007-01-01 07:10:15.123400)r   r   rB   ©r   rx   r!   r!   r"   Útest_constructor_infer_freqF  s    z2TestPeriodConstruction.test_constructor_infer_freqc                 C   sÎ   t ddd�}t ddd�}|j|jks(t‚|jdks6t‚|jdksDt‚|jt d¡ksXt‚|jt ¡ ksjt‚|d j|jd ks‚t‚d| j|jd ksšt‚|d j|jd ks²t‚d	| j|jd ksÊt‚d S )
NÚ1989Ú2Ar   r'   z2A-DECzA-DECrk   r0   éÿÿÿÿ)r   r?   rB   Úfreqstrr   r   rn   )r   Zresult1Zresult2r!   r!   r"   Útest_multiples^  s    z%TestPeriodConstruction.test_multiplesr3   c                 C   sv   d|› �}t d|d�}dt|ƒks&t‚|jddd�}t ||d�}||ksLt‚|jddd�}t ||d�}||ksrt‚d S )NzQ-Z1989Q3r   r   Úend©Úhowrl   )r   ÚstrrB   rM   ©r   r3   r   rz   Zstamprx   r!   r!   r"   Útest_period_cons_quarterlyl  s    
z1TestPeriodConstruction.test_period_cons_quarterlyc                 C   s\   d|› �}t d|d�}|jddd�tdd� }t ||d�}||d	 ksJt‚t|t ƒsXt‚d S )
NzA-r�   r   r   r†   r‡   é   )Údaysr0   )r   rM   r   rB   Ú
isinstancerŠ   r!   r!   r"   Útest_period_cons_annualz  s    
z.TestPeriodConstruction.test_period_cons_annualr4   ÚnumrW   é   c                 C   sP   d|› �}d|› �}t ||d�}t |dd� |¡}||ks>t‚t|t ƒsLt‚d S )Nz2011-02-zW-r   r   )r   rX   rB   rŽ   )r   r�   r4   Zdaystrr   ry   rJ   r!   r!   r"   Útest_period_cons_weekly…  s    

z.TestPeriodConstruction.test_period_cons_weeklyc                 C   s:   t ddd�}t j|jdd�}||ks(t‚t|t ƒs6t‚d S ©Nú2011-01r%   r   )r   Z_from_ordinalr?   rB   rŽ   ©r   rx   Úresr!   r!   r"   Útest_period_from_ordinal�  s    z/TestPeriodConstruction.test_period_from_ordinalr   r'   r%   r   r|   c                 C   sT   t d|d�}|tkst‚t dd| d�}|tks4t‚t dd| d�}|tksPt‚d S )Nr   r   Ú2Ú3©r   r   rB   ©r   r   rO   r!   r!   r"   Ú'test_construct_from_nat_string_and_freq–  s    z>TestPeriodConstruction.test_construct_from_nat_string_and_freqc                 C   sŒ   t ddd�}|tkst‚t tdd�}|tks0t‚t tdd�}|tksHt‚t tdd�}|tks`t‚t dƒ}|tkstt‚t tƒ}|tksˆt‚d S )NÚnatzW-SUNr   r   rl   Ú1D1Hr   )r   r   rB   r   r   r!   r!   r"   Útest_period_cons_nat¡  s    z+TestPeriodConstruction.test_period_cons_natc              	   C   s6  t ddd�}t ddd�}|j|jks(t‚|jt d¡ks<t‚|jdksJt‚|jt ¡ ks\t‚|jdksjt‚|d }|j|d jks†t‚|j|jks–t‚|jdks¤t‚|d }|j|d jksÀt‚|j|jksÐt‚|jdksÞt‚d}tjt	|d�� t dd	d� W 5 Q R X d
}tjt	|d�� t ddd� W 5 Q R X d S )Nr”   Ú3Mr   r%   r/   r0   z;Frequency must be positive, because it represents span: -3Mr   z-3Mz:Frequency must be positive, because it represents span: 0MZ0M)
r   r?   rB   r   r   rm   r„   r   r   r   )r   Úp1Úp2ry   r    r!   r!   r"   Útest_period_cons_mult´  s*    z,TestPeriodConstruction.test_period_cons_multc              	   C   s  t ddd�t ddd�t ddd�ft ddd�t ddd�t ddd�fg}|D �]Š\}}}|j|jksdt‚|j|jkstt‚|jt d¡ksˆt‚|jd	ks–t‚|jt d¡ksªt‚|jd	ks¸t‚|jt ¡ ksÊt‚|jdksØt‚|d }|j|d jksôt‚|j|jk�st‚|jd	k�st‚|d }|j|d jk�s4t‚|j|jk�sFt‚|jd	k�sVt‚|d }|j|d jk�stt‚|j|jk�s†t‚|jd	k�s–t‚|d }|j|d jk�s´t‚|j|jk�sÆt‚|jd	ksHt‚qHd
}tjt	|d�� t ddd� W 5 Q R X tjt	|d�� t ddd� W 5 Q R X tjt	|d�� t ddd� W 5 Q R X tjt	|d�� t ddd� W 5 Q R X d}tjt	|d�� t ddd� W 5 Q R X tjt	|d�� t ddd� W 5 Q R X d}tjt	|d�� t ddd� W 5 Q R X d}tjt	|d�� t ddd� W 5 Q R X d S )Nr”   rž   r   Ú1H1Dr|   r0   r`   é   Z25Hz<Frequency must be positive, because it represents span: -25Hr   z-1D1Hz-1H1Dz:Frequency must be positive, because it represents span: 0DZ0D0HzInvalid frequency: 1W1DZ1W1DzInvalid frequency: 1D1WZ1D1W)
r   r?   rB   r   r   ÚHourr„   r   r   r   )r   rx   r¡   r¢   Zp3ry   r    r!   r!   r"   Útest_period_cons_combinedÒ  sl    


ý


ýúz0TestPeriodConstruction.test_period_cons_combinedz1970/01/01 z2020-12-31 z1981/09/13 Úhourz00:00:00z00:00:01z23:59:59z12:00:59zsec_float, expected)z
.000000001r0   )z
.000000999éç  )z
.123456789i  )z
.999999999r©   c                 C   s    t || | ƒjj|kst‚d S ©N)r   Ú
start_timeÚ
nanosecondrB   )r   r4   r¨   Z	sec_floatrJ   r!   r!   r"   Ú"test_period_constructor_nanosecond  s    z9TestPeriodConstruction.test_period_constructor_nanosecondé   c                 C   s"   t d| dd�}|j|kst‚d S )Ni ' Z1Hr`   )r   r¨   rB   )r   r¨   rx   r!   r!   r"   Útest_period_large_ordinal)  s    z0TestPeriodConstruction.test_period_large_ordinalN)Ú__name__Ú
__module__Ú__qualname__r#   rK   rR   rY   r]   rh   rq   ru   r{   r€   r…   r   ÚmarkÚparametrizer   r‹   r�   r   Úranger’   r—   rœ   rŸ   r£   r§   r­   r¯   r!   r!   r!   r"   r   )   sJ   ?$E


	

Güþ	r   c                   @   sØ   e Z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	dd„ Z
dd„ Zdd„ Zdd„ Zej ddddddddd d!g	¡ej d"d#d$d%g¡d&d'„ ƒƒZd(d)„ Zd*d+„ Zd,d-„ Zd.d/„ Zd0d1„ Zd#S )2ÚTestPeriodMethodsc                 C   s"   t dƒ}t |¡}||kst‚d S )NZ2000Q1)r   ÚtmZround_trip_picklerB   )r   rx   Znew_pr!   r!   r"   Útest_round_trip2  s    
z!TestPeriodMethods.test_round_tripc                 C   s”   t tddd�ƒt tddd�ƒks$t‚t tddd�ƒt tddd�ƒksHt‚t tddd�ƒt tddd�ƒkslt‚t tddd�ƒt tddd�ƒks�t‚d S )	Nr”   r%   r   ú
2011-01-01r   r    rv   ú2011-02)Úhashr   rB   )r   r!   r!   r"   Ú	test_hash7  s    $$$zTestPeriodMethods.test_hashÚtzstrúEurope/Brusselsz
Asia/Tokyoz
US/Pacificc              	   C   sø  t  t¡� tddd�j|d�}W 5 Q R X tddd� |¡}t |¡ 	|¡}||ksXt
‚|j|jksht
‚|j|jksxt
‚t  t¡� tddd�j|d�}W 5 Q R X tddd� |¡}t |¡ 	|¡}||ksÐt
‚|j|jksàt
‚|j|jksðt
‚t  t¡� tddd�jd|d�}W 5 Q R X td	d
ddd� |¡}t |¡ 	|¡}||k�sPt
‚|j|jk�sbt
‚|j|jk�stt
‚t  t¡� tddd�jd|d�}W 5 Q R X tddd� |¡}t |¡ 	|¡}||k�sÐt
‚|j|jk�sât
‚|j|jk�sôt
‚d S )Nr$   r%   r   ©ÚtzÚUTCÚ3Hr'   ©r   rÀ   é   ri   r.   )r4   r3   r2   rÀ   )r·   Úassert_produces_warningÚFutureWarningr   rM   r   Ú
tz_convertÚpytzÚtimezoneÚ	normalizerB   rÀ   Útzinfo)r   r½   rx   rz   Zexp_zoner!   r!   r"   Útest_to_timestamp_tz_argC  s8      z*TestPeriodMethods.test_to_timestamp_tz_argúdateutil/Europe/Brusselszdateutil/Asia/Tokyozdateutil/US/Pacificc              	   C   sú   t |ƒ}t t¡� tddd�j|d�}W 5 Q R X tddd� |¡}||ksPt‚|j	t
| dd¡d ƒksnt‚|j	|j	ks~t‚t t¡� tddd�jd|d	�}W 5 Q R X tddd� |¡}||ksÈt‚|j	t
| dd¡d ƒksæt‚|j	|j	ksöt‚d S )
Nr$   r%   r   r¿   rÁ   ú/r0   rÂ   rÃ   )r   r·   rÅ   rÆ   r   rM   r   rÇ   rB   rÀ   r   Úsplit)r   r½   rÀ   rx   rz   r!   r!   r"   Ú!test_to_timestamp_tz_arg_dateutilj  s     z3TestPeriodMethods.test_to_timestamp_tz_arg_dateutilc              	   C   s@   t  t¡� tddd�jdd�}W 5 Q R X |jtdƒks<t‚d S )Nr$   r%   r   rÍ   r¿   r¾   )r·   rÅ   rÆ   r   rM   rÀ   r   rB   r   r!   r!   r"   Ú-test_to_timestamp_tz_arg_dateutil_from_string~  s    z?TestPeriodMethods.test_to_timestamp_tz_arg_dateutil_from_stringc                 C   s˜   t ddd�}|jdd�tdƒks$t‚tdƒtdd	ƒ }|jd
d�|ksJt‚t ddd�}|jdd�tdƒksnt‚tdƒtdd	ƒ }|jd
d�|ks”t‚d S )Nr”   r%   r   r~   r‡   r¹   z
2011-02-01r0   rL   ÚEr    ú
2011-04-01)r   rM   r   rB   r   )r   rx   rJ   r!   r!   r"   Útest_to_timestamp_multƒ  s    z(TestPeriodMethods.test_to_timestamp_multc              	   C   s�  t ddd�}|jdd�}dddg}|D ]0}||jd	|d�ks@t‚||jd
|d�ks&t‚q&|jdd�}dddg}|D ]0}||jd	|d�ksŒt‚||jd
|d�ksrt‚qrdddddd	dddg	}dd„ }|D ]T}t d|d�}| ¡  |¡}	|	|ksðt‚|j|jdd�k�st‚|j||ƒksÆt‚qÆt ddd�}|jddd�}	tdddƒtddƒ }
|	|
k�sZt‚|jddd�}	|	|
k�svt‚|jddd�}	tdddƒtddƒ }
|	|
k�s¨t‚|jddd�}	|	|
k�sÄt‚|jdd�}	tdddƒtddƒ }
|	|
k�sôt‚tdddƒ}
|jddd�}	|	|
k�st‚|jddd�}	|	|
k�s8t‚|jddd�}	|	|
k�sTt‚|jddd�}	|	|
k�spt‚|jd dd�}	|	|
k�sŒt‚d S )!Nr,   r'   r   r~   r‡   ÚsZStarTZBEGInr   rl   rÒ   Úer†   ZFINIsHr*   r%   ÚWrT   r|   rA   c                 S   s2   | j dkr| jtddd� S t| | j  jjd ƒS )NrT   r0   rƒ   )r�   Únanoseconds)r   r«   r   r   rr   )rx   r!   r!   r"   Ú_exŸ  s    
z0TestPeriodMethods.test_to_timestamp.<locals>._exZ1985iÂ  r0   rL   rÂ   r}   Z2TiÁ  ÚstartZ5S)	r   rM   rB   Z	to_periodr«   Úend_timer   r   r   )r   rx   Zstart_tsÚaliasesr(   Zend_tsZfrom_lstrÙ   Zfcodery   rJ   r!   r!   r"   Útest_to_timestampŽ  sX    

z#TestPeriodMethods.test_to_timestampc                 C   s:   t ddƒ}|jddd�}tdƒtdd� }||ks6t‚d S )Nú
1990-01-05rT   rÒ   r‡   ú
1990-01-06r0   ©rØ   )r   rM   r   r   rB   ©r   rO   ry   rJ   r!   r!   r"   Útest_to_timestamp_business_endÍ  s    
z0TestPeriodMethods.test_to_timestamp_business_endzts, expected)z1970-01-01 00:00:00r   )z1970-01-01 00:00:00.000001r0   )z1970-01-01 00:00:00.00001rW   )z1970-01-01 00:00:00.499i8� )z1999-12-31 23:59:59.999iX> )z1999-12-31 23:59:59.999999i?B )z2050-12-31 23:59:59.5i ¡ )z2050-12-31 23:59:59.500001i!¡ )z2050-12-31 23:59:59.123456i@â r   NÚusrL   c                 C   s"   t |ƒj|d�j}||kst‚d S )Nr   )r   rM   ÚmicrosecondrB   )r   rN   rJ   r   ry   r!   r!   r"   Útest_to_timestamp_microsecondÔ  s    z/TestPeriodMethods.test_to_timestamp_microsecondc                 C   s4   t dƒ}dt|ƒkst‚t dƒ}dt|ƒks0t‚d S )NzJan-2000ú2000-01z
2000-12-15©r   ÚreprrB   r   r!   r!   r"   Ú	test_reprë  s    zTestPeriodMethods.test_reprc                 C   s$   t ddd�}ttƒt|ƒks t‚d S )Nr�   r%   r   )r   rè   r   rB   r   r!   r!   r"   Útest_repr_natò  s    zTestPeriodMethods.test_repr_natc                 C   s   t dƒ}t|ƒdkst‚d S )Nz2000-01-01 12:15:02.123z&Period('2000-01-01 12:15:02.123', 'L')rç   r   r!   r!   r"   Útest_millisecond_reprö  s    z'TestPeriodMethods.test_millisecond_reprc                 C   s   t dƒ}t|ƒdkst‚d S )Nz2000-01-01 12:15:02.123567z)Period('2000-01-01 12:15:02.123567', 'U')rç   r   r!   r!   r"   Útest_microsecond_reprû  s    z'TestPeriodMethods.test_microsecond_reprc                 C   s4   t ddd�}| d¡}|dks"t‚t|tƒs0t‚d S )Nz2000-1-1 12:34:12r~   r   z%Y-%m-%d %H:%M:%Sz2000-01-01 12:34:12)r   ÚstrftimerB   rŽ   r‰   r•   r!   r!   r"   Útest_strftime   s    
zTestPeriodMethods.test_strftime)r°   r±   r²   r¸   r¼   r   r³   r´   rÌ   rÐ   rÑ   rÔ   rÝ   râ   rå   ré   rê   rë   rì   rî   r!   r!   r!   r"   r¶   1  sB   
&þ
?÷þr¶   c                   @   s&  e Zd ZdZej dddddg¡dd„ ƒZd	d
„ Zdd„ Z	dd„ Z
dd„ Zej dejdfejdfg¡ej dddg¡dd„ ƒƒZej dejdfejdfg¡ej 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)d*„ Zd+d,„ Zd-d.„ Zd/d0„ Zd1d2„ Zd3d4„ Zd5S )6ÚTestPeriodPropertiesz5Test properties such as year, month, weekday, etc....r   r'   r%   r   r|   c                 C   sl   t d|d�}|jst‚t|jtƒs&t‚t d|d�}|jr<t‚t d|d�}|jsRt‚t d|d�}|jrht‚d S )Nz2000-01-01 00:00:00r   z1999-01-01 00:00:00z2004-01-01 00:00:00z2100-01-01 00:00:00)r   Zis_leap_yearrB   rŽ   Úbool)r   r   rx   r!   r!   r"   Útest_is_leap_year  s    


z&TestPeriodProperties.test_is_leap_yearc                 C   s¦   t ddd�}|jdkst‚|jdks(t‚t|t ƒs6t‚t ddd�}|jdksPt‚|jdks^t‚t|t ƒslt‚t ddd�}|jdks†t‚|jd	ks”t‚t|t ƒs¢t‚d S )
Nrƒ   úQ-DECr`   é±  é   éþÿÿÿr/   r%   é   )r   r2   rB   r[   rŽ   r3   r   r!   r!   r"   Ú test_quarterly_negative_ordinals  s    z5TestPeriodProperties.test_quarterly_negative_ordinalsc                 C   s0   t ddd�}|jt ¡ kst‚|jdks,t‚d S )Nr,   rA   r   r}   )r   r   r   ÚMinuterB   r„   )r   rE   r!   r!   r"   Útest_freq_str+  s    z"TestPeriodProperties.test_freq_strc                 C   s  ddddddgddd	d
dgddddddgdddddddgddddgdddd d!gd"d#d$gd%d&d'gd(d)d*gd+œ	}t }| ¡ D ]’\}}|D ]P}tjt|d,�� td-|d.� W 5 Q R X tjt|d,�� td/|d0� W 5 Q R X q„td-|d.�}td/|d0�}t|tƒsüt‚t|tƒsxt‚qxd S )1NZMTHZMONTHZMONTHLYZMthr3   ZmonthlyZBUSZBUSINESSZ
BUSINESSLYZWEEKDAYÚbusZDAYZDLYZDAILYro   ZDlyZDailyZHRZHOURZHRLYZHOURLYÚhrr¦   ZHRlyÚminuteZMINUTEZMINUTELYZminutelyÚsecZSECZSECONDZSECONDLYÚsecondZMILLISECONDZMILLISECONDLYZmillisecondZMICROSECONDZMICROSECONDLYrä   Z
NANOSECONDZNANOSECONDLYr¬   )	r%   rT   r   r|   r}   r~   r:   r=   ÚNr   z2016-03-01 09:00r   r0   r`   )r   Úitemsr   r   r   r   rŽ   rB   )r   Zcasesr    rz   Úfreqsr   r¡   r¢   r!   r!   r"   Útest_period_deprecated_freq0  s*    
÷z0TestPeriodProperties.test_period_deprecated_freqc              	   C   s&   t | j| j| j| j| j| j| dd�S )Nrã   )r2   r3   r4   r¨   rü   rþ   r   )r   r2   r3   r4   r¨   rü   rþ   )ÚboundÚoffsetr!   r!   r"   Ú_period_constructorK  s    ùz(TestPeriodProperties._period_constructorzbound, offsetrƒ   r0   Úperiod_propertyr«   rÛ   c              	   C   s4   t  ||¡}tjtdd�� t||ƒ W 5 Q R X d S )NzOut of bounds nanosecondr   )rï   r  r   r   r	   Úgetattr)r   r  r  r  r   r!   r!   r"   Ú$test_outer_bounds_start_and_end_timeV  s    z9TestPeriodProperties.test_outer_bounds_start_and_end_timec                 C   sn   t  || ¡}| ¡ jdd�}t||ƒjdd�|ks8t‚||tddd�   d¡}t||ƒ d¡|ksjt‚d S )Nr~   r   r0   )Úunit)rï   r  rM   Úroundr  rB   r   Úfloor)r   r  r  r  r   rJ   r!   r!   r"   Ú$test_inner_bounds_start_and_end_time^  s
    z9TestPeriodProperties.test_inner_bounds_start_and_end_timec                 C   s‚   dddddddg}t dd	d	ƒ}|D ]}td
|d�}|j|ks"t‚q"td
dd�jt dd	dƒks`t‚td
dd�jt dddƒks~t‚d S )Nr'   r*   r%   r   r|   r}   r~   rV   r0   Ú2012r   rT   rk   r×   iÛ  ri   é   )r   r   r«   rB   )r   Zfreq_lstÚxpÚfrx   r!   r!   r"   Útest_start_timeh  s    z$TestPeriodProperties.test_start_timec                 C   s–  t ddd�}dd„ }|dddƒ}||jks.t‚t ddd�}|d	d
dƒ}||jksTt‚t ddd�}|d	ddƒ}||jkszt‚t ddd�}|d	ddƒ}||jks t‚t ddd�}|d	dddƒ}||jksÈt‚t ddd�}|d	ddƒ}||jksît‚t ddd�}|d	ddƒ}||jk�st‚t ddd�}|d	ddƒ}||jk�s>t‚t ddd�}|d	dddƒ}||jk�sht‚t ddd�}|d	dddƒ}||jk�s’t‚d S )Nr  r'   r   c                  W   s   t t t| Ž ƒjd ƒS ©Nr0   ©r   r   rr   ©Úargsr!   r!   r"   rÙ   t  s    z/TestPeriodProperties.test_end_time.<locals>._exéÝ  r0   r*   rV   rô   r%   rk   r   r|   rT   r/   r×   Z15Dé   rž   r¤   ©r   rÛ   rB   )r   rx   rÙ   r  r!   r!   r"   Útest_end_timeq  s>    z"TestPeriodProperties.test_end_timec                 C   s2   t ddƒ}|j}tdƒtdd� }||ks.t‚d S )NrÞ   rT   rß   r0   rà   )r   rÛ   r   r   rB   rá   r!   r!   r"   Útest_end_time_business_fridayŸ  s    
z2TestPeriodProperties.test_end_time_business_fridayc                 C   s0   dd„ }t ddƒ}|dddƒ}|j|ks,t‚d S )Nc                  W   s   t t t| Ž ƒjd ƒS r  r  r  r!   r!   r"   rÙ   ¨  s    z;TestPeriodProperties.test_anchor_week_end_time.<locals>._exz2013-1-1zW-SATr  r0   é   r  )r   rÙ   rx   r  r!   r!   r"   Útest_anchor_week_end_time§  s    
z.TestPeriodProperties.test_anchor_week_end_timec                 C   s   t ddd�}|jdkst‚d S )Nr'   r7   )r   r2   )r   r2   rB   )r   Za_dater!   r!   r"   Útest_properties_annually¯  s    z-TestPeriodProperties.test_properties_annuallyc                 C   st   t dddd�}t dddd�}t dddd�}tdƒD ]<}|||fD ],}|| jdksVt‚|| j|d ks@t‚q@q2d S )Nrò   r7   r0   )r   r2   r[   zQ-JANzQ-JUNr/   )r   rµ   ZqyearrB   r[   )r   Z
qedec_dateZ
qejan_dateZ
qejun_dateÚxZqdr!   r!   r"   Útest_properties_quarterly´  s    z.TestPeriodProperties.test_properties_quarterlyc                 C   sö   t dddd�}tdƒD ]Ú}|| }|jdks0t‚d|d   krHdkr\n n|jdksÞt‚n‚d|d   krtdkrˆn n|jd	ksÞt‚nVd
|d   kr dkr´n n|jdksÞt‚n*d|d   krÌdkrÞn n|jdksÞt‚|j|d kst‚qd S )Nr%   r7   r0   )r   r2   r3   rö   r/   rô   r  rk   é   r8   rW   ri   )r   rµ   r2   rB   r[   r3   )r   Zm_dater  Zm_ival_xr!   r!   r"   Útest_properties_monthly¿  s    z,TestPeriodProperties.test_properties_monthlyc                 C   s†   t ddddd�}|jdkst‚|jdks,t‚|jdks:t‚|jdksHt‚|d jdksZt‚|jdksht‚t ddd	dd�jd
ks‚t‚d S )Nr×   r7   r0   r   ©r   r2   r3   r4   é4   rÄ   rV   rk   é   )r   r2   rB   r[   r3   ÚweekÚdays_in_month)r   Úw_dater!   r!   r"   Útest_properties_weeklyÏ  s    z+TestPeriodProperties.test_properties_weeklyc              	   C   s¸   t ddddd�}|jdkst‚|jdks,t‚|jdks:t‚|jdksHt‚|d jdksZt‚|jdksht‚t ddd	dd�}|jd
ks†t‚t}tj	t
|d�� t ddddd� W 5 Q R X d S )Nr×   r7   r0   r   r"  r#  rÄ   rV   rk   r$  r   ZWK)r   r2   rB   r[   r3   r%  r&  r   r   r   r   )r   r'  rz   r    r!   r!   r"   Útest_properties_weekly_legacyÛ  s    z2TestPeriodProperties.test_properties_weekly_legacyc                 C   s  t ddddd�}|jdkst‚|jdks,t‚|jdks:t‚|jdksHt‚|jdksVt‚|jdksdt‚|jdksrt‚t ddddd�jd	ksŒt‚t d
dddd�}|jdksªt‚|jdks¸t‚|jdksÆt‚|jdksÔt‚|jdksât‚|jdksðt‚|jdksþt‚t d
dddd�jd	k�st‚d S )NrT   r7   r0   r"  r   rÄ   rV   rk   r$  r   )	r   r2   rB   r[   r3   r4   ÚweekdayÚ	dayofyearr&  )r   Zb_dateZd_dater!   r!   r"   Útest_properties_dailyì  s$    z*TestPeriodProperties.test_properties_dailyc                 C   sÂ   t dddddd�}t dddddd�}||fD ]�}|jdks>t‚|jdksLt‚|jdksZt‚|jdksht‚|jdksvt‚|jdks„t‚|jdks’t‚|j	dks t‚t ddd	ddd�j	d
ks,t‚q,d S )Nr|   r7   r0   r   )r   r2   r3   r4   r¨   Ú2HrÄ   rV   rk   r$  )
r   r2   rB   r[   r3   r4   r*  r+  r¨   r&  )r   Zh_date1Zh_date2Zh_dater!   r!   r"   Útest_properties_hourly  s    ÿz+TestPeriodProperties.test_properties_hourlyc                 C   s¦   t ddddddd�}|jdks"t‚|jdks0t‚|jdks>t‚|jdksLt‚|jdksZt‚|jdksht‚|jdksvt‚|j	dks„t‚t ddd	dddd�j	d
ks¢t‚d S )NrA   r7   r0   r   )r   r2   r3   r4   r¨   rü   rÄ   r   rV   rk   r$  )
r   r[   rB   r3   r4   r*  r+  r¨   rü   r&  )r   Zt_dater!   r!   r"   Útest_properties_minutely  s    ÿÿz-TestPeriodProperties.test_properties_minutelyc              	   C   sÆ   t dddddddd�}|jdks$t‚|jdks2t‚|jdks@t‚|jdksNt‚|jdks\t‚|jdksjt‚|jdksxt‚|j	dks†t‚|j
dks”t‚|jdks¢t‚t dddddddd�jd	ksÂt‚d S )
NrA   r7   r0   r   )r   r2   r3   r4   r¨   rü   rþ   rÄ   rV   rk   r$  )r   r2   rB   r[   r3   r4   r*  r+  r¨   rü   rþ   r&  )r   Zs_dater!   r!   r"   Útest_properties_secondly'  s>          ÿ      ÿýÿz-TestPeriodProperties.test_properties_secondlyN)r°   r±   r²   Ú__doc__r   r³   r´   rñ   r÷   rù   r  r  r   r-   Úmaxr  r  r  r  r  r  r  r  r!  r(  r)  r,  r.  r/  r0  r!   r!   r!   r"   rï     s4   
	.rï   c                   @   s   e Zd Zdd„ ZdS )ÚTestPeriodFieldc              	   C   s6   d}t jt|d�� t dt d¡d¡ W 5 Q R X d S )Nz@Buffer dtype mismatch, expected 'const int64_t' but got 'double'r   rƒ   r0   r   )r   r   r   Ú	libperiodZget_period_field_arrre   Úemptyrt   r!   r!   r"   Ú2test_get_period_field_array_raises_on_out_of_range@  s    zBTestPeriodField.test_get_period_field_array_raises_on_out_of_rangeN)r°   r±   r²   r6  r!   r!   r!   r"   r3  ?  s   r3  c                	   @   sp   e Zd Zd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   sT   t ddƒ}t ddƒ}||ks t‚||ks,t‚||ks8t‚||k rDt‚||krPt‚d S ©Nræ   r%   ©r   rB   )r   ÚleftÚrightr!   r!   r"   Ú,test_comparison_same_period_different_objectG  s    

zBTestPeriodComparisons.test_comparison_same_period_different_objectc                 C   s`   t ddƒ}t ddƒ}||kr t‚||ks,t‚||k s8t‚||ksDt‚||krPt‚||kr\t‚d S )Nræ   r%   ú2000-02r9  )r   ÚjanÚfebr!   r!   r"   Útest_comparison_same_freqR  s    

z/TestPeriodComparisons.test_comparison_same_freqc              	   C   s¼   t ddƒ}t ddƒ}||kr t‚||ks,t‚d}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 )Nræ   r%   z
2012-01-01r   z0Input has different freq=D from Period\(freq=M\)r   )r   rB   r   r   r   )r   r>  r4   r    r!   r!   r"   Útest_comparison_mismatched_freq]  s    

z5TestPeriodComparisons.test_comparison_mismatched_freqc              
   C   sÜ   t ddƒ}|dkrt‚|dks"t‚d}d|› d|› �}|dfd|ffD ]�\}}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 qFd S )Nræ   r%   r0   z'(Period|int)'z#not supported between instances of z and r   )r   rB   r   r   rD   )r   r>  Z
int_or_perr    r:  r;  r!   r!   r"   Útest_comparison_invalid_typem  s    
z2TestPeriodComparisons.test_comparison_invalid_typec                 C   sF   t ddƒ}t ddƒ}t ddƒ}|||g}|||g}t|ƒ|ksBt‚d S )Nræ   r%   r=  z2000-03)r   ÚsortedrB   )r   r>  r?  ÚmarZperiodsZcorrectPeriodsr!   r!   r"   Útest_sort_periods€  s    




z'TestPeriodComparisons.test_sort_periodsc                 C   s†   t ddd�}tdƒ}t|f|tft|f|tffD ]P\}}||k rDt‚||krPt‚||kr\t‚||ksht‚||krtt‚||kr0t‚q0d S )Nr¹   r   r   )r   r   r   rB   )r   rx   Útr:  r;  r!   r!   r"   Útest_period_cmp_natˆ  s    üz)TestPeriodComparisons.test_period_cmp_natzzerodim_arr, expectedr   Fræ   r%   Tc                 C   s.   t ddƒ}||k|kst‚||k|ks*t‚d S r8  r9  )r   Zzerodim_arrrJ   rx   r!   r!   r"   Ú!test_comparison_numpy_zerodim_arrš  s    
z7TestPeriodComparisons.test_comparison_numpy_zerodim_arrN)r°   r±   r²   r<  r@  rA  rB  rE  rG  r   r³   r´   re   Úarrayr   rH  r!   r!   r!   r"   r7  F  s    þr7  c                
   @   sP  e Zd Zej ddddddg¡dd„ ƒZd	d
„ Zdd„ Zdd„ Z	dd„ Z
dd„ dd„ dd„ gZdddgZejjdeed�ejjdeed�dd„ ƒƒZdd„ Zej dd d!d"d#g¡d$d%„ ƒZej d&d'd(g¡ej dd d!d"d#g¡ej d)ejd*fejd+fejd,fejd-fg¡d.d/„ ƒƒƒZd0d1„ Zd2d3„ Zej d4d5d6d7g¡d8d9„ ƒZd:d;„ Zd,S )<ÚTestArithmeticr	  rL   rã   ÚmsrÕ   r)   c              	   C   sl   t ddƒ}t d|¡}|| tks&t‚|| tks6t‚|| tksFt‚tjtdd�� ||  W 5 Q R X d S )Nz
2022-06-01r   r   úunsupported operandr   )r   re   Útimedelta64r   rB   r   r   rD   )r   r	  rO   r�   r!   r!   r"   Útest_add_sub_td64_nat¦  s    
z$TestArithmetic.test_add_sub_td64_natc              	   C   sf   t ddd�t ddd� }}|| }|d|j ks4t‚d}tjt|d�� |t dd	d�  W 5 Q R X d S )
NÚ2011r'   r   rw   rô   z4Input has different freq=M from Period\(freq=A-DEC\)r   r^   r%   ©r   r   rB   r   r   r   )r   r:  r;  ry   r    r!   r!   r"   Útest_sub_delta³  s    zTestArithmetic.test_sub_deltac                 C   sD   t ddddd�}t ddddd�}|d |ks0t‚d| |ks@t‚d S )Nr   éØ  r0   r"  rk   r9  )r   Úper1rQ   r!   r!   r"   Útest_add_integer¼  s    zTestArithmetic.test_add_integerc                 C   sP   t ddd�}|t tkst‚t| tks,t‚|t tks<t‚t| tksLt‚d S r“   rš   r   r!   r!   r"   Útest_add_sub_natÂ  s
    zTestArithmetic.test_add_sub_natc              	   C   sš   t ddddd�}t ddddd�}d ddd	g¡}tjt|d
�� |d  W 5 Q R X tjt|d
�� d|  W 5 Q R X tjt|d
�� ||  W 5 Q R X d S )Nr   rR  r0   r"  rk   ú|zunsupported operand type\(s\)zcan only concatenate strzmust be str, not Periodr   r‰   )r   Újoinr   r   rD   )r   rS  rQ   r    r!   r!   r"   Útest_add_invalidÊ  s    ýÿzTestArithmetic.test_add_invalidc                 C   s   | S rª   r!   ©r  r!   r!   r"   Ú<lambda>Ý  ó    zTestArithmetic.<lambda>c                 C   s   t  | g¡S rª   )ÚpdÚSeriesrY  r!   r!   r"   rZ  Ý  r[  c                 C   s   t  | g¡S rª   )r\  ÚIndexrY  r!   r!   r"   rZ  Ý  r[  Úidentityr]  r^  Úlbox)ÚidsÚrboxc              	   C   sª   t dƒ}tddd�}d ddddd	g¡}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 )NZ2017r%   r   rV  z
cannot addrL  zcan only operate on azincompatible typezufunc add cannot use operandsr   )r   r   rW  r   r   rD   )r   rb  r`  rN   rO   r    r!   r!   r"   Útest_add_timestamp_raisesà  s     ûÿ	z(TestArithmetic.test_add_timestamp_raisesc              	   C   sx   t ddd�}t ddd�}|j}|| d| ks2t‚|| d| ksFt‚d}tjt|d�� |t d	d
d�  W 5 Q R X d S )Nr¹   r   r   z
2011-01-15iòÿÿÿé   z0Input has different freq=M from Period\(freq=D\)r   rº   r%   rP  )r   rS  rQ   Úoffr    r!   r!   r"   Útest_subû  s    zTestArithmetic.test_subÚnr0   rk   r/   rô   c                 C   s\   t d||ƒd�}t d||ƒd�}t t|ƒ|jjd�t t|ƒ|jjd� }|| |ksXt‚d S )NÚ19910905r   Ú19920406)r   r‰   r   ÚbaserB   )r   Ztick_classesrg  r¡   r¢   rJ   r!   r!   r"   Útest_sub_n_gt_1_ticks  s     ÿz$TestArithmetic.test_sub_n_gt_1_ticksrÊ   TFzoffset, kwd_namer3   rj   Nr*  c                 C   s|   |d k	r|dini }d}d}t ||||f|Žd�}t ||||f|Žd�}	t ||	jjd�t ||jjd� }
|	| |
ksxt‚d S )Nr/   rh  ri  r   )r   r   rj  rB   )r   r  Zkwd_namerg  rÊ   ÚkwdsZp1_dZp2_dr¡   r¢   rJ   r!   r!   r"   Útest_sub_n_gt_1_offsets  s     z&TestArithmetic.test_sub_n_gt_1_offsetsc                 C   s  dD ]À}t d|d�}t d|d�}|t d¡ |ks6t‚t d¡| |ksLt‚t d¡t d¡t ¡ t dd¡t	dƒfD ]L}d	}t
jt|d
�� ||  W 5 Q R X t
jt|d
�� ||  W 5 Q R X qvqdD �]
}t d|d�}t d|d�}|t d¡ |ksþt‚t d¡| |k�st‚t d|d�}|t d¡ |k�s:t‚t d¡| |k�sRt‚d ddg¡}t d¡t d¡t ¡ t dd¡t	dƒfD ]J}t
jt|d
�� ||  W 5 Q R X t
jt|d
�� ||  W 5 Q R X �qŠqÊdD �]}t d|d�}t d|d�}|t d¡ |k�st‚t d¡| |k�s*t‚t d|d�}|t d¡ |k�sNt‚t d¡| |k�sft‚t d|d�}|t dd¡ |k�sŒt‚t dd¡| |k�s¦t‚t d|d�}|t dd¡ |k�sÌt‚t dd¡| |k�sæt‚t d|d�}|t	dƒ |k�st‚t	dƒ| |k�st‚t d|d�}|t	dd� |k�sBt‚t	dd�| |k�sZt‚d ddg¡}t d¡t d¡t ¡ t d d!¡t	d"d�fD ]J}t
jt|d
�� ||  W 5 Q R X t
jt|d
�� ||  W 5 Q R X �q”�qÜd#D �]}t d$|d�}t d%|d�}|t d¡ |k�st‚t d¡| |k�s6t‚t d&|d�}|t d'¡ |k�sZt‚t d'¡| |k�srt‚d(}t d&|d�}|t d'd!¡ |k�sœt‚t d'd!¡| |k�s¶t‚t d)|d�}|t d*d¡ |k�sÜt‚t d*d¡| |k�söt‚t d+|d�}|t	d,d-� |k�st‚t	d,d-�| |k�s2t‚t d.|d�}|t	d d/d0� |k�sXt‚t	d d/d0�| |k�srt‚d ddg¡}t d¡t d¡t ¡ t d1d¡t	d"d2d3�fD ]J}t
jt|d
�� ||  W 5 Q R X t
jt|d
�� ||  W 5 Q R X �q®�qèd S )4N©r'   r‚   Z3ArO  r   Z2013rk   r0   ém  r   z<Input has different freq|Input cannot be converted to Periodr   ©r%   rv   r    ú2011-03z2011-05z2012-03ri   rV  úInput has different freqú#Input cannot be converted to Period©r   Z2Drl   rÓ   z
2011-04-06é   ú
2011-04-02r®   ú
2011-04-03é€Q rÕ   ú
2011-03-30rõ   é0   ©Úhoursrô   Úhé   ©r|   r-  rÂ   ú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:00éx   ©Úminutesz2011-04-05 12:00é´   ©r�   r„  é€  rŒ   ©r|  r„  )r   r   rn   rB   Ú	YearBeginÚ
MonthBeginrø   re   rM  r   r   r   r   rm   rW  ro   r¦   )r   r   rx   rz   Úor    r!   r!   r"   Útest_add_offset*  sÜ    
û
þÿ
û
þÿ
û
þÿ

ûzTestArithmetic.test_add_offsetc                 C   s¨  d  ddg¡}dD ]€}td|d�}|t d¡ td|d�ks@t‚t d¡t d	¡t ¡ t 	d
d¡t
d
ƒfD ]&}tjt|d�� ||  W 5 Q R X qjqdD ] }td|d�}|t d¡ td|d�ksÆt‚|t d¡ td|d�ksät‚t d¡t d	¡t ¡ t 	d
d¡t
d
ƒfD ](}tjt|d�� ||  W 5 Q R X �qq˜dD �]*}td|d�}|t d¡ td|d�k�spt‚|t d¡ td|d�k�s�t‚|t 	dd¡ td|d�k�s²t‚|t 	dd¡ td|d�k�sÔt‚|t
dƒ td|d�k�sòt‚|t
dd� td|d�k�st‚t d¡t d	¡t ¡ t 	dd ¡t
d!d�fD ](}tjt|d�� ||  W 5 Q R X �q>�q>d"D �]0}td#|d�}|t d¡ td$|d�k�s¢t‚|t d%¡ td&|d�k�sÂt‚|t 	d%d ¡ td&|d�k�sät‚|t 	d'd¡ td(|d�k�st‚|t
d)d*� td+|d�k�s&t‚|t
dd,d-� td.|d�k�sHt‚t d¡t d	¡t ¡ t 	d/d¡t
d!d0d1�fD ](}tjt|d�� ||  W 5 Q R X �qv�qpd S )2NrV  rr  rs  rn  rO  r   rk   Z2009r0   ro  r   r   rp  rq  r”   ri   z2010-03rt  rÓ   ru  z
2011-03-27r®   z
2011-03-31ry  rx  rÕ   rõ   rw  rz  r{  rô   r}  r~  r  r€  z2011-03-30 09:00r/   z2011-04-01 06:00r�  z2011-04-01 08:00r‚  rƒ  z2011-04-01 07:00r…  r†  z2011-03-28 06:00r‡  rŒ   rˆ  )rW  r   r   rn   rB   r‰  rŠ  rø   re   rM  r   r   r   r   rm   ro   r¦   )r   r    r   rx   r‹  r!   r!   r"   Útest_sub_offset»  s„    þÿ
û
û
  "" 
û
  " ÿ  ÿ

ûzTestArithmetic.test_sub_offsetr   r%   rv   r    c                 C   sP   t d|d�}t| tkst‚|t tks,t‚t| tks<t‚|t tksLt‚d S )Nr”   r   rš   r›   r!   r!   r"   Útest_period_addsub_nat  s
    z%TestArithmetic.test_period_addsub_natc              	   C   s®   t ddd�}|t ¡  }t ddd�}||ks0t‚|t d¡ }t ddd�}||ksVt‚d}tjt|d�� |t d¡  W 5 Q R X tjt|d�� |t d¡  W 5 Q R X d S )	NrÓ   r   r   rv  rk   ry  z-Input cannot be converted to Period\(freq=D\)r   )r   r   ro   rB   r   r   r   r¦   )r   rx   ry   rz   r    r!   r!   r"   Útest_period_ops_offset  s    z%TestArithmetic.test_period_ops_offset)r°   r±   r²   r   r³   r´   rN  rQ  rT  rU  rX  Zboxesra  rc  rf  rk  r   rn   rp   rm   ZWeekrm  rŒ  r�  rŽ  r�  r!   r!   r!   r"   rJ  ¥  s>   
	

üþ	 Q
rJ  c               	   C   sZ   d} t dƒ}tjt| d�� d|_W 5 Q R X |j}tjt| d�� d| |_W 5 Q R X d S )Nznot writableZ2014Q1r   rd  rk   )r   r   r   ÚAttributeErrorr?   r   )r    rO   r   r!   r!   r"   Útest_period_immutable*  s    r‘  c                  C   s*   t ddƒ} | jdkst‚| jdks&t‚d S )Nz
0001-01-07r   r0   r   )r   r2   rB   r4   )rS  r!   r!   r"   Útest_small_year_parsing7  s    
r’  c                  C   sŽ   dddddddg} t ddd	�}| D ]}t| |¡ƒ q"| D ]&}t d|d	�}t|ƒ |jd
ks:t‚q:t ddd	�}t|ƒ t ddd	�}t|ƒ d S )Nr'   r%   r*   r   r|   r}   r~   rƒ   r`   ró   rT   r×   )r   rè   rX   r2   rB   )r  r   r   r!   r!   r"   Útest_negone_ordinals=  s    r“  c               	   C   s.   d} t jt| d�� tddd� W 5 Q R X d S )Nz3Invalid frequency: <WeekOfMonth: week=0, weekday=0>r   z
2012-01-02zWOM-1MONr   )r   r   r   r   )r    r!   r!   r"   Ú$test_invalid_frequency_error_messageO  s    r”  ),r   r   r   Únumpyre   r   rÈ   Zpandas._libs.tslibsr   r   r4  Zpandas._libs.tslibs.ccalendarr   r   Zpandas._libs.tslibs.np_datetimer	   Zpandas._libs.tslibs.parsingr
   Zpandas._libs.tslibs.periodr   r   Zpandas._libs.tslibs.timezonesr   r   Zpandasr\  r   r   r   r   r   Zpandas._testingZ_testingr·   r   r¶   rï   r3  r7  rJ  r‘  r’  r“  r”  r!   r!   r!   r"   Ú<module>   s@        X  9_   