Ë
    *�£jp•  ã                  óî  — d Z ddlmZ ddlmZmZ ddlmZmZm	Z	m
Z
mZmZ ddlZddlmZmZ ddlmZmZmZmZmZmZ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% ddl&m'Z'm(Z( ddl)m*Z* ddl+m,Z,m-Z- ddl.m/Z/m0Z0m1Z1m2Z2 ddl3m4c m5Z6 ddl7m4c m8c m9Z: ddl7m;Z; ddl<m=Z= ddl>m?Z? ddl@mAZA erddlBmCZC ddlDmDZD ddlEmFZFmGZGmHZHmIZI ddlJmKZK  eLe:jš                  «      ZM G d„ de=e«      ZN G d„ deNe«      ZOy)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                  ó–  ‡ — e Zd ZU dZdZded<   dddœd"d„Zed#d	„«       Zej                  d$d
„«       Zed%d„«       Z
ed&d„«       Zeed'd„«       «       Zed&d„«       Zed(d„«       Zd)d„Zd*d„Zˆ fd„ZdZddœ	 	 	 	 	 	 	 d+d„Zed„ «       Zˆ fd„Zd,d&ˆ fd„Zed-d„«       Zd.d„Zd/d„Zd0d„Ze	 	 	 	 	 	 d1d„«       Zd2d„Zd3d4d „Z d!„ Z!ˆ xZ"S )5ÚDatetimeIndexOpsMixinzM
    Common ops mixin to support a unified interface datetimelike Index.
    Fz,DatetimeArray | TimedeltaArray | PeriodArrayÚ_dataTr   ©ÚskipnaÚaxisc               ó<   — | j                   j                  ||¬«      S )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')
        r3   )r2   Úmean)Úselfr4   r5   s      úBC:\FundamentalWorkbench\vendor\pandas\core\indexes\datetimelike.pyr7   zDatetimeIndexOpsMixin.mean`   s   € ðZ �z‰z�‰ f°4ˆÓ8Ð8ó    c                ó.   — | j                   j                  S )ac  
        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>
        ©r2   Úfreq©r8   s    r9   r=   zDatetimeIndexOpsMixin.freq�   s   € ð8 �z‰z�‰Ðr:   c                ó&   — || j                   _        y ©Nr<   )r8   Úvalues     r9   r=   zDatetimeIndexOpsMixin.freq­   s   € ð  ˆ�
‰
�r:   c                ó.   — | j                   j                  S r@   )r2   Úasi8r>   s    r9   rC   zDatetimeIndexOpsMixin.asi8²   ó   € à�z‰z�‰Ðr:   c                óô   — ddl m} | j                  j                  �Gt	        | j                  t
        |f«      r+t        | j                  j                  «      j                  }|S | j                  j                  S )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'
        r   )ÚPeriodIndex)	ÚpandasrF   r2   ÚfreqstrÚ
isinstancer#   r    r=   Ú_freqstr)r8   rF   r=   s      r9   rH   zDatetimeIndexOpsMixin.freqstr¶   s\   € õ@ 	'à�:‰:×ÑÐ)¬jØ�J‰Jœ kÐ2ô/
ô ˜tŸz™zŸ™Ó/×8Ñ8ˆDØˆKà—:‘:×%Ñ%Ð%r:   c                 ó   — y r@   © r>   s    r9   Ú_resolution_objz%DatetimeIndexOpsMixin._resolution_objà   s   € à-0r:   c                ó.   — | j                   j                  S )zO
        Returns day, hour, minute, second, millisecond or microsecond
        )r2   Ú
resolutionr>   s    r9   rO   z DatetimeIndexOpsMixin.resolutionä   s   € ð
 �z‰z×$Ñ$Ð$r:   c                ó.   — | j                   j                  S r@   )r2   Ú_hasnar>   s    r9   ÚhasnanszDatetimeIndexOpsMixin.hasnansí   s   € à�z‰z× Ñ Ð r:   c                ó"  — | j                  |«      ryt        |t        «      sy|j                  j                  dv ryt        |t        | «      «      sŒd}| j                  j                  }|j                  t        k(  r|j                  |v }n>t        |j                  t        «      r$t        d|«      }|j                  j                  |v }|r	  t        | «      |«      }t        | «      t        |«      k7  ry| j                  |j                  k(  r*t!        j"                  | j$                  |j$                  «      S | j                  j                  dk(  r| j&                  |j&                  k(  s| j                  j                  dk(  r]	 | j                  j)                  |j                  «      \  }}t!        j"                  |j+                  d«      |j+                  d«      «      S y# t        t        t        f$ r Y yw xY w# t,        t.        f$ r Y yw xY w)zL
        Determines if two Index objects contain the same elements.
        TFÚiufcr/   ÚMÚmÚi8)Úis_rI   r%   ÚdtypeÚkindÚtyper2   Ú_infer_matchesÚobjectÚinferred_typer   r
   Ú
categoriesÚ
ValueErrorÚ	TypeErrorÚOverflowErrorÚnpÚarray_equalrC   ÚtzÚ_ensure_matching_resosÚviewr   r   )r8   ÚotherÚ
should_tryÚ	inferableÚleftÚrights         r9   ÚequalszDatetimeIndexOpsMixin.equalsñ   s¨  € ð �8‰8�EŒ?Øä˜%¤Ô'ØØ�[‰[×Ñ Ñ'ØÜ˜E¤4¨£:Ô.ØˆJØŸ
™
×1Ñ1ˆIØ�{‰{œfÒ$Ø"×0Ñ0°IÐ=‘
Ü˜EŸK™KÔ)9Ô:ÜÐ/°Ó7�Ø"×-Ñ-×;Ñ;¸yÐH�
áð!Ø&œD ›J uÓ-�Eô �‹:œ˜e›Ò$ØØ�Z‰Z˜5Ÿ;™;Ò&Ü—>‘> $§)¡)¨U¯Z©ZÓ8Ð8Ø�j‰j�o‰o Ò$¨¯©°E·H±HÒ)<ÀÇÁÇÁÐTWÒAWðIà"Ÿj™j×?Ñ?ÀÇÁÓL‘��eô —~‘~ d§i¡i°£o°u·z±zÀ$Ó7GÓHÐHØøô) #¤I¬}Ð=ò !ñ
 !ð!ûô  (Ô)=Ð>ò Ùðús$   ÃG" Æ(G< Ç"G9Ç8G9Ç<HÈHc                ó|   — t        |«       	 | j                  |«       y# t        t        t        t
        f$ r Y yw xY w)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ÚKeyErrorra   r`   r   )r8   Úkeys     r9   Ú__contains__z"DatetimeIndexOpsMixin.__contains__  s@   € ôD 	ˆSŒ	ð	Ø�L‰L˜Ôð øô œ)¤ZÔ1BÐCò 	Ùð	ús   � Ÿ;º;c                ó|   •— t        j                  t        |«      j                  «       «      }t        ‰| �  ||«      S r@   )rc   Úasarrayr(   Úto_numpyÚsuperÚ_convert_tolerance)r8   Ú	toleranceÚtargetÚ	__class__s      €r9   rx   z(DatetimeIndexOpsMixin._convert_toleranceG  s1   ø€ Ü—J‘Jœ|¨IÓ6×?Ñ?ÓAÓBˆ	Ü‰wÑ)¨)°VÓ<Ð<r:   r   N)Údate_formatc               ó@   — |t        | j                  ||¬«      «      z   S )N)Úna_repr|   )ÚlistÚ_get_values_for_csv)r8   Úheaderr~   r|   s       r9   Ú_format_with_headerz)DatetimeIndexOpsMixin._format_with_headerO  s+   € ð
 œØ×$Ñ$¨FÀÐ$ÓLó
ñ 
ð 	
r:   c                ó6   — | j                   j                  «       S r@   )r2   Ú
_formatterr>   s    r9   Ú_formatter_funcz%DatetimeIndexOpsMixin._formatter_funcX  s   € à�z‰z×$Ñ$Ó&Ð&r:   c                óª   •— t         ‰| �  «       }| j                  D ]4  }|dk(  sŒ	| j                  }|�t	        |«      }|j                  d|f«       Œ6 |S )zH
        Return a list of tuples of the (attr,formatted_value).
        r=   )rw   Ú_format_attrsÚ_attributesrH   ÚreprÚappend)r8   ÚattrsÚattribr=   r{   s       €r9   r‡   z#DatetimeIndexOpsMixin._format_attrs\  sY   ø€ ô ‘Ñ%Ó'ˆØ×&Ô&ˆFà˜ÓØ—|‘|�ØÐ#Ü ›:�DØ—‘˜f d˜^Õ,ð 'ð ˆr:   c                ód   •— t         ‰| �  |¬«      }| j                  r|d| j                  › �z  }|S )a  
        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: )rw   Ú_summaryr=   rH   )r8   r�   Úresultr{   s      €r9   r�   zDatetimeIndexOpsMixin._summaryj  s8   ø€ ô ‘Ñ! tÐ!Ó,ˆØ�9Š9Ø˜ §¡ Ð/Ñ/ˆFàˆr:   c                ó    — || j                   kD  S r@   )rM   )r8   Úresos     r9   Ú_can_partial_date_slicez-DatetimeIndexOpsMixin._can_partial_date_slice€  s   € ð �d×*Ñ*Ñ*Ð*r:   c                ó   — t         ‚r@   ©ÚNotImplementedError)r8   r“   Úparseds      r9   Ú_parsed_string_to_boundsz.DatetimeIndexOpsMixin._parsed_string_to_bounds‡  s   € Ü!Ð!r:   c           
     óž  — 	 | j                   �t        | j                   d«      r| j                   }�t	        |t
        «      s|j                  }n|}t	        |t        j                  «      rt        |«      }t        j                  ||«      \  }}t        j                  |«      }||fS # t        $ r t        | dt        | dd «      «      }Y Œ›w xY w)NÚ	rule_coderH   Úinferred_freq)r=   Úhasattrr—   ÚgetattrrI   Ústrr›   rc   Ústr_r   Úparse_datetime_string_with_resor   Úfrom_attrname)r8   Úlabelr=   rH   r˜   Úreso_strr“   s          r9   Ú_parse_with_resoz&DatetimeIndexOpsMixin._parse_with_resoŠ  s¹   € ð	RØ�y‰yÐ ¤G¨D¯I©I°{Ô$CØ—y‘y�ð
 Ð¤J¨t´SÔ$9Ø—n‘n‰GàˆGä�eœRŸW™WÔ%ä˜“JˆEä"×BÑBÀ5È'ÓRÑˆ�Ü×'Ñ'¨Ó1ˆØ�tˆ|Ðøô #ò 	RÜ˜4 ¬G°D¸/È4Ó,PÓQŠDð	Rús   ‚.B( Â(!CÃCc                óŠ   — | j                  |«      \  }}	 | j                  ||«      S # t        $ r}t        |«      |‚d }~ww xY wr@   )r¥   Ú_partial_date_slicerq   )r8   rr   r˜   r“   Úerrs        r9   Ú_get_string_slicez'DatetimeIndexOpsMixin._get_string_slice   sJ   € à×,Ñ,¨SÓ1‰ˆ�ð	)Ø×+Ñ+¨D°&Ó9Ð9øÜò 	)Ü˜3“- SÐ(ûð	)ús   –( ¨	A±=½Ac                ó   — | j                  |«      st        ‚| j                  ||«      \  }}| j                  j                  }| j                  j
                  }| j                  rot        | «      r&|| d   k  r|| d   k  s|| d   kD  r|| d   kD  rt        ‚|j                   ||«      d¬«      }|j                   ||«      d¬«      }t        ||«      S | ||«      k\  }	| ||«      k  }
|	|
z  j                  «       d   S )z£
        Parameters
        ----------
        reso : Resolution
        parsed : datetime

        Returns
        -------
        slice or ndarray[intp]
        r   éÿÿÿÿrk   ©Úsiderl   )r”   r`   r™   r2   Ú_ndarrayÚ_unboxÚis_monotonic_increasingÚlenrq   ÚsearchsortedÚsliceÚnonzero)r8   r“   r˜   Út1Út2ÚvalsÚunboxrk   rl   Úlhs_maskÚrhs_masks              r9   r§   z)DatetimeIndexOpsMixin._partial_date_slice¨  s  € ð  ×+Ñ+¨DÔ1ÜÐà×.Ñ.¨t°VÓ<‰ˆˆBØ�z‰z×"Ñ"ˆØ—
‘
×!Ñ!ˆà×'Ò'Ü�4ŒyØ�d˜1‘g’ " t¨A¡w¢,°B¸¸b¹²MÀbÈ4ÐPRÉ8Âmô �ð
 ×$Ñ$¡U¨2£Y°VÐ$Ó<ˆDØ×%Ñ%¡e¨B£i°gÐ%Ó>ˆEÜ˜˜uÓ%Ð%ð ™u R›yÑ(ˆHØ™u R›yÑ(ˆHð ˜xÑ'×0Ñ0Ó2°1Ñ5Ð5r:   c                óB  — t        |t        «      r3	 | j                  |«      \  }}| j                  «      \  }}|dk(  r|S |S t        || j                  j                  «      s| j	                  d|«       |S # t        $ r}| j	                  d||«       Y d}~Œsd}~ww xY w)aL  
        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³   Nrk   )rI   rŸ   r¥   r`   Ú_raise_invalid_indexerr™   r2   Ú_recognized_scalars)r8   r£   r­   r˜   r“   r¨   ÚlowerÚuppers           r9   Ú_maybe_cast_slice_boundz-DatetimeIndexOpsMixin._maybe_cast_slice_boundÔ  s¥   € ô" �eœSÔ!ðAØ#×4Ñ4°UÓ;‘�˜ð  ×8Ñ8¸¸vÓF‰LˆE�5Ø  FšN�5Ð5°Ð5Ü˜E 4§:¡:×#AÑ#AÔBØ×'Ñ'¨°Ô7àˆøô ò Að ×+Ñ+¨G°U¸C×@Ñ@ûð	Aús   ’A8 Á8	BÂBÂBc                ó   — t         ‚)ae  
        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–   )r8   Úperiodsr=   s      r9   ÚshiftzDatetimeIndexOpsMixin.shiftø  s
   € ô6 "Ð!r:   c                óæ   — 	 | j                   j                  |d¬«      }t        ||j                  ¬«      S # t        t        f$ r+ t	        |t
        «      st        j                  |«      }n|}Y ŒPw xY w)zT
        Analogue to maybe_cast_indexer for get_indexer instead of get_loc.
        T)Úallow_object©rY   )
r2   Ú_validate_listliker`   ra   rI   r"   ÚcomÚasarray_tuplesafer%   rY   )r8   ÚkeyarrÚress      r9   Ú_maybe_cast_listlike_indexerz2DatetimeIndexOpsMixin._maybe_cast_listlike_indexer  sk   € ð	Ø—*‘*×/Ñ/°ÀTÐ/ÓJˆCô �S §	¡	Ô*Ð*øô œIÐ&ò 	Ü˜f¤nÔ5ä×+Ñ+¨FÓ3‘ð �ùð	ús   ‚6 ¶7A0Á/A0)r4   Úboolr5   z
int | None)ÚreturnzBaseOffset | None)rÎ   ÚNone)rÎ   znpt.NDArray[np.int64])rÎ   rŸ   )rÎ   r   ©rÎ   rÍ   )rh   r   rÎ   rÍ   )rr   r   rÎ   rÍ   )r�   ú	list[str]r~   rŸ   r|   ú
str | NonerÎ   rÑ   r@   )r“   r   rÎ   rÍ   )r“   r   )r£   rŸ   rÎ   ztuple[datetime, Resolution])rr   rŸ   rÎ   úslice | npt.NDArray[np.intp])r“   r   r˜   r*   rÎ   rÓ   )r­   rŸ   ©é   N©rÂ   ÚintrÎ   r	   )#Ú__name__Ú
__module__Ú__qualname__Ú__doc__Ú_can_hold_stringsÚ__annotations__r7   Úpropertyr=   ÚsetterrC   rH   r   r   rM   rO   rR   rm   rs   rx   Ú_default_na_repr‚   r…   r‡   r�   r   r”   r™   r¥   r©   r§   rÀ   rÃ   rÌ   Ú__classcell__©r{   s   @r9   r1   r1   X   sz  ø… ñð ÐØ7Ó7à%)¸aõ -9ð^ òó ðð: 
‡[�[ò ó ð ð òó ðð ò'&ó ð'&ðR ØÚ0ó ó à0àò%ó ð%ð ò!ó ð!ó+óZ'ôR=ð €Oð LPñ
Ø"ð
Ø,/ð
Ø>Hð
à	ó
ð ñ'ó ð'ôöð, ò+ó ð+ó"óó,)ð ð)6àð)6ð ð)6ð 
&ò	)6ó ð)6óVôH"ö>+r:   r1   c                  ó²  ‡ — e Zd ZU dZded<   ddgZddgZej                  Z	ej                  Zej                  Zed!d„«       Zd"d„Zd„ Zed#d	„«       Zd$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+d„Zd„ Zd,d„Zd,d„Zd-d.d„Zˆ fd„Z d„ Z!	 	 	 	 	 	 	 	 d/ˆ fd„Z"d#d„Z#d0d„Z$d1d2ˆ fd„Z%d3d„Z&d4d„Z'd)ˆ fd„Z(d4ˆ fd„Z)	 	 	 d5	 	 	 	 	 d6d „Z*ˆ xZ+S )7ÚDatetimeTimedeltaMixinze
    Mixin class for methods shared by DatetimeIndex and TimedeltaIndex,
    but not PeriodIndex
    zDatetimeArray | TimedeltaArrayr2   r�   r=   c                ó.   — | j                   j                  S r@   )r2   Úunitr>   s    r9   ræ   zDatetimeTimedeltaMixin.unit6  rD   r:   c                ó„   — | j                   j                  |«      }t        | «      j                  || j                  ¬«      S )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Ž   )r2   Úas_unitr[   Ú_simple_newr�   )r8   ræ   Úarrs      r9   rè   zDatetimeTimedeltaMixin.as_unit:  s7   € ðX �j‰j× Ñ  Ó&ˆÜ�D‹z×%Ñ% c°·	±	Ð%Ó:Ð:r:   c                ó„   — | j                   j                  |«      }t        | «      j                  || j                  ¬«      S )NrŽ   )r2   Ú
_with_freqr[   ré   Ú_name)r8   r=   rê   s      r9   rì   z!DatetimeTimedeltaMixin._with_freqi  s4   € Ø�j‰j×#Ñ# DÓ)ˆÜ�D‹z×%Ñ% c°·
±
Ð%Ó;Ð;r:   c                ót   — | j                   j                  }|j                  «       }d|j                  _        |S )NF)r2   r®   rg   ÚflagsÚ	writeable)r8   Údatas     r9   ÚvalueszDatetimeTimedeltaMixin.valuesm  s/   € ð �z‰z×"Ñ"ˆØ�y‰y‹{ˆØ$ˆ�
‰
ÔØˆr:   c                óê  — |�4|| j                   k7  r%t        |t        «      rt        |«      }||z  }| |z   S |dk(  st	        | «      dk(  r| j                  «       S | j                   €t        d«      ‚| d   || j                   z  z   }| d   || j                   z  z   }| j                  j                  ||d| j                   | j                  ¬«      }t        | «      j                  || j                  ¬«      S )ad  
        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.
        Nr   zCannot shift with no freqr«   )ÚstartÚendrÂ   r=   ræ   rŽ   )r=   rI   rŸ   r   r±   Úcopyr   r2   Ú_generate_rangeræ   r[   ré   r�   )r8   rÂ   r=   Úoffsetrô   rõ   r‘   s          r9   rÃ   zDatetimeTimedeltaMixin.shiftu  sê   € ð4 Ð ¨¯	©	Ò 1Ü˜$¤Ô$Ü  “�Ø˜t‘^ˆFØ˜&‘=Ð à�aŠ<œ3˜t›9¨š>à—9‘9“;Ðà�9‰9ÐÜ$Ð%@ÓAÐAà�Q‘˜' D§I¡IÑ-Ñ-ˆØ�2‰h˜ 4§9¡9Ñ,Ñ,ˆð
 —‘×+Ñ+Ø˜S¨$°T·Y±YÀTÇYÁYð ,ó 
ˆô �D‹z×%Ñ% f°4·9±9Ð%Ó=Ð=r:   c                ó.   — | j                   j                  S )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'
        )r2   rœ   r>   s    r9   rœ   z$DatetimeTimedeltaMixin.inferred_freq§  s   € ðB �z‰z×'Ñ'Ð'r:   c                óü   — t        t        | j                  «      }t        |«      j	                  | j
                  «      j                  }t        | d   j                  | d   j                  |z   |«      }t        |«      S ©Nr   r«   )	r
   r   r=   r   rè   ræ   Ú_valueÚranger'   )r8   r=   ÚtickÚrngs       r9   Ú_as_range_indexz&DatetimeTimedeltaMixin._as_range_indexÍ  s_   € ô ”D˜$Ÿ)™)Ó$ˆÜ˜‹×&Ñ& t§y¡yÓ1×8Ñ8ˆÜ�D˜‘G—N‘N D¨¡H§O¡O°dÑ$:¸DÓAˆÜ˜#‹Ðr:   c                ón   — t        | j                  t        «      xr t        |j                  t        «      S r@   )rI   r=   r   ©r8   rh   s     r9   Ú_can_range_setopz'DatetimeTimedeltaMixin._can_range_setopÖ  s#   € Ü˜$Ÿ)™)¤TÓ*ÒK¬z¸%¿*¹*ÄdÓ/KÐKr:   c                óè  — d }t        |«      s| j                  }nSt        |t        «      rCt	        t        |j                  | j                  ¬«      j                  | j                  «      «      }|j                  j                  | j                  j                  j                  «      }t        | j                  «      j                  || j                  |¬«      }t!        d| j#                  ||«      «      S )N)ræ   )rY   r=   r	   )r±   r=   rI   r'   r   r   Ústepræ   rè   rò   rg   r2   r®   rY   r[   ré   r
   Ú_wrap_setop_result)r8   rh   Úres_i8Únew_freqÚ
res_valuesr‘   s         r9   Ú_wrap_range_setopz(DatetimeTimedeltaMixin._wrap_range_setopÙ  s»   € ØˆÜ�6Œ{à—y‘y‰HÜ˜¤
Ô+Ü Ü˜&Ÿ+™+¨D¯I©IÔ6×>Ñ>¸t¿y¹yÓIóˆHð —]‘]×'Ñ'¨¯
©
×(;Ñ(;×(AÑ(AÓBˆ
Ü�d—j‘jÓ!×-Ñ-ð Ø—*‘*Øð .ó 
ˆô �F˜D×3Ñ3°E¸6ÓBÓCÐCr:   c                ó|   — | j                   }|j                   }|j                  ||¬«      }| j                  ||«      S ©N©Úsort)r   Úintersectionr
  ©r8   rh   r  rk   rl   r  s         r9   Ú_range_intersectz'DatetimeTimedeltaMixin._range_intersectó  s@   € à×#Ñ#ˆØ×%Ñ%ˆØ×"Ñ" 5¨tÐ"Ó4ˆØ×%Ñ% e¨VÓ4Ð4r:   c                ó|   — | j                   }|j                   }|j                  ||¬«      }| j                  ||«      S r  )r   Úunionr
  r  s         r9   Ú_range_unionz#DatetimeTimedeltaMixin._range_unionú  s=   € à×#Ñ#ˆØ×%Ñ%ˆØ—‘˜E¨�Ó-ˆØ×%Ñ% e¨VÓ4Ð4r:   c                ó<  — t        d|«      }| j                  |«      r| j                  ||¬«      S | j                  |«      sJt	        j
                  | ||¬«      }| j                  ||«      }|j                  d«      j                  d«      S | j                  ||«      S )z_
        intersection specialized to the case with matching dtypes and both non-empty.
        rä   r  NÚinfer)	r
   r  r  Ú_can_fast_intersectr%   Ú_intersectionr  rì   Ú_fast_intersect)r8   rh   r  r‘   s       r9   r  z$DatetimeTimedeltaMixin._intersection  sœ   € ô Ð-¨uÓ5ˆà× Ñ  Ô'Ø×(Ñ(¨°TÐ(Ó:Ð:à×'Ñ'¨Ô.Ü×(Ñ(¨¨u¸4Ô@ˆFð ×,Ñ,¨U°FÓ;ˆFà×$Ñ$ TÓ*×5Ñ5°gÓ>Ð>ð ×'Ñ'¨¨tÓ4Ð4r:   c                óÂ   — | d   |d   k  r| |}}n|| }}t        |d   |d   «      }|d   }||k  r| d d }|S t        |j                  ||«      Ž }|j                  |   }|S rû   )Úminr³   Ú
slice_locsÚ_values)	r8   rh   r  rk   rl   rõ   rô   r‘   Úlslices	            r9   r  z&DatetimeTimedeltaMixin._fast_intersect  s†   € à�‰7�e˜A‘hÒØ �%‰Dà �%ˆDô �$�r‘(˜E "™IÓ&ˆØ�a‘ˆà�Š;Ø˜"˜1�XˆFð
 ˆô ˜DŸO™O¨E°3Ó7Ð8ˆFØ—\‘\ &Ñ)ˆFàˆr:   c                óœ   — | j                   €y|j                   | j                   k7  ry| j                  sy| j                   j                  dk(  S )NFrÕ   )r=   r°   Únr  s     r9   r  z*DatetimeTimedeltaMixin._can_fast_intersect,  sC   € à�9‰9ÐØà�Z‰Z˜4Ÿ9™9Ò$Øà×-Ò-àð �y‰y�{‰{˜aÑÐr:   c                óê   — | j                   }|�||j                   k7  ry| j                  syt        | «      dk(  st        |«      dk(  ry| d   |d   k  r| |}}n|| }}|d   }|d   }|||z   k(  xs ||v S )NFr   Tr«   )r=   r°   r±   )r8   rh   r=   rk   rl   Úright_startÚleft_ends          r9   Ú_can_fast_unionz&DatetimeTimedeltaMixin._can_fast_union>  s—   € ð �y‰yˆàˆ<˜4 5§:¡:Ò-Øà×+Ò+ð äˆt‹9˜Š>œS ›Z¨1š_àð �‰7�e˜A‘hÒØ �%‰Dà �%ˆDà˜A‘hˆØ˜‘8ˆð ˜x¨$™Ñ.ÒF°;À$Ð3FÐFr:   c                óJ  — | d   |d   k  r| |}}nr|du rj| |}}|d   }|j                  |d¬«      }|j                  d | }t        |j                  |f«      }t        | «      j	                  || j
                  ¬«      }	|	S || }}|d   }
|d   }|
|k  r‘|j                  |
d¬«      }|j                  |d  }t        |j                  |g«      }t        |t        | j                  «      «      sJ ‚|j                  | j                  k(  sJ ‚t        | «      j	                  |«      }	|	S |S )Nr   Frk   r¬   rŽ   r«   rl   )
r²   r  r   r[   ré   r�   rI   r2   Ú_freqr=   )r8   rh   r  rk   rl   Ú
left_startÚlocÚright_chunkÚdatesr‘   r#  Ú	right_ends               r9   Ú_fast_unionz"DatetimeTimedeltaMixin._fast_union\  s@  € ð �‰7�e˜A‘hÒØ �%‰DØ�U‰]ð  �%ˆDØ˜a™ˆJØ×$Ñ$ Z°fÐ$Ó=ˆCØŸ-™-¨¨Ð-ˆKÜ! 4§<¡<°Ð"=Ó>ˆEÜ˜$“Z×+Ñ+¨E¸¿	¹	Ð+ÓBˆFØˆMà �%ˆDà˜‘8ˆØ˜"‘Iˆ	ð �iÒØ×$Ñ$ X°GÐ$Ó<ˆCØŸ-™-¨¨Ð-ˆKÜ! 4§<¡<°Ð"=Ó>ˆEô ˜e¤T¨$¯*©*Ó%5Ô6Ð6Ð6ð —;‘; $§)¡)Ò+Ð+Ð+Ü˜$“Z×+Ñ+¨EÓ2ˆFØˆMàˆKr:   c                ó:  •— t        |t        | «      «      sJ ‚| j                  |j                  k(  sJ ‚| j                  |«      r| j	                  ||¬«      S | j                  |«      r| j                  ||¬«      }|S t        ‰| �!  ||«      j                  d«      S )Nr  r  )
rI   r[   rY   r  r  r$  r,  rw   Ú_unionrì   )r8   rh   r  r‘   r{   s       €r9   r.  zDatetimeTimedeltaMixin._union‚  s—   ø€ ä˜%¤ d£Ô,Ð,Ð,Ø�z‰z˜UŸ[™[Ò(Ð(Ð(à× Ñ  Ô'Ø×$Ñ$ U°Ð$Ó6Ð6à×Ñ Ô&Ø×%Ñ% e°$Ð%Ó7ˆFð ˆMä‘7‘> %¨Ó.×9Ñ9¸'ÓBÐBr:   c                óD   — d}| j                  |«      r| j                  }|S )zK
        Get the freq to attach to the result of a join operation.
        N)r$  r=   )r8   rh   r=   s      r9   Ú_get_join_freqz%DatetimeTimedeltaMixin._get_join_freq•  s%   € ð ˆØ×Ñ Ô&Ø—9‘9ˆDØˆr:   c                óè   •— |j                   | j                   k(  sJ |j                   | j                   f«       ‚t        ‰| �	  |||||«      \  }}}| j                  |«      |j                  _        |||fS r@   )rY   rw   Ú_wrap_join_resultr0  r2   r&  )r8   Újoinedrh   ÚlidxÚridxÚhowÚ
join_indexr{   s          €r9   r2  z(DatetimeTimedeltaMixin._wrap_join_resultž  sv   ø€ ð �{‰{˜dŸj™jÒ(ÐC¨5¯;©;¸¿
¹
Ð*CÓCÐ(Ü!&¡Ñ!:Ø�E˜4  só"
Ñˆ
�D˜$ð "&×!4Ñ!4°UÓ!;ˆ
×ÑÔØ˜4 Ð%Ð%r:   c                óL   — | j                   j                  j                  d«      S )NrW   )r2   r®   rg   r>   s    r9   Ú_get_engine_targetz)DatetimeTimedeltaMixin._get_engine_target­  s   € à�z‰z×"Ñ"×'Ñ'¨Ó-Ð-r:   c                ó–   — |j                  | j                  j                  j                  «      }| j                  j	                  |«      S r@   )rg   r2   r®   rY   Ú_from_backing_data)r8   r‘   s     r9   Ú_from_join_targetz(DatetimeTimedeltaMixin._from_join_target±  s5   € à—‘˜TŸZ™Z×0Ñ0×6Ñ6Ó7ˆØ�z‰z×,Ñ,¨VÓ4Ð4r:   c                óh  •— | j                   r–t        |t        t        f«      r€t	        |j
                  «      t	        | j
                  «      kD  rU|dk(  r|j                  | j
                  «      }n4|j                  | j
                  «      j                  | j
                  «      }t        ‰| �%  ||«      S )Nrl   )
r°   rI   r   r   r   ræ   rè   Úceilrw   Ú_searchsorted_monotonic)r8   r£   r­   r{   s      €r9   r?  z.DatetimeTimedeltaMixin._searchsorted_monotonic¶  s†   ø€ à×(Ò(Ü˜5¤9¬iÐ"8Ô9Ü" 5§:¡:Ó.Ô1CÀDÇIÁIÓ1NÒNð �wŠØŸ™ d§i¡iÓ0‘ð Ÿ
™
 4§9¡9Ó-×5Ñ5°d·i±iÓ@�ä‰wÑ.¨u°dÓ;Ð;r:   c                óÌ  — d}| j                   �Õt        |«      r,|dt        | «       dt        | «      dz
  fv r| j                   }|S t        |«      rBt	        j
                  t        j                  |t        j                  ¬«      t        | «      «      }t        |t        «      rA|j                  dv r3|j                  dv s|j                  t        | «      dfv r| j                   }|S )z7
        Find the `freq` for self.delete(loc).
        Nr   r«   rÕ   rÆ   rÔ   )r   N)r=   r   r±   r   r   Úmaybe_indices_to_slicerc   ru   ÚintprI   r³   r  rô   Ústop)r8   r(  r=   s      r9   Ú_get_delete_freqz'DatetimeTimedeltaMixin._get_delete_freqÉ  sÂ   € ð ˆØ�9‰9Ð Ü˜#ŒØ˜1œs 4›y˜j¨"¬c°$«i¸!©mÐ<Ñ<ØŸ9™9�Dð ˆô   Ô$ô ×4Ñ4ÜŸ
™
 3¬b¯g©gÔ6¼¸D»	ó�Cô ˜c¤5Ô)¨c¯h©h¸)Ñ.CØ—y‘y IÑ-°·±¼cÀ$»iÈÐ=NÑ1NØ#Ÿy™y˜Øˆr:   c                ó"  — | j                   j                  |«      }| j                   j                  |«      }d}| j                  �Ê| j                  ro|t
        u r	 |S |dt        | «       fv r#|| j                  z   | d   k(  r| j                  }|S |t        | «      k(  r!|| j                  z
  | d   k(  r| j                  }|S t        | j                  t        «      r| j                  }|S | j                  j                  |«      r| j                  }|S )z=
        Find the `freq` for self.insert(loc, item).
        Nr   r«   )
r2   Ú_validate_scalarÚ	_box_funcr=   Úsizer   r±   rI   r   Úis_on_offset)r8   r(  ÚitemrA   r=   s        r9   Ú_get_insert_freqz'DatetimeTimedeltaMixin._get_insert_freqß  s  € ð —
‘
×+Ñ+¨DÓ1ˆØ�z‰z×#Ñ# EÓ*ˆàˆØ�9‰9Ð à�yŠyØœ3‘;Øð ˆð ˜Q¤ T£ 
˜OÑ+°°t·y±yÑ0@ÀDÈÁGÒ0KØŸ9™9�Dð ˆð œS ›YÒ&¨D°4·9±9Ñ,<ÀÀRÁÒ,HØŸ9™9�Dð ˆô ˜DŸI™I¤tÔ,ð —y‘y�ð ˆð —‘×'Ñ'¨Ô-Ø—y‘y�Øˆr:   c                óf   •— t         ‰| �  |«      }| j                  |«      |j                  _        |S )añ  
        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')
        )rw   ÚdeleterD  r2   r&  )r8   r(  r‘   r{   s      €r9   rM  zDatetimeTimedeltaMixin.deleteù  s/   ø€ ô8 ‘‘ Ó$ˆØ!×2Ñ2°3Ó7ˆ�‰ÔØˆr:   c                ó”   •— t         ‰| �  ||«      }t        |t        | «      «      r!| j	                  ||«      |j
                  _        |S )a  
        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')
        )rw   ÚinsertrI   r[   rK  r2   r&  )r8   r(  rJ  r‘   r{   s       €r9   rO  zDatetimeTimedeltaMixin.insert  sA   ø€ ô8 ‘‘  TÓ*ˆÜ�fœd 4›jÔ)à!%×!6Ñ!6°s¸DÓ!AˆF�L‰LÔØˆr:   c                óf  — t        j                  d|«       t        j                  |t        j                  ¬«      }t        j                  | ||||fi |¤Ž}t        j                  |t        | «      «      }t        |t        «      r,| j                  j                  |«      }||j                  _        |S )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')
        rL   rÆ   )ÚnvÚvalidate_takerc   ru   rB  r&   Útaker   rA  r±   rI   r³   r2   Ú_get_getitem_freqr&  )	r8   Úindicesr5   Ú
allow_fillÚ
fill_valueÚkwargsr‘   Úmaybe_slicer=   s	            r9   rS  zDatetimeTimedeltaMixin.take>  s“   € ôb 	×Ñ˜˜VÔ$Ü—*‘*˜W¬B¯G©GÔ4ˆä,×1Ñ1Ø�'˜4 ¨Zñ
Ø;Añ
ˆô ×0Ñ0°¼#¸d»)ÓDˆÜ�k¤5Ô)Ø—:‘:×/Ñ/°Ó<ˆDØ!%ˆF�L‰LÔØˆr:   )rÎ   r-   )ræ   r-   rÎ   r	   )rÎ   ú
np.ndarrayrÔ   rÖ   )rÎ   rÒ   )rÎ   r'   rÐ   )rÎ   r	   )F)rh   r%   r  rÍ   rÎ   r%   )rh   r	   rÎ   rÍ   r@   )rh   r	   rÎ   r	   )r4  únpt.NDArray[np.intp] | Noner5  r[  r6  r,   rÎ   zEtuple[Self, npt.NDArray[np.intp] | None, npt.NDArray[np.intp] | None])r‘   rZ  )rk   )r­   zLiteral['left', 'right'])r(  zint | slice | Sequence[int])r(  r×   )r   TN)r5   r+   rV  rÍ   rÎ   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   r  r
  r  r  r  r  r  r$  r,  r.  r0  r2  r9  r<  r?  rD  rK  rM  rO  rS  rá   râ   s   @r9   rä   rä   '  sd  ø… ñð
 *Ó)Ø˜FÐ#€LØ˜6Ð"€Kð  %×<Ñ<ÐØ$×<Ñ<ÐØ—‘€Jàòó ðó-;ò^<ð òó ðô0>ðd ò (ó ð (ðJ òó ðóLóDó45ó5ô5ò.ó( ó$Gô<$ôLCò&ð&ð *ð	&ð
 *ð&ð ð&ð 
Oõ&ó.ó5ö
<ó&ó,õ4õ@ ðP ØØð<ð ð<ð ð	<ð 
÷<r:   rä   )PrÛ   Ú
__future__r   Úabcr   r   Útypingr   r   r   r	   r
   r   Únumpyrc   Úpandas._libsr   r   Úpandas._libs.tslibsr   r   r   r   r   r   r   Úpandas._libs.tslibs.dtypesr   Úpandas.compat.numpyr   rQ  Ú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.   rG   r/   ÚdictÚ_index_doc_kwargsr1   rä   rL   r:   r9   Ú<module>r~     sÒ   ðñõ #÷÷÷ ó ÷÷÷ ñ õ :Ý .÷ó õ÷õ 4÷÷
ó ÷ !Ð  ß (Ó (õõ FÝ 0Ý 5áÝ(Ý!÷ó õ (á˜×0Ñ0Ó1Ð ôL+Ð7¸ô L+ô^S	Ð2°Cõ S	r:   