
    MhE                       S SK Jr  S SKJr  S SKrS SKJr  S SKJ	r	  S SK
JrJrJrJr  S SKJrJrJrJrJr  S SKJrJr  S S	KJrJr  S S
KJrJrJr  S SKJ r   S SK!J"r"  S SK#J$r$  S SK%J&r&J'r'  S SK(J)r)J*r*  S SK+J,r,  \(       a  S SK-J.r.  S SK/J0r0J1r1J2r2  S SK3J4r4  / SQr5\5 H  r6\ H  r7\6 S\7 3r8\\6   \\8'   M     M     S H  r6\ H  r7\6 S\7 3r9\9\\9'   M     M     \ H  r:S\: 3\S\: 3'   M     S)S jr;    S*S jr< " S S5      r= " S S\=5      r>S+S jr?S,S jr@S-S  jrAS-S! jrBS.S" jrCS/S# jrDS0S$ jrES0S% jrFS0S& jrGS0S' jrH/ S(QrIg)1    )annotations)TYPE_CHECKINGN)lib)unique_deltas)	Timestampget_unit_from_dtypeperiods_per_daytz_convert_from_utc)DAYSMONTH_ALIASESMONTH_NUMBERSMONTHSint_to_weekday)OFFSET_TO_PERIOD_FREQSTRfreq_to_period_freqstr)build_field_sarraymonth_position_check)
DateOffsetDay	to_offset)get_rule_month)cache_readonly)is_numeric_dtype)DatetimeTZDtypePeriodDtype)ABCIndex	ABCSeries)unique)npt)DatetimeIndexSeriesTimedeltaIndex)DatetimeLikeArrayMixin)QSBQEBQSYSBYEBYS-)YQW-c                0    [         R                  " U S5      $ )z,
Alias to closest period strings BQ->Q etc.
N)r   get)
offset_strs    L/var/www/html/env/lib/python3.13/site-packages/pandas/tseries/frequencies.pyget_period_aliasr2   N   s     $''
D99    c                   SSK Jn  [        U [        5      (       a  U R                  n[
        R                  " UR                  S5      (       dK  [        UR                  [        5      (       d,  UR                  [        :X  d  [        SU R                   35      eUn [        U S5      (       d  O[        U R                  [        5      (       a  [        S5      e[
        R                  " U R                  S5      (       a  [        U 5      nUR                  5       $ [        U R                  5      (       a  [        SU R                   35      e[        X5      (       d  U" U 5      n [!        U 5      nUR                  5       $ )	a  
Infer the most likely frequency given the input index.

Parameters
----------
index : DatetimeIndex, TimedeltaIndex, Series or array-like
  If passed a Series will use the values of the series (NOT THE INDEX).

Returns
-------
str or None
    None if no discernible frequency.

Raises
------
TypeError
    If the index is not datetime-like.
ValueError
    If there are fewer than three values.

Examples
--------
>>> idx = pd.date_range(start='2020/12/01', end='2020/12/30', periods=30)
>>> pd.infer_freq(idx)
'D'
r   )r    mMz>cannot infer freq from a non-convertible dtype on a Series of dtypezJPeriodIndex given. Check the `freq` attribute instead of using infer_freq.mz8cannot infer freq from a non-convertible index of dtype )pandas.core.apir    
isinstancer   _valuesr   is_np_dtyper6   r   object	TypeErrorhasattrr   _TimedeltaFrequencyInfererget_freqr   _FrequencyInferer)indexr    valuesinferers       r1   
infer_freqrE   Y   s5   : .%##OOFLL$//&,,88||v%""'++0   5'""	EKK	-	-+
 	
 
c	*	*,U3!!	%++	&	&Fu{{mT
 	
 e++e$&Gr3   c                  D   \ rS rSrSrSS jr\SS j5       r\SS j5       r\SS j5       r	\SS j5       r
SS jr\SS	 j5       r\SS
 j5       r\SS j5       r\SS j5       rSS jr\SS j5       r\SS j5       rSS jrSS jrSS jrSS jrSS jrSS jrSS jrSrg) rA      z0
Not sure if I can avoid the state machine here
c                >   Xl         UR                  U l        [        U[        5      (       a/  [        UR                  R                  R                  5      U l	        O$[        UR                  R                  5      U l	        [        US5      (       a;  UR                  b.  [        U R                  UR                  U R                  S9U l        [        U5      S:  a  [        S5      eU R                   R                  =(       d    U R                   R                   U l        g )Ntzreso   z(Need at least 3 dates to infer frequency)rB   asi8i8valuesr9   r   r   _data_ndarrayr6   _cresor>   rI   r
   len
ValueError_is_monotonic_increasing_is_monotonic_decreasingis_monotonic)selfrB   s     r1   __init___FrequencyInferer.__init__   s    


 eX&& .$$**DK
 .enn.B.BCDK 5$xx# 3MM588$++! u:>GHH JJ//V4::3V3V 	r3   c                ,    [        U R                  5      $ N)r   rN   rW   s    r1   deltas_FrequencyInferer.deltas   s    T]]++r3   c                @    [        U R                  R                  5      $ r[   )r   rB   rM   r\   s    r1   deltas_asi8_FrequencyInferer.deltas_asi8   s     TZZ__--r3   c                2    [        U R                  5      S:H  $ N   )rR   r]   r\   s    r1   	is_unique_FrequencyInferer.is_unique   s    4;;1$$r3   c                2    [        U R                  5      S:H  $ rc   )rR   r`   r\   s    r1   is_unique_asi8 _FrequencyInferer.is_unique_asi8   s    4##$))r3   c                   U R                   (       a  U R                  R                  (       d  gU R                  S   n[	        U R
                  5      nU(       a   [        X5      (       a  U R                  5       $ U R                  SS/SS// SQ4;   a  gU R                  (       d  gU R                  S   nUS-  nUS	-  nUS	-  n[        X5      (       a  [        S
X-  5      $ [        X5      (       a  [        SX-  5      $ [        X5      (       a  [        SX-  5      $ [        XS-  5      (       a  [        SXS-  -  5      $ [        XS-  5      (       a  [        SXS-  -  5      $ [        SU5      $ )zx
Find the appropriate frequency string to describe the inferred
frequency of self.i8values

Returns
-------
str or None
Nr   rd      A   )rd   rk   rl   bh   <   hminsi  msi@B usns)rV   rB   
_is_uniquer]   r	   rQ   _is_multiple_infer_daily_rulehour_deltasrh   r`   _maybe_add_count)rW   deltappdpphppmppss         r1   r@   _FrequencyInferer.get_freq   sS      

(=(=Adkk*\%--))++ B!R+>>
 ""  #RiRiRi###C55%%%#E5;77%%%#C55%+//#D%$;*?@@%"244#D%)3C*DEE $D%00r3   c                t    [        U R                  5      nU R                   Vs/ s H  o"U-  PM	     sn$ s  snf r[   r	   rQ   r]   )rW   r|   xs      r1   
day_deltas_FrequencyInferer.day_deltas  s.    dkk*!%-AC---s   5c                z    [        U R                  5      S-  nU R                   Vs/ s H  o"U-  PM	     sn$ s  snf )Nrn   r   )rW   r}   r   s      r1   ry   _FrequencyInferer.hour_deltas  s3    dkk*b0!%-AC---s   8c                >    [        U R                  U R                  S9$ )NrJ   )r   rN   rQ   r\   s    r1   fields_FrequencyInferer.fields  s    !$--dkkBBr3   c                X    [        U R                  S   U R                  R                  S9$ )Nr   )unit)r   rN   rB   r   r\   s    r1   	rep_stamp_FrequencyInferer.rep_stamp  s     q)

@@r3   c                V    [        U R                  U R                  R                  5      $ r[   )r   r   rB   	dayofweekr\   s    r1   r   &_FrequencyInferer.month_position_check  s    #DKK1E1EFFr3   c                z    U R                   S   S-  U R                   S   -   n[        UR                  S5      5      $ )Nr+      Mi8)r   r   astype)rW   nmonthss     r1   mdiffs_FrequencyInferer.mdiffs  s7    ++c"R'$++c*::W^^D122r3   c                P    [        U R                  S   R                  S5      5      $ )Nr+   r   )r   r   r   r\   s    r1   ydiffs_FrequencyInferer.ydiffs!  s!    T[[-44T:;;r3   c                r   U R                  5       nU(       a>  U R                  S   n[        U R                  R                     nU SU 3n[        XB5      $ U R                  5       nU(       aL  U R                  S   S-  nSSSS.n[        XpR                  R                  S-        nU SU 3n[        XF5      $ U R                  5       nU(       a  [        XR                  S   5      $ U R                  (       a  U R                  5       $ U R                  5       (       a  gU R                  5       n	U	(       a  U	$ g )	Nr   r*   rL   r      
   )r      rd   B)_get_annual_ruler   r   r   monthrz   _get_quarterly_ruler   _get_monthly_rulere   _get_daily_rule_is_business_daily_get_wom_rule)
rW   annual_rulenyearsr   aliasquarterly_rule	nquartersmod_dictmonthly_rulewom_rules
             r1   rx   #_FrequencyInferer._infer_daily_rule%  s   ++-[[^F!$.."6"67E"m1UG,E#E22113A*I",H!(>>+?+?!+C"DEE%&aw/E#E55--/#L++a.AA>>''))""$$%%'Or3   c                    [        U R                  5      nU R                  S   U-  nUS-  S:X  a4  [        U R                  R                  5          nSU 3n[        XBS-  5      $ [        SU5      $ )Nr      r-   D)r	   rQ   r]   r   r   weekdayrz   )rW   r|   dayswdr   s        r1   r   !_FrequencyInferer._get_daily_ruleE  sk    dkk*{{1~#!8q= 6 6 89BIE#E!844#C..r3   c                    [        U R                  5      S:  a  g [        [        U R                  S   5      5      S:  a  g U R	                  5       nUc  g SSSSS.R                  U5      $ )Nrd   r   r'   r)   YEr(   csbscebe)rR   r   r   r   r   r/   rW   	pos_checks     r1   r   "_FrequencyInferer._get_annual_ruleP  se    t{{avdkk#&'(1,--/	e4uEII)TTr3   c                    [        U R                  5      S:  a  g U R                  S   S-  S:X  d  g U R                  5       nUc  g SSSSS.R                  U5      $ )	Nrd   r   rL   r$   r&   QEr%   r   rR   r   r   r/   r   s     r1   r   %_FrequencyInferer._get_quarterly_rule^  s_    t{{a{{1~!Q&--/	e4uEII)TTr3   c                    [        U R                  5      S:  a  g U R                  5       nUc  g SSSSS.R                  U5      $ )Nrd   MSBMSMEBMEr   r   r   s     r1   r   #_FrequencyInferer._get_monthly_rulel  sG    t{{a--/	e4uEII)TTr3   c                   U R                   SS/:w  a  gU R                  S   R                  5       n[        R                  " U R
                  5      n[        U R                  5      n[        R                  " X#5      n[        R                  " U[        R                  " U5      -   S5      n[        [        R                  " US:H  US:H  -  US:  US:*  -  US:H  -  -  5      5      $ )Nrd   rL   Fr   r      )r   rB   r   npdiffrN   r	   rQ   floor_dividemodcumsumboolall)rW   first_weekdayshiftsr|   weekdayss        r1   r   $_FrequencyInferer._is_business_dailyv  s    ??q!f$ 

1--/'dkk*-66-"))F*;;Q?FFa-FaK0qLX]3v{CE
 	
r3   c                ,   [        U R                  R                  5      n[        U5      S:  a  g [        U R                  R                  S-
  S-  5      nX"S:     n[        U5      S:X  d  [        U5      S:  a  g US   S-   n[
        US      nSU U 3$ )Nrd   r   r   r   zWOM-)r   rB   r   rR   dayr   )rW   r   week_of_monthsweekr   s        r1   r   _FrequencyInferer._get_wom_rule  s    $**,,-x=1!!3 9:'(:;~!#s>':Q'> a 1$HQK(dVB4  r3   )rQ   rN   rB   rV   N)returnNone)r   znpt.NDArray[np.int64]r   r   )r   
str | None)r   z	list[int])r   z
np.ndarray)r   r   )__name__
__module____qualname____firstlineno____doc__rX   r   r]   r`   re   rh   r@   r   ry   r   r   r   r   r   rx   r   r   r   r   r   r   __static_attributes__ r3   r1   rA   rA      s   
> , , . .
 % % * *01d . . . . C C A AG 3 3 < <@	/UUU
&!r3   rA   c                      \ rS rSrS rSrg)r?   i  c                F    U R                   (       a  U R                  5       $ g r[   )re   r   r\   s    r1   rx   ,_TimedeltaFrequencyInferer._infer_daily_rule  s    >>'')) r3   r   N)r   r   r   r   rx   r   r   r3   r1   r?   r?     s    *r3   r?   c                    X-  S:H  $ )Nr   r   )rt   mults     r1   rw   rw     s    9>r3   c                V    US:w  a"  U[        U5      :X  d   e[        U5      nU U  3$ U $ rc   )int)basecounts     r1   rz   rz     s8    zE
"""E
r3   c                   Ub  U c  g[        U 5      n [        U5      n[        U5      (       a3  [        U 5      (       a  [        [	        U 5      [	        U5      5      $ U S;   $ [        U5      (       a  U S;   $ [        U5      (       a  U S;   $ [        U5      (       a  XSSSSSS	S
SS1
;   $ US:X  a  U S;   $ US:X  a  U S;   $ US:X  a  U S;   $ US:X  a  U S;   $ US:X  a  U S;   $ US	:X  a  U S;   $ US
:X  a  U S;   $ US:X  a  U S;   $ US:X  a  U S;   $ g)z
Returns True if downsampling is possible between source and target
frequencies

Parameters
----------
source : str or DateOffset
    Frequency converting from
target : str or DateOffset
    Frequency converting to

Returns
-------
bool
F>
   r   Cr   r   rp   rr   rs   ru   rt   rq   >	   r   r   r   rp   rr   rs   ru   rt   rq   r   r   r   rp   rq   rr   rs   rt   ru   >   r   rp   rr   rs   ru   rt   rq   >   r   rp   rr   rs   ru   rt   rq   >   r   rp   rr   rs   ru   rt   rq   >   rp   rr   rs   ru   rt   rq   >   rr   rs   ru   rt   rq   >   rr   rs   ru   rt   >   rs   ru   rt   >   ru   rt   >   ru   )_maybe_coerce_freq
_is_annual_is_quarterly_quarter_months_conformr   _is_monthly
_is_weekly)sourcetargets     r1   is_subperiodr     sg     ~'F'F&  *v&v(>  PPP	v		PPP	V		KKK	F		#sCeS$dSSS	3AAA	3AAA	3AAA	3<<<	5777	3000	4+++	4%%	4r3   c                n   Ub  U c  g[        U 5      n [        U5      n[        U 5      (       a]  [        U5      (       a  [        U 5      [        U5      :H  $ [        U5      (       a!  [        U 5      n[        U5      n[	        X#5      $ US;   $ [        U 5      (       a  US;   $ [        U 5      (       a  US;   $ [        U 5      (       a  XSSSSSS	S
SS1
;   $ U S:X  a  US;   $ U S:X  a  US;   $ U S:X  a  US;   $ U S:X  a  US;   $ U S:X  a  US;   $ U S	:X  a  US;   $ U S
:X  a  US;   $ U S:X  a  US;   $ U S:X  a  US;   $ g)z
Returns True if upsampling is possible between source and target
frequencies

Parameters
----------
source : str or DateOffset
    Frequency converting from
target : str or DateOffset
    Frequency converting to

Returns
-------
bool
F>
   r   r   r   r   rp   rr   rs   ru   rt   rq   >	   r   r   r   rp   rr   rs   ru   rt   rq   r   r   r   rp   rq   rr   rs   rt   ru   >   rp   rr   rs   ru   rt   rq   >   rr   rs   ru   rt   rq   >   rr   rs   ru   rt   >   rs   ru   rt   >   ru   rt   >   ru   )r   r   r   r   r   r   r   )r   r   smonthtmonths       r1   is_superperiodr    s     ~'F'F&f!&)^F-CCC  #F+F#F+F*6::PPP	v		PPP	V		KKK	F		#sCeS$dSSS	3KKK	3KKK	3KKK	3<<<	5777	3000	4+++	4%%	4r3   c                    U c   e[        U [        5      (       a  [        SU R                  5      n U S;   a  U $ U R	                  5       $ )zwe might need to coerce a code to a rule_code
and uppercase it

Parameters
----------
source : str or DateOffset
    Frequency converting from

Returns
-------
str
rd   >   rp   rr   rs   ru   rt   rq   )r9   r   r   nameupper)codes    r1   r   r   #  sG     $
##%a322zz|r3   c                <    [         U    n[         U   nUS-  US-  :H  $ )NrL   )r   )r   r   snumtnums       r1   r   r   9  s)     D D!8taxr3   c                \    U R                  5       n U S:H  =(       d    U R                  S5      $ )Nr+   zY-r  
startswithrules    r1   r   r   ?  %    ::<D3;/$//$//r3   c                \    U R                  5       n U S:H  =(       d    U R                  S5      $ )Nr,   )zQ-BQr
  r  s    r1   r   r   D  s%    ::<D3;7$//,77r3   c                ,    U R                  5       n U S;   $ )N)r   BM)r  r  s    r1   r   r   I  s    ::<D;r3   c                \    U R                  5       n U S:H  =(       d    U R                  S5      $ )NWr-   r
  r  s    r1   r   r   N  r  r3   )r   r2   rE   r   r  r   )r0   strr   r   )rB   z@DatetimeIndex | TimedeltaIndex | Series | DatetimeLikeArrayMixinr   r   )r   r   r   r   )r   r  r   floatr   r  r   )r   r  )r   r  r   r  r   r   )r  r  r   r   )J
__future__r   typingr   numpyr   pandas._libsr   pandas._libs.algosr   pandas._libs.tslibsr   r   r	   r
   pandas._libs.tslibs.ccalendarr   r   r   r   r   pandas._libs.tslibs.dtypesr   r   pandas._libs.tslibs.fieldsr   r   pandas._libs.tslibs.offsetsr   r   r   pandas._libs.tslibs.parsingr   pandas.util._decoratorsr   pandas.core.dtypes.commonr   pandas.core.dtypes.dtypesr   r   pandas.core.dtypes.genericr   r   pandas.core.algorithmsr   pandas._typingr   pandasr    r!   r"   pandas.core.arrays.datetimeliker#   _need_suffix_prefix_mkey_alias_dr2   rE   rA   r?   rw   rz   r   r  r   r   r   r   r   r   __all__r   r3   r1   <module>r1     sn   "     ,   
 7 2 6
 *" 
 G 8G	2$(@(I %  
 G9AbT"+1 (  
 B,.rd)r"Y' :CKCCLy! y!x*!2 *4n7t, 0
8

0
r3   