o
    g8                     @   s2  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g d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(d.d/ Z)d0d1 Z*d2d3 Z+d4d5 Z,d6d7 Z-d8d9 Z.d:d; Z/d<d= Z0ej12d>d?d@ dAd@ gdBdC Z3dDdE Z4dFdG Z5ej12dHg dIdJdK Z6dLdM Z7ej12dNdOdPgdQdR Z8ej12dSg dTdUdV Z9ej12dWe:g dXg dYg dZg d[g d\g d]d^; d_d` Z<ej12dadbdcgdddegdfdgggej12dHg dhdidj Z=dkdl Z>ej12dmg dndfg dodpfg dqdpfg drdpfgdsdt Z?dudv Z@dwdx ZAej12dyeBdzeCdzeDdzgd{d| ZEej1jFe d}d~ej12dyeGdzeHdzgdd ZIdd ZJdd ZKej12ddzdgdd ZLdd ZMej12dHddgdd ZNej12dHg ddd ZOej12dejPdd@ gej12dHg d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sJ d	S t|}|dko.|jdv }|dko7|jdv }|dko@|jdv }|sI|sK|sMJ d	S d	S 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_freqfreqstr)	startr   r   genindexinf_freqis_dec_rangeis_nov_rangeis_oct_range r$   m/home/ubuntu/cloudmapper/venv/lib/python3.10/site-packages/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      | j S Nparamrequestr$   r$   r%   base_delta_code_pairK   s   r;   )r'            c                 C   r5   r6   r7   r9   r$   r$   r%   countZ      r?   c                 C   r5   r6   r7   r9   r$   r$   r%   day_   r@   rA   c                 C   r5   r6   r7   r9   r$   r$   r%   monthd   r@   rB         c                 C   r5   r6   r7   r9   r$   r$   r%   r   i   r@   r   c                  C   sP   t dddd} d}tjt|d t|  W d    d S 1 s!w   Y  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
   "rN   c                  C   sN   t ddg} d}tjt|d t|  W d    d S 1 s w   Y  d S )N
12/31/19981/3/1999z(Need at least 3 dates to infer frequencyrG   )r   rI   rJ   
ValueErrorr   r   rL   r$   r$   r%   test_raise_if_too_fewv   s
   "rR   c                  C   "   t g d} t| dksJ d S )N)z
01/01/19991/4/1999z1/5/1999Br   r   r   r   r$   r$   r%   test_business_daily~      rX   c                  C   "   t g d} t| d u sJ d S )N)rO   rP   rT   rV   rW   r$   r$   r%   test_business_daily_look_alike      r[   c                  C   rS   N)1/1/2000z1/2/2000z1/3/2000r(   rV   rW   r$   r$   r%   test_day_corner   rY   r_   c                  C   rS   r]   )r   r   r   )datesr$   r$   r%   test_non_datetime_index   rY   ra   c                  C   rZ   )N)z
2014-03-31z
2014-06-30z
2015-03-30rV   rW   r$   r$   r%   test_fifth_week_of_month_infer   r\   rb   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-4TUErV   rW   r$   r$   r%   test_week_of_month_fake   s   rc   c                  C   sD   d} t jt| d tddd W d    d S 1 sw   Y  d S )NzVOf the four parameters: start, end, periods, and freq, exactly three must be specifiedrG   
2014-01-01zWOM-5MONr   )rI   rJ   rQ   r   rM   r$   r$   r%   test_fifth_week_of_month   s
   "rg   c                  C      t g d} | jdksJ d S )N)	1/31/2000z	2/29/2000z	3/31/2000rF   r   inferred_freqrngr$   r$   r%   test_monthly_ambiguous      rn   c                  C   rh   )Nri   z	1/31/2001z	1/31/2002zA-JANrj   rl   r$   r$   r%   test_annual_ambiguous   ro   rq   c                    sh   t t  | \}}|| t fddtdD }|dkr'|d| n|}t||ks2J d S )Nc                    s   g | ]} |  qS r$   r$   .0jbincr$   r%   
<listcomp>       z)test_infer_freq_delta.<locals>.<listcomp>r=   r'   d)r   r   nowr   ranger   r   )r;   r?   
base_deltacoder   exp_freqr$   ru   r%   test_infer_freq_delta   s   r   constructorc                    s*   t  d  g fddtdD  S )NrD   c                       g | ]} |  qS r$   r$   rr   deltar{   r$   r%   rx      ry   <lambda>.<locals>.<listcomp>r=   r   r|   r{   r   r$   r   r%   <lambda>       $r   c                    s*   t  fddtdD  d  g S )Nc                    r   r$   r$   rr   r   r$   r%   rx      ry   r   r=   rD   r   r   r$   r   r%   r      r   c                 C   s4   t t }| \}}|||}t|d u sJ d S r6   )r   r   r{   r   r   )r;   r   rv   r}   _r   r$   r$   r%   test_infer_freq_custom   s   
r   c                 C   s   t d| d|  d S )Nr^   zW-r&   )r   rA   r$   r$   r%   test_weekly_infer      r   c                 C   s   t d| d| |  d S )Nr^   zWOM-r   )r   rA   r?   r$   r$   r%   test_week_of_month_infer   s   r   r   )rF   BMBMSc                 C   s   t d| d d S )Nr^   rF   r   r   r$   r$   r%   test_monthly_infer   s   r   c                 C   s   t d|d|   d S )Nr^   r   r   )rB   r   r$   r$   r%   test_quarterly_infer   r   r   annualABAc                 C   s   t d|| d|   d S )Nr^   -r   )rB   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sJ d S )N1959Q22009Q3re   r(   e)how)r   r	   to_timestampastypeobjectrk   )r   expectedrm   r$   r$   r%   test_infer_freq_index   s   r   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-25r   z
2011-01-08z
2011-01-15)r   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-JANr   rF   zW-SATr(   r*   c                 C   s"   | }t ||d}|j|ksJ d S )N)tzrj   )tz_naive_fixturer   r`   r   idxr$   r$   r%   test_infer_freq_tz   s   r   	date_pairz
2013-11-02z	2013-11-5z
2014-03-08z
2014-03-11rd   z
2014-01-03)r*   3H10T3601S3600001L3600000001U3600000000001Nc                 C   s.   | }t |d |d ||d}|j|ksJ d S )Nr   r'   )r   r   )r   rk   )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 u sJ d S )Nz
2013-11-03rC   r   r   zAmerica/Chicago)r   tz_localizerk   rW   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:00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 r6   rj   )datar   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 )Nrp   z-1A-JANrj   rl   r$   r$   r%   test_not_monotonic  s   r   c                  C   s0   t g d} |  }t|}|| jksJ d S )Nrp   )r   to_pydatetimer   r   rk   )rm   valsresultr$   r$   r%   test_non_datetime_index2  s   
r   r   
   c                 C   B   d}t jt|d t|  W d    d S 1 sw   Y  d S )Nzc(cannot infer freq from a non-convertible)|(Check the `freq` attribute instead of using infer_freq)rG   )rI   rJ   rK   r   r   r   rM   r$   r$   r%   test_invalid_index_types  s
   "r   zsee gh-10822: Windows issue)reasonc                 C   r   )NUnknown string formatrG   )rI   rJ   rQ   r   r   r   r$   r$   r%    test_invalid_index_types_unicode  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)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J d S )N2013010120130110r(   r
   r   r   r   )sinferredr$   r$   r%   test_series  s   
r   endg      $@c                 C   sP   d}t t| }tjt|d t| W d    d S 1 s!w   Y  d S )N:cannot infer freq from a non-convertible dtype on a SeriesrG   )r
   nparangerI   rJ   rK   r   r   )r   rM   r   r$   r$   r%   test_series_invalid_type  s
   "r   c                  C   sJ   d} t jt| d ttddg W d    d S 1 sw   Y  d S )Nr   rG   foobar)rI   rJ   rQ   r   r   r
   rf   r$   r$   r%    test_series_inconvertible_string  s   "r   c                 C   sT   d}t tdd| d}tjt|d t| W d    d S 1 s#w   Y  d S )Nr   2013r   r   rG   )r
   r   rI   rJ   rK   r   r   )r   rM   r   r$   r$   r%   test_series_period_index  s
   "r   )rF   r3   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 )Nr   rC   r   )r   re   r$   r$   r%   r     s    )-WEEKDAY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    d S 1 sw   Y  d S )NrG   )rI   rJ   rQ   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sJ d S )NmsMS)r   _get_offsetoffsetsMilli
MonthBegin)leftrightr$   r$   r%   test_ms_vs_capital_ms  s   

r   )Sr   r   numpyr   rI   pandas._libs.tslibs.ccalendarr   r   pandas._libs.tslibs.periodr   pandas.compatr   pandasr   r	   r
   r   r   r   pandas._testing_testingtmpandas.core.tools.datetimesr   pandas.tseries.frequenciestseriesr   pandas.tseries.offsetsr   r&   fixturetimedelta64r;   r?   rA   rB   r   rN   rR   rX   r[   r_   ra   rb   rc   rg   rn   rq   r   markparametrizer   r   r   r   r   r   r   listitemsr   r   r   r   r   r   makeIntIndexmakeFloatIndexmakePeriodIndexr   skipifmakeStringIndexmakeUnicodeIndexr   r   r   r   r   r   r   r   r   r   r$   r$   r$   r%   <module>   s    ,













N




	

2