+
    xȇip                       R t ^ RIHt ^ RIHtHt ^ RIHtHtH	t	H
t
HtHt ^ RIt^ RIHtHt ^ RIHtHtHtHtHtHtHt ^ RIHt ^ RIHt ^ R	IH t H!t!H"t"H#t# ^ R
I$H%t% ^ RI&H't'H(t( ^ RI)H*t* ^ RI+H,t,H-t- ^ RI.H/t/H0t0H1t1H2t2 ^ RI3H4u H5t6 ^ RI7H4u H8u H9t: ^ RI7H;t; ^ RI<H=t= ^ RI>H?t? ^ RI@HAtA ]'       d   ^ RIBHCtC ^ RIDHDtD ^ RIEHFtFHGtGHHtHHItI ^ RIJHKtK ]L! ]:P                  4      tM ! R R]=]4      tN ! R R]N]4      tOR# )z;
Base and utility classes for tseries type pandas objects.
)annotations)ABCabstractmethod)TYPE_CHECKINGAnyLiteralSelfcastfinalN)NaTlib)
BaseOffset
ResolutionTick	Timedelta	Timestampparsing	to_offset)abbrev_to_npy_unit)function)InvalidIndexErrorNullFrequencyErrorOutOfBoundsDatetimeOutOfBoundsTimedelta)cache_readonly)
is_integeris_list_like)concat_compat)CategoricalDtypePeriodDtype)DatetimeArrayExtensionArrayPeriodArrayTimedeltaArray)Index)NDArrayBackedExtensionIndex)
RangeIndex)to_timedelta)Sequence)datetime)AxisJoinHowTimeUnitnpt)CategoricalIndexc                    a  ] tR t^Xt$ RtRtR]R&   RRR^ /R R	 llt]R
 R l4       t	]	P                  R R l4       t	]R R l4       t]R R l4       t]]R R l4       4       t]R R l4       t]R R l4       tR R ltR R ltV 3R ltRtRR/R  R! llt]R" 4       tV 3R# ltR6R$ V 3R% lllt]R& R' l4       tR( R) ltR* R+ ltR, R- lt]R. R/ l4       tR0 R1 lt R7R2 R3 llt!R4 t"R5t#V ;t$# )8DatetimeIndexOpsMixinzE
Common ops mixin to support a unified interface datetimelike Index.
Fz,DatetimeArray | TimedeltaArray | PeriodArray_dataskipnaTaxisc                    V ^8  d   QhRRRR/# )   r2   boolr3   z
int | None )formats   "p/Users/max/.openclaw/workspace/postharvest/venv/lib/python3.14/site-packages/pandas/core/indexes/datetimelike.py__annotate__"DatetimeIndexOpsMixin.__annotate__`   s     -9 -9d -9 -9    c               :    V P                   P                  WR7      # )a  
Return the mean value of the Array.

Parameters
----------
skipna : bool, default True
    Whether to ignore any NaT elements.
axis : int, optional, default 0
    Axis for the function to be applied on.

Returns
-------
scalar
    Timestamp or Timedelta.

See Also
--------
numpy.ndarray.mean : Returns the average of array elements along a given axis.
Series.mean : Return the mean value in a Series.

Notes
-----
mean is only defined for Datetime and Timedelta dtypes, not for Period.

Examples
--------
For :class:`pandas.DatetimeIndex`:

>>> idx = pd.date_range("2001-01-01 00:00", periods=3)
>>> idx
DatetimeIndex(['2001-01-01', '2001-01-02', '2001-01-03'],
              dtype='datetime64[us]', freq='D')
>>> idx.mean()
Timestamp('2001-01-02 00:00:00')

For :class:`pandas.TimedeltaIndex`:

>>> tdelta_idx = pd.to_timedelta([1, 2, 3], unit="D")
>>> tdelta_idx
TimedeltaIndex(['1 days', '2 days', '3 days'],
                dtype='timedelta64[s]', freq=None)
>>> tdelta_idx.mean()
Timedelta('2 days 00:00:00')
)r2   r3   )r1   mean)selfr2   r3   s   &$$r9   r>   DatetimeIndexOpsMixin.mean`   s    Z zzf88r<   c                   V ^8  d   QhRR/# )r5   returnzBaseOffset | Noner7   )r8   s   "r9   r:   r;      s      ' r<   c                .    V P                   P                  # )a  
Return the frequency object if it is set, otherwise None.

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

See Also
--------
DatetimeIndex.freq : Return the frequency object if it is set, otherwise None.
PeriodIndex.freq : Return the frequency object if it is set, otherwise None.

Examples
--------
>>> datetimeindex = pd.date_range(
...     "2022-02-22 02:22:22", periods=10, tz="America/Chicago", freq="h"
... )
>>> datetimeindex
DatetimeIndex(['2022-02-22 02:22:22-06:00', '2022-02-22 03:22:22-06:00',
               '2022-02-22 04:22:22-06:00', '2022-02-22 05:22:22-06:00',
               '2022-02-22 06:22:22-06:00', '2022-02-22 07:22:22-06:00',
               '2022-02-22 08:22:22-06:00', '2022-02-22 09:22:22-06:00',
               '2022-02-22 10:22:22-06:00', '2022-02-22 11:22:22-06:00'],
              dtype='datetime64[us, America/Chicago]', freq='h')
>>> datetimeindex.freq
<Hour>
r1   freqr?   s   &r9   rE   DatetimeIndexOpsMixin.freq   s    8 zzr<   c                   V ^8  d   QhRR/# )r5   rB   Noner7   )r8   s   "r9   r:   r;      s        T  r<   c                	&    WP                   n        R # NrD   )r?   values   &&r9   rE   rG      s      

r<   c                   V ^8  d   QhRR/# )r5   rB   znpt.NDArray[np.int64]r7   )r8   s   "r9   r:   r;      s      + r<   c                	.    V P                   P                  # rK   )r1   asi8rF   s   &r9   rO   DatetimeIndexOpsMixin.asi8       zzr<   c                   V ^8  d   QhRR/# r5   rB   strr7   )r8   s   "r9   r:   r;      s     '& '& '&r<   c                   ^ RI Hp V P                  P                  eN   \	        V P                  \
        V34      '       d,   \        V P                  P                  4      P                  pV# V P                  P                  # )a^  
Return the frequency object as a string if it's set, otherwise None.

See Also
--------
DatetimeIndex.inferred_freq : Returns a string representing a frequency
    generated by infer_freq.

Examples
--------
For DatetimeIndex:

>>> idx = pd.DatetimeIndex(["1/1/2020 10:00:00+00:00"], freq="D")
>>> idx.freqstr
'D'

The frequency can be inferred if there are more than 2 points:

>>> idx = pd.DatetimeIndex(
...     ["2018-01-01", "2018-01-03", "2018-01-05"], freq="infer"
... )
>>> idx.freqstr
'2D'

For PeriodIndex:

>>> idx = pd.PeriodIndex(["2023-1", "2023-2", "2023-3"], freq="M")
>>> idx.freqstr
'M'
)PeriodIndex)	pandasrV   r1   freqstr
isinstancer"   r   rE   _freqstr)r?   rV   rE   s   &  r9   rX   DatetimeIndexOpsMixin.freqstr   sa    @ 	'::)jJJk2/
 /
 tzz/88DK::%%%r<   c                   V ^8  d   QhRR/# )r5   rB   r   r7   )r8   s   "r9   r:   r;      s    000r<   c                	    R # rK   r7   rF   s   &r9   _resolution_obj%DatetimeIndexOpsMixin._resolution_obj   s    -0r<   c                   V ^8  d   QhRR/# rS   r7   )r8   s   "r9   r:   r;      s     % %C %r<   c                .    V P                   P                  # )z?
Returns day, hour, minute, second, millisecond or microsecond
)r1   
resolutionrF   s   &r9   rb    DatetimeIndexOpsMixin.resolution   s    
 zz$$$r<   c                   V ^8  d   QhRR/# r5   rB   r6   r7   )r8   s   "r9   r:   r;      s     ! ! !r<   c                	.    V P                   P                  # rK   )r1   _hasnarF   s   &r9   hasnansDatetimeIndexOpsMixin.hasnans   s    zz   r<   c                    V ^8  d   QhRRRR/# )r5   otherr   rB   r6   r7   )r8   s   "r9   r:   r;      s     + +C +D +r<   c                   V P                  V4      '       d   R# \        V\        4      '       g   R# VP                  P                  R9   d   R# \        V\        V 4      4      '       g   RpV P                  P                  pVP                  \        8X  d   VP                  V9   pME\        VP                  \        4      '       d&   \        RV4      pVP                  P                  V9   pV'       d    \        V 4      ! V4      p\        V 4      \        V4      8w  d   R# V P                  VP                  8X  d,   \         P"                  ! V P$                  VP$                  4      # V P                  P                  R8X  d   V P&                  VP&                  8X  g   V P                  P                  R8X  d^    V P                  P)                  VP                  4      w  rE\         P"                  ! VP+                  R4      VP+                  R4      4      # R#   \        \        \        3 d     R# i ; i  \,        \.        3 d     R# i ; i)z<
Determines if two Index objects contain the same elements.
TFiufcr.   Mmi8)is_rY   r$   dtypekindtyper1   _infer_matchesobjectinferred_typer   r	   
categories
ValueError	TypeErrorOverflowErrornparray_equalrO   tz_ensure_matching_resosviewr   r   )r?   rk   
should_try	inferableleftrights   &&    r9   equalsDatetimeIndexOpsMixin.equals   s    88E??%''[['E4:..J

11I{{f$"00I=
EKK)9::/7"--;;yH
! Ju-E :e$ZZ5;;&>>$))UZZ88jjoo$EHH)<TWAWI"jj??L ~~diiouzz$7GHH) #I}= !
 !!  ()=> s$   5H 9'H4 H10H14I	I	c                    V ^8  d   QhRRRR/# )r5   keyr   rB   r6   r7   )r8   s   "r9   r:   r;     s     ' ' ' 'r<   c                    \        V4        V P                  V4       R#   \        \        \        \
        3 d     R# i ; i)a  
Return a boolean indicating whether the provided key is in the index.

Parameters
----------
key : label
    The key to check if it is present in the index.

Returns
-------
bool
    Whether the key search is in the index.

Raises
------
TypeError
    If the key is not hashable.

See Also
--------
Index.isin : Returns an ndarray of boolean dtype indicating whether the
    list-like key is in the index.

Examples
--------
>>> idx = pd.Index([1, 2, 3, 4])
>>> idx
Index([1, 2, 3, 4], dtype='int64')
>>> 2 in idx
True
>>> 6 in idx
False
FT)hashget_locKeyErrorrz   ry   r   )r?   r   s   &&r9   __contains__"DatetimeIndexOpsMixin.__contains__  s@    D 	S		LL  )Z1BC 		s     ??c                	|   < \         P                  ! \        V4      P                  4       4      p\        SV `  W4      # rK   )r|   asarrayr'   to_numpysuper_convert_tolerance)r?   	tolerancetarget	__class__s   &&&r9   r   (DatetimeIndexOpsMixin._convert_toleranceG  s/    JJ|I6??AB	w))<<r<   r   date_formatNc               (    V ^8  d   QhRRRRRRRR/# )r5   headerz	list[str]na_reprT   r   
str | NonerB   r7   )r8   s   "r9   r:   r;   O  s,     
 
"
,/
>H
	
r<   c               	F    V\        V P                  W#R 7      4      ,           # ))r   r   )list_get_values_for_csv)r?   r   r   r   s   &$$$r9   _format_with_header)DatetimeIndexOpsMixin._format_with_headerO  s)    
 $$F$L
 
 	
r<   c                	6    V P                   P                  4       # rK   )r1   
_formatterrF   s   &r9   _formatter_func%DatetimeIndexOpsMixin._formatter_funcX  s    zz$$&&r<   c                   < \         SV `  4       pV P                   F:  pVR8X  g   K  V P                  pVe   \	        V4      pVP                  RV34       K<  	  V# )z8
Return a list of tuples of the (attr,formatted_value).
rE   )r   _format_attrs_attributesrX   reprappend)r?   attrsattribrE   r   s   &   r9   r   #DatetimeIndexOpsMixin._format_attrs\  sY     %'&&F||#:Dfd^, ' r<   c                   V ^8  d   QhRR/# rS   r7   )r8   s   "r9   r:   r;   j  s      S r<   c                x   < \         SV `  VR7      pV P                  '       d   VRV P                   2,          pV# )z
Return a summarized representation.

Parameters
----------
name : str
    name to use in the summary representation

Returns
-------
String with a summarized representation of the index
namez
Freq: )r   _summaryrE   rX   )r?   r   resultr   s   && r9   r   DatetimeIndexOpsMixin._summaryj  s:     !t!,999//Fr<   c                    V ^8  d   QhRRRR/# )r5   resor   rB   r6   r7   )r8   s   "r9   r:   r;     s     + +J +4 +r<   c                	    WP                   8  # rK   )r^   )r?   r   s   &&r9   _can_partial_date_slice-DatetimeIndexOpsMixin._can_partial_date_slice  s     ****r<   c                   V ^8  d   QhRR/# )r5   r   r   r7   )r8   s   "r9   r:   r;     s     " "Z "r<   c                	    \         hrK   NotImplementedError)r?   r   parseds   &&&r9   _parsed_string_to_bounds.DatetimeIndexOpsMixin._parsed_string_to_bounds  s    !!r<   c                    V ^8  d   QhRRRR/# )r5   labelrT   rB   ztuple[datetime, Resolution]r7   )r8   s   "r9   r:   r;     s      c .I r<   c           
     	    V P                   e   \        V P                   R4      '       d   V P                   pXe$   \	        T\
        4      '       g   TP                  pMTp\	        T\        P                  4      '       d   \        T4      p\        P                  ! Y4      w  rE\        P                  ! T4      pYF3#   \         d    \        T R\        T RR 4      4      p Li ; i)N	rule_coderX   inferred_freq)rE   hasattrr   getattrrY   rT   r   r|   str_r   parse_datetime_string_with_resor   from_attrname)r?   r   rE   rX   r   reso_strr   s   &&     r9   _parse_with_reso&DatetimeIndexOpsMixin._parse_with_reso  s    	Ryy GDII{$C$Cyy
 JtS$9$9nnGGeRWW%%JE"BB5R''1| # 	R4GD/4,PQD	Rs   6B= =#C#"C#c                    V ^8  d   QhRRRR/# )r5   r   rT   rB   slice | npt.NDArray[np.intp]r7   )r8   s   "r9   r:   r;     s     ) )S )-I )r<   c                	    V P                  V4      w  r# V P                  W24      #   \         d   p\        T4      ThR p?ii ; irK   )r   _partial_date_slicer   )r?   r   r   r   errs   &&   r9   _get_string_slice'DatetimeIndexOpsMixin._get_string_slice  sF    ,,S1	)++D99 	)3-S(	)s   & A=Ac               $    V ^8  d   QhRRRRRR/# )r5   r   r   r   r)   rB   r   r7   )r8   s   "r9   r:   r;     s(     )6 )6)6 )6 
&	)6r<   c                P   V P                  V4      '       g   \        hV P                  W4      w  r4V P                  P                  pV P                  P
                  pV P                  '       d   \        V 4      '       d;   W0^ ,          8  d   W@^ ,          8  g   W0R,          8  d   W@R,          8  d   \        hVP                  V! V4      RR7      pVP                  V! V4      RR7      p\        Wx4      # WV! V4      8  p	WV! V4      8*  p
W,          P                  4       ^ ,          # )zc
Parameters
----------
reso : Resolution
parsed : datetime

Returns
-------
slice or ndarray[intp]
r   sider   )r   ry   r   r1   _ndarray_unboxis_monotonic_increasinglenr   searchsortedslicenonzero)r?   r   r   t1t2valsunboxr   r   lhs_maskrhs_masks   &&&        r9   r   )DatetimeIndexOpsMixin._partial_date_slice  s      ++D11..t<zz""

!!'''4yy1g"Aw,BbMbPR8m 
 $$U2YV$<D%%eBig%>E%% uRy(HuRy(H '002155r<   c                   V ^8  d   QhRR/# )r5   r   rT   r7   )r8   s   "r9   r:   r;     s      3 r<   c                Z   \        V\        4      '       d4    V P                  V4      w  r4V P                  XX4      w  rgVR8X  d   V# T# \        WP                  P                  4      '       g   V P	                  RV4       V#   \         d   pT P	                  RY4        Rp?LzRp?ii ; i)z
If label is a string, cast it to scalar type according to resolution.

Parameters
----------
label : object
side : {'left', 'right'}

Returns
-------
label : object

Notes
-----
Value of `side` parameter should be validated in caller.
r   Nr   )rY   rT   r   ry   _raise_invalid_indexerr   r1   _recognized_scalars)r?   r   r   r   r   r   loweruppers   &&&     r9   _maybe_cast_slice_bound-DatetimeIndexOpsMixin._maybe_cast_slice_bound  s    " eS!!A#44U;  88vFLE FN555E::#A#ABB''7  A ++GU@@	As   B B*B%%B*c                    V ^8  d   QhRRRR/# r5   periodsintrB   r   r7   )r8   s   "r9   r:   r;     s     " "S "D "r<   c                    \         h)a  
Shift index by desired number of time frequency increments.

This method is for shifting the values of datetime-like indexes
by a specified time increment a given number of times.

Parameters
----------
periods : int, default 1
    Number of periods (or increments) to shift by,
    can be positive or negative.
freq : pandas.DateOffset, pandas.Timedelta or string, optional
    Frequency increment to shift by.
    If None, the index is shifted by its own `freq` attribute.
    Offset aliases are valid strings, e.g., 'D', 'W', 'M' etc.

Returns
-------
pandas.DatetimeIndex
    Shifted index.

See Also
--------
Index.shift : Shift values of Index.
PeriodIndex.shift : Shift values of PeriodIndex.
r   )r?   r   rE   s   &&&r9   shiftDatetimeIndexOpsMixin.shift  s
    6 "!r<   c                     V P                   P                  VRR7      p\        W"P                  R7      #   \        \        3 d4    \	        T\
        4      '       g   \        P                  ! T4      p LUTp LYi ; i)zD
Analogue to maybe_cast_indexer for get_indexer instead of get_loc.
T)allow_objectrr   )
r1   _validate_listlikery   rz   rY   r!   comasarray_tuplesafer$   rr   )r?   keyarrress   && r9   _maybe_cast_listlike_indexer2DatetimeIndexOpsMixin._maybe_cast_listlike_indexer  sk    	**//T/JC S		** I& 	fn55++F3 	s   5 =A94A98A9r7   rK      N)%__name__
__module____qualname____firstlineno____doc___can_hold_strings__annotations__r>   propertyrE   setterrO   rX   r   r   r^   rb   rh   r   r   r   _default_na_repr   r   r   r   r
   r   r   r   r   r   r   r   r   __static_attributes____classcell__r   s   @r9   r0   r0   X   sR    77-9T -9a -9^  : 
[[      '& '&R 0  0% % ! !+Z'R= O
KO
 ' ' , + +",) )6 )6VH">+ +r<   r0   c                  
  a  ] tR tRt$ RtR]R&   RR.tRR.t]P                  t
]P                  t]P                  t]R R l4       tR	 R
 ltR t]R R l4       tR:R R llt]R R l4       t]R R l4       tR R ltR R ltR R ltR R ltR;R R lltR tR R  ltR! R" ltR<R# R$ llt V 3R% lt!R& t"R' V 3R( llt#R) R* lt$R+ R, lt%R=R- V 3R. lllt&R/ R0 lt'R1 R2 lt(R3 V 3R4 llt)R5 V 3R6 llt*R>R7 R8 llt+R9t,V ;t-# )?DatetimeTimedeltaMixini'  zY
Mixin class for methods shared by DatetimeIndex and TimedeltaIndex,
but not PeriodIndex
zDatetimeArray | TimedeltaArrayr1   r   rE   c                   V ^8  d   QhRR/# )r5   rB   r,   r7   )r8   s   "r9   r:   #DatetimeTimedeltaMixin.__annotate__7  s      h r<   c                	.    V P                   P                  # rK   )r1   unitrF   s   &r9   r  DatetimeTimedeltaMixin.unit6  rQ   r<   c                    V ^8  d   QhRRRR/# )r5   r  r,   rB   r   r7   )r8   s   "r9   r:   r  :  s     -; -;H -; -;r<   c                    V P                   P                  V4      p\        V 4      P                  W P                  R7      # )a  
Convert to a dtype with the given unit resolution.

This method is for converting the dtype of a ``DatetimeIndex`` or
``TimedeltaIndex`` to a new dtype with the given unit
resolution/precision.

Parameters
----------
unit : {'s', 'ms', 'us', 'ns'}

Returns
-------
same type as self
    Converted to the specified unit.

See Also
--------
Timestamp.as_unit : Convert to the given unit.
Timedelta.as_unit : Convert to the given unit.
DatetimeIndex.as_unit : Convert to the given unit.
TimedeltaIndex.as_unit : Convert to the given unit.

Examples
--------
For :class:`pandas.DatetimeIndex`:

>>> idx = pd.DatetimeIndex(["2020-01-02 01:02:03.004005006"])
>>> idx
DatetimeIndex(['2020-01-02 01:02:03.004005006'],
              dtype='datetime64[ns]', freq=None)
>>> idx.as_unit("s")
DatetimeIndex(['2020-01-02 01:02:03'], dtype='datetime64[s]', freq=None)

For :class:`pandas.TimedeltaIndex`:

>>> tdelta_idx = pd.to_timedelta(["1 day 3 min 2 us 42 ns"])
>>> tdelta_idx
TimedeltaIndex(['1 days 00:03:00.000002042'],
                dtype='timedelta64[ns]', freq=None)
>>> tdelta_idx.as_unit("s")
TimedeltaIndex(['1 days 00:03:00'], dtype='timedelta64[s]', freq=None)
r   )r1   as_unitrt   _simple_newr   )r?   r  arrs   && r9   r  DatetimeTimedeltaMixin.as_unit:  s5    X jj  &Dz%%c		%::r<   c                	    V P                   P                  V4      p\        V 4      P                  W P                  R 7      # )r   )r1   
_with_freqrt   r  _name)r?   rE   r  s   && r9   r  !DatetimeTimedeltaMixin._with_freqi  s2    jj##D)Dz%%c

%;;r<   c                   V ^8  d   QhRR/# r5   rB   
np.ndarrayr7   )r8   s   "r9   r:   r  n  s      
 r<   c                	t    V P                   P                  pVP                  4       pR VP                  n        V# F)r1   r   r   flags	writeable)r?   datas   & r9   valuesDatetimeTimedeltaMixin.valuesm  s/     zz""yy{$

r<   c                    V ^8  d   QhRRRR/# r   r7   )r8   s   "r9   r:   r  u  s     0> 0>S 0>D 0>r<   c                <   VeB   W P                   8w  d2   \        V\        4      '       d   \        V4      pW,          pW,           # V^ 8X  g   \	        V 4      ^ 8X  d   V P                  4       # V P                   f   \        R4      hV ^ ,          WP                   ,          ,           pV R,          WP                   ,          ,           pV P                  P                  WERV P                   V P                  R7      p\        V 4      P                  W`P                  R7      # )a  
Shift index by desired number of time frequency increments.
This method is for shifting the values of datetime-like indexes
by a specified time increment a given number of times.

Parameters
----------
periods : int, default 1
    Number of periods (or increments) to shift by,
    can be positive or negative.
freq : pandas.DateOffset, pandas.Timedelta or string, optional
    Frequency increment to shift by.
    If None, the index is shifted by its own `freq` attribute.
    Offset aliases are valid strings, e.g., 'D', 'W', 'M' etc.

Returns
-------
pandas.DatetimeIndex
    Shifted index.

See Also
--------
Index.shift : Shift values of Index.
PeriodIndex.shift : Shift values of PeriodIndex.
NzCannot shift with no freq)startendr   rE   r  r   r   )rE   rY   rT   r   r   copyr   r1   _generate_ranger  rt   r  r   )r?   r   rE   offsetr-  r.  r   s   &&&    r9   r   DatetimeTimedeltaMixin.shiftu  s    4 		 1$$$ ^F= a<3t9>99;99$%@AAQ'II--2h99,,
 ++$TYYTYY , 
 Dz%%f99%==r<   c                   V ^8  d   QhRR/# )r5   rB   r   r7   )r8   s   "r9   r:   r    s      (  (z  (r<   c                .    V P                   P                  # )a  
Return the inferred frequency of the index.

Returns
-------
str or None
    A string representing a frequency generated by ``infer_freq``.
    Returns ``None`` if the frequency cannot be inferred.

See Also
--------
DatetimeIndex.freqstr : Return the frequency object as a string if it's set,
    otherwise ``None``.

Examples
--------
For ``DatetimeIndex``:

>>> idx = pd.DatetimeIndex(["2018-01-01", "2018-01-03", "2018-01-05"])
>>> idx.inferred_freq
'2D'

For ``TimedeltaIndex``:

>>> tdelta_idx = pd.to_timedelta(["0 days", "10 days", "20 days"])
>>> tdelta_idx
TimedeltaIndex(['0 days', '10 days', '20 days'],
               dtype='timedelta64[us]', freq=None)
>>> tdelta_idx.inferred_freq
'10D'
)r1   r   rF   s   &r9   r   $DatetimeTimedeltaMixin.inferred_freq  s    B zz'''r<   c                   V ^8  d   QhRR/# )r5   rB   r&   r7   )r8   s   "r9   r:   r    s       r<   c                	   \        \        V P                  4      p\        V4      P	                  V P
                  4      P                  p\        V ^ ,          P                  V R,          P                  V,           V4      p\        V4      # )    r   )	r	   r   rE   r   r  r  _valueranger&   )r?   rE   tickrngs   &   r9   _as_range_index&DatetimeTimedeltaMixin._as_range_index  s_     D$))$&&tyy188DGNNDHOOd$:DA#r<   c                   V ^8  d   QhRR/# re   r7   )r8   s   "r9   r:   r    s     L L Lr<   c                	z    \        V P                  \        4      ;'       d    \        VP                  \        4      # rK   )rY   rE   r   r?   rk   s   &&r9   _can_range_setop'DatetimeTimedeltaMixin._can_range_setop  s&    $))T*KKz%**d/KKr<   c                   V ^8  d   QhRR/# r5   rB   r   r7   )r8   s   "r9   r:   r    s     D D$ Dr<   c                	   R p\        V4      '       g   V P                  pMY\        V\        4      '       dD   \	        \        VP                  V P                  R7      P                  V P                  4      4      pVP                  P                  V P                  P                  P                  4      p\        V P                  4      P                  VV P                  VR7      p\!        RV P#                  W4      4      # )N)r  )rr   rE   r   )r   rE   rY   r&   r   r   stepr  r  r)  r   r1   r   rr   rt   r  r	   _wrap_setop_result)r?   rk   res_i8new_freq
res_valuesr   s   &&&   r9   _wrap_range_setop(DatetimeTimedeltaMixin._wrap_range_setop  s    6{{yyH
++ &++DII6>>tyyIH ]]''

(;(;(A(AB
djj!-- ** . 
 FD33EBCCr<   c                   V ^8  d   QhRR/# rE  r7   )r8   s   "r9   r:   r    s     5 5t 5r<   c                	x    V P                   pVP                   pVP                  WBR 7      pV P                  W4      # sort)r=  intersectionrL  r?   rk   rR  r   r   rI  s   &&&   r9   _range_intersect'DatetimeTimedeltaMixin._range_intersect  s<    ##%%""5"4%%e44r<   c                   V ^8  d   QhRR/# rE  r7   )r8   s   "r9   r:   r    s     5 54 5r<   c                	x    V P                   pVP                   pVP                  WBR 7      pV P                  W4      # rP  )r=  unionrL  rT  s   &&&   r9   _range_union#DatetimeTimedeltaMixin._range_union  s9    ##%%E-%%e44r<   c               $    V ^8  d   QhRRRRRR/# )r5   rk   r$   rR  r6   rB   r7   )r8   s   "r9   r:   r    s!     5 55 5 5 5r<   c                N   \        RV4      pV P                  V4      '       d   V P                  WR7      # V P                  V4      '       gJ   \        P
                  ! WVR7      pV P                  W4      pVP                  R4      P                  R4      # V P                  W4      # )zO
intersection specialized to the case with matching dtypes and both non-empty.
r  rQ  Ninfer)	r	   rB  rU  _can_fast_intersectr$   _intersectionrH  r  _fast_intersect)r?   rk   rR  r   s   &&& r9   r`  $DatetimeTimedeltaMixin._intersection  s     -u5  ''(((::''..((4@F ,,U;F$$T*55g>> ''44r<   c                	    V ^ ,          V^ ,          8:  d   YrCMYrC\        VR,          VR,          4      pV^ ,          pWV8  d   V R,          pV# \        VP                  We4      !  pVP                  V,          pV# )r8  :Nr8  Nr   )minr   
slice_locs_values)	r?   rk   rR  r   r   r.  r-  r   lslices	   &&&      r9   ra  &DatetimeTimedeltaMixin._fast_intersect  sx    7eAh%% $r(E"I&a;"XF
  DOOE78F\\&)Fr<   c                    V ^8  d   QhRRRR/# r5   rk   r   rB   r6   r7   )r8   s   "r9   r:   r  ,  s          $  r<   c                	    V P                   f   R# VP                   V P                   8w  d   R# V P                  '       g   R# V P                   P                  ^8H  # )NF)rE   r   nrA  s   &&r9   r_  *DatetimeTimedeltaMixin._can_fast_intersect,  sF    99ZZ499$--- yy{{ar<   c                    V ^8  d   QhRRRR/# rj  r7   )r8   s   "r9   r:   r  >  s     G GT Gd Gr<   c                	8   V P                   pVe   W!P                   8w  d   R# V P                  '       g   R# \        V 4      ^ 8X  g   \        V4      ^ 8X  d   R# V ^ ,          V^ ,          8:  d   YrCMYrCV^ ,          pVR,          pWVV,           8H  ;'       g    WS9   # )NFTr   )rE   r   r   )r?   rk   rE   r   r   right_startleft_ends   &&     r9   _can_fast_union&DatetimeTimedeltaMixin._can_fast_union>  s     yy<4::-+++ t9>SZ1_ 7eAh%%Ah8 $.FF;3FFr<   c                    V ^8  d   QhRRRR/# )r5   rk   r   rB   r7   )r8   s   "r9   r:   r  \  s     $ $ $T $r<   c                	~   V ^ ,          V^ ,          8:  d   YrCMsVRJ dl   YrCV^ ,          pVP                  VRR7      pVP                  RV p\        VP                  V34      p\        V 4      P	                  WP
                  R7      p	V	# YrCVR,          p
VR,          pW8  d   VP                  V
RR7      pVP                  VR p\        VP                  V.4      p\        V\        V P                  4      4      '       g   Q hVP                  V P                  8X  g   Q h\        V 4      P	                  V4      p	V	# V# )r8  Fr   r   Nr   r   r   )
r   rf  r   rt   r  r   rY   r1   _freqrE   )r?   rk   rR  r   r   
left_startlocright_chunkdatesr   rq  	right_ends   &&&         r9   _fast_union"DatetimeTimedeltaMixin._fast_union\  s3    7eAh%U] %aJ$$Zf$=C---K!4<<"=>E$Z++E		+BFM%8"I	 $$XG$<C---K!4<<"=>E eT$**%56666 ;;$))+++$Z++E2FMKr<   c                	\  < \        V\        V 4      4      '       g   Q hV P                  VP                  8X  g   Q hV P                  V4      '       d   V P	                  WR 7      # V P                  V4      '       d   V P                  WR 7      pV# \        SV `!  W4      P                  R4      # )rQ  r^  )
rY   rt   rr   rB  rZ  rr  r|  r   _unionr  )r?   rk   rR  r   r   s   &&& r9   r  DatetimeTimedeltaMixin._union  s    %d,,,,zzU[[(((  ''$$U$66&&%%e%7F M7>%.99'BBr<   c                P    RpV P                  V4      '       d   V P                  pV# )z;
Get the freq to attach to the result of a join operation.
N)rr  rE   )r?   rk   rE   s   && r9   _get_join_freq%DatetimeTimedeltaMixin._get_join_freq  s(     &&99Dr<   c               (    V ^8  d   QhRRRRRRRR/# )r5   lidxznpt.NDArray[np.intp] | Noneridxhowr+   rB   zEtuple[Self, npt.NDArray[np.intp] | None, npt.NDArray[np.intp] | None]r7   )r8   s   "r9   r:   r    s5     & & *	&
 *& & 
O&r<   c                	   < VP                   V P                   8X  g   Q VP                   V P                   34       h\        SV `	  WW4V4      w  rcpV P                  V4      VP                  n        WcV3# rK   )rr   r   _wrap_join_resultr  r1   rv  )r?   joinedrk   r  r  r  
join_indexr   s   &&&&&& r9   r  (DatetimeTimedeltaMixin._wrap_join_result  sn     {{djj(C5;;

*CC(!&!:4s"

$ "&!4!4U!;
%%r<   c                   V ^8  d   QhRR/# r"  r7   )r8   s   "r9   r:   r    s     . .J .r<   c                	L    V P                   P                  P                  R 4      # )rp   )r1   r   r   rF   s   &r9   _get_engine_target)DatetimeTimedeltaMixin._get_engine_target  s    zz""''--r<   c                   V ^8  d   QhRR/# )r5   r   r#  r7   )r8   s   "r9   r:   r    s     5 5
 5r<   c                	    VP                  V P                  P                  P                  4      pV P                  P	                  V4      # rK   )r   r1   r   rr   _from_backing_data)r?   r   s   &&r9   _from_join_target(DatetimeTimedeltaMixin._from_join_target  s5    TZZ00667zz,,V44r<   c                   V ^8  d   QhRR/# )r5   r   zLiteral['left', 'right']r7   )r8   s   "r9   r:   r    s     < <3K <r<   c                	  < V P                   '       d   \        V\        \        34      '       d   \	        VP
                  4      \	        V P
                  4      8  dX   VR 8X  d   VP                  V P
                  4      pM4VP                  V P
                  4      P                  V P
                  4      p\        SV `%  W4      # )r   )
r   rY   r   r   r   r  r  ceilr   _searchsorted_monotonic)r?   r   r   r   s   &&&r9   r  .DatetimeTimedeltaMixin._searchsorted_monotonic  s    (((59i"899"5::.1CDII1NN wdii0 

499-55dii@w.u;;r<   c                   V ^8  d   QhRR/# )r5   rx  zint | slice | Sequence[int]r7   )r8   s   "r9   r:   r    s      $? r<   c                   RpV P                   e   \        V4      '       d4   V^ \        V 4      ) R\        V 4      ^,
          39   d   V P                   pV# \        V4      '       dE   \        P
                  ! \        P                  ! V\        P                  R7      \        V 4      4      p\        V\        4      '       dK   VP                  R9   d:   VP                  R9   g   VP                  \        V 4      R39   d   V P                   pV# )z'
Find the `freq` for self.delete(loc).
Nr   r   r  )r8  N)rE   r   r   r   r   maybe_indices_to_slicer|   r   intprY   r   rG  r-  stop)r?   rx  rE   s   && r9   _get_delete_freq'DatetimeTimedeltaMixin._get_delete_freq  s     99 #1s4yj"c$i!m<<99D   $$ 44

3bgg6D	C c5))chh).CyyI-c$i=N1N#yyr<   c                   V ^8  d   QhRR/# r5   rx  r   r7   )r8   s   "r9   r:   r    s      C r<   c                |   V P                   P                  V4      pV P                   P                  V4      pRpV P                  e   V P                  '       d   V\
        J d    V# V^ \        V 4      ) 39   d-   W P                  ,           V ^ ,          8X  d   V P                  pV# V\        V 4      8X  d+   W P                  ,
          V R,          8X  d   V P                  pV# \        V P                  \        4      '       d   V P                  pV# V P                  P                  V4      '       d   V P                  pV# )z-
Find the `freq` for self.insert(loc, item).
Nr   )
r1   _validate_scalar	_box_funcrE   sizer   r   rY   r   is_on_offset)r?   rx  itemrL   rE   s   &&&  r9   _get_insert_freq'DatetimeTimedeltaMixin._get_insert_freq  s    

++D1zz##E*99 yyy3;  QT
O+yy0@DG0K99D  SY&D99,<R,H99D  DIIt,, yy  ''--yyr<   c                   V ^8  d   QhRR/# rE  r7   )r8   s   "r9   r:   r    s      T r<   c                f   < \         SV `  V4      pV P                  V4      VP                  n        V# )aA  
Make new Index with passed location(-s) deleted.

Parameters
----------
loc : int or list of int
    Location of item(-s) which will be deleted.
    Use a list of locations to delete more than one value at the same time.

Returns
-------
Index
    Will be same type as self, except for RangeIndex.

See Also
--------
numpy.delete : Delete any rows and column from NumPy array (ndarray).

Examples
--------
>>> idx = pd.Index(["a", "b", "c"])
>>> idx.delete(1)
Index(['a', 'c'], dtype='str')
>>> idx = pd.Index(["a", "b", "c"])
>>> idx.delete([0, 2])
Index(['b'], dtype='str')
)r   deleter  r1   rv  )r?   rx  r   r   s   && r9   r  DatetimeTimedeltaMixin.delete  s/    8 $!2237r<   c                   V ^8  d   QhRR/# r  r7   )r8   s   "r9   r:   r    s        #  r<   c                   < \         SV `  W4      p\        V\        V 4      4      '       d!   V P	                  W4      VP
                  n        V# )ae  
Make new Index inserting new item at location.
Follows Python numpy.insert semantics for negative values.

Parameters
----------
loc : int
    The integer location where the new item will be inserted.
item : object
    The new item to be inserted into the Index.

Returns
-------
Index
    Returns a new Index object resulting from inserting the specified item at
    the specified location within the original Index.

See Also
--------
Index.append : Append a collection of Indexes together.

Examples
--------
>>> idx = pd.Index(["a", "b", "c"])
>>> idx.insert(1, "x")
Index(['a', 'x', 'b', 'c'], dtype='str')
)r   insertrY   rt   r  r1   rv  )r?   rx  r  r   r   s   &&& r9   r  DatetimeTimedeltaMixin.insert  s@    8 *fd4j))!%!6!6s!AFLLr<   c               $    V ^8  d   QhRRRRRR/# )r5   r3   r*   
allow_fillr6   rB   r   r7   )r8   s   "r9   r:   r  >  s*     < < < 	< 
<r<   c                t   \         P                  ! RV4       \        P                  ! V\        P                  R7      p\
        P                  ! WW#V3/ VB p\        P                  ! V\        V 4      4      p\        V\        4      '       d,   V P                  P                  V4      pWP                  n        V# )a  
Return a new Index of the values selected by the indices.
For internal compatibility with numpy arrays.

Parameters
----------
indices : array-like
    Indices to be taken.
axis : {0 or 'index'}, optional
    The axis over which to select values, always 0 or 'index'.
allow_fill : bool, default True
    How to handle negative values in `indices`.
    * False: negative values in `indices` indicate positional indices
        from the right (the default). This is similar to
        :func:`numpy.take`.
    * True: negative values in `indices` indicate
        missing values. These values are set to `fill_value`. Any other
        other negative values raise a ``ValueError``.
fill_value : scalar, default None
    If allow_fill=True and fill_value is not None, indices specified by
    -1 are regarded as NA. If Index doesn't hold NA, raise ValueError.
**kwargs
    Required for compatibility with numpy.

Returns
-------
Index
    An index formed of elements at the given indices. Will be the same
    type as self, except for RangeIndex.

See Also
--------
numpy.ndarray.take: Return an array formed from the
    elements of a at the given indices.

Examples
--------
>>> idx = pd.Index(["a", "b", "c"])
>>> idx.take([2, 2, 1, 2])
Index(['c', 'c', 'b', 'c'], dtype='str')
r   r7   )nvvalidate_taker|   r   r  r%   taker   r  r   rY   r   r1   _get_getitem_freqrv  )	r?   indicesr3   r  
fill_valuekwargsr   maybe_slicerE   s	   &&&&&,   r9   r  DatetimeTimedeltaMixin.take>  s    b 	V$**WBGG4,114Z
;A
 00#d)Dk5)):://<D!%LLr<   r7   r  r%  rK   )r   )r8  TN).r  r  r  r  r  r	  _comparablesr   r$   r   _is_monotonic_increasingis_monotonic_decreasing_is_monotonic_decreasing	is_unique
_is_uniquer
  r  r  r  r)  r   r   r   r=  rB  rL  rU  rZ  r`  ra  r_  rr  r|  r  r  r  r  r  r  r  r  r  r  r  r  r  r  s   @r9   r  r  '  s+   
 *)F#L6"K  %<<$<<J -;^<  0>d  (  (J  LD4555.( $G<$LC&& &.5
< <&,4 @   J< <r<   r  )Pr  
__future__r   abcr   r   typingr   r   r   r   r	   r
   numpyr|   pandas._libsr   r   pandas._libs.tslibsr   r   r   r   r   r   r   pandas._libs.tslibs.dtypesr   pandas.compat.numpyr   r  pandas.errorsr   r   r   r   pandas.util._decoratorsr   pandas.core.dtypes.commonr   r   pandas.core.dtypes.concatr   pandas.core.dtypes.dtypesr   r   pandas.core.arraysr    r!   r"   r#   pandas.core.commoncorecommonr   pandas.core.indexes.baseindexesbaseibaser$   pandas.core.indexes.extensionr%   pandas.core.indexes.ranger&   pandas.core.tools.timedeltasr'   collections.abcr(   r)   pandas._typingr*   r+   r,   r-   rW   r.   dict_index_doc_kwargsr0   r  r7   r<   r9   <module>r     s    #     : .  4
  !   ( ( F 0 5(!  (001 L+7 L+^S	2C S	r<   