o
    ŀg#                     @   sf   d dl 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dS )	    N)NaTPeriodPeriodIndex
date_rangeperiod_rangec                   @   s<   e Zd Zdd Zdd Zdd Zdd Zd	d
 Zdd ZdS )TestPeriodRangeKeywordsc                 C   sD   d}t jt|d tddd W d    d S 1 sw   Y  d S )NOOf the three parameters: start, end, and periods, exactly two must be specifiedmatchz2011-1-1z2012-1-1Bpytestraises
ValueErrorr   selfmsg r   a/var/www/html/myenv/lib/python3.10/site-packages/pandas/tests/indexes/period/test_period_range.pytest_required_arguments   s
   "z/TestPeriodRangeKeywords.test_required_argumentsc                 C   sL   t dd}d}tjt|d t|d W d    d S 1 sw   Y  d S )N02-Apr-2005Dr   r	   start)r   r   r   r   r   )r   r   r   r   r   r   test_required_arguments2   s   
"z0TestPeriodRangeKeywords.test_required_arguments2c                 C   s   d}t jt|d tdd W d    n1 sw   Y  t jt|d tdd W d    n1 s5w   Y  t jt|d tdd W d    n1 sQw   Y  t jt|d t  W d    d S 1 slw   Y  d S )Nr   r	   2017Q1r   )end   )periodsr   r   r   r   r   test_required_arguments3    s   "z0TestPeriodRangeKeywords.test_required_arguments3c                 C   sH   d}t jt|d tddddd W d    d S 1 sw   Y  d S )Nr   r	   r   2018Q1   Q)r   r   r   freqr   r   r   r   r    test_required_arguments_too_many2   s
   "z8TestPeriodRangeKeywords.test_required_arguments_too_manyc                 C   s   d}t jt|d ttdd W d    n1 sw   Y  t jt|d ttddd W d    n1 s8w   Y  t jt|d tdtd W d    n1 sUw   Y  t jt|d tdtdd W d    d S 1 stw   Y  d S )Nzstart and end must not be NaTr	   r    r   r   r"   )r   r   r#   r   )r   r   r   r   r   r   r   r   r   test_start_end_non_nat:   s   "z.TestPeriodRangeKeywords.test_start_end_non_natc                 C   sD   d}t jt|d tddd W d    d S 1 sw   Y  d S )Nz!periods must be a number, got foor	   r   foo)r   r   )r   r   	TypeErrorr   r   r   r   r   test_periods_requires_integerG   s   "z5TestPeriodRangeKeywords.test_periods_requires_integerN)	__name__
__module____qualname__r   r   r   r$   r&   r)   r   r   r   r   r      s    	r   c                   @   s>   e Zd Zejdg ddd Zdd Zdd Zd	d
 Z	dS )TestPeriodRangezfreq_offset, freq_period))r   r   )Wr.   )QEr"   )YEYc                 C   s   t dd|dd }t|d t|d }}t|||dd}t|| t|d|dd}t|| t|d|dd}t|| tg |dd	}t|d|dd}t|| t|d|dd}t|| t|||dd}t|| d S )
N
2017-01-01r   r'   r   r   r#   namer   r   r   r#   r4   r   r   r#   r4   r#   r4   r   	to_periodstrr   tmassert_index_equalr   )r   freq_offsetfreq_periodexpectedr   r   resultr   r   r   test_construction_from_stringO   s&   z-TestPeriodRange.test_construction_from_stringc                 C   s   t ddddd }t|d t|d }}t||ddd	}t|| t|dddd}t|| t|dddd
}t|| tg ddd}t|dddd}t|| t|dddd
}t|| t||ddd	}t|| d S )Nr2   r   MEr'   r3   r   r5   Mr6   r7   r8   r9   )r   r@   r   r   rA   r   r   r   %test_construction_from_string_monthlyt   s&   z5TestPeriodRange.test_construction_from_string_monthlyc                 C   sD  t dddt ddd}}tddddd	 }t||d
dd	}t|| t dd
d}t dd
d}tddddd	 }t||ddd	}t|| t ddd}t ddd}t||ddd	}||jk}tg d}t	|| t
g ddd}t|dddd}t|| t|dddd}t|| t||ddd	}t|| d S )Nr   r"   )r#   r    z
2017-03-31z
2018-03-31rC   r'   r6   rD   z2017-1z2019-12z
2017-01-31z
2019-12-31r/   )TTTTTr.   r8   r   r3   r7   )r   r   r:   r   r<   r=   valuesnparrayassert_numpy_array_equalr   )r   r   r   r@   rA   idxr   r   r   test_construction_from_period   s<   
z-TestPeriodRange.test_construction_from_periodc              	   C   s.  d}d}t jt|d tdd}W d    n1 sw   Y  t jt|d tdd}tdd}W d    n1 s<w   Y  d	}tjt|d% t jt|d t||d
 W d    n1 scw   Y  W d    n1 srw   Y  t jt|d t||d
 W d    d S 1 sw   Y  d S )Nz#Period with BDay freq is deprecatedz:'w' is deprecated and will be removed in a future version.r	   z
2006-12-311wr   r   z
2005-05-01z!start and end must have same freqr%   )r<   assert_produces_warningFutureWarningr   r   r   r   r   )r   depr_msgr   end_wstart_bend_br   r   r   %test_mismatched_start_end_freq_raises   s&   
"z5TestPeriodRange.test_mismatched_start_end_freq_raisesN)
r*   r+   r,   r   markparametrizerB   rE   rK   rS   r   r   r   r   r-   N   s    
	&r-   c                   @   sb   e Z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	dS )TestPeriodRangeDisallowedFreqsc                 C   sB   t jtdd tdddd W d    d S 1 sw   Y  d S )NzInvalid frequency: Xr	   z2007-1-1i  Xr   r#   r   )r   r   r   r   test_constructor_U   s   "z1TestPeriodRangeDisallowedFreqs.test_constructor_Uzfreq,freq_depr))2Y2A)rZ   2a)2Y-AUGz2A-AUG)r]   z2A-augc                 C   sj   d|dd   d}d|dd   d t jt|d t|ddd	 W d    d S 1 s.w   Y  d S 
N'   )' is deprecated and will be removed in a future version. Please use '
' instead.r	   z1/1/2001z	12/1/2009)r#   r   r   )r<   rM   rN   r   )r   r#   	freq_deprr   r   r   r   "test_a_deprecated_from_time_series   s
   "zATestPeriodRangeDisallowedFreqs.test_a_deprecated_from_time_seriesrd   )2H2MIN2S2US2NSc                 C   sn   d|dd   d}d|  dd   d tjt|d tdd|d	 W d    d S 1 s0w   Y  d S )
Nr_   r`   ra   rb   rc   r	   z2020-01-01 00:00:00 00:00   rX   )lowerr<   rM   rN   r   r   rd   r   r   r   r   /test_uppercase_freq_deprecated_from_time_series   
   "zNTestPeriodRangeDisallowedFreqs.test_uppercase_freq_deprecated_from_time_series)2mz2q-sep2y2wc                 C   sn   d|dd   d}d|  dd   d tjt|d t|ddd	 W d    d S 1 s0w   Y  d S r^   )upperr<   rM   rN   r   rm   r   r   r   /test_lowercase_freq_deprecated_from_time_series   ro   zNTestPeriodRangeDisallowedFreqs.test_lowercase_freq_deprecated_from_time_seriesN)
r*   r+   r,   rY   r   rT   rU   re   rn   rt   r   r   r   r   rV      s    
	
rV   )numpyrG   r   pandasr   r   r   r   r   pandas._testing_testingr<   r   r-   rV   r   r   r   r   <module>   s    @|