Ë
    ¤ehÐ*  ã                  óh  — d Z ddlmZ ddlmZ ddl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c mZ ddlmZmZ ddl m!Z! ddl"m#Z# erddl$m%Z%  e#g d¢ejL                  z   ed¬«       e#g d¢e«       G d„ de!«      «       «       Z'	 	 	 	 	 	 dddœ	 	 	 	 	 dd„Z(y)z implement the TimedeltaIndex é    )Úannotations)ÚTYPE_CHECKINGN)ÚindexÚlib)Ú
ResolutionÚ	TimedeltaÚ	to_offset)Údisallow_ambiguous_unit)Úfind_stack_level)Ú	is_scalarÚpandas_dtype)Ú	ABCSeries)ÚTimedeltaArray)ÚIndexÚmaybe_extract_name)ÚDatetimeTimedeltaMixin)Úinherit_names)ÚDtypeObj)Ú__neg__Ú__pos__Ú__abs__Útotal_secondsÚroundÚfloorÚceilT)Úwrap)Ú
componentsÚto_pytimedeltaÚsumÚstdÚmedianc                  óæ   — e Zd ZU dZdZeZedd„«       Zde	d<   e
j                  Zedd„«       Zdej                  ej                  ej                  dddf	 dd	„Zdd
„Zd„ Zdd„Zdd„Zedd„«       Zy)ÚTimedeltaIndexal  
    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.
    unit : {'D', 'h', 'm', 's', 'ms', 'us', 'ns'}, optional
        The unit of ``data``.

        .. deprecated:: 2.2.0
         Use ``pd.to_timedelta`` instead.

    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
        Make a copy of input array.
    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 `this link
    <https://pandas.pydata.org/pandas-docs/stable/user_guide/timeseries.html#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[ns]', 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                ó"   — t         j                  S ©N)ÚlibindexÚTimedeltaEngine©Úselfs    ú\/var/www/skyplay_api_hub/venv/lib/python3.12/site-packages/pandas/core/indexes/timedeltas.pyÚ_engine_typezTimedeltaIndex._engine_typeƒ   s   € ä×'Ñ'Ð'ó    r   Ú_datac                ó.   — | j                   j                  S r&   )r.   Ú_resolution_objr)   s    r+   r0   zTimedeltaIndex._resolution_objŽ   s   € à�z‰z×)Ñ)Ð)r-   NFc                ó   — |t         j                  ur2t        j                  d| j                  › d�t
        t        «       ¬«       |t         j                  ur3t        j                  d| j                  › d�t
        t        «       ¬«       nd }t        ||| «      }t        |«      r| j                  |«       t        |«       |�t        |«      }t        |t        «      rH|t         j                  u r6|�||j                  k(  r%|r|j                  «       }| j!                  ||¬«      S t        |t"        «      rG|t         j                  u r5|€3|�||j                  k(  r"|r|j                  «       S |j%                  «       S t        j&                  |||||¬«      }d }	|s"t        |t(        t*        f«      r|j,                  }	| j!                  |||	¬«      S )	NzThe 'closed' keyword in zD construction is deprecated and will be removed in a future version.)Ú
stacklevelzThe 'unit' keyword in za construction is deprecated and will be removed in a future version. Use pd.to_timedelta instead.©Úname)ÚfreqÚunitÚdtypeÚcopy)r4   Úrefs)r   Ú
no_defaultÚwarningsÚwarnÚ__name__ÚFutureWarningr   r   r   Ú_raise_scalar_data_errorr
   r   Ú
isinstancer   r7   r8   Ú_simple_newr#   Ú_viewÚ_from_sequence_not_strictr   r   Ú_references)
ÚclsÚdatar6   r5   Úclosedr7   r8   r4   Útdarrr9   s
             r+   Ú__new__zTimedeltaIndex.__new__•   sž  € ð œŸ™Ñ'ä�M‰MØ*¨3¯<©<¨.ð 9Fð FäÜ+Ó-õ	ð ”s—~‘~Ñ%ä�M‰MØ(¨¯©¨ð 7/ð /ô Ü+Ó-öð ˆDä! $¨¨cÓ2ˆä�TŒ?Ø×(Ñ(¨Ô.ä Ô%ØÐÜ  Ó'ˆEô �tœ^Ô,ØœŸ™Ñ&Ø� %¨4¯:©:Ò"5áØ—y‘y“{�Ø—?‘? 4¨d�?Ó3Ð3ô �tœ^Ô,ØœŸ™Ñ&Ø�Ø� %¨4¯:©:Ò"5áØ—y‘y“{Ð"à—z‘z“|Ð#ô ×8Ñ8Ø�t $¨e¸$ô
ˆð ˆÙœ
 4¬)´UÐ);Ô<Ø×#Ñ#ˆDà�‰˜u¨4°dˆÓ;Ð;r-   c                ó.   — t        j                  |d«      S )zF
        Can we compare values of the given dtype to our own?
        Úm)r   Úis_np_dtype)r*   r7   s     r+   Ú_is_comparable_dtypez#TimedeltaIndex._is_comparable_dtypeÞ   s   € ô �‰˜u cÓ*Ð*r-   c                óÆ   — | j                  |«       	 | j                  j                  |d¬«      }t        j                  | |«      S # t        $ r}t	        |«      |‚d}~ww xY w)z…
        Get integer location for requested label

        Returns
        -------
        loc : int, slice, or ndarray[int]
        F)ÚunboxN)Ú_check_indexing_errorr.   Ú_validate_scalarÚ	TypeErrorÚKeyErrorr   Úget_loc)r*   ÚkeyÚerrs      r+   rT   zTimedeltaIndex.get_locç   sa   € ð 	×"Ñ" 3Ô'ð	)Ø—*‘*×-Ñ-¨c¸Ð-Ó?ˆCô �}‰}˜T 3Ó'Ð'øô ò 	)Ü˜3“- SÐ(ûð	)ús   “A Á	A ÁAÁA c                ó    — t        |«      }|d fS r&   )r   )r*   ÚlabelÚparseds      r+   Ú_parse_with_resozTimedeltaIndex._parse_with_resoø   s   € ä˜5Ó!ˆØ�tˆ|Ðr-   c                óŠ   — |j                  |j                  «      }|t        |j                  «      z   t        dd«      z
  }||fS )Né   Úns)r   Úresolution_stringr	   r   )r*   ÚresorY   ÚlboundÚrbounds        r+   Ú_parsed_string_to_boundsz'TimedeltaIndex._parsed_string_to_boundsý   sA   € à—‘˜f×6Ñ6Ó7ˆØœ) F×$<Ñ$<Ó=Ñ=Ä	È!ÈTÓ@RÑRˆØ�vˆ~Ðr-   c                 ó   — y)NÚtimedelta64© r)   s    r+   Úinferred_typezTimedeltaIndex.inferred_type  s   € àr-   )Úreturnztype[libindex.TimedeltaEngine])rg   zResolution | None)r8   Úbool)r7   r   rg   rh   )rX   Ústr)rY   r   )rg   ri   )r=   Ú
__module__Ú__qualname__Ú__doc__Ú_typr   Ú	_data_clsÚpropertyr,   Ú__annotations__r   Ú_get_string_slicer0   r   r:   rI   rM   rT   rZ   rb   rf   re   r-   r+   r#   r#   &   s®   … ñ"FðP €Dà€Iàò(ó ð(ð Óð ×/Ñ/Ðð ò*ó ð*ð Ø�^‰^Ø�^‰^Ø�~‰~ØØØðE<ð óE<óR+ò(ó"ó
ð òó ñr-   r#   )r6   c               ó²   — |€t        j                  || |«      rd}t        |«      }t        j                  | |||||¬«      }t
        j                  ||¬«      S )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 : str, 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 : str, default None
        Specify the desired resolution of the result.

        .. versionadded:: 2.0.0

    Returns
    -------
    TimedeltaIndex

    Notes
    -----
    Of the four parameters ``start``, ``end``, ``periods``, and ``freq``,
    exactly three must be specified. If ``freq`` is omitted, the resulting
    ``TimedeltaIndex`` will have ``periods`` linearly spaced elements between
    ``start`` and ``end`` (closed on both sides).

    To learn more about the frequency strings, please see `this link
    <https://pandas.pydata.org/pandas-docs/stable/user_guide/timeseries.html#offset-aliases>`__.

    Examples
    --------
    >>> pd.timedelta_range(start='1 day', periods=4)
    TimedeltaIndex(['1 days', '2 days', '3 days', '4 days'],
                   dtype='timedelta64[ns]', 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[ns]', 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[ns]', 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[ns]', 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)rG   r6   r3   )ÚcomÚany_noner	   r   Ú_generate_ranger#   rA   )ÚstartÚendÚperiodsr5   r4   rG   r6   rH   s           r+   Útimedelta_rangerz   
  s\   € ðf €|œŸ™ W¨e°SÔ9Øˆä�T‹?€DÜ×*Ñ*Øˆs�G˜T¨&°tô€Eô ×%Ñ% e°$Ð%Ó7Ð7r-   )NNNNNN)ry   z
int | Noner6   z
str | Nonerg   r#   ))rl   Ú
__future__r   Útypingr   r;   Úpandas._libsr   r'   r   Úpandas._libs.tslibsr   r   r	   Úpandas._libs.tslibs.timedeltasr
   Úpandas.util._exceptionsr   Úpandas.core.dtypes.commonr   r   Úpandas.core.dtypes.genericr   Úpandas.core.arrays.timedeltasr   Úpandas.core.commonÚcoreÚcommonrt   Úpandas.core.indexes.baser   r   Ú pandas.core.indexes.datetimeliker   Úpandas.core.indexes.extensionr   Úpandas._typingr   Ú
_field_opsr#   rz   re   r-   r+   ú<module>rŒ      së   ðÙ $Ý "å  Û ÷÷ñ õ
 CÝ 4÷õ 1å 8ß  Ð  ÷õ DÝ 7áÝ'ñ ÚPØ×Ññ àØ	ô	ñ òð ó	ôQÐ+ó Qó	óð Qðj ØØØ	Ø	ØðZ8ð ñZ8ð ðZ8ð ðZ8ð ôZ8r-   