U
    sVÞc7  ã                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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 ƒ ddd g 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/d0„ Z+d1d2„ Z,d3d4„ Z-d5d6„ Z.d7d8„ Z/d9d:„ Z0d;d<„ Z1d=d>„ Z2ej% &d?e#d	d"ƒ¡d@dA„ ƒZ3ej% &dBdCdD„ dEdD„ g¡dFdG„ ƒZ4ej% &dHdIdJdKg¡dLdM„ ƒZ5ej% &dNe6dOdPdQdRgdSdTdUdVgdWdXdYdZgd[dQd\d]gdQd^d_d`gdadbdcddgdeœ 7¡ ƒ¡dfdg„ ƒZ8ej% &dhdidjgdkdlgdmdngg¡ej% &d$ddodpdqdrdsdtg¡dudv„ ƒƒZ9dwdx„ Z:ej% &dydzd{d|d}d~dgdfdzd{d|d}d~dd€dd‚dƒd„gd…fd†d‡dˆd‰dŠd‹dŒddŽddgd…fd†d‡dˆd‰dŠd‹dŒddŽddd‘d’d“d”d•d–d—d˜d™dšd›dœdgd…fg¡dždŸ„ ƒZ;d d¡„ Z<d¢d£„ Z=ej% &d¤e >d¥¡e ?d¥¡e @d¥¡g¡d¦d§„ ƒZAej%jBeƒ d¨d©dªd«„ ƒZCd¬d­„ ZDd®d¯„ ZEej% &d°d¥d±g¡d²d³„ ƒZFd´dµ„ ZGej% &d$ddg¡d¶d·„ ƒZHej% &d$dddg¡d¸d¹„ ƒZIej% &dºejJd»dD„ g¡ej% &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ædçdèg-¡dédê„ ƒƒZKdëdì„ ZLdídî„ ZMdïdð„ ZNdS )ñé    )ÚdatetimeÚ	timedeltaN)ÚDAYSÚMONTHS)ÚINVALID_FREQ_ERR_MSG)Úis_platform_windows)ÚDatetimeIndexÚIndexÚSeriesÚ	TimestampÚ
date_rangeÚperiod_range)ÚDatetimeArrayÚTimedeltaArray)Úto_datetimeé   ÚD)ÚhoursÚH)ÚminutesÚT)ÚsecondsÚSÚnsÚN)ÚmicrosecondsÚUiè  ÚL)Úparamsc                 C   s   | j S ©N)Úparam)Úrequest© r"   úS/tmp/pip-unpacked-wheel-xj8nt62q/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>3   s     r(   c                 C   s$   g | ]}t D ]}|› d |› ‘qqS )ú-)r   )r&   Zannualr'   r"   r"   r#   r(   4   s       )ÚAZBAÚMZBMZBMSc                 C   s$   g | ]}t D ]}d |› |› ‘qqS )zWOM-)r   )r&   ÚcountÚdayr"   r"   r#   r(   6   s       é   c                 C   s   g | ]}d |› ‘qS )zW-r"   )r&   r-   r"   r"   r#   r(   7   s     ÚfreqÚperiodsé   c                 C   s”   |  ¡ }td| |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 )
Nú1/1/2000©r0   r/   r%   úQ-DEC)ÚQr4   zQ-SEPzQ-JUNzQ-MARúQ-NOV)r6   zQ-AUGzQ-MAYzQ-FEBúQ-OCT)r7   zQ-JULzQ-APRzQ-JAN)	Úupperr   r   ÚvaluesÚ
startswithÚfrequenciesÚ
infer_freqZfreqstrÚAssertionError)r0   r/   ÚgenÚindexZinf_freqZis_dec_rangeZis_nov_rangeZis_oct_ranger"   r"   r#   Útest_infer_freq_range;   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é   r+   )Ústartr0   r/   ú6Check the `freq` attribute instead of using infer_freq©Úmatch)r   ÚpytestÚraisesÚ	TypeErrorr;   r<   ©r?   Úmsgr"   r"   r#   Útest_raise_if_period_index]   s    rK   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 frequencyrD   )r   rF   rG   Ú
ValueErrorr;   r<   rI   r"   r"   r#   Útest_raise_if_too_fewe   s    rO   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_dailym   s    rT   c                  C   s$   t dddgƒ} t | ¡d ks t‚d S )NrL   rM   rP   rR   rS   r"   r"   r#   Útest_business_daily_look_aliker   s    rU   c                  C   s$   t dddgƒ} t | ¡dks t‚d S ©Nr2   z1/2/2000z1/3/2000r   rR   rS   r"   r"   r#   Útest_day_cornerz   s    rW   c                  C   s$   t dddgƒ} t | ¡dks t‚d S rV   )r   r;   r<   r=   )Údatesr"   r"   r#   Útest_non_datetime_index   s    rY   c                  C   s$   t dddgƒ} t | ¡d ks t‚d S )Nz
2014-03-31z
2014-06-30z
2015-03-30rR   rS   r"   r"   r#   Útest_fifth_week_of_month_infer„   s    rZ   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-4TUErR   rS   r"   r"   r#   Útest_week_of_month_fakeŒ   s    r[   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 specifiedrD   ú
2014-01-01zWOM-5MON©r/   )rF   rG   rN   r   ©rJ   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    re   c                  C   s    t dddgƒ} | jdkst‚d S )Nr`   ú	1/31/2001ú	1/31/2002zA-JANra   rc   r"   r"   r#   Útest_annual_ambiguous¥   s    rh   r,   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"   ©r&   Új©ÚbÚincr"   r#   r(   °   s     z)test_infer_freq_delta.<locals>.<listcomp>é   r   Úd)r   r   Únowr   Úranger;   r<   r=   )r$   r,   Ú
base_deltaÚcoder?   Zexp_freqr"   rk   r#   Útest_infer_freq_deltaª   s    rt   Úconstructorc                    s*   t ˆˆ d  g‡ ‡fdd„tdƒD ƒ ƒS )Nr1   c                    s   g | ]}ˆˆ |  ‘qS r"   r"   ri   ©Údeltarp   r"   r#   r(   º   s     ú<lambda>.<locals>.<listcomp>rn   ©r   rq   ©rp   rw   r"   rv   r#   Ú<lambda>¹   s   $ÿr{   c                    s*   t ‡ ‡fdd„tdƒD ƒˆˆ d  g ƒS )Nc                    s   g | ]}ˆˆ |  ‘qS r"   r"   ri   rv   r"   r#   r(   ½   s     rx   rn   r1   ry   rz   r"   rv   r#   r{   ¼   s   $ÿc                 C   s4   t t ¡ ƒ}| \}}|||ƒ}t |¡d ks0t‚d S r   )r   r   rp   r;   r<   r=   )r$   ru   rl   rr   Ú_r?   r"   r"   r#   Útest_infer_freq_custom¶   s    
r}   zfreq,expected)r5   r4   )r6   r6   )r7   r7   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_timestampÚastypeÚobjectrb   r=   )r/   Úexpectedrd   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-JANr7   r+   zW-SATr   r   c                 C   s"   | }t ||d}|j|kst‚d S )N)Útzra   )Útz_naive_fixturer‚   rX   r…   Úidxr"   r"   r#   Útest_infer_freq_tzÓ   s    rˆ   Ú	date_pairz
2013-11-02z	2013-11-5z
2014-03-08z
2014-03-11r\   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   rb   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Š   r3   zAmerica/Chicago)r   Ztz_localizerb   r=   rS   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 r   ra   )Ú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`   rf   rg   éÿÿÿÿz-1A-JANra   rc   r"   r"   r#   Útest_not_monotonicY  s    r   c                  C   s2   t dddgƒ} |  ¡ }t |¡}|| jks.t‚d S )Nr`   rf   rg   )r   Zto_pydatetimer;   r<   rb   r=   )rd   ÚvalsÚresultr"   r"   r#   Útest_non_datetime_index2`  s    
r“   r‡   é
   c              	   C   s6   d  ddg¡}tjt|d t | ¡ W 5 Q R X d S )Nú|z(cannot infer freq from a non-convertiblerC   rD   )ÚjoinrF   rG   rH   r;   r<   )r‡   rJ   r"   r"   r#   Útest_invalid_index_typesh  s    þÿr—   zsee gh-10822: Windows issue)Úreasonc               	   C   s2   d} t jt| d t t d¡¡ W 5 Q R X d S )NúUnknown string formatrD   r”   )rF   rG   rN   r;   r<   ÚtmZmakeStringIndexr^   r"   r"   r#   Ú test_invalid_index_types_unicodew  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 SeriesrD   )r
   ÚnpÚarangerF   rG   rH   r;   r<   )r¢   rJ   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™   rD   ZfooÚbar)rF   rG   rN   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”   r3   rD   )r
   r   rF   rG   rH   r;   r<   )r/   rJ   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”   r3   rž   )r/   rŸ   r    r"   r"   r#   Útest_series_datetime_index±  s    
rª   Úoffset_funcc                 C   s   t dd| dS )Nr„   r.   r3   )r   r]   r"   r"   r#   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 5 Q R X d S )NrD   )rF   rG   rN   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³   c                	   C   s0   t  t¡ tjtddddd W 5 Q R X d S )Niæ  rn   )r0   F)Úwarn)rš   Zassert_produces_warningÚFutureWarningr;   r<   r   r"   r"   r"   r#   Útest_infer_freq_warn_deprecatedþ  s    r¶   c                  C   sr   t  d¡ t j¡ d¡} tj| | jd}t 	|¡}|dks>t
‚|  d¡}tj||jd}t 	|¡}|dksnt
‚d S )Nr”   zM8[s])Údtyper   zm8[ms]r   )r¤   r¥   r€   Zint64Úviewr   Z_simple_newr·   r;   r<   r=   r   )ZarrZdtaÚresZarr2ZtdaZres2r"   r"   r#   Útest_infer_freq_non_nano  s    


rº   )Or   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_testingrš   Zpandas.core.arraysr   r   Zpandas.core.tools.datetimesr   Zpandas.tseries.frequenciesZtseriesr;   Zpandas.tseries.offsetsr°   ZfixtureZtimedelta64r$   rq   ZfreqsÚmarkZparametrizer@   rK   rO   rT   rU   rW   rY   rZ   r[   r_   re   rh   rt   r}   rƒ   ÚlistÚitemsrˆ   r‹   rŒ   rŽ   r   r“   ZmakeIntIndexZmakeFloatIndexZmakePeriodIndexr—   Zskipifr›   rœ   r¡   r¦   r¨   r©   rª   r¯   r­   r³   r¶   rº   r"   r"   r"   r#   Ú<module>   sØ   
ùÿ
ÿþýüÿ	 
üþ
 ÿ





üúÿþ
ýþ ÿú÷õòõòèåÓþN
 ÿ




	

þþÓþ2