o
    թZh;                     @   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 d dlmZ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Z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,d0d1 Z-d2d3 Z.d4d5 Z/d6d7 Z0d8d9 Z1d:d; Z2d<d= Z3ej&'d>e$dd!d?d@ Z4ej&'dAdBdC dDdC gdEdF Z5ej&'dGg dHdIdJ Z6ej&'dKe7g dLg dMg dNg dOg dPg dQdR8 ej&'dSg dTdUdV Z9dWdX Z:ej&'dYdZd[gd\d]gd^d_ggej&'d#g d`dadb Z;dcdd Z<ej&'deg dfdfg dgdhfg didhfg djdhfgdkdl Z=dmdn Z>dodp Z?ej&'dqee@d!ejAdree@d!ejBdredsd!dted!gdudv ZCej&jDe dwdxdydz ZEd{d| ZFd}d~ ZGej&'dddgdd ZHdd ZIej&'d#ddgdd ZJej&'d#g ddd ZKej&'de	ddC gej&'d#g ddd ZLdd ZMdd ZNdd ZOdS )    )datetime	timedeltaN)DAYSMONTHS)_get_offset)INVALID_FREQ_ERR_MSG)is_platform_windows)DatetimeIndexIndex
RangeIndexSeries	Timestamp
date_rangeperiod_range)DatetimeArrayTimedeltaArray)to_datetime)frequenciesoffsets   D)hoursh)minutesmin)secondssns)microsecondsusi  ms)paramsc                 C   s   | j S N)param)request r%   f/var/www/html/lang_env/lib/python3.10/site-packages/pandas/tests/tseries/frequencies/test_inference.pybase_delta_code_pair'   s   r'   c                 C      g | ]}d | qS )QE-r%   ).0monthr%   r%   r&   
<listcomp>7       r,   c                 C   s$   g | ]}t D ]	}| d | qqS )-)r   )r*   Zannualr+   r%   r%   r&   r,   8      $ )ZYEZBYE)MEZBMEZBMSc                 C   s$   g | ]}t D ]	}d | | qqS )zWOM-)r   )r*   countdayr%   r%   r&   r,   :   r/      c                 C   r(   )zW-r%   )r*   r2   r%   r%   r&   r,   ;   r-   freqperiods   c                 C   s   |  }td| |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 )
N1/1/2000r5   r4   r)   QE-DEC)ZQEr9   zQE-SEPzQE-JUNzQE-MARQE-NOV)r:   zQE-AUGzQE-MAYzQE-FEBQE-OCT)r;   zQE-JULzQE-APRzQE-JAN)upperr   r	   values
startswithr   
infer_freqZfreqstr)r5   r4   genindexZinf_freqZis_dec_rangeZis_nov_rangeZis_oct_ranger%   r%   r&   test_infer_freq_range?   s   


rB   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)startr5   r4   6Check the `freq` attribute instead of using infer_freqmatch)r   pytestraises	TypeErrorr   r?   rA   msgr%   r%   r&   test_raise_if_period_indexa   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_fewi   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?   rA   r%   r%   r&   test_business_dailyq      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_alikev      r[   c                  C   rS   N)r7   z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   r`   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\   ra   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   rb   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r4   )rI   rJ   rQ   r   rM   r%   r%   r&   test_fifth_week_of_month   s
   "rf   c                  C      t g d} | jdksJ d S )N)	1/31/2000z	2/29/2000z	3/31/2000r0   r	   inferred_freqrngr%   r%   r&   test_monthly_ambiguous      rm   c                  C   rg   )Nrh   z	1/31/2001z	1/31/2002zYE-JANri   rk   r%   r%   r&   test_annual_ambiguous   rn   rp   r1   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%   r*   jbincr%   r&   r,          z)test_infer_freq_delta.<locals>.<listcomp>   r   d)r   r   nowr	   ranger   r?   )r'   r1   
base_deltacoderA   Zexp_freqr%   rs   r&   test_infer_freq_delta   s   r}   constructorc                    s*   t  d  g fddtdD  S )Nr6   c                       g | ]} |  qS r%   r%   rq   deltary   r%   r&   r,      rv   <lambda>.<locals>.<listcomp>rw   r	   rz   ry   r   r%   r   r&   <lambda>       $r   c                    s*   t  fddtdD  d  g S )Nc                    r   r%   r%   rq   r   r%   r&   r,      rv   r   rw   r6   r   r   r%   r   r&   r      r   c                 C   s4   t t }| \}}|||}t|d u sJ d S r"   )r   r   ry   r   r?   )r'   r~   rt   r{   _rA   r%   r%   r&   test_infer_freq_custom   s   
r   zfreq,expected))Qr9   )zQ-NOVr:   )zQ-OCTr;   c                 C   sf   t dd| d}tjtdd t|jdddt}W d    n1 s%w   Y  |j|ks1J d S )	NZ1959Q2Z2009Q3rd   zDtype inferencerG   r   e)how)	r   tmZassert_produces_warningFutureWarningr
   Zto_timestampastypeobjectrj   )r4   expectedrl   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YS-JANr;   r0   zW-SATr   r   unit)r   r    r   r   c                 C   s(   | }t ||d|}|j|ksJ d S )Ntz)r	   as_unitrj   )tz_naive_fixturer   r_   r   r   idxr%   r%   r&   test_infer_freq_tz   s   r   c                 C   s<   | }t dd|d}| jdd}t|}|dksJ d S )Nz
2021-01-01z
2021-01-04r   T)Zdropr   )r   Z	to_seriesZreset_indexr   r?   )r   r   r   Zseriesrj   r%   r%   r&   test_infer_freq_tz_series   s
   
r   	date_pairz
2013-11-02z	2013-11-5z
2014-03-08z
2014-03-11rc   z
2014-01-03)r   3hZ10minZ3601sZ	3600001msZ3600000001usZ3600000000001nsc                 C   s.   | }t |d |d ||d}|j|ksJ d S )Nr   r   )r4   r   )r   rj   )r   r   r4   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-03r3   r   r8   zAmerica/Chicago)r   Ztz_localizerj   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: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"   ri   )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 )Nro   z-1YE-JANri   rk   r%   r%   r&   test_not_monotonici  s   r   c                  C   s0   t g d} |  }t|}|| jksJ d S )Nro   )r	   Zto_pydatetimer   r?   rj   )rl   valsresultr%   r%   r&   test_non_datetime_index2p  s   
r   r   dtypez
2020-01-01)r5   c                 C   sL   d ddg}tjt|d t|  W d    d S 1 sw   Y  d S )N|z(cannot infer freq from a non-convertiblerF   rG   )joinrI   rJ   rK   r   r?   )r   rM   r%   r%   r&   test_invalid_index_typesx  s   "r   zsee gh-10822: Windows issue)reasonc                  C   sH   d} t jt| d ttdg W d    d S 1 sw   Y  d S )NUnknown datetime string formatrG   Z
ZqgszYBfuL)rI   rJ   rQ   r   r?   r
   re   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20130101Z20130110r   r   r   r   r?   )r   inferredr%   r%   r&   test_series  s   
r   end
   g      $@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   s   | r'd}t jt|d ttddg W d    d S 1 s w   Y  d S d}t jt|d ttddg W d    d S 1 sEw   Y  d S )Nzcannot infer freq fromrG   Zfoobarr   )rI   rJ   rK   r   r?   r   rQ   )Zusing_infer_stringrM   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   Z2013r   r8   rG   )r   r   rI   rJ   rK   r   r?   )r4   rM   r   r%   r%   r&   test_series_period_index  s
   "r   )r0   r    r   c                 C   s,   t tdd| d}t|}|| ksJ d S )Nr   r   r8   r   )r4   r   r   r%   r%   r&   test_series_datetime_index  s   
r   offset_funcc                 C   s   t dd| dS )Nr   r3   r8   )r   rd   r%   r%   r&   r     s    )-ZWEEKDAYZEOMzW@MONzW@TUEzW@WEDzW@THUzW@FRIzW@SATzW@SUNzQE@JANzQE@FEBzQE@MARYE@JANzYE@FEBzYE@MARzYE@APRzYE@MAYzYE@JUNzYE@JULzYE@AUGzYE@SEPzYE@OCTzYE@NOVzYE@DECr   z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   r4   r%   r%   r&   test_legacy_offset_warnings  s   :
"r   c                  C   s4   t d} t d}| t ksJ |t ksJ d S )Nr    ZMS)r   r   ZMilliZ
MonthBegin)leftrightr%   r%   r&   test_ms_vs_capital_ms  s   r   c                  C   sr   t dt jd} tj| | jd}t	|}|dksJ | d}t
j||jd}t	|}|dks7J d S )Nr   zM8[s]r   r   zm8[ms]r    )r   r   r   int64viewr   Z_simple_newr   r   r?   r   )ZarrdtaresZarr2ZtdaZres2r%   r%   r&   test_infer_freq_non_nano  s   


r   c                 C   s:   | }t ddd|d}|jd}t|}|dksJ d S )Nz
2016-01-01im  rU   )r5   r4   r   r   )r   _datar   r   r?   )Ztz_aware_fixturer   Zdtir   r   r%   r%   r&    test_infer_freq_non_nano_tzaware'  s
   
r   )Pr   r   numpyr   rI   Zpandas._libs.tslibs.ccalendarr   r   Zpandas._libs.tslibs.offsetsr   Zpandas._libs.tslibs.periodr   Zpandas.compatr   Zpandasr	   r
   r   r   r   r   r   Zpandas._testingZ_testingr   Zpandas.core.arraysr   r   Zpandas.core.tools.datetimesr   Zpandas.tseriesr   r   ZfixtureZtimedelta64r'   rz   ZfreqsmarkZparametrizerB   rN   rR   rX   r[   r^   r`   ra   rb   rf   rm   rp   r}   r   r   listitemsr   r   r   r   r   r   r   r   r   Zfloat64r   Zskipifr   r   r   r   r   r   r   r   r   r   r   r%   r%   r%   r&   <module>   s   $	

	 


	
N

	



	

2