§
    Ï! hÈ\ ã                  óÞ  — d dl mZ d dlmZmZ d dlmZ d dlZd dlmZm	Z	m
Z
mZmZmZmZmZ d dlZd dlZd dlmZmZ d dlmZ d dlmZmZmZmZmZmZmZm Z m!Z!m"Z"m#Z#m$Z$m%Z%m&Z&m'Z'm(Z(m)Z) d d	l*m+Z+m,Z, d d
l-m.Z. d dl/m0Z0 d dl1m2Z2 d dl3m4Z4m5Z5m6Z6m7Z7m8Z8m9Z9m:Z:m;Z;m<Z<m=Z=m>Z>m?Z?m@Z@mAZAmBZBmCZC d dlDmEZF d dlGmHZHmIZImJZJ d dlKmLZLmMZMmNZN d dlOmPZP d dlQmRZR d dlSmTZTmUZUmVZVmWZWmXZXmYZY d dlZm[Z[m\Z\m]Z]m^Z^m_Z_ d dl`maZambZb d dlcmdZdmeZe d dlfmgZgmhZhmiZimjZj d dlkmlZlmmZmmnZn d dlompZp d dlqmrZr d dlsmtZtmuZu d dlvmwZw d dlxmyZy d dlzm{Z{ d dl|m}c m~Z d dl€m�Z‚mƒZƒ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Ž erd d$l�m�Z�m‘Z‘ d d%l’m“Z“ d d&l”m•Z•m–Z–m—Z— ee6ef         Z˜dMd)„Z™dNd-„Zš G d.„ d/eret¦  «        Z› G d0„ d1e›¦  «        Zœd2Z�d3Zžd4ZŸd5Z  G d6„ d7e›¦  «        Z¡dOd<„Z¢edPd?„¦   «         Z£edQdB„¦   «         Z£dRdE„Z£dSdI„Z¤dTdL„Z¥dS )Ué    )Úannotations)ÚdatetimeÚ	timedelta)ÚwrapsN)ÚTYPE_CHECKINGÚAnyÚCallableÚLiteralÚUnionÚcastÚfinalÚoverload)ÚalgosÚlib)ÚNDArrayBacked)Ú
BaseOffsetÚIncompatibleFrequencyÚNaTÚNaTTypeÚPeriodÚ
ResolutionÚTickÚ	TimedeltaÚ	TimestampÚadd_overflowsafeÚastype_overflowsafeÚget_unit_from_dtypeÚiNaTÚints_to_pydatetimeÚints_to_pytimedeltaÚperiods_per_dayÚ	to_offset)ÚRoundToÚround_nsint64)Úcompare_mismatched_resolutions)Úget_unit_for_round)Úinteger_op_not_supported)Ú	ArrayLikeÚAxisIntÚDatetimeLikeScalarÚDtypeÚDtypeObjÚFÚInterpolateOptionsÚNpDtypeÚPositionalIndexer2DÚPositionalIndexerTupleÚScalarIndexerÚSelfÚSequenceIndexerÚTimeAmbiguousÚTimeNonexistentÚnpt)Úfunction)ÚAbstractMethodErrorÚInvalidComparisonÚPerformanceWarning)ÚAppenderÚSubstitutionÚcache_readonly)Úfind_stack_level)Ú'construct_1d_object_array_from_listlike)Úis_all_stringsÚis_integer_dtypeÚis_list_likeÚis_object_dtypeÚis_string_dtypeÚpandas_dtype)Ú
ArrowDtypeÚCategoricalDtypeÚDatetimeTZDtypeÚExtensionDtypeÚPeriodDtype)ÚABCCategoricalÚABCMultiIndex)Úis_valid_na_for_dtypeÚisna)Ú
algorithmsÚmissingÚnanopsÚops)ÚisinÚ	map_arrayÚunique1d)Údatetimelike_accumulations)ÚOpsMixin)ÚNDArrayBackedExtensionArrayÚravel_compat)ÚArrowExtensionArray)ÚExtensionArray)ÚIntegerArray)ÚarrayÚensure_wrapped_if_datetimelikeÚextract_array)Úcheck_array_indexerÚcheck_setitem_lengths)Úunpack_zerodim_and_defer)Úinvalid_comparisonÚmake_invalid_op)Úfrequencies)ÚIteratorÚSequence©ÚIndex)ÚDatetimeArrayÚPeriodArrayÚTimedeltaArrayÚop_nameÚstrc                óP   — t          | ¦  «        } t          | ¦  «        |¦  «        S ©N)re   rc   )rn   Úops     úYc:\xampp_lite_8_4\www\timesheet\venv\Lib\site-packages\pandas/core/arrays/datetimelike.pyÚ_make_unpacked_invalid_oprt   ¤   s(   € Ý	˜Ñ	!Ô	!€BØ,Õ# GÑ,Ô,¨RÑ0Ô0Ð0ó    Úmethr-   Úreturnc                ób   ‡ — t          ‰ ¦  «        ˆ fd„¦   «         }t          t          |¦  «        S )zâ
    For PeriodArray methods, dispatch to DatetimeArray and re-wrap the results
    in PeriodArray.  We cannot use ._ndarray directly for the affected
    methods because the i8 data has different semantics on NaT values.
    c                ód  •— t          | j        t          ¦  «        s ‰| g|¢R i |¤ŽS |                      d¦  «        } ‰|g|¢R i |¤Ž}|t          u rt          S t          |t
          ¦  «        r|                      |j        ¦  «        S |                     d¦  «        }|                      |¦  «        S )NúM8[ns]Úi8)	Ú
isinstanceÚdtyperK   Úviewr   r   Ú	_box_funcÚ_valueÚ_from_backing_data)ÚselfÚargsÚkwargsÚarrÚresultÚres_i8rv   s         €rs   Únew_methz"_period_dispatch.<locals>.new_meth°   sÀ   ø€ å˜$œ*¥kÑ2Ô2ð 	/Ø�4˜Ð.˜tÐ.Ð.Ð. vÐ.Ð.Ð.à�iŠi˜Ñ!Ô!ˆØ��cÐ+˜DÐ+Ð+Ð+ FÐ+Ð+ˆØ•Sˆ=ˆ=ÝˆJÝ˜¥	Ñ*Ô*ð 	1Ø—>’> &¤-Ñ0Ô0Ð0à—’˜TÑ"Ô"ˆØ×&Ò& vÑ.Ô.Ð.ru   )r   r   r-   )rv   rˆ   s   ` rs   Ú_period_dispatchr‰   ©   s@   ø€ õ ˆ4�[„[ð/ð /ð /ð /ñ „[ð/õ •�8ÑÔÐru   c                  óŽ  ‡ — e Zd ZU dZded<   ded<   ded<   ded	<   d
ed<   ed±d„¦   «         Z	 d²d³d„Zed´d„¦   «         Z	dµd„Z
d¶d„Zd·d„Zd „ Zd¸d!„Zd¹d#„Zedºd%„¦   «         Zd&dd'œd»d+„Zd¼d½d-„Z	 d¾d¿d0„ZedÀd3„¦   «         ZedÁd6„¦   «         ZdÂˆ fd:„ZdÃd;„ZdÄˆ fd>„ZdÅd?„ZdÆdÇˆ fdA„ZedÈdB„¦   «         ZedÉdE„¦   «         ZedÊdH„¦   «         ZedËdÌdK„¦   «         ZdÍdÌˆ fdL„ZdM„ Zdd@dNœdÎdQ„Zd¼dÏdR„Zd¼dÐdT„ZdU„ Ze dÑdW„¦   «         Z!e"dÍdX„¦   «         Z#dÒd[„Z$dÓd\„Z%edÓd]„¦   «         Z&ed±d^„¦   «         Z'e(dfdÔd`„Z)edÕdb„¦   «         Z*edÕdc„¦   «         Z+edÖde„¦   «         Z,ed×df„¦   «         Z-ed±dg„¦   «         Z.ed±dh„¦   «         Z/ed±di„¦   «         Z0dj„ Z1 e2dk¦  «        Z3 e2dl¦  «        Z4 e2dm¦  «        Z5 e2dn¦  «        Z6 e2do¦  «        Z7 e2dp¦  «        Z8 e2dq¦  «        Z9 e2dr¦  «        Z: e2ds¦  «        Z; e2dt¦  «        Z< e2du¦  «        Z= e2dv¦  «        Z>e dØdx„¦   «         Z?e dÃdy„¦   «         Z@e dÙdz„¦   «         ZAe dÚd{„¦   «         ZBe dÛd}„¦   «         ZCe dÜd~„¦   «         ZDe dÝd€„¦   «         ZEe dÞdƒ„¦   «         ZFd„„ ZGd…„ ZHdßd†„ZIe dàdˆ„¦   «         ZJe d‰„ ¦   «         ZKe dŠ„ ¦   «         ZLe dádŒ„¦   «         ZMe dâd�„¦   «         ZNd@dŽœdãd‘„ZO ePd’¦  «        d“„ ¦   «         ZQd”„ ZR ePd•¦  «        d–„ ¦   «         ZSd—„ ZTdÈd˜„ZUdÈd™„ZVeWdäˆ fd�„¦   «         ZXeWdd@džœdåd¡„¦   «         ZYeWdd@džœdåd¢„¦   «         ZZd@d£d¤œdæd¥„Z[eWdd@džœdåd¦„¦   «         Z\dÆdçd¨„Z]dèd°„Z^ˆ xZ_S )éÚDatetimeLikeArrayMixinzÈ
    Shared Base/Mixin class for DatetimeArray, TimedeltaArray, PeriodArray

    Assumes that __new__/__init__ defines:
        _ndarray

    and that inheriting subclass implements:
        freq
    ztuple[str, ...]Ú_infer_matcheszCallable[[DtypeObj], bool]Ú_is_recognized_dtypeztuple[type, ...]Ú_recognized_scalarsú
np.ndarrayÚ_ndarrayúBaseOffset | NoneÚfreqrw   Úboolc                ó   — dS )NT© ©r‚   s    rs   Ú_can_hold_naz#DatetimeLikeArrayMixin._can_hold_naØ   s   € àˆtru   NFr}   úDtype | NoneÚcopyÚNonec                ó    — t          | ¦  «        ‚rq   ©r9   )r‚   Údatar}   r’   r™   s        rs   Ú__init__zDatetimeLikeArrayMixin.__init__Ü   s   € õ " $Ñ'Ô'Ð'ru   útype[DatetimeLikeScalar]c                ó    — t          | ¦  «        ‚)z£
        The scalar associated with this datelike

        * PeriodArray : Period
        * DatetimeArray : Timestamp
        * TimedeltaArray : Timedelta
        rœ   r–   s    rs   Ú_scalar_typez#DatetimeLikeArrayMixin._scalar_typeá   s   € õ " $Ñ'Ô'Ð'ru   Úvaluero   ÚDTScalarOrNaTc                ó    — t          | ¦  «        ‚)ay  
        Construct a scalar type from a string.

        Parameters
        ----------
        value : str

        Returns
        -------
        Period, Timestamp, or Timedelta, or NaT
            Whatever the type of ``self._scalar_type`` is.

        Notes
        -----
        This should call ``self._check_compatible_with`` before
        unboxing the result.
        rœ   ©r‚   r¢   s     rs   Ú_scalar_from_stringz*DatetimeLikeArrayMixin._scalar_from_stringì   ó   € õ$ " $Ñ'Ô'Ð'ru   ú)np.int64 | np.datetime64 | np.timedelta64c                ó    — t          | ¦  «        ‚)a´  
        Unbox the integer value of a scalar `value`.

        Parameters
        ----------
        value : Period, Timestamp, Timedelta, or NaT
            Depending on subclass.

        Returns
        -------
        int

        Examples
        --------
        >>> arr = pd.array(np.array(['1970-01-01'], 'datetime64[ns]'))
        >>> arr._unbox_scalar(arr[0])
        numpy.datetime64('1970-01-01T00:00:00.000000000')
        rœ   r¥   s     rs   Ú_unbox_scalarz$DatetimeLikeArrayMixin._unbox_scalar   s   € õ* " $Ñ'Ô'Ð'ru   Úotherc                ó    — t          | ¦  «        ‚)a|  
        Verify that `self` and `other` are compatible.

        * DatetimeArray verifies that the timezones (if any) match
        * PeriodArray verifies that the freq matches
        * Timedelta has no verification

        In each case, NaT is considered compatible.

        Parameters
        ----------
        other

        Raises
        ------
        Exception
        rœ   ©r‚   r«   s     rs   Ú_check_compatible_withz-DatetimeLikeArrayMixin._check_compatible_with  r§   ru   c                ó    — t          | ¦  «        ‚)zI
        box function to get object from internal representation
        rœ   )r‚   Úxs     rs   r   z DatetimeLikeArrayMixin._box_func-  s   € õ " $Ñ'Ô'Ð'ru   c                ó:   — t          j        || j        d¬¦  «        S )z1
        apply box func to passed values
        F)Úconvert)r   Ú	map_inferr   )r‚   Úvaluess     rs   Ú_box_valuesz"DatetimeLikeArrayMixin._box_values3  s   € õ Œ}˜V T¤^¸UÐCÑCÔCÐCru   rg   c                ó�   ‡ — ‰ j         dk    r(ˆ fd„t          t          ‰ ¦  «        ¦  «        D ¦   «         S ˆ fd„‰ j        D ¦   «         S )Né   c              3  ó(   •K  — | ]}‰|         V — Œd S rq   r•   )Ú.0Únr‚   s     €rs   ú	<genexpr>z2DatetimeLikeArrayMixin.__iter__.<locals>.<genexpr>;  s'   øè è € Ð6Ð6 �D˜”GÐ6Ð6Ð6Ð6Ð6Ð6ru   c              3  óB   •K  — | ]}‰                      |¦  «        V — Œd S rq   )r   )r¹   Úvr‚   s     €rs   r»   z2DatetimeLikeArrayMixin.__iter__.<locals>.<genexpr>=  s/   øè è € Ð9Ð9¨!�D—N’N 1Ñ%Ô%Ð9Ð9Ð9Ð9Ð9Ð9ru   )ÚndimÚrangeÚlenÚasi8r–   s   `rs   Ú__iter__zDatetimeLikeArrayMixin.__iter__9  sR   ø€ ØŒ9�qŠ=ˆ=Ø6Ð6Ð6Ð6¥U­3¨t©9¬9Ñ%5Ô%5Ð6Ñ6Ô6Ð6à9Ð9Ð9Ð9¨t¬yÐ9Ñ9Ô9Ð9ru   únpt.NDArray[np.int64]c                ó6   — | j                              d¦  «        S )z‘
        Integer representation of the values.

        Returns
        -------
        ndarray
            An ndarray with int64 dtype.
        r{   )r�   r~   r–   s    rs   rÁ   zDatetimeLikeArrayMixin.asi8?  s   € ð Œ}×!Ò! $Ñ'Ô'Ð'ru   r   )Úna_repÚdate_formatrÅ   ústr | floatúnpt.NDArray[np.object_]c               ó    — t          | ¦  «        ‚)z|
        Helper method for astype when converting to strings.

        Returns
        -------
        ndarray[str]
        rœ   )r‚   rÅ   rÆ   s      rs   Ú_format_native_typesz+DatetimeLikeArrayMixin._format_native_typesO  s   € õ " $Ñ'Ô'Ð'ru   Úboxedc                ó   — dj         S )Nz'{}')Úformat)r‚   rË   s     rs   Ú
_formatterz!DatetimeLikeArrayMixin._formatter[  s
   € àŒ}Ðru   úNpDtype | Noneúbool | Nonec                ó~   — t          |¦  «        r(t          j        t          | ¦  «        t          ¬¦  «        S | j        S )N©r}   )rD   Únpr^   ÚlistÚobjectr�   )r‚   r}   r™   s      rs   Ú	__array__z DatetimeLikeArrayMixin.__array__b  s7   € õ ˜5Ñ!Ô!ð 	6Ý”8�D ™JœJ­fÐ5Ñ5Ô5Ð5ØŒ}Ðru   Úitemr2   c                ó   — d S rq   r•   ©r‚   r×   s     rs   Ú__getitem__z"DatetimeLikeArrayMixin.__getitem__j  ó   € àˆru   ú(SequenceIndexer | PositionalIndexerTupler3   c                ó   — d S rq   r•   rÙ   s     rs   rÚ   z"DatetimeLikeArrayMixin.__getitem__n  s	   € ð
 	ˆru   Úkeyr0   úSelf | DTScalarOrNaTc                óð   •— t          dt          ¦   «                              |¦  «        ¦  «        }t          j        |¦  «        r|S t          t
          |¦  «        }|                      |¦  «        |_        |S )z’
        This getitem defers to the underlying array, which by-definition can
        only handle list-likes, slices, and integer scalars
        zUnion[Self, DTScalarOrNaT])r   ÚsuperrÚ   r   Ú	is_scalarr3   Ú_get_getitem_freqÚ_freq)r‚   rÞ   r†   Ú	__class__s      €rs   rÚ   z"DatetimeLikeArrayMixin.__getitem__u  si   ø€ õ Ð2µE±G´G×4GÒ4GÈÑ4LÔ4LÑMÔMˆÝŒ=˜Ñ Ô ð 	(ØˆMõ �$ Ñ'Ô'ˆFØ×-Ò-¨cÑ2Ô2ˆŒØˆru   c                ó  — t          | j        t          ¦  «        }|r| j        }nÛ| j        dk    rd}nÍt          | |¦  «        }d}t          |t          ¦  «        r&| j        �|j        �|j        | j        z  }nˆ| j        }n€|t          u r| j        }not          j
        |¦  «        r[t          j        |                     t          j        ¦  «        ¦  «        }t          |t          ¦  «        r|                      |¦  «        S |S )z\
        Find the `freq` attribute to assign to the result of a __getitem__ lookup.
        r·   N)r|   r}   rK   r’   r¾   ra   ÚsliceÚstepÚEllipsisÚcomÚis_bool_indexerr   Úmaybe_booleans_to_slicer~   rÓ   Úuint8rã   )r‚   rÞ   Ú	is_periodr’   Únew_keys        rs   rã   z(DatetimeLikeArrayMixin._get_getitem_freq†  sö   € õ ˜tœz­;Ñ7Ô7ˆ	Øð 	;Ø”9ˆDˆDØŒY˜!Š^ˆ^ØˆDˆDå% d¨CÑ0Ô0ˆCØˆDÝ˜#�uÑ%Ô%ð ;Ø”9Ð(¨S¬XÐ-AØœ8 d¤iÑ/�D�Dàœ9�D�DØ���ð ”y��ÝÔ$ SÑ)Ô)ð ;ÝÔ5°c·h²h½r¼xÑ6HÔ6HÑIÔI�Ý˜g¥uÑ-Ô-ð ;Ø×1Ò1°'Ñ:Ô:Ð:Øˆru   ú,int | Sequence[int] | Sequence[bool] | sliceúNaTType | Any | Sequence[Any]c                óž   •— t          ||| ¦  «        }t          ¦   «                              ||¦  «         |rd S |                      ¦   «          d S rq   )rb   rá   Ú__setitem__Ú_maybe_clear_freq)r‚   rÞ   r¢   Úno_oprå   s       €rs   ró   z"DatetimeLikeArrayMixin.__setitem__¤  sW   ø€ õ & c¨5°$Ñ7Ô7ˆõ 	‰Œ×Ò˜C Ñ'Ô'Ð'àð 	ØˆFà×ÒÑ Ô Ð Ð Ð ru   c                ó   — d S rq   r•   r–   s    rs   rô   z(DatetimeLikeArrayMixin._maybe_clear_freqº  s	   € ð 	ˆru   Tc                ó°  •— t          |¦  «        }|t          k    r°| j        j        dk    r6t	          d| ¦  «        } | j        }t          || j        d| j        ¬¦  «        }|S | j        j        dk    rt          | j
        d¬¦  «        S |                      | j                             ¦   «         ¦  «                             | j        ¦  «        S t          |t           ¦  «        r#t#          ¦   «                              ||¬¦  «        S t'          |¦  «        r|                      ¦   «         S |j        d	v rJ| j        }|t*          j        k    rt/          d
| j        › d|› d�¦  «        ‚|r|                     ¦   «         }|S |j        dv r| j        |k    s|j        dk    r)dt3          | ¦  «        j        › d|› �}t/          |¦  «        ‚t+          j        | |¬¦  «        S )NÚMrk   Ú	timestamp)ÚtzÚboxÚresoÚmT)rû   ©r™   ÚiuzConverting from z to z? is not supported. Do obj.astype('int64').astype(dtype) insteadÚmMÚfzCannot cast z
 to dtype rÒ   )rF   rÕ   r}   Úkindr   rÁ   r   rú   Ú_cresor    r�   rµ   ÚravelÚreshapeÚshaper|   rJ   rá   ÚastyperE   rÊ   rÓ   Úint64Ú	TypeErrorr™   ÚtypeÚ__name__Úasarray)r‚   r}   r™   Úi8dataÚ	convertedr´   Úmsgrå   s          €rs   r  zDatetimeLikeArrayMixin.astype¿  sò  ø€ õ
 ˜UÑ#Ô#ˆà•FŠ?ˆ?ØŒzŒ #Ò%Ð%Ý˜O¨TÑ2Ô2�ð œ�Ý.ØØ”wØ#Øœð	ñ ô �	ð !Ð à”” CÒ'Ð'Ý*¨4¬=¸dÐCÑCÔCÐCà×#Ò# D¤I§O¢OÑ$5Ô$5Ñ6Ô6×>Ò>¸t¼zÑJÔJÐJå˜�~Ñ.Ô.ð 	1Ý‘7”7—>’> %¨d�>Ñ3Ô3Ð3Ý˜UÑ#Ô#ð 	1Ø×,Ò,Ñ.Ô.Ð.ØŒZ˜4ÐÐð ”YˆFØ�œÒ Ð ÝðC t¤zð Cð C°uð Cð Cð Cñô ð ð
 ð 'ØŸš™œ�ØˆMØŒj˜DÐ Ð  T¤Z°5Ò%8Ð%8¸U¼ZÈ3Ò=NÐ=Nð H¥ d¡¤Ô!4ÐGÐGÀÐGÐGˆCÝ˜C‘.”.Ð å”:˜d¨%Ð0Ñ0Ô0Ð0ru   c                ó   — d S rq   r•   r–   s    rs   r~   zDatetimeLikeArrayMixin.viewò  rÛ   ru   úLiteral['M8[ns]']rk   c                ó   — d S rq   r•   ©r‚   r}   s     rs   r~   zDatetimeLikeArrayMixin.viewö  rÛ   ru   úLiteral['m8[ns]']rm   c                ó   — d S rq   r•   r  s     rs   r~   zDatetimeLikeArrayMixin.viewú  rÛ   ru   .r(   c                ó   — d S rq   r•   r  s     rs   r~   zDatetimeLikeArrayMixin.viewþ  rÛ   ru   c                óF   •— t          ¦   «                              |¦  «        S rq   )rá   r~   )r‚   r}   rå   s     €rs   r~   zDatetimeLikeArrayMixin.view  s   ø€ õ ‰wŒw�|Š|˜EÑ"Ô"Ð"ru   c                ó  — t          |t          ¦  «        r;	 |                      |¦  «        }n$# t          t          f$ r t          |¦  «        ‚w xY wt          || j        ¦  «        s	|t          u rU|                      |¦  «        }	 |  	                    |¦  «         nñ# t          t          f$ r}t          |¦  «        |‚d }~ww xY wt          |¦  «        st          |¦  «        ‚t          |¦  «        t          | ¦  «        k    rt          d¦  «        ‚	 |                      |d¬¦  «        }|  	                    |¦  «         nM# t          t          f$ r9}t          t          |dd ¦  «        ¦  «        rnt          |¦  «        |‚Y d }~nd }~ww xY w|S )NzLengths must matchT)Úallow_objectr}   )r|   ro   r¦   Ú
ValueErrorr   r:   rŽ   r   r¡   r®   r	  rC   rÀ   Ú_validate_listlikerD   Úgetattr)r‚   r«   Úerrs      rs   Ú_validate_comparison_valuez1DatetimeLikeArrayMixin._validate_comparison_value  sÂ  € Ý�e�SÑ!Ô!ð 	/ð/à×0Ò0°Ñ7Ô7��øÝÕ 5Ð6ð /ð /ð /å'¨Ñ.Ô.Ð.ð/øøøõ �e˜TÔ5Ñ6Ô6ð 	<¸%Å3¸,¸,Ø×%Ò% eÑ,Ô,ˆEð8Ø×+Ò+¨EÑ2Ô2Ð2Ð2øÝÕ4Ð5ð 8ð 8ð 8å'¨Ñ.Ô.°CÐ7øøøøð8øøøõ ˜eÑ$Ô$ð 	<Ý# EÑ*Ô*Ð*å�‰ZŒZ�3˜t™9œ9Ò$Ð$ÝÐ1Ñ2Ô2Ð2ð<Ø×/Ò/°ÀDÐ/ÑIÔI�Ø×+Ò+¨EÑ2Ô2Ð2Ð2øÝÕ4Ð5ð <ð <ð <Ý"¥7¨5°'¸4Ñ#@Ô#@ÑAÔAð <àå+¨EÑ2Ô2¸Ð;ð �D�D�D�Døøøøð<øøøð ˆs9   —- ­!AÂB ÂCÂ,B<Â<CÄ,D? Ä?F	Å/FÆF	)Úallow_listlikeÚunboxr  r   c               ól  — t          || j        ¦  «        r�nt          |t          ¦  «        rO	 |                      |¦  «        }nÙ# t          $ r+}|                      ||¦  «        }t          |¦  «        |‚d}~ww xY wt          || j        ¦  «        rt          }n„t          |¦  «        r%|                      ||¦  «        }t          |¦  «        ‚t          || j        ¦  «        r|                      |¦  «        }n%|                      ||¦  «        }t          |¦  «        ‚|s|S |                      |¦  «        S )a  
        Validate that the input value can be cast to our scalar_type.

        Parameters
        ----------
        value : object
        allow_listlike: bool, default False
            When raising an exception, whether the message should say
            listlike inputs are allowed.
        unbox : bool, default True
            Whether to unbox the result before returning.  Note: unbox=False
            skips the setitem compatibility check.

        Returns
        -------
        self._scalar_type or NaT
        N)r|   r¡   ro   r¦   r  Ú_validation_error_messager	  rN   r}   r   rO   rŽ   rª   )r‚   r¢   r  r   r  r  s         rs   Ú_validate_scalarz'DatetimeLikeArrayMixin._validate_scalar0  sJ  € õ0 �e˜TÔ.Ñ/Ô/ð 	!Ùå˜�sÑ#Ô#ð 	!ð.Ø×0Ò0°Ñ7Ô7��øÝð .ð .ð .Ø×4Ò4°U¸NÑKÔK�Ý ‘n”n¨#Ð-øøøøð.øøøõ # 5¨$¬*Ñ5Ô5ð 	!åˆEˆEå�%‰[Œ[ð 	!ð ×0Ò0°¸ÑGÔGˆCÝ˜C‘.”.Ð å˜˜tÔ7Ñ8Ô8ð 	!ð ×%Ò% eÑ,Ô,ˆEˆEð ×0Ò0°¸ÑGÔGˆCÝ˜C‘.”.Ð àð 	ð ˆLØ×!Ò! %Ñ(Ô(Ð(s   ®A Á
A9Á&A4Á4A9c                óè   — t          |d¦  «        r t          |dd¦  «        dk    r|j        › d�}ndt          |¦  «        j        › d�}|rd| j        j        › d|› d�}nd| j        j        › d	|› d�}|S )
a+  
        Construct an exception message on validation error.

        Some methods allow only scalar inputs, while others allow either scalar
        or listlike.

        Parameters
        ----------
        allow_listlike: bool, default False

        Returns
        -------
        str
        r}   r¾   r   z arrayú'zvalue should be a 'z!', 'NaT', or array of those. Got z	 instead.z' or 'NaT'. Got )Úhasattrr  r}   r
  r  r¡   )r‚   r¢   r  Úmsg_gotr  s        rs   r"  z0DatetimeLikeArrayMixin._validation_error_messagem  sÄ   € õ �5˜'Ñ"Ô"ð 	2¥w¨u°f¸aÑ'@Ô'@À1Ò'DÐ'DØœÐ,Ð,Ð,ˆGˆGà1�$˜u™+œ+Ô.Ð1Ð1Ð1ˆGØð 		ð= dÔ&7Ô&@ð =ð =Ø*1ð=ð =ð =ð ˆCð* dÔ&7Ô&@ð *ð *Øð*ð *ð *ð ð ˆ
ru   r  c                ó8  — t          |t          | ¦  «        ¦  «        r.| j        j        dv r|s|                     | j        d¬¦  «        }|S t          |t          ¦  «        r<t          |¦  «        dk    r)t          | ¦  «                             g | j        ¬¦  «        S t          |d¦  «        r�|j        t          k    rt          j        |¦  «        | j        v rd	 t          | ¦  «                             |¦  «        }n@# t          t          f$ r, |r|cY S |                      |d¦  «        }t          |¦  «        ‚w xY wt#          |d¬¦  «        }t%          |¦  «        }t#          |d¬¦  «        }t'          |¦  «        r;	 t          | ¦  «                             || j        ¬¦  «        }n# t          $ r Y nw xY wt          |j        t(          ¦  «        r:|j        j        | j        k    r%|                     ¦   «         }t#          |d¬¦  «        }|rt/          |j        ¦  «        rnLt          | ¦  «                             |j        ¦  «        s%|                      |d¦  «        }t          |¦  «        ‚| j        j        dv r|s|                     | j        d¬¦  «        }|S )	Nr   F©Úround_okr   rÒ   r}   T©Úextract_numpy)r|   r
  r}   r  Úas_unitÚunitrÔ   rÀ   Ú_from_sequencer&  rÕ   r   Úinfer_dtyperŒ   r  r	  r"  r`   Úpd_arrayrA   rH   Ú
categoriesÚ_internal_get_valuesrD   r�   )r‚   r¢   r  r  s       rs   r  z)DatetimeLikeArrayMixin._validate_listlikeŒ  s™  € Ý�e�T $™ZœZÑ(Ô(ð 	ØŒzŒ $Ð&Ð&¨|Ð&àŸš d¤i¸%˜Ñ@Ô@�ØˆLå�e�TÑ"Ô"ð 	C¥s¨5¡z¤z°Q¢ å˜‘:”:×,Ò,¨R°t´zÐ,ÑBÔBÐBå�5˜'Ñ"Ô"ð 
	) u¤{µfÒ'<Ð'<õ Œ˜uÑ%Ô%¨Ô)<Ð<Ð<ð)Ý  ™JœJ×5Ò5°eÑ<Ô<�E�EøÝ"¥IÐ.ð )ð )ð )Ø#ð %Ø$˜˜˜Ø×8Ò8¸ÀÑEÔE�CÝ# C™.œ.Ð(ð	)øøøõ ˜e°4Ð8Ñ8Ô8ˆÝ˜‘”ˆÝ˜e°4Ð8Ñ8Ô8ˆå˜%Ñ Ô ð 	ðõ ˜T™
œ
×1Ò1°%¸t¼zÐ1ÑJÔJ��øÝð ð ð Ø�ðøøøõ �e”kÕ#3Ñ4Ô4ð 	AàÔÔ%¨¬Ò3Ð3à×2Ò2Ñ4Ô4�Ý% e¸4Ð@Ñ@Ô@�àð 	!�O¨E¬KÑ8Ô8ð 	!Øå�d‘”×0Ò0°´Ñ=Ô=ð 	!Ø×0Ò0°¸Ñ=Ô=ˆCÝ˜C‘.”.Ð àŒ:Œ?˜dÐ"Ð"¨<Ð"à—M’M $¤)°e�MÑ<Ô<ˆEØˆs$   Ã"C< Ã<D9Ä&D9Å=)F' Æ'
F4Æ3F4c                ó¤   — t          |¦  «        r|                      |¦  «        }n|                      |d¬¦  «        S |                      |¦  «        S )NT)r  )rC   r  r#  Ú_unboxr¥   s     rs   Ú_validate_setitem_valuez.DatetimeLikeArrayMixin._validate_setitem_valueÆ  sS   € Ý˜ÑÔð 	EØ×+Ò+¨EÑ2Ô2ˆEˆEà×(Ò(¨¸tÐ(ÑDÔDÐDà�{Š{˜5Ñ!Ô!Ð!ru   ú6np.int64 | np.datetime64 | np.timedelta64 | np.ndarrayc                ó’   — t          j        |¦  «        r|                      |¦  «        }n|                      |¦  «         |j        }|S )zZ
        Unbox either a scalar with _unbox_scalar or an instance of our own type.
        )r   râ   rª   r®   r�   r­   s     rs   r5  zDatetimeLikeArrayMixin._unboxÎ  sM   € õ
 Œ=˜ÑÔð 	#Ø×&Ò& uÑ-Ô-ˆEˆEð ×'Ò'¨Ñ.Ô.Ð.Ø”NˆEØˆru   c                ó¨   — ddl m} t          | ||¬¦  «        } ||¦  «        }t          |t          ¦  «        r|                     ¦   «         S |j        S )Nr   ri   )Ú	na_action)Úpandasrj   rU   r|   rM   Úto_numpyr^   )r‚   Úmapperr:  rj   r†   s        rs   ÚmapzDatetimeLikeArrayMixin.mapà  s_   € à Ð Ð Ð Ð Ð å˜4 °9Ð=Ñ=Ô=ˆØ��v‘”ˆå�f�mÑ,Ô,ð 	 Ø—?’?Ñ$Ô$Ð$à”<Ðru   r´   únpt.NDArray[np.bool_]c                ó–  — |j         j        dv r t          j        | j        t
          ¬¦  «        S t          |¦  «        }t          |t          | ¦  «        ¦  «        �sOg d¢}|j         t          k    r®t          j        |d| j         ¬¦  «        }|j         t          k    r|                      |¦  «        S t          j        |d¬¦  «        }||vrS|dk    rnLd	|v r(t          |                      t          ¦  «        |¦  «        S t          j        | j        t
          ¬¦  «        S 	 t          | ¦  «                             |¦  «        }t!          j        d
| j         › d�t$          t'          ¦   «         ¬¦  «         n8# t(          $ r+ t          |                      t          ¦  «        |¦  «        cY S w xY w| j         j        dv r*t+          d| ¦  «        } |                     | j        ¦  «        }	 |                      |¦  «         n7# t2          t(          f$ r# t          j        | j        t
          ¬¦  «        cY S w xY wt          | j        |j        ¦  «        S )z÷
        Compute boolean array of whether each value is found in the
        passed set of values.

        Parameters
        ----------
        values : np.ndarray or ExtensionArray

        Returns
        -------
        ndarray[bool]
        ÚfiucrÒ   )r   Útimedelta64r   Ú
datetime64ÚdateÚperiodT)Úconvert_non_numericÚdtype_if_all_natF©ÚskipnaÚstringÚmixedz"The behavior of 'isin' with dtype=z¼ and castable values (e.g. strings) is deprecated. In a future version, these will not be considered matching by isin. Explicitly cast to the appropriate dtype before calling isin instead.©Ú
stacklevelr   úDatetimeArray | TimedeltaArray)r}   r  rÓ   Úzerosr  r“   r_   r|   r
  rÕ   r   Úmaybe_convert_objectsrT   r0  r  r/  ÚwarningsÚwarnÚFutureWarningr?   r  r   r-  r.  r®   r	  rÁ   )r‚   r´   Ú	inferableÚinferreds       rs   rT   zDatetimeLikeArrayMixin.isinì  sh  € ð Œ<Ô Ð&Ð&å”8˜DœJ­dÐ3Ñ3Ô3Ð3å/°Ñ7Ô7ˆå˜&¥$ t¡*¤*Ñ-Ô-ñ *	ðð ð ˆIð Œ|�vÒ%Ð%ÝÔ2ØØ(,Ø%)¤Zðñ ô �ð
 ”<¥6Ò)Ð)ØŸ9š9 VÑ,Ô,Ð,åœ?¨6¸%Ð@Ñ@Ô@�Ø 9Ð,Ð,Ø 8Ò+Ð+Øà  HÐ,Ð,Ý# D§K¢KµÑ$7Ô$7¸Ñ@Ô@Ð@å!œx¨¬
½$Ð?Ñ?Ô?Ð?ðÝ˜d™œ×2Ò2°6Ñ:Ô:�õ ”ð,¸¼ð ,ð ,ð ,õ
 "Ý/Ñ1Ô1ð	ñ 	ô 	ð 	ð 	øõ ð 9ð 9ð 9Ý˜DŸKšK­Ñ/Ô/°Ñ8Ô8Ð8Ð8Ð8ð9øøøð Œ:Œ?˜dÐ"Ð"ÝÐ8¸$Ñ?Ô?ˆDð —^’^ D¤IÑ.Ô.ˆFð	4ð ×'Ò'¨Ñ/Ô/Ð/Ð/øÝ�:Ð&ð 	4ð 	4ð 	4å”8˜DœJ­dÐ3Ñ3Ô3Ð3Ð3Ð3ð	4øøøõ �D”I˜vœ{Ñ+Ô+Ð+s$   Ä"E3 Å32F(Æ'F(Ç$G: Ç:1H.È-H.c                ó   — | j         S rq   )Ú_isnanr–   s    rs   rO   zDatetimeLikeArrayMixin.isnaA  s
   € ØŒ{Ðru   c                ó"   — | j         t          k    S )z-
        return if each value is nan
        )rÁ   r   r–   s    rs   rW  zDatetimeLikeArrayMixin._isnanD  s   € ð
 Œy�DÒ Ð ru   c                óN   — t          | j                             ¦   «         ¦  «        S )zJ
        return if I have any nans; enables various perf speedups
        )r“   rW  Úanyr–   s    rs   Ú_hasnazDatetimeLikeArrayMixin._hasnaK  s   € õ
 �D”K—O’OÑ%Ô%Ñ&Ô&Ð&ru   r†   c                ó”   — | j         r@|r|                     |¦  «        }|€t          j        }t          j        || j        |¦  «         |S )az  
        Parameters
        ----------
        result : np.ndarray
        fill_value : object, default iNaT
        convert : str, dtype or None

        Returns
        -------
        result : ndarray with values replace by the fill_value

        mask the result if needed, convert to the provided dtype if its not
        None

        This is an internal routine.
        )r[  r  rÓ   ÚnanÚputmaskrW  )r‚   r†   Ú
fill_valuer²   s       rs   Ú_maybe_mask_resultsz*DatetimeLikeArrayMixin._maybe_mask_resultsR  sO   € ð& Œ;ð 	8Øð 0ØŸš wÑ/Ô/�ØÐ!ÝœV�
ÝŒJ�v˜tœ{¨JÑ7Ô7Ð7Øˆru   ú
str | Nonec                ó,   — | j         €dS | j         j        S )a{  
        Return the frequency object as a string if it's set, otherwise None.

        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'
        N)r’   Úfreqstrr–   s    rs   rc  zDatetimeLikeArrayMixin.freqstrp  s   € ð4 Œ9ÐØ�4ØŒyÔ Ð ru   c                óh   — | j         dk    rdS 	 t          j        | ¦  «        S # t          $ r Y dS w xY w)ax  
        Tries to return a string representing a frequency generated by infer_freq.

        Returns None if it can't autodetect the frequency.

        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[ns]', freq=None)
        >>> tdelta_idx.inferred_freq
        '10D'
        r·   N)r¾   rf   Ú
infer_freqr  r–   s    rs   Úinferred_freqz$DatetimeLikeArrayMixin.inferred_freqŽ  sL   € ð0 Œ9˜Š>ˆ>Ø�4ð	ÝÔ)¨$Ñ/Ô/Ð/øÝð 	ð 	ð 	Ø�4�4ð	øøøs   �# £
1°1úResolution | Nonec                ód   — | j         }|€d S 	 t          j        |¦  «        S # t          $ r Y d S w xY wrq   )rc  r   Úget_reso_from_freqstrÚKeyError)r‚   rc  s     rs   Ú_resolution_objz&DatetimeLikeArrayMixin._resolution_obj­  sK   € à”,ˆØˆ?Ø�4ð	ÝÔ3°GÑ<Ô<Ð<øÝð 	ð 	ð 	Ø�4�4ð	øøøs   �! ¡
/®/c                ó   — | j         j        S )zO
        Returns day, hour, minute, second, millisecond or microsecond
        )rk  Úattrnamer–   s    rs   Ú
resolutionz!DatetimeLikeArrayMixin.resolution·  s   € ð Ô#Ô,Ð,ru   c                óD   — t          j        | j        d¬¦  «        d         S )NT©Útimeliker   ©r   Úis_monotonicrÁ   r–   s    rs   Ú_is_monotonic_increasingz/DatetimeLikeArrayMixin._is_monotonic_increasingÂ  ó   € åÔ! $¤)°dÐ;Ñ;Ô;¸AÔ>Ð>ru   c                óD   — t          j        | j        d¬¦  «        d         S )NTrp  r·   rr  r–   s    rs   Ú_is_monotonic_decreasingz/DatetimeLikeArrayMixin._is_monotonic_decreasingÆ  ru  ru   c                ó|   — t          t          | j                             d¦  «        ¦  «        ¦  «        | j        k    S )NÚK)rÀ   rV   rÁ   r  Úsizer–   s    rs   Ú
_is_uniquez!DatetimeLikeArrayMixin._is_uniqueÊ  s-   € å•8˜DœIŸOšO¨CÑ0Ô0Ñ1Ô1Ñ2Ô2°d´iÒ?Ð?ru   c                ó®  — | j         dk    rbt          |dd ¦  «        | j        k    rH ||                      ¦   «         |                     ¦   «         ¦  «                             | j        ¦  «        S 	 |                      |¦  «        }n!# t          $ r t          | ||¦  «        cY S w xY wt          |dd ¦  «        }t          |¦  «        rBt          j
        |t          j        |                      t          ¦  «        ¦  «        |¦  «        }|S |t          u rQ|t           j        u r!t          j        | j        t&          ¬¦  «        }n t          j        | j        t&          ¬¦  «        }|S t+          | j        t.          ¦  «        s¼t1          t2          | ¦  «        } | j        |j        k    r—t+          |t7          | ¦  «        ¦  «        s]	 |                     | j        d¬¦  «        }n\# t<          $ r2 t          j        |j         ¦  «        }tC          | j"        ||¦  «        cY S w xY w|j"        }tC          | j"        ||¦  «        S |  #                    |¦  «        } || j"         $                    d¦  «        | $                    d¦  «        ¦  «        }tK          |¦  «        }| j&        |z  }| '                    ¦   «         r$|t           j        u }	t          j(        |||	¦  «         |S )Nr·   r  r}   rÒ   Fr)  r{   ))r¾   r  r  r  r  r  r:   rd   rD   rS   Úcomp_method_OBJECT_ARRAYrÓ   r  r  rÕ   r   ÚoperatorÚneÚonesr“   rO  r|   r}   rK   r   ÚTimelikeOpsr  r
  r-  r.  r  r^   Úasm8r%   r�   r5  r~   rO   rW  rZ  r^  )
r‚   r«   rr   r}   r†   Ú	other_arrÚ
other_valsÚo_maskÚmaskÚ
nat_results
             rs   Ú_cmp_methodz"DatetimeLikeArrayMixin._cmp_methodÑ  s«  € ØŒ9�qŠ=ˆ=�W U¨G°TÑ:Ô:¸d¼jÒHÐHà�2�d—j’j‘l”l E§K¢K¡M¤MÑ2Ô2×:Ò:¸4¼:ÑFÔFÐFð	7Ø×3Ò3°EÑ:Ô:ˆEˆEøÝ ð 	7ð 	7ð 	7Ý% d¨E°2Ñ6Ô6Ð6Ð6Ð6ð	7øøøõ ˜˜w¨Ñ-Ô-ˆÝ˜5Ñ!Ô!ð 	õ Ô1Ø•B”J˜tŸ{š{­6Ñ2Ô2Ñ3Ô3°Uñô ˆFð ˆMØ•Cˆ<ˆ<Ø•X”[Ð Ð Ýœ ¤µ4Ð8Ñ8Ô8��åœ $¤*µDÐ9Ñ9Ô9�ØˆMå˜$œ*¥kÑ2Ô2ð 	XÝ� TÑ*Ô*ˆDØŒ{˜eœlÒ*Ð*Ý! %­¨d©¬Ñ4Ô4ð Xðà %§¢¨d¬iÀ% Ñ HÔ H˜˜øÝ%ð ð ð Ý$&¤H¨U¬ZÑ$8Ô$8˜	Ý=Ø œM¨9°bñ ô  ð ð ð ðøøøð !&¤�IÝ9¸$¼-ÈÐTVÑWÔWÐWà—[’[ Ñ'Ô'ˆ
à��D”M×&Ò& tÑ,Ô,¨j¯oªo¸dÑ.CÔ.CÑDÔDˆå�e‘”ˆØŒ{˜VÑ#ˆØ�8Š8‰:Œ:ð 	1Ø�xœ{Ð*ˆJÝŒJ�v˜t ZÑ0Ô0Ð0àˆs$   Á/B ÂB#Â"B#Æ?G Ç9HÈHÚ__pow__Ú__rpow__Ú__mul__Ú__rmul__Ú__truediv__Ú__rtruediv__Ú__floordiv__Ú__rfloordiv__Ú__mod__Ú__rmod__Ú
__divmod__Ú__rdivmod__ú@tuple[int | npt.NDArray[np.int64], None | npt.NDArray[np.bool_]]c                ó°   — t          |t          ¦  «        r
|j        }d}n4t          |t          t          f¦  «        r
|j        }d}n|j        }|j        }||fS )zN
        Get the int64 values and b_mask to pass to add_overflowsafe.
        N)r|   r   Úordinalr   r   r€   rW  rÁ   )r‚   r«   Úi8valuesr†  s       rs   Ú_get_i8_values_and_maskz.DatetimeLikeArrayMixin._get_i8_values_and_mask  sc   € õ �e�VÑ$Ô$ð 		"Ø”}ˆHØˆDˆDÝ˜¥	­9Ð5Ñ6Ô6ð 	"Ø”|ˆHØˆDˆDð ”<ˆDØ”zˆHØ˜ˆ~Ðru   c                ó¶   — t          | j        t          ¦  «        r| j        S t	          j        |¦  «        sdS t          | j        t          ¦  «        r| j        S dS )zP
        Check if we can preserve self.freq in addition or subtraction.
        N)r|   r}   rK   r’   r   râ   r   r­   s     rs   Ú_get_arithmetic_result_freqz2DatetimeLikeArrayMixin._get_arithmetic_result_freq*  sX   € õ �d”j¥+Ñ.Ô.ð 	Ø”9ÐÝ”˜uÑ%Ô%ð 	Ø�4Ý˜œ	¥4Ñ(Ô(ð 	à”9ÐØˆtru   c                ó–  — t          j        | j        d¦  «        s9t          dt	          | ¦  «        j        › dt	          |¦  «        j        › �¦  «        ‚t          d| ¦  «        } ddlm} ddl	m
} |t          usJ ‚t          |¦  «        rN| j        t          j        ¦   «                              d| j        › d	�¦  «        z   } |j        ||j        ¬
¦  «        S t%          |¦  «        }|                      |¦  «        \  } }t          d| ¦  «        } |                      |¦  «        \  }}t+          | j        t/          j        |d¬
¦  «        ¦  «        }|                     d| j        › d	�¦  «        } ||j        | j        ¬¦  «        }|                     d| j        › d	�¦  «        }|                      |¦  «        }	 |j        |||	¬¦  «        S )Nrý   úcannot add ú and rm   r   ©rk   )Útz_to_dtypezM8[ú]rÒ   r{   ©rú   r.  ©r}   r’   )r   Úis_np_dtyper}   r	  r
  r  r   Úpandas.core.arraysrk   Úpandas.core.arrays.datetimesr   r   rO   r�   Úto_datetime64r  r.  Ú_simple_newr   Ú_ensure_matching_resosr™  r   rÁ   rÓ   r  r~   rú   r›  )
r‚   r«   rk   r   r†   Úother_i8r…  Ú
res_valuesr}   Únew_freqs
             rs   Ú_add_datetimelike_scalarz/DatetimeLikeArrayMixin._add_datetimelike_scalar:  sá  € åŒ˜tœz¨3Ñ/Ô/ð 	ÝØN�d 4™jœjÔ1ÐNÐN½¸U¹¼Ô8LÐNÐNñô ð õ Ð$ dÑ+Ô+ˆà4Ð4Ð4Ð4Ð4Ð4Ø<Ð<Ð<Ð<Ð<Ð<à�CÐÐÐÐÝ�‰;Œ;ð 	Ið ”]¥SÔ%6Ñ%8Ô%8×%?Ò%?Ð@RÀdÄiÐ@RÐ@RÐ@RÑ%SÔ%SÑSˆFà,�=Ô,¨V¸6¼<ÐHÑHÔHÐHå˜%Ñ Ô ˆØ×1Ò1°%Ñ8Ô8‰ˆˆeÝÐ$ dÑ+Ô+ˆà×7Ò7¸Ñ>Ô>Ñˆ�&Ý! $¤)­R¬Z¸ÈÐ-MÑ-MÔ-MÑNÔNˆØ—[’[Ð!3 t¤yÐ!3Ð!3Ð!3Ñ4Ô4ˆ
à�˜uœx¨d¬iÐ8Ñ8Ô8ˆØ—[’[Ð!3 t¤yÐ!3Ð!3Ð!3Ñ4Ô4ˆ
Ø×3Ò3°EÑ:Ô:ˆØ(ˆ}Ô(¨¸5ÀxÐPÑPÔPÐPru   c                ó²   — t          j        | j        d¦  «        s9t          dt	          | ¦  «        j        › dt	          |¦  «        j        › �¦  «        ‚|| z   S )Nrý   r�  rž  )r   r¤  r}   r	  r
  r  r­   s     rs   Ú_add_datetime_arraylikez.DatetimeLikeArrayMixin._add_datetime_arraylike\  s[   € åŒ˜tœz¨3Ñ/Ô/ð 	ÝØN�d 4™jœjÔ1ÐNÐN½¸U¹¼Ô8LÐNÐNñô ð ð
 �t‰|Ðru   údatetime | np.datetime64c                ó4  — | j         j        dk    r$t          dt          | ¦  «        j        › �¦  «        ‚t          d| ¦  «        } t          |¦  «        r
| t          z
  S t          |¦  «        }|  	                    |¦  «        \  } }|  
                    |¦  «        S )Nrø   ú"cannot subtract a datelike from a rk   )r}   r  r	  r
  r  r   rO   r   r   r©  Ú_sub_datetimelike)r‚   r«   Útss      rs   Ú_sub_datetimelike_scalarz/DatetimeLikeArrayMixin._sub_datetimelike_scalarf  s”   € ð Œ:Œ?˜cÒ!Ð!ÝÐVÅÀdÁÄÔATÐVÐVÑWÔWÐWå�O TÑ*Ô*ˆõ �‰;Œ;ð 	à�#‘:Ðå�uÑÔˆà×.Ò.¨rÑ2Ô2‰ˆˆbØ×%Ò% bÑ)Ô)Ð)ru   c                óB  — | j         j        dk    r$t          dt          | ¦  «        j        › �¦  «        ‚t          | ¦  «        t          |¦  «        k    rt          d¦  «        ‚t          d| ¦  «        } |                      |¦  «        \  } }|  	                    |¦  «        S )Nrø   r²  ú$cannot add indices of unequal lengthrk   )
r}   r  r	  r
  r  rÀ   r  r   r©  r³  r­   s     rs   Ú_sub_datetime_arraylikez.DatetimeLikeArrayMixin._sub_datetime_arraylikey  s‘   € àŒ:Œ?˜cÒ!Ð!ÝÐVÅÀdÁÄÔATÐVÐVÑWÔWÐWåˆt‰9Œ9�˜E™
œ
Ò"Ð"ÝÐCÑDÔDÐDå�O TÑ*Ô*ˆà×1Ò1°%Ñ8Ô8‰ˆˆeØ×%Ò% eÑ,Ô,Ð,ru   úTimestamp | DatetimeArrayc                ó2  — t          d| ¦  «        } ddlm} 	 |                      |¦  «         nN# t          $ rA}t          |¦  «                             dd¦  «        } t          |¦  «        |¦  «        |‚d }~ww xY w|                      |¦  «        \  }}t          | j
        t          j        | d¬¦  «        ¦  «        }|                     d| j        › d	�¦  «        }|                      |¦  «        }	t          d
|	¦  «        }	 |j        ||j        |	¬¦  «        S )Nrk   r   ©rm   ÚcompareÚsubtractr{   rÒ   útimedelta64[r¡  zTick | Noner£  )r   r¥  rm   Ú_assert_tzawareness_compatr	  ro   Úreplacer
  r™  r   rÁ   rÓ   r  r~   r.  r›  r¨  r}   )
r‚   r«   rm   r  Únew_messagerª  r…  r«  Úres_m8r¬  s
             rs   r³  z(DatetimeLikeArrayMixin._sub_datetimelike†  s*  € å�O TÑ*Ô*ˆà5Ð5Ð5Ð5Ð5Ð5ð	2Ø×+Ò+¨EÑ2Ô2Ð2Ð2øÝð 	2ð 	2ð 	2Ý˜c™(œ(×*Ò*¨9°jÑAÔAˆKØ•$�s‘)”)˜KÑ(Ô(¨cÐ1øøøøð	2øøøð  ×7Ò7¸Ñ>Ô>Ñˆ�&Ý% d¤iµ´¸X¸IÈTÐ1RÑ1RÔ1RÑSÔSˆ
Ø—’Ð!<°´	Ð!<Ð!<Ð!<Ñ=Ô=ˆà×3Ò3°EÑ:Ô:ˆÝ˜ xÑ0Ô0ˆØ)ˆ~Ô)¨&¸¼È8ÐTÑTÔTÐTs   ˜. ®
A9¸<A4Á4A9r   rl   c                ó  — t          j        | j        d¦  «        s$t          dt	          | ¦  «        j        › �¦  «        ‚ddlm} t          j	        |j
        | j        ¦  «        }t          |j        ¦  «        } |||¬¦  «        }|| z   S )Nrý   zcannot add Period to a r   )rl   rÒ   )r   r¤  r}   r	  r
  r  Úpandas.core.arrays.periodrl   rÓ   Úbroadcast_tor—  r  rK   r’   )r‚   r«   rl   Úi8valsr}   Úparrs         rs   Ú_add_periodz"DatetimeLikeArrayMixin._add_periodš  s�   € åŒ˜tœz¨3Ñ/Ô/ð 	MÝÐKµd¸4±j´jÔ6IÐKÐKÑLÔLÐLð 	:Ð9Ð9Ð9Ð9Ð9å” ¤°´
Ñ;Ô;ˆÝ˜EœJÑ'Ô'ˆØˆ{˜6¨Ð/Ñ/Ô/ˆØ�d‰{Ðru   c                ó    — t          | ¦  «        ‚rq   rœ   )r‚   Úoffsets     rs   Ú_add_offsetz"DatetimeLikeArrayMixin._add_offset§  s   € Ý! $Ñ'Ô'Ð'ru   c                ó®  — t          |¦  «        r{t          j        | j        d¬¦  «                             | j        j        ¦  «        }|                     t          ¦  «         t          | ¦  «         
                    || j        ¬¦  «        S t          d| ¦  «        } t          |¦  «        }|                      |¦  «        \  } }|                      |¦  «        S )zk
        Add a delta of a timedeltalike

        Returns
        -------
        Same type as self
        r{   rÒ   rN  )rO   rÓ   Úemptyr  r~   r�   r}   Úfillr   r
  r¨  r   r   r©  Ú_add_timedeltalike)r‚   r«   Ú
new_valuess      rs   Ú_add_timedeltalike_scalarz0DatetimeLikeArrayMixin._add_timedeltalike_scalarª  s¹   € õ �‰;Œ;ð 	Håœ $¤*°DÐ9Ñ9Ô9×>Ò>¸t¼}Ô?RÑSÔSˆJØ�OŠO�DÑ!Ô!Ð!Ý˜‘:”:×)Ò)¨*¸D¼JÐ)ÑGÔGÐGõ Ð4°dÑ;Ô;ˆÝ˜%Ñ Ô ˆØ×1Ò1°%Ñ8Ô8‰ˆˆeØ×&Ò& uÑ-Ô-Ð-ru   c                óÚ   — t          | ¦  «        t          |¦  «        k    rt          d¦  «        ‚t          d| ¦  «        } |                      |¦  «        \  } }|                      |¦  «        S )zl
        Add a delta of a TimedeltaIndex

        Returns
        -------
        Same type as self
        r·  rN  )rÀ   r  r   r©  rÏ  r­   s     rs   Ú_add_timedelta_arraylikez/DatetimeLikeArrayMixin._add_timedelta_arraylike¾  se   € õ ˆt‰9Œ9�˜E™
œ
Ò"Ð"ÝÐCÑDÔDÐDåÐ4°dÑ;Ô;ˆà×1Ò1°%Ñ8Ô8‰ˆˆeØ×&Ò& uÑ-Ô-Ð-ru   úTimedelta | TimedeltaArrayc                ó`  — t          d| ¦  «        } |                      |¦  «        \  }}t          | j        t	          j        |d¬¦  «        ¦  «        }|                     | j        j        ¦  «        }|  	                    |¦  «        }t          | ¦  «                             || j        |¬¦  «        S )NrN  r{   rÒ   r£  )r   r™  r   rÁ   rÓ   r  r~   r�   r}   r›  r
  r¨  )r‚   r«   rª  r…  rÐ  r«  r¬  s          rs   rÏ  z)DatetimeLikeArrayMixin._add_timedeltalikeÐ  s¡   € åÐ4°dÑ;Ô;ˆà×7Ò7¸Ñ>Ô>Ñˆ�&Ý% d¤iµ´¸HÈDÐ1QÑ1QÔ1QÑRÔRˆ
Ø—_’_ T¤]Ô%8Ñ9Ô9ˆ
à×3Ò3°EÑ:Ô:ˆõ
 �D‰zŒz×%Ò%Ø˜dœj¨xð &ñ 
ô 
ð 	
ru   c                óâ  — t          | j        t          ¦  «        r>t          dt	          | ¦  «        j        › dt	          t          ¦  «        j        › �¦  «        ‚t          d| ¦  «        } t          j	        | j
        t          j        ¬¦  «        }|                     t          ¦  «         |                     | j        j        ¦  «        }t	          | ¦  «                             || j        d¬¦  «        S )z$
        Add pd.NaT to self
        zCannot add rž  zTimedeltaArray | DatetimeArrayrÒ   Nr£  )r|   r}   rK   r	  r
  r  r   r   rÓ   rÍ  r  r  rÎ  r   r~   r�   r¨  ©r‚   r†   s     rs   Ú_add_natzDatetimeLikeArrayMixin._add_natá  sÑ   € õ
 �d”j¥+Ñ.Ô.ð 	ÝØL�d 4™jœjÔ1ÐLÐL½½S¹	¼	Ô8JÐLÐLñô ð õ Ð4°dÑ;Ô;ˆõ ”˜$œ*­B¬HÐ5Ñ5Ô5ˆØ�Š•DÑÔÐØ—’˜Tœ]Ô0Ñ1Ô1ˆõ �D‰zŒz×%Ò%Ø˜$œ*¨4ð &ñ 
ô 
ð 	
ru   c                ó"  — t          j        | j        t           j        ¬¦  «        }|                     t
          ¦  «         | j        j        dv r.t          d| ¦  «        } | 	                    d| j
        › d�¦  «        S | 	                    d¦  «        S )z+
        Subtract pd.NaT from self
        rÒ   r   zDatetimeArray| TimedeltaArrayr¾  r¡  ztimedelta64[ns])rÓ   rÍ  r  r  rÎ  r   r}   r  r   r~   r.  r×  s     rs   Ú_sub_natzDatetimeLikeArrayMixin._sub_natø  s€   € õ ”˜$œ*­B¬HÐ5Ñ5Ô5ˆØ�Š•DÑÔÐØŒ:Œ?˜dÐ"Ð"åÐ7¸Ñ>Ô>ˆDØ—;’;Ð:¨d¬iÐ:Ð:Ð:Ñ;Ô;Ð;à—;’;Ð0Ñ1Ô1Ð1ru   úPeriod | PeriodArrayc                óø  ‡ — t          ‰ j        t          ¦  «        s9t          dt	          |¦  «        j        › dt	          ‰ ¦  «        j        › �¦  «        ‚t          d‰ ¦  «        Š ‰                      |¦  «         ‰                      |¦  «        \  }}t          ‰ j
        t          j        | d¬¦  «        ¦  «        }t          j        ˆ fd„|D ¦   «         ¦  «        }|€‰ j        }n
‰ j        |z  }t          ||<   |S )Núcannot subtract ú from rl   r{   rÒ   c                ó.   •— g | ]}‰j         j        |z  ‘ŒS r•   )r’   Úbase)r¹   r°   r‚   s     €rs   ú
<listcomp>z:DatetimeLikeArrayMixin._sub_periodlike.<locals>.<listcomp>  s"   ø€ ÐEÐEÐE°A˜TœYœ^¨aÑ/ÐEÐEÐEru   )r|   r}   rK   r	  r
  r  r   r®   r™  r   rÁ   rÓ   r  r^   rW  r   )r‚   r«   rª  r…  Únew_i8_dataÚnew_datar†  s   `      rs   Ú_sub_periodlikez&DatetimeLikeArrayMixin._sub_periodlike  sý   ø€ õ ˜$œ*¥kÑ2Ô2ð 	ÝØT¥4¨¡;¤;Ô#7ÐTÐT½tÀD¹z¼zÔ?RÐTÐTñô ð õ �M 4Ñ(Ô(ˆØ×#Ò# EÑ*Ô*Ð*à×7Ò7¸Ñ>Ô>Ñˆ�&Ý& t¤yµ"´*¸h¸YÈdÐ2SÑ2SÔ2SÑTÔTˆÝ”8ÐEÐEÐEÐE¸ÐEÑEÔEÑFÔFˆàˆ>à”;ˆDˆDð ”; Ñ'ˆDÝˆ�‰Øˆru   c                óÈ  — |t           j        t           j        fv sJ ‚t          |¦  «        dk    r| j        dk    r || |d         ¦  «        S t          j        dt          | ¦  «        j        › d�t          t          ¦   «         ¬¦  «         | j        |j        k    sJ | j        |j        f¦   «         ‚ ||                      d¦  «        t          j        |¦  «        ¦  «        }|S )aZ  
        Add or subtract array-like of DateOffset objects

        Parameters
        ----------
        other : np.ndarray[object]
        op : {operator.add, operator.sub}

        Returns
        -------
        np.ndarray[object]
            Except in fastpath case with length 1 where we operate on the
            contained scalar.
        r·   r   z)Adding/subtracting object-dtype array to z not vectorized.rL  ÚO)r~  ÚaddÚsubrÀ   r¾   rQ  rR  r
  r  r;   r?   r  r  rÓ   r  )r‚   r«   rr   r«  s       rs   Ú_addsub_object_arrayz+DatetimeLikeArrayMixin._addsub_object_array%  sé   € ð  •h”l¥H¤LÐ1Ð1Ð1Ð1Ð1Ýˆu‰:Œ:˜Š?ˆ?˜tœy¨Aš~˜~ð �2�d˜E !œHÑ%Ô%Ð%åŒð5Ý�D‰zŒzÔ"ð5ð 5ð 5åÝ'Ñ)Ô)ð		
ñ 	
ô 	
ð 	
ð Œz˜Uœ[Ò(Ð(Ð(¨4¬:°u´{Ð*CÑ(Ô(Ð(à�R˜Ÿš CÑ(Ô(­"¬*°UÑ*;Ô*;Ñ<Ô<ˆ
ØÐru   rH  ÚnamerI  c               ó  — |dvr"t          d|› dt          | ¦  «        › �¦  «        ‚t          t          |¦  «        } ||                      ¦   «         fd|i|¤Ž}t          | ¦  «                             || j        ¬¦  «        S )N>   ÚcummaxÚcumminzAccumulation z not supported for rI  rÒ   )r	  r
  r  rW   r™   r¨  r}   )r‚   rê  rI  r„   rr   r†   s         rs   Ú_accumulatez"DatetimeLikeArrayMixin._accumulateI  sˆ   € ØÐ+Ð+Ð+ÝÐQ¨DÐQÐQÅTÈ$ÁZÄZÐQÐQÑRÔRÐRåÕ/°Ñ6Ô6ˆØ��D—I’I‘K”KÐ9Ð9¨Ð9°&Ð9Ð9ˆå�D‰zŒz×%Ò% f°D´JÐ%Ñ?Ô?Ð?ru   Ú__add__c                ó  — t          |dd ¦  «        }t          |¦  «        }|t          u r|                      ¦   «         }�n{t	          |t
          t          t          j        f¦  «        r|  	                    |¦  «        }�n=t	          |t          ¦  «        r|                      |¦  «        }�nt	          |t          t          j        f¦  «        r|                      |¦  «        }�nÙt	          |t          ¦  «        r1t!          j        | j        d¦  «        r|                      |¦  «        }�n“t!          j        |¦  «        rht	          | j        t*          ¦  «        st-          | ¦  «        ‚t/          d| ¦  «        }|                     ||j        j        z  t4          j        ¦  «        }�nt!          j        |d¦  «        r|                      |¦  «        }nìt;          |¦  «        r!|                      |t4          j        ¦  «        }n¼t!          j        |d¦  «        st	          |t>          ¦  «        r|                       |¦  «        S tC          |¦  «        rgt	          | j        t*          ¦  «        st-          | ¦  «        ‚t/          d| ¦  «        }|                     ||j        j        z  t4          j        ¦  «        }ntD          S t	          |t          j#        ¦  «        r0t!          j        |j        d¦  «        rddl$m%}  |j&        |¦  «        S |S )Nr}   rý   rl   rø   r   r»  )'r  r_   r   rØ  r|   r   r   rÓ   rB  rÑ  r   rË  r   rC  r­  r   r   r¤  r}   rÈ  Ú
is_integerrK   r'   r   Ú_addsub_int_array_or_scalarÚ_nr~  rç  rÓ  rD   ré  rI   r¯  rB   ÚNotImplementedÚndarrayr¥  rm   r/  ©r‚   r«   Úother_dtyper†   Úobjrm   s         rs   rï  zDatetimeLikeArrayMixin.__add__R  s´  € å˜e W¨dÑ3Ô3ˆÝ.¨uÑ5Ô5ˆð •Cˆ<ˆ<Ø—]’]‘_”_ˆF‰FÝ˜¥¥iµ´Ð@ÑAÔAð (	"Ø×3Ò3°EÑ:Ô:ˆF‰FÝ˜�zÑ*Ô*ð &	"à×%Ò% eÑ,Ô,ˆF‰FÝ˜¥­"¬-Ð8Ñ9Ô9ð #	"Ø×2Ò2°5Ñ9Ô9ˆF‰FÝ˜�vÑ&Ô&ð !	"­3¬?¸4¼:ÀsÑ+KÔ+Kð !	"Ø×%Ò% eÑ,Ô,ˆF‰FÝŒ^˜EÑ"Ô"ð 	"õ ˜dœj­+Ñ6Ô6ð 5Ý.¨tÑ4Ô4Ð4Ý�} dÑ+Ô+ˆCØ×4Ò4°U¸S¼Y¼\Ñ5IÍ8Ì<ÑXÔXˆF‰Fõ Œ_˜[¨#Ñ.Ô.ð 	"à×2Ò2°5Ñ9Ô9ˆFˆFÝ˜[Ñ)Ô)ð 	"à×.Ò.¨uµh´lÑCÔCˆFˆFÝŒ_˜[¨#Ñ.Ô.ð 	"µ*Ø�ñ3
ô 3
ð 	"ð ×/Ò/°Ñ6Ô6Ð6Ý˜kÑ*Ô*ð 	"Ý˜dœj­+Ñ6Ô6ð 5Ý.¨tÑ4Ô4Ð4Ý�} dÑ+Ô+ˆCØ×4Ò4°U¸S¼Y¼\Ñ5IÍ8Ì<ÑXÔXˆFˆFõ "Ð!å�f�bœjÑ)Ô)ð 	9­c¬o¸f¼lÈCÑ.PÔ.Pð 	9Ø9Ð9Ð9Ð9Ð9Ð9à0�>Ô0°Ñ8Ô8Ð8Øˆru   c                ó,   — |                       |¦  «        S rq   )rï  r­   s     rs   Ú__radd__zDatetimeLikeArrayMixin.__radd__Š  s   € à�|Š|˜EÑ"Ô"Ð"ru   Ú__sub__c                ó:  — t          |dd ¦  «        }t          |¦  «        }|t          u r|                      ¦   «         }�n‘t	          |t
          t          t          j        f¦  «        r|  	                    | ¦  «        }�nRt	          |t          ¦  «        r|                      | ¦  «        }�n%t	          |t          t          j        f¦  «        r|                      |¦  «        }�nít          j        |¦  «        rht	          | j        t$          ¦  «        st'          | ¦  «        ‚t)          d| ¦  «        }|                     ||j        j        z  t.          j        ¦  «        }�nqt	          |t2          ¦  «        r|                      |¦  «        }�nEt          j        |d¦  «        r|                      | ¦  «        }�nt;          |¦  «        r!|                      |t.          j        ¦  «        }nèt          j        |d¦  «        st	          |t>          ¦  «        r|                       |¦  «        }n¨t	          |t$          ¦  «        r|                      |¦  «        }n}tC          |¦  «        rgt	          | j        t$          ¦  «        st'          | ¦  «        ‚t)          d| ¦  «        }|                     ||j        j        z  t.          j        ¦  «        }ntD          S t	          |t          j#        ¦  «        r0t          j        |j        d¦  «        rddl$m%}  |j&        |¦  «        S |S )Nr}   rl   rý   rø   r   r»  )'r  r_   r   rÚ  r|   r   r   rÓ   rB  rÑ  r   rË  r   rC  rµ  r   rñ  r}   rK   r'   r   rò  ró  r~  rè  r   rä  r¤  rÓ  rD   ré  rI   r¸  rB   rô  rõ  r¥  rm   r/  rö  s         rs   rû  zDatetimeLikeArrayMixin.__sub__Ž  sÍ  € å˜e W¨dÑ3Ô3ˆÝ.¨uÑ5Ô5ˆð •Cˆ<ˆ<Ø—]’]‘_”_ˆF‰FÝ˜¥¥iµ´Ð@ÑAÔAð (	"Ø×3Ò3°U°FÑ;Ô;ˆF‰FÝ˜�zÑ*Ô*ð &	"à×%Ò% u fÑ-Ô-ˆF‰FÝ˜¥­"¬-Ð8Ñ9Ô9ð #	"Ø×2Ò2°5Ñ9Ô9ˆF‰FÝŒ^˜EÑ"Ô"ð !	"õ ˜dœj­+Ñ6Ô6ð 5Ý.¨tÑ4Ô4Ð4Ý�} dÑ+Ô+ˆCØ×4Ò4°U¸S¼Y¼\Ñ5IÍ8Ì<ÑXÔXˆF‰Få˜�vÑ&Ô&ð 	"Ø×)Ò)¨%Ñ0Ô0ˆF‰Fõ Œ_˜[¨#Ñ.Ô.ð 	"à×2Ò2°E°6Ñ:Ô:ˆF‰FÝ˜[Ñ)Ô)ð 	"à×.Ò.¨uµh´lÑCÔCˆFˆFÝŒ_˜[¨#Ñ.Ô.ð 	"µ*Ø�ñ3
ô 3
ð 	"ð ×1Ò1°%Ñ8Ô8ˆFˆFÝ˜¥[Ñ1Ô1ð 
	"à×)Ò)¨%Ñ0Ô0ˆFˆFÝ˜kÑ*Ô*ð 	"Ý˜dœj­+Ñ6Ô6ð 5Ý.¨tÑ4Ô4Ð4Ý�} dÑ+Ô+ˆCØ×4Ò4°U¸S¼Y¼\Ñ5IÍ8Ì<ÑXÔXˆFˆFõ "Ð!å�f�bœjÑ)Ô)ð 	9­c¬o¸f¼lÈCÑ.PÔ.Pð 	9Ø9Ð9Ð9Ð9Ð9Ð9à0�>Ô0°Ñ8Ô8Ð8Øˆru   c                ó4  — t          |dd ¦  «        }t          j        |d¦  «        pt          |t          ¦  «        }|rpt          j        | j        d¦  «        rVt          j        |¦  «        rt          |¦  «        | z
  S t          |t          ¦  «        sddl	m
}  |j        |¦  «        }|| z
  S | j        j        dk    rKt          |d¦  «        r;|s9t          dt          | ¦  «        j        › dt          |¦  «        j        › �¦  «        ‚t          | j        t"          ¦  «        rAt          j        |d¦  «        r,t          dt          | ¦  «        j        › d|j        › �¦  «        ‚t          j        | j        d¦  «        rt%          d| ¦  «        } |  |z   S | |z
   S )	Nr}   rø   rý   r   rŸ  rÝ  rÞ  rm   )r  r   r¤  r|   rI   r}   râ   r   r‹   r¥  rk   r/  r  r&  r	  r
  r  rK   r   )r‚   r«   r÷  Úother_is_dt64rk   s        rs   Ú__rsub__zDatetimeLikeArrayMixin.__rsub__Æ  s±  € Ý˜e W¨dÑ3Ô3ˆÝœ¨°SÑ9Ô9ð 
½ZØ�ñ>
ô >
ˆð ð 	#�Sœ_¨T¬Z¸Ñ=Ô=ð 	#õ Œ}˜UÑ#Ô#ð /å  Ñ'Ô'¨$Ñ.Ð.Ý˜eÕ%;Ñ<Ô<ð <à<Ð<Ð<Ð<Ð<Ð<à4˜Ô4°UÑ;Ô;�Ø˜4‘<ÐØŒZŒ_ Ò#Ð#­°°wÑ(?Ô(?Ð#ÈÐ#õ ØT¥4¨¡:¤:Ô#6ÐTÐT½dÀ5¹k¼kÔ>RÐTÐTñô ð õ ˜œ
¥KÑ0Ô0ð 	#µS´_À[ÐRUÑ5VÔ5Vð 	#åÐW­t°D©z¬zÔ/BÐWÐWÈ%Ì+ÐWÐWÑXÔXÐXÝŒ_˜TœZ¨Ñ-Ô-ð 	#ÝÐ(¨$Ñ/Ô/ˆDØ�E˜U‘?Ð"ð ˜‘ˆÐru   c                óz   — | |z   }|d d …         | d d …<   t          | j        t          ¦  «        s|j        | _        | S rq   ©r|   r}   rK   r’   rä   ©r‚   r«   r†   s      rs   Ú__iadd__zDatetimeLikeArrayMixin.__iadd__è  óB   € Ø˜‘ˆØ˜˜˜”)ˆˆQˆQˆQ‰å˜$œ*¥kÑ2Ô2ð 	%àœˆDŒJØˆru   c                óz   — | |z
  }|d d …         | d d …<   t          | j        t          ¦  «        s|j        | _        | S rq   r  r  s      rs   Ú__isub__zDatetimeLikeArrayMixin.__isub__ñ  r  ru   Úqsúnpt.NDArray[np.float64]Úinterpolationc                óJ   •— t          ¦   «                              ||¬¦  «        S )N)r  r	  )rá   Ú	_quantile)r‚   r  r	  rå   s      €rs   r  z DatetimeLikeArrayMixin._quantileý  s"   ø€ õ ‰wŒw× Ò  B°mÐ ÑDÔDÐDru   ©ÚaxisrI  r  úAxisInt | Nonec               óÄ   — t          j        d|¦  «         t          j        || j        ¦  «         t	          j        | j        ||¬¦  «        }|                      ||¦  «        S )a  
        Return the minimum value of the Array or minimum along
        an axis.

        See Also
        --------
        numpy.ndarray.min
        Index.min : Return the minimum value in an Index.
        Series.min : Return the minimum value in a Series.
        r•   r  )ÚnvÚvalidate_minÚvalidate_minmax_axisr¾   rR   Únanminr�   Ú_wrap_reduction_result©r‚   r  rI  r„   r†   s        rs   ÚminzDatetimeLikeArrayMixin.min  óY   € õ 	Œ˜˜FÑ#Ô#Ð#Ý
Ô  d¤iÑ0Ô0Ð0å”˜tœ}°4ÀÐGÑGÔGˆØ×*Ò*¨4°Ñ8Ô8Ð8ru   c               óÄ   — t          j        d|¦  «         t          j        || j        ¦  «         t	          j        | j        ||¬¦  «        }|                      ||¦  «        S )a  
        Return the maximum value of the Array or maximum along
        an axis.

        See Also
        --------
        numpy.ndarray.max
        Index.max : Return the maximum value in an Index.
        Series.max : Return the maximum value in a Series.
        r•   r  )r  Úvalidate_maxr  r¾   rR   Únanmaxr�   r  r  s        rs   ÚmaxzDatetimeLikeArrayMixin.max  r  ru   r   )rI  r  c               ó
  — t          | j        t          ¦  «        r%t          dt	          | ¦  «        j        › d�¦  «        ‚t          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

        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[ns]', 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[ns]', freq=None)
        >>> tdelta_idx.mean()
        Timedelta('2 days 00:00:00')
        zmean is not implemented for zX since the meaning is ambiguous.  An alternative is obj.to_timestamp(how='start').mean()©r  rI  r†  )r|   r}   rK   r	  r
  r  rR   Únanmeanr�   rO   r  )r‚   rI  r  r†   s       rs   ÚmeanzDatetimeLikeArrayMixin.mean)  s�   € õX �d”j¥+Ñ.Ô.ð 	åð7­t°D©z¬zÔ/Bð 7ð 7ð 7ñô ð õ ”ØŒM ¨V¸$¿)º)¹+¼+ð
ñ 
ô 
ˆð ×*Ò*¨4°Ñ8Ô8Ð8ru   c               óâ   — t          j        d|¦  «         |�'t          |¦  «        | j        k    rt	          d¦  «        ‚t          j        | j        ||¬¦  «        }|                      ||¦  «        S )Nr•   z abs(axis) must be less than ndimr  )	r  Úvalidate_medianÚabsr¾   r  rR   Ú	nanmedianr�   r  r  s        rs   ÚmedianzDatetimeLikeArrayMixin.medianb  sk   € å
Ô˜2˜vÑ&Ô&Ð&àÐ¥ D¡	¤	¨T¬YÒ 6Ð 6ÝÐ?Ñ@Ô@Ð@åÔ! $¤-°dÀ6ÐJÑJÔJˆØ×*Ò*¨4°Ñ8Ô8Ð8ru   Údropnac                ó   — d }|r|                       ¦   «         }t          j        |                      d¦  «        |¬¦  «        }|                     | j        j        ¦  «        }t          t          j        |¦  «        }|  	                    |¦  «        S )Nr{   )r†  )
rO   rP   Úmoder~   r�   r}   r   rÓ   rõ  r�   )r‚   r%  r†  Úi8modesÚnpmodess        rs   Ú_modezDatetimeLikeArrayMixin._model  su   € ØˆØð 	Ø—9’9‘;”;ˆDå”/ $§)¢)¨D¡/¤/¸Ð=Ñ=Ô=ˆØ—,’,˜tœ}Ô2Ñ3Ô3ˆÝ•r”z 7Ñ+Ô+ˆØ×&Ò& wÑ/Ô/Ð/ru   ÚhowÚhas_dropped_naÚ	min_countÚintÚngroupsÚidsúnpt.NDArray[np.intp]c               óì  — | j         }|j        dk    rK|dv rt          d|› d�¦  «        ‚|dv r/t          j        d|› d|› d�t
          t          ¦   «         ¬	¦  «         nwt          |t          ¦  «        rK|dv rt          d
|› d�¦  «        ‚|dv r/t          j        d|› d|› d�t
          t          ¦   «         ¬	¦  «         n|dv rt          d|› d�¦  «        ‚| j	         
                    d¦  «        }ddlm}	 |	                     |¦  «        }
 |	||
|¬¦  «        } |j        |f|||d dœ|¤Ž}|j        |j        v r|S |j         dk    sJ ‚|dv rvddlm} t          | j         t          ¦  «        rt          d¦  «        ‚t'          d| ¦  «        } d| j        › d�}| 
                    |¦  «        } |j        ||j         ¬¦  «        S | 
                    | j	        j         ¦  «        }|                      |¦  «        S )Nrø   )ÚsumÚprodÚcumsumÚcumprodÚvarÚskewz!datetime64 type does not support z operations)rZ  Úallr%  zh' with datetime64 dtypes is deprecated and will raise in a future version. Use (obj != pd.Timestamp(0)).z() instead.rL  zPeriod type does not support ze' with PeriodDtype is deprecated and will raise in a future version. Use (obj != pd.Period(0, freq)).)r4  r6  r8  r7  z"timedelta64 type does not support rz   r   )ÚWrappedCythonOp)r+  r  r,  )r-  r/  Úcomp_idsr†  )ÚstdÚsemr»  z-'std' and 'sem' are not valid for PeriodDtyperN  zm8[r¡  rÒ   )r}   r  r	  rQ  rR  rS  r?   r|   rK   r�   r~   Úpandas.core.groupby.opsr:  Úget_kind_from_howÚ_cython_op_ndim_compatr+  Úcast_blocklistr¥  rm   r   r.  r¨  r�   )r‚   r+  r,  r-  r/  r0  r„   r}   Únpvaluesr:  r  rr   r«  rm   Ú	new_dtypes                  rs   Ú_groupby_opz"DatetimeLikeArrayMixin._groupby_opy  sÇ  € ð ”
ˆØŒ:˜ÒÐàÐIÐIÐIÝÐ TÀCÐ TÐ TÐ TÑUÔUÐUØ�nÐ$Ð$å”ðU˜ð Uð UØDGðUð Uð Uå!Ý/Ñ1Ô1ð	ñ ô ð øõ ˜�{Ñ+Ô+ð 	WàÐIÐIÐIÝÐ PÀÐ PÐ PÐ PÑQÔQÐQØ�nÐ$Ð$å”ðX˜ð Xð XØGJðXð Xð Xå!Ý/Ñ1Ô1ð	ñ ô ð øð Ð8Ð8Ð8ÝÐ UÀSÐ UÐ UÐ UÑVÔVÐVð ”=×%Ò% hÑ/Ô/ˆà;Ð;Ð;Ð;Ð;Ð;à×0Ò0°Ñ5Ô5ˆØˆ_ ¨4ÀÐOÑOÔOˆà.�RÔ.Øð
àØØØð
ð 
ð ð
ð 
ˆ
ð Œ6�RÔ&Ð&Ð&ð Ðð Ô 8Ò+Ð+Ð+Ð+Ø�.Ð Ð Ø9Ð9Ð9Ð9Ð9Ð9å˜$œ*¥kÑ2Ô2ð QÝÐ OÑPÔPÐPÝÐ8¸$Ñ?Ô?ˆDØ*˜dœiÐ*Ð*Ð*ˆIØ#Ÿš¨Ñ3Ô3ˆJØ-�>Ô-¨jÀ
Ô@PÐQÑQÔQÐQà—_’_ T¤]Ô%8Ñ9Ô9ˆ
Ø×&Ò& zÑ2Ô2Ð2ru   ©rw   r“   )NNF)r}   r˜   r™   r“   rw   rš   )rw   rŸ   )r¢   ro   rw   r£   )r¢   r£   rw   r¨   )r«   r£   rw   rš   ©rw   r�   )rw   rg   )rw   rÃ   )rÅ   rÇ   rw   rÈ   )F)rË   r“   )NN)r}   rÏ   r™   rÐ   rw   r�   )r×   r2   rw   r£   )r×   rÜ   rw   r3   )rÞ   r0   rw   rß   )rw   r‘   )rÞ   rð   r¢   rñ   rw   rš   ©rw   rš   ©T)r™   r“   ©rw   r3   )r}   r  rw   rk   )r}   r  rw   rm   ).)r}   r˜   rw   r(   rq   )r  r“   r   r“   )r  r“   rw   ro   )r  r“   )rw   r7  )r´   r(   rw   r?  )rw   r?  )r†   r�   rw   r�   )rw   ra  )rw   rg  ©rw   ro   )rw   r•  )rw   rk   )r«   rk   rw   rk   )r«   r°  rw   rm   )r«   rk   rw   rm   )r«   r¹  rw   rm   )r«   r   rw   rl   )r«   rm   )r«   rÔ  )r«   rÛ  rw   rÈ   )r«   rÈ   )rê  ro   rI  r“   rw   r3   )r  r  r	  ro   rw   r3   )r  r  rI  r“   )rI  r“   r  r  )r%  r“   )
r+  ro   r,  r“   r-  r.  r/  r.  r0  r1  )`r  Ú
__module__Ú__qualname__Ú__doc__Ú__annotations__r>   r—   rž   Úpropertyr¡   r¦   rª   r®   r   rµ   rÂ   rÁ   rÊ   rÎ   rÖ   r   rÚ   rã   ró   rô   r  r~   r  r#  r"  r  r6  r   r5  rZ   r>  rT   rO   rW  r[  r   r`  rc  rf  rk  rn  rt  rw  r{  rˆ  rt   r‰  rŠ  r‹  rŒ  r�  rŽ  r�  r�  r‘  r’  r“  r”  r™  r›  r­  r¯  rµ  r¸  r³  rÈ  rË  rÑ  rÓ  rÏ  rØ  rÚ  rä  ré  rî  rc   rï  rú  rû  rÿ  r  r  r‰   r  r  r  r  r$  r*  rD  Ú__classcell__©rå   s   @rs   r‹   r‹   Ä   sÔ	  ø€ € € € € € ðð ð $Ð#Ð#Ñ#Ø4Ð4Ð4Ñ4Ø)Ð)Ð)Ñ)ØÐÐÑØÐÐÑàðð ð ñ „^ðð INð(ð (ð (ð (ð (ð
 ð(ð (ð (ñ „Xð(ð(ð (ð (ð (ð((ð (ð (ð (ð.(ð (ð (ð (ð,(ð (ð (ðDð Dð Dð Dð:ð :ð :ð :ð ð
(ð 
(ð 
(ñ „Xð
(ð  (-¸$ð
(ð 
(ð 
(ð 
(ð 
(ð 
(ðð ð ð ð ð AEðð ð ð ð ð ðð ð ñ „Xðð ðð ð ñ „Xððð ð ð ð ð ð"ð ð ð ð<!ð !ð !ð !ð !ð !ð,ð ð ð ð
11ð 11ð 11ð 11ð 11ð 11ð 11ðf ðð ð ñ „Xðð ðð ð ñ „Xðð ðð ð ñ „Xðð ðð ð ð ñ „Xðð#ð #ð #ð #ð #ð #ð #ð"ð "ð "ðP  %Øð;)ð ;)ð ;)ð ;)ð ;)ð ;)ðzð ð ð ð ð>8ð 8ð 8ð 8ð 8ðt"ð "ð "ð ð
ð 
ð 
ñ „Uð
ð" ð	 ð 	 ð 	 ñ „\ð	 ðP,ð P,ð P,ð P,ðjð ð ð ð ð!ð !ð !ñ „Xð!ð ð'ð 'ð 'ñ „Xð'ð .2¸4ðð ð ð ð ð< ð!ð !ð !ñ „Xð!ð: ðð ð ñ „Xðð< ðð ð ñ „Xðð ð-ð -ð -ñ „Xð-ð ð?ð ?ð ?ñ „Xð?ð ð?ð ?ð ?ñ „Xð?ð ð@ð @ð @ñ „Xð@ð5ð 5ð 5ðr (Ð'¨	Ñ2Ô2€GØ(Ð(¨Ñ4Ô4€HØ'Ð'¨	Ñ2Ô2€GØ(Ð(¨Ñ4Ô4€HØ+Ð+¨MÑ:Ô:€KØ,Ð,¨^Ñ<Ô<€LØ,Ð,¨^Ñ<Ô<€LØ-Ð-¨oÑ>Ô>€MØ'Ð'¨	Ñ2Ô2€GØ(Ð(¨Ñ4Ô4€HØ*Ð*¨<Ñ8Ô8€JØ+Ð+¨MÑ:Ô:€Kà
ðð ð ñ „Uðð$ ðð ð ñ „Uðð ðQð Qð Qñ „UðQðB ðð ð ñ „Uðð ð*ð *ð *ñ „Uð*ð$ ð
-ð 
-ð 
-ñ „Uð
-ð ðUð Uð Uñ „UðUð& ð
ð 
ð 
ñ „Uð
ð(ð (ð (ð.ð .ð .ð(.ð .ð .ð .ð$ ð
ð 
ð 
ñ „Uð
ð  ð
ð 
ñ „Uð
ð, ð2ð 2ñ „Uð2ð& ðð ð ñ „Uðð0 ð!ð !ð !ñ „Uð!ðF 8<ð @ð @ð @ð @ð @ð @ð Ð˜iÑ(Ô(ð5ð 5ñ )Ô(ð5ðn#ð #ð #ð Ð˜iÑ(Ô(ð5ð 5ñ )Ô(ð5ðn ð  ð  ðDð ð ð ðð ð ð ð ðEð Eð Eð Eð Eñ ÔðEð Ø,0Àð 9ð 9ð 9ð 9ð 9ñ Ôð9ð" Ø,0Àð 9ð 9ð 9ð 9ð 9ñ Ôð9ð" &*À!ð 79ð 79ð 79ð 79ð 79ð 79ðr Ø/3ÀDð 9ð 9ð 9ð 9ð 9ñ Ôð9ð0ð 0ð 0ð 0ð 0ðM3ð M3ð M3ð M3ð M3ð M3ð M3ð M3ru   r‹   c                  ó>   — e Zd ZdZ ed¬¦  «        d
d„¦   «         Zd	S )ÚDatelikeOpszK
    Common ops for DatetimeIndex/PeriodIndex, but not TimedeltaIndex.
    zNhttps://docs.python.org/3/library/datetime.html#strftime-and-strptime-behavior)ÚURLrÆ   ro   rw   rÈ   c                ó|   — |                       |t          j        ¬¦  «        }|                     t          d¬¦  «        S )a°  
        Convert to Index using specified date_format.

        Return an Index of formatted strings specified by date_format, which
        supports the same string format as the python standard library. Details
        of the string format can be found in `python string format
        doc <%(URL)s>`__.

        Formats supported by the C `strftime` API but not by the python string format
        doc (such as `"%%R"`, `"%%r"`) are not officially supported and should be
        preferably replaced with their supported equivalents (such as `"%%H:%%M"`,
        `"%%I:%%M:%%S %%p"`).

        Note that `PeriodIndex` support additional directives, detailed in
        `Period.strftime`.

        Parameters
        ----------
        date_format : str
            Date format string (e.g. "%%Y-%%m-%%d").

        Returns
        -------
        ndarray[object]
            NumPy ndarray of formatted strings.

        See Also
        --------
        to_datetime : Convert the given argument to datetime.
        DatetimeIndex.normalize : Return DatetimeIndex with times to midnight.
        DatetimeIndex.round : Round the DatetimeIndex to the specified freq.
        DatetimeIndex.floor : Floor the DatetimeIndex to the specified freq.
        Timestamp.strftime : Format a single Timestamp.
        Period.strftime : Format a single Period.

        Examples
        --------
        >>> rng = pd.date_range(pd.Timestamp("2018-03-10 09:00"),
        ...                     periods=3, freq='s')
        >>> rng.strftime('%%B %%d, %%Y, %%r')
        Index(['March 10, 2018, 09:00:00 AM', 'March 10, 2018, 09:00:01 AM',
               'March 10, 2018, 09:00:02 AM'],
              dtype='object')
        )rÆ   rÅ   Frþ   )rÊ   rÓ   r]  r  rÕ   )r‚   rÆ   r†   s      rs   ÚstrftimezDatelikeOps.strftimeÎ  s5   € ðb ×*Ò*°{Í2Ì6Ð*ÑRÔRˆØ�}Š}�V¨%ˆ}Ñ0Ô0Ð0ru   N)rÆ   ro   rw   rÈ   )r  rK  rL  rM  r=   rV  r•   ru   rs   rS  rS  É  sW   € € € € € ðð ð €\ð*ðñ ô ð.1ð .1ð .1ñ	ô ð.1ð .1ð .1ru   rS  aO	  
    Perform {op} operation on the data to the specified `freq`.

    Parameters
    ----------
    freq : str or Offset
        The frequency level to {op} the index to. Must be a fixed
        frequency like 'S' (second) not 'ME' (month end). See
        :ref:`frequency aliases <timeseries.offset_aliases>` for
        a list of possible `freq` values.
    ambiguous : 'infer', bool-ndarray, 'NaT', default 'raise'
        Only relevant for DatetimeIndex:

        - 'infer' will attempt to infer fall dst-transition hours based on
          order
        - bool-ndarray where True signifies a DST time, False designates
          a non-DST time (note that this flag is only applicable for
          ambiguous times)
        - 'NaT' will return NaT where there are ambiguous times
        - 'raise' will raise an AmbiguousTimeError if there are ambiguous
          times.

    nonexistent : 'shift_forward', 'shift_backward', 'NaT', timedelta, default 'raise'
        A nonexistent time does not exist in a particular timezone
        where clocks moved forward due to DST.

        - 'shift_forward' will shift the nonexistent time forward to the
          closest existing time
        - 'shift_backward' will shift the nonexistent time backward to the
          closest existing time
        - 'NaT' will return NaT where there are nonexistent times
        - timedelta objects will shift nonexistent times by the timedelta
        - 'raise' will raise an NonExistentTimeError if there are
          nonexistent times.

    Returns
    -------
    DatetimeIndex, TimedeltaIndex, or Series
        Index of the same type for a DatetimeIndex or TimedeltaIndex,
        or a Series with the same index for a Series.

    Raises
    ------
    ValueError if the `freq` cannot be converted.

    Notes
    -----
    If the timestamps have a timezone, {op}ing will take place relative to the
    local ("wall") time and re-localized to the same timezone. When {op}ing
    near daylight savings time, use ``nonexistent`` and ``ambiguous`` to
    control the re-localization behavior.

    Examples
    --------
    **DatetimeIndex**

    >>> rng = pd.date_range('1/1/2018 11:59:00', periods=3, freq='min')
    >>> rng
    DatetimeIndex(['2018-01-01 11:59:00', '2018-01-01 12:00:00',
                   '2018-01-01 12:01:00'],
                  dtype='datetime64[ns]', freq='min')
    a’  >>> rng.round('h')
    DatetimeIndex(['2018-01-01 12:00:00', '2018-01-01 12:00:00',
                   '2018-01-01 12:00:00'],
                  dtype='datetime64[ns]', freq=None)

    **Series**

    >>> pd.Series(rng).dt.round("h")
    0   2018-01-01 12:00:00
    1   2018-01-01 12:00:00
    2   2018-01-01 12:00:00
    dtype: datetime64[ns]

    When rounding near a daylight savings time transition, use ``ambiguous`` or
    ``nonexistent`` to control how the timestamp should be re-localized.

    >>> rng_tz = pd.DatetimeIndex(["2021-10-31 03:30:00"], tz="Europe/Amsterdam")

    >>> rng_tz.floor("2h", ambiguous=False)
    DatetimeIndex(['2021-10-31 02:00:00+01:00'],
                  dtype='datetime64[ns, Europe/Amsterdam]', freq=None)

    >>> rng_tz.floor("2h", ambiguous=True)
    DatetimeIndex(['2021-10-31 02:00:00+02:00'],
                  dtype='datetime64[ns, Europe/Amsterdam]', freq=None)
    a‘  >>> rng.floor('h')
    DatetimeIndex(['2018-01-01 11:00:00', '2018-01-01 12:00:00',
                   '2018-01-01 12:00:00'],
                  dtype='datetime64[ns]', freq=None)

    **Series**

    >>> pd.Series(rng).dt.floor("h")
    0   2018-01-01 11:00:00
    1   2018-01-01 12:00:00
    2   2018-01-01 12:00:00
    dtype: datetime64[ns]

    When rounding near a daylight savings time transition, use ``ambiguous`` or
    ``nonexistent`` to control how the timestamp should be re-localized.

    >>> rng_tz = pd.DatetimeIndex(["2021-10-31 03:30:00"], tz="Europe/Amsterdam")

    >>> rng_tz.floor("2h", ambiguous=False)
    DatetimeIndex(['2021-10-31 02:00:00+01:00'],
                 dtype='datetime64[ns, Europe/Amsterdam]', freq=None)

    >>> rng_tz.floor("2h", ambiguous=True)
    DatetimeIndex(['2021-10-31 02:00:00+02:00'],
                  dtype='datetime64[ns, Europe/Amsterdam]', freq=None)
    aŒ  >>> rng.ceil('h')
    DatetimeIndex(['2018-01-01 12:00:00', '2018-01-01 12:00:00',
                   '2018-01-01 13:00:00'],
                  dtype='datetime64[ns]', freq=None)

    **Series**

    >>> pd.Series(rng).dt.ceil("h")
    0   2018-01-01 12:00:00
    1   2018-01-01 12:00:00
    2   2018-01-01 13:00:00
    dtype: datetime64[ns]

    When rounding near a daylight savings time transition, use ``ambiguous`` or
    ``nonexistent`` to control how the timestamp should be re-localized.

    >>> rng_tz = pd.DatetimeIndex(["2021-10-31 01:30:00"], tz="Europe/Amsterdam")

    >>> rng_tz.ceil("h", ambiguous=False)
    DatetimeIndex(['2021-10-31 02:00:00+01:00'],
                  dtype='datetime64[ns, Europe/Amsterdam]', freq=None)

    >>> rng_tz.ceil("h", ambiguous=True)
    DatetimeIndex(['2021-10-31 02:00:00+02:00'],
                  dtype='datetime64[ns, Europe/Amsterdam]', freq=None)
    c                  óì  ‡ — e Zd ZU dZded<   dej        dfdLd
„Zed„ ¦   «         Z	e
d„ ¦   «         Zej        dMd„¦   «         ZedNd„¦   «         ZeedOd„¦   «         ¦   «         ZedPd„¦   «         ZedQd„¦   «         ZedRd„¦   «         ZdSdTd„Zd „ ZdUˆ fd$„Zd%„ Z eeez                        d&¬'¦  «        ¦  «        	 	 dVdWd-„¦   «         Z eeez                        d.¬'¦  «        ¦  «        	 	 dVdWd/„¦   «         Z eeez                        d0¬'¦  «        ¦  «        	 	 dVdWd1„¦   «         Z ddd2œdXd6„Z!ddd2œdXd7„Z"dMd8„Z#dYd9„Z$dZˆ fd;„Z%	 	 d[d\ˆ fd>„Z&e	 d]d^ˆ fdC„¦   «         Z'd_d`ˆ fdF„Z(dadJ„Z)e
dbdK„¦   «         Z*ˆ xZ+S )cr�  zK
    Common ops for TimedeltaIndex/DatetimeIndex, but not PeriodIndex.
    znp.dtypeÚ_default_dtypeNFr™   r“   rw   rš   c                óP  — t          j        t          | ¦  «        j        › d�t          t          ¦   «         ¬¦  «         |�t          |¦  «        }t          |d¬¦  «        }t          |t          ¦  «        r| 
                    dt          ¬¦  «        }t          |dd ¦  «        }|d u }|t          j        ur|nd }t          |t          | ¦  «        ¦  «        rp|rn7|€|j        }n-|r+|j        r$t!          |¦  «        }t#          ||j        ¦  «        }|�%||j        k    rt'          d|› d	|j        › �¦  «        ‚|j        }|j        }ns|€qt          |t*          j        ¦  «        r|j        j        d
v r|j        }nA| j        }t          |t*          j        ¦  «        r |j        dk    r|                     |¦  «        }t          |t*          j        ¦  «        s:t5          dt          |¦  «        j        › dt          | ¦  «        j        › d�¦  «        ‚|j        dvrt5          d¦  «        ‚|j        dk    r’|€"| j        }|                     | j        ¦  «        }nnt          j        |d¦  «        r|                     |¦  «        }nCt          |t:          ¦  «        r.| j        j        }|› d|j        › d�}|                     |¦  «        }|                      ||¦  «        }|dk    r%t5          dt          | ¦  «        j        › d�¦  «        ‚|r|                      ¦   «         }|rCt!          |¦  «        }|j        j        dk    r$t          |tB          ¦  «        st'          d¦  «        ‚tE          j#        | ||¬¦  «         || _$        |€'|�'t          | ¦  «         %                    | |¦  «         d S d S d S )NzV.__init__ is deprecated and will be removed in a future version. Use pd.array instead.rL  Tr+  r  ©Úna_valuerä   údtype=z does not match data dtype ÚMmr{   zUnexpected type 'z'. 'values' must be a z6, ndarray, or Series or Index containing one of those.)r·   é   z.Only 1-dimensional input arrays are supported.r   ú8[r¡  Úinferz#Frequency inference not allowed in z$.__init__. Use 'pd.array()' instead.rý   ú(TimedeltaArray/Index freq must be a Tick)r´   r}   )&rQ  rR  r
  r  rS  r?   rF   r`   r|   r]   r<  r   r  r   Ú
no_defaultr’   r"   Ú_validate_inferred_freqr}   r	  r�   rÓ   rõ  r  rX  r~   r  r¾   r¤  rI   r.  Ú_validate_dtyper™   r   r   rž   rä   Ú_validate_frequency)	r‚   r´   r}   r’   r™   rf  Úexplicit_noner  rC  s	            rs   rž   zTimelikeOps.__init__›  sô  € õ 	Œå�D‰zŒzÔ"ð Að Að AåÝ'Ñ)Ô)ð	
ñ 	
ô 	
ð 	
ð ÐÝ  Ñ'Ô'ˆEå˜v°TÐ:Ñ:Ô:ˆÝ�f�lÑ+Ô+ð 	=Ø—_’_ Wµt�_Ñ<Ô<ˆFå ¨°Ñ6Ô6ˆØ ˜ˆØ¥3¤>Ð1Ð1ˆtˆt°tˆå�f�d 4™jœjÑ)Ô)ð 	0Øð BàØ�Ø”{��Øð B˜&œ+ð BÝ  ‘”�Ý.¨t°V´[ÑAÔA�àÐ  U¨f¬lÒ%:Ð%:åØM˜UÐMÐM¸v¼|ÐMÐMñô ð ð ”LˆEØ”_ˆFˆFàˆ]Ý˜&¥"¤*Ñ-Ô-ð 0°&´,Ô2CÀtÐ2KÐ2KØœ��àÔ+�Ý˜f¥b¤jÑ1Ô1ð 0°f´lÀdÒ6JÐ6JØ#Ÿ[š[¨Ñ/Ô/�Få˜&¥"¤*Ñ-Ô-ð 	Ýð+¥D¨¡L¤LÔ$9ð +ð +Ý˜‘:”:Ô&ð+ð +ð +ñô ð ð
 Œ;˜fÐ$Ð$ÝÐMÑNÔNÐNàŒ<˜4ÒÐð ˆ}ØÔ+�ØŸš TÔ%8Ñ9Ô9��Ý” ¨Ñ-Ô-ð 0ØŸš UÑ+Ô+��Ý˜E¥?Ñ3Ô3ð 0ØÔ*Ô/�Ø#Ð4Ð4 u¤zÐ4Ð4Ð4�	ØŸš YÑ/Ô/�à×$Ò$ V¨UÑ3Ô3ˆà�7Š?ˆ?Ýð,µd¸4±j´jÔ6Ið ,ð ,ð ,ñô ð ð
 ð 	#Ø—[’[‘]”]ˆFØð 	LÝ˜T‘?”?ˆDØŒ|Ô  CÒ'Ð'µ
¸4ÅÑ0FÔ0FÐ'ÝÐ JÑKÔKÐKåÔ˜t¨F¸%Ð@Ñ@Ô@Ð@ØˆŒ
àÐ  TÐ%5Ý�‰JŒJ×*Ò*¨4°Ñ6Ô6Ð6Ð6Ð6ð !Ð Ð%5Ð%5ru   c                ó    — t          | ¦  «        ‚rq   rœ   )Úclsr´   r}   s      rs   rd  zTimelikeOps._validate_dtype÷  s   € å! #Ñ&Ô&Ð&ru   c                ó   — | j         S )zK
        Return the frequency object if it is set, otherwise None.
        ©rä   r–   s    rs   r’   zTimelikeOps.freqû  s   € ð
 ŒzÐru   c                óþ   — |�st          |¦  «        }|                      | |¦  «         | j        j        dk    r$t	          |t
          ¦  «        st          d¦  «        ‚| j        dk    rt          d¦  «        ‚|| _	        d S )Nrý   ra  r·   zCannot set freq with ndim > 1)
r"   re  r}   r  r|   r   r	  r¾   r  rä   r¥   s     rs   r’   zTimelikeOps.freq  s}   € àÐÝ˜eÑ$Ô$ˆEØ×$Ò$ T¨5Ñ1Ô1Ð1ØŒzŒ #Ò%Ð%­j¸ÅÑ.EÔ.EÐ%ÝÐ JÑKÔKÐKàŒy˜1Š}ˆ}Ý Ð!@ÑAÔAÐAàˆŒ
ˆ
ˆ
ru   Úvalidate_kwdsÚdictc                óN  — |€	d| _         dS |dk    r$| j         €t          | j        ¦  «        | _         dS dS |t          j        u rdS | j         €4t          |¦  «        } t          | ¦  «        j        | |fi |¤Ž || _         dS t          |¦  «        }t          || j         ¦  «         dS )zº
        Constructor helper to pin the appropriate `freq` attribute.  Assumes
        that self._freq is currently set to any freq inferred in
        _from_sequence_not_strict.
        Nr`  )rä   r"   rf  r   rb  r
  re  rc  )r‚   r’   rl  s      rs   Ú_maybe_pin_freqzTimelikeOps._maybe_pin_freq  sÅ   € ð ˆ<àˆDŒJˆJˆJØ�WŠ_ˆ_ð ŒzÐ!õ ' tÔ'9Ñ:Ô:�”
�
�
ð "Ð!ð •S”^Ð#Ð#ð ˆDØŒZÐõ ˜T‘?”?ˆDØ*�D�‰JŒJÔ*¨4°ÐGÐG¸ÐGÐGÐGØˆDŒJˆJˆJõ ˜T‘?”?ˆDÝ# D¨$¬*Ñ5Ô5Ð5Ð5Ð5ru   r’   r   c           	     óh  — |j         }|j        dk    s||j        k    rdS 	  | j        d|d         dt	          |¦  «        ||j        dœ|¤Ž}t          j        |j        |j        ¦  «        st          ‚dS # t          $ r3}dt          |¦  «        v r|‚t          d|› d|j        › �¦  «        |‚d}~ww xY w)am  
        Validate that a frequency is compatible with the values of a given
        Datetime Array/Index or Timedelta Array/Index

        Parameters
        ----------
        index : DatetimeIndex or TimedeltaIndex
            The index on which to determine if the given frequency is valid
        freq : DateOffset
            The frequency to validate
        r   N)ÚstartÚendÚperiodsr’   r.  z	non-fixedúInferred frequency ú9 from passed values does not conform to passed frequency r•   )rf  rz  rc  Ú_generate_rangerÀ   r.  rÓ   Úarray_equalrÁ   r  ro   )rh  Úindexr’   r„   rU  Úon_freqr  s          rs   re  zTimelikeOps._validate_frequency0  s  € ð Ô&ˆØŒ:˜Š?ˆ?˜h¨$¬,Ò6Ð6Ø�4ð	Ø)�cÔ)ð Ø˜A”hØÝ˜E™
œ
ØØ”Zðð ð ðð ˆGõ ”> %¤*¨g¬lÑ;Ô;ð !Ý Ð ð!ð !øåð 	ð 	ð 	Ø�c #™hœhÐ&Ð&ð �	õ ðG hð Gð GØ8<¼ðGð Gñô ð ðøøøøð	øøøs   ¡AA4 Á4
B1Á>.B,Â,B1rs  ú
int | Noner3   c                ó    — t          | ¦  «        ‚rq   rœ   )rh  rq  rr  rs  r’   rƒ   r„   s          rs   rv  zTimelikeOps._generate_range\  s   € õ " #Ñ&Ô&Ð&ru   r.  c                ó4   — t          | j        j        ¦  «        S rq   )r   r�   r}   r–   s    rs   r  zTimelikeOps._cresod  s   € å" 4¤=Ô#6Ñ7Ô7Ð7ru   ro   c                ó*   — t          | j        ¦  «        S rq   )Údtype_to_unitr}   r–   s    rs   r.  zTimelikeOps.unith  s   € õ
 ˜TœZÑ(Ô(Ð(ru   Tr.  r*  c                óŒ  — |dvrt          d¦  «        ‚t          j        | j        j        › d|› d�¦  «        }t	          | j        ||¬¦  «        }t          | j        t          j        ¦  «        r|j        }n&t          d| ¦  «        j        }t          ||¬¦  «        }t          | ¦  «                             ||| j        ¬¦  «        S )	N)ÚsÚmsÚusÚnsz)Supported units are 's', 'ms', 'us', 'ns'r_  r¡  r)  rk   r¢  r£  )r  rÓ   r}   r  r   r�   r|   r   rú   rI   r
  r¨  r’   )r‚   r.  r*  r}   rÐ  rC  rú   s          rs   r-  zTimelikeOps.as_unito  sÉ   € ØÐ.Ð.Ð.ÝÐHÑIÔIÐIå”˜DœJœOÐ6Ð6¨tÐ6Ð6Ð6Ñ7Ô7ˆÝ(¨¬¸ÈÐQÑQÔQˆ
å�d”j¥"¤(Ñ+Ô+ð 	:Ø"Ô(ˆIˆIå�o tÑ,Ô,Ô/ˆBÝ'¨2°DÐ9Ñ9Ô9ˆIõ �D‰zŒz×%Ò%Ø˜i¨d¬ið &ñ 
ô 
ð 	
ru   c                ó´   — | j         |j         k    rE| j         |j         k     r|                      |j        ¦  «        } n|                     | j        ¦  «        }| |fS rq   )r  r-  r.  r­   s     rs   r©  z"TimelikeOps._ensure_matching_resos„  sR   € ØŒ;˜%œ,Ò&Ð&àŒ{˜Uœ\Ò)Ð)Ø—|’| E¤JÑ/Ô/��àŸš d¤iÑ0Ô0�Ø�Uˆ{Ðru   Úufuncúnp.ufuncÚmethodc                óü   •— |t           j        t           j        t           j        fv r9t	          |¦  «        dk    r&|d         | u r t          ||¦  «        | j        fi |¤ŽS  t          ¦   «         j        ||g|¢R i |¤ŽS )Nr·   r   )	rÓ   ÚisnanÚisinfÚisfiniterÀ   r  r�   rá   Ú__array_ufunc__)r‚   r…  r‡  Úinputsr„   rå   s        €rs   rŒ  zTimelikeOps.__array_ufunc__�  sŠ   ø€ à•b”h¥¤­"¬+Ð6Ð6Ð6Ý�F‘”˜qÒ Ð Ø�q”	˜TÐ!Ð!ð *•7˜5 &Ñ)Ô)¨$¬-ÐBÐB¸6ÐBÐBÐBà&�u‰wŒwÔ& u¨fÐH°vÐHÐHÐHÀÐHÐHÐHru   c                óv  — t          | j        t          ¦  «        rZt          d| ¦  «        } |                      d ¦  «        }|                     ||||¦  «        }|                     | j        ||¬¦  «        S |                      d¦  «        }t          t          j	        |¦  «        }t          || j        ¦  «        }|dk    r|                      ¦   «         S t          |||¦  «        }	|                      |	t          ¬¦  «        }|                     | j        j        ¦  «        }|                      || j        ¬¦  «        S )Nrk   )Ú	ambiguousÚnonexistentr{   r   ©r_  rÒ   )r|   r}   rI   r   Útz_localizeÚ_roundrú   r~   rÓ   rõ  r&   r  r™   r$   r`  r   r�   r¨  )
r‚   r’   r'  r�  r�  Únaiver†   r´   ÚnanosÚ	result_i8s
             rs   r“  zTimelikeOps._roundš  s  € å�d”j¥/Ñ2Ô2ð 	å˜¨Ñ.Ô.ˆDØ×$Ò$ TÑ*Ô*ˆEØ—\’\ $¨¨i¸ÑEÔEˆFØ×%Ò%Ø” 9¸+ð &ñ ô ð ð —’˜4‘”ˆÝ•b”j &Ñ)Ô)ˆÝ" 4¨¬Ñ5Ô5ˆØ�AŠ:ˆ:à—9’9‘;”;ÐÝ! &¨$°Ñ6Ô6ˆ	Ø×)Ò)¨)ÅÐ)ÑEÔEˆØ—’˜Tœ]Ô0Ñ1Ô1ˆØ×Ò ¨d¬jÐÑ9Ô9Ð9ru   Úround)rr   Úraiser�  r5   r�  r6   c                óF   — |                       |t          j        ||¦  «        S rq   )r“  r#   ÚNEAREST_HALF_EVEN©r‚   r’   r�  r�  s       rs   r—  zTimelikeOps.round°  s   € ð �{Š{˜4¥Ô!:¸IÀ{ÑSÔSÐSru   Úfloorc                óF   — |                       |t          j        ||¦  «        S rq   )r“  r#   ÚMINUS_INFTYr›  s       rs   rœ  zTimelikeOps.floor¹  s   € ð �{Š{˜4¥Ô!4°iÀÑMÔMÐMru   Úceilc                óF   — |                       |t          j        ||¦  «        S rq   )r“  r#   Ú
PLUS_INFTYr›  s       rs   rŸ  zTimelikeOps.ceilÂ  s   € ð �{Š{˜4¥Ô!3°YÀÑLÔLÐLru   r  r  r  rI  c               ó`   — t          j        | j        |||                      ¦   «         ¬¦  «        S ©Nr  )rR   Únananyr�   rO   ©r‚   r  rI  s      rs   rZ  zTimelikeOps.anyÎ  s%   € åŒ}˜Tœ]°¸fÈ4Ï9Ê9É;Ì;ÐWÑWÔWÐWru   c               ó`   — t          j        | j        |||                      ¦   «         ¬¦  «        S r£  )rR   Únanallr�   rO   r¥  s      rs   r9  zTimelikeOps.allÒ  s'   € õ Œ}˜Tœ]°¸fÈ4Ï9Ê9É;Ì;ÐWÑWÔWÐWru   c                ó   — d | _         d S rq   rj  r–   s    rs   rô   zTimelikeOps._maybe_clear_freqÚ  s   € ØˆŒ
ˆ
ˆ
ru   c                ó4  — |€nyt          | ¦  «        dk    rJt          |t          ¦  «        r5| j        j        dk    r$t          |t
          ¦  «        st          d¦  «        ‚n|dk    sJ ‚t          | j        ¦  «        }|  	                    ¦   «         }||_
        |S )z×
        Helper to get a view on the same data, with a new freq.

        Parameters
        ----------
        freq : DateOffset, None, or "infer"

        Returns
        -------
        Same type as self
        Nr   rý   ra  r`  )rÀ   r|   r   r}   r  r   r	  r"   rf  r~   rä   )r‚   r’   r…   s      rs   Ú
_with_freqzTimelikeOps._with_freqÝ  s�   € ð ˆ<àÝ�‰YŒY˜!Š^ˆ^¥
¨4µÑ <Ô <ˆ^àŒzŒ #Ò%Ð%­j¸½tÑ.DÔ.DÐ%ÝÐ JÑKÔKÐKøð ˜7’?�?�?�?Ý˜TÔ/Ñ0Ô0ˆDà�iŠi‰kŒkˆØˆŒ	Øˆ
ru   r�   c                ó�   •— t          | j        t          j        ¦  «        r| j        S t	          ¦   «                              ¦   «         S rq   )r|   r}   rÓ   r�   rá   Ú_values_for_json)r‚   rå   s    €rs   r¬  zTimelikeOps._values_for_jsoný  s7   ø€ å�d”j¥"¤(Ñ+Ô+ð 	!Ø”=Ð Ý‰wŒw×'Ò'Ñ)Ô)Ð)ru   Úuse_na_sentinelÚsortc                ó~  •— | j         �mt          j        t          | ¦  «        t          j        ¬¦  «        }|                      ¦   «         }|r&| j         j        dk     r|d d d…         }|d d d…         }||fS |r%t          dt          | ¦  «        j	        › d�¦  «        ‚t          ¦   «                              |¬¦  «        S )NrÒ   r   éÿÿÿÿzThe 'sort' keyword in zu.factorize is ignored unless arr.freq is not None. To factorize with sort, call pd.factorize(obj, sort=True) instead.)r­  )r’   rÓ   ÚarangerÀ   Úintpr™   rº   ÚNotImplementedErrorr
  r  rá   Ú	factorize)r‚   r­  r®  ÚcodesÚuniquesrå   s        €rs   r´  zTimelikeOps.factorize	  sÊ   ø€ ð
 Œ9Ð å”I�c $™iœi­r¬wÐ7Ñ7Ô7ˆEØ—i’i‘k”kˆGØð (˜œ	œ aš˜Ø˜d˜d ˜dœ�Ø! $ $ B $œ-�Ø˜'�>Ð!àð 	õ &ð=­¨d©¬Ô)<ð =ð =ð =ñô ð õ
 ‰wŒw× Ò °Ð ÑAÔAÐAru   r   Ú	to_concatúSequence[Self]r)   c                óX  •‡— t          ¦   «                              ||¦  «        }|d         Š|dk    rwd„ |D ¦   «         }‰j        �dt          ˆfd„|D ¦   «         ¦  «        rIt	          |d d…         |dd …         ¦  «        }t          ˆfd„|D ¦   «         ¦  «        r‰j        }||_        |S )Nr   c                ó0   — g | ]}t          |¦  «        ¯|‘ŒS r•   )rÀ   )r¹   r°   s     rs   rá  z1TimelikeOps._concat_same_type.<locals>.<listcomp>(	  s#   € Ð8Ð8Ð8˜qµ°Q±´Ð8˜Ð8Ð8Ð8ru   c              3  ó8   •K  — | ]}|j         ‰j         k    V — Œd S rq   ©r’   )r¹   r°   rø  s     €rs   r»   z0TimelikeOps._concat_same_type.<locals>.<genexpr>*	  s,   øè è € Ð+RÐ+RÀ1¨A¬F°c´hÒ,>Ð+RÐ+RÐ+RÐ+RÐ+RÐ+Rru   r°  r·   c              3  ód   •K  — | ]*}|d          d         ‰j         z   |d         d          k    V — Œ+dS )r   r°  r·   Nr¼  )r¹   Úpairrø  s     €rs   r»   z0TimelikeOps._concat_same_type.<locals>.<genexpr>,	  s?   øè è € ÐNÐNÀ�t˜A”w˜r”{ S¤XÑ-°°a´¸´Ò;ÐNÐNÐNÐNÐNÐNru   )rá   Ú_concat_same_typer’   r9  Úziprä   )rh  r·  r  Únew_objÚpairsr¬  rø  rå   s         @€rs   r¿  zTimelikeOps._concat_same_type	  sÇ   øø€ õ ‘'”'×+Ò+¨I°tÑ<Ô<ˆà˜Œlˆà�1Š9ˆ9ð 9Ð8 IÐ8Ñ8Ô8ˆIàŒxÐ#­Ð+RÐ+RÐ+RÐ+RÈ	Ð+RÑ+RÔ+RÑ(RÔ(RÐ#Ý˜I c r cœN¨I°a°b°b¬MÑ:Ô:�ÝÐNÐNÐNÐNÈÐNÑNÔNÑNÔNð -Ø"œx�HØ$,�G”MØˆru   ÚCÚorderc                ód   •— t          ¦   «                              |¬¦  «        }| j        |_        |S )N)rÄ  )rá   r™   r’   rä   )r‚   rÄ  rÁ  rå   s      €rs   r™   zTimelikeOps.copy1	  s(   ø€ Ý‘'”'—,’, U�,Ñ+Ô+ˆØœ	ˆŒØˆru   r.   rx  rj   c          
     óî   — |dk    rt           ‚|s| j        }	n| j                             ¦   «         }	t          j        |	f||||||dœ|¤Ž |s| S t          | ¦  «                             |	| j        ¬¦  «        S )z2
        See NDFrame.interpolate.__doc__.
        Úlinear)r‡  r  rx  ÚlimitÚlimit_directionÚ
limit_arearÒ   )r³  r�   r™   rQ   Úinterpolate_2d_inplacer
  r¨  r}   )
r‚   r‡  r  rx  rÈ  rÉ  rÊ  r™   r„   Úout_datas
             rs   ÚinterpolatezTimelikeOps.interpolate6	  s§   € ð  �XÒÐÝ%Ð%àð 	,Ø”}ˆHˆHà”}×)Ò)Ñ+Ô+ˆHåÔ&Øð		
àØØØØ+Ø!ð		
ð 		
ð ð		
ð 		
ð 		
ð ð 	ØˆKÝ�D‰zŒz×%Ò% h°d´jÐ%ÑAÔAÐAru   c                ó
  — t          j        | j        ¦  «        sdS | j        }|t          k    }t          | j        ¦  «        }t          |¦  «        }t          j        |||z  dk    ¦  «         	                    ¦   «         dk    }|S )zÓ
        Check if we are round times at midnight (and no timezone), which will
        be given a more compact __repr__ than other cases. For TimedeltaArray
        we are checking for multiples of 24H.
        Fr   )
r   r¤  r}   rÁ   r   r   r!   rÓ   Úlogical_andr3  )r‚   Ú
values_intÚconsider_valuesrü   ÚppdÚ	even_dayss         rs   Ú_is_dates_onlyzTimelikeOps._is_dates_only_	  s   € õ Œ˜tœzÑ*Ô*ð 	à�5à”Yˆ
Ø$­Ò,ˆÝ" 4¤:Ñ.Ô.ˆÝ˜dÑ#Ô#ˆõ ”N ?°JÀÑ4DÈÒ4IÑJÔJ×NÒNÑPÔPÐTUÒUˆ	ØÐru   )r™   r“   rw   rš   rG  )rl  rm  )r’   r   )rs  rz  rw   r3   )rw   r.  rJ  rH  )r.  ro   r*  r“   rw   r3   )r…  r†  r‡  ro   )r˜  r˜  )r�  r5   r�  r6   rw   r3   )r  r  rI  r“   rw   r“   rI  rF  )TF)r­  r“   r®  r“   )r   )r·  r¸  r  r)   rw   r3   )rÃ  )rÄ  ro   rw   r3   )
r‡  r.   r  r.  rx  rj   r™   r“   rw   r3   rE  ),r  rK  rL  rM  rN  r   rb  rž   Úclassmethodrd  rO  r’   Úsetterr   ro  re  rv  r>   r  r.  r-  r©  rŒ  r“  r<   Ú
_round_docÚ_round_examplerÍ   r—  Ú_floor_examplerœ  Ú_ceil_examplerŸ  rZ  r9  rô   rª  r¬  r´  r¿  r™   rÍ  rÔ  rP  rQ  s   @rs   r�  r�  ”  s  ø€ € € € € € ðð ð ÐÐÑð ! s¤~ÀEðZ7ð Z7ð Z7ð Z7ð Z7ðx ð'ð 'ñ „[ð'ð ðð ñ „Xðð 
„[ð
ð 
ð 
ñ „[ð
ð ð6ð 6ð 6ñ „Uð6ð@ Øð(ð (ð (ñ „[ñ „Uð(ðT ð'ð 'ð 'ñ „[ð'ð ð8ð 8ð 8ñ „^ð8ð ð)ð )ð )ñ „^ð)ð
ð 
ð 
ð 
ð 
ð*ð ð ð	Ið 	Ið 	Ið 	Ið 	Ið 	Ið:ð :ð :ð, €Xˆz˜NÑ*×2Ò2°gÐ2Ñ>Ô>Ñ?Ô?ð $+Ø'.ð	Tð Tð Tð Tñ @Ô?ðTð €Xˆz˜NÑ*×2Ò2°gÐ2Ñ>Ô>Ñ?Ô?ð $+Ø'.ð	Nð Nð Nð Nñ @Ô?ðNð €Xˆz˜MÑ)×1Ò1°VÐ1Ñ<Ô<Ñ=Ô=ð $+Ø'.ð	Mð Mð Mð Mñ >Ô=ðMð -1Àð Xð Xð Xð Xð Xð Xð -1Àð Xð Xð Xð Xð Xð Xðð ð ð ðð ð ð ð@*ð *ð *ð *ð *ð *ð !%ØðBð Bð Bð Bð Bð Bð Bð0 ð ðð ð ð ð ð ñ „[ðð*ð ð ð ð ð ð ð
$Bð $Bð $Bð $BðR ðð ð ñ „Xðð ð ð ð ru   r�  r™   r“   Úcls_nameútuple[ArrayLike, bool]c                ód  — t          | d¦  «        sUt          | t          t          f¦  «        s't	          j        | ¦  «        dk    rt          | ¦  «        } t          | ¦  «        } d}n9t          | t          ¦  «        rt          d|› d�¦  «        ‚t          | d¬¦  «        } t          | t          ¦  «        s#t          | t          ¦  «        r-| j        j        dv r|                      d	t          ¬
¦  «        } d}n¸t          | t          ¦  «        r+|                      ¦   «         } |                      ¦   «         } d}nxt          | t          j        t$          f¦  «        st	          j        | ¦  «        } nBt          | t(          ¦  «        r-| j                             | j        t0          ¬¦  «        j        } d}| |fS )Nr}   r   FzCannot create a z from a MultiIndex.Tr+  rÿ   r  rZ  r‘  )r&  r|   rÔ   ÚtuplerÓ   r¾   r@   rM   r	  r`   r]   r[   r}   r  r<  r   Ú_maybe_convert_datelike_arrayrõ  r\   r  rL   r2  Útakerµ  r   Ú_values)r�   r™   rÛ  s      rs   Ú!ensure_arraylike_for_datetimelikerâ  y	  s�  € õ �4˜Ñ!Ô!ð 7å˜$¥¥u Ñ.Ô.ð 	µ2´7¸4±=´=ÀAÒ3EÐ3Eå˜‘:”:ˆDå6°tÑ<Ô<ˆØˆˆÝ	�D�-Ñ	(Ô	(ð 7ÝÐH¨8ÐHÐHÐHÑIÔIÐIå˜T°Ð6Ñ6Ô6ˆå�$�Ñ%Ô%ð Ý�4Õ,Ñ-Ô-ðØ26´*´/ÀTÐ2IÐ2Ià�}Š}˜W­tˆ}Ñ4Ô4ˆØˆˆÝ	�DÕ-Ñ	.Ô	.ð Ø×1Ò1Ñ3Ô3ˆØ�}Š}‰ŒˆØˆˆÝ˜�rœz­>Ð:Ñ;Ô;ð 	åŒz˜$ÑÔˆˆå	�D�.Ñ	)Ô	)ð ð Œ×#Ò# D¤J½3Ð#Ñ?Ô?ÔGˆØˆà�ˆ:Ðru   rs  rš   c                ó   — d S rq   r•   ©rs  s    rs   Úvalidate_periodsrå   	  ó   € à€Cru   úint | floatr.  c                ó   — d S rq   r•   rä  s    rs   rå  rå  ¥	  ræ  ru   úint | float | Nonerz  c                óî   — | �rt          j        | ¦  «        r8t          j        dt          t          ¦   «         ¬¦  «         t          | ¦  «        } n&t          j        | ¦  «        st          d| › �¦  «        ‚| S )a9  
    If a `periods` argument is passed to the Datetime/Timedelta Array/Index
    constructor, cast it to an integer.

    Parameters
    ----------
    periods : None, float, int

    Returns
    -------
    periods : None or int

    Raises
    ------
    TypeError
        if periods is None, float, or int
    Nz•Non-integer 'periods' in pd.date_range, pd.timedelta_range, pd.period_range, and pd.interval_range are deprecated and will raise in a future version.rL  zperiods must be a number, got )	r   Úis_floatrQ  rR  rS  r?   r.  rñ  r	  rä  s    rs   rå  rå  ª	  s‡   € ð$ ÐÝŒ<˜Ñ Ô ð 	HÝŒMð2õ Ý+Ñ-Ô-ðñ ô ð õ ˜'‘l”lˆGˆGÝ” Ñ(Ô(ð 	HÝÐF¸WÐFÐFÑGÔGÐGØ€Nru   r’   r‘   rf  c                óV   — |�&| � | |k    rt          d|› d| j        › �¦  «        ‚| €|} | S )a
  
    If the user passes a freq and another freq is inferred from passed data,
    require that they match.

    Parameters
    ----------
    freq : DateOffset or None
    inferred_freq : DateOffset or None

    Returns
    -------
    freq : DateOffset or None
    Nrt  ru  )r  rc  )r’   rf  s     rs   rc  rc  Ì	  s]   € ð  Ð ØÐ ¨Ò 5Ð 5Ýð" mð "ð "à”<ð"ð "ñô ð ð
 ˆ<Ø ˆDà€Kru   r}   ú'DatetimeTZDtype | np.dtype | ArrowDtypec                óè   — t          | t          ¦  «        r| j        S t          | t          ¦  «        r(| j        dvrt          d| ›d�¦  «        ‚| j        j        S t          j        | ¦  «        d         S )zç
    Return the unit str corresponding to the dtype's resolution.

    Parameters
    ----------
    dtype : DatetimeTZDtype or np.dtype
        If np.dtype, we assume it is a datetime64 dtype.

    Returns
    -------
    str
    r   r\  z does not have a resolution.r   )	r|   rI   r.  rG   r  r  Úpyarrow_dtyperÓ   Údatetime_datarÒ   s    rs   r~  r~  é	  sy   € õ �%�Ñ)Ô)ð (ØŒzÐÝ	�E�:Ñ	&Ô	&ð (ØŒ:˜TÐ!Ð!ÝÐD ÐDÐDÐDÑEÔEÐEØÔ"Ô'Ð'ÝÔ˜EÑ"Ô" 1Ô%Ð%ru   )rn   ro   )rv   r-   rw   r-   )r™   r“   rÛ  ro   rw   rÜ  )rs  rš   rw   rš   )rs  rç  rw   r.  )rs  ré  rw   rz  )r’   r‘   rf  r‘   rw   r‘   )r}   rí  rw   ro   )¦Ú
__future__r   r   r   Ú	functoolsr   r~  Útypingr   r   r	   r
   r   r   r   r   rQ  ÚnumpyrÓ   Úpandas._libsr   r   Úpandas._libs.arraysr   Úpandas._libs.tslibsr   r   r   r   r   r   r   r   r   r   r   r   r   r   r    r!   r"   Úpandas._libs.tslibs.fieldsr#   r$   Úpandas._libs.tslibs.np_datetimer%   Úpandas._libs.tslibs.timedeltasr&   Úpandas._libs.tslibs.timestampsr'   Úpandas._typingr(   r)   r*   r+   r,   r-   r.   r/   r0   r1   r2   r3   r4   r5   r6   r7   Úpandas.compat.numpyr8   r  Úpandas.errorsr9   r:   r;   Úpandas.util._decoratorsr<   r=   r>   Úpandas.util._exceptionsr?   Úpandas.core.dtypes.castr@   Úpandas.core.dtypes.commonrA   rB   rC   rD   rE   rF   Úpandas.core.dtypes.dtypesrG   rH   rI   rJ   rK   Úpandas.core.dtypes.genericrL   rM   Úpandas.core.dtypes.missingrN   rO   Úpandas.corerP   rQ   rR   rS   Úpandas.core.algorithmsrT   rU   rV   Úpandas.core.array_algosrW   Úpandas.core.arraylikerX   Úpandas.core.arrays._mixinsrY   rZ   Úpandas.core.arrays.arrow.arrayr[   Úpandas.core.arrays.baser\   Úpandas.core.arrays.integerr]   Úpandas.core.commonÚcoreÚcommonrê   Úpandas.core.constructionr^   r1  r_   r`   Úpandas.core.indexersra   rb   Úpandas.core.ops.commonrc   Úpandas.core.ops.invalidrd   re   Úpandas.tseriesrf   Úcollections.abcrg   rh   r;  rj   r¥  rk   rl   rm   r£   rt   r‰   r‹   rS  r×  rØ  rÙ  rÚ  r�  râ  rå  rc  r~  r•   ru   rs   ú<module>r     s#  ðØ "Ð "Ð "Ð "Ð "Ð "ðð ð ð ð ð ð ð ð Ð Ð Ð Ð Ð Ø €€€ð	ð 	ð 	ð 	ð 	ð 	ð 	ð 	ð 	ð 	ð 	ð 	ð 	ð 	ð 	ð 	ð 	ð 	ð 	ð 	ð €€€à Ð Ð Ð ðð ð ð ð ð ð ð ð .Ð -Ð -Ð -Ð -Ð -ðð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð&ð ð ð ð ð ð ð ð KÐ JÐ JÐ JÐ JÐ JØ =Ð =Ð =Ð =Ð =Ð =Ø CÐ CÐ CÐ CÐ CÐ Cðð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð$ /Ð .Ð .Ð .Ð .Ð .ðð ð ð ð ð ð ð ð ð ð
ð ð ð ð ð ð ð ð ð ð
 5Ð 4Ð 4Ð 4Ð 4Ð 4à KÐ KÐ KÐ KÐ KÐ Kðð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ðð ð ð ð ð ð ð ð ð ð ð ð ð ðð ð ð ð ð ð ð ðð ð ð ð ð ð ð ð
ð ð ð ð ð ð ð ð ð ð ð ðð ð ð ð ð ð ð ð ð ð
 ?Ð >Ð >Ð >Ð >Ð >Ø *Ð *Ð *Ð *Ð *Ð *ðð ð ð ð ð ð ð ð ?Ð >Ð >Ð >Ð >Ð >Ø 2Ð 2Ð 2Ð 2Ð 2Ð 2Ø 3Ð 3Ð 3Ð 3Ð 3Ð 3Ø  Ð  Ð  Ð  Ð  Ð  Ð  Ð  Ð  ðð ð ð ð ð ð ð ð ð ð
ð ð ð ð ð ð ð ð <Ð ;Ð ;Ð ;Ð ;Ð ;ðð ð ð ð ð ð ð ð
 'Ð &Ð &Ð &Ð &Ð &àð ðð ð ð ð ð ð ð ð
 ÐÐÐÐÐðð ð ð ð ð ð ð ð ð ð Ð(¨'Ð1Ô2€ð1ð 1ð 1ð 1ð
ð ð ð ð6B3ð B3ð B3ð B3ð B3ØÐ)ñB3ô B3ð B3ðJ071ð 71ð 71ð 71ð 71Ð(ñ 71ô 71ð 71ðt=€
ð~€ð6€ð6€ð8^ð ^ð ^ð ^ð ^Ð(ñ ^ô ^ð ^ðJ$ð $ð $ð $ðN 
ðð ð ñ 
„ðð 
ðð ð ñ 
„ððð ð ð ðDð ð ð ð:&ð &ð &ð &ð &ð &ru   