Ë
    ¤e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˜d9d'„Z™d:d(„Zš G d)„ d*eret«      Z› G d+„ d,e›«      Zœd-Z�d.Zžd/ZŸd0Z  G d1„ d2e›«      Z¡	 	 	 	 	 	 d;d3„Z¢ed<d4„«       Z£ed=d5„«       Z£d>d6„Z£	 	 	 	 	 	 d?d7„Z¤d@d8„Z¥y)Aé    )Ú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ÚTimedeltaArrayc                ó:   — t        | «      } t        | «      |«      S ©N)re   rc   )Úop_nameÚops     ú]/var/www/skyplay_api_hub/venv/lib/python3.12/site-packages/pandas/core/arrays/datetimelike.pyÚ_make_unpacked_invalid_oprs   ¤   s   € Ü	˜Ó	!€BØ,Ô# GÓ,¨RÓ0Ð0ó    c                óJ   ‡ — 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                ó@  •— t        | j                  t        «      s ‰| g|¢­i |¤ŽS | j                  d«      } ‰|g|¢­i |¤Ž}|t        u rt        S t        |t
        «      r| j                  |j                  «      S |j                  d«      }| j                  |«      S )NúM8[ns]Úi8)	Ú
isinstanceÚdtyperK   Úviewr   r   Ú	_box_funcÚ_valueÚ_from_backing_data)ÚselfÚargsÚkwargsÚarrÚresultÚres_i8Úmeths         €rr   Únew_methz"_period_dispatch.<locals>.new_meth°   s�   ø€ ä˜$Ÿ*™*¤kÔ2Ù˜Ð.˜tÒ. vÑ.Ð.à�i‰i˜Ó!ˆÙ�cÐ+˜DÒ+ FÑ+ˆØ”S‰=ÜˆJÜ˜¤	Ô*Ø—>‘> &§-¡-Ó0Ð0à—‘˜TÓ"ˆØ×&Ñ& vÓ.Ð.rt   )r   r   r-   )r…   r†   s   ` rr   Ú_period_dispatchr‡   ©   s*   ø€ ô ˆ4ƒ[ó/ó ð/ô ”�8ÓÐrt   c                  ó¾  ‡ — e Zd ZU dZded<   ded<   ded<   ded	<   d
ed<   edod„«       Z	 dp	 	 	 	 	 dqd„Zedrd„«       Z	dsd„Z
	 	 	 	 dtd„Zdud„Zd„ Zdvd„Zdwd„Zedxd„«       Zdddœ	 	 	 dyd„Zdzd{d„Z	 d|	 	 	 	 	 d}d„Zed~d„«       Ze	 	 	 	 dd„«       Zd€ˆ fd„Zd�d „Z	 	 	 	 	 	 d‚ˆ fd!„Zdƒd"„Zd„d…ˆ fd$„Zed†d%„«       Zed‡d&„«       Zedˆd'„«       Zed‰dŠd(„«       Zd‹dŠˆ fd)„Zd*„ Zdd#d+œ	 	 	 dŒd,„Zdzd�d-„ZdzdŽd.„Zd/„ Ze d�d0„«       Z!e"d‹d1„«       Z#d�d2„Z$d‘d3„Z%ed‘d4„«       Z&edod5„«       Z'e(df	 	 	 d’d6„Z)ed“d7„«       Z*ed“d8„«       Z+ed”d9„«       Z,ed•d:„«       Z-edod;„«       Z.edod<„«       Z/edod=„«       Z0d>„ Z1 e2d?«      Z3 e2d@«      Z4 e2dA«      Z5 e2dB«      Z6 e2dC«      Z7 e2dD«      Z8 e2dE«      Z9 e2dF«      Z: e2dG«      Z; e2dH«      Z< e2dI«      Z= e2dJ«      Z>e 	 	 d–dK„«       Z?e d�dL„«       Z@e d—dM„«       ZAe d˜dN„«       ZBe 	 	 	 	 d™dO„«       ZCe dšdP„«       ZDe d›dQ„«       ZEe dœdR„«       ZFdS„ ZGdT„ ZHd�dU„ZIe dždV„«       ZJe dW„ «       ZKe dX„ «       ZLe dŸdY„«       ZMe d dZ„«       ZNd#d[œd¡d\„ZO ePd]«      d^„ «       ZQd_„ ZR ePd`«      da„ «       ZSdb„ ZTd†dc„ZUd†dd„ZVeW	 	 	 	 	 	 d¢ˆ fde„«       ZXeWdd#dfœd£dg„«       ZYeWdd#dfœd£dh„«       ZZd#didjœd¤dk„Z[eWdd#dfœd£dl„«       Z\d„d¥dm„Z]	 	 	 	 	 	 	 	 	 	 d¦dn„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Úfreqc                 ó   — y)NT© ©r   s    rr   Ú_can_hold_naz#DatetimeLikeArrayMixin._can_hold_naØ   s   € àrt   NFc                ó   — t        | «      ‚ro   ©r9   )r   Údatarz   r�   Úcopys        rr   Ú__init__zDatetimeLikeArrayMixin.__init__Ü   s   € ô " $Ó'Ð'rt   c                ó   — t        | «      ‚)z£
        The scalar associated with this datelike

        * PeriodArray : Period
        * DatetimeArray : Timestamp
        * TimedeltaArray : Timedelta
        r–   r“   s    rr   Ú_scalar_typez#DatetimeLikeArrayMixin._scalar_typeá   s   € ô " $Ó'Ð'rt   c                ó   — 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   Úvalues     rr   Ú_scalar_from_stringz*DatetimeLikeArrayMixin._scalar_from_stringì   ó   € ô$ " $Ó'Ð'rt   c                ó   — 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     rr   Ú_unbox_scalarz$DatetimeLikeArrayMixin._unbox_scalar   s   € ô* " $Ó'Ð'rt   c                ó   — 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   Úothers     rr   Ú_check_compatible_withz-DatetimeLikeArrayMixin._check_compatible_with  r    rt   c                ó   — t        | «      ‚)zI
        box function to get object from internal representation
        r–   )r   Úxs     rr   r|   z DatetimeLikeArrayMixin._box_func-  s   € ô " $Ó'Ð'rt   c                óF   — t        j                  || j                  d¬«      S )z1
        apply box func to passed values
        F)Úconvert)r   Ú	map_inferr|   )r   Úvaluess     rr   Ú_box_valuesz"DatetimeLikeArrayMixin._box_values3  s   € ô �}‰}˜V T§^¡^¸UÔCÐCrt   c                ó†   ‡ — ‰ j                   dkD  rˆ fd„t        t        ‰ «      «      D «       S ˆ fd„‰ j                  D «       S )Né   c              3  ó(   •K  — | ]	  }‰|   –— Œ y ­wro   r’   )Ú.0Únr   s     €rr   ú	<genexpr>z2DatetimeLikeArrayMixin.__iter__.<locals>.<genexpr>;  s   øè ø€ Ò6 �D˜•GÑ6ùs   ƒc              3  ó@   •K  — | ]  }‰j                  |«      –— Œ y ­wro   )r|   )r±   Úvr   s     €rr   r³   z2DatetimeLikeArrayMixin.__iter__.<locals>.<genexpr>=  s   øè ø€ Ò9¨!�D—N‘N 1×%Ñ9ùs   ƒ)ÚndimÚrangeÚlenÚasi8r“   s   `rr   Ú__iter__zDatetimeLikeArrayMixin.__iter__9  s1   ø€ Ø�9‰9�qŠ=Û6¤U¬3¨t«9Ó%5Ô6Ð6ã9¨t¯y©yÔ9Ð9rt   c                ó8   — | j                   j                  d«      S )z‘
        Integer representation of the values.

        Returns
        -------
        ndarray
            An ndarray with int64 dtype.
        rx   )rŽ   r{   r“   s    rr   r¹   zDatetimeLikeArrayMixin.asi8?  s   € ð �}‰}×!Ñ! $Ó'Ð'rt   r   )Úna_repÚdate_formatc               ó   — t        | «      ‚)z|
        Helper method for astype when converting to strings.

        Returns
        -------
        ndarray[str]
        r–   )r   r¼   r½   s      rr   Ú_format_native_typesz+DatetimeLikeArrayMixin._format_native_typesO  s   € ô " $Ó'Ð'rt   c                ó   — dj                   S )Nz'{}')Úformat)r   Úboxeds     rr   Ú
_formatterz!DatetimeLikeArrayMixin._formatter[  s   € à�}‰}Ðrt   c                óx   — t        |«      r$t        j                  t        | «      t        ¬«      S | j
                  S )N©rz   )rD   Únpr^   ÚlistÚobjectrŽ   )r   rz   r˜   s      rr   Ú	__array__z DatetimeLikeArrayMixin.__array__b  s+   € ô ˜5Ô!Ü—8‘8œD ›J¬fÔ5Ð5Ø�}‰}Ðrt   c                 ó   — y ro   r’   ©r   Úitems     rr   Ú__getitem__z"DatetimeLikeArrayMixin.__getitem__j  ó   € àrt   c                 ó   — y ro   r’   rË   s     rr   rÍ   z"DatetimeLikeArrayMixin.__getitem__n  s   € ð
 	rt   c                ó´   •— t        dt        ‰| �	  |«      «      }t        j                  |«      r|S t        t
        |«      }| j                  |«      |_        |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   Úkeyrƒ   Ú	__class__s      €rr   rÍ   z"DatetimeLikeArrayMixin.__getitem__u  sR   ø€ ô Ð2´E±GÑ4GÈÓ4LÓMˆÜ�=‰=˜Ô ØˆMô œ$ Ó'ˆFØ×-Ñ-¨cÓ2ˆŒØˆrt   c                ó:  — t        | j                  t        «      }|r| j                  }|S | j                  dk7  rd}|S t        | |«      }d}t        |t        «      rA| j                  �'|j                  �|j                  | j                  z  }|S | j                  }|S |t        u r| j                  }|S t        j                  |«      rSt        j                  |j                  t        j                  «      «      }t        |t        «      r| j!                  |«      S |S )z\
        Find the `freq` attribute to assign to the result of a __getitem__ lookup.
        r¯   N)ry   rz   rK   r�   r¶   ra   ÚsliceÚstepÚEllipsisÚcomÚis_bool_indexerr   Úmaybe_booleans_to_slicer{   rÆ   Úuint8rÓ   )r   rÕ   Ú	is_periodr�   Únew_keys        rr   rÓ   z(DatetimeLikeArrayMixin._get_getitem_freq†  s  € ô ˜tŸz™z¬;Ó7ˆ	ÙØ—9‘9ˆDð& ˆð% �Y‰Y˜!Š^ØˆDð" ˆô & d¨CÓ0ˆCØˆDÜ˜#œuÔ%Ø—9‘9Ð(¨S¯X©XÐ-AØŸ8™8 d§i¡iÑ/�Dð ˆð  Ÿ9™9�Dð ˆð œ‘ð —y‘y�ð
 ˆô	 ×$Ñ$ SÔ)Ü×5Ñ5°c·h±h¼r¿x¹xÓ6HÓI�Ü˜g¤uÔ-Ø×1Ñ1°'Ó:Ð:Øˆrt   c                óf   •— t        ||| «      }t        ‰| �	  ||«       |ry | j                  «        y ro   )rb   rÑ   Ú__setitem__Ú_maybe_clear_freq)r   rÕ   rž   Úno_oprÖ   s       €rr   râ   z"DatetimeLikeArrayMixin.__setitem__¤  s6   ø€ ô & c¨5°$Ó7ˆô 	‰Ñ˜C Ô'áØà×ÑÕ rt   c                 ó   — y ro   r’   r“   s    rr   rã   z(DatetimeLikeArrayMixin._maybe_clear_freqº  s   € ð 	rt   Tc                óÀ  •— t        |«      }|t        k(  rÈ| j                  j                  dk(  r=t	        d| «      } | j
                  }t        || j                  d| j                  ¬«      }|S | j                  j                  dk(  rt        | j                  d¬«      S | j                  | j
                  j                  «       «      j                  | j                  «      S t        |t         «      rt"        ‰| �I  ||¬«      S t'        |«      r| j)                  «       S |j                  d	v rO| j
                  }|t*        j,                  k7  rt/        d
| j                  › d|› d�«      ‚|r|j1                  «       }|S |j                  dv r| j                  |k7  s|j                  dk(  r&dt3        | «      j4                  › d|› �}t/        |«      ‚t+        j6                  | |¬«      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È   rz   Úkindr   r¹   r   ré   Ú_cresor    rŽ   r­   ÚravelÚreshapeÚshapery   rJ   rÑ   ÚastyperE   r¿   rÆ   Úint64Ú	TypeErrorr˜   ÚtypeÚ__name__Úasarray)r   rz   r˜   Úi8dataÚ	convertedr¬   ÚmsgrÖ   s          €rr   rö   zDatetimeLikeArrayMixin.astype¿  s¡  ø€ ô
 ˜UÓ#ˆà”FŠ?Ø�z‰z�‰ #Ò%Ü˜O¨TÓ2�ð Ÿ™�Ü.ØØ—w‘wØ#ØŸ™ô	�	ð !Ð à—‘—‘ CÒ'Ü*¨4¯=©=¸dÔCÐCà×#Ñ# D§I¡I§O¡OÓ$5Ó6×>Ñ>¸t¿z¹zÓJÐJä˜œ~Ô.Ü‘7‘> %¨d�>Ó3Ð3Ü˜UÔ#Ø×,Ñ,Ó.Ð.Ø�Z‰Z˜4Ñð —Y‘YˆFØœŸ™Ò ÜØ& t§z¡z l°$°u°gð >Cð Cóð ñ
 ØŸ™›�ØˆMØ�j‰j˜DÑ  T§Z¡Z°5Ò%8¸U¿Z¹ZÈ3Ò=Nð !¤ d£×!4Ñ!4Ð 5°ZÀ¸wÐGˆCÜ˜C“.Ð ä—:‘:˜d¨%Ô0Ð0rt   c                 ó   — y ro   r’   r“   s    rr   r{   zDatetimeLikeArrayMixin.viewò  rÎ   rt   c                 ó   — y ro   r’   ©r   rz   s     rr   r{   zDatetimeLikeArrayMixin.viewö  rÎ   rt   c                 ó   — y ro   r’   r  s     rr   r{   zDatetimeLikeArrayMixin.viewú  rÎ   rt   c                 ó   — y ro   r’   r  s     rr   r{   zDatetimeLikeArrayMixin.viewþ  rÎ   rt   c                ó"   •— t         ‰| �  |«      S ro   )rÑ   r{   )r   rz   rÖ   s     €rr   r{   zDatetimeLikeArrayMixin.view  s   ø€ ô ‰w‰|˜EÓ"Ð"rt   c                óŒ  — t        |t        «      r	 | j                  |«      }t        || j                  «      s|t        u r%| j                  |«      }	 | j                  |«       |S t        |«      st        |«      ‚t        |«      t        | «      k7  rt        d«      ‚	 | j                  |d¬«      }| j                  |«       |S # t        t        f$ r t        |«      ‚w xY w# t        t        f$ r}t        |«      |‚d }~ww xY w# t        t        f$ r.}t        t        |dd «      «      rnt        |«      |‚Y d }~|S d }~ww xY w)NzLengths must matchT)Úallow_objectrz   )ry   ÚstrrŸ   Ú
ValueErrorr   r:   rŒ   r   r›   r¦   rø   rC   r¸   Ú_validate_listlikerD   Úgetattr)r   r¥   Úerrs      rr   Ú_validate_comparison_valuez1DatetimeLikeArrayMixin._validate_comparison_value  sM  € Ü�eœSÔ!ð/à×0Ñ0°Ó7�ô
 �e˜T×5Ñ5Ô6¸%Ä3¹,Ø×%Ñ% eÓ,ˆEð8Ø×+Ñ+¨EÔ2ð, ˆô# ˜eÔ$Ü# EÓ*Ð*ä�‹Zœ3˜t›9Ò$ÜÐ1Ó2Ð2ð<Ø×/Ñ/°ÀDÐ/ÓI�Ø×+Ñ+¨EÔ2ð ˆøô; Ô 5Ð6ò /ä'¨Ó.Ð.ð/ûô Ô4Ð5ò 8ä'¨Ó.°CÐ7ûð8ûô Ô4Ð5ò <Ü"¤7¨5°'¸4Ó#@ÔAàä+¨EÓ2¸Ð;ó ð ˆûð<ús;   ’C ÁC# Â$D ÃC Ã#DÃ2C>Ã>DÄEÄ#D>Ä>E)Úallow_listlikeÚunboxc               ó  — t        || j                  «      rn­t        |t        «      r	 | j                  |«      }nŠt        || j                  «      rt        }nmt        |«      r| j                  ||«      }t        |«      ‚t        || j                  «      r| j                  |«      }n| j                  ||«      }t        |«      ‚|s|S | j                  |«      S # t        $ r#}| j                  ||«      }t        |«      |‚d}~ww xY w)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)ry   r›   r  rŸ   r  Ú_validation_error_messagerø   rN   rz   r   rO   rŒ   r¢   )r   rž   r  r  r  rþ   s         rr   Ú_validate_scalarz'DatetimeLikeArrayMixin._validate_scalar0  sû   € ô0 �e˜T×.Ñ.Ô/Øä˜œsÔ#ð.Ø×0Ñ0°Ó7‘ô
 # 5¨$¯*©*Ô5ä‰Eä�%Œ[ð ×0Ñ0°¸ÓGˆCÜ˜C“.Ð ä˜˜t×7Ñ7Ô8ð ×%Ñ% eÓ,‰Eð ×0Ñ0°¸ÓGˆCÜ˜C“.Ð áð ˆLØ×!Ñ! %Ó(Ð(øô9 ò .Ø×4Ñ4°U¸NÓK�Ü “n¨#Ð-ûð.ús   ©C Ã	DÃ#DÄDc                ó  — t        |d«      r t        |dd«      dkD  r|j                  › d�}ndt        |«      j                  › d�}|rd| j
                  j                  › d|› d�}|S 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
        rz   r¶   r   z arrayú'zvalue should be a 'z!', 'NaT', or array of those. Got z	 instead.z' or 'NaT'. Got )Úhasattrr
  rz   rù   rú   r›   )r   rž   r  Úmsg_gotrþ   s        rr   r  z0DatetimeLikeArrayMixin._validation_error_messagem  s°   € ô �5˜'Ô"¤w¨u°f¸aÓ'@À1Ò'DØŸ™˜ VÐ,‰Gàœ$˜u›+×.Ñ.Ð/¨qÐ1ˆGÙà% d×&7Ñ&7×&@Ñ&@Ð%Að B*Ø*1¨°)ð=ð ð ˆ
ð & d×&7Ñ&7×&@Ñ&@Ð%Að BØ�i˜yð*ð ð ˆ
rt   c                óî  — t        |t        | «      «      r9| j                  j                  dv r|s|j	                  | j
                  d¬«      }|S t        |t        «      r4t        |«      dk(  r&t        | «      j                  g | j                  ¬«      S t        |d«      rO|j                  t        k(  r<t        j                  |«      | j                  v r	 t        | «      j                  |«      }t#        |d¬«      }t%        |«      }t#        |d¬«      }t'        |«      r'	 t        | «      j                  || j                  ¬«      }t        |j                  t(        «      r@|j*                  j                  | j                  k(  r|j-                  «       }t#        |d¬«      }|rt/        |j                  «      rnAt        | «      j1                  |j                  «      s| j!                  |d«      }t        |«      ‚| j                  j                  dv r|s|j	                  | j
                  d¬«      }|S # t        t        f$ r$ |r|cY S | j!                  |d«      }t        |«      ‚w xY w# t        $ r Y �Œ.w xY w)	Nrï   F©Úround_okr   rÅ   rz   T©Úextract_numpy)ry   rù   rz   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       rr   r	  z)DatetimeLikeArrayMixin._validate_listlikeŒ  s  € Ü�eœT $›ZÔ(Ø�z‰z�‰ $Ñ&©|àŸ™ d§i¡i¸%˜Ó@�ØˆLä�eœTÔ"¤s¨5£z°Q¢ä˜“:×,Ñ,¨R°t·z±zÐ,ÓBÐBä�5˜'Ô" u§{¡{´fÒ'<ô �‰˜uÓ%¨×)<Ñ)<Ñ<ð)Ü  ›J×5Ñ5°eÓ<�Eô ˜e°4Ô8ˆÜ˜“ˆÜ˜e°4Ô8ˆä˜%Ô ðô ˜T›
×1Ñ1°%¸t¿z¹zÐ1ÓJ�ô �e—k‘kÔ#3Ô4à×Ñ×%Ñ%¨¯©Ò3à×2Ñ2Ó4�Ü% e¸4Ô@�áœO¨E¯K©KÔ8Øä�d“×0Ñ0°·±Ô=Ø×0Ñ0°¸Ó=ˆCÜ˜C“.Ð à�:‰:�?‰?˜dÑ"©<à—M‘M $§)¡)°e�MÓ<ˆEØˆøôO #¤IÐ.ò )Ù#Ø$šØ×8Ñ8¸ÀÓE�CÜ# C›.Ð(ð	)ûô& ò Úðús$   ÃH1 Ä&I' È1I$ÉI$É'	I4É3I4c                ó„   — t        |«      r| j                  |«      }n| j                  |d¬«      S | j                  |«      S )NT)r  )rC   r	  r  Ú_unboxr�   s     rr   Ú_validate_setitem_valuez.DatetimeLikeArrayMixin._validate_setitem_valueÆ  s?   € Ü˜ÔØ×+Ñ+¨EÓ2‰Eà×(Ñ(¨¸tÐ(ÓDÐDà�{‰{˜5Ó!Ð!rt   c                ó�   — t        j                  |«      r| j                  |«      }|S | j                  |«       |j                  }|S )zZ
        Unbox either a scalar with _unbox_scalar or an instance of our own type.
        )r   rÒ   r¢   r¦   rŽ   r¤   s     rr   r#  zDatetimeLikeArrayMixin._unboxÎ  sE   € ô
 �=‰=˜ÔØ×&Ñ& uÓ-ˆEð
 ˆð ×'Ñ'¨Ô.Ø—N‘NˆEØˆrt   c                ó’   — ddl m} t        | ||¬«      } ||«      }t        |t        «      r|j                  «       S |j                  S )Nr   ri   )Ú	na_action)Úpandasrj   rU   ry   rM   Úto_numpyr^   )r   Úmapperr'  rj   rƒ   s        rr   ÚmapzDatetimeLikeArrayMixin.mapà  s=   € å ä˜4 °9Ô=ˆÙ�v“ˆä�fœmÔ,Ø—?‘?Ó$Ð$à—<‘<Ðrt   c                ó–  — |j                   j                  dv r%t        j                  | j                  t
        ¬«      S t        |«      }t        |t        | «      «      �sg d¢}|j                   t        k(  r¯t        j                  |d| j                   ¬«      }|j                   t        k7  r| j                  |«      S t        j                  |d¬«      }||vrN|dk(  rnHd	|v rt        | j                  t        «      |«      S t        j                  | j                  t
        ¬«      S 	 t        | «      j                  |«      }t!        j"                  d
| j                   › d�t$        t'        «       ¬«       | j                   j                  dv r't+        d| «      } |j-                  | j.                  «      }	 | j1                  |«       t        | j4                  |j4                  «      S # t(        $ r" t        | j                  t        «      |«      cY S w xY w# t2        t(        f$ r( t        j                  | j                  t
        ¬«      cY S w xY w)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)rz   rñ   rÆ   Úzerosrõ   Úboolr_   ry   rù   rÈ   r   Úmaybe_convert_objectsrT   r  rö   r  ÚwarningsÚwarnÚFutureWarningr?   r  r   r  r  r¦   rø   r¹   )r   r¬   Ú	inferableÚinferreds       rr   rT   zDatetimeLikeArrayMixin.isinì  sà  € ð �<‰<×Ñ Ñ&ä—8‘8˜DŸJ™J¬dÔ3Ð3ä/°Ó7ˆä˜&¤$ t£*Õ-òˆIð �|‰|œvÒ%Ü×2Ñ2ØØ(,Ø%)§Z¡Zô�ð
 —<‘<¤6Ò)ØŸ9™9 VÓ,Ð,äŸ?™?¨6¸%Ô@�Ø 9Ñ,Ø 8Ò+Øà  HÑ,Ü# D§K¡K´Ó$7¸Ó@Ð@ä!Ÿx™x¨¯
©
¼$Ô?Ð?ðÜ˜d›×2Ñ2°6Ó:�ô —‘à8¸¿¹¸ð E,ð ,ô
 "Ü/Ó1õ	ð �:‰:�?‰?˜dÑ"ÜÐ8¸$Ó?ˆDð —^‘^ D§I¡IÓ.ˆFð	4ð ×'Ñ'¨Ô/ô �D—I‘I˜vŸ{™{Ó+Ð+øô? ò 9Ü˜DŸK™K¬Ó/°Ó8Ò8ð9ûô2 œ:Ð&ò 	4ä—8‘8˜DŸJ™J¬dÔ3Ò3ð	4ús$   Ä&G# Æ2H Ç#(HÈHÈ4IÉIc                ó   — | j                   S ro   )Ú_isnanr“   s    rr   rO   zDatetimeLikeArrayMixin.isnaA  s   € Ø�{‰{Ðrt   c                ó(   — | j                   t        k(  S )z-
        return if each value is nan
        )r¹   r   r“   s    rr   rD  zDatetimeLikeArrayMixin._isnanD  s   € ð
 �y‰yœDÑ Ð rt   c                óH   — t        | j                  j                  «       «      S )zJ
        return if I have any nans; enables various perf speedups
        )r<  rD  Úanyr“   s    rr   Ú_hasnazDatetimeLikeArrayMixin._hasnaK  s   € ô
 �D—K‘K—O‘OÓ%Ó&Ð&rt   c                óª   — | j                   rF|r|j                  |«      }|€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.
        )rH  rö   rÆ   ÚnanÚputmaskrD  )r   rƒ   Ú
fill_valuerª   s       rr   Ú_maybe_mask_resultsz*DatetimeLikeArrayMixin._maybe_mask_resultsR  sD   € ð& �;Š;ÙØŸ™ wÓ/�ØÐ!ÜŸV™V�
Ü�J‰J�v˜tŸ{™{¨JÔ7Øˆrt   c                óH   — | j                   €y| 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    rr   rO  zDatetimeLikeArrayMixin.freqstrp  s!   € ð4 �9‰9ÐØØ�y‰y× Ñ Ð rt   c                ól   — | j                   dk7  ry	 t        j                  | «      S # t        $ r Y y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    rr   Úinferred_freqz$DatetimeLikeArrayMixin.inferred_freqŽ  s:   € ð0 �9‰9˜Š>Øð	Ü×)Ñ)¨$Ó/Ð/øÜò 	Ùð	ús   ’' §	3²3c                ój   — | j                   }|€y 	 t        j                  |«      S # t        $ r Y y w xY wro   )rO  r   Úget_reso_from_freqstrÚKeyError)r   rO  s     rr   Ú_resolution_objz&DatetimeLikeArrayMixin._resolution_obj­  s;   € à—,‘,ˆØˆ?Øð	Ü×3Ñ3°GÓ<Ð<øÜò 	Ùð	ús   ‘& ¦	2±2c                ó.   — | j                   j                  S )zO
        Returns day, hour, minute, second, millisecond or microsecond
        )rV  Úattrnamer“   s    rr   Ú
resolutionz!DatetimeLikeArrayMixin.resolution·  s   € ð ×#Ñ#×,Ñ,Ð,rt   c                óJ   — t        j                  | j                  d¬«      d   S )NT©Útimeliker   ©r   Úis_monotonicr¹   r“   s    rr   Ú_is_monotonic_increasingz/DatetimeLikeArrayMixin._is_monotonic_increasingÂ  ó   € ä×!Ñ! $§)¡)°dÔ;¸AÑ>Ð>rt   c                óJ   — t        j                  | j                  d¬«      d   S )NTr[  r¯   r]  r“   s    rr   Ú_is_monotonic_decreasingz/DatetimeLikeArrayMixin._is_monotonic_decreasingÆ  r`  rt   c                óv   — t        t        | j                  j                  d«      «      «      | j                  k(  S )NÚK)r¸   rV   r¹   ró   Úsizer“   s    rr   Ú
_is_uniquez!DatetimeLikeArrayMixin._is_uniqueÊ  s(   € ä”8˜DŸI™IŸO™O¨CÓ0Ó1Ó2°d·i±iÑ?Ð?rt   c                ó–  — | j                   dkD  rXt        |dd «      | j                  k(  r> || j                  «       |j                  «       «      j	                  | j                  «      S 	 | j                  |«      }t        |dd «      }t        |«      r?t        j                  |t        j                  | j                  t        «      «      |«      }|S |t        u r`|t         j"                  u r't        j$                  | j                  t&        ¬«      }|S t        j(                  | j                  t&        ¬«      }|S t+        | j,                  t.        «      s€t1        t2        | «      } | j4                  |j4                  k7  rWt+        |t7        | «      «      s	 |j9                  | j:                  d¬«      }n#|jD                  }tC        | jD                  ||«      S | jG                  |«      } || jD                  jI                  d«      |jI                  d«      «      }tK        |«      }| jL                  |z  }|jO                  «       r)|t         j"                  u }	t        jP                  |||	«       |S # t        $ r t        | ||«      cY S w xY w# t<        $ r9 t        j>                  |j@                  «      }tC        | jD                  ||«      cY S w xY w)Nr¯   rõ   rz   rÅ   Fr  rx   ))r¶   r
  rõ   ró   rô   r  r:   rd   rD   rS   Úcomp_method_OBJECT_ARRAYrÆ   rû   rö   rÈ   r   ÚoperatorÚneÚonesr<  r;  ry   rz   rK   r   ÚTimelikeOpsrò   rù   r  r  r  r^   Úasm8r%   rŽ   r#  r{   rO   rD  rG  rK  )
r   r¥   rq   rz   rƒ   Ú	other_arrÚ
other_valsÚo_maskÚmaskÚ
nat_results
             rr   Ú_cmp_methodz"DatetimeLikeArrayMixin._cmp_methodÑ  s3  € Ø�9‰9�qŠ=œW U¨G°TÓ:¸d¿j¹jÒHá�d—j‘j“l E§K¡K£MÓ2×:Ñ:¸4¿:¹:ÓFÐFð	7Ø×3Ñ3°EÓ:ˆEô ˜˜w¨Ó-ˆÜ˜5Ô!ô ×1Ñ1Ø”B—J‘J˜tŸ{™{¬6Ó2Ó3°UóˆFð ˆMØ”C‰<Ø”X—[‘[Ñ ÜŸ™ §¡´4Ô8�ð ˆMô Ÿ™ $§*¡*´DÔ9�ØˆMä˜$Ÿ*™*¤kÔ2Üœ TÓ*ˆDØ�{‰{˜eŸl™lÒ*Ü! %¬¨d«Ô4ðà %§¡¨d¯i©iÀ% Ó H™ð !&§¡�IÜ9¸$¿-¹-ÈÐTVÓWÐWà—[‘[ Ó'ˆ
á�D—M‘M×&Ñ& tÓ,¨j¯o©o¸dÓ.CÓDˆä�e“ˆØ�{‰{˜VÑ#ˆØ�8‰8Œ:ØœxŸ{™{Ð*ˆJÜ�J‰J�v˜t ZÔ0àˆøô] !ò 	7Ü% d¨E°2Ó6Ò6ð	7ûô6 &ò Ü$&§H¡H¨U¯Z©ZÓ$8˜	Ü=Ø ŸM™M¨9°bó ò ðús$   Á)I* ÆJ É*JÊJÊ?KËKÚ__pow__Ú__rpow__Ú__mul__Ú__rmul__Ú__truediv__Ú__rtruediv__Ú__floordiv__Ú__rfloordiv__Ú__mod__Ú__rmod__Ú
__divmod__Ú__rdivmod__c                óÎ   — t        |t        «      r|j                  }d}||fS t        |t        t        f«      r|j
                  }d}||fS |j                  }|j                  }||fS )zN
        Get the int64 values and b_mask to pass to add_overflowsafe.
        N)ry   r   Úordinalr   r   r}   rD  r¹   )r   r¥   Úi8valuesrq  s       rr   Ú_get_i8_values_and_maskz.DatetimeLikeArrayMixin._get_i8_values_and_mask  sq   € ô �eœVÔ$Ø—}‘}ˆHØˆDð ˜ˆ~Ðô ˜¤	¬9Ð5Ô6Ø—|‘|ˆHØˆDð
 ˜ˆ~Ðð —<‘<ˆDØ—z‘zˆHØ˜ˆ~Ðrt   c                óÈ   — t        | j                  t        «      r| j                  S t	        j
                  |«      syt        | j                  t        «      r| j                  S y)zP
        Check if we can preserve self.freq in addition or subtraction.
        N)ry   rz   rK   r�   r   rÒ   r   r¤   s     rr   Ú_get_arithmetic_result_freqz2DatetimeLikeArrayMixin._get_arithmetic_result_freq*  sF   € ô �d—j‘j¤+Ô.Ø—9‘9ÐÜ—‘˜uÔ%ØÜ˜Ÿ	™	¤4Ô(à—9‘9ÐØrt   c                óš  — t        j                  | j                  d«      s7t        dt	        | «      j
                  › dt	        |«      j
                  › �«      ‚t        d| «      } ddlm} ddl	m
} |t        usJ ‚t        |«      r\| j                  t        j                  «       j                  d| j                   › d	�«      z   } |j"                  ||j                  ¬
«      S t%        |«      }| j'                  |«      \  } }t        d| «      } | j)                  |«      \  }}t+        | j,                  t/        j0                  |d¬
«      «      }|j3                  d| j                   › d	�«      } ||j4                  | j                   ¬«      }|j3                  d| j                   › d	�«      }| j7                  |«      }	 |j"                  |||	¬«      S )Nrì   úcannot add ú and rm   r   ©rk   )Útz_to_dtypezM8[ú]rÅ   rx   ©ré   r  ©rz   r�   )r   Úis_np_dtyperz   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_i8rp  Ú
res_valuesrz   Únew_freqs
             rr   Ú_add_datetimelike_scalarz/DatetimeLikeArrayMixin._add_datetimelike_scalar:  sˆ  € ä�‰˜tŸz™z¨3Ô/ÜØœd 4›j×1Ñ1Ð2°%¼¸U»×8LÑ8LÐ7MÐNóð ô Ð$ dÓ+ˆå4Ý<àœCÑÐÐÜ�Œ;ð —]‘]¤S×%6Ñ%6Ó%8×%?Ñ%?À#ÀdÇiÁiÀ[ÐPQÐ@RÓ%SÑSˆFà,�=×,Ñ,¨V¸6¿<¹<ÔHÐHä˜%Ó ˆØ×1Ñ1°%Ó8‰ˆˆeÜÐ$ dÓ+ˆà×7Ñ7¸Ó>Ñˆ�&Ü! $§)¡)¬R¯Z©Z¸ÈÔ-MÓNˆØ—[‘[ 3 t§y¡y k°Ð!3Ó4ˆ
á˜uŸx™x¨d¯i©iÔ8ˆØ—[‘[ 3 t§y¡y k°Ð!3Ó4ˆ
Ø×3Ñ3°EÓ:ˆØ(ˆ}×(Ñ(¨¸5ÀxÔPÐPrt   c                óº   — t        j                  | j                  d«      s7t        dt	        | «      j
                  › dt	        |«      j
                  › �«      ‚|| z   S )Nrì   r‡  rˆ  )r   rŽ  rz   rø   rù   rú   r¤   s     rr   Ú_add_datetime_arraylikez.DatetimeLikeArrayMixin._add_datetime_arraylike\  sS   € ä�‰˜tŸz™z¨3Ô/ÜØœd 4›j×1Ñ1Ð2°%¼¸U»×8LÑ8LÐ7MÐNóð ð
 �t‰|Ðrt   c                ó  — | j                   j                  dk7  r!t        dt        | «      j                  › �«      ‚t        d| «      } t        |«      r	| t        z
  S t        |«      }| j                  |«      \  } }| j                  |«      S )Nrç   ú"cannot subtract a datelike from a rk   )rz   rñ   rø   rù   rú   r   rO   r   r   r“  Ú_sub_datetimelike)r   r¥   Útss      rr   Ú_sub_datetimelike_scalarz/DatetimeLikeArrayMixin._sub_datetimelike_scalarf  s€   € ð �:‰:�?‰?˜cÒ!ÜÐ@ÄÀdÃ×ATÑATÐ@UÐVÓWÐWä�O TÓ*ˆô �Œ;àœ#‘:Ðä�uÓˆà×.Ñ.¨rÓ2‰ˆˆbØ×%Ñ% bÓ)Ð)rt   c                ó  — | j                   j                  dk7  r!t        dt        | «      j                  › �«      ‚t        | «      t        |«      k7  rt        d«      ‚t        d| «      } | j                  |«      \  } }| j                  |«      S )Nrç   r›  ú$cannot add indices of unequal lengthrk   )
rz   rñ   rø   rù   rú   r¸   r  r   r“  rœ  r¤   s     rr   Ú_sub_datetime_arraylikez.DatetimeLikeArrayMixin._sub_datetime_arraylikey  s}   € à�:‰:�?‰?˜cÒ!ÜÐ@ÄÀdÃ×ATÑATÐ@UÐVÓWÐWäˆt‹9œ˜E›
Ò"ÜÐCÓDÐDä�O TÓ*ˆà×1Ñ1°%Ó8‰ˆˆeØ×%Ñ% eÓ,Ð,rt   c                óü  — t        d| «      } ddlm} 	 | j                  |«       | j                  |«      \  }}t        | j                  t        j                  | d¬«      «      }|j                  d| j                  › d	�«      }| j                  |«      }	t        d
|	«      }	 |j                   ||j"                  |	¬«      S # t        $ r2}t        |«      j                  dd«      } t        |«      |«      |‚d }~ww xY w)Nrk   r   ©rm   ÚcompareÚsubtractrx   rÅ   útimedelta64[r‹  zTick | Noner�  )r   r�  rm   Ú_assert_tzawareness_compatrø   r  Úreplacerù   rƒ  r   r¹   rÆ   rû   r{   r  r…  r’  rz   )
r   r¥   rm   r  Únew_messager”  rp  r•  Úres_m8r–  s
             rr   rœ  z(DatetimeLikeArrayMixin._sub_datetimelike†  så   € ä�O TÓ*ˆå5ð	2Ø×+Ñ+¨EÔ2ð
  ×7Ñ7¸Ó>Ñˆ�&Ü% d§i¡i´·±¸X¸IÈTÔ1RÓSˆ
Ø—‘ <°·	±	¨{¸!Ð!<Ó=ˆà×3Ñ3°EÓ:ˆÜ˜ xÓ0ˆØ)ˆ~×)Ñ)¨&¸¿¹È8ÔTÐTøô ò 	2Ü˜c›(×*Ñ*¨9°jÓAˆKØ”$�s“)˜KÓ(¨cÐ1ûð	2ús   ”C  Ã 	C;Ã	-C6Ã6C;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Ž  rz   rø   rù   rú   Úpandas.core.arrays.periodrl   rÆ   Úbroadcast_tor�  rõ   rK   r�   )r   r¥   rl   Úi8valsrz   Úparrs         rr   Ú_add_periodz"DatetimeLikeArrayMixin._add_periodš  ss   € ä�‰˜tŸz™z¨3Ô/ÜÐ5´d¸4³j×6IÑ6IÐ5JÐKÓLÐLõ 	:ä—‘ §¡°·
±
Ó;ˆÜ˜EŸJ™JÓ'ˆÙ˜6¨Ô/ˆØ�d‰{Ðrt   c                ó   — t        | «      ‚ro   r–   )r   Úoffsets     rr   Ú_add_offsetz"DatetimeLikeArrayMixin._add_offset§  s   € Ü! $Ó'Ð'rt   c                óŽ  — t        |«      rt        j                  | j                  d¬«      j	                  | j
                  j                  «      }|j                  t        «       t        | «      j                  || j                  ¬«      S t        d| «      } t        |«      }| j                  |«      \  } }| j                  |«      S )zk
        Add a delta of a timedeltalike

        Returns
        -------
        Same type as self
        rx   rÅ   r:  )rO   rÆ   Úemptyrõ   r{   rŽ   rz   Úfillr   rù   r’  r   r   r“  Ú_add_timedeltalike)r   r¥   Ú
new_valuess      rr   Ú_add_timedeltalike_scalarz0DatetimeLikeArrayMixin._add_timedeltalike_scalarª  sœ   € ô �Œ;äŸ™ $§*¡*°DÔ9×>Ñ>¸t¿}¹}×?RÑ?RÓSˆJØ�O‰OœDÔ!Ü˜“:×)Ñ)¨*¸D¿J¹JÐ)ÓGÐGô Ð4°dÓ;ˆÜ˜%Ó ˆØ×1Ñ1°%Ó8‰ˆˆeØ×&Ñ& uÓ-Ð-rt   c                ó¨   — t        | «      t        |«      k7  rt        d«      ‚t        d| «      } | j                  |«      \  } }| j	                  |«      S )zl
        Add a delta of a TimedeltaIndex

        Returns
        -------
        Same type as self
        r   r:  )r¸   r  r   r“  r·  r¤   s     rr   Ú_add_timedelta_arraylikez/DatetimeLikeArrayMixin._add_timedelta_arraylike¾  sR   € ô ˆt‹9œ˜E›
Ò"ÜÐCÓDÐDäÐ4°dÓ;ˆà×1Ñ1°%Ó8‰ˆˆeØ×&Ñ& uÓ-Ð-rt   c                óR  — t        d| «      } | j                  |«      \  }}t        | j                  t	        j
                  |d¬«      «      }|j                  | j                  j                  «      }| j                  |«      }t        | «      j                  || j                  |¬«      S )Nr:  rx   rÅ   r�  )r   rƒ  r   r¹   rÆ   rû   r{   rŽ   rz   r…  rù   r’  )r   r¥   r”  rp  r¸  r•  r–  s          rr   r·  z)DatetimeLikeArrayMixin._add_timedeltalikeÐ  s�   € äÐ4°dÓ;ˆà×7Ñ7¸Ó>Ñˆ�&Ü% d§i¡i´·±¸HÈDÔ1QÓRˆ
Ø—_‘_ T§]¡]×%8Ñ%8Ó9ˆ
à×3Ñ3°EÓ:ˆô
 �D‹z×%Ñ%Ø˜dŸj™j¨xð &ó 
ð 	
rt   c                óä  — t        | j                  t        «      r;t        dt	        | «      j
                  › dt	        t        «      j
                  › �«      ‚t        d| «      } t        j                  | j                  t        j                  ¬«      }|j                  t        «       |j                  | j                  j                  «      }t	        | «      j!                  || j                  d¬«      S )z$
        Add pd.NaT to self
        zCannot add rˆ  zTimedeltaArray | DatetimeArrayrÅ   Nr�  )ry   rz   rK   rø   rù   rú   r   r   rÆ   rµ  rõ   r÷   r¶  r   r{   rŽ   r’  ©r   rƒ   s     rr   Ú_add_natzDatetimeLikeArrayMixin._add_natá  s»   € ô
 �d—j‘j¤+Ô.ÜØœd 4›j×1Ñ1Ð2°%¼¼S»	×8JÑ8JÐ7KÐLóð ô Ð4°dÓ;ˆô —‘˜$Ÿ*™*¬B¯H©HÔ5ˆØ�‰”DÔØ—‘˜TŸ]™]×0Ñ0Ó1ˆô �D‹z×%Ñ%Ø˜$Ÿ*™*¨4ð &ó 
ð 	
rt   c                ó2  — t        j                  | j                  t         j                  ¬«      }|j	                  t
        «       | j                  j                  dv r+t        d| «      } |j                  d| j                  › d�«      S |j                  d«      S )z+
        Subtract pd.NaT from self
        rÅ   rï   zDatetimeArray| TimedeltaArrayr¦  r‹  ztimedelta64[ns])rÆ   rµ  rõ   r÷   r¶  r   rz   rñ   r   r{   r  r¾  s     rr   Ú_sub_natzDatetimeLikeArrayMixin._sub_natø  sq   € ô —‘˜$Ÿ*™*¬B¯H©HÔ5ˆØ�‰”DÔØ�:‰:�?‰?˜dÑ"äÐ7¸Ó>ˆDØ—;‘; ¨d¯i©i¨[¸Ð:Ó;Ð;à—;‘;Ð0Ó1Ð1rt   c                ó.  — t        | j                  t        «      s7t        dt	        |«      j
                  › dt	        | «      j
                  › �«      ‚t        d| «      } | j                  |«       | j                  |«      \  }}t        | j                  t        j                  | d¬«      «      }t        j                  |D �cg c]  }| j                  j                  |z  ‘Œ c}«      }|€| j                   }n| j                   |z  }t"        ||<   |S c c}w )Núcannot subtract ú from rl   rx   rÅ   )ry   rz   rK   rø   rù   rú   r   r¦   rƒ  r   r¹   rÆ   rû   r^   r�   ÚbaserD  r   )r   r¥   r”  rp  Únew_i8_datar¨   Únew_datarq  s           rr   Ú_sub_periodlikez&DatetimeLikeArrayMixin._sub_periodlike  së   € ô ˜$Ÿ*™*¤kÔ2ÜØ"¤4¨£;×#7Ñ#7Ð"8¸¼tÀD»z×?RÑ?RÐ>SÐTóð ô �M 4Ó(ˆØ×#Ñ# EÔ*à×7Ñ7¸Ó>Ñˆ�&Ü& t§y¡y´"·*±*¸h¸YÈdÔ2SÓTˆÜ—8‘8¸ÖE°A˜TŸY™YŸ^™^¨aÓ/ÒEÓFˆàˆ>à—;‘;‰Dð —;‘; Ñ'ˆDÜˆ�‰Øˆùò Fs   Ã D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«       ‚ || j                  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.r8  ÚO)ri  ÚaddÚsubr¸   r¶   r>  r?  rù   rú   r;   r?   rõ   rö   rÆ   rû   )r   r¥   rq   r•  s       rr   Ú_addsub_object_arrayz+DatetimeLikeArrayMixin._addsub_object_array%  sÅ   € ð  ”h—l‘l¤H§L¡LÐ1Ñ1Ð1Ð1Üˆu‹:˜Š?˜tŸy™y¨Aš~ñ �d˜E !™HÓ%Ð%ä�‰Ø7Ü�D‹z×"Ñ"Ð#Ð#3ð5äÜ'Ó)õ		
ð �z‰z˜UŸ[™[Ò(ÐC¨4¯:©:°u·{±{Ð*CÓCÐ(á˜Ÿ™ CÓ(¬"¯*©*°UÓ*;Ó<ˆ
ØÐrt   r4  c               óÜ   — |dvrt        d|› dt        | «      › �«      ‚t        t        |«      } || j	                  «       fd|i|¤Ž}t        | «      j                  || j                  ¬«      S )N>   ÚcummaxÚcumminzAccumulation z not supported for r5  rÅ   )rø   rù   r
  rW   r˜   r’  rz   )r   Únamer5  r�   rq   rƒ   s         rr   Ú_accumulatez"DatetimeLikeArrayMixin._accumulateI  sm   € ØÐ+Ñ+Ü˜m¨D¨6Ð1DÄTÈ$ÃZÀLÐQÓRÐRäÔ/°Ó6ˆÙ�D—I‘I“KÑ9¨Ð9°&Ñ9ˆä�D‹z×%Ñ% f°D·J±JÐ%Ó?Ð?rt   Ú__add__c                ó¸  — t        |dd «      }t        |«      }|t        u r| j                  «       }�nUt	        |t
        t        t        j                  f«      r| j                  |«      }�nt	        |t        «      r| j                  |«      }�nút	        |t        t        j                  f«      r| j                  |«      }�nÇt	        |t        «      r3t!        j"                  | j$                  d«      r| j'                  |«      }�n„t!        j(                  |«      rjt	        | j$                  t*        «      st-        | «      ‚t/        d| «      }|j1                  ||j$                  j2                  z  t4        j6                  «      }�nt!        j"                  |d«      r| j9                  |«      }nÝt;        |«      r!| j=                  |t4        j6                  «      }n±t!        j"                  |d«      st	        |t>        «      r| jA                  |«      S tC        |«      rit	        | j$                  t*        «      st-        | «      ‚t/        d| «      }|j1                  ||j$                  j2                  z  t4        j6                  «      }ntD        S t	        |t        jF                  «      r8t!        j"                  |j$                  d«      rddl$m%}  |jL                  |«      S |S )Nrz   rì   rl   rç   r   r£  )'r
  r_   r   r¿  ry   r   r   rÆ   r.  r¹  r   r³  r   r/  r—  r   r   rŽ  rz   r°  Ú
is_integerrK   r'   r   Ú_addsub_int_array_or_scalarÚ_nri  rË  r»  rD   rÍ  rI   r™  rB   ÚNotImplementedÚndarrayr�  rm   r  ©r   r¥   Úother_dtyperƒ   Úobjrm   s         rr   rÓ  zDatetimeLikeArrayMixin.__add__R  s  € ä˜e W¨dÓ3ˆÜ.¨uÓ5ˆð ”C‰<Ø—]‘]“_ŠFÜ˜¤¤i´·±Ð@ÔAØ×3Ñ3°EÓ:ŠFÜ˜œzÔ*à×%Ñ% eÓ,ŠFÜ˜¤¬"¯-©-Ð8Ô9Ø×2Ñ2°5Ó9ŠFÜ˜œvÔ&¬3¯?©?¸4¿:¹:ÀsÔ+KØ×%Ñ% eÓ,ŠFÜ�^‰^˜EÔ"ô ˜dŸj™j¬+Ô6Ü.¨tÓ4Ð4Ü�} dÓ+ˆCØ×4Ñ4°U¸S¿Y¹Y¿\¹\Ñ5IÌ8Ï<É<ÓXŠFô �_‰_˜[¨#Ô.à×2Ñ2°5Ó9‰FÜ˜[Ô)à×.Ñ.¨u´h·l±lÓC‰FÜ�_‰_˜[¨#Ô.´*Øœô3
ð ×/Ñ/°Ó6Ð6Ü˜kÔ*Ü˜dŸj™j¬+Ô6Ü.¨tÓ4Ð4Ü�} dÓ+ˆCØ×4Ñ4°U¸S¿Y¹Y¿\¹\Ñ5IÌ8Ï<É<ÓX‰Fô "Ð!ä�fœbŸj™jÔ)¬c¯o©o¸f¿l¹lÈCÔ.PÝ9à0�>×0Ñ0°Ó8Ð8Øˆrt   c                ó$   — | j                  |«      S ro   )rÓ  r¤   s     rr   Ú__radd__zDatetimeLikeArrayMixin.__radd__Š  s   € à�|‰|˜EÓ"Ð"rt   Ú__sub__c                óÆ  — t        |dd «      }t        |«      }|t        u r| j                  «       }�n\t	        |t
        t        t        j                  f«      r| j                  | «      }�n#t	        |t        «      r| j                  | «      }�nÿt	        |t        t        j                  f«      r| j                  |«      }�nÌt        j                   |«      rjt	        | j"                  t$        «      st'        | «      ‚t)        d| «      }|j+                  ||j"                  j,                  z  t.        j0                  «      }�nMt	        |t2        «      r| j5                  |«      }�n*t        j6                  |d«      r| j9                  | «      }�n t;        |«      r!| j=                  |t.        j0                  «      }nÔt        j6                  |d«      st	        |t>        «      r| jA                  |«      }nœt	        |t$        «      r| j5                  |«      }nztC        |«      rit	        | j"                  t$        «      st'        | «      ‚t)        d| «      }|j+                  ||j"                  j,                  z  t.        j0                  «      }ntD        S t	        |t        jF                  «      r8t        j6                  |j"                  d«      rddl$m%}  |jL                  |«      S |S )Nrz   rl   rì   rç   r   r£  )'r
  r_   r   rÁ  ry   r   r   rÆ   r.  r¹  r   r³  r   r/  rž  r   rÕ  rz   rK   r'   r   rÖ  r×  ri  rÌ  r   rÈ  rŽ  r»  rD   rÍ  rI   r¡  rB   rØ  rÙ  r�  rm   r  rÚ  s         rr   rß  zDatetimeLikeArrayMixin.__sub__Ž  s  € ä˜e W¨dÓ3ˆÜ.¨uÓ5ˆð ”C‰<Ø—]‘]“_ŠFÜ˜¤¤i´·±Ð@ÔAØ×3Ñ3°U°FÓ;ŠFÜ˜œzÔ*à×%Ñ% u fÓ-ŠFÜ˜¤¬"¯-©-Ð8Ô9Ø×2Ñ2°5Ó9ŠFÜ�^‰^˜EÔ"ô ˜dŸj™j¬+Ô6Ü.¨tÓ4Ð4Ü�} dÓ+ˆCØ×4Ñ4°U¸S¿Y¹Y¿\¹\Ñ5IÌ8Ï<É<ÓXŠFä˜œvÔ&Ø×)Ñ)¨%Ó0ŠFô �_‰_˜[¨#Ô.à×2Ñ2°E°6Ó:ŠFÜ˜[Ô)à×.Ñ.¨u´h·l±lÓC‰FÜ�_‰_˜[¨#Ô.´*Øœô3
ð ×1Ñ1°%Ó8‰FÜ˜¤[Ô1à×)Ñ)¨%Ó0‰FÜ˜kÔ*Ü˜dŸj™j¬+Ô6Ü.¨tÓ4Ð4Ü�} dÓ+ˆCØ×4Ñ4°U¸S¿Y¹Y¿\¹\Ñ5IÌ8Ï<É<ÓX‰Fô "Ð!ä�fœbŸj™jÔ)¬c¯o©o¸f¿l¹lÈCÔ.PÝ9à0�>×0Ñ0°Ó8Ð8Øˆrt   c                ó8  — t        |dd «      }t        j                  |d«      xs t        |t        «      }|rpt        j                  | j
                  d«      rPt        j                  |«      rt        |«      | z
  S t        |t        «      sddl	m
}  |j                  |«      }|| z
  S | j
                  j                  dk(  rEt        |d«      r9|s7t        dt        | «      j                   › dt        |«      j                   › �«      ‚t        | j
                  t"        «      rDt        j                  |d«      r.t        dt        | «      j                   › d|j
                  › �«      ‚t        j                  | j
                  d«      rt%        d| «      } |  |z   S | |z
   S )	Nrz   rç   rì   r   r‰  rÃ  rÄ  rm   )r
  r   rŽ  ry   rI   rz   rÒ   r   r‰   r�  rk   r  rñ   r  rø   rù   rú   rK   r   )r   r¥   rÛ  Úother_is_dt64rk   s        rr   Ú__rsub__zDatetimeLikeArrayMixin.__rsub__Æ  s^  € Ü˜e W¨dÓ3ˆÜŸ™¨°SÓ9ò 
¼ZØœó>
ˆñ œSŸ_™_¨T¯Z©Z¸Ô=ô �}‰}˜UÔ#ä  Ó'¨$Ñ.Ð.Ü˜eÔ%;Ô<å<à4˜×4Ñ4°UÓ;�Ø˜4‘<ÐØ�Z‰Z�_‰_ Ò#¬°°wÔ(?Éô Ø"¤4¨£:×#6Ñ#6Ð"7°v¼dÀ5»k×>RÑ>RÐ=SÐTóð ô ˜Ÿ
™
¤KÔ0´S·_±_À[ÐRUÔ5VäÐ.¬t°D«z×/BÑ/BÐ.CÀ6È%Ï+É+ÈÐWÓXÐXÜ�_‰_˜TŸZ™Z¨Ô-ÜÐ(¨$Ó/ˆDØ�E˜U‘?Ð"ð ˜‘ˆÐrt   c                óv   — | |z   }|d d  | d d  t        | j                  t        «      s|j                  | _        | S ro   ©ry   rz   rK   r�   rÔ   ©r   r¥   rƒ   s      rr   Ú__iadd__zDatetimeLikeArrayMixin.__iadd__è  ó6   € Ø˜‘ˆØ™�)ˆ‰Qˆä˜$Ÿ*™*¤kÔ2àŸ™ˆDŒJØˆrt   c                óv   — | |z
  }|d d  | d d  t        | j                  t        «      s|j                  | _        | S ro   rå  ræ  s      rr   Ú__isub__zDatetimeLikeArrayMixin.__isub__ñ  rè  rt   c                ó&   •— t         ‰| �  ||¬«      S )N)ÚqsÚinterpolation)rÑ   Ú	_quantile)r   rì  rí  rÖ   s      €rr   rî  z DatetimeLikeArrayMixin._quantileý  s   ø€ ô ‰wÑ  B°mÐ ÓDÐDrt   ©Úaxisr5  c               óÖ   — t        j                  d|«       t        j                  || j                  «       t	        j
                  | 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ð  r5  r�   rƒ   s        rr   ÚminzDatetimeLikeArrayMixin.min  óO   € ô 	�‰˜˜FÔ#Ü
×Ñ  d§i¡iÔ0ä—‘˜tŸ}™}°4ÀÔGˆØ×*Ñ*¨4°Ó8Ð8rt   c               óÖ   — t        j                  d|«       t        j                  || j                  «       t	        j
                  | 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        rr   ÚmaxzDatetimeLikeArrayMixin.max  rù  rt   r   )r5  rð  c               ó   — t        | j                  t        «      r"t        dt	        | «      j
                  › d�«      ‚t        j                  | j                  ||| 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ð  r5  rq  )ry   rz   rK   rø   rù   rú   rR   ÚnanmeanrŽ   rO   rö  )r   r5  rð  rƒ   s       rr   ÚmeanzDatetimeLikeArrayMixin.mean)  su   € ôX �d—j‘j¤+Ô.äØ.¬t°D«z×/BÑ/BÐ.Cð D7ð 7óð ô —‘Ø�M‰M ¨V¸$¿)¹)»+ô
ˆð ×*Ñ*¨4°Ó8Ð8rt   c               óà   — t        j                  d|«       |�#t        |«      | j                  k\  rt	        d«      ‚t        j                  | j                  ||¬«      }| j                  ||«      S )Nr’   z abs(axis) must be less than ndimrï  )	rò  Úvalidate_medianÚabsr¶   r  rR   Ú	nanmedianrŽ   rö  r÷  s        rr   ÚmedianzDatetimeLikeArrayMixin.medianb  s^   € ä
×Ñ˜2˜vÔ&àÐ¤ D£	¨T¯Y©YÒ 6ÜÐ?Ó@Ð@ä×!Ñ! $§-¡-°dÀ6ÔJˆØ×*Ñ*¨4°Ó8Ð8rt   c                ó  — d }|r| j                  «       }t        j                  | j                  d«      |¬«      }|j                  | j                  j
                  «      }t        t        j                  |«      }| j                  |«      S )Nrx   )rq  )
rO   rP   Úmoder{   rŽ   rz   r   rÆ   rÙ  r~   )r   Údropnarq  Úi8modesÚnpmodess        rr   Ú_modezDatetimeLikeArrayMixin._model  sf   € ØˆÙØ—9‘9“;ˆDä—/‘/ $§)¡)¨D£/¸Ô=ˆØ—,‘,˜tŸ}™}×2Ñ2Ó3ˆÜ”r—z‘z 7Ó+ˆØ×&Ñ& wÓ/Ð/rt   c               óê  — | j                   }|j                  dk(  rC|dv rt        d|› d�«      ‚|dv r’t        j                  d|› d|› d�t
        t        «       ¬	«       nft        |t        «      rC|dv rt        d
|› d�«      ‚|dv r?t        j                  d|› d|› d�t
        t        «       ¬	«       n|dv rt        d|› d�«      ‚| j                  j                  d«      }ddlm}	 |	j                  |«      }
 |	||
|¬«      } |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*                  ||j                   ¬«      S |j                  | j                  j                   «      }| j-                  |«      S )Nrç   )ÚsumÚprodÚcumsumÚcumprodÚvarÚskewz!datetime64 type does not support z operations)rG  Úallr  zh' with datetime64 dtypes is deprecated and will raise in a future version. Use (obj != pd.Timestamp(0)).z() instead.r8  zPeriod type does not support ze' with PeriodDtype is deprecated and will raise in a future version. Use (obj != pd.Period(0, freq)).)r  r  r  r  z"timedelta64 type does not support rw   r   )ÚWrappedCythonOp)Úhowrñ   Úhas_dropped_na)Ú	min_countÚngroupsÚcomp_idsrq  )ÚstdÚsemr£  z-'std' and 'sem' are not valid for PeriodDtyper:  zm8[r‹  rÅ   )rz   rñ   rø   r>  r?  r@  r?   ry   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  Úidsr�   rz   Únpvaluesr  rñ   rq   r•  rm   Ú	new_dtypes                  rr   Ú_groupby_opz"DatetimeLikeArrayMixin._groupby_opy  s  € ð —
‘
ˆØ�:‰:˜ÒàÐIÑIÜÐ"CÀCÀ5ÈÐ TÓUÐUØ�nÑ$ä—‘Ø˜�uð DØDGÀ5ÈðUä!Ü/Ó1ö	ô ˜œ{Ô+àÐIÑIÜÐ"?À¸uÀKÐ PÓQÐQØ�nÑ$ä—‘Ø˜�uð GØGJÀeÈ;ðXä!Ü/Ó1ö	ð Ð8Ñ8ÜÐ"DÀSÀEÈÐ UÓVÐVð —=‘=×%Ñ% hÓ/ˆå;à×0Ñ0°Ó5ˆÙ ¨4ÀÔOˆà.�R×.Ñ.Øð
àØØØñ
ð ñ
ˆ
ð �6‰6�R×&Ñ&Ñ&ð Ðð ×Ñ 8Ò+Ð+Ð+Ø�.Ñ Ý9ä˜$Ÿ*™*¤kÔ2ÜÐ OÓPÐPÜÐ8¸$Ó?ˆDØ˜dŸi™i˜[¨Ð*ˆIØ#Ÿ™¨Ó3ˆJØ-�>×-Ñ-¨jÀ
×@PÑ@PÔQÐQà—_‘_ T§]¡]×%8Ñ%8Ó9ˆ
Ø×&Ñ& zÓ2Ð2rt   ©Úreturnr<  )NNF)rz   úDtype | Noner˜   r<  r&  ÚNone)r&  ztype[DatetimeLikeScalar])rž   r  r&  ÚDTScalarOrNaT)rž   r)  r&  z)np.int64 | np.datetime64 | np.timedelta64)r¥   r)  r&  r(  ©r&  r�   )r&  rg   )r&  znpt.NDArray[np.int64])r¼   zstr | floatr&  únpt.NDArray[np.object_])F)rÂ   r<  )NN)rz   zNpDtype | Noner˜   zbool | Noner&  r�   )rÌ   r2   r&  r)  )rÌ   z(SequenceIndexer | PositionalIndexerTupler&  r3   )rÕ   r0   r&  zSelf | DTScalarOrNaT)r&  r�   )rÕ   z,int | Sequence[int] | Sequence[bool] | slicerž   zNaTType | Any | Sequence[Any]r&  r(  ©r&  r(  ©T)r˜   r<  ©r&  r3   )rz   zLiteral['M8[ns]']r&  rk   )rz   zLiteral['m8[ns]']r&  rm   ).)rz   r'  r&  r(   ro   )r  r<  r  r<  )r  r<  r&  r  )r  r<  )r&  z6np.int64 | np.datetime64 | np.timedelta64 | np.ndarray)r¬   r(   r&  únpt.NDArray[np.bool_])r&  r/  )rƒ   r�   r&  r�   )r&  z
str | None)r&  zResolution | None©r&  r  )r&  z@tuple[int | npt.NDArray[np.int64], None | npt.NDArray[np.bool_]])r&  rk   )r¥   rk   r&  rk   )r¥   zdatetime | np.datetime64r&  rm   )r¥   rk   r&  rm   )r¥   zTimestamp | DatetimeArrayr&  rm   )r¥   r   r&  rl   )r¥   rm   )r¥   zTimedelta | TimedeltaArray)r¥   zPeriod | PeriodArrayr&  r+  )r¥   r+  )rÑ  r  r5  r<  r&  r3   )rì  znpt.NDArray[np.float64]rí  r  r&  r3   )rð  úAxisInt | Noner5  r<  )r5  r<  rð  r1  )r	  r<  )
r  r  r  r<  r  Úintr  r2  r!  znpt.NDArray[np.intp])`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	  r$  r   r#  rZ   r+  rT   rO   rD  rH  r   rM  rO  rR  rV  rY  r_  rb  rf  rs  rs   rt  ru  rv  rw  rx  ry  rz  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  r$  Ú__classcell__©rÖ   s   @rr   r‰   r‰   Ä   sÏ  ø… ñð $Ó#Ø4Ó4Ø)Ó)ØÓØ
Óàòó ðð INð(Ø'ð(ØAEð(à	ó(ð
 ò(ó ð(ó(ð((Ø"ð(à	2ó(ó.(ò,(óDó:ð ò
(ó ð
(ð  (-¸$ñ
(Ø$ð
(à	 ó
(ôð AEðØ#ðØ2=ðà	óð òó ðð ðà6ðð 
òó ðõó"ð<!à9ð!ð -ð!ð 
õ	!ó,ö
11ðf òó ðð òó ðð òó ðð óó ðö#ò"ðP  %Øñ;)ð ð	;)ð
 ó;)ôzô>8òt"ð ò
ó ð
ð" ò	 ó ð	 óP,ójð ò!ó ð!ð ò'ó ð'ð .2¸4ðØ ðà	óð< ò!ó ð!ð: òó ðð< òó ðð ò-ó ð-ð ò?ó ð?ð ò?ó ð?ð ò@ó ð@ò5ñr (¨	Ó2€GÙ(¨Ó4€HÙ'¨	Ó2€GÙ(¨Ó4€HÙ+¨MÓ:€KÙ,¨^Ó<€LÙ,¨^Ó<€LÙ-¨oÓ>€MÙ'¨	Ó2€GÙ(¨Ó4€HÙ*¨<Ó8€JÙ+¨MÓ:€Kà
ðà	Iòó ðð$ òó ðð òQó ðQðB òó ðð ð*Ø-ð*à	ò*ó ð*ð$ ò
-ó ð
-ð òUó ðUð& ò
ó ð
ò(ò.ó(.ð$ ò
ó ð
ð  ñ
ó ð
ð, ñ2ó ð2ð& òó ðð0 ò!ó ð!ðF 8<õ @ñ ˜iÓ(ñ5ó )ð5òn#ñ ˜iÓ(ñ5ó )ð5òn óDóð ðEà#ðEð ðEð 
ô	Eó ðEð Ø,0Àô 9ó ð9ð" Ø,0Àô 9ó ð9ð" &*À!õ 79ðr Ø/3ÀDô 9ó ð9ô0ðM3ð ðM3ð ð	M3ð
 ðM3ð ðM3ð "÷M3rt   r‰   c                  ó0   — e Zd ZdZ ed¬«      dd„«       Zy)ÚDatelikeOpszK
    Common ops for DatetimeIndex/PeriodIndex, but not TimedeltaIndex.
    zNhttps://docs.python.org/3/library/datetime.html#strftime-and-strptime-behavior)ÚURLc                ór   — | j                  |t        j                  ¬«      }|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Æ   rJ  rö   rÈ   )r   r½   rƒ   s      rr   ÚstrftimezDatelikeOps.strftimeÎ  s1   € ðb ×*Ñ*°{Ì2Ï6É6Ð*ÓRˆØ�}‰}œV¨%ˆ}Ó0Ð0rt   N)r½   r  r&  r+  )rú   r3  r4  r5  r=   r>  r’   rt   rr   r;  r;  É  s%   „ ññ ð*ôò.1ó	ñ.1rt   r;  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	 	 	 d&d„Zed„ «       Z	e
d„ «       Zej                  d'd	„«       Zed(d
„«       Zeed)d„«       «       Ze	 	 	 	 d*d„«       Zed+d„«       Zed,d„«       Zd-d.d„Zd„ Zd/ˆ fd„Zd„ Z eeez   j7                  d¬«      «      	 	 d0	 	 	 	 	 d1d„«       Z eeez   j7                  d¬«      «      	 	 d0	 	 	 	 	 d1d„«       Z eeez   j7                  d¬«      «      	 	 d0	 	 	 	 	 d1d„«       Z dddœd2d„Z!dddœd2d„Z"d'd„Z#d3d„Z$d4ˆ fd „Z%	 	 d5	 	 	 d6ˆ fd!„Z&e	 d7	 	 	 	 	 d8ˆ fd"„«       Z'd9d:ˆ fd#„Z(	 	 	 	 	 	 	 	 	 	 d;d$„Z)e
d<d%„«       Z*ˆ xZ+S )=rl  zK
    Common ops for TimedeltaIndex/DatetimeIndex, but not PeriodIndex.
    znp.dtypeÚ_default_dtypeNFc                óN  — t        j                  t        | «      j                  › d�t        t        «       ¬«       |�t        |«      }t        |d¬«      }t        |t        «      r|j                  dt        ¬«      }t        |dd «      }|d u }|t        j                  ur|nd }t        |t        | «      «      r†|rn>|€|j                  }n/|r-|j                  r!t!        |«      }t#        ||j                  «      }|�*||j$                  k7  rt'        d|› d	|j$                  › �«      ‚|j$                  }|j(                  }n‡|€…t        |t*        j,                  «      r%|j$                  j.                  d
v r|j$                  }nF| j0                  }t        |t*        j,                  «      r |j$                  dk(  r|j3                  |«      }t        |t*        j,                  «      s8t5        dt        |«      j                  › dt        | «      j                  › d�«      ‚|j6                  dvrt5        d«      ‚|j$                  dk(  r›|€(| j0                  }|j3                  | j0                  «      }nqt        j8                  |d«      r|j3                  |«      }nIt        |t:        «      r9| j0                  j.                  }|› d|j<                  › d�}|j3                  |«      }| j?                  ||«      }|dk(  r"t5        dt        | «      j                  › d�«      ‚|r|jA                  «       }|r?t!        |«      }|j$                  j.                  dk(  rt        |tB        «      st'        d«      ‚tE        jF                  | ||¬«       || _$        |€|�t        | «      jK                  | |«       y y y )NzV.__init__ is deprecated and will be removed in a future version. Use pd.array instead.r8  Tr  r÷   ©Úna_valuerÔ   údtype=z does not match data dtype ÚMmrx   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¬   rz   )&r>  r?  rù   rú   r@  r?   rF   r`   ry   r]   r)  r   r
  r   Ú
no_defaultr�   r"   Ú_validate_inferred_freqrz   rø   rŽ   rÆ   rÙ  rñ   r@  r{   r  r¶   rŽ  rI   r  Ú_validate_dtyper˜   r   r   r™   rÔ   Ú_validate_frequency)	r   r¬   rz   r�   r˜   rR  Úexplicit_nonerñ   r#  s	            rr   r™   zTimelikeOps.__init__›  s9  € ô 	�‰ä�D‹z×"Ñ"Ð#ð $Að AäÜ'Ó)õ	
ð ÐÜ  Ó'ˆEä˜v°TÔ:ˆÜ�fœlÔ+Ø—_‘_ W´t�_Ó<ˆFä ¨°Ó6ˆØ ˜ˆØ¤3§>¡>Ñ1‰t°tˆä�fœd 4›jÔ)ÙàØ�Ø—{‘{‘Ù˜&Ÿ+š+Ü  “�Ü.¨t°V·[±[ÓA�àÐ  U¨f¯l©lÒ%:äØ˜U˜GÐ#>¸v¿|¹|¸nÐMóð ð —L‘LˆEØ—_‘_‰Fàˆ]Ü˜&¤"§*¡*Ô-°&·,±,×2CÑ2CÀtÑ2KØŸ™‘à×+Ñ+�Ü˜f¤b§j¡jÔ1°f·l±lÀdÒ6JØ#Ÿ[™[¨Ó/�Fä˜&¤"§*¡*Ô-ÜØ#¤D¨£L×$9Ñ$9Ð#:Ð:PÜ˜“:×&Ñ&Ð'ð (+ð+óð ð
 �;‰;˜fÑ$ÜÐMÓNÐNà�<‰<˜4Òð ˆ}Ø×+Ñ+�ØŸ™ T×%8Ñ%8Ó9‘Ü—‘ ¨Ô-ØŸ™ UÓ+‘Ü˜E¤?Ô3Ø×*Ñ*×/Ñ/�Ø#˜f B u§z¡z l°!Ð4�	ØŸ™ YÓ/�à×$Ñ$ V¨UÓ3ˆà�7Š?ÜØ5´d¸4³j×6IÑ6IÐ5Jð K,ð ,óð ñ
 Ø—[‘[“]ˆFÙÜ˜T“?ˆDØ�|‰|× Ñ  CÒ'´
¸4ÄÔ0FÜÐ JÓKÐKä×Ñ˜t¨F¸%Õ@ØˆŒ
àÐ  TÐ%5Ü�‹J×*Ñ*¨4°Õ6ð &6Ð rt   c                ó   — t        | «      ‚ro   r–   )Úclsr¬   rz   s      rr   rL  zTimelikeOps._validate_dtype÷  s   € ä! #Ó&Ð&rt   c                ó   — | j                   S )zK
        Return the frequency object if it is set, otherwise None.
        ©rÔ   r“   s    rr   r�   zTimelikeOps.freqû  s   € ð
 �z‰zÐrt   c                óì   — |�kt        |«      }| j                  | |«       | j                  j                  dk(  rt	        |t
        «      st        d«      ‚| j                  dkD  rt        d«      ‚|| _	        y )Nrì   rI  r¯   zCannot set freq with ndim > 1)
r"   rM  rz   rñ   ry   r   rø   r¶   r  rÔ   r�   s     rr   r�   zTimelikeOps.freq  se   € àÐÜ˜eÓ$ˆEØ×$Ñ$ T¨5Ô1Ø�z‰z�‰ #Ò%¬j¸ÄÔ.EÜÐ JÓKÐKà�y‰y˜1Š}Ü Ð!@ÓAÐAàˆ�
rt   c                óR  — |€d| _         y|dk(  r(| j                   €t        | j                  «      | _         yy|t        j                  u ry| j                   €0t        |«      } t        | «      j                  | |fi |¤Ž || _         yt        |«      }t        || j                   «       y)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.
        NrH  )rÔ   r"   rR  r   rJ  rù   rM  rK  )r   r�   Úvalidate_kwdss      rr   Ú_maybe_pin_freqzTimelikeOps._maybe_pin_freq  sŸ   € ð ˆ<àˆD�JØ�WŠ_ð �z‰zÐ!ô ' t×'9Ñ'9Ó:�•
ð "ð ”S—^‘^Ñ#ð Ø�Z‰ZÐô ˜T“?ˆDØ*ŒD�‹J×*Ñ*¨4°ÑG¸ÒGØˆD�Jô ˜T“?ˆDÜ# D¨$¯*©*Õ5rt   c           	     ó�  — |j                   }|j                  dk(  s||j                  k(  ry	  | j                  d|d   dt	        |«      ||j
                  dœ|¤Ž}t        j                  |j                  |j                  «      st        ‚y# t        $ r0}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’   )rR  re  rO  Ú_generate_ranger¸   r  rÆ   Úarray_equalr¹   r  r  )rP  Úindexr�   r�   rB  Úon_freqr  s          rr   rM  zTimelikeOps._validate_frequency0  sÞ   € ð ×&Ñ&ˆØ�:‰:˜Š?˜h¨$¯,©,Ò6Øð	Ø)�c×)Ñ)ð Ø˜A‘hØÜ˜E›
ØØ—Z‘Zñð ñˆGô —>‘> %§*¡*¨g¯l©lÔ;Ü Ð ð <øäò 	Øœc #›hÑ&ð �	ô Ø% h Zð 08Ø8<¿¹°~ðGóð ðûð	ús   ­AB Â	CÂ+C Ã Cc                ó   — t        | «      ‚ro   r–   )rP  rX  rY  rZ  r�   r€   r�   s          rr   r]  zTimelikeOps._generate_range\  s   € ô " #Ó&Ð&rt   c                ó@   — t        | j                  j                  «      S ro   )r   rŽ   rz   r“   s    rr   rò   zTimelikeOps._cresod  s   € ä" 4§=¡=×#6Ñ#6Ó7Ð7rt   c                ó,   — t        | j                  «      S ro   )Údtype_to_unitrz   r“   s    rr   r  zTimelikeOps.unith  s   € ô
 ˜TŸZ™ZÓ(Ð(rt   Tc                ó¤  — |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                  ||| j                  ¬«      S )	N)ÚsÚmsÚusÚnsz)Supported units are 's', 'ms', 'us', 'ns'rG  r‹  r  rk   rŒ  r�  )r  rÆ   rz   rñ   r   rŽ   ry   r   ré   rI   rù   r’  r�   )r   r  r  rz   r¸  r#  ré   s          rr   r  zTimelikeOps.as_unito  s±   € ØÐ.Ñ.ÜÐHÓIÐIä—‘˜DŸJ™JŸO™OÐ,¨B¨t¨f°AÐ6Ó7ˆÜ(¨¯©¸ÈÔQˆ
ä�d—j‘j¤"§(¡(Ô+Ø"×(Ñ(‰Iä�o tÓ,×/Ñ/ˆBÜ'¨2°DÔ9ˆIô �D‹z×%Ñ%Ø˜i¨d¯i©ið &ó 
ð 	
rt   c                óâ   — | j                   |j                   k7  rS| j                   |j                   k  r| j                  |j                  «      } | |fS |j                  | j                  «      }| |fS ro   )rò   r  r  r¤   s     rr   r“  z"TimelikeOps._ensure_matching_resos„  s^   € Ø�;‰;˜%Ÿ,™,Ò&à�{‰{˜UŸ\™\Ò)Ø—|‘| E§J¡JÓ/�ð �Uˆ{Ðð Ÿ™ d§i¡iÓ0�Ø�Uˆ{Ðrt   c                óò   •— |t         j                  t         j                  t         j                  fv r2t	        |«      dk(  r$|d   | u r t        ||«      | j                  fi |¤ŽS t        ‰| �   ||g|¢­i |¤ŽS )Nr¯   r   )	rÆ   ÚisnanÚisinfÚisfiniter¸   r
  rŽ   rÑ   Ú__array_ufunc__)r   ÚufuncÚmethodÚinputsr�   rÖ   s        €rr   ro  zTimelikeOps.__array_ufunc__�  sq   ø€ à”b—h‘h¤§¡¬"¯+©+Ð6Ñ6Ü�F“˜qÒ Ø�q‘	˜TÑ!ð *”7˜5 &Ó)¨$¯-©-ÑB¸6ÑBÐBä‰wÑ& u¨fÐH°vÒHÀÑHÐHrt   c                óL  — t        | j                  t        «      rOt        d| «      } | j	                  d «      }|j                  ||||«      }|j	                  | j                  ||¬«      S | j                  d«      }t        t        j                  |«      }t        || j                  «      }|dk(  r| j                  «       S t        |||«      }	| j                  |	t        ¬«      }|j                  | j                   j                  «      }| j#                  || j                  ¬«      S )Nrk   )Ú	ambiguousÚnonexistentrx   r   ©rL  rÅ   )ry   rz   rI   r   Útz_localizeÚ_roundré   r{   rÆ   rÙ  r&   rò   r˜   r$   rM  r   rŽ   r’  )
r   r�   r  rt  ru  Únaiverƒ   r¬   ÚnanosÚ	result_i8s
             rr   rx  zTimelikeOps._roundš  sú   € ä�d—j‘j¤/Ô2ä˜¨Ó.ˆDØ×$Ñ$ TÓ*ˆEØ—\‘\ $¨¨i¸ÓEˆFØ×%Ñ%Ø—‘ 9¸+ð &ó ð ð —‘˜4“ˆÜ”b—j‘j &Ó)ˆÜ" 4¨¯©Ó5ˆØ�AŠ:à—9‘9“;ÐÜ! &¨$°Ó6ˆ	Ø×)Ñ)¨)ÄÐ)ÓEˆØ—‘˜TŸ]™]×0Ñ0Ó1ˆØ×Ñ ¨d¯j©jÐÓ9Ð9rt   Úround)rq   c                óF   — | j                  |t        j                  ||«      S ro   )rx  r#   ÚNEAREST_HALF_EVEN©r   r�   rt  ru  s       rr   r|  zTimelikeOps.round°  s   € ð �{‰{˜4¤×!:Ñ!:¸IÀ{ÓSÐSrt   Úfloorc                óF   — | j                  |t        j                  ||«      S ro   )rx  r#   ÚMINUS_INFTYr  s       rr   r€  zTimelikeOps.floor¹  s   € ð �{‰{˜4¤×!4Ñ!4°iÀÓMÐMrt   Úceilc                óF   — | j                  |t        j                  ||«      S ro   )rx  r#   Ú
PLUS_INFTYr  s       rr   rƒ  zTimelikeOps.ceilÂ  s   € ð �{‰{˜4¤×!3Ñ!3°YÀÓLÐLrt   rï  c               ód   — t        j                  | j                  ||| j                  «       ¬«      S ©Nrÿ  )rR   ÚnananyrŽ   rO   ©r   rð  r5  s      rr   rG  zTimelikeOps.anyÎ  s!   € ä�}‰}˜TŸ]™]°¸fÈ4Ï9É9Ë;ÔWÐWrt   c               ód   — t        j                  | j                  ||| j                  «       ¬«      S r‡  )rR   ÚnanallrŽ   rO   r‰  s      rr   r  zTimelikeOps.allÒ  s#   € ô �}‰}˜TŸ]™]°¸fÈ4Ï9É9Ë;ÔWÐWrt   c                ó   — d | _         y ro   rR  r“   s    rr   rã   zTimelikeOps._maybe_clear_freqÚ  s	   € Øˆ�
rt   c                ó  — |€nnt        | «      dk(  rDt        |t        «      r4| j                  j                  dk(  r7t        |t
        «      s't        d«      ‚|dk(  sJ ‚t        | j                  «      }| 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
        r   rì   rI  rH  )r¸   ry   r   rz   rñ   r   rø   r"   rR  r{   rÔ   )r   r�   r‚   s      rr   Ú
_with_freqzTimelikeOps._with_freqÝ  sz   € ð ˆ<àÜ�‹Y˜!Š^¤
¨4´Ô <à�z‰z�‰ #Ò%¬j¸¼tÔ.DÜÐ JÓKÐKð ˜7’?Ð"�?Ü˜T×/Ñ/Ó0ˆDà�i‰i‹kˆØˆŒ	Øˆ
rt   c                ó€   •— t        | j                  t        j                  «      r| j                  S t        ‰| �  «       S ro   )ry   rz   rÆ   rŽ   rÑ   Ú_values_for_json)r   rÖ   s    €rr   r�  zTimelikeOps._values_for_jsoný  s-   ø€ ä�d—j‘j¤"§(¡(Ô+Ø—=‘=Ð Ü‰wÑ'Ó)Ð)rt   c                ó^  •— | j                   �mt        j                  t        | «      t        j                  ¬«      }| 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.)Úuse_na_sentinel)r�   rÆ   Úaranger¸   Úintpr˜   r²   ÚNotImplementedErrorrù   rú   rÑ   Ú	factorize)r   r“  ÚsortÚcodesÚuniquesrÖ   s        €rr   r—  zTimelikeOps.factorize	  sª   ø€ ð
 �9‰9Ð ä—I‘Iœc $›i¬r¯w©wÔ7ˆEØ—i‘i“kˆGÙ˜Ÿ	™	Ÿ™ ašØ™d ˜d™�Ø!¡$ B $™-�Ø˜'�>Ð!áô &Ø(¬¨d«×)<Ñ)<Ð(=ð >=ð =óð ô
 ‰wÑ °Ð ÓAÐArt   c                ó0  •‡— t         ‰| �  ||«      }|d   Š|dk(  rt|D �cg c]  }t        |«      sŒ|‘Œ }}‰j                  �Mt	        ˆfd„|D «       «      r9t        |d d |dd  «      }t	        ˆfd„|D «       «      r‰j                  }||_        |S c c}w )Nr   c              3  óP   •K  — | ]  }|j                   ‰j                   k(  –— Œ y ­wro   ©r�   )r±   r¨   rÜ  s     €rr   r³   z0TimelikeOps._concat_same_type.<locals>.<genexpr>*	  s   øè ø€ Ò+RÀ1¨A¯F©F°c·h±hÕ,>Ñ+Rùs   ƒ#&r’  r¯   c              3  óZ   •K  — | ]"  }|d    d   ‰j                   z   |d   d    k(  –— Œ$ y­w)r   r’  r¯   Nr�  )r±   ÚpairrÜ  s     €rr   r³   z0TimelikeOps._concat_same_type.<locals>.<genexpr>,	  s/   øè ø€ ÒNÀ�t˜A‘w˜r‘{ S§X¡XÑ-°°a±¸±Õ;ÑNùs   ƒ(+)rÑ   Ú_concat_same_typer¸   r�   r  ÚziprÔ   )	rP  Ú	to_concatrð  Únew_objr¨   Úpairsr–  rÜ  rÖ   s	          @€rr   r   zTimelikeOps._concat_same_type	  s˜   ù€ ô ‘'Ñ+¨I°tÓ<ˆà˜‰lˆà�1Š9ð %.Ö8˜q´°QµšÐ8ˆIÐ8à�x‰xÐ#¬Ó+RÈ	Ô+RÔ(RÜ˜I c r˜N¨I°a°b¨MÓ:�ÜÓNÈÔNÔNØ"Ÿx™x�HØ$,�G”MØˆùò 9s
   ¡B²Bc                óJ   •— t         ‰| �  |¬«      }| j                  |_        |S )N)Úorder)rÑ   r˜   r�   rÔ   )r   r¦  r£  rÖ   s      €rr   r˜   zTimelikeOps.copy1	  s#   ø€ Ü‘'‘, U�,Ó+ˆØŸ	™	ˆŒØˆrt   c          
     óø   — |dk7  rt         ‚|s| j                  }	n| j                  j                  «       }	t        j                  |	f||||||dœ|¤Ž |s| S t        | «      j                  |	| j                  ¬«      S )z2
        See NDFrame.interpolate.__doc__.
        Úlinear)rq  rð  r_  ÚlimitÚlimit_directionÚ
limit_arearÅ   )r–  rŽ   r˜   rQ   Úinterpolate_2d_inplacerù   r’  rz   )
r   rq  rð  r_  r©  rª  r«  r˜   r�   Úout_datas
             rr   ÚinterpolatezTimelikeOps.interpolate6	  sŠ   € ð  �XÒÜ%Ð%áØ—}‘}‰Hà—}‘}×)Ñ)Ó+ˆHä×&Ñ&Øð		
àØØØØ+Ø!ñ		
ð ò		
ñ ØˆKÜ�D‹z×%Ñ% h°d·j±jÐ%ÓAÐArt   c                ó
  — t        j                  | j                  «      sy| j                  }|t        k7  }t        | j                  «      }t        |«      }t        j                  |||z  dk7  «      j                  «       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Ž  rz   r¹   r   r   r!   rÆ   Úlogical_andr  )r   Ú
values_intÚconsider_valuesrë   ÚppdÚ	even_dayss         rr   Ú_is_dates_onlyzTimelikeOps._is_dates_only_	  ss   € ô �‰˜tŸz™zÔ*àà—Y‘Yˆ
Ø$¬Ñ,ˆÜ" 4§:¡:Ó.ˆÜ˜dÓ#ˆô —N‘N ?°JÀÑ4DÈÑ4IÓJ×NÑNÓPÐTUÑUˆ	ØÐrt   )r˜   r<  r&  r(  r,  )rU  Údict)r�   r   )rZ  ú
int | Noner&  r3   )r&  r2  r0  r-  )r  r  r  r<  r&  r3   )rp  znp.ufuncrq  r  )Úraiser¸  )rt  r5   ru  r6   r&  r3   )rð  r1  r5  r<  r&  r<  r.  r*  )TF)r“  r<  r˜  r<  )r   )r¢  zSequence[Self]rð  r)   r&  r3   )ÚC)r¦  r  r&  r3   )
rq  r.   rð  r2  r_  rj   r˜   r<  r&  r3   r%  ),rú   r3  r4  r5  r6  r   rJ  r™   ÚclassmethodrL  r7  r�   Úsetterr   rV  rM  r]  r>   rò   r  r  r“  ro  rx  r<   Ú
_round_docÚ_round_examplerÁ   r|  Ú_floor_exampler€  Ú_ceil_examplerƒ  rG  r  rã   rŽ  r�  r—  r   r˜   r®  rµ  r8  r9  s   @rr   rl  rl  ”  sè  ø… ñð Óð ! s§~¡~ÀEðZ7Ø=AðZ7à	óZ7ðx ñ'ó ð'ð ñó ðð 
‡[�[ò
ó ð
ð ò6ó ð6ð@ Øò(ó ó ð(ðT ð'Ø",ð'à	ò'ó ð'ð ò8ó ð8ð ò)ó ð)ô
ò*õ	Iò:ñ, ˆz˜NÑ*×2Ñ2°gÐ2Ó>Ó?ð $+Ø'.ð	Tð !ðTð %ð	Tð
 
òTó @ðTñ ˆz˜NÑ*×2Ñ2°gÐ2Ó>Ó?ð $+Ø'.ð	Nð !ðNð %ð	Nð
 
òNó @ðNñ ˆz˜MÑ)×1Ñ1°VÐ1Ó<Ó=ð $+Ø'.ð	Mð !ðMð %ð	Mð
 
òMó >ðMð -1Àõ Xð -1Àõ Xóóõ@*ð !%ØðBàðBð õBð0 ð ðà!ðð ðð 
ô	ó ðö*ð
$Bð #ð$Bð ð	$Bð
 ð$Bð ð$Bð 
ó$BðR òó ôrt   rl  c                ó  — t        | d«      sGt        | t        t        f«      s#t	        j
                  | «      dk(  rt        | «      } t        | «      } d}n,t        | t        «      rt        d|› d�«      ‚t        | d¬«      } t        | t        «      s(t        | t        «      r5| j                  j                  dv r| j                  d	t        ¬
«      } d}| |fS t        | t        «      r&| j!                  «       } | j                  «       } d}| |fS t        | t        j"                  t$        f«      st	        j&                  | «      } | |fS t        | t(        «      r7| j*                  j-                  | j.                  t0        ¬«      j2                  } d}| |fS )Nrz   r   FzCannot create a z from a MultiIndex.Tr  rî   r÷   rB  rv  )r  ry   rÇ   ÚtuplerÆ   r¶   r@   rM   rø   r`   r]   r[   rz   rñ   r)  r   Ú_maybe_convert_datelike_arrayrÙ  r\   rû   rL   r   Útaker™  r   Ú_values)r—   r˜   Úcls_names      rr   Ú!ensure_arraylike_for_datetimelikerÆ  y	  s\  € ô �4˜Ô!ä˜$¤¤u Ô.´2·7±7¸4³=ÀAÒ3Eä˜“:ˆDä6°tÓ<ˆØ‰Ü	�Dœ-Ô	(ÜÐ*¨8¨*Ð4GÐHÓIÐIä˜T°Ô6ˆä�$œÔ%Ü�4Ô,Ô-°$·*±*·/±/ÀTÑ2Ià�}‰}˜W¬tˆ}Ó4ˆØˆð  �ˆ:Ðô 
�DÔ-Ô	.Ø×1Ñ1Ó3ˆØ�}‰}‹ˆØˆð �ˆ:Ðô ˜œrŸz™z¬>Ð:Ô;ä�z‰z˜$Óˆð �ˆ:Ðô 
�Dœ.Ô	)ð �‰×#Ñ# D§J¡J¼3Ð#Ó?×GÑGˆØˆà�ˆ:Ðrt   c                 ó   — y ro   r’   ©rZ  s    rr   Úvalidate_periodsrÉ   	  ó   € àrt   c                 ó   — y ro   r’   rÈ  s    rr   rÉ  rÉ  ¥	  rÊ  rt   c                óÜ   — | �it        j                  | «      r1t        j                  dt        t        «       ¬«       t        | «      } | S 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
    z•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.r8  zperiods must be a number, got )	r   Úis_floatr>  r?  r@  r?   r2  rÕ  rø   rÈ  s    rr   rÉ  rÉ  ª	  sj   € ð$ ÐÜ�<‰<˜Ô Ü�M‰Mð2ô Ü+Ó-õô ˜'“lˆGð €Nô —‘ Ô(ÜÐ<¸W¸IÐFÓGÐGØ€Nrt   c                óV   — |�&| � | |k7  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
    r[  r\  )r  rO  )r�   rR  s     rr   rK  rK  Ì	  sO   € ð  Ð ØÐ ¨Ò 5ÜØ% m _ð 5?à—<‘<�.ð"óð ð
 ˆ<Ø ˆDà€Krt   c                óð   — t        | t        «      r| j                  S t        | t        «      r3| 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ï   rD  z does not have a resolution.r   )	ry   rI   r  rG   rñ   r  Úpyarrow_dtyperÆ   Údatetime_datarÅ   s    rr   rd  rd  é	  sk   € ô �%œÔ)Ø�z‰zÐÜ	�Eœ:Ô	&Ø�:‰:˜TÑ!Ü  ˜xÐ'CÐDÓEÐEØ×"Ñ"×'Ñ'Ð'Ü×Ñ˜EÓ" 1Ñ%Ð%rt   )rp   r  )r…   r-   r&  r-   )r˜   r<  rÅ  r  r&  ztuple[ArrayLike, bool])rZ  r(  r&  r(  )rZ  zint | floatr&  r2  )rZ  zint | float | Noner&  r·  )r�   r�   rR  r�   r&  r�   )rz   z'DatetimeTZDtype | np.dtype | ArrowDtyper&  r  )¦Ú
__future__r   r   r   Ú	functoolsr   ri  Útypingr   r   r	   r
   r   r   r   r   r>  Ú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^   r  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)  rs   r‡   r‰   r;  r¼  r½  r¾  r¿  rl  rÆ  rÉ  rK  rd  r’   rt   rr   ú<module>rø     s÷  ðÝ "÷õ Û ÷	÷ 	ó 	ó ã ÷õ .÷÷ ÷ ÷ õ ÷&õ KÝ =Ý C÷÷ ÷ ÷ ó õ$ /÷ñ ÷
ñ õ
 5å K÷÷ ÷õ ÷÷÷
ó ÷ñ õ
 ?Ý *÷õ ?Ý 2Ý 3ß  Ð  ÷ñ ÷
õ <÷õ
 'á÷õ
 ÷ñ ð Ð(¨'Ð1Ñ2€ó1ó
ô6B3ØÐ)ôB3ôJ071Ð(ô 71ðt=€
ð~€ð6€ð6€ô8^Ð(ô ^ðJ$Øð$Ø #ð$àó$ðN 
òó 
ðð 
òó 
ðóðDØ
ðØ,=ðàóô:&rt   