3
š…±bÝ7  ã            0   @   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jZd dlmZ d dljjZd dljj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j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j1j2d@dAdB„ dCdB„ gƒdDdE„ ƒZ3dFdG„ Z4dHdI„ Z5ej1j2dJdKdLdMgƒdNdO„ ƒZ6dPdQ„ Z7ej1j2dRdSdTgƒdUdV„ ƒZ8ej1j2dWdýdþdÿgƒd\d]„ ƒZ9ej1j2d^e:d_d`dadbgdcdddedfgdgdhdidjgdkdadldmgdadndodpgdqdrdsdtgduœj;ƒ ƒƒdvdw„ ƒZ<ej1j2dxdydzgd{d|gd}d~ggƒej1j2dJdd€d�d‚dƒd„gƒd…d†„ ƒƒZ=d‡dˆ„ Z>ej1j2d‰dŠd‹dŒd�dŽd�gdfdŠd‹dŒd�dŽd�d�d‘d’d“d”gd•fd–d—d˜d™dšd›dœd�dždŸd gd•fd–d—d˜d™dšd›dœd�dždŸd d¡d¢d£d¤d¥d¦d§d¨d©dªd«d¬d­gd•fgƒd®d¯„ ƒZ?d°d±„ Z@d²d³„ ZAej1j2d´ejBdµƒejCdµƒejDdµƒgƒd¶d·„ ƒZEej1jFeƒ d¸d¹�ej1j2d´ejGdµƒejHdµƒgƒdºd»„ ƒƒZId¼d½„ ZJd¾d¿„ ZKej1j2dÀdµdÁgƒdÂdÃ„ ƒZLdÄdÅ„ ZMej1j2dJddgƒdÆdÇ„ ƒZNej1j2dJdKddgƒdÈdÉ„ ƒZOej1j2dÊejPdËdB„ gƒej1j2dJdÌdÍdÎdÏdÐdÑdÒdÓdÔdÕdÖd×dØdÙdÚdÛdÜdÝdÞdßdàdádâdãdädådædçdèdédêdëdìdídîdïdðdñdòdódôdõdöd÷døg-ƒdùdú„ ƒƒZQdûdü„ 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”   |j ƒ }t| ||d�}t|jƒ}|jdƒs@tj|ƒ|jks�t‚nPtj|ƒ}|dkoZ|jdk}|dkol|jdk}|dko~|jdk}|s�|s�|s�t‚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ÚfreqzQ-úQ-DECÚQúQ-SEPúQ-JUNúQ-MARúQ-NOVúQ-AUGúQ-MAYúQ-FEBúQ-OCTúQ-JULúQ-APRúQ-JANN)r   r   r   r   r   )r   r   r   r   )r   r   r   r   )	Ú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'   úQ/tmp/pip-build-1cvk89zm/pandas/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_pair>   s    r:   é   é   é   c             C   s   | j S )N)r8   )r9   r'   r'   r(   ÚcountM   s    r>   c             C   s   | j S )N)r8   )r9   r'   r'   r(   ÚdayR   s    r?   c             C   s   | j S )N)r8   )r9   r'   r'   r(   ÚmonthW   s    r@   é   é   c             C   s   | j S )N)r8   )r9   r'   r'   r(   r   \   s    r   c           	   C   s:   t dddd�} d}tjt|d�� tj| ƒ W d 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_indexa   s    rJ   c           	   C   s8   t ddgƒ} d}tjt|d�� tj| ƒ W d Q R X d S )Nz
12/31/1998z1/3/1999z(Need at least 3 dates to infer frequency)rE   )r   rF   rG   Ú
ValueErrorr!   r"   )r&   rI   r'   r'   r(   Útest_raise_if_too_fewi   s    rL   c              C   s$   t dddgƒ} tj| ƒdks t‚d S )Nz
01/01/1999z1/4/1999z1/5/1999ÚB)r   r!   r"   r#   )r&   r'   r'   r(   Útest_business_dailyq   s    rN   c              C   s$   t dddgƒ} tj| ƒd ks t‚d S )Nz
12/31/1998z1/3/1999z1/4/1999)r   r!   r"   r#   )r&   r'   r'   r(   Útest_business_daily_look_alikev   s    rO   c              C   s$   t dddgƒ} tj| ƒdks t‚d S )Nz1/1/2000z1/2/2000z1/3/2000r+   )r   r!   r"   r#   )r&   r'   r'   r(   Útest_day_corner~   s    rP   c              C   s$   t dddgƒ} tj| ƒdks t‚d S )Nz1/1/2000z1/2/2000z1/3/2000r+   )r   r!   r"   r#   )Údatesr'   r'   r(   Útest_non_datetime_indexƒ   s    rR   c              C   s$   t dddgƒ} tj| ƒd ks t‚d S )Nz
2014-03-31z
2014-06-30z
2015-03-30)r   r!   r"   r#   )r&   r'   r'   r(   Útest_fifth_week_of_month_inferˆ   s    rS   c              C   s&   t ddddgƒ} tj| ƒdks"t‚d S )Nz
2013-08-27z
2013-10-01z
2013-10-29z
2013-11-26zWOM-4TUE)r   r!   r"   r#   )r&   r'   r'   r(   Útest_week_of_month_fake�   s    rT   c              C   s.   d} t jt| d�� tddd� W d Q R X d S )NzVOf the four parameters: start, end, periods, and freq, exactly three must be specified)rE   z
2014-01-01zWOM-5MON)r   )rF   rG   rK   r   )rI   r'   r'   r(   Útest_fifth_week_of_month—   s    rU   c              C   s    t dddgƒ} | jdkst‚d S )Nz	1/31/2000z	2/29/2000z	3/31/2000rD   )r   Úinferred_freqr#   )Úrngr'   r'   r(   Útest_monthly_ambiguous¤   s    rX   c              C   s    t dddgƒ} | jdkst‚d S )Nz	1/31/2000z	1/31/2001z	1/31/2002zA-JAN)r   rV   r#   )rW   r'   r'   r(   Útest_annual_ambiguous©   s    rY   c                sh   t tjƒ ƒ‰ | \}}|| ‰t‡ ‡fdd„tdƒD ƒƒ}|dkrN|d›|› �n|}tj|ƒ|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>r<   r*   Úd)r   r   Únowr   Úranger!   r"   r#   )r:   r>   Ú
base_deltaÚcoder&   Zexp_freqr'   )r\   r]   r(   Útest_infer_freq_delta®   s    rd   Úconstructorc                s*   t ˆˆ d  g‡ ‡fdd„tdƒD ƒ ƒS )NrB   c                s   g | ]}ˆˆ |  ‘qS r'   r'   )rZ   r[   )Údeltar`   r'   r(   r^   ½   s    z<lambda>.<locals>.<listcomp>r<   )r   ra   )r`   rf   r'   )rf   r`   r(   Ú<lambda>¼   s   rg   c                s*   t ‡ ‡fdd„tdƒD ƒˆˆ d  g ƒS )Nc                s   g | ]}ˆˆ |  ‘qS r'   r'   )rZ   r[   )rf   r`   r'   r(   r^   À   s    z<lambda>.<locals>.<listcomp>r<   rB   )r   ra   )r`   rf   r'   )rf   r`   r(   rg   ¿   s   c             C   s4   t tjƒ ƒ}| \}}|||ƒ}tj|ƒd ks0t‚d S )N)r   r   r`   r!   r"   r#   )r:   re   r\   rb   Ú_r&   r'   r'   r(   Útest_infer_freq_custom¹   s    
ri   c             C   s   t d| d|› �ƒ d S )Nz1/1/2000zW-)r)   )r   r?   r'   r'   r(   Útest_weekly_inferÌ   s    rj   c             C   s   t d| d|› |› �ƒ d S )Nz1/1/2000zWOM-)r)   )r   r?   r>   r'   r'   r(   Útest_week_of_month_inferÐ   s    rk   r   rD   ZBMZBMSc             C   s   t d| dƒ d S )Nz1/1/2000rD   )r)   )r   r   r'   r'   r(   Útest_monthly_inferÔ   s    rl   c             C   s   t d|d| › �ƒ d S )Nz1/1/2000zQ-)r)   )r@   r   r'   r'   r(   Útest_quarterly_inferÙ   s    rm   ÚannualÚAZBAc             C   s   t d||› d| › �ƒ d S )Nz1/1/2000ú-)r)   )r@   r   rn   r'   r'   r(   Útest_annually_inferÝ   s    rq   zfreq,expectedr   úQ-DECúQ-NOVúQ-OCTc             C   s8   t dd| d�}t|jddd�jtƒƒ}|j|ks4t‚d S )NZ1959Q2Z2009Q3)r   r+   Úe)Úhow)r   r	   Zto_timestampZastypeÚobjectrV   r#   )r   ÚexpectedrW   r'   r'   r(   Útest_infer_freq_indexâ   s    ry   zexpected,datesz
2009-01-01z
2010-01-01z
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-JANzQ-OCTrD   zW-SATr+   r-   c             C   s"   | }t ||d�}|j|kst‚d S )N)Útz)r   rV   r#   )Útz_naive_fixturerx   rQ   rz   Úidxr'   r'   r(   Útest_infer_freq_tzì   s    r}   Ú	date_pairz
2013-11-02z	2013-11-5z
2014-03-08z
2014-03-11z
2014-01-01z
2014-01-03Ú3HZ10TZ3601SZ3600001LZ3600000001UZ3600000000001Nc             C   s.   | }t |d |d ||d�}|j|ks*t‚d S )Nr   r*   )r   rz   )r   rV   r#   )r{   r~   r   rz   r|   r'   r'   r(   Útest_infer_freq_tz_transition  s    r€   c              C   s&   t dddd�jdƒ} | jd ks"t‚d S )Nz
2013-11-03rA   r   )r   r   zAmerica/Chicago)r   Ztz_localizerV   r#   )r&   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 )N)r   rV   r#   )Údatarx   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 )Nz	1/31/2000z	1/31/2001z	1/31/2002r*   z-1A-JANéÿÿÿÿ)r   rV   r#   )rW   r'   r'   r(   Útest_not_monotonicr  s    r…   c              C   s2   t dddgƒ} | jƒ }tj|ƒ}|| jks.t‚d S )Nz	1/31/2000z	1/31/2001z	1/31/2002)r   Zto_pydatetimer!   r"   rV   r#   )rW   ÚvalsÚresultr'   r'   r(   Útest_non_datetime_index2y  s    
rˆ   r|   é
   c          	   C   s,   d}t jt|d�� tj| ƒ W d Q R X d S )Nzc(cannot infer freq from a non-convertible)|(Check the `freq` attribute instead of using infer_freq))rE   )rF   rG   rH   r!   r"   )r|   rI   r'   r'   r(   Útest_invalid_index_types�  s    rŠ   zsee gh-10822: Windows issue)Úreasonc          	   C   s,   d}t jt|d�� tj| ƒ W d Q R X d S )NzUnknown string format)rE   )rF   rG   rK   r!   r"   )r|   rI   r'   r'   r(   Ú test_invalid_index_types_unicodeŽ  s    rŒ   c              C   s4   ddddg} t j| ƒ}t jt| ƒƒ}||ks0t‚d S )Nz2004-01z2004-02z2004-03z2004-04)r!   r"   r	   r#   )r‚   rx   r‡   r'   r'   r(   Ú test_string_datetime_like_compatš  s    
r�   c              C   s(   t tddƒƒ} tj| ƒ}|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j| ƒƒ}tjt|d�� tj|ƒ W d Q R X d S )Nz:cannot infer freq from a non-convertible dtype on a Series)rE   )r
   ÚnpZarangerF   rG   rH   r!   r"   )r’   rI   r�   r'   r'   r(   Útest_series_invalid_type«  s    r”   c              C   s4   d} t jt| d�� tjtddgƒƒ W d Q R X d S )NzUnknown string format)rE   ZfooÚbar)rF   rG   rK   r!   r"   r
   )rI   r'   r'   r(   Ú test_series_inconvertible_stringµ  s    r–   c          	   C   s>   d}t tdd| d�ƒ}tjt|d�� tj|ƒ W d Q R X d S )Nz:cannot infer freq from a non-convertible dtype on a SeriesZ2013r‰   )r   r   )rE   )r
   r   rF   rG   rH   r!   r"   )r   rI   r�   r'   r'   r(   Útest_series_period_index½  s    r—   c             C   s,   t tdd| d�ƒ}tj|ƒ}|| ks(t‚d S )NrŽ   r‰   )r   r   )r
   r   r!   r"   r#   )r   r�   r�   r'   r'   r(   Útest_series_datetime_indexÉ  s    
r˜   Úoffset_funcc             C   s   t dd| d�S )Nz
2011-01-01rA   )r   r   )r   )r   r'   r'   r(   rg   Ô  s    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 Q R X d S )N)rE   )rF   rG   rK   r   )r™   r   r'   r'   r(   Útest_legacy_offset_warningsÐ  s    :rš   c              C   s8   t jdƒ} t jdƒ}| tjƒ ks$t‚|tjƒ 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    )r   rr   )rs   rs   )rt   rt   )Sr   r   Znumpyr“   rF   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timedelta64r:   r>   r?   r@   r   rJ   rL   rN   rO   rP   rR   rS   rT   rU   rX   rY   rd   ÚmarkZparametrizeri   rj   rk   rl   rm   rq   ry   Ú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>   sx   
,
	





	
((


