ó
    Ñ]j£3  ã            	      óÎ  • S 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JrJr  SSKJr  SSKJr  SSKJrJr  SS	KJr  SS
KJr  SSKJr  SSKJs  Jr  SSKJ r J!r!  SSK"J#r#  SSK$J%r%  \(       a  SSKJ&r&  SSK
J'r'J(r(  SSK)J*r*J+r+  \%" SSSSSSS/\RX                  Q\SS9\%" / SQ\5      \" S5       " S S\#5      5       5       5       r-\" S5            S"SS .     S#S! jjj5       r.g)$zimplement the TimedeltaIndexé    )Úannotations)ÚTYPE_CHECKINGÚcast)ÚindexÚlib)Ú
ResolutionÚ	TimedeltaÚ	to_offset)Úabbrev_to_npy_unit)Ú
set_module)Ú	is_scalarÚpandas_dtype)Ú
ArrowDtype)Ú	ABCSeries)ÚTimedeltaArrayN)ÚIndexÚmaybe_extract_name)ÚDatetimeTimedeltaMixin)Úinherit_names)ÚNaTType)ÚDayÚTick)ÚDtypeObjÚTimeUnitÚ__neg__Ú__pos__Ú__abs__Útotal_secondsÚroundÚfloorÚceilT)Úwrap)Ú
componentsÚto_pytimedeltaÚsumÚstdÚmedianÚpandasc                  óÒ   • \ rS rSr% SrSr\r\SS j5       r	S\
S'   \R                  r\SS j5       rS\R                  SSS4 SS	 jjrSS
 jrS rSS jrSS jr\SS j5       rSrg)ÚTimedeltaIndexé2   a0  
Immutable Index of timedelta64 data.

Represented internally as int64, and scalars returned Timedelta objects.

Parameters
----------
data : array-like (1-dimensional), optional
    Optional timedelta-like data to construct index with.
freq : str or pandas offset object, optional
    One of pandas date offset strings or corresponding objects. The string
    ``'infer'`` can be passed in order to set the frequency of the index as
    the inferred frequency upon creation.
dtype : numpy.dtype or str, default None
    Valid ``numpy`` dtypes are ``timedelta64[ns]``, ``timedelta64[us]``,
    ``timedelta64[ms]``, and ``timedelta64[s]``.
copy : bool, default None
    Whether to copy input data, only relevant for array, Series, and Index
    inputs (for other input, e.g. a list, a new array is created anyway).
    Defaults to True for array input and False for Index/Series.
    Set to False to avoid copying array input at your own risk (if you
    know the input data won't be modified elsewhere).
    Set to True to force copying Series/Index input up front.
name : object
    Name to be stored in the index.

Attributes
----------
days
seconds
microseconds
nanoseconds
components
inferred_freq

Methods
-------
to_pytimedelta
to_series
round
floor
ceil
to_frame
mean

See Also
--------
Index : The base pandas Index type.
Timedelta : Represents a duration between two dates or times.
DatetimeIndex : Index of datetime64 data.
PeriodIndex : Index of Period data.
timedelta_range : Create a fixed-frequency TimedeltaIndex.

Notes
-----
To learn more about the frequency strings, please see
:ref:`this link<timeseries.offset_aliases>`.

Examples
--------
>>> pd.TimedeltaIndex(["0 days", "1 days", "2 days", "3 days", "4 days"])
TimedeltaIndex(['0 days', '1 days', '2 days', '3 days', '4 days'],
               dtype='timedelta64[us]', freq=None)

We can also let pandas infer the frequency when possible.

>>> pd.TimedeltaIndex(np.arange(5) * 24 * 3600 * 1e9, freq="infer")
TimedeltaIndex(['0 days', '1 days', '2 days', '3 days', '4 days'],
               dtype='timedelta64[ns]', freq='D')
Útimedeltaindexc                ó"   • [         R                  $ ©N)ÚlibindexÚTimedeltaEngine©Úselfs    Ú[/home/mande/repo/quber/.venv/lib/python3.13/site-packages/pandas/core/indexes/timedeltas.pyÚ_engine_typeÚTimedeltaIndex._engine_type—   s   € ä×'Ñ'Ð'ó    r   Ú_datac                ó.   • U R                   R                  $ r.   )r7   Ú_resolution_objr1   s    r3   r9   ÚTimedeltaIndex._resolution_obj¢   s   € à�z‰z×)Ñ)Ð)r6   Nc                óÔ  • [        XQU 5      nU R                  XU5      u  p[        U5      (       a  U R                  U5        Ub  [	        U5      n[        U[        5      (       aK  U[        R                  L a8  Ub  X1R                  :X  a&  U(       a  UR                  5       nU R                  XS9$ [        U[        5      (       aO  U[        R                  L a<  Uc9  Ub  X1R                  :X  a'  U(       a  UR                  5       $ UR                  5       $ [        R                  " XS X4S9nS nU(       d'  [        U[        [         45      (       a  UR"                  nU R                  XeUS9$ )N©Úname)ÚfreqÚunitÚdtypeÚcopy)r=   Úrefs)r   Ú_maybe_copy_array_inputr   Ú_raise_scalar_data_errorr   Ú
isinstancer   r   Ú
no_defaultr@   rA   Ú_simple_newr*   Ú_viewÚ_from_sequence_not_strictr   r   Ú_references)ÚclsÚdatar>   r@   rA   r=   ÚtdarrrB   s           r3   Ú__new__ÚTimedeltaIndex.__new__©   s0  € ô " $¨cÓ2ˆð ×0Ñ0°¸UÓC‰
ˆä�T�?‰?Ø×(Ñ(¨Ô.àÑÜ  Ó'ˆEô �tœ^×,Ñ,ØœŸ™Ò&Ø‘ %¯:©:Ó"5æØ—y‘y“{�Ø—?‘? 4�?Ð3Ð3ô �tœ^×,Ñ,ØœŸ™Ò&Ø‘Ø‘ %¯:©:Ó"5æØ—y‘y“{Ð"à—z‘z“|Ð#ô ×8Ò8Ø $¨eñ
ˆð ˆÞœ
 4¬)´UÐ);×<Ñ<Ø×#Ñ#ˆDà�‰˜u°dˆÐ;Ð;r6   c                óx   • [        U[        5      (       a  UR                  S:H  $ [        R                  " US5      $ )z6
Can we compare values of the given dtype to our own?
Úm)rE   r   Úkindr   Úis_np_dtype)r2   r@   s     r3   Ú_is_comparable_dtypeÚ#TimedeltaIndex._is_comparable_dtypeÝ   s1   € ô �eœZ×(Ñ(Ø—:‘: Ñ$Ð$Ü�Š˜u cÓ*Ð*r6   c                óÂ   • U R                  U5         U R                  R                  USS9n[
        R                  " X5      $ ! [         a  n[	        U5      UeSnAff = f)z]
Get integer location for requested label

Returns
-------
loc : int, slice, or ndarray[int]
F)ÚunboxN)Ú_check_indexing_errorr7   Ú_validate_scalarÚ	TypeErrorÚKeyErrorr   Úget_loc)r2   ÚkeyÚerrs      r3   r\   ÚTimedeltaIndex.get_locè   s_   € ð 	×"Ñ" 3Ô'ð	)Ø—*‘*×-Ñ-¨c¸Ð-Ð?ˆCô �}Š}˜TÓ'Ð'øô ó 	)Ü˜3“- SÐ(ûð	)ús   “A Á
AÁAÁAc                óº   • [        U5      n[        U[         5      (       a#  [        R                  " UR                  5      nX#4$ [        R                  " S5      nX#4$ )NÚs)r	   rE   r   Úget_reso_from_freqstrr?   )r2   ÚlabelÚparsedÚresos       r3   Ú_parse_with_resoÚTimedeltaIndex._parse_with_resoý   sQ   € Ü˜5Ó!ˆÜ�fœi×(Ñ(Ü×3Ò3°F·K±KÓ@ˆDð ˆ|Ðô ×3Ò3°CÓ8ˆDØˆ|Ðr6   c                óÊ   • UR                  UR                  5      nU[        UR                  5      -   [        SU R                  S9R                  U R                  5      -
  nX44$ )Né   ©r?   )r   Úresolution_stringr
   r	   r?   Úas_unit)r2   re   rd   ÚlboundÚrbounds        r3   Ú_parsed_string_to_boundsÚ'TimedeltaIndex._parsed_string_to_bounds  s]   € à—‘˜f×6Ñ6Ó7ˆàÜ˜×0Ñ0Ó1ñ2ä˜ §	¡	Ñ*×2Ñ2°4·9±9Ó=ñ>ð 	ð
 ˆ~Ðr6   c                ó   • g)NÚtimedelta64© r1   s    r3   Úinferred_typeÚTimedeltaIndex.inferred_type  s   € àr6   rs   )Úreturnztype[libindex.TimedeltaEngine])rv   zResolution | None)rA   zbool | None)r@   r   rv   Úbool)rc   Ústrrv   z&tuple[Timedelta | NaTType, Resolution])re   r   rd   r	   )rv   rx   )Ú__name__Ú
__module__Ú__qualname__Ú__firstlineno__Ú__doc__Ú_typr   Ú	_data_clsÚpropertyr4   Ú__annotations__r   Ú_get_string_slicer9   r   rF   rN   rT   r\   rf   ro   rt   Ú__static_attributes__rs   r6   r3   r*   r*   2   sž   ‡ ñ4EðN €Dà€Iàó(ó ð(ð Óð ×/Ñ/Ðð ó*ó ð*ð Ø�^‰^ØØ Øð0<ð
 õ0<ôh+ò(ô*ôð óó ór6   r*   rj   c          	     óŒ  • Uc  [         R                  " X U5      (       a  Sn[        U5      n[         R                  " XX#5      S:w  a  [	        S5      eUGcF  U b“  Ub�  [        U 5      n [        U5      n[        [
        U 5      n [        [
        U5      n[        U R                  5      [        UR                  5      :”  a  [        SU R                  5      nO}[        SUR                  5      nOfU b2  [        U 5      n [        [
        U 5      n [        SU R                  5      nO1[        U5      n[        [
        U5      n[        SUR                  5      nUbG  [        SU5      n[        U5      nUR                  U:”  a   [        SUR                  R                  5      n[        R                  " XX#XVS9n[        R                  X„S9$ )aó  
Return a fixed frequency TimedeltaIndex with day as the default.

Parameters
----------
start : str or timedelta-like, default None
    Left bound for generating timedeltas.
end : str or timedelta-like, default None
    Right bound for generating timedeltas.
periods : int, default None
    Number of periods to generate.
freq : str, Timedelta, datetime.timedelta, or DateOffset, default 'D'
    Frequency strings can have multiples, e.g. '5h'.
name : Hashable, default None
    Name of the resulting TimedeltaIndex.
closed : str, default None
    Make the interval closed with respect to the given frequency to
    the 'left', 'right', or both sides (None).
unit : {'s', 'ms', 'us', 'ns', None}, default None
    Specify the desired resolution of the result.
    If not specified, this is inferred from the 'start', 'end', and 'freq'
    using the same inference as :class:`Timedelta` taking the highest
    resolution of the three that are provided.

    .. versionadded:: 2.0.0

Returns
-------
TimedeltaIndex
    Fixed frequency, with day as the default.

See Also
--------
date_range : Return a fixed frequency DatetimeIndex.
period_range : Return a fixed frequency PeriodIndex.

Notes
-----
Of the four parameters ``start``, ``end``, ``periods``, and ``freq``,
a maximum of three can be specified at once. Of the three parameters
``start``, ``end``, and ``periods``, at least two must be specified.
If ``freq`` is omitted, the resulting ``DatetimeIndex`` will have
``periods`` linearly spaced elements between ``start`` and ``end``
(closed on both sides).

To learn more about the frequency strings, please see
:ref:`this link<timeseries.offset_aliases>`.

Examples
--------
>>> pd.timedelta_range(start="1 day", periods=4)
TimedeltaIndex(['1 days', '2 days', '3 days', '4 days'],
               dtype='timedelta64[us]', freq='D')

The ``closed`` parameter specifies which endpoint is included.  The default
behavior is to include both endpoints.

>>> pd.timedelta_range(start="1 day", periods=4, closed="right")
TimedeltaIndex(['2 days', '3 days', '4 days'],
               dtype='timedelta64[us]', freq='D')

The ``freq`` parameter specifies the frequency of the TimedeltaIndex.
Only fixed frequencies can be passed, non-fixed frequencies such as
'M' (month end) will raise.

>>> pd.timedelta_range(start="1 day", end="2 days", freq="6h")
TimedeltaIndex(['1 days 00:00:00', '1 days 06:00:00', '1 days 12:00:00',
                '1 days 18:00:00', '2 days 00:00:00'],
               dtype='timedelta64[us]', freq='6h')

Specify ``start``, ``end``, and ``periods``; the frequency is generated
automatically (linearly spaced).

>>> pd.timedelta_range(start="1 day", end="5 days", periods=4)
TimedeltaIndex(['1 days 00:00:00', '2 days 08:00:00', '3 days 16:00:00',
                '5 days 00:00:00'],
               dtype='timedelta64[us]', freq=None)

**Specify a unit**

>>> pd.timedelta_range("1 Day", periods=3, freq="100000D", unit="s")
TimedeltaIndex(['1 days', '100001 days', '200001 days'],
               dtype='timedelta64[s]', freq='100000D')
ÚDé   zVOf the four parameters: start, end, periods, and freq, exactly three must be specifiedr   z
Tick | Day)Úclosedr?   r<   )ÚcomÚany_noner
   Úcount_not_noneÚ
ValueErrorr	   r   r   r?   Ú_cresoÚbaseÚfreqstrr   Ú_generate_ranger*   rG   )	ÚstartÚendÚperiodsr>   r=   r‡   r?   ÚcresorM   s	            r3   Útimedelta_ranger”     s†  € ð~ �|œŸš W°S×9Ñ9ØˆÜ�T‹?€Dä
×Ò˜% gÓ4¸Ó9äð8ó
ð 	
ð
 ‚|ð Ñ ¡Ü˜eÓ$ˆEÜ˜C“.ˆCÜœ EÓ*ˆEÜ”y #Ó&ˆCÜ! %§*¡*Ó-Ô0BÀ3Ç8Á8Ó0LÓLÜ˜J¨¯
©
Ó3‘ä˜J¨¯©Ó1‘ØÑÜ˜eÓ$ˆEÜœ EÓ*ˆEÜ˜
 E§J¡JÓ/‰Dä˜C“.ˆCÜ”y #Ó&ˆCÜ˜
 C§H¡HÓ-ˆDð ÑÜ˜ dÓ+ˆDÜ& tÓ,ˆEØ�{‰{˜UÓ"Ü˜J¨¯	©	×(9Ñ(9Ó:�ä×*Ò*Ø�G¨&ñ€Eô ×%Ñ% eÐ%Ð7Ð7r6   )NNNNNN)r’   z
int | Noner?   zTimeUnit | Nonerv   r*   )/r}   Ú
__future__r   Útypingr   r   Úpandas._libsr   r/   r   Úpandas._libs.tslibsr   r	   r
   Úpandas._libs.tslibs.dtypesr   Úpandas.util._decoratorsr   Úpandas.core.dtypes.commonr   r   Úpandas.core.dtypes.dtypesr   Úpandas.core.dtypes.genericr   Úpandas.core.arrays.timedeltasr   Úpandas.core.commonÚcoreÚcommonrˆ   Úpandas.core.indexes.baser   r   Ú pandas.core.indexes.datetimeliker   Úpandas.core.indexes.extensionr   r   r   r   Úpandas._typingr   r   Ú
_field_opsr*   r”   rs   r6   r3   Ú<module>r§      s3  ðÙ "å "÷÷
÷ñ õ
 :Ý .÷õ 1Ý 0å 8ß  Ð  ÷õ DÝ 7æÝ$÷÷ñ àØØØØØØð	ð 
×	"Ñ	"ð	ð Ø	ññ òð ó	ñ ˆHÓôIÐ+ó Ió ó	óð2IñX ˆHÓà
ØØØ	Ø	ØðI8ð !ñI8ð ðI8ð ðI8ð õI8ó ñI8r6   