Ë
    u™ãj¿T  ã                  ó  — d dl mZ d dlmZ d dlZd dl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 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mZmZ d dlm Z  d dl!m"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- d dl.m/Z/m0Z0 erd dl1m2Z2 d dl3m4Z4m5Z5m6Z6 d dl7m8Z8 d*d„Z9	 d+	 	 	 	 	 	 	 d,d„Z:	 	 	 	 d-d„Z; e%d«      	 	 	 	 d.d„«       Z< G d„ d«      Z= G d„ de=«      Z>d/d„Z?d0d „Z@d1d!„ZAd1d"„ZBd2d#„ZCd3d$„ZDd4d%„ZEd4d&„ZFd4d'„ZGd4d(„ZHg d)¢ZIy)5é    )Úannotations)ÚTYPE_CHECKINGN)Úusing_infer_freq_offset)Úlib)Úunique_deltas)Ú	TimestampÚget_unit_from_dtypeÚperiods_per_dayÚtz_convert_from_utc)ÚMONTH_ALIASESÚMONTH_NUMBERSÚint_to_weekday)ÚOFFSET_TO_PERIOD_FREQSTR)Úbuild_field_sarrayÚmonth_position_check)Ú
BaseOffsetÚDayÚ	to_offset)Úget_rule_month)ÚPandas4Warning)Úcache_readonlyÚ
set_module)Úfind_stack_level)Úis_numeric_dtype)Ú
ArrowDtypeÚDatetimeTZDtypeÚPeriodDtype)ÚABCIndexÚ	ABCSeries)Únpt)ÚDatetimeIndexÚSeriesÚTimedeltaIndex)ÚDatetimeLikeArrayMixinc                ó.   — t        j                  | d«      S )z4
    Alias to closest period strings BQ->Q etc.
    N)r   Úget)Ú
offset_strs    úe/var/www/html/python-recuperauto-other/env/lib/python3.12/site-packages/pandas/tseries/frequencies.pyÚget_period_aliasr)   A   s   € ô $×'Ñ'¨
°DÓ9Ð9ó    c                ó    — | €yt        «       }|du rt        | «      S |€/t        j                  d|› d|xs |› d�t        t        «       ¬«       | S )a=  
    Implement the GH#55504 deprecation of inferred frequencies being returned
    as strings rather than BaseOffset objects.

    Parameters
    ----------
    freq_str : str or None
        The inferred frequency, as returned by infer_freq_str.
    caller : str
        User-facing name of the attribute or function being called, used in
        the warning message.
    expr : str, optional
        Expression the user can append ``.freqstr`` to in order to keep the
        string result. Defaults to `caller`.

    Returns
    -------
    str, BaseOffset, or None
    NTzTA future version of pandas will return a BaseOffset object instead of a string from zÊ. Use pd.set_option('future.infer_freq_returns_offset', True) to get the future behavior, or set to False to keep the old behavior and silence this warning. To preserve the string representation, use ``z.freqstr``.)Ú
stacklevel)r   r   ÚwarningsÚwarnr   r   )Úfreq_strÚcallerÚexprÚopts       r(   Úmaybe_convert_inferred_freqr3   H   so   € ð, Ðð ä
!Ó
#€CØ
ˆd�{Ü˜Ó"Ð"Ø
€{Ü�‰ð(Ø(. xð 0%ð &*¢^¨VÐ$4°KðAô Ü'Ó)õ		
ð €Or*   c                ód  — ddl m} t        | t        «      rÐ| j                  }t        | j
                  t        «      rCddl}|j                  j                  |j
                  j                  «      r|j                  «       }t        j                  |j
                  d«      sEt        |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'        | «      }|j)                  «       S t+        | j
                  «      rt!        d	| j
                  › �«      ‚t        | |«      s
 || d
¬«      } t-        | «      }|j)                  «       S )zj
    Internal version of infer_freq that returns a string without
    emitting a deprecation warning.
    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   Ú_valuesr6   r   ÚpyarrowÚtypesÚis_timestampÚpyarrow_dtypeÚ_to_datetimearrayr   Úis_np_dtyper   ÚobjectÚ	TypeErrorÚhasattrr   Ú_TimedeltaFrequencyInfererÚget_freqr   Ú_FrequencyInferer)Úindexr!   ÚvaluesÚpaÚinferers        r(   Úinfer_freq_strrL   x   s\  € õ .ä�%œÔ#Ø—‘ˆä�e—k‘k¤:Ô.Û à�x‰x×$Ñ$ V§\¡\×%?Ñ%?Ô@à×1Ñ1Ó3�ô �O‰O˜FŸL™L¨$Ô/Ü˜&Ÿ,™,¬Ô8Ø�|‰|œvÒ%äð"Ø"'§+¡+ ð0óð ð ˆô �5˜'Ô"ØÜ	�E—K‘K¤Ô	-ÜØXó
ð 	
ô 
�‰˜Ÿ™ cÔ	*ä,¨UÓ3ˆØ×ÑÓ!Ð!ä	˜%Ÿ+™+Ô	&ÜØFÀuÇ{Á{ÀmÐTó
ð 	
ô �e˜]Ô+Ù˜e¨%Ô0ˆä Ó&€GØ×ÑÓÐr*   Úpandasc                ó0   — t        t        | «      dd¬«      S )a­  
    Infer the most likely frequency given the input index.

    .. deprecated:: 3.1.0
        A future version of pandas will return a :class:`BaseOffset` instead of
        a string. Use
        ``pd.set_option('future.infer_freq_returns_offset', True)`` to opt in
        to the future behavior.

    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)  # doctest: +SKIP
    'D'
    Ú
infer_freqzinfer_freq(...))r1   )r3   rL   )rH   s    r(   rO   rO   ¯   s   € ô` 'Ü�uÓ˜|Ð2Côð r*   c                  ó  — 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y)rG   z8
    Not sure if I can avoid the state machine here
    c                ó$  — || _         |j                  | _        t        |t        «      r/t        |j                  j                  j                  «      | _	        n$t        |j                  j                  «      | _	        t        |d«      r=|j                  �1t        | j                  |j                  | j                  ¬«      | _        t        |«      dk  rt        d«      ‚| j                   j                  xs | j                   j                   | _        y )NÚtz©Úresoé   z(Need at least 3 dates to infer frequency)rH   Úasi8Úi8valuesr:   r   r	   Ú_dataÚ_ndarrayr6   Ú_cresorD   rR   r   ÚlenÚ
ValueErrorÚ_is_monotonic_increasingÚ_is_monotonic_decreasingÚis_monotonic)ÚselfrH   s     r(   Ú__init__z_FrequencyInferer.__init__é   sÍ   € ØˆŒ
ØŸ
™
ˆŒô �eœXÔ&ô .Ø—‘×$Ñ$×*Ñ*óˆD�Kô
 .¨e¯n©n×.BÑ.BÓCˆDŒKô �5˜$ÔØ�x‰xÐ#Ü 3Ø—M‘M 5§8¡8°$·+±+ô!�”ô ˆu‹:˜Š>ÜÐGÓHÐHð �J‰J×/Ñ/ÒV°4·:±:×3VÑ3Vð 	Õr*   c                ó,   — t        | j                  «      S ©N)r   rW   ©r`   s    r(   Údeltasz_FrequencyInferer.deltas  s   € ä˜TŸ]™]Ó+Ð+r*   c                ó@   — t        | j                  j                  «      S rc   )r   rH   rV   rd   s    r(   Údeltas_asi8z_FrequencyInferer.deltas_asi8  s   € ô ˜TŸZ™ZŸ_™_Ó-Ð-r*   c                ó2   — t        | j                  «      dk(  S ©Né   )r[   re   rd   s    r(   Ú	is_uniquez_FrequencyInferer.is_unique  s   € ä�4—;‘;Ó 1Ñ$Ð$r*   c                ó2   — t        | j                  «      dk(  S ri   )r[   rg   rd   s    r(   Úis_unique_asi8z _FrequencyInferer.is_unique_asi8  s   € ä�4×#Ñ#Ó$¨Ñ)Ð)r*   c                ó�  — | j                   r| j                  j                  sy| j                  d   }t	        | j
                  «      }|rt        ||«      r| j                  «       S | j                  ddgddgg d¢fv ry| j                  sy| 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   rj   é   éA   )rj   ro   rp   Úbhé   é<   ÚhÚminÚsiè  Úmsi@B ÚusÚns)r_   rH   Ú
_is_uniquere   r
   rZ   Ú_is_multipleÚ_infer_daily_ruleÚhour_deltasrm   rg   Ú_maybe_add_count)r`   ÚdeltaÚppdÚpphÚppmÚppss         r(   rF   z_FrequencyInferer.get_freq  sW  € ð × Ò ¨¯
©
×(=Ò(=Øà—‘˜A‘ˆÜ˜dŸk™kÓ*ˆÙ”\ %¨Ô-Ø×)Ñ)Ó+Ð+ð ×Ñ  B ¨!¨R¨²+Ð>Ñ>Øð
 ×"Ò"Øà× Ñ  Ñ#ˆØ�R‰iˆØ�R‰iˆØ�R‰iˆÜ˜˜sÔ#ä# C¨°©Ó5Ð5Ü˜% Ô%ä# E¨5°3©;Ó7Ð7Ü˜% Ô%ä# C¨°©Ó5Ð5Ü˜% #¨¡+Ô/ä# D¨%°3¸$±;Ñ*?Ó@Ð@Ü˜% #¨Ñ"2Ô4ä# D¨%°3¸)Ñ3CÑ*DÓEÐEô $ D¨%Ó0Ð0r*   c                óp   — t        | j                  «      }| j                  D �cg c]  }||z  ‘Œ	 c}S c c}w rc   ©r
   rZ   re   )r`   r€   Úxs      r(   Ú
day_deltasz_FrequencyInferer.day_deltasL  s.   € ô ˜dŸk™kÓ*ˆØ!%§¡Ö-˜A��C“Ò-Ð-ùÒ-s   ¤3c                óv   — t        | j                  «      dz  }| j                  D �cg c]  }||z  ‘Œ	 c}S c c}w )Nrr   r…   )r`   r�   r†   s      r(   r}   z_FrequencyInferer.hour_deltasS  s3   € ô ˜dŸk™kÓ*¨bÑ0ˆØ!%§¡Ö-˜A��C“Ò-Ð-ùÒ-s   §6c                óD   — t        | j                  | j                  ¬«      S )NrS   )r   rW   rZ   rd   s    r(   Úfieldsz_FrequencyInferer.fieldsZ  s   € ä! $§-¡-°d·k±kÔBÐBr*   c                ó^   — t        j                  | j                  d   | j                  d «      S ©Nr   )r   Ú_from_value_and_resorW   rZ   rd   s    r(   Ú	rep_stampz_FrequencyInferer.rep_stamp^  s&   € ô ×-Ñ-¨d¯m©m¸AÑ.>ÀÇÁÈTÓRÐRr*   c                óV   — t        | j                  | j                  j                  «      S rc   )r   rŠ   rH   Úday_of_weekrd   s    r(   r   z&_FrequencyInferer.month_position_checkc  s   € Ü# D§K¡K°·±×1GÑ1GÓHÐHr*   c                óz   — | j                   d   dz  | j                   d   z   }t        |j                  d«      «      S )NÚYé   ÚMÚi8)rŠ   r   Úastype)r`   Únmonthss     r(   Úmdiffsz_FrequencyInferer.mdiffsf  s7   € à—+‘+˜cÑ" RÑ'¨$¯+©+°cÑ*:Ñ:ˆÜ˜WŸ^™^¨DÓ1Ó2Ð2r*   c                óP   — t        | j                  d   j                  d«      «      S )Nr’   r•   )r   rŠ   r–   rd   s    r(   Úydiffsz_FrequencyInferer.ydiffsk  s!   € ä˜TŸ[™[¨Ñ-×4Ñ4°TÓ:Ó;Ð;r*   c                óT  — | j                  «       }|r?| j                  d   }t        | j                  j                     }|› d|› �}t        ||«      S | j                  «       }|rY| j                  d   dz  }|dv rddddœ}ndd	d
dœ}t        || j                  j                  dz        }|› d|› �}t        ||«      S | j                  «       }|rt        || j                  d   «      S | j                  r| j                  «       S | j                  «       ry| j                  «       }	|	r|	S y )Nr   ú-rU   )ÚQSÚBQSrj   é   )rj   rŸ   r   r“   é   é
   )r   rŸ   rj   ÚB)Ú_get_annual_rulerš   r   rŽ   Úmonthr~   Ú_get_quarterly_ruler˜   Ú_get_monthly_rulerk   Ú_get_daily_ruleÚ_is_business_dailyÚ_get_wom_rule)
r`   Úannual_ruleÚnyearsr¤   ÚaliasÚquarterly_ruleÚ	nquartersÚmod_dictÚmonthly_ruleÚwom_rules
             r(   r|   z#_FrequencyInferer._infer_daily_ruleo  s6  € Ø×+Ñ+Ó-ˆÙØ—[‘[ ‘^ˆFÜ! $§.¡.×"6Ñ"6Ñ7ˆEØ"�m 1 U GÐ,ˆEÜ# E¨6Ó2Ð2à×1Ñ1Ó3ˆÙØŸ™ A™¨Ñ*ˆIØ Ñ.ð
  ! Q¨1Ñ-‘à! b¨RÑ0�Ü! (¨4¯>©>×+?Ñ+?À!Ñ+CÑ"DÑEˆEØ%Ð& a¨ wÐ/ˆEÜ# E¨9Ó5Ð5à×-Ñ-Ó/ˆÙÜ# L°$·+±+¸a±.ÓAÐAà�>Š>Ø×'Ñ'Ó)Ð)à×"Ñ"Ô$Øà×%Ñ%Ó'ˆÙØˆOàr*   c                óâ   — t        | j                  «      }| j                  d   |z  }|dz  dk(  r5t        | j                  j                  «          }d|› �}t        ||dz  «      S t        d|«      S )Nr   é   úW-ÚD)r
   rZ   re   r   rŽ   Úweekdayr~   )r`   r€   ÚdaysÚwdr¬   s        r(   r§   z!_FrequencyInferer._get_daily_rule–  sm   € Ü˜dŸk™kÓ*ˆØ�{‰{˜1‰~ Ñ#ˆØ�!‰8�qŠ=ä §¡× 6Ñ 6Ó 8Ñ9ˆBØ˜˜�IˆEÜ# E¨4°!©8Ó4Ð4ä# C¨Ó.Ð.r*   c                óä   — t        | j                  «      dkD  ry t        t        j                  | j                  d   «      «      dkD  ry | j                  «       }|€y dddddœj                  |«      S )Nrj   r”   ÚYSÚBYSÚYEÚBYE©ÚcsÚbsÚceÚbe)r[   rš   ÚnpÚuniquerŠ   r   r&   ©r`   Ú	pos_checks     r(   r£   z"_FrequencyInferer._get_annual_rule¡  si   € Üˆt�{‰{Ó˜aÒØäŒr�y‰y˜Ÿ™ SÑ)Ó*Ó+¨aÒ/Øà×-Ñ-Ó/ˆ	àÐØà e°4¸uÑE×IÑIÈ)ÓTÐTr*   c                ó²   — t        | j                  «      dkD  ry | j                  d   dz  dk(  sy | j                  «       }|€y dddddœj                  |«      S )	Nrj   r   rU   r�   rž   ÚQEÚBQEr¾   ©r[   r˜   r   r&   rÅ   s     r(   r¥   z%_FrequencyInferer._get_quarterly_rule¯  s_   € Üˆt�{‰{Ó˜aÒØà�{‰{˜1‰~ Ñ! QÒ&Øà×-Ñ-Ó/ˆ	àÐØà e°4¸uÑE×IÑIÈ)ÓTÐTr*   c                ó†   — t        | j                  «      dkD  ry | j                  «       }|€y dddddœj                  |«      S )Nrj   ÚMSÚBMSÚMEÚBMEr¾   rÊ   rÅ   s     r(   r¦   z#_FrequencyInferer._get_monthly_rule½  sG   € Üˆt�{‰{Ó˜aÒØØ×-Ñ-Ó/ˆ	àÐØà e°4¸uÑE×IÑIÈ)ÓTÐTr*   c                ó¾  — | j                   ddgk7  ry| j                  d   j                  «       }t        j                  | j
                  «      }t        | j                  «      }t        j                  ||«      }t        j                  |t        j                  |«      z   d«      }t        t        j                  |dk(  |dk(  z  |dkD  |dk  z  |dk(  z  z  «      «      S )Nrj   rU   Fr   r³   é   )r‡   rH   r¶   rÃ   ÚdiffrW   r
   rZ   Úfloor_divideÚmodÚcumsumÚboolÚall)r`   Úfirst_weekdayÚshiftsr€   Úweekdayss        r(   r¨   z$_FrequencyInferer._is_business_dailyÇ  sÃ   € à�?‰?˜q !˜fÒ$Øð Ÿ
™
 1™×-Ñ-Ó/ˆÜ—‘˜Ÿ™Ó'ˆÜ˜dŸk™kÓ*ˆÜ—‘ ¨Ó-ˆÜ—6‘6˜-¬"¯)©)°FÓ*;Ñ;¸QÓ?ˆäÜ�F‰FØ˜a‘- F¨a¡KÑ0Ø˜q‘L X°¡]Ñ3°vÀ±{ÑCñEóó
ð 	
r*   c                óP  — t        j                  | j                  j                  «      }t	        |«      dkD  ry t        j                  | j                  j
                  dz
  dz  «      }||dk     }t	        |«      dk(  st	        |«      dkD  ry |d   dz   }t        |d      }d|› |› �S )Nrj   r³   rÑ   r   zWOM-)rÃ   rÄ   rH   r�   r[   Údayr   )r`   rÚ   Úweek_of_monthsÚweekr¸   s        r(   r©   z_FrequencyInferer._get_wom_ruleÚ  s¤   € Ü—9‘9˜TŸZ™Z×3Ñ3Ó4ˆÜˆx‹=˜1ÒØäŸ™ D§J¡J§N¡N°QÑ$6¸1Ñ#<Ó=ˆà'¨¸Ñ(:Ñ;ˆÜˆ~Ó !Ò#¤s¨>Ó':¸QÒ'>Øð ˜aÑ  1Ñ$ˆÜ˜H Q™KÑ(ˆà�d�V˜B˜4Ð Ð r*   N)ÚreturnÚNone)rß   znpt.NDArray[np.int64]©rß   rÖ   )rß   ú
str | None)rß   zlist[float])rß   z
np.ndarray)rß   r   )Ú__name__Ú
__module__Ú__qualname__Ú__doc__ra   r   re   rg   rk   rm   rF   r‡   r}   rŠ   rŽ   r   r˜   rš   r|   r§   r£   r¥   r¦   r¨   r©   © r*   r(   rG   rG   ä   s  „ ñó
ð> ò,ó ð,ð ò.ó ð.ð
 ò%ó ð%ð ò*ó ð*ó01ðd ò.ó ð.ð ò.ó ð.ð òCó ðCð òSó ðSóIð ò3ó ð3ð ò<ó ð<ó%óN	/óUóUóUó
ô&!r*   rG   c                  ó   — e Zd Zd„ Zy)rE   c                ó<   — | j                   r| j                  «       S y rc   )rk   r§   rd   s    r(   r|   z,_TimedeltaFrequencyInferer._infer_daily_ruleí  s   € Ø�>Š>Ø×'Ñ'Ó)Ð)ð r*   N)rã   rä   rå   r|   rç   r*   r(   rE   rE   ì  s   „ ó*r*   rE   c                ó   — | |z  dk(  S rŒ   rç   )rx   Úmults     r(   r{   r{   ò  s   € Ø�‰9˜‰>Ðr*   c                óR   — |dk7  r!|t        |«      k(  sJ ‚t        |«      }|› | › �S | S ri   )Úint)ÚbaseÚcounts     r(   r~   r~   ö  s8   € Ø�‚zØœ˜E›
Ò"Ð"Ð"Ü�E“
ˆØ�˜˜ÐÐàˆr*   c                ód  — |�| €yt        | «      } t        |«      }t        |«      rOt        | «      rt        | «      t        |«      k(  S t        | «      rt	        t        | «      t        |«      «      S | dv S t        |«      r-t        | «      rt	        t        | «      t        |«      «      S | dv S t        |«      r| |ddddddd	d
dh
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 y)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
    F>
   r¢   ÚCrµ   r”   rt   rv   rw   ry   rx   ru   rµ   rñ   r¢   rt   ru   rv   rw   rx   ry   >   r¢   rt   rv   rw   ry   rx   ru   >   rñ   rt   rv   rw   ry   rx   ru   >   rµ   rt   rv   rw   ry   rx   ru   >   rt   rv   rw   ry   rx   ru   >   rv   rw   ry   rx   ru   >   rv   rw   ry   rx   >   rw   ry   rx   >   ry   rx   >   ry   ©Ú_maybe_coerce_freqÚ
_is_annualr   Ú_is_quarterlyÚ_quarter_months_conformÚ_is_monthlyÚ
_is_weekly)ÚsourceÚtargets     r(   Úis_subperiodrû     s±  € ð  €~˜˜ØÜ Ó'€FÜ Ó'€Fä�&ÔÜ�fÔÜ! &Ó)¬^¸FÓ-CÑCÐCÜ˜Ô Ü*Ü˜vÓ&¬°vÓ(>óð ð ÐPÐPÐPÜ	�vÔ	Ü˜Ô Ü*Ü˜vÓ&¬°vÓ(>óð ð ÐPÐPÐPÜ	�VÔ	Ø˜& # s¨C°°e¸SÀ$ÈÈdÐSÐSÐSÜ	�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ŠØ˜ÐÐàr*   c                ól  — |�| €yt        | «      } t        |«      }t        | «      rSt        |«      rt        | «      t        |«      k(  S t        |«      r"t        | «      }t        |«      }t	        ||«      S |dv S t        | «      r-t        |«      rt	        t        | «      t        |«      «      S |dv S t        | «      r|| ddddddd	d
dh
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 y)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
    F>
   r¢   rñ   rµ   r”   rt   rv   rw   ry   rx   ru   rµ   rñ   r¢   rt   ru   rv   rw   rx   ry   >	   r¢   rñ   rµ   rt   rv   rw   ry   rx   ru   >   rt   rv   rw   ry   rx   ru   >   rv   rw   ry   rx   ru   >   rv   rw   ry   rx   >   rw   ry   rx   >   ry   rx   >   ry   rò   )rù   rú   ÚsmonthÚtmonths       r(   Úis_superperiodrÿ   @  s´  € ð  €~˜˜ØÜ Ó'€FÜ Ó'€Fä�&ÔÜ�fÔÜ! &Ó)¬^¸FÓ-CÑCÐCä˜Ô Ü# FÓ+ˆFÜ# FÓ+ˆFÜ*¨6°6Ó:Ð:ØÐPÐPÐPÜ	�vÔ	Ü˜Ô Ü*Ü˜vÓ&¬°vÓ(>óð ð ÐPÐPÐPÜ	�VÔ	Ø˜& # s¨C°°e¸SÀ$ÈÈdÐSÐSÐSÜ	�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ŠØ˜ÐÐàr*   c                óÈ   — | €J ‚t        | t        «      r(t        t        | j                  «      «      j
                  } | j                  d«      } | dv r| S | j                  «       S )zÆwe might need to coerce a code to a rule_code
    and uppercase it

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

    Returns
    -------
    str
    Ú
0123456789>   rt   rv   rw   ry   rx   ru   )r:   r   r   r   Ú	rule_codeÚ_freqstrÚlstripÚupper)Úcodes    r(   ró   ró   ~  s]   € ð ÐÐÐÜ�$œ
Ô#Üœ9 T§^¡^Ó4Ó5×>Ñ>ˆð �;‰;�|Ó$€DØÐ2Ñ2Øˆà�z‰z‹|Ðr*   c                ó<   — t         |    }t         |   }|dz  |dz  k(  S )NrU   )r   )rù   rú   ÚsnumÚtnums       r(   rö   rö   —  s)   € Ü˜Ñ €DÜ˜Ñ €DØ�!‰8�t˜a‘xÑÐr*   c                óR   — | j                  «       } | dk(  xs | j                  d«      S )Nr’   zY-©r  Ú
startswith©Úrules    r(   rô   rô   �  ó%   € Ø�:‰:‹<€DØ�3‰;Ò/˜$Ÿ/™/¨$Ó/Ð/r*   c                óR   — | j                  «       } | dk(  xs | j                  d«      S )NÚQ)zQ-ÚBQr  r  s    r(   rõ   rõ   ¢  s%   € Ø�:‰:‹<€DØ�3‰;Ò7˜$Ÿ/™/¨,Ó7Ð7r*   c                ó*   — | j                  «       } | dv S )N)r”   ÚBM)r  r  s    r(   r÷   r÷   §  s   € Ø�:‰:‹<€DØ�;ÐÐr*   c                óR   — | j                  «       } | dk(  xs | j                  d«      S )NÚWr´   r  r  s    r(   rø   rø   ¬  r  r*   )r   r)   rO   rû   rÿ   r   )r'   Ústrrß   râ   rc   )r/   râ   r0   r  r1   râ   rß   ústr | BaseOffset | None)rH   ú@DatetimeIndex | TimedeltaIndex | Series | DatetimeLikeArrayMixinrß   râ   )rH   r  rß   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   r-   ÚnumpyrÃ   Úpandas._configr   Úpandas._libsr   Úpandas._libs.algosr   Úpandas._libs.tslibsr   r	   r
   r   Úpandas._libs.tslibs.ccalendarr   r   r   Úpandas._libs.tslibs.dtypesr   Úpandas._libs.tslibs.fieldsr   r   Úpandas._libs.tslibs.offsetsr   r   r   Úpandas._libs.tslibs.parsingr   Úpandas.errorsr   Úpandas.util._decoratorsr   r   Úpandas.util._exceptionsr   Úpandas.core.dtypes.commonr   Úpandas.core.dtypes.dtypesr   r   r   Úpandas.core.dtypes.genericr   r   Úpandas._typingr    rM   r!   r"   r#   Úpandas.core.arrays.datetimeliker$   r)   r3   rL   rO   rG   rE   r{   r~   rû   rÿ   ró   rö   rô   rõ   r÷   rø   Ú__all__rç   r*   r(   ú<module>r0     sD  ðÝ "å  Û ã å 2å Ý ,÷ó ÷ñ õ
 @÷÷ñ õ
 7Ý (÷õ 5å 6÷ñ ÷
ñ
 Ý"÷ñ õ
 Gó
:ð ;?ð)Øð)Ø"%ð)Ø-7ð)àó)ð`4ØKð4àó4ñn ˆHÓð1ØKð1àò1ó ð1÷hE!ñ E!ôP*Ð!2ô *óóó:óz;ó|ó2 ó0ó
8ó
ó
0ò
�r*   