U
    f/e8                  1   @   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 dd	 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 ejd
dddgddd Z!ejedd d! Z"ejedd"d# Z#ejd$d%gd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.d<d= Z/d>d? Z0ej12d@dAdB dCdB gdDdE Z3dFdG Z4dHdI Z5ej12dJdKdLdMgdNdO Z6dPdQ Z7ej12dRdSdTgdUdV Z8ej12dWdXdYdZgd[d\ Z9ej12d]e:d^d_d`dagdbdcdddegdfdgdhdigdjd`dkdlgd`dmdndogdpdqdrdsgdt; dudv Z<ej12dwdxdygdzd{gd|d}ggej12dJdd~dddddgdd Z=dd Z>ej12dddddddgdfdddddddddddgdfdddddddddddgdfddddddddddddddddddddddddgdfgdd Z?dd Z@dd ZAej12deBdeCdeDdgdd ZEej1jFe ddej12deGdeHdgdd ZIdd ZJdd ZKej12dddgdd ZLddĄ ZMej12dJddgddƄ ZNej12dJdKddgddȄ ZOej12dejPddB gej12dJdddddddddddddddddddddddddddddddddddddddddddddg-dd ZQdd ZRdS )    )datetime	timedeltaN)DAYSMONTHS)INVALID_FREQ_ERR_MSG)is_platform_windows)DatetimeIndexIndexSeries	Timestamp
date_rangeperiod_range)to_datetimec           	      C   s   |  }t| ||d}t|j}|ds@t||jkstnPt|}|dkoZ|jdk}|dkol|jdk}|dko~|jdk}|s|s|std	S )
z
    Check the range generated from a given start, frequency, and period count.

    Parameters
    ----------
    start : str
        The start date.
    periods : int
        The number of periods.
    freq : str
        The frequency of the range.
    periodsfreqQ-Q-DEC)Qr   zQ-SEPzQ-JUNzQ-MARQ-NOV)r   zQ-AUGzQ-MAYzQ-FEBQ-OCT)r   zQ-JULzQ-APRzQ-JANN)	upperr   r   values
startswithfrequencies
infer_freqZfreqstrAssertionError)	startr   r   genindexZinf_freqZis_dec_rangeZis_nov_rangeZis_oct_range r    S/tmp/pip-unpacked-wheel-tiezk1ph/pandas/tests/tseries/frequencies/test_inference.py_check_generated_range   s    


r"      D)hoursH)minutesT)secondsSnsN)microsecondsUi  L)paramsc                 C   s   | j S Nparamrequestr    r    r!   base_delta_code_pairK   s    r6            c                 C   s   | j S r1   r2   r4   r    r    r!   countZ   s    r:   c                 C   s   | j S r1   r2   r4   r    r    r!   day_   s    r;   c                 C   s   | j S r1   r2   r4   r    r    r!   monthd   s    r<         c                 C   s   | j S r1   r2   r4   r    r    r!   r   i   s    r   c               	   C   s:   t dddd} d}tjt|d t|  W 5 Q R X d S )Nz1/1/1990   M)r   r   r   z6Check the `freq` attribute instead of using infer_freqmatch)r   pytestraises	TypeErrorr   r   r   msgr    r    r!   test_raise_if_period_indexn   s    rH   c               	   C   s8   t ddg} d}tjt|d t|  W 5 Q R X d S )N
12/31/19981/3/1999z(Need at least 3 dates to infer frequencyrA   )r   rC   rD   
ValueErrorr   r   rF   r    r    r!   test_raise_if_too_fewv   s    rL   c                  C   s$   t dddg} t| dks td S )Nz
01/01/19991/4/1999z1/5/1999Br   r   r   r   r   r    r    r!   test_business_daily~   s    rQ   c                  C   s$   t dddg} t| d ks td S )NrI   rJ   rM   rO   rP   r    r    r!   test_business_daily_look_alike   s    rR   c                  C   s$   t dddg} t| dks td S N1/1/2000z1/2/2000z1/3/2000r$   rO   rP   r    r    r!   test_day_corner   s    rU   c                  C   s$   t dddg} t| dks td S rS   )r   r   r   r   )datesr    r    r!   test_non_datetime_index   s    rW   c                  C   s$   t dddg} t| d ks td S )Nz
2014-03-31z
2014-06-30z
2015-03-30rO   rP   r    r    r!   test_fifth_week_of_month_infer   s    rX   c                  C   s&   t ddddg} t| dks"td S )Nz
2013-08-27z
2013-10-01z
2013-10-29z
2013-11-26zWOM-4TUErO   rP   r    r    r!   test_week_of_month_fake   s    rY   c               	   C   s.   d} t jt| d tddd W 5 Q R X d S )NzVOf the four parameters: start, end, periods, and freq, exactly three must be specifiedrA   
2014-01-01zWOM-5MONr   )rC   rD   rK   r   rG   r    r    r!   test_fifth_week_of_month   s    r]   c                  C   s    t dddg} | jdkstd S )N	1/31/2000z	2/29/2000z	3/31/2000r@   r   inferred_freqr   rngr    r    r!   test_monthly_ambiguous   s    rc   c                  C   s    t dddg} | jdkstd S )Nr^   	1/31/2001	1/31/2002zA-JANr_   ra   r    r    r!   test_annual_ambiguous   s    rf   c                    sh   t t  | \}}|| t fddtdD }|dkrN|d| n|}t||ksdtd S )Nc                    s   g | ]} |  qS r    r    .0jbincr    r!   
<listcomp>   s     z)test_infer_freq_delta.<locals>.<listcomp>r8   r#   d)r   r   nowr   ranger   r   r   )r6   r:   
base_deltacoder   Zexp_freqr    rj   r!   test_infer_freq_delta   s    rs   constructorc                    s*   t  d  g fddtdD  S )Nr>   c                    s   g | ]} |  qS r    r    rg   deltaro   r    r!   rm      s     <lambda>.<locals>.<listcomp>r8   r   rp   ro   rv   r    ru   r!   <lambda>   s   $rz   c                    s*   t  fddtdD  d  g S )Nc                    s   g | ]} |  qS r    r    rg   ru   r    r!   rm      s     rw   r8   r>   rx   ry   r    ru   r!   rz      s   $c                 C   s4   t t }| \}}|||}t|d ks0td S r1   )r   r   ro   r   r   r   )r6   rt   rk   rq   _r   r    r    r!   test_infer_freq_custom   s    
r|   c                 C   s   t d| d|  d S )NrT   zW-r"   )r   r;   r    r    r!   test_weekly_infer   s    r~   c                 C   s   t d| d| |  d S )NrT   zWOM-r}   )r   r;   r:   r    r    r!   test_week_of_month_infer   s    r   r   r@   ZBMZBMSc                 C   s   t d| d d S )NrT   r@   r}   r   r    r    r!   test_monthly_infer   s    r   c                 C   s   t d|d|   d S )NrT   r   r}   )r<   r   r    r    r!   test_quarterly_infer   s    r   annualAZBAc                 C   s   t d|| d|   d S )NrT   -r}   )r<   r   r   r    r    r!   test_annually_infer   s    r   zfreq,expected)r   r   )r   r   )r   r   c                 C   s8   t dd| d}t|jdddt}|j|ks4td S )NZ1959Q2Z2009Q3r[   r$   e)how)r   r	   Zto_timestampZastypeobjectr`   r   )r   expectedrb   r    r    r!   test_infer_freq_index   s    r   zexpected,datesz
2009-01-01z
2010-01-01
2011-01-01z
2012-01-01z
2009-01-31z
2009-04-30z
2009-07-31z
2009-10-31z
2010-11-30z
2010-12-31z
2011-01-31z
2011-02-28z
2010-12-25z
2011-01-08z
2011-01-15z
2011-01-02z
2011-01-03z
2011-01-04z2011-12-31 22:00z2011-12-31 23:00z2012-01-01 00:00z2012-01-01 01:00)zAS-JANr   r@   zW-SATr$   r&   c                 C   s"   | }t ||d}|j|kstd S )N)tzr_   )tz_naive_fixturer   rV   r   idxr    r    r!   test_infer_freq_tz   s    r   	date_pairz
2013-11-02z	2013-11-5z
2014-03-08z
2014-03-11rZ   z
2014-01-033HZ10TZ3601SZ3600001LZ3600000001UZ3600000000001Nc                 C   s.   | }t |d |d ||d}|j|ks*td S )Nr   r#   )r   r   )r   r`   r   )r   r   r   r   r   r    r    r!   test_infer_freq_tz_transition  s    r   c                  C   s&   t ddddd} | jd ks"td S )Nz
2013-11-03r=   r   r   zAmerica/Chicago)r   Ztz_localizer`   r   rP   r    r    r!   $test_infer_freq_tz_transition_custom$  s    r   zdata,expectedz2014-07-01 09:00z2014-07-01 10:00z2014-07-01 11:00z2014-07-01 12:00z2014-07-01 13:00z2014-07-01 14:00z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BHz2014-07-04 09:00z2014-07-04 10:00z2014-07-04 11:00z2014-07-04 12:00z2014-07-04 13:00z2014-07-04 14:00z2014-07-04 15:00z2014-07-04 16:00z2014-07-07 09:00z2014-07-07 10:00z2014-07-07 11:00z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td S r1   r_   )datar   r   r    r    r!   test_infer_freq_business_hour+  s    Pr   c                  C   s.   t dddg} | d d d } | jdks*td S )Nr^   rd   re   z-1A-JANr_   ra   r    r    r!   test_not_monotonic  s    r   c                  C   s2   t dddg} |  }t|}|| jks.td S )Nr^   rd   re   )r   Zto_pydatetimer   r   r`   r   )rb   valsresultr    r    r!   test_non_datetime_index2  s    
r   r   
   c              	   C   s,   d}t jt|d t|  W 5 Q R X d S )Nzc(cannot infer freq from a non-convertible)|(Check the `freq` attribute instead of using infer_freq)rA   )rC   rD   rE   r   r   r   rG   r    r    r!   test_invalid_index_types  s    r   zsee gh-10822: Windows issue)reasonc              	   C   s,   d}t jt|d t|  W 5 Q R X d S )NUnknown string formatrA   )rC   rD   rK   r   r   r   r    r    r!    test_invalid_index_types_unicode  s    r   c                  C   s4   ddddg} t | }t t| }||ks0td S )Nz2004-01z2004-02z2004-03z2004-04)r   r   r	   r   )r   r   r   r    r    r!    test_string_datetime_like_compat  s    
r   c                  C   s(   t tdd} t| }|dks$td S )N20130101Z20130110r$   r
   r   r   r   r   )sinferredr    r    r!   test_series  s    
r   endg      $@c              	   C   s:   d}t t| }tjt|d t| W 5 Q R X d S )N:cannot infer freq from a non-convertible dtype on a SeriesrA   )r
   npZarangerC   rD   rE   r   r   )r   rG   r   r    r    r!   test_series_invalid_type  s    r   c               	   C   s4   d} t jt| d ttddg W 5 Q R X d S )Nr   rA   Zfoobar)rC   rD   rK   r   r   r
   r\   r    r    r!    test_series_inconvertible_string  s    r   c              	   C   s>   d}t tdd| d}tjt|d t| W 5 Q R X d S )Nr   Z2013r   r   rA   )r
   r   rC   rD   rE   r   r   )r   rG   r   r    r    r!   test_series_period_index  s    r   c                 C   s,   t tdd| d}t|}|| ks(t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 )Nr   r=   r   )r   r[   r    r    r!   rz         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 5 Q R X d S )NrA   )rC   rD   rK   r   )r   r   r    r    r!   test_legacy_offset_warnings  s    :r   c                  C   s8   t d} t d}| t ks$t|t ks4td S )NmsZMS)r   _get_offsetoffsetsZMillir   Z
MonthBegin)leftrightr    r    r!   test_ms_vs_capital_ms  s    

r   )Sr   r   Znumpyr   rC   Zpandas._libs.tslibs.ccalendarr   r   Zpandas._libs.tslibs.periodr   Zpandas.compatr   Zpandasr   r	   r
   r   r   r   Zpandas._testingZ_testingtmZpandas.core.tools.datetimesr   Zpandas.tseries.frequenciesZtseriesr   Zpandas.tseries.offsetsr   r"   ZfixtureZtimedelta64r6   r:   r;   r<   r   rH   rL   rQ   rR   rU   rW   rX   rY   r]   rc   rf   rs   markZparametrizer|   r~   r   r   r   r   r   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