§
    tŠtjmH  ã                  óv  — d dl mZ d dlmZ d dlZd dlmZ d dlm	Z	 d dl
mZmZmZmZ d dl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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'm(Z( d dl)m*Z*m+Z+ d dl,m-Z- erd dl.m/Z/ d dl0m1Z1m2Z2m3Z3 d dl4m5Z5 g d¢Z6e6D ]Z7eD ]Z8e7› de8› �Z9ee7         ee9<   ŒŒdD ]Z7eD ]Z8e7› de8› �Z:e:ee:<   ŒŒeD ]Z;de;› �ede;› �<   Œd9d„Z< e"d¦  «        d:d „¦   «         Z= G d!„ d"¦  «        Z> G d#„ d$e>¦  «        Z?d;d(„Z@d<d,„ZAd=d-„ZBd=d.„ZCd>d/„ZDd?d2„ZEd@d4„ZFd@d5„ZGd@d6„ZHd@d7„ZIg d8¢ZJdS )Aé    )Ú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)Úbuild_field_sarrayÚmonth_position_check)Ú
DateOffsetÚDayÚ	to_offset)Úget_rule_month)Úcache_readonlyÚ
set_module)Úis_numeric_dtype)Ú
ArrowDtypeÚDatetimeTZDtypeÚPeriodDtype)ÚABCIndexÚ	ABCSeries)Úunique)Únpt)ÚDatetimeIndexÚSeriesÚTimedeltaIndex)ÚDatetimeLikeArrayMixin)ÚQSÚBQEÚBQSÚYSÚBYEÚBYSú-)ÚYÚQúW-Ú
offset_strÚstrÚreturnú
str | Nonec                ó,   — t          j        | d¦  «        S )z4
    Alias to closest period strings BQ->Q etc.
    N)r   Úget)r/   s    úX/var/www/html/CA-Chatbot/venv/lib/python3.11/site-packages/pandas/tseries/frequencies.pyÚget_period_aliasr6   O   s   € õ $Ô'¨
°DÑ9Ô9Ð9ó    ÚpandasÚindexú@DatetimeIndex | TimedeltaIndex | Series | DatetimeLikeArrayMixinc                óp  — ddl m} t          | t          ¦  «        rº| j        }t          | j        t          ¦  «        r<ddl}|j         	                    |j        j
        ¦  «        r|                     ¦   «         }t          j        |j        d¦  «        sAt          |j        t          ¦  «        s'|j        t          k    st!          d| j        › �¦  «        ‚|} t#          | d¦  «        sn‘t          | j        t$          ¦  «        rt!          d¦  «        ‚t          j        | j        d¦  «        r#t'          | ¦  «        }|                     ¦   «         S t+          | j        ¦  «        rt!          d	| j        › �¦  «        ‚t          | |¦  «        s || d
¬¦  «        } t-          | ¦  «        }|                     ¦   «         S )a¬  
    Infer the most likely frequency given the input index.

    This method attempts to deduce the most probable frequency (e.g., 'D' for daily,
    'H' for hourly) from a sequence of datetime-like objects. It is particularly useful
    when the frequency of a time series is not explicitly set or known but can be
    inferred from its values.

    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.

    See Also
    --------
    date_range : Return a fixed frequency DatetimeIndex.
    timedelta_range : Return a fixed frequency TimedeltaIndex with day as the default.
    period_range : Return a fixed frequency PeriodIndex.
    DatetimeIndex.freq : Return the frequency object if it is set, otherwise None.

    Examples
    --------
    >>> idx = pd.date_range(start="2020/12/01", end="2020/12/30", periods=30)
    >>> pd.infer_freq(idx)
    'D'
    r   )r!   NÚ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 F)Úcopy)Úpandas.core.apir!   Ú
isinstancer   Ú_valuesr=   r   ÚpyarrowÚtypesÚis_timestampÚpyarrow_dtypeÚ_to_datetimearrayr   Úis_np_dtyper   ÚobjectÚ	TypeErrorÚhasattrr   Ú_TimedeltaFrequencyInfererÚget_freqr   Ú_FrequencyInferer)r9   r!   ÚvaluesÚpaÚinferers        r5   Ú
infer_freqrR   Z   sÕ  € ðT .Ð-Ð-Ð-Ð-Ð-å�%�Ñ#Ô#ð Ø”ˆå�e”k¥:Ñ.Ô.ð 	4Ø Ð Ð Ð àŒx×$Ò$ V¤\Ô%?Ñ@Ô@ð 4à×1Ò1Ñ3Ô3�õ ŒO˜FœL¨$Ñ/Ô/ð	å˜&œ,­Ñ8Ô8ð	ð Œ|�vÒ%Ð%åð0Ø"'¤+ð0ð 0ñô ð ð ˆõ �5˜'Ñ"Ô"ð 
ØÝ	�E”K¥Ñ	-Ô	-ð 
ÝØXñ
ô 
ð 	
õ 
Œ˜œ cÑ	*Ô	*ð 
å,¨UÑ3Ô3ˆØ×ÒÑ!Ô!Ð!å	˜%œ+Ñ	&Ô	&ð 
ÝØTÀuÄ{ÐTÐTñ
ô 
ð 	
õ �e˜]Ñ+Ô+ð 1Ø�˜e¨%Ð0Ñ0Ô0ˆå Ñ&Ô&€GØ×ÒÑÔÐr7   c                  óR  — e Zd ZdZdd„Zed d„¦   «         Zed d„¦   «         Zed!d	„¦   «         Zed!d
„¦   «         Z	d"d„Z
ed#d„¦   «         Zed#d„¦   «         Zed$d„¦   «         Zed%d„¦   «         Zd"d„Zed d„¦   «         Zed d„¦   «         Zd"d„Zd"d„Zd"d„Zd"d„Zd"d„Zd!d„Zd"d„ZdS )&rN   z8
    Not sure if I can avoid the state machine here
    r1   ÚNonec                óÒ  — || _         |j        | _        t          |t          ¦  «        r$t          |j        j        j        ¦  «        | _	        nt          |j        j        ¦  «        | _	        t          |d¦  «        r-|j        �&t          | j        |j        | j	        ¬¦  «        | _        t          |¦  «        dk     rt          d¦  «        ‚| j         j        p| j         j        | _        d S )NÚtz©Úresoé   z(Need at least 3 dates to infer frequency)r9   Úasi8Úi8valuesrA   r   r   Ú_dataÚ_ndarrayr=   Ú_cresorK   rV   r
   ÚlenÚ
ValueErrorÚ_is_monotonic_increasingÚ_is_monotonic_decreasingÚis_monotonic)Úselfr9   s     r5   Ú__init__z_FrequencyInferer.__init__¹   sÞ   € ØˆŒ
Øœ
ˆŒõ �e�XÑ&Ô&ð 	Dõ .Ø”Ô$Ô*ñô ˆDŒKˆKõ
 .¨e¬nÔ.BÑCÔCˆDŒKõ �5˜$ÑÔð 	ØŒxÐ#Ý 3Ø”M 5¤8°$´+ð!ñ !ô !�”õ ˆu‰:Œ:˜Š>ˆ>ÝÐGÑHÔHÐHð ŒJÔ/ÐV°4´:Ô3Vð 	ÔÐÐr7   únpt.NDArray[np.int64]c                ó*   — t          | j        ¦  «        S ©N)r   r[   ©rd   s    r5   Údeltasz_FrequencyInferer.deltasØ   s   € å˜Tœ]Ñ+Ô+Ð+r7   c                ó4   — t          | j        j        ¦  «        S rh   )r   r9   rZ   ri   s    r5   Údeltas_asi8z_FrequencyInferer.deltas_asi8Ü   s   € õ ˜TœZœ_Ñ-Ô-Ð-r7   Úboolc                ó2   — t          | j        ¦  «        dk    S ©Né   )r_   rj   ri   s    r5   Ú	is_uniquez_FrequencyInferer.is_uniqueâ   s   € å�4”;ÑÔ 1Ò$Ð$r7   c                ó2   — t          | j        ¦  «        dk    S ro   )r_   rl   ri   s    r5   Úis_unique_asi8z _FrequencyInferer.is_unique_asi8æ   s   € å�4Ô#Ñ$Ô$¨Ò)Ð)r7   r2   c                óÂ  — | j         r| j        j        sdS | j        d         }t	          | j        ¦  «        }|r$t          ||¦  «        r|                      ¦   «         S | j        ddgddgg d¢fv rdS | j	        sdS | j
        d         }|dz  }|d	z  }|d	z  }t          ||¦  «        rt          d
||z  ¦  «        S t          ||¦  «        rt          d||z  ¦  «        S t          ||¦  «        rt          d||z  ¦  «        S t          ||dz  ¦  «        rt          d||dz  z  ¦  «        S t          ||dz  ¦  «        rt          d||dz  z  ¦  «        S t          d|¦  «        S )z¨
        Find the appropriate frequency string to describe the inferred
        frequency of self.i8values

        Returns
        -------
        str or None
        Nr   rp   é   éA   )rp   ru   rv   Úbhé   é<   ÚhÚminÚsiè  Úmsi@B ÚusÚns)rc   r9   Ú
_is_uniquerj   r	   r^   Ú_is_multipleÚ_infer_daily_ruleÚhour_deltasrs   rl   Ú_maybe_add_count)rd   ÚdeltaÚppdÚpphÚppmÚppss         r5   rM   z_FrequencyInferer.get_freqê   s«  € ð Ô ð 	¨¬
Ô(=ð 	Ø�4à”˜A”ˆÝ˜dœkÑ*Ô*ˆØð 	,•\ %¨Ñ-Ô-ð 	,Ø×)Ò)Ñ+Ô+Ð+ð Ô  B ¨!¨R¨°+°+°+Ð>Ð>Ð>Ø�4ð
 Ô"ð 	Ø�4àÔ  Ô#ˆØ�R‰iˆØ�R‰iˆØ�R‰iˆÝ˜˜sÑ#Ô#ð 	1å# C¨°©Ñ5Ô5Ð5Ý˜% Ñ%Ô%ð 	1å# E¨5°3©;Ñ7Ô7Ð7Ý˜% Ñ%Ô%ð 	1å# C¨°©Ñ5Ô5Ð5Ý˜% #¨¡+Ñ/Ô/ð 	1å# D¨%°3¸$±;Ñ*?Ñ@Ô@Ð@Ý˜% #¨Ñ"2Ñ4Ô4ð 	1å# D¨%°3¸)Ñ3CÑ*DÑEÔEÐEõ $ D¨%Ñ0Ô0Ð0r7   ú	list[int]c                óR   ‡— t          | j        ¦  «        Šˆfd„| j        D ¦   «         S )Nc                ó   •— g | ]}|‰z  ‘ŒS © r�   )Ú.0Úxr†   s     €r5   ú
<listcomp>z0_FrequencyInferer.day_deltas.<locals>.<listcomp>  ó   ø€ Ð-Ð-Ð-˜A��C‘Ð-Ð-Ð-r7   ©r	   r^   rj   )rd   r†   s    @r5   Ú
day_deltasz_FrequencyInferer.day_deltas  s.   ø€ å˜dœkÑ*Ô*ˆØ-Ð-Ð-Ð- ¤Ð-Ñ-Ô-Ð-r7   c                óX   ‡— t          | j        ¦  «        dz  Šˆfd„| j        D ¦   «         S )Nrx   c                ó   •— g | ]}|‰z  ‘ŒS r�   r�   )rŽ   r�   r‡   s     €r5   r�   z1_FrequencyInferer.hour_deltas.<locals>.<listcomp>$  r‘   r7   r’   )rd   r‡   s    @r5   rƒ   z_FrequencyInferer.hour_deltas!  s3   ø€ å˜dœkÑ*Ô*¨bÑ0ˆØ-Ð-Ð-Ð- ¤Ð-Ñ-Ô-Ð-r7   ú
np.ndarrayc                ó8   — t          | j        | j        ¬¦  «        S )NrW   )r   r[   r^   ri   s    r5   Úfieldsz_FrequencyInferer.fields&  s   € å! $¤-°d´kÐBÑBÔBÐBr7   r   c                óN   — t          | j        d         | j        j        ¬¦  «        S )Nr   )Úunit)r   r[   r9   rš   ri   s    r5   Ú	rep_stampz_FrequencyInferer.rep_stamp*  s    € å˜œ qÔ)°´
´Ð@Ñ@Ô@Ð@r7   c                ó@   — t          | j        | j        j        ¦  «        S rh   )r   r˜   r9   Ú	dayofweekri   s    r5   r   z&_FrequencyInferer.month_position_check.  s   € Ý# D¤K°´Ô1EÑFÔFÐFr7   c                ó‚   — | j         d         dz  | j         d         z   }t          |                     d¦  «        ¦  «        S )Nr,   é   ÚMÚi8)r˜   r   Úastype)rd   Únmonthss     r5   Úmdiffsz_FrequencyInferer.mdiffs1  s9   € à”+˜cÔ" RÑ'¨$¬+°cÔ*:Ñ:ˆÝ˜WŸ^š^¨DÑ1Ô1Ñ2Ô2Ð2r7   c                ó\   — t          | j        d                              d¦  «        ¦  «        S )Nr,   r¡   )r   r˜   r¢   ri   s    r5   Úydiffsz_FrequencyInferer.ydiffs6  s%   € å˜Tœ[¨Ô-×4Ò4°TÑ:Ô:Ñ;Ô;Ð;r7   c                ób  — |                       ¦   «         }|r;| j        d         }t          | j        j                 }|› d|› �}t          ||¦  «        S |                      ¦   «         }|rM| j        d         dz  }ddddœ}t          || j        j        dz                    }|› d|› �}t          ||¦  «        S |                      ¦   «         }|rt          || j        d         ¦  «        S | j	        r|  
                    ¦   «         S |                      ¦   «         rdS |                      ¦   «         }	|	r|	S d S )	Nr   r+   rY   rŸ   é   é
   )r   é   rp   ÚB)Ú_get_annual_ruler¦   r   r›   Úmonthr„   Ú_get_quarterly_ruler¤   Ú_get_monthly_rulerq   Ú_get_daily_ruleÚ_is_business_dailyÚ_get_wom_rule)
rd   Úannual_ruleÚnyearsr­   ÚaliasÚquarterly_ruleÚ	nquartersÚmod_dictÚmonthly_ruleÚwom_rules
             r5   r‚   z#_FrequencyInferer._infer_daily_rule:  sT  € Ø×+Ò+Ñ-Ô-ˆØð 	3Ø”[ ”^ˆFÝ! $¤.Ô"6Ô7ˆEØ"Ð,Ð, UÐ,Ð,ˆEÝ# E¨6Ñ2Ô2Ð2à×1Ò1Ñ3Ô3ˆØð 	6Øœ Aœ¨Ñ*ˆIØ "¨Ð,Ð,ˆHÝ! (¨4¬>Ô+?À!Ñ+CÔ"DÔEˆEØ%Ð/Ð/¨Ð/Ð/ˆEÝ# E¨9Ñ5Ô5Ð5à×-Ò-Ñ/Ô/ˆØð 	BÝ# L°$´+¸a´.ÑAÔAÐAàŒ>ð 	*Ø×'Ò'Ñ)Ô)Ð)à×"Ò"Ñ$Ô$ð 	Ø�3à×%Ò%Ñ'Ô'ˆØð 	ØˆOàˆtr7   c                óô   — t          | j        ¦  «        }| j        d         |z  }|dz  dk    r<t          | j                             ¦   «                  }d|› �}t          ||dz  ¦  «        S t          d|¦  «        S )Nr   é   r.   ÚD)r	   r^   rj   r   r›   Úweekdayr„   )rd   r†   ÚdaysÚwdrµ   s        r5   r°   z!_FrequencyInferer._get_daily_ruleZ  su   € Ý˜dœkÑ*Ô*ˆØŒ{˜1Œ~ Ñ#ˆØ�!‰8�qŠ=ˆ=å ¤× 6Ò 6Ñ 8Ô 8Ô9ˆBØ˜�I�IˆEÝ# E¨4°!©8Ñ4Ô4Ð4å# C¨Ñ.Ô.Ð.r7   c                óô   — t          | j        ¦  «        dk    rd S t          t          | j        d         ¦  «        ¦  «        dk    rd S |                      ¦   «         }|€d S dddddœ                     |¦  «        S )Nrp   r    r(   r*   ÚYEr)   ©ÚcsÚbsÚceÚbe)r_   r¦   r   r˜   r   r4   ©rd   Ú	pos_checks     r5   r¬   z"_FrequencyInferer._get_annual_rulee  s   € ÝˆtŒ{ÑÔ˜aÒÐØ�4å�v�d”k #Ô&Ñ'Ô'Ñ(Ô(¨1Ò,Ð,Ø�4à×-Ò-Ñ/Ô/ˆ	àÐØ�4à e°4¸uÐEÐE×IÒIÈ)ÑTÔTÐTr7   c                óÆ   — t          | j        ¦  «        dk    rd S | j        d         dz  dk    sd S |                      ¦   «         }|€d S dddddœ                     |¦  «        S )	Nrp   r   rY   r%   r'   ÚQEr&   rÃ   ©r_   r¤   r   r4   rÈ   s     r5   r®   z%_FrequencyInferer._get_quarterly_rules  ss   € ÝˆtŒ{ÑÔ˜aÒÐØ�4àŒ{˜1Œ~ Ñ! QÒ&Ð&Ø�4à×-Ò-Ñ/Ô/ˆ	àÐØ�4à e°4¸uÐEÐE×IÒIÈ)ÑTÔTÐTr7   c                óš   — t          | j        ¦  «        dk    rd S |                      ¦   «         }|€d S dddddœ                     |¦  «        S )Nrp   ÚMSÚBMSÚMEÚBMErÃ   rÌ   rÈ   s     r5   r¯   z#_FrequencyInferer._get_monthly_rule�  sX   € ÝˆtŒ{ÑÔ˜aÒÐØ�4Ø×-Ò-Ñ/Ô/ˆ	àÐØ�4à e°4¸uÐEÐE×IÒIÈ)ÑTÔTÐTr7   c                ó¸  — | j         ddgk    rdS | j        d                              ¦   «         }t          j        | j        ¦  «        }t          | j        ¦  «        }t          j        ||¦  «        }t          j	        |t          j
        |¦  «        z   d¦  «        }t          t          j        |dk    |dk    z  |dk    |dk    z  |dk    z  z  ¦  «        ¦  «        S )Nrp   rY   Fr   r¼   é   )r“   r9   r¾   ÚnpÚdiffr[   r	   r^   Úfloor_divideÚmodÚcumsumrm   Úall)rd   Úfirst_weekdayÚshiftsr†   Úweekdayss        r5   r±   z$_FrequencyInferer._is_business_daily‹  sÒ   € àŒ?˜q !˜fÒ$Ð$Ø�5ð œ
 1œ×-Ò-Ñ/Ô/ˆÝ”˜œÑ'Ô'ˆÝ˜dœkÑ*Ô*ˆÝ” ¨Ñ-Ô-ˆÝ”6˜-­"¬)°FÑ*;Ô*;Ñ;¸QÑ?Ô?ˆåÝŒFØ˜a’- F¨a¢KÑ0Ø˜q’L X°¢]Ñ3°vÀ²{ÑCñEñô ñ
ô 
ð 	
r7   c                óN  — t          | j        j        ¦  «        }t          |¦  «        dk    rd S t          | j        j        dz
  dz  ¦  «        }||dk              }t          |¦  «        dk    st          |¦  «        dk    rd S |d         dz   }t
          |d                  }d|› |› �S )Nrp   r¼   rÓ   r   zWOM-)r   r9   r¾   r_   Údayr   )rd   rÜ   Úweek_of_monthsÚweekrÀ   s        r5   r²   z_FrequencyInferer._get_wom_rulež  s°   € Ý˜$œ*Ô,Ñ-Ô-ˆÝˆx‰=Œ=˜1ÒÐØ�4å ¤¤°!Ñ!3¸Ñ 9Ñ:Ô:ˆà'¨¸Ò(:Ô;ˆÝˆ~ÑÔ !Ò#Ð#¥s¨>Ñ':Ô':¸QÒ'>Ð'>Ø�4ð ˜aÔ  1Ñ$ˆÝ˜H QœKÔ(ˆà �dÐ ˜BÐ Ð Ð r7   N)r1   rT   )r1   rf   ©r1   rm   )r1   r2   )r1   rŠ   )r1   r–   )r1   r   )Ú__name__Ú
__module__Ú__qualname__Ú__doc__re   r   rj   rl   rq   rs   rM   r“   rƒ   r˜   r›   r   r¤   r¦   r‚   r°   r¬   r®   r¯   r±   r²   r�   r7   r5   rN   rN   ´   s@  € € € € € ðð ð
ð 
ð 
ð 
ð> ð,ð ,ð ,ñ „^ð,ð ð.ð .ð .ñ „^ð.ð
 ð%ð %ð %ñ „^ð%ð ð*ð *ð *ñ „^ð*ð01ð 01ð 01ð 01ðd ð.ð .ð .ñ „^ð.ð ð.ð .ð .ñ „^ð.ð ðCð Cð Cñ „^ðCð ðAð Að Añ „^ðAðGð Gð Gð Gð ð3ð 3ð 3ñ „^ð3ð ð<ð <ð <ñ „^ð<ðð ð ð ð@	/ð 	/ð 	/ð 	/ðUð Uð Uð UðUð Uð Uð UðUð Uð Uð Uð
ð 
ð 
ð 
ð&!ð !ð !ð !ð !ð !r7   rN   c                  ó   — e Zd Zd„ ZdS )rL   c                ó<   — | j         r|                      ¦   «         S d S rh   )rq   r°   ri   s    r5   r‚   z,_TimedeltaFrequencyInferer._infer_daily_rule±  s(   € ØŒ>ð 	*Ø×'Ò'Ñ)Ô)Ð)ð	*ð 	*r7   N)râ   rã   rä   r‚   r�   r7   r5   rL   rL   °  s#   € € € € € ð*ð *ð *ð *ð *r7   rL   ÚmultÚintrm   c                ó   — | |z  dk    S )Nr   r�   )r~   rè   s     r5   r�   r�   ¶  s   € Ø�‰9˜Š>Ðr7   ÚbaseÚcountÚfloatc                óf   — |dk    r*|t          |¦  «        k    sJ ‚t          |¦  «        }|› | › �S | S ro   )ré   )rë   rì   s     r5   r„   r„   º  sC   € Ø�‚z€zØ�˜E™
œ
Ò"Ð"Ð"Ð"Ý�E‘
”
ˆØÐ˜ÐÐÐàˆr7   c                ó   — |�| €dS t          | ¦  «        } t          |¦  «        }t          |¦  «        r=t          | ¦  «        r*t          t	          | ¦  «        t	          |¦  «        ¦  «        S | dv S t          |¦  «        r| dv S t          |¦  «        r| dv S t          |¦  «        r| |ddddd	d
dddh
v S |dk    r| dv S |dk    r| dv S |dk    r| dv S |dk    r| dv S |d	k    r| dv S |d
k    r| dv S |dk    r| dv S |dk    r| dv S |dk    r| dv S dS )a  
    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
    NF>
   r«   ÚCr½   r    rz   r|   r}   r   r~   r{   >	   r«   rð   r½   rz   r|   r}   r   r~   r{   r½   rð   r«   rz   r{   r|   r}   r~   r   >   r«   rz   r|   r}   r   r~   r{   >   rð   rz   r|   r}   r   r~   r{   >   r½   rz   r|   r}   r   r~   r{   >   rz   r|   r}   r   r~   r{   >   r|   r}   r   r~   r{   >   r|   r}   r   r~   >   r}   r   r~   >   r   r~   >   r   )Ú_maybe_coerce_freqÚ
_is_annualÚ_is_quarterlyÚ_quarter_months_conformr   Ú_is_monthlyÚ
_is_weekly)ÚsourceÚtargets     r5   Úis_subperiodrù   Ç  s©  € ð  €~˜˜ØˆuÝ Ñ'Ô'€FÝ Ñ'Ô'€Få�&ÑÔð Ý˜Ñ Ô ð 	Ý*Ý˜vÑ&Ô&­°vÑ(>Ô(>ñô ð ð ÐPÐPÐPÝ	�vÑ	Ô	ð ØÐPÐPÐPÝ	�VÑ	Ô	ð ØÐKÐKÐKÝ	�FÑ	Ô	ð Ø˜& # s¨C°°e¸SÀ$ÈÈ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ŠˆØ˜ÐÐàˆur7   c                ó†  — |�| €dS t          | ¦  «        } t          |¦  «        }t          | ¦  «        rpt          |¦  «        r t          | ¦  «        t          |¦  «        k    S t          |¦  «        r.t          | ¦  «        }t          |¦  «        }t	          ||¦  «        S |dv S t          | ¦  «        r|dv S t          | ¦  «        r|dv S t          | ¦  «        r|| ddddd	d
dddh
v S | dk    r|dv S | dk    r|dv S | dk    r|dv S | dk    r|dv S | d	k    r|dv S | d
k    r|dv S | dk    r|dv S | dk    r|dv S | dk    r|dv S dS )a  
    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
    NF>
   r«   rð   r½   r    rz   r|   r}   r   r~   r{   >	   r«   rð   r½   rz   r|   r}   r   r~   r{   r½   rð   r«   rz   r{   r|   r}   r~   r   >   rz   r|   r}   r   r~   r{   >   r|   r}   r   r~   r{   >   r|   r}   r   r~   >   r}   r   r~   >   r   r~   >   r   )rñ   rò   r   ró   rô   rõ   rö   )r÷   rø   ÚsmonthÚtmonths       r5   Úis_superperiodrý   þ  sÖ  € ð  €~˜˜ØˆuÝ Ñ'Ô'€FÝ Ñ'Ô'€Få�&ÑÔð "Ý�fÑÔð 	DÝ! &Ñ)Ô)­^¸FÑ-CÔ-CÒCÐCå˜Ñ Ô ð 	;Ý# FÑ+Ô+ˆFÝ# FÑ+Ô+ˆFÝ*¨6°6Ñ:Ô:Ð:ØÐPÐPÐPÝ	�vÑ	Ô	ð ØÐPÐPÐPÝ	�VÑ	Ô	ð ØÐKÐKÐKÝ	�FÑ	Ô	ð Ø˜& # s¨C°°e¸SÀ$ÈÈ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ŠˆØ˜ÐÐàˆur7   c                ó´   — | €J ‚t          | t          ¦  «        r&t          t          | j        ¦  «        ¦  «        j        } | dv r| S |                      ¦   «         S )zÈwe might need to coerce a code to a rule_code
    and uppercase it

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

    Returns
    -------
    str
    N>   rz   r|   r}   r   r~   r{   )rA   r   r   r   ÚnameÚ_freqstrÚupper)Úcodes    r5   rñ   rñ   8  s[   € ð ÐÐÐÝ�$�
Ñ#Ô#ð :Ý�9 T¤YÑ/Ô/Ñ0Ô0Ô9ˆØÐ2Ð2Ð2Øˆà�zŠz‰|Œ|Ðr7   r÷   rø   c                óN   — t           |          }t           |         }|dz  |dz  k    S )NrY   )r   )r÷   rø   ÚsnumÚtnums       r5   rô   rô   N  s)   € Ý˜Ô €DÝ˜Ô €DØ�!‰8�t˜a‘xÒÐr7   Úrulec                ó`   — |                       ¦   «         } | dk    p|                      d¦  «        S )Nr,   zY-©r  Ú
startswith©r  s    r5   rò   rò   T  ó*   € Ø�:Š:‰<Œ<€DØ�3Š;Ð/˜$Ÿ/š/¨$Ñ/Ô/Ð/r7   c                ó`   — |                       ¦   «         } | dk    p|                      d¦  «        S )Nr-   )zQ-ÚBQr  r
  s    r5   ró   ró   Y  s*   € Ø�:Š:‰<Œ<€DØ�3Š;Ð7˜$Ÿ/š/¨,Ñ7Ô7Ð7r7   c                ó2   — |                       ¦   «         } | dv S )N)r    ÚBM)r  r
  s    r5   rõ   rõ   ^  s   € Ø�:Š:‰<Œ<€DØ�;ÐÐr7   c                ó`   — |                       ¦   «         } | dk    p|                      d¦  «        S )NÚWr.   r  r
  s    r5   rö   rö   c  r  r7   )r   r6   rR   rù   rý   r   )r/   r0   r1   r2   )r9   r:   r1   r2   )rè   ré   r1   rm   )rë   r0   rì   rí   r1   r0   rá   )r1   r0   )r÷   r0   rø   r0   r1   rm   )r  r0   r1   rm   )KÚ
__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   Úpandas._libs.tslibs.fieldsr   r   Úpandas._libs.tslibs.offsetsr   r   r   Úpandas._libs.tslibs.parsingr   Úpandas.util._decoratorsr   r   Úpandas.core.dtypes.commonr   Úpandas.core.dtypes.dtypesr   r   r   Úpandas.core.dtypes.genericr   r   Úpandas.core.algorithmsr   Úpandas._typingr    r8   r!   r"   r#   Úpandas.core.arrays.datetimeliker$   Ú_need_suffixÚ_prefixÚ_mÚkeyÚ_aliasÚ_dr6   rR   rN   rL   r�   r„   rù   rý   rñ   rô   rò   ró   rõ   rö   Ú__all__r�   r7   r5   ú<module>r+     sµ  ðØ "Ð "Ð "Ð "Ð "Ð "à  Ð  Ð  Ð  Ð  Ð  à Ð Ð Ð à Ð Ð Ð Ð Ð Ø ,Ð ,Ð ,Ð ,Ð ,Ð ,ðð ð ð ð ð ð ð ð ð ð ð ðð ð ð ð ð ð ð ð ð ð ð ð ð ð @Ð ?Ð ?Ð ?Ð ?Ð ?ðð ð ð ð ð ð ð ðð ð ð ð ð ð ð ð ð ð
 7Ð 6Ð 6Ð 6Ð 6Ð 6ðð ð ð ð ð ð ð ð
 7Ð 6Ð 6Ð 6Ð 6Ð 6ðð ð ð ð ð ð ð ð ð ð
ð ð ð ð ð ð ð ð
 *Ð )Ð )Ð )Ð )Ð )àð GØ"Ð"Ð"Ð"Ð"Ð"ðð ð ð ð ð ð ð ð ð ð
 GÐFÐFÐFÐFÐFð 8Ð7Ð7€àð Jð J€GØð Jð JˆØÐÐ˜2ÐÐˆØ(@ÀÔ(IÐ  Ñ%Ð%ðJð ð 2ð 2€GØð 2ð 2ˆØÐ"Ð"˜bÐ"Ð"ˆØ+1Ð  Ñ(Ð(ð2ð ð 4ð 4€BØ*3¨r¨)¨)Ð˜Y "˜Y˜YÑ'Ð'ð:ð :ð :ð :ð €ˆHÑÔðVð Vð Vñ ÔðVðry!ð y!ð y!ð y!ð y!ñ y!ô y!ð y!ðx*ð *ð *ð *ð *Ð!2ñ *ô *ð *ðð ð ð ðð ð ð ð4ð 4ð 4ð 4ðn7ð 7ð 7ð 7ðtð ð ð ð, ð  ð  ð  ð0ð 0ð 0ð 0ð
8ð 8ð 8ð 8ð
ð ð ð ð
0ð 0ð 0ð 0ð
ð ð €€€r7   