a
    GGb4                     @   s  d dl m Z mZ d dlZd dl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mZmZmZmZ d dlmZ d dlmZ d dlm  mZ d dlm  mZ ejedd	fedd
dfedddfedddfedddfedddfedddfgddd Zdd eD dd dD  g d dd e ddD  d d eD  Z!ej"#d!e!ej"#d"dd#gd$d% Z$d&d' Z%d(d) Z&d*d+ Z'd,d- Z(d.d/ Z)d0d1 Z*d2d3 Z+d4d5 Z,d6d7 Z-d8d9 Z.d:d; Z/ej"#d<e ddd=d> Z0ej"#d?d@dA dBdA gdCdD Z1ej"#dEg dFdGdH Z2ej"#dIe3g dJg dKg dLg dMg dNg dOdP4 dQdR Z5ej"#dSdTdUgdVdWgdXdYggej"#d!g dZd[d\ Z6d]d^ Z7ej"#d_g d`dfg dadbfg dcdbfg dddbfgdedf Z8dgdh Z9didj Z:ej"#dke;dle<dle=dlgdmdn Z>ej"j?e dodpej"#dke@dleAdlgdqdr ZBdsdt ZCdudv ZDej"#dwdldxgdydz ZEd{d| ZFej"#d!ddgd}d~ ZGej"#d!g ddd ZHej"#dejIddA gej"#d!g ddd ZJdd ZKdS )    )datetime	timedeltaN)DAYSMONTHS)INVALID_FREQ_ERR_MSG)is_platform_windows)DatetimeIndexIndexSeries	Timestamp
date_rangeperiod_range)to_datetime   D)ZhoursH)ZminutesT)ZsecondsSnsN)ZmicrosecondsUi  L)paramsc                 C   s   | j S N)Zparam)Zrequest r   Nlib/python3.9/site-packages/pandas/tests/tseries/frequencies/test_inference.pybase_delta_code_pair   s    r   c                 C   s   g | ]}d | qS )Q-r   ).0monthr   r   r   
<listcomp>/       r    c                 C   s$   g | ]}t D ]}| d | qqS )-)r   )r   Zannualr   r   r   r   r    0   r!   )AZBA)MZBMZBMSc                 C   s$   g | ]}t D ]}d | | qqS )zWOM-)r   )r   countdayr   r   r   r    2   r!      c                 C   s   g | ]}d | qS )zW-r   )r   r&   r   r   r   r    3   r!   freqperiods   c                 C   s   |  }td| |d}t|j}|ds@t||jksJ nPt|}|dkoZ|jdv }|dkol|jdv }|dko~|jd	v }|s|s|sJ d S )
N1/1/2000r)   r(   r   Q-DEC)Qr-   zQ-SEPzQ-JUNzQ-MARQ-NOV)r/   zQ-AUGzQ-MAYzQ-FEBQ-OCT)r0   zQ-JULzQ-APRzQ-JAN)upperr   r   values
startswithfrequencies
infer_freqZfreqstr)r)   r(   genindexZinf_freqZis_dec_rangeZis_nov_rangeZis_oct_ranger   r   r   test_infer_freq_range7   s    


r8   c                  C   sN   t dddd} d}tjt|d t|  W d    n1 s@0    Y  d S )Nz1/1/1990   r$   )startr)   r(   6Check the `freq` attribute instead of using infer_freqmatch)r   pytestraises	TypeErrorr4   r5   r7   msgr   r   r   test_raise_if_period_indexY   s    rC   c                  C   sL   t ddg} d}tjt|d t|  W d    n1 s>0    Y  d S )N
12/31/19981/3/1999z(Need at least 3 dates to infer frequencyr<   )r   r>   r?   
ValueErrorr4   r5   rA   r   r   r   test_raise_if_too_fewa   s    rG   c                  C   s"   t g d} t| dksJ d S )N)z
01/01/19991/4/1999z1/5/1999Br   r4   r5   r7   r   r   r   test_business_dailyi   s    rL   c                  C   s"   t g d} t| d u sJ d S )N)rD   rE   rH   rJ   rK   r   r   r   test_business_daily_look_aliken   s    rM   c                  C   s"   t g d} t| dksJ d S N)r+   z1/2/2000z1/3/2000r   rJ   rK   r   r   r   test_day_cornerv   s    rO   c                  C   s"   t g d} t| dksJ d S rN   )r   r4   r5   )datesr   r   r   test_non_datetime_index{   s    rQ   c                  C   s"   t g d} t| d u sJ d S )N)z
2014-03-31z
2014-06-30z
2015-03-30rJ   rK   r   r   r   test_fifth_week_of_month_infer   s    rR   c                  C   s"   t g d} t| dksJ d S )N)z
2013-08-27z
2013-10-01z
2013-10-29z
2013-11-26zWOM-4TUErJ   rK   r   r   r   test_week_of_month_fake   s    rS   c                  C   sB   d} t jt| d tddd W d    n1 s40    Y  d S )NzVOf the four parameters: start, end, periods, and freq, exactly three must be specifiedr<   
2014-01-01zWOM-5MONr(   )r>   r?   rF   r   rB   r   r   r   test_fifth_week_of_month   s    rW   c                  C   s   t g d} | jdksJ d S )N)	1/31/2000z	2/29/2000z	3/31/2000r$   r   inferred_freqrngr   r   r   test_monthly_ambiguous   s    r]   c                  C   s   t g d} | jdksJ d S )NrX   z	1/31/2001z	1/31/2002zA-JANrY   r[   r   r   r   test_annual_ambiguous   s    r_   r%   c                    sh   t t  | \}}|| t fddtdD }|dkrN|d| n|}t||ksdJ d S )Nc                    s   g | ]} |  qS r   r   r   jbZincr   r   r       r!   z)test_infer_freq_delta.<locals>.<listcomp>   r   d)r   r   nowr   ranger4   r5   )r   r%   
base_deltacoder7   Zexp_freqr   rb   r   test_infer_freq_delta   s    rj   constructorc                    s*   t  d  g fddtdD  S )Nr*   c                    s   g | ]} |  qS r   r   r`   deltarf   r   r   r       r!   <lambda>.<locals>.<listcomp>rd   r   rg   rf   rm   r   rl   r   <lambda>   s   $rq   c                    s*   t  fddtdD  d  g S )Nc                    s   g | ]} |  qS r   r   r`   rl   r   r   r       r!   rn   rd   r*   ro   rp   r   rl   r   rq      s   $c                 C   s4   t t }| \}}|||}t|d u s0J d S r   )r   r   rf   r4   r5   )r   rk   rc   rh   _r7   r   r   r   test_infer_freq_custom   s    
rs   zfreq,expected))r.   r-   )r/   r/   )r0   r0   c                 C   s8   t dd| d}t|jdddt}|j|ks4J d S )NZ1959Q2Z2009Q3rU   r   e)Zhow)r   r	   Zto_timestampZastypeobjectrZ   )r(   expectedr\   r   r   r   test_infer_freq_index   s    rw   zexpected,dates)z
2009-01-01z
2010-01-01
2011-01-01z
2012-01-01)z
2009-01-31z
2009-04-30z
2009-07-31z
2009-10-31)z
2010-11-30z
2010-12-31z
2011-01-31z
2011-02-28)z
2010-12-25rx   z
2011-01-08z
2011-01-15)rx   z
2011-01-02z
2011-01-03z
2011-01-04)z2011-12-31 22:00z2011-12-31 23:00z2012-01-01 00:00z2012-01-01 01:00)zAS-JANr0   r$   zW-SATr   r   c                 C   s"   | }t ||d}|j|ksJ d S )N)tzrY   )tz_naive_fixturerv   rP   ry   idxr   r   r   test_infer_freq_tz   s    r|   	date_pairz
2013-11-02z	2013-11-5z
2014-03-08z
2014-03-11rT   z
2014-01-03)r   3HZ10TZ3601SZ3600001LZ3600000001UZ3600000000001Nc                 C   s.   | }t |d |d ||d}|j|ks*J d S )Nr   r   )r(   ry   )r   rZ   )rz   r}   r(   ry   r{   r   r   r   test_infer_freq_tz_transition   s    r   c                  C   s&   t ddddd} | jd u s"J d S )Nz
2013-11-03r'   r~   r,   zAmerica/Chicago)r   Ztz_localizerZ   rK   r   r   r   $test_infer_freq_tz_transition_custom   s    r   zdata,expected)2014-07-01 09:002014-07-01 10:002014-07-01 11:002014-07-01 12:002014-07-01 13:002014-07-01 14:00)r   r   r   r   r   r   z2014-07-01 15:00z2014-07-01 16:00z2014-07-02 09:00z2014-07-02 10:00z2014-07-02 11:00ZBH)2014-07-04 09:002014-07-04 10:002014-07-04 11:002014-07-04 12:002014-07-04 13:002014-07-04 14:002014-07-04 15:002014-07-04 16:002014-07-07 09:002014-07-07 10:002014-07-07 11:00)r   r   r   r   r   r   r   r   r   r   r   z2014-07-07 12:00z2014-07-07 13:00z2014-07-07 14:00z2014-07-07 15:00z2014-07-07 16:00z2014-07-08 09:00z2014-07-08 10:00z2014-07-08 11:00z2014-07-08 12:00z2014-07-08 13:00z2014-07-08 14:00z2014-07-08 15:00z2014-07-08 16:00c                 C   s   t | }|j|ksJ d S r   rY   )datarv   r{   r   r   r   test_infer_freq_business_hour  s    Pr   c                  C   s,   t g d} | d d d } | jdks(J d S )Nr^   z-1A-JANrY   r[   r   r   r   test_not_monotonicU  s    r   c                  C   s0   t g d} |  }t|}|| jks,J d S )Nr^   )r   Zto_pydatetimer4   r5   rZ   )r\   Zvalsresultr   r   r   test_non_datetime_index2\  s    
r   r{   
   c                 C   sJ   d ddg}tjt|d t|  W d    n1 s<0    Y  d S )N|z(cannot infer freq from a non-convertibler;   r<   )joinr>   r?   r@   r4   r5   r{   rB   r   r   r   test_invalid_index_typesd  s    r   zsee gh-10822: Windows issue)reasonc                 C   s@   d}t jt|d t|  W d    n1 s20    Y  d S )NUnknown string formatr<   )r>   r?   rF   r4   r5   r   r   r   r    test_invalid_index_types_unicodes  s    r   c                  C   s0   g d} t | }t t| }||ks,J d S )N)z2004-01z2004-02z2004-03z2004-04)r4   r5   r	   )r   rv   r   r   r   r    test_string_datetime_like_compat  s    
r   c                  C   s(   t tdd} t| }|dks$J d S )N20130101Z20130110r   r
   r   r4   r5   )sinferredr   r   r   test_series  s    
r   endg      $@c                 C   sN   d}t t| }tjt|d t| W d    n1 s@0    Y  d S )N:cannot infer freq from a non-convertible dtype on a Seriesr<   )r
   npZaranger>   r?   r@   r4   r5   )r   rB   r   r   r   r   test_series_invalid_type  s    r   c                  C   sH   d} t jt| d" ttddg W d    n1 s:0    Y  d S )Nr   r<   ZfooZbar)r>   r?   rF   r4   r5   r
   rV   r   r   r    test_series_inconvertible_string  s    r   c                 C   sR   d}t tdd| d}tjt|d t| W d    n1 sD0    Y  d S )Nr   Z2013r   r,   r<   )r
   r   r>   r?   r@   r4   r5   )r(   rB   r   r   r   r   test_series_period_index  s    r   )r$   r   r   c                 C   s,   t tdd| d}t|}|| ks(J d S )Nr   r   r,   r   )r(   r   r   r   r   r   test_series_datetime_index  s    
r   offset_funcc                 C   s   t dd| dS )Nrx   r'   r,   )r   rU   r   r   r   rq     r!   )-ZWEEKDAYZEOMzW@MONzW@TUEzW@WEDzW@THUzW@FRIzW@SATzW@SUNzQ@JANzQ@FEBzQ@MARzA@JANzA@FEBzA@MARzA@APRzA@MAYzA@JUNzA@JULzA@AUGzA@SEPzA@OCTzA@NOVzA@DECzY@JANzWOM@1MONzWOM@2MONzWOM@3MONzWOM@4MONzWOM@1TUEzWOM@2TUEzWOM@3TUEzWOM@4TUEzWOM@1WEDzWOM@2WEDzWOM@3WEDzWOM@4WEDzWOM@1THUzWOM@2THUzWOM@3THUzWOM@4THUzWOM@1FRIzWOM@2FRIzWOM@3FRIzWOM@4FRIc                 C   s:   t jttd | | W d    n1 s,0    Y  d S )Nr<   )r>   r?   rF   r   )r   r(   r   r   r   test_legacy_offset_warnings  s    :r   c                  C   s8   t d} t d}| t ks$J |t ks4J d S )NZmsZMS)r4   _get_offsetoffsetsZMilliZ
MonthBegin)leftrightr   r   r   test_ms_vs_capital_ms  s    

r   )Lr   r   Znumpyr   r>   Zpandas._libs.tslibs.ccalendarr   r   Zpandas._libs.tslibs.periodr   Zpandas.compatr   Zpandasr   r	   r
   r   r   r   Zpandas._testingZ_testingZtmZpandas.core.tools.datetimesr   Zpandas.tseries.frequenciesZtseriesr4   Zpandas.tseries.offsetsr   ZfixtureZtimedelta64r   rg   ZfreqsZmarkZparametrizer8   rC   rG   rL   rM   rO   rQ   rR   rS   rW   r]   r_   rj   rs   rw   listitemsr|   r   r   r   r   r   ZmakeIntIndexZmakeFloatIndexZmakePeriodIndexr   ZskipifZmakeStringIndexZmakeUnicodeIndexr   r   r   r   r   r   r   r   r   r   r   r   r   r   <module>   s   

	 



N




	

2