
    Mh*                    r   S r SSKJr  SSKJr  SSK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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Q\RL                  -   \SS9\#" / SQ\5       " S S\!5      5       5       r'      SSS.     SS jjjr(g)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                      \ 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                  \R                  \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&   a  
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                "    [         R                  $ N)libindexTimedeltaEngineselfs    P/var/www/html/env/lib/python3.13/site-packages/pandas/core/indexes/timedeltas.py_engine_typeTimedeltaIndex._engine_type   s    '''    r   _datac                .    U R                   R                  $ r'   )r0   _resolution_objr*   s    r,   r2   TimedeltaIndex._resolution_obj   s    zz)))r/   NFc                   U[         R                  La0  [        R                  " SU R                   S3[
        [        5       S9  U[         R                  La1  [        R                  " SU R                   S3[
        [        5       S9  OS n[        XqU 5      n[        U5      (       a  U R                  U5        [        U5        Ub  [        U5      n[        U[        5      (       aK  U[         R                  L a8  Ub  XQR                  :X  a&  U(       a  UR                  5       nU R!                  XS9$ [        U["        5      (       aO  U[         R                  L a<  Uc9  Ub  XQR                  :X  a'  U(       a  UR                  5       $ UR%                  5       $ [        R&                  " XX%US9nS n	U(       d'  [        U[(        [*        45      (       a  UR,                  n	U R!                  XU	S9$ )	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)r7   refs)r   
no_defaultwarningswarn__name__FutureWarningr   r   r   _raise_scalar_data_errorr
   r   
isinstancer   r:   r;   _simple_newr#   _view_from_sequence_not_strictr   r   _references)
clsdatar9   r8   closedr:   r;   r7   tdarrr<   s
             r,   __new__TimedeltaIndex.__new__   s    'MM*3<<. 9F F+-	 s~~%MM( 7/ / +- D!$c2T??((.% 'E t^,,&%::"5yy{??4?33 t^,,&%::"5yy{"zz|# 88$$
 
4)U);<<##Dud;;r/   c                0    [         R                  " US5      $ )z6
Can we compare values of the given dtype to our own?
m)r   is_np_dtype)r+   r:   s     r,   _is_comparable_dtype#TimedeltaIndex._is_comparable_dtype   s     uc**r/   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_errorr0   _validate_scalar	TypeErrorKeyErrorr   get_loc)r+   keyerrs      r,   rY   TimedeltaIndex.get_loc   s_     	""3'	)**--c-?C }}T''  	)3-S(	)s   A 
AAAc                     [        U5      nUS 4$ r'   )r   )r+   labelparseds      r,   _parse_with_resoTimedeltaIndex._parse_with_reso   s    5!t|r/   c                    UR                  UR                  5      nU[        UR                  5      -   [        SS5      -
  nX44$ )N   ns)r   resolution_stringr	   r   )r+   resor_   lboundrbounds        r,   _parsed_string_to_bounds'TimedeltaIndex._parsed_string_to_bounds   s?    f667)F$<$<==	!T@RR~r/   c                    g)Ntimedelta64 r*   s    r,   inferred_typeTimedeltaIndex.inferred_type  s    r/   rm   )returnztype[libindex.TimedeltaEngine])rp   zResolution | None)r;   bool)r:   r   rp   rq   )r^   str)r_   r   )rp   rr   )r@   
__module____qualname____firstlineno____doc___typr   	_data_clspropertyr-   __annotations__r   _get_string_slicer2   r   r=   rL   rQ   rY   r`   ri   rn   __static_attributes__rm   r/   r,   r#   r#   &   s    "FP DI( (  // * * ^^^^~~E< E<R+("
  r/   r#   )r9   c          	         Uc  [         R                  " X U5      (       a  Sn[        U5      n[        R                  " XX#XVS9n[
        R                  XtS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 : 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)rJ   r9   r6   )comany_noner	   r   _generate_ranger#   rD   )startendperiodsr8   r7   rJ   r9   rK   s           r,   timedelta_ranger   
  sU    f |WS99T?D**G&E %%e%77r/   )NNNNNN)r   z
int | Noner9   z
str | Nonerp   r#   ))rv   
__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commonr   pandas.core.indexes.baser   r    pandas.core.indexes.datetimeliker   pandas.core.indexes.extensionr   pandas._typingr   
_field_opsr#   r   rm   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/   