§
    �’jw‡ ã                  óð  — U 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mZ d dlZd dlZd dlmZ d dlmZ d dlmZmZ d d	lmZmZmZmZm Z m!Z!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/m0Z0m1Z1 d dl2m3Z3 d dl4m5Z5 d dl6m7Z7 d dl8m9Z9m:Z:m;Z;m<Z<m=Z=m>Z>m?Z?m@Z@mAZAmBZBmCZCmDZDmEZEmFZFmGZGmHZH d dlImJZK d dlLmMZMmNZNmOZO d dlPmQZQ d dlRmSZS d dlTmUZU d dlVmWZWmXZXmYZYmZZZm[Z[m\Z\ d dl]m^Z^m_Z_m`Z`maZambZb d dlcmdZdmeZe d dlfmgZgmhZh d dlimjZjmkZkmlZlmmZm d dlnmoZompZpmqZq d dlrmsZs d dltmuZu d dlvmwZwmxZx d dlymzZz d dl{m|Z| d dl}m~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”m•Z• d d&l8m–Z– d d'l—m˜Z˜ d d(l™mšZšm›Z›mœZœ e;e z  Z�d)ežd*<   dKd-„ZŸdLd1„Z  G d2„ d3euew¦  «        Z¡ G d4„ d5e¡¦  «        Z¢ G d6„ d7e¡¦  «        Z£dMd<„Z¤edNd?„¦   «         Z¥edOdA„¦   «         Z¥dPdC„Z¥dQdG„Z¦dRdJ„Z§dS )Sé    )Úannotations)ÚdatetimeÚ	timedelta)ÚwrapsN)	ÚTYPE_CHECKINGÚAnyÚLiteralÚSelfÚ	TypeAliasÚUnionÚcastÚfinalÚoverload)Úusing_string_dtype)Ú
get_option)ÚalgosÚlib)Ú
BaseOffsetÚDayÚ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Ú	timezonesÚ	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ÚSequenceIndexerÚTakeIndexerÚTimeAmbiguousÚTimeNonexistentÚnpt)Úfunction)ÚAbstractMethodErrorÚInvalidComparisonÚPerformanceWarning)Ú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)ÚCallableÚIteratorÚSequence)ÚTimeUnit©ÚIndex)ÚDatetimeArrayÚPeriodArrayÚTimedeltaArrayr   ÚDTScalarOrNaTÚop_nameÚstrc                óP   — t          | ¦  «        } t          | ¦  «        |¦  «        S ©N)rg   re   )rs   Úops     úMC:\Projects\DSCons\.venv\Lib\site-packages\pandas\core\arrays\datetimelike.pyÚ_make_unpacked_invalid_opry   ª   s(   € Ý	˜Ñ	!Ô	!€BØ,Õ# GÑ,Ô,¨RÑ0Ô0Ð0ó    Úmethr1   Úreturnc                ób   ‡ — t          ‰ ¦  «        ˆ fd„¦   «         }t          t          |¦  «        S )zâ
    For PeriodArray methods, dispatch to DatetimeArray and re-wrap the results
    in PeriodArray.  We cannot use ._ndarray directly for the affected
    methods because the i8 data has different semantics on NaT values.
    c                ód  •— t          | j        t          ¦  «        s ‰| g|¢R i |¤ŽS |                      d¦  «        } ‰|g|¢R i |¤Ž}|t          u rt          S t          |t
          ¦  «        r|                      |j        ¦  «        S |                     d¦  «        }|                      |¦  «        S )NúM8[ns]Úi8)	Ú
isinstanceÚdtyperM   Úviewr   r   Ú	_box_funcÚ_valueÚ_from_backing_data)ÚselfÚargsÚkwargsÚarrÚresultÚres_i8r{   s         €rx   Únew_methz"_period_dispatch.<locals>.new_meth¶   sÀ   ø€ å˜$œ*¥kÑ2Ô2ð 	/Ø�4˜Ð.˜tÐ.Ð.Ð. vÐ.Ð.Ð.à�iŠi˜Ñ!Ô!ˆØ��cÐ+˜DÐ+Ð+Ð+ FÐ+Ð+ˆØ•Sˆ=ˆ=ÝˆJÝ˜¥	Ñ*Ô*ð 	1Ø—>’> &¤-Ñ0Ô0Ð0à—’˜TÑ"Ô"ˆØ×&Ò& vÑ.Ô.Ð.rz   )r   r   r1   )r{   r�   s   ` rx   Ú_period_dispatchrŽ   ¯   s@   ø€ õ ˆ4�[„[ð/ð /ð /ð /ñ „[ð/õ •�8ÑÔÐrz   c                  ó   ‡ — e Zd ZU dZded<   ded<   ded<   ded	<   d
ed<   edµd„¦   «         Z	 d¶d·d„Zed¸d„¦   «         Z	d¹d„Z
dºd„Zd»d„Zd „ Zd¼d!„Zd½d#„Zed¾d%„¦   «         Zd&dd'œd¿d+„ZdÀdÁd.„Z	 dÂdÃd1„ZedÄd4„¦   «         ZedÅd7„¦   «         ZdÆˆ fd:„ZdÇd;„ZdÈˆ fd>„ZdÉd?„ZdÊdËˆ fdA„ZedÌdB„¦   «         ZedÍdE„¦   «         ZedÎdH„¦   «         ZedÏdÐdK„¦   «         ZdÑdÐˆ fdL„ZdÒˆ fdO„ZdP„ Zdd@dQœdÓdT„ZdÀdÔdU„ZdÀdÕdW„ZdX„ Z e!dÖdZ„¦   «         Z"e#dÑd×d]„¦   «         Z$dØd_„Z%dÙd`„Z&edÙda„¦   «         Z'edµdb„¦   «         Z(e)dfdÚdd„Z*edÛdf„¦   «         Z+edÛdg„¦   «         Z,edÜdi„¦   «         Z-edÝdj„¦   «         Z.edµdk„¦   «         Z/edµdl„¦   «         Z0edµdm„¦   «         Z1dn„ Z2 e3do¦  «        Z4 e3dp¦  «        Z5 e3dq¦  «        Z6 e3dr¦  «        Z7 e3ds¦  «        Z8 e3dt¦  «        Z9 e3du¦  «        Z: e3dv¦  «        Z; e3dw¦  «        Z< e3dx¦  «        Z= e3dy¦  «        Z> e3dz¦  «        Z?e!dÞd|„¦   «         Z@e!dÇd}„¦   «         ZAe!dßd~„¦   «         ZBe!dàd„¦   «         ZCe!dád�„¦   «         ZDe!dâd‚„¦   «         ZEe!dãd„„¦   «         ZFe!däd‡„¦   «         ZGdˆ„ ZHd‰„ ZIdådŠ„ZJe!dædŒ„¦   «         ZKe!dÌd�„¦   «         ZLe!d¼dŽ„¦   «         ZMe!dçd�„¦   «         ZNe!dèd‘„¦   «         ZOd@d’œdéd•„ZP eQd–¦  «        d—„ ¦   «         ZRd˜„ ZS eQd™¦  «        dš„ ¦   «         ZTd›„ ZUdÌdœ„ZVdÌd�„ZWeXdêˆ fd¡„¦   «         ZYeXdd@d¢œdëd¥„¦   «         ZZeXdd@d¢œdëd¦„¦   «         Z[d@d§d¨œdìd©„Z\eXdd@d¢œdëdª„¦   «         Z]dÊdíd¬„Z^dîd´„Z_ˆ xZ`S )ïÚDatetimeLikeArrayMixinzÈ
    Shared Base/Mixin class for DatetimeArray, TimedeltaArray, PeriodArray

    Assumes that __new__/__init__ defines:
        _ndarray

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

        * PeriodArray : Period
        * DatetimeArray : Timestamp
        * TimedeltaArray : Timedelta
        r¡   r›   s    rx   Ú_scalar_typez#DatetimeLikeArrayMixin._scalar_typeã   s   € õ " $Ñ'Ô'Ð'rz   Úvaluert   rr   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‡   r§   s     rx   Ú_scalar_from_stringz*DatetimeLikeArrayMixin._scalar_from_stringî   ó   € õ$ " $Ñ'Ô'Ð'rz   ú)np.int64 | np.datetime64 | np.timedelta64c                ó    — t          | ¦  «        ‚)a±  
        Unbox the integer value of a scalar `value`.

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

        Returns
        -------
        int

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

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

        In each case, NaT is considered compatible.

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

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

        Returns
        -------
        ndarray
            An ndarray with int64 dtype.
        r€   )r•   rƒ   r›   s    rx   rÆ   zDatetimeLikeArrayMixin.asi8A  s   € ð Œ}×!Ò! $Ñ'Ô'Ð'rz   r   )Úna_repÚdate_formatrÊ   ústr | floatúnpt.NDArray[np.object_]c               ó    — t          | ¦  «        ‚)z|
        Helper method for astype when converting to strings.

        Returns
        -------
        ndarray[str]
        r¡   )r‡   rÊ   rË   s      rx   Ú_format_native_typesz+DatetimeLikeArrayMixin._format_native_typesQ  s   € õ " $Ñ'Ô'Ð'rz   ÚboxedúCallable[[object], str]c                ó   — dj         S )Nz'{}')Úformat)r‡   rÐ   s     rx   Ú
_formatterz!DatetimeLikeArrayMixin._formatter]  s
   € àŒ}Ðrz   úNpDtype | Noneúbool | Nonec                ó4  — t          |¦  «        r;|du rt          d¦  «        ‚t          j        t	          | ¦  «        t
          ¬¦  «        S |du rt          j        | j        |¬¦  «        S | j        }| j        r |                     ¦   «         }d|j	        _
        |S )NFz:Unable to avoid copy while creating an array as requested.©r‚   T)rF   Ú
ValueErrorÚnpr`   ÚlistÚobjectr•   Ú	_readonlyrƒ   ÚflagsÚ	writeable)r‡   r‚   rž   r‹   s       rx   Ú	__array__z DatetimeLikeArrayMixin.__array__d  sœ   € õ ˜5Ñ!Ô!ð 	6Ø�uˆ}ˆ}Ý ØPñô ð õ ”8�D ™JœJ­fÐ5Ñ5Ô5Ð5à�4ˆ<ˆ<Ý”8˜DœM°Ð7Ñ7Ô7Ð7à”ˆØŒ>ð 	+Ø—[’[‘]”]ˆFØ%*ˆFŒLÔ"Øˆrz   Úkeyr6   c                ó   — d S rv   rš   ©r‡   rá   s     rx   Ú__getitem__z"DatetimeLikeArrayMixin.__getitem__x  ó   € Ø@CÀrz   ú(SequenceIndexer | PositionalIndexerTupler
   c                ó   — d S rv   rš   rã   s     rx   rä   z"DatetimeLikeArrayMixin.__getitem__{  s	   € ð ˆsrz   r4   úSelf | DTScalarOrNaTc                ó  •— t          t          t          t          f         t	          ¦   «                              |¦  «        ¦  «        }t          j        |¦  «        r|S t          t          |¦  «        }|                      |¦  «        |_	        |S )z’
        This getitem defers to the underlying array, which by-definition can
        only handle list-likes, slices, and integer scalars
        )
r   r   r
   rr   Úsuperrä   r   Ú	is_scalarÚ_get_getitem_freqÚ_freq)r‡   rá   r‹   Ú	__class__s      €rx   rä   z"DatetimeLikeArrayMixin.__getitem__�  st   ø€ õ •e�D¥-Ð/Ô0µ%±'´'×2EÒ2EÀcÑ2JÔ2JÑKÔKˆÝŒ=˜Ñ Ô ð 	(ØˆMõ �$ Ñ'Ô'ˆFð ×-Ò-¨cÑ2Ô2ˆŒØˆrz   c                ó  — t          | j        t          ¦  «        }|r| j        }nÛ| j        dk    rd}nÍt          | |¦  «        }d}t          |t          ¦  «        r&| j        �|j        �|j        | j        z  }nˆ| j        }n€|t          u r| j        }not          j
        |¦  «        r[t          j        |                     t          j        ¦  «        ¦  «        }t          |t          ¦  «        r|                      |¦  «        S |S )z\
        Find the `freq` attribute to assign to the result of a __getitem__ lookup.
        r¼   N)r�   r‚   rM   r—   rÃ   rc   ÚsliceÚstepÚEllipsisÚcomÚis_bool_indexerr   Úmaybe_booleans_to_slicerƒ   rÚ   Úuint8rì   )r‡   rá   Ú	is_periodr—   Únew_keys        rx   rì   z(DatetimeLikeArrayMixin._get_getitem_freq”  sö   € õ ˜tœz­;Ñ7Ô7ˆ	Øð 	;Ø”9ˆDˆDØŒY˜!Š^ˆ^ØˆDˆDå% d¨CÑ0Ô0ˆCØˆDÝ˜#�uÑ%Ô%ð ;Ø”9Ð(¨S¬XÐ-AØœ8 d¤iÑ/�D�Dàœ9�D�DØ���ð ”y��ÝÔ$ SÑ)Ô)ð ;ÝÔ5°c·h²h½r¼xÑ6HÔ6HÑIÔI�Ý˜g¥uÑ-Ô-ð ;Ø×1Ò1°'Ñ:Ô:Ð:Øˆrz   ú,int | Sequence[int] | Sequence[bool] | sliceúNaTType | Any | Sequence[Any]c                óž   •— t          ||| ¦  «        }t          ¦   «                              ||¦  «         |rd S |                      ¦   «          d S rv   )rd   rê   Ú__setitem__Ú_maybe_clear_freq)r‡   rá   r§   Úno_oprî   s       €rx   rü   z"DatetimeLikeArrayMixin.__setitem__²  sW   ø€ õ & c¨5°$Ñ7Ô7ˆõ 	‰Œ×Ò˜C Ñ'Ô'Ð'àð 	ØˆFà×ÒÑ Ô Ð Ð Ð rz   c                ó   — d S rv   rš   r›   s    rx   rý   z(DatetimeLikeArrayMixin._maybe_clear_freqÈ  s	   € ð 	ˆrz   Tc                óh  •— t          |¦  «        }|t          k    r°| j        j        dk    r6t	          d| ¦  «        } | j        }t          || j        d| j        ¬¦  «        }|S | j        j        dk    rt          | j
        d¬¦  «        S |                      | j                             ¦   «         ¦  «                             | j        ¦  «        S t          |¦  «        rpt!          |t"          ¦  «        rG|                      |j        ¬¦  «        }|                     ¦   «         }|                     ||d	¬
¦  «        S |                      ¦   «         S t!          |t"          ¦  «        r#t-          ¦   «                              ||¬¦  «        S |j        dv rJ| j        }|t0          j        k    rt5          d| j        › d|› d�¦  «        ‚|r|                     ¦   «         }|S |j        dv r| j        |k    s|j        dk    r)dt9          | ¦  «        j        › d|› �}t5          |¦  «        ‚t1          j        | |¬¦  «        S )NÚMro   Ú	timestamp)ÚtzÚboxÚresoÚmT)r  )rÊ   F)r‚   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Ø   )rH   rÜ   r‚   Úkindr   rÆ   r"   r  Ú_cresor#   r•   rº   ÚravelÚreshapeÚshaperG   r�   rL   rÏ   Úna_valueÚconstruct_array_typeÚ_from_sequencerê   ÚastyperÚ   Úint64Ú	TypeErrorrž   ÚtypeÚ__name__Úasarray)
r‡   r‚   rž   Úi8dataÚ	convertedÚ
arr_objectÚclsr¹   Úmsgrî   s
            €rx   r  zDatetimeLikeArrayMixin.astypeÍ  sH  ø€ õ
 ˜UÑ#Ô#ˆà•FŠ?ˆ?ØŒzŒ #Ò%Ð%Ý˜O¨TÑ2Ô2�ð œ�Ý.ØØ”wØ#Øœð	ñ ô �	ð !Ð à”” CÒ'Ð'Ý*¨4¬=¸dÐCÑCÔCÐCà×#Ò# D¤I§O¢OÑ$5Ô$5Ñ6Ô6×>Ò>¸t¼zÑJÔJÐJå˜UÑ#Ô#ð 	1Ý˜%¥Ñ0Ô0ð 3Ø!×6Ò6¸e¼nÐ6ÑMÔM�
Ø×0Ò0Ñ2Ô2�Ø×)Ò)¨*¸EÈÐ)ÑNÔNÐNà×0Ò0Ñ2Ô2Ð2å˜�~Ñ.Ô.ð 	1Ý‘7”7—>’> %¨d�>Ñ3Ô3Ð3ØŒZ˜4ÐÐð ”YˆFØ�œÒ Ð ÝðC t¤zð Cð C°uð Cð Cð Cñô ð ð
 ð 'ØŸš™œ�ØˆMØŒj˜DÐ Ð  T¤Z°5Ò%8Ð%8¸U¼ZÈ3Ò=NÐ=Nð H¥ d¡¤Ô!4ÐGÐGÀÐGÐGˆCÝ˜C‘.”.Ð å”:˜d¨%Ð0Ñ0Ô0Ð0rz   c                ó   — d S rv   rš   r›   s    rx   rƒ   zDatetimeLikeArrayMixin.view  s   € Ø˜Crz   úLiteral['M8[ns]']ro   c                ó   — d S rv   rš   ©r‡   r‚   s     rx   rƒ   zDatetimeLikeArrayMixin.view	  s   € Ø?B¸srz   úLiteral['m8[ns]']rq   c                ó   — d S rv   rš   r!  s     rx   rƒ   zDatetimeLikeArrayMixin.view  rå   rz   .r,   c                ó   — d S rv   rš   r!  s     rx   rƒ   zDatetimeLikeArrayMixin.view  s   € Ø<?¸Crz   c                óF   •— t          ¦   «                              |¦  «        S rv   )rê   rƒ   )r‡   r‚   rî   s     €rx   rƒ   zDatetimeLikeArrayMixin.view  s   ø€ õ ‰wŒw�|Š|˜EÑ"Ô"Ð"rz   Úmaskúnpt.NDArray[np.bool_]c                óZ   •— t          ¦   «                              ||¦  «         d | _        d S rv   )rê   Ú_putmaskrí   )r‡   r&  r§   rî   s      €rx   r)  zDatetimeLikeArrayMixin._putmask  s(   ø€ Ý‰Œ×Ò˜˜uÑ%Ô%Ð%ØˆŒ
ˆ
ˆ
rz   c                ó
  — t          |t          ¦  «        r@	 |                      |¦  «        }n)# t          t          f$ r}t          |¦  «        |‚d }~ww xY wt          || j        ¦  «        s	|t          u rN|                      |¦  «        }	 |  	                    |¦  «         nã# t          $ r}t          |¦  «        |‚d }~ww xY wt          |¦  «        st          |¦  «        ‚t          |¦  «        t          | ¦  «        k    rt          d¦  «        ‚	 |                      |d¬¦  «        }|  	                    |¦  «         nF# t          $ r9}t          t          |dd ¦  «        ¦  «        rnt          |¦  «        |‚Y d }~nd }~ww xY w|S )NzLengths must matchT)Úallow_objectr‚   )r�   rt   rª   rÙ   r   r>   r“   r   r¦   r²   r  rE   rÅ   Ú_validate_listlikerF   Úgetattr)r‡   r¯   Úerrs      rx   Ú_validate_comparison_valuez1DatetimeLikeArrayMixin._validate_comparison_value  s¼  € Ý�e�SÑ!Ô!ð 	8ð8à×0Ò0°Ñ7Ô7��øÝÕ 5Ð6ð 8ð 8ð 8å'¨Ñ.Ô.°CÐ7øøøøð8øøøõ �e˜TÔ5Ñ6Ô6ð 	<¸%Å3¸,¸,Ø×%Ò% eÑ,Ô,ˆEð8Ø×+Ò+¨EÑ2Ô2Ð2Ð2øÝð 8ð 8ð 8å'¨Ñ.Ô.°CÐ7øøøøð8øøøõ ˜eÑ$Ô$ð 	<Ý# EÑ*Ô*Ð*å�‰ZŒZ�3˜t™9œ9Ò$Ð$ÝÐ1Ñ2Ô2Ð2ð<Ø×/Ò/°ÀDÐ/ÑIÔI�Ø×+Ò+¨EÑ2Ô2Ð2Ð2øÝð <ð <ð <Ý"¥7¨5°'¸4Ñ#@Ô#@ÑAÔAð <àå+¨EÑ2Ô2¸Ð;ð �D�D�D�Døøøøð<øøøð ˆsD   —- ­A¾AÁAÂ
B  Â 
B?Â*B:Â:B?Ä,D= Ä=
F Å/E;Å;F )Úallow_listlikeÚunboxr0  r1  c               ól  — t          || j        ¦  «        r�nt          |t          ¦  «        rO	 |                      |¦  «        }nÙ# t          $ r+}|                      ||¦  «        }t          |¦  «        |‚d}~ww xY wt          || j        ¦  «        rt          }n„t          |¦  «        r%|                      ||¦  «        }t          |¦  «        ‚t          || j        ¦  «        r|                      |¦  «        }n%|                      ||¦  «        }t          |¦  «        ‚|s|S |                      |¦  «        S )a  
        Validate that the input value can be cast to our scalar_type.

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

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

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

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

        Returns
        -------
        str
        r‚   rÃ   r   z arrayú'zvalue should be a 'z!', 'NaT', or array of those. Got z	 instead.z' or 'NaT'. Got )Úhasattrr-  r‚   r  r  r¦   )r‡   r§   r0  Úmsg_gotr  s        rx   r3  z0DatetimeLikeArrayMixin._validation_error_message€  sÄ   € õ �5˜'Ñ"Ô"ð 	2¥w¨u°f¸aÑ'@Ô'@À1Ò'DÐ'DØœÐ,Ð,Ð,ˆGˆGà1�$˜u™+œ+Ô.Ð1Ð1Ð1ˆGØð 		ð= dÔ&7Ô&@ð =ð =Ø*1ð=ð =ð =ð ˆCð* dÔ&7Ô&@ð *ð *Øð*ð *ð *ð ð ˆ
rz   r+  c                ó<  — t          |t          | ¦  «        ¦  «        r>| j        j        dv r.|s,| j        |j        k    r|                     | j        d¬¦  «        }|S t          |t          ¦  «        r<t          |¦  «        dk    r)t          | ¦  «                             g | j        ¬¦  «        S t          |d¦  «        r—|j        t          k    r‡t          j        |¦  «        | j        v rl	 t          | ¦  «                             |¦  «        }nH# t          t          f$ r4}|r|cY d }~S |                      |d¦  «        }t          |¦  «        |‚d }~ww xY wt          |t          ¦  «        rt#          |¦  «        }t          |t$          j        ¦  «        r,|j        t          k    rt          j        |d| j        ¬¦  «        }t+          |d¬	¦  «        }t-          |¦  «        }t+          |d¬	¦  «        }t/          |¦  «        r;	 t          | ¦  «                             || j        ¬¦  «        }n# t          $ r Y nw xY wt          |j        t0          ¦  «        r:|j        j        | j        k    r%|                     ¦   «         }t+          |d¬	¦  «        }|rt7          |j        ¦  «        rnLt          | ¦  «                             |j        ¦  «        s%|                      |d¦  «        }t          |¦  «        ‚| j        j        dv r|s|                     | j        d¬¦  «        }|S )
Nr	  F©Úround_okr   rØ   r‚   T©Úconvert_non_numericÚdtype_if_all_nat©Úextract_numpy)r�   r  r‚   r  ÚunitÚas_unitrÛ   rÅ   r  r7  rÜ   r   Úinfer_dtyper‘   rÙ   r  r3  rB   rÚ   ÚndarrayÚmaybe_convert_objectsrb   Úpd_arrayrC   rJ   Ú
categoriesÚ_internal_get_valuesrF   r’   )r‡   r§   r+  r.  r  s        rx   r,  z)DatetimeLikeArrayMixin._validate_listlikeŸ  s  € Ý�e�T $™ZœZÑ(Ô(ð 	ØŒzŒ $Ð&Ð&¨|Ð&ÀÄ	ÈUÌZÒ@WÐ@WàŸš d¤i¸%˜Ñ@Ô@�ØˆLå�e�TÑ"Ô"ð 	C¥s¨5¡z¤z°Q¢ å˜‘:”:×,Ò,¨R°t´zÐ,ÑBÔBÐBå�5˜'Ñ"Ô"ð 
	2 u¤{µfÒ'<Ð'<õ Œ˜uÑ%Ô%¨Ô)<Ð<Ð<ð2Ý  ™JœJ×5Ò5°eÑ<Ô<�E�EøÝ"¥IÐ.ð 2ð 2ð 2Ø#ð %Ø$˜˜˜˜˜˜Ø×8Ò8¸ÀÑEÔE�CÝ# C™.œ.¨cÐ1øøøøð	2øøøõ �e�TÑ"Ô"ð 	CÝ;¸EÑBÔBˆEÝ�e�RœZÑ(Ô(ð 	¨U¬[½FÒ-BÐ-Bõ Ô-Ø¨4À$Ä*ðñ ô ˆEõ ˜e°4Ð8Ñ8Ô8ˆÝ˜‘”ˆÝ˜e°4Ð8Ñ8Ô8ˆå˜%Ñ Ô ð 	ðõ ˜T™
œ
×1Ò1°%¸t¼zÐ1ÑJÔJ��øÝð ð ð Ø�ðøøøõ �e”kÕ#3Ñ4Ô4ð 	AàÔÔ%¨¬Ò3Ð3à×2Ò2Ñ4Ô4�Ý% e¸4Ð@Ñ@Ô@�àð 	!�O¨E¬KÑ8Ô8ð 	!Øå�d‘”×0Ò0°´Ñ=Ô=ð 	!Ø×0Ò0°¸Ñ=Ô=ˆCÝ˜C‘.”.Ð àŒ:Œ?˜dÐ"Ð"¨<Ð"à—M’M $¤)°e�MÑ<Ô<ˆEØˆs6   Ã)"D ÄEÄEÄ EÄ&&EÅEÇ?)H) È)
H6È5H6c                ó¤   — t          |¦  «        r|                      |¦  «        }n|                      |d¬¦  «        S |                      |¦  «        S )NT)r0  )rE   r,  r4  Ú_unboxr©   s     rx   Ú_validate_setitem_valuez.DatetimeLikeArrayMixin._validate_setitem_valueá  sS   € Ý˜ÑÔð 	EØ×+Ò+¨EÑ2Ô2ˆEˆEà×(Ò(¨¸tÐ(ÑDÔDÐDà�{Š{˜5Ñ!Ô!Ð!rz   ú6np.int64 | np.datetime64 | np.timedelta64 | np.ndarrayc                ó’   — t          j        |¦  «        r|                      |¦  «        }n|                      |¦  «         |j        }|S )zZ
        Unbox either a scalar with _unbox_scalar or an instance of our own type.
        )r   rë   r®   r²   r•   r±   s     rx   rJ  zDatetimeLikeArrayMixin._unboxé  sM   € õ
 Œ=˜ÑÔð 	#Ø×&Ò& uÑ-Ô-ˆEˆEð ×'Ò'¨Ñ.Ô.Ð.Ø”NˆEØˆrz   Ú	na_actionúLiteral['ignore'] | Nonec                ó¨   — ddl m} t          | ||¬¦  «        } ||¦  «        }t          |t          ¦  «        r|                     ¦   «         S |j        S )Nr   rm   )rN  )Úpandasrn   rW   r�   rO   Úto_numpyr`   )r‡   ÚmapperrN  rn   r‹   s        rx   ÚmapzDatetimeLikeArrayMixin.mapû  s_   € à Ð Ð Ð Ð Ð å˜4 °9Ð=Ñ=Ô=ˆØ��v‘”ˆå�f�mÑ,Ô,ð 	 Ø—?’?Ñ$Ô$Ð$à”<Ðrz   r¹   c                ó(  — |j         j        dv r t          j        | j        t
          ¬¦  «        S t          |¦  «        }t          |t          | ¦  «        ¦  «        s™|j         t          k    rit          j        |d| j         ¬¦  «        }|j         t          k    r|                      |¦  «        S t          |                      t          ¦  «        |¦  «        S t          j        | j        t
          ¬¦  «        S | j         j        dv r*t          d| ¦  «        } |                     | j        ¦  «        }	 |                      |¦  «         n7# t$          t&          f$ r# t          j        | j        t
          ¬¦  «        cY S w xY wt          | j        |j        ¦  «        S )z÷
        Compute boolean array of whether each value is found in the
        passed set of values.

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

        Returns
        -------
        ndarray[bool]
        ÚfiucrØ   Tr<  r	  úDatetimeArray | TimedeltaArray)r‚   r  rÚ   Úzerosr  r˜   ra   r�   r  rÜ   r   rE  rV   r  r   rB  rA  r²   r  rÙ   rÆ   r¸   s     rx   rV   zDatetimeLikeArrayMixin.isin  sx  € ð Œ<Ô Ð&Ð&å”8˜DœJ­dÐ3Ñ3Ô3Ð3å/°Ñ7Ô7ˆå˜&¥$ t¡*¤*Ñ-Ô-ð 	4ØŒ|�vÒ%Ð%ÝÔ2ØØ(,Ø%)¤Zðñ ô �ð
 ”<¥6Ò)Ð)ØŸ9š9 VÑ,Ô,Ð,õ   §¢­FÑ 3Ô 3°VÑ<Ô<Ð<Ý”8˜DœJ­dÐ3Ñ3Ô3Ð3àŒ:Œ?˜dÐ"Ð"ÝÐ8¸$Ñ?Ô?ˆDà—^’^ D¤IÑ.Ô.ˆFð	4ð ×'Ò'¨Ñ/Ô/Ð/Ð/øÝ�:Ð&ð 	4ð 	4ð 	4å”8˜DœJ­dÐ3Ñ3Ô3Ð3Ð3Ð3ð	4øøøõ �D”I˜vœ{Ñ+Ô+Ð+s   Ä-E Å1E7Å6E7c                ó   — | j         S rv   )Ú_isnanr›   s    rx   rQ   zDatetimeLikeArrayMixin.isna>  s
   € ØŒ{Ðrz   c                ó"   — | j         t          k    S )z-
        return if each value is nan
        )rÆ   r!   r›   s    rx   rZ  zDatetimeLikeArrayMixin._isnanA  s   € ð
 Œy�DÒ Ð rz   c                óN   — t          | j                             ¦   «         ¦  «        S )zJ
        return if I have any nans; enables various perf speedups
        )r˜   rZ  Úanyr›   s    rx   Ú_hasnazDatetimeLikeArrayMixin._hasnaH  s   € õ
 �D”K—O’OÑ%Ô%Ñ&Ô&Ð&rz   r‹   c                ó”   — | j         r@|r|                     |¦  «        }|€t          j        }t          j        || j        |¦  «         |S )az  
        Parameters
        ----------
        result : np.ndarray
        fill_value : object, default iNaT
        convert : str, dtype or None

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

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

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

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

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

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

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

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

        For PeriodIndex:

        >>> idx = pd.PeriodIndex(["2023-1", "2023-2", "2023-3"], freq="M")
        >>> idx.freqstr
        'M'
        N)r—   Úfreqstrr›   s    rx   rf  zDatetimeLikeArrayMixin.freqstrm  s   € ð@ Œ9ÐØ�4ØŒyÔ Ð rz   c                óh   — | j         dk    rdS 	 t          j        | ¦  «        S # t          $ r Y dS w xY w)a  
        Tries to return a string representing a frequency generated by infer_freq.

        Returns None if it can't autodetect the frequency.

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

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

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

        For TimedeltaIndex:

        >>> tdelta_idx = pd.to_timedelta(["0 days", "10 days", "20 days"])
        >>> tdelta_idx
        TimedeltaIndex(['0 days', '10 days', '20 days'],
                       dtype='timedelta64[us]', freq=None)
        >>> tdelta_idx.inferred_freq
        '10D'
        r¼   N)rÃ   rh   Ú
infer_freqrÙ   r›   s    rx   Úinferred_freqz$DatetimeLikeArrayMixin.inferred_freq‘  sL   € ð: Œ9˜Š>ˆ>Ø�4ð	ÝÔ)¨$Ñ/Ô/Ð/øÝð 	ð 	ð 	Ø�4�4ð	øøøs   �# £
1°1úResolution | Nonec                ód   — | j         }|€d S 	 t          j        |¦  «        S # t          $ r Y d S w xY wrv   )rf  r   Úget_reso_from_freqstrÚKeyError)r‡   rf  s     rx   Ú_resolution_objz&DatetimeLikeArrayMixin._resolution_objµ  sK   € à”,ˆØˆ?Ø�4ð	ÝÔ3°GÑ<Ô<Ð<øÝð 	ð 	ð 	Ø�4�4ð	øøøs   �! ¡
/®/c                ó   — | j         j        S )zO
        Returns day, hour, minute, second, millisecond or microsecond
        )rn  Úattrnamer›   s    rx   Ú
resolutionz!DatetimeLikeArrayMixin.resolution¿  s   € ð Ô#Ô,Ð,rz   c                óD   — t          j        | j        d¬¦  «        d         S )NT©Útimeliker   ©r   Úis_monotonicrÆ   r›   s    rx   Ú_is_monotonic_increasingz/DatetimeLikeArrayMixin._is_monotonic_increasingÊ  ó   € åÔ! $¤)°dÐ;Ñ;Ô;¸AÔ>Ð>rz   c                óD   — t          j        | j        d¬¦  «        d         S )NTrs  r¼   ru  r›   s    rx   Ú_is_monotonic_decreasingz/DatetimeLikeArrayMixin._is_monotonic_decreasingÎ  rx  rz   c                ó|   — t          t          | j                             d¦  «        ¦  «        ¦  «        | j        k    S )NÚK)rÅ   rX   rÆ   r  Úsizer›   s    rx   Ú
_is_uniquez!DatetimeLikeArrayMixin._is_uniqueÒ  s-   € å•8˜DœIŸOšO¨CÑ0Ô0Ñ1Ô1Ñ2Ô2°d´iÒ?Ð?rz   c                ó  — | j         dk    rbt          |dd ¦  «        | j        k    rH ||                      ¦   «         |                     ¦   «         ¦  «                             | j        ¦  «        S 	 |                      |¦  «        }nT# t          $ rG t          |d¦  «        r#t          |j	        t          ¦  «        r	t          cY S t          | ||¦  «        cY S w xY wt          |dd ¦  «        }t          |¦  «        rBt          j        |t!          j        |                      t&          ¦  «        ¦  «        |¦  «        }|S |t(          u rQ|t*          j        u r!t!          j        | j        t0          ¬¦  «        }n t!          j        | j        t0          ¬¦  «        }|S t          | j	        t4          ¦  «        s¼t7          t8          | ¦  «        } | j        |j        k    r—t          |t=          | ¦  «        ¦  «        s]	 |                     | j         d¬¦  «        }n\# tB          $ r2 t!          j"        |j#        ¦  «        }tI          | j%        ||¦  «        cY S w xY w|j%        }tI          | j%        ||¦  «        S |  &                    |¦  «        } || j%         '                    d¦  «        | '                    d¦  «        ¦  «        }tQ          |¦  «        }| j)        |z  }| *                    ¦   «         r$|t*          j        u }	t!          j+        |||	¦  «         |S )Nr¼   r  r‚   rØ   Fr:  r€   ),rÃ   r-  r  r  r  r/  r>   r7  r�   r‚   rI   ÚNotImplementedrf   rF   rU   Úcomp_method_OBJECT_ARRAYrÚ   r  r  rÜ   r   ÚoperatorÚneÚonesr˜   rX  rM   r   ÚTimelikeOpsr  r  rB  rA  rÙ   r`   Úasm8r)   r•   rJ  rƒ   rQ   rZ  r]  ra  )
r‡   r¯   rw   r‚   r‹   Ú	other_arrÚ
other_valsÚo_maskr&  Ú
nat_results
             rx   Ú_cmp_methodz"DatetimeLikeArrayMixin._cmp_methodÙ  sÜ  € ØŒ9�qŠ=ˆ=�W U¨G°TÑ:Ô:¸d¼jÒHÐHà�2�d—j’j‘l”l E§K¢K¡M¤MÑ2Ô2×:Ò:¸4¼:ÑFÔFÐFð	7Ø×3Ò3°EÑ:Ô:ˆEˆEøÝ ð 	7ð 	7ð 	7Ý�u˜gÑ&Ô&ð &­:°e´kÅ:Ñ+NÔ+Nð &Ý%Ð%Ð%Ð%Ý% d¨E°2Ñ6Ô6Ð6Ð6Ð6ð	7øøøõ
 ˜˜w¨Ñ-Ô-ˆÝ˜5Ñ!Ô!ð 	õ Ô1Ø•B”J˜tŸ{š{­6Ñ2Ô2Ñ3Ô3°Uñô ˆFð ˆMØ•Cˆ<ˆ<Ø•X”[Ð Ð Ýœ ¤µ4Ð8Ñ8Ô8��åœ $¤*µDÐ9Ñ9Ô9�ØˆMå˜$œ*¥kÑ2Ô2ð 	XÝ� TÑ*Ô*ˆDØŒ{˜eœlÒ*Ð*Ý! %­¨d©¬Ñ4Ô4ð Xðà %§¢¨d¬iÀ% Ñ HÔ H˜˜øÝ%ð ð ð Ý$&¤H¨U¬ZÑ$8Ô$8˜	Ý=Ø œM¨9°bñ ô  ð ð ð ðøøøð !&¤�IÝ9¸$¼-ÈÐTVÑWÔWÐWà—[’[ Ñ'Ô'ˆ
à��D”M×&Ò& tÑ,Ô,¨j¯oªo¸dÑ.CÔ.CÑDÔDˆå�e‘”ˆØŒ{˜VÑ#ˆØ�8Š8‰:Œ:ð 	1Ø�xœ{Ð*ˆJÝŒJ�v˜t ZÑ0Ô0Ð0àˆs*   Á/B Â;CÃCÃCÇ2H È9IÉ
IÚ__pow__Ú__rpow__Ú__mul__Ú__rmul__Ú__truediv__Ú__rtruediv__Ú__floordiv__Ú__rfloordiv__Ú__mod__Ú__rmod__Ú
__divmod__Ú__rdivmod__ú@tuple[int | npt.NDArray[np.int64], None | npt.NDArray[np.bool_]]c                ó°   — t          |t          ¦  «        r
|j        }d}n4t          |t          t          f¦  «        r
|j        }d}n|j        }|j        }||fS )zN
        Get the int64 values and b_mask to pass to add_overflowsafe.
        N)r�   r   Úordinalr   r   r…   rZ  rÆ   )r‡   r¯   Úi8valuesr&  s       rx   Ú_get_i8_values_and_maskz.DatetimeLikeArrayMixin._get_i8_values_and_mask!  sc   € õ �e�VÑ$Ô$ð 		"Ø”}ˆHØˆDˆDÝ˜¥	­9Ð5Ñ6Ô6ð 	"Ø”|ˆHØˆDˆDð ”<ˆDØ”zˆHØ˜ˆ~Ðrz   c                óæ  — t          | j        t          ¦  «        r| j        S t	          j        |¦  «        sdS t          | j        t          ¦  «        r| j        S | j        j        dk    rt          |t          ¦  «        r| j        S | j        j        dk    r<t          |t          ¦  «        r'|j
        �t          j        |j
        ¦  «        r| j        S t	          j        | j        d¦  «        r6t          | j        t          ¦  «        rt          |t          ¦  «        r| j        S t	          j        | j        d¦  «        r6t          |t          ¦  «        r!t          | j        t          ¦  «        r| j        S dS )zP
        Check if we can preserve self.freq in addition or subtraction.
        Nr  r  )r�   r‚   rM   r—   r   rë   r   r  r   r   r  r%   Úis_utcÚis_np_dtyper   r±   s     rx   Ú_get_arithmetic_result_freqz2DatetimeLikeArrayMixin._get_arithmetic_result_freq4  sS  € õ �d”j¥+Ñ.Ô.ð 	Ø”9ÐÝ”˜uÑ%Ô%ð 	Ø�4Ý˜œ	¥4Ñ(Ô(ð 	à”9ÐØŒZŒ_ Ò#Ð#­
°5½)Ñ(DÔ(DÐ#Ø”9ÐàŒJŒO˜sÒ"Ð"Ý˜5¥)Ñ,Ô,ð #à”Ð!¥YÔ%5°e´hÑ%?Ô%?Ð!ð
 ”9ÐåŒO˜DœJ¨Ñ,Ô,ð	å˜4œ9¥cÑ*Ô*ð	õ ˜5¥)Ñ,Ô,ð	ð ”9ÐåŒO˜DœJ¨Ñ,Ô,ð	å˜5¥)Ñ,Ô,ð	õ ˜4œ9¥cÑ*Ô*ð	ð
 ”9Ðàˆtrz   c                ó–  — t          j        | j        d¦  «        s9t          dt	          | ¦  «        j        › dt	          |¦  «        j        › �¦  «        ‚t          d| ¦  «        } ddlm} ddl	m
} |t          usJ ‚t          |¦  «        rN| j        t          j        ¦   «                              d| j        › d	�¦  «        z   } |j        ||j        ¬
¦  «        S t%          |¦  «        }|                      |¦  «        \  } }t          d| ¦  «        } |                      |¦  «        \  }}t+          | j        t/          j        |d¬
¦  «        ¦  «        }|                     d| j        › d	�¦  «        } ||j        | j        ¬¦  «        }|                     d| j        › d	�¦  «        }|                      |¦  «        }	 |j        |||	¬¦  «        S )Nr  úcannot add ú and rq   r   ©ro   )Útz_to_dtypezM8[ú]rØ   r€   ©r  rA  ©r‚   r—   )r   rŸ  r‚   r  r  r  r   Úpandas.core.arraysro   Úpandas.core.arrays.datetimesr¥  r   rQ   r•   Úto_datetime64r  rA  Ú_simple_newr   Ú_ensure_matching_resosrœ  r   rÆ   rÚ   r  rƒ   r  r   )
r‡   r¯   ro   r¥  r‹   Úother_i8r‰  Ú
res_valuesr‚   Únew_freqs
             rx   Ú_add_datetimelike_scalarz/DatetimeLikeArrayMixin._add_datetimelike_scalar^  sá  € åŒ˜tœz¨3Ñ/Ô/ð 	ÝØN�d 4™jœjÔ1ÐNÐN½¸U¹¼Ô8LÐNÐNñô ð õ Ð$ dÑ+Ô+ˆà4Ð4Ð4Ð4Ð4Ð4Ø<Ð<Ð<Ð<Ð<Ð<à�CÐÐÐÐÝ�‰;Œ;ð 	Ið ”]¥SÔ%6Ñ%8Ô%8×%?Ò%?Ð@RÀdÄiÐ@RÐ@RÐ@RÑ%SÔ%SÑSˆFà,�=Ô,¨V¸6¼<ÐHÑHÔHÐHå˜%Ñ Ô ˆØ×1Ò1°%Ñ8Ô8‰ˆˆeÝÐ$ dÑ+Ô+ˆà×7Ò7¸Ñ>Ô>Ñˆ�&Ý! $¤)­R¬Z¸ÈÐ-MÑ-MÔ-MÑNÔNˆØ—[’[Ð!3 t¤yÐ!3Ð!3Ð!3Ñ4Ô4ˆ
à�˜uœx¨d¬iÐ8Ñ8Ô8ˆØ—[’[Ð!3 t¤yÐ!3Ð!3Ð!3Ñ4Ô4ˆ
Ø×3Ò3°EÑ:Ô:ˆØ(ˆ}Ô(¨¸5ÀxÐPÑPÔPÐPrz   c                ó²   — t          j        | j        d¦  «        s9t          dt	          | ¦  «        j        › dt	          |¦  «        j        › �¦  «        ‚|| z   S )Nr  r¢  r£  )r   rŸ  r‚   r  r  r  r±   s     rx   Ú_add_datetime_arraylikez.DatetimeLikeArrayMixin._add_datetime_arraylike€  s[   € åŒ˜tœz¨3Ñ/Ô/ð 	ÝØN�d 4™jœjÔ1ÐNÐN½¸U¹¼Ô8LÐNÐNñô ð ð
 �t‰|Ðrz   údatetime | np.datetime64c                ó4  — | j         j        dk    r$t          dt          | ¦  «        j        › �¦  «        ‚t          d| ¦  «        } t          |¦  «        r
| t          z
  S t          |¦  «        }|  	                    |¦  «        \  } }|  
                    |¦  «        S )Nr  ú"cannot subtract a datelike from a ro   )r‚   r  r  r  r  r   rQ   r   r   r­  Ú_sub_datetimelike)r‡   r¯   Útss      rx   Ú_sub_datetimelike_scalarz/DatetimeLikeArrayMixin._sub_datetimelike_scalarŠ  s”   € ð Œ:Œ?˜cÒ!Ð!ÝÐVÅÀdÁÄÔATÐVÐVÑWÔWÐWå�O TÑ*Ô*ˆõ �‰;Œ;ð 	à�#‘:Ðå�uÑÔˆà×.Ò.¨rÑ2Ô2‰ˆˆbØ×%Ò% bÑ)Ô)Ð)rz   c                óB  — | j         j        dk    r$t          dt          | ¦  «        j        › �¦  «        ‚t          | ¦  «        t          |¦  «        k    rt          d¦  «        ‚t          d| ¦  «        } |                      |¦  «        \  } }|  	                    |¦  «        S )Nr  r¶  ú$cannot add indices of unequal lengthro   )
r‚   r  r  r  r  rÅ   rÙ   r   r­  r·  r±   s     rx   Ú_sub_datetime_arraylikez.DatetimeLikeArrayMixin._sub_datetime_arraylike�  s‘   € àŒ:Œ?˜cÒ!Ð!ÝÐVÅÀdÁÄÔATÐVÐVÑWÔWÐWåˆt‰9Œ9�˜E™
œ
Ò"Ð"ÝÐCÑDÔDÐDå�O TÑ*Ô*ˆà×1Ò1°%Ñ8Ô8‰ˆˆeØ×%Ò% eÑ,Ô,Ð,rz   úTimestamp | DatetimeArrayc                ó2  — t          d| ¦  «        } ddlm} 	 |                      |¦  «         nN# t          $ rA}t          |¦  «                             dd¦  «        } t          |¦  «        |¦  «        |‚d }~ww xY w|                      |¦  «        \  }}t          | j
        t          j        | d¬¦  «        ¦  «        }|                     d| j        › d	�¦  «        }|                      |¦  «        }	t          d
|	¦  «        }	 |j        ||j        |	¬¦  «        S )Nro   r   ©rq   ÚcompareÚsubtractr€   rØ   útimedelta64[r¦  zTick | Noner¨  )r   r©  rq   Ú_assert_tzawareness_compatr  rt   Úreplacer  rœ  r   rÆ   rÚ   r  rƒ   rA  r   r¬  r‚   )
r‡   r¯   rq   r.  Únew_messager®  r‰  r¯  Úres_m8r°  s
             rx   r·  z(DatetimeLikeArrayMixin._sub_datetimelikeª  s*  € å�O TÑ*Ô*ˆà5Ð5Ð5Ð5Ð5Ð5ð	2Ø×+Ò+¨EÑ2Ô2Ð2Ð2øÝð 	2ð 	2ð 	2Ý˜c™(œ(×*Ò*¨9°jÑAÔAˆKØ•$�s‘)”)˜KÑ(Ô(¨cÐ1øøøøð	2øøøð  ×7Ò7¸Ñ>Ô>Ñˆ�&Ý% d¤iµ´¸X¸IÈTÐ1RÑ1RÔ1RÑSÔSˆ
Ø—’Ð!<°´	Ð!<Ð!<Ð!<Ñ=Ô=ˆà×3Ò3°EÑ:Ô:ˆÝ˜ xÑ0Ô0ˆØ)ˆ~Ô)¨&¸¼È8ÐTÑTÔTÐTs   ˜. ®
A9¸<A4Á4A9r   rp   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   )rp   rØ   )r   rŸ  r‚   r  r  r  Úpandas.core.arrays.periodrp   rÚ   Úbroadcast_torš  r  rM   r—   )r‡   r¯   rp   Úi8valsr‚   Úparrs         rx   Ú_add_periodz"DatetimeLikeArrayMixin._add_period¾  s�   € åŒ˜tœz¨3Ñ/Ô/ð 	MÝÐKµd¸4±j´jÔ6IÐKÐKÑLÔLÐLð 	:Ð9Ð9Ð9Ð9Ð9å” ¤°´
Ñ;Ô;ˆÝ˜EœJÑ'Ô'ˆØˆ{˜6¨Ð/Ñ/Ô/ˆØ�d‰{Ðrz   c                ó    — t          | ¦  «        ‚rv   r¡   )r‡   Úoffsets     rx   Ú_add_offsetz"DatetimeLikeArrayMixin._add_offsetË  s   € Ý! $Ñ'Ô'Ð'rz   c                ó®  — t          |¦  «        r{t          j        | j        d¬¦  «                             | j        j        ¦  «        }|                     t          ¦  «         t          | ¦  «         
                    || j        ¬¦  «        S t          d| ¦  «        } t          |¦  «        }|                      |¦  «        \  } }|                      |¦  «        S )zk
        Add a delta of a timedeltalike

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

        Returns
        -------
        Same type as self
        r»  rW  )rÅ   rÙ   r   r­  rÓ  r±   s     rx   Ú_add_timedelta_arraylikez/DatetimeLikeArrayMixin._add_timedelta_arraylikeâ  si   € õ ˆt‰9Œ9�˜E™
œ
Ò"Ð"ÝÐCÑDÔDÐDåØ,¨dñ
ô 
ç
 Ò
  Ñ
'Ô
'ñ 	ˆˆeð ×&Ò& uÑ-Ô-Ð-rz   úTimedelta | TimedeltaArrayc                ó@  — |                       |¦  «        \  }}t          | j        t          j        |d¬¦  «        ¦  «        }|                     | j        j        ¦  «        }|                      |¦  «        }t          | ¦  «         
                    || j        |¬¦  «        S )Nr€   rØ   r¨  )rœ  r   rÆ   rÚ   r  rƒ   r•   r‚   r   r  r¬  )r‡   r¯   r®  r‰  rÔ  r¯  r°  s          rx   rÓ  z)DatetimeLikeArrayMixin._add_timedeltalikeô  s“   € à×7Ò7¸Ñ>Ô>Ñˆ�&Ý% d¤iµ´¸HÈDÐ1QÑ1QÔ1QÑRÔRˆ
Ø—_’_ T¤]Ô%8Ñ9Ô9ˆ
à×3Ò3°EÑ:Ô:ˆõ �D‰zŒz×%Ò%ØØ”*Øð &ñ 
ô 
ð 	
rz   c                óÂ  — t          | j        t          ¦  «        r>t          dt	          | ¦  «        j        › dt	          t          ¦  «        j        › �¦  «        ‚t          j        | j	        t          j
        ¬¦  «        }|                     t          ¦  «         |                     | j        j        ¦  «        }t	          | ¦  «                             || j        d¬¦  «        S )z$
        Add pd.NaT to self
        zCannot add r£  rØ   Nr¨  )r�   r‚   rM   r  r  r  r   rÚ   rÑ  r  r  rÒ  r!   rƒ   r•   r¬  ©r‡   r‹   s     rx   Ú_add_natzDatetimeLikeArrayMixin._add_nat  s¿   € õ
 �d”j¥+Ñ.Ô.ð 	ÝØL�d 4™jœjÔ1ÐLÐL½½S¹	¼	Ô8JÐLÐLñô ð õ ”˜$œ*­B¬HÐ5Ñ5Ô5ˆØ�Š•DÑÔÐØ—’˜Tœ]Ô0Ñ1Ô1ˆå�D‰zŒz×%Ò%ØØ”*Øð &ñ 
ô 
ð 	
rz   c                ó"  — t          j        | j        t           j        ¬¦  «        }|                     t
          ¦  «         | j        j        dv r.t          d| ¦  «        } | 	                    d| j
        › d�¦  «        S | 	                    d¦  «        S )z+
        Subtract pd.NaT from self
        rØ   r	  zDatetimeArray| TimedeltaArrayrÂ  r¦  ztimedelta64[ns])rÚ   rÑ  r  r  rÒ  r!   r‚   r  r   rƒ   rA  rÛ  s     rx   Ú_sub_natzDatetimeLikeArrayMixin._sub_nat  s€   € õ ”˜$œ*­B¬HÐ5Ñ5Ô5ˆØ�Š•DÑÔÐØŒ:Œ?˜dÐ"Ð"åÐ7¸Ñ>Ô>ˆDØ—;’;Ð:¨d¬iÐ:Ð:Ð:Ñ;Ô;Ð;à—;’;Ð0Ñ1Ô1Ð1rz   úPeriod | PeriodArrayc                óø  ‡ — t          ‰ j        t          ¦  «        s9t          dt	          |¦  «        j        › dt	          ‰ ¦  «        j        › �¦  «        ‚t          d‰ ¦  «        Š ‰                      |¦  «         ‰                      |¦  «        \  }}t          ‰ j
        t          j        | d¬¦  «        ¦  «        }t          j        ˆ fd„|D ¦   «         ¦  «        }|€‰ j        }n
‰ j        |z  }t          ||<   |S )Núcannot subtract ú from rp   r€   rØ   c                ó.   •— g | ]}‰j         j        |z  ‘ŒS rš   )r—   Úbase)r¾   r´   r‡   s     €rx   ú
<listcomp>z:DatetimeLikeArrayMixin._sub_periodlike.<locals>.<listcomp>;  s"   ø€ ÐEÐEÐE°A˜TœYœ^¨aÑ/ÐEÐEÐErz   )r�   r‚   rM   r  r  r  r   r²   rœ  r   rÆ   rÚ   r  r`   rZ  r   )r‡   r¯   r®  r‰  Únew_i8_dataÚnew_datar&  s   `      rx   Ú_sub_periodlikez&DatetimeLikeArrayMixin._sub_periodlike-  sý   ø€ õ ˜$œ*¥kÑ2Ô2ð 	ÝØT¥4¨¡;¤;Ô#7ÐTÐT½tÀD¹z¼zÔ?RÐTÐTñô ð õ �M 4Ñ(Ô(ˆØ×#Ò# EÑ*Ô*Ð*à×7Ò7¸Ñ>Ô>Ñˆ�&Ý& t¤yµ"´*¸h¸YÈdÐ2SÑ2SÔ2SÑTÔTˆÝ”8ÐEÐEÐEÐE¸ÐEÑEÔEÑFÔFˆàˆ>à”;ˆDˆDð ”; Ñ'ˆDÝˆ�‰Øˆrz   c                óæ  — |t           j        t           j        fv sJ ‚t          |¦  «        dk    r| j        dk    r || |d         ¦  «        S t          d¦  «        r>t          j        dt          | ¦  «        j	        › d�t          t          ¦   «         ¬¦  «         | j        |j        k    sJ | j        |j        f¦   «         ‚ ||                      d¦  «        t          j        |¦  «        ¦  «        }|S )aZ  
        Add or subtract array-like of DateOffset objects

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

        Returns
        -------
        np.ndarray[object]
            Except in fastpath case with length 1 where we operate on the
            contained scalar.
        r¼   r   Úperformance_warningsz)Adding/subtracting object-dtype array to z not vectorized.)Ú
stacklevelÚO)r‚  ÚaddÚsubrÅ   rÃ   r   ÚwarningsÚwarnr  r  r?   rA   r  r  rÚ   r  )r‡   r¯   rw   r¯  s       rx   Ú_addsub_object_arrayz+DatetimeLikeArrayMixin._addsub_object_arrayF  sú   € ð  •h”l¥H¤LÐ1Ð1Ð1Ð1Ð1Ýˆu‰:Œ:˜Š?ˆ?˜tœy¨Aš~˜~ð �2�d˜E !œHÑ%Ô%Ð%åÐ,Ñ-Ô-ð 	ÝŒMð9Ý˜‘:”:Ô&ð9ð 9ð 9å"Ý+Ñ-Ô-ð	ñ ô ð ð Œz˜Uœ[Ò(Ð(Ð(¨4¬:°u´{Ð*CÑ(Ô(Ð(à�R˜Ÿš CÑ(Ô(­"¬*°UÑ*;Ô*;Ñ<Ô<ˆ
ØÐrz   )ÚskipnaÚnamerò  c               ó  — |dvr"t          d|› dt          | ¦  «        › �¦  «        ‚t          t          |¦  «        } ||                      ¦   «         fd|i|¤Ž}t          | ¦  «                             || j        ¬¦  «        S )N>   ÚcummaxÚcumminzAccumulation z not supported for rò  rØ   )r  r  r-  rY   rž   r¬  r‚   )r‡   ró  rò  r‰   rw   r‹   s         rx   Ú_accumulatez"DatetimeLikeArrayMixin._accumulatek  sˆ   € ØÐ+Ð+Ð+ÝÐQ¨DÐQÐQÅTÈ$ÁZÄZÐQÐQÑRÔRÐRåÕ/°Ñ6Ô6ˆØ��D—I’I‘K”KÐ9Ð9¨Ð9°&Ð9Ð9ˆå�D‰zŒz×%Ò% f°D´JÐ%Ñ?Ô?Ð?rz   Ú__add__c                óø  — t          |dd ¦  «        }t          |¦  «        }|t          u r|                      ¦   «         }�nét	          |t
          t          t          j        f¦  «        r|  	                    |¦  «        }�n«t	          |t          ¦  «        rYt          j        | j        d¦  «        r?t          |j        ¬¦  «                             d¦  «        }|  	                    |¦  «        }�n=t	          |t"          ¦  «        r|                      |¦  «        }�nt	          |t&          t          j        f¦  «        r|                      |¦  «        }�nÙt	          |t,          ¦  «        r1t          j        | j        d¦  «        r|                      |¦  «        }�n“t          j        |¦  «        rht	          | j        t2          ¦  «        st5          | ¦  «        ‚t7          d| ¦  «        }|                     ||j        j        z  t<          j        ¦  «        }�nt          j        |d¦  «        r|                       |¦  «        }nìtC          |¦  «        r!|  "                    |t<          j        ¦  «        }n¼t          j        |d¦  «        st	          |tF          ¦  «        r|  $                    |¦  «        S tK          |¦  «        rgt	          | j        t2          ¦  «        st5          | ¦  «        ‚t7          d| ¦  «        }|                     ||j        j        z  t<          j        ¦  «        }ntL          S t	          |t          j'        ¦  «        r7t          j        |j        d¦  «        rdd	l(m)}  |j*        ||j        ¬
¦  «        S |S )Nr‚   ÚMm©ÚdaysÚsr  rp   r  r   r¿  rØ   )+r-  ra   r   rÜ  r�   r   r   rÚ   Útimedelta64rÕ  r   r   rŸ  r‚   r   r¿   rB  r   rÏ  r   Ú
datetime64r±  r   rÌ  Ú
is_integerrM   r+   r   Ú_addsub_int_array_or_scalarÚ_nr‚  rí  r×  rF   rñ  rK   r³  rD   r€  rD  r©  rq   r  ©r‡   r¯   Úother_dtyper‹   ÚtdÚobjrq   s          rx   rø  zDatetimeLikeArrayMixin.__add__t  s  € å˜e W¨dÑ3Ô3ˆÝ.¨uÑ5Ô5ˆð •Cˆ<ˆ<Ø:>¿-º-¹/¼/ˆF‰FÝ˜¥¥iµ´Ð@ÑAÔAð ,	"Ø×3Ò3°EÑ:Ô:ˆF‰FÝ˜�sÑ#Ô#ð *	"­¬¸¼
ÀDÑ(IÔ(Ið *	"å ¤Ð(Ñ(Ô(×0Ò0°Ñ5Ô5ˆBØ×3Ò3°BÑ7Ô7ˆF‰FÝ˜�zÑ*Ô*ð &	"à×%Ò% eÑ,Ô,ˆF‰FÝ˜¥­"¬-Ð8Ñ9Ô9ð #	"Ø×2Ò2°5Ñ9Ô9ˆF‰FÝ˜�vÑ&Ô&ð !	"­3¬?¸4¼:ÀsÑ+KÔ+Kð !	"Ø×%Ò% eÑ,Ô,ˆF‰FÝŒ^˜EÑ"Ô"ð 	"õ ˜dœj­+Ñ6Ô6ð 5Ý.¨tÑ4Ô4Ð4Ý�} dÑ+Ô+ˆCØ×4Ò4°U¸S¼Y¼\Ñ5IÍ8Ì<ÑXÔXˆF‰Fõ Œ_˜[¨#Ñ.Ô.ð 	"à×2Ò2°5Ñ9Ô9ˆFˆFÝ˜[Ñ)Ô)ð 	"à×.Ò.¨uµh´lÑCÔCˆFˆFÝŒ_˜[¨#Ñ.Ô.ð 	"µ*Ø�ñ3
ô 3
ð 	"ð ×/Ò/°Ñ6Ô6Ð6Ý˜kÑ*Ô*ð 	"Ý˜dœj­+Ñ6Ô6ð 5Ý.¨tÑ4Ô4Ð4Ý�} dÑ+Ô+ˆCØ×4Ò4°U¸S¼Y¼\Ñ5IÍ8Ì<ÑXÔXˆFˆFõ "Ð!å�f�bœjÑ)Ô)ð 	M­c¬o¸f¼lÈCÑ.PÔ.Pð 	MØ9Ð9Ð9Ð9Ð9Ð9à0�>Ô0°¸v¼|ÐLÑLÔLÐLØˆrz   c                ó,   — |                       |¦  «        S rv   )rø  r±   s     rx   Ú__radd__zDatetimeLikeArrayMixin.__radd__°  s   € à�|Š|˜EÑ"Ô"Ð"rz   Ú__sub__c                ó&  — t          |dd ¦  «        }t          |¦  «        }|t          u r|                      ¦   «         }�n t	          |t
          t          t          j        f¦  «        r|  	                    | ¦  «        }�nÁt	          |t          ¦  «        rZt          j        | j        d¦  «        r@t          |j        ¬¦  «                             d¦  «        }|  	                    | ¦  «        }�nRt	          |t"          ¦  «        r|                      | ¦  «        }�n%t	          |t&          t          j        f¦  «        r|                      |¦  «        }�nít          j        |¦  «        rht	          | j        t.          ¦  «        st1          | ¦  «        ‚t3          d| ¦  «        }|                     ||j        j        z  t8          j        ¦  «        }�nqt	          |t<          ¦  «        r|                      |¦  «        }�nEt          j        |d¦  «        r|                       | ¦  «        }�ntC          |¦  «        r!|  "                    |t8          j        ¦  «        }nèt          j        |d¦  «        st	          |tF          ¦  «        r|  $                    |¦  «        }n¨t	          |t.          ¦  «        r|                      |¦  «        }n}tK          |¦  «        rgt	          | j        t.          ¦  «        st1          | ¦  «        ‚t3          d| ¦  «        }|                     ||j        j        z  t8          j        ¦  «        }ntL          S t	          |t          j'        ¦  «        r7t          j        |j        d¦  «        rdd	l(m)}  |j*        ||j        ¬
¦  «        S |S )Nr‚   rú  rû  rý  rp   r  r  r   r¿  rØ   )+r-  ra   r   rÞ  r�   r   r   rÚ   rþ  rÕ  r   r   rŸ  r‚   r   r¿   rB  r   rÏ  r   rÿ  r¹  r   rM   r+   r   r  r  r‚  rî  r   rè  r×  rF   rñ  rK   r¼  rD   r€  rD  r©  rq   r  r  s          rx   r	  zDatetimeLikeArrayMixin.__sub__´  s4  € å˜e W¨dÑ3Ô3ˆÝ.¨uÑ5Ô5ˆð •Cˆ<ˆ<Ø:>¿-º-¹/¼/ˆF‰FÝ˜¥¥iµ´Ð@ÑAÔAð ,	"Ø×3Ò3°U°FÑ;Ô;ˆF‰FÝ˜�sÑ#Ô#ð *	"­¬¸¼
ÀDÑ(IÔ(Ið *	"å ¤Ð(Ñ(Ô(×0Ò0°Ñ5Ô5ˆBØ×3Ò3°R°CÑ8Ô8ˆF‰FÝ˜�zÑ*Ô*ð &	"à×%Ò% u fÑ-Ô-ˆF‰FÝ˜¥­"¬-Ð8Ñ9Ô9ð #	"Ø×2Ò2°5Ñ9Ô9ˆF‰FÝŒ^˜EÑ"Ô"ð !	"õ ˜dœj­+Ñ6Ô6ð 5Ý.¨tÑ4Ô4Ð4Ý�} dÑ+Ô+ˆCØ×4Ò4°U¸S¼Y¼\Ñ5IÍ8Ì<ÑXÔXˆF‰Få˜�vÑ&Ô&ð 	"Ø×)Ò)¨%Ñ0Ô0ˆF‰Fõ Œ_˜[¨#Ñ.Ô.ð 	"à×2Ò2°E°6Ñ:Ô:ˆF‰FÝ˜[Ñ)Ô)ð 	"à×.Ò.¨uµh´lÑCÔCˆFˆFÝŒ_˜[¨#Ñ.Ô.ð 	"µ*Ø�ñ3
ô 3
ð 	"ð ×1Ò1°%Ñ8Ô8ˆFˆFÝ˜¥[Ñ1Ô1ð 
	"à×)Ò)¨%Ñ0Ô0ˆFˆFÝ˜kÑ*Ô*ð 	"Ý˜dœj­+Ñ6Ô6ð 5Ý.¨tÑ4Ô4Ð4Ý�} dÑ+Ô+ˆCØ×4Ò4°U¸S¼Y¼\Ñ5IÍ8Ì<ÑXÔXˆFˆFõ "Ð!å�f�bœjÑ)Ô)ð 	M­c¬o¸f¼lÈCÑ.PÔ.Pð 	MØ9Ð9Ð9Ð9Ð9Ð9à0�>Ô0°¸v¼|ÐLÑLÔLÐLØˆrz   c           	     óê  — t          |dd ¦  «        }t          j        |d¦  «        pt          |t          ¦  «        }|rwt          j        | j        d¦  «        r]t          j        |¦  «        rt          |¦  «        | z
  S t          |t          ¦  «        sddl	m
}  |j        ||j        ¬¦  «        }|| z
  S | j        j        dk    rTt          |d¦  «        rD|sBt          dt          | ¦  «        j        › dt          |¦  «        j        › d	|j        › d
�¦  «        ‚t          | j        t"          ¦  «        rAt          j        |d¦  «        r,t          dt          | ¦  «        j        › d|j        › �¦  «        ‚t          j        | j        d¦  «        rt%          d| ¦  «        } |  |z   S | |z
  }|j        j        dk    r9t          dt          | ¦  «        j        › dt          |¦  «        j        › �¦  «        ‚| S )Nr‚   r  r  r   r¤  rØ   rá  râ  ú[r¦  rq   )r-  r   rŸ  r�   rK   r‚   rë   r   r�   r©  ro   r  r  r7  r  r  r  rM   r   )r‡   r¯   r  Úother_is_dt64ro   Úflippeds         rx   Ú__rsub__zDatetimeLikeArrayMixin.__rsub__ð  s#  € Ý˜e W¨dÑ3Ô3ˆÝœ¨°SÑ9Ô9ð 
½ZØ�ñ>
ô >
ˆð ð 	#�Sœ_¨T¬Z¸Ñ=Ô=ð 	#õ Œ}˜UÑ#Ô#ð /å  Ñ'Ô'¨$Ñ.Ð.Ý˜eÕ%;Ñ<Ô<ð Oà<Ð<Ð<Ð<Ð<Ð<à4˜Ô4°UÀ%Ä+ÐNÑNÔN�Ø˜4‘<ÐØŒZŒ_ Ò#Ð#­°°wÑ(?Ô(?Ð#ÈÐ#õ ð9¥4¨¡:¤:Ô#6ð 9ð 9Ý˜‘;”;Ô'ð9ð 9Ø*/¬+ð9ð 9ð 9ñô ð õ ˜œ
¥KÑ0Ô0ð 	#µS´_À[ÐRUÑ5VÔ5Vð 	#åÐW­t°D©z¬zÔ/BÐWÐWÈ%Ì+ÐWÐWÑXÔXÐXÝŒ_˜TœZ¨Ñ-Ô-ð 	#ÝÐ(¨$Ñ/Ô/ˆDØ�E˜U‘?Ð"à˜‘,ˆØŒ=Ô Ò$Ð$åØT¥4¨¡:¤:Ô#6ÐTÐT½dÀ5¹k¼kÔ>RÐTÐTñô ð ð ˆxˆrz   c                óz   — | |z   }|d d …         | d d …<   t          | j        t          ¦  «        s|j        | _        | S rv   ©r�   r‚   rM   r—   rí   ©r‡   r¯   r‹   s      rx   Ú__iadd__zDatetimeLikeArrayMixin.__iadd__  óB   € Ø˜‘ˆØ˜˜˜”)ˆˆQˆQˆQ‰å˜$œ*¥kÑ2Ô2ð 	%àœˆDŒJØˆrz   c                óz   — | |z
  }|d d …         | d d …<   t          | j        t          ¦  «        s|j        | _        | S rv   r  r  s      rx   Ú__isub__zDatetimeLikeArrayMixin.__isub__"  r  rz   Úqsúnpt.NDArray[np.float64]Úinterpolationc                óJ   •— t          ¦   «                              ||¬¦  «        S )N)r  r  )rê   Ú	_quantile)r‡   r  r  rî   s      €rx   r  z DatetimeLikeArrayMixin._quantile.  s"   ø€ õ ‰wŒw× Ò  B°mÐ ÑDÔDÐDrz   ©Úaxisrò  r  úAxisInt | Nonec               óÄ   — t          j        d|¦  «         t          j        || j        ¦  «         t	          j        | j        ||¬¦  «        }|                      ||¦  «        S )a  
        Return the minimum value of the Array or minimum along
        an axis.

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

        See Also
        --------
        numpy.ndarray.max
        Index.max : Return the maximum value in an Index.
        Series.max : Return the maximum value in a Series.
        rš   r  )r   Úvalidate_maxr"  rÃ   rT   Únanmaxr•   r$  r%  s        rx   ÚmaxzDatetimeLikeArrayMixin.maxH  r'  rz   r   )rò  r  c               ó
  — t          | j        t          ¦  «        r%t          dt	          | ¦  «        j        › d�¦  «        ‚t          j        | j        |||  	                    ¦   «         ¬¦  «        }|  
                    ||¦  «        S )a  
        Return the mean value of the Array.

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

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

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

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

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

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

        For :class:`pandas.TimedeltaIndex`:

        >>> tdelta_idx = pd.to_timedelta([1, 2, 3], unit="D")
        >>> tdelta_idx
        TimedeltaIndex(['1 days', '2 days', '3 days'],
                        dtype='timedelta64[s]', freq=None)
        >>> tdelta_idx.mean()
        Timedelta('2 days 00:00:00')
        zmean is not implemented for zX since the meaning is ambiguous.  An alternative is obj.to_timestamp(how='start').mean()©r  rò  r&  )r�   r‚   rM   r  r  r  rT   Únanmeanr•   rQ   r$  )r‡   rò  r  r‹   s       rx   ÚmeanzDatetimeLikeArrayMixin.meanZ  s�   € õZ �d”j¥+Ñ.Ô.ð 	åð7­t°D©z¬zÔ/Bð 7ð 7ð 7ñô ð õ ”ØŒM ¨V¸$¿)º)¹+¼+ð
ñ 
ô 
ˆð ×*Ò*¨4°Ñ8Ô8Ð8rz   c               óâ   — t          j        d|¦  «         |�'t          |¦  «        | j        k    rt	          d¦  «        ‚t          j        | j        ||¬¦  «        }|                      ||¦  «        S )Nrš   z abs(axis) must be less than ndimr  )	r   Úvalidate_medianÚabsrÃ   rÙ   rT   Ú	nanmedianr•   r$  r%  s        rx   ÚmedianzDatetimeLikeArrayMixin.median”  sk   € å
Ô˜2˜vÑ&Ô&Ð&àÐ¥ D¡	¤	¨T¬YÒ 6Ð 6ÝÐ?Ñ@Ô@Ð@åÔ! $¤-°dÀ6ÐJÑJÔJˆØ×*Ò*¨4°Ñ8Ô8Ð8rz   Údropnac                ó&  — d }|r|                       ¦   «         }t          j        |                      d¦  «        |¬¦  «        \  }}|                     | j        j        ¦  «        }t          t          j        |¦  «        }|  	                    |¦  «        S )Nr€   )r&  )
rQ   rR   Úmoderƒ   r•   r‚   r   rÚ   rD  r†   )r‡   r5  r&  Úi8modesÚ_Únpmodess         rx   Ú_modezDatetimeLikeArrayMixin._modež  sy   € ØˆØð 	Ø—9’9‘;”;ˆDå”_ T§Y¢Y¨t¡_¤_¸4Ð@Ñ@Ô@‰
ˆ�Ø—,’,˜tœ}Ô2Ñ3Ô3ˆÝ•r”z 7Ñ+Ô+ˆØ×&Ò& wÑ/Ô/Ð/rz   ÚhowÚhas_dropped_naÚ	min_countÚintÚngroupsÚidsúnpt.NDArray[np.intp]c               óˆ  — | j         }|j        dk    r2|dv rt          d|› d�¦  «        ‚|dv rt          d|› d|› d�¦  «        ‚n^t          |t          ¦  «        r2|dv rt          d|› d	�¦  «        ‚|dv rt          d|› d
|› d�¦  «        ‚n|dv rt          d|› d	�¦  «        ‚| j                             d¦  «        }ddlm}	 |	 	                    |¦  «        }
 |	||
|¬¦  «        } |j
        |f|||d dœ|¤Ž}|j        |j        v r|S |j         dk    sJ ‚|dv rvddlm} t          | j         t          ¦  «        rt          d¦  «        ‚t          d| ¦  «        } d| j        › d�}|                     |¦  «        } |j        ||j         ¬¦  «        S |                     | j        j         ¦  «        }|                      |¦  «        S )Nr  )ÚsumÚprodÚcumsumÚcumprodÚvarÚskewÚkurtz,datetime64 type does not support operation 'r6  )r]  ÚallzN' with datetime64 dtypes is no longer supported. Use (obj != pd.Timestamp(0)).z() instead.zPeriod type does not support z operationszK' with PeriodDtype is no longer supported. Use (obj != pd.Period(0, freq)).)rE  rG  rI  rJ  rH  z"timedelta64 type does not support r   r   )ÚWrappedCythonOp)r<  r  r=  )r>  r@  Úcomp_idsr&  )ÚstdÚsemr¿  z-'std' and 'sem' are not valid for PeriodDtyperW  zm8[r¦  rØ   )r‚   r  r  r�   rM   r•   rƒ   Úpandas.core.groupby.opsrL  Úget_kind_from_howÚ_cython_op_ndim_compatr<  Úcast_blocklistr©  rq   r   rA  r¬  r†   )r‡   r<  r=  r>  r@  rA  r‰   r‚   ÚnpvaluesrL  r  rw   r¯  rq   Ú	new_dtypes                  rx   Ú_groupby_opz"DatetimeLikeArrayMixin._groupby_op«  s©  € ð ”
ˆØŒ:˜ÒÐàÐQÐQÐQÝÐ UÈsÐ UÐ UÐ UÑVÔVÐVØ�nÐ$Ð$åðE˜ð Eð EØ47ðEð Eð Eñô ð ð %õ ˜�{Ñ+Ô+ð 	SàÐQÐQÐQÝÐ PÀÐ PÐ PÐ PÑQÔQÐQØ�nÐ$Ð$åðH˜ð Hð HØ7:ðHð Hð Hñô ð ð %ð Ð>Ð>Ð>ÝÐQÀÐQÐQÐQÑRÔRÐRð ”=×%Ò% hÑ/Ô/ˆà;Ð;Ð;Ð;Ð;Ð;à×0Ò0°Ñ5Ô5ˆØˆ_ ¨4ÀÐOÑOÔOˆà.�RÔ.Øð
àØØØð
ð 
ð ð
ð 
ˆ
ð Œ6�RÔ&Ð&Ð&ð Ðð Ô 8Ò+Ð+Ð+Ð+Ø�.Ð Ð Ø9Ð9Ð9Ð9Ð9Ð9å˜$œ*¥kÑ2Ô2ð QÝÐ OÑPÔPÐPÝÐ8¸$Ñ?Ô?ˆDØ*˜dœiÐ*Ð*Ð*ˆIØ#Ÿš¨Ñ3Ô3ˆJØ-�>Ô-¨jÀ
Ô@PÐQÑQÔQÐQà—_’_ T¤]Ô%8Ñ9Ô9ˆ
Ø×&Ò& zÑ2Ô2Ð2rz   ©r|   r˜   )NNF)r‚   r�   rž   r˜   r|   rŸ   )r|   r¤   )r§   rt   r|   rr   )r§   rr   r|   r¬   )r¯   rr   r|   rŸ   ©r|   r”   )r|   rj   )r|   rÈ   )rÊ   rÌ   r|   rÍ   )F)rÐ   r˜   r|   rÑ   )NN)r‚   rÕ   rž   rÖ   r|   r”   )rá   r6   r|   rr   )rá   ræ   r|   r
   )rá   r4   r|   rè   )r|   r–   )rá   rù   r§   rú   r|   rŸ   ©r|   rŸ   ©T)rž   r˜   ©r|   r
   )r‚   r  r|   ro   )r‚   r"  r|   rq   ).)r‚   r�   r|   r,   rv   )r&  r'  r|   rŸ   )r0  r˜   r1  r˜   )r0  r˜   r|   rt   )r+  r˜   )r|   rL  )rN  rO  )r¹   r,   r|   r'  )r|   r'  )r‹   r”   r|   r”   )r|   rd  )r|   rj  )r|   rt   )r|   r˜  )r|   ro   )r¯   ro   r|   ro   )r¯   r´  r|   rq   )r¯   ro   r|   rq   )r¯   r½  r|   rq   )r¯   r   r|   rp   )r¯   rq   r|   r
   )r¯   rØ  r|   r
   )r¯   rß  r|   rÍ   )r¯   rÍ   r|   r”   )ró  rt   rò  r˜   r|   r
   )r  r  r  rt   r|   r
   )r  r  rò  r˜   )rò  r˜   r  r  )r5  r˜   )
r<  rt   r=  r˜   r>  r?  r@  r?  rA  rB  )ar  Ú
__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/  r4  r3  r,  rK  r   rJ  r\   rT  rV   rQ   rZ  r^  r!   rc  rf  ri  rn  rq  rw  rz  r~  r‹  ry   rŒ  r�  rŽ  r�  r�  r‘  r’  r“  r”  r•  r–  r—  rœ  r   r±  r³  r¹  r¼  r·  rÌ  rÏ  rÕ  r×  rÓ  rÜ  rÞ  rè  rñ  r÷  re   rø  r  r	  r  r  r  rŽ   r  r&  r+  r/  r4  r;  rV  Ú__classcell__©rî   s   @rx   r�   r�   È   sÓ	  ø€ € € € € € ðð ð $Ð#Ð#Ñ#Ø4Ð4Ð4Ñ4Ø)Ð)Ð)Ñ)ØÐÐÑØÐÐÑàðð ð ñ „^ðð INð(ð (ð (ð (ð (ð
 ð(ð (ð (ñ „Xð(ð(ð (ð (ð (ð((ð (ð (ð (ð.(ð (ð (ð (ð,(ð (ð (ðDð Dð Dð Dð:ð :ð :ð :ð ð
(ð 
(ð 
(ñ „Xð
(ð  (-¸$ð
(ð 
(ð 
(ð 
(ð 
(ð 
(ðð ð ð ð ð AEðð ð ð ð ð( ØCÐCÐCñ „XØCàðð ð ñ „Xðð
ð ð ð ð ð ð&ð ð ð ð<!ð !ð !ð !ð !ð !ð,ð ð ð ð
71ð 71ð 71ð 71ð 71ð 71ð 71ðr ØÐÐñ „XØàØBÐBÐBñ „XØBàØCÐCÐCñ „XØCàØ?Ð?Ð?Ð?ñ „XØ?ð#ð #ð #ð #ð #ð #ð #ð
ð ð ð ð ð ð"ð "ð "ðP  %Øð;)ð ;)ð ;)ð ;)ð ;)ð ;)ðzð ð ð ð ð>@ð @ð @ð @ð @ðD"ð "ð "ð ð
ð 
ð 
ñ „Uð
ð" ð	 ð 	 ð 	 ð 	 ñ „\ð	 ð2,ð 2,ð 2,ð 2,ðnð ð ð ð ð!ð !ð !ñ „Xð!ð ð'ð 'ð 'ñ „Xð'ð .2¸4ðð ð ð ð ð< ð!!ð !!ð !!ñ „Xð!!ðF ð!ð !ð !ñ „Xð!ðF ðð ð ñ „Xðð ð-ð -ð -ñ „Xð-ð ð?ð ?ð ?ñ „Xð?ð ð?ð ?ð ?ñ „Xð?ð ð@ð @ð @ñ „Xð@ð7ð 7ð 7ðv (Ð'¨	Ñ2Ô2€GØ(Ð(¨Ñ4Ô4€HØ'Ð'¨	Ñ2Ô2€GØ(Ð(¨Ñ4Ô4€HØ+Ð+¨MÑ:Ô:€KØ,Ð,¨^Ñ<Ô<€LØ,Ð,¨^Ñ<Ô<€LØ-Ð-¨oÑ>Ô>€MØ'Ð'¨	Ñ2Ô2€GØ(Ð(¨Ñ4Ô4€HØ*Ð*¨<Ñ8Ô8€JØ+Ð+¨MÑ:Ô:€Kà
ðð ð ñ „Uðð$ ð'ð 'ð 'ñ „Uð'ðR ðQð Qð Qñ „UðQðB ðð ð ñ „Uðð ð*ð *ð *ñ „Uð*ð$ ð
-ð 
-ð 
-ñ „Uð
-ð ðUð Uð Uñ „UðUð& ð
ð 
ð 
ñ „Uð
ð(ð (ð (ð.ð .ð .ð(.ð .ð .ð .ð$ ð
ð 
ð 
ñ „Uð
ð ð
ð 
ð 
ñ „Uð
ð* ð2ð 2ð 2ñ „Uð2ð& ðð ð ñ „Uðð0 ð"ð "ð "ñ „Uð"ðH 8<ð @ð @ð @ð @ð @ð @ð Ð˜iÑ(Ô(ð9ð 9ñ )Ô(ð9ðv#ð #ð #ð Ð˜iÑ(Ô(ð9ð 9ñ )Ô(ð9ðv'ð 'ð 'ðRð ð ð ðð ð ð ð ðEð Eð Eð Eð Eñ ÔðEð Ø,0Àð 9ð 9ð 9ð 9ð 9ñ Ôð9ð" Ø,0Àð 9ð 9ð 9ð 9ð 9ñ Ôð9ð" &*À!ð 89ð 89ð 89ð 89ð 89ð 89ðt Ø/3ÀDð 9ð 9ð 9ð 9ð 9ñ Ôð9ð0ð 0ð 0ð 0ð 0ðH3ð H3ð H3ð H3ð H3ð H3ð H3ð H3rz   r�   c                  ó   — e Zd ZdZdd„ZdS )	ÚDatelikeOpszK
    Common ops for DatetimeIndex/PeriodIndex, but not TimedeltaIndex.
    rË   rt   r|   rÍ   c                óî   — |                       |t          j        ¬¦  «        }t          ¦   «         r+ddlm} t          | |t          j        ¬¦  «        ¬¦  «        S |                     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 <https://docs.python.org/3/library/datetime.html
        #strftime-and-strptime-behavior>`__.

        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='str')
        )rË   rÊ   r   )ÚStringDtype©r  rØ   Fr  )	rÏ   rÚ   r`  r   rQ  rf  rF  r  rÜ   )r‡   rË   r‹   rf  s       rx   ÚstrftimezDatelikeOps.strftimeû  sx   € ðZ ×*Ò*°{Í2Ì6Ð*ÑRÔRˆÝÑÔð 	HØ*Ð*Ð*Ð*Ð*Ð*å˜F¨+¨+½r¼vÐ*FÑ*FÔ*FÐGÑGÔGÐGØ�}Š}�V¨%ˆ}Ñ0Ô0Ð0rz   N)rË   rt   r|   rÍ   )r  r\  r]  r^  rh  rš   rz   rx   rd  rd  ö  s2   € € € € € ðð ð21ð 21ð 21ð 21ð 21ð 21rz   rd  c                  óì  ‡ — e Zd ZdZed„ ¦   «         Zed„ ¦   «         Zej        dMd„¦   «         Ze	dNd	„¦   «         Z
e	edOd„¦   «         ¦   «         ZedPd„¦   «         ZedQd„¦   «         ZedRd„¦   «         ZdSdTd„Zd„ ZdUˆ fd„Zd „ Z	 	 dVdWd&„Z	 	 dVdWd'„Z	 	 dVdWd(„Zd)dd*œdXd.„Zd)dd*œdXd/„ZdMd0„ZdYd1„ZdZˆ fd3„Z	 	 d[d\ˆ fd7„Ze	 d]d^ˆ fd<„¦   «         Zd_d`ˆ fd?„ZdadD„Zd4d)d8dEœdbˆ fdK„Z edcdL„¦   «         Z!ˆ xZ"S )dr…  zK
    Common ops for TimedeltaIndex/DatetimeIndex, but not PeriodIndex.
    c                ó    — t          | ¦  «        ‚rv   r¡   )r  r¹   r‚   s      rx   Ú_validate_dtypezTimelikeOps._validate_dtype5  s   € å! #Ñ&Ô&Ð&rz   c                ó   — | j         S )ac  
        Return the frequency object if it is set, otherwise None.

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

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

        Examples
        --------
        >>> datetimeindex = pd.date_range(
        ...     "2022-02-22 02:22:22", periods=10, tz="America/Chicago", freq="h"
        ... )
        >>> datetimeindex
        DatetimeIndex(['2022-02-22 02:22:22-06:00', '2022-02-22 03:22:22-06:00',
                       '2022-02-22 04:22:22-06:00', '2022-02-22 05:22:22-06:00',
                       '2022-02-22 06:22:22-06:00', '2022-02-22 07:22:22-06:00',
                       '2022-02-22 08:22:22-06:00', '2022-02-22 09:22:22-06:00',
                       '2022-02-22 10:22:22-06:00', '2022-02-22 11:22:22-06:00'],
                      dtype='datetime64[us, America/Chicago]', freq='h')
        >>> datetimeindex.freq
        <Hour>
        ©rí   r›   s    rx   r—   zTimelikeOps.freq9  s   € ð8 ŒzÐrz   r|   rŸ   c                ó  — |�zt          |¦  «        }|                      | |¦  «         | j        j        dk    r+t	          |t
          t          f¦  «        st          d¦  «        ‚| j        dk    rt          d¦  «        ‚|| _
        d S )Nr  ú(TimedeltaArray/Index freq must be a Tickr¼   zCannot set freq with ndim > 1)r&   Ú_validate_frequencyr‚   r  r�   r   r   r  rÃ   rÙ   rí   r©   s     rx   r—   zTimelikeOps.freqW  s�   € àÐÝ˜eÑ$Ô$ˆEØ×$Ò$ T¨5Ñ1Ô1Ð1ØŒzŒ #Ò%Ð%­j¸ÅÅsÀÑ.LÔ.LÐ%ÝÐ JÑKÔKÐKàŒy˜1Š}ˆ}Ý Ð!@ÑAÔAÐAàˆŒ
ˆ
ˆ
rz   Úvalidate_kwdsÚdictc                óN  — |€	d| _         dS |dk    r$| j         €t          | j        ¦  «        | _         dS dS |t          j        u rdS | j         €4t          |¦  «        } t          | ¦  «        j        | |fi |¤Ž || _         dS t          |¦  «        }t          || j         ¦  «         dS )zº
        Constructor helper to pin the appropriate `freq` attribute.  Assumes
        that self._freq is currently set to any freq inferred in
        _from_sequence_not_strict.
        NÚinfer)rí   r&   ri  r   Ú
no_defaultr  rp  Ú_validate_inferred_freq)r‡   r—   rq  s      rx   Ú_maybe_pin_freqzTimelikeOps._maybe_pin_freqd  sÅ   € ð ˆ<àˆDŒJˆJˆJØ�WŠ_ˆ_ð ŒzÐ!õ ' tÔ'9Ñ:Ô:�”
�
�
ð "Ð!ð •S”^Ð#Ð#ð ˆDØŒZÐõ ˜T‘?”?ˆDØ*�D�‰JŒJÔ*¨4°ÐGÐG¸ÐGÐGÐGØˆDŒJˆJˆJõ ˜T‘?”?ˆDÝ# D¨$¬*Ñ5Ô5Ð5Ð5Ð5rz   r—   r   c           	     óh  — |j         }|j        dk    s||j        k    rdS 	  | j        d|d         dt	          |¦  «        ||j        dœ|¤Ž}t          j        |j        |j        ¦  «        st          ‚dS # t          $ r3}dt          |¦  «        v r|‚t          d|› d|j        › �¦  «        |‚d}~ww xY w)am  
        Validate that a frequency is compatible with the values of a given
        Datetime Array/Index or Timedelta Array/Index

        Parameters
        ----------
        index : DatetimeIndex or TimedeltaIndex
            The index on which to determine if the given frequency is valid
        freq : DateOffset
            The frequency to validate
        r   N)ÚstartÚendÚperiodsr—   rA  z	non-fixedúInferred frequency ú9 from passed values does not conform to passed frequency rš   )ri  r}  rf  Ú_generate_rangerÅ   rA  rÚ   Úarray_equalrÆ   rÙ   rt   )r  Úindexr—   r‰   ÚinferredÚon_freqr.  s          rx   rp  zTimelikeOps._validate_frequency…  s  € ð Ô&ˆØŒ:˜Š?ˆ?˜h¨$¬,Ò6Ð6Ø�4ð	Ø)�cÔ)ð Ø˜A”hØÝ˜E™
œ
ØØ”Zðð ð ðð ˆGõ ”> %¤*¨g¬lÑ;Ô;ð !Ý Ð ð!ð !øåð 	ð 	ð 	Ø�c #™hœhÐ&Ð&ð �	õ ðG hð Gð GØ8<¼ðGð Gñô ð ðøøøøð	øøøs   ¡AA4 Á4
B1Á>.B,Â,B1r{  ú
int | Noner
   c                ó    — t          | ¦  «        ‚rv   r¡   )r  ry  rz  r{  r—   rˆ   r‰   s          rx   r~  zTimelikeOps._generate_range±  s   € õ " #Ñ&Ô&Ð&rz   r?  c                ó4   — t          | j        j        ¦  «        S rv   )r    r•   r‚   r›   s    rx   r  zTimelikeOps._creso¹  s   € å" 4¤=Ô#6Ñ7Ô7Ð7rz   rl   c                ó*   — t          | j        ¦  «        S )a4  
        The precision unit of the datetime data.

        Returns the precision unit for the dtype.
        It means the smallest time frame that can be stored within this dtype.

        Returns
        -------
        str
            Unit string representation (e.g. "ns").

        See Also
        --------
        TimelikeOps.as_unit : Converts to a specific unit.

        Examples
        --------
        >>> idx = pd.DatetimeIndex(["2020-01-02 01:02:03.004005006"])
        >>> idx.unit
        'ns'
        >>> idx.as_unit("s").unit
        's'
        )Údtype_to_unitr‚   r›   s    rx   rA  zTimelikeOps.unit½  s   € õ6 ˜TœZÑ(Ô(Ð(rz   TrA  r;  r˜   c                óŒ  — |dvrt          d¦  «        ‚t          j        | j        j        › d|› d�¦  «        }t	          | j        ||¬¦  «        }t          | j        t          j        ¦  «        r|j        }n&t          d| ¦  «        j        }t          ||¬¦  «        }t          | ¦  «                             ||| j        ¬¦  «        S )	aZ  
        Convert to a dtype with the given unit resolution.

        The limits of timestamp representation depend on the chosen resolution.
        Different resolutions can be converted to each other through as_unit.

        Parameters
        ----------
        unit : {'s', 'ms', 'us', 'ns'}
        round_ok : bool, default True
            If False and the conversion requires rounding, raise ValueError.

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

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

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

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

        For :class:`pandas.TimedeltaIndex`:

        >>> tdelta_idx = pd.to_timedelta(["1 day 3 min 2 us 42 ns"])
        >>> tdelta_idx
        TimedeltaIndex(['1 days 00:03:00.000002042'],
                        dtype='timedelta64[ns]', freq=None)
        >>> tdelta_idx.as_unit("s")
        TimedeltaIndex(['1 days 00:03:00'], dtype='timedelta64[s]', freq=None)
        )rý  ÚmsÚusÚnsz)Supported units are 's', 'ms', 'us', 'ns'z8[r¦  r:  ro   r§  r¨  )rÙ   rÚ   r‚   r  r   r•   r�   r   r  rK   r  r¬  r—   )r‡   rA  r;  r‚   rÔ  rU  r  s          rx   rB  zTimelikeOps.as_unitÚ  sÎ   € ðT Ð.Ð.Ð.ÝÐHÑIÔIÐIå”˜DœJœOÐ6Ð6¨tÐ6Ð6Ð6Ñ7Ô7ˆÝ(¨¬¸ÈÐQÑQÔQˆ
å�d”j¥"¤(Ñ+Ô+ð 	:Ø"Ô(ˆIˆIå�o tÑ,Ô,Ô/ˆBÝ'¨2°DÐ9Ñ9Ô9ˆIõ �D‰zŒz×%Ò%ØØØ”ð &ñ 
ô 
ð 	
rz   c                ó´   — | j         |j         k    rE| j         |j         k     r|                      |j        ¦  «        } n|                     | j        ¦  «        }| |fS rv   )r  rB  rA  r±   s     rx   r­  z"TimelikeOps._ensure_matching_resos  sR   € ØŒ;˜%œ,Ò&Ð&àŒ{˜Uœ\Ò)Ð)Ø—|’| E¤JÑ/Ô/��àŸš d¤iÑ0Ô0�Ø�Uˆ{Ðrz   Úufuncúnp.ufuncÚmethodrt   c                óü   •— |t           j        t           j        t           j        fv r9t	          |¦  «        dk    r&|d         | u r t          ||¦  «        | j        fi |¤ŽS  t          ¦   «         j        ||g|¢R i |¤ŽS )Nr¼   r   )	rÚ   ÚisnanÚisinfÚisfiniterÅ   r-  r•   rê   Ú__array_ufunc__)r‡   r�  r�  Úinputsr‰   rî   s        €rx   r”  zTimelikeOps.__array_ufunc__%  sŠ   ø€ à•b”h¥¤­"¬+Ð6Ð6Ð6Ý�F‘”˜qÒ Ð Ø�q”	˜TÐ!Ð!ð *•7˜5 &Ñ)Ô)¨$¬-ÐBÐB¸6ÐBÐBÐBà&�u‰wŒwÔ& u¨fÐH°vÐHÐHÐHÀÐHÐHÐHrz   c                óv  — t          | j        t          ¦  «        rZt          d| ¦  «        } |                      d ¦  «        }|                     ||||¦  «        }|                     | j        ||¬¦  «        S |                      d¦  «        }t          t          j	        |¦  «        }t          || j        ¦  «        }|dk    r|                      ¦   «         S t          |||¦  «        }	|                      |	t          ¬¦  «        }|                     | j        j        ¦  «        }|                      || j        ¬¦  «        S )Nro   )Ú	ambiguousÚnonexistentr€   r   ©rb  rØ   )r�   r‚   rK   r   Útz_localizeÚ_roundr  rƒ   rÚ   rD  r*   r  rž   r(   rc  r!   r•   r¬  )
r‡   r—   r7  r—  r˜  Únaiver‹   r¹   ÚnanosÚ	result_i8s
             rx   r›  zTimelikeOps._round0  s  € å�d”j¥/Ñ2Ô2ð 	å˜¨Ñ.Ô.ˆDØ×$Ò$ TÑ*Ô*ˆEØ—\’\ $¨¨i¸ÑEÔEˆFØ×%Ò%Ø” 9¸+ð &ñ ô ð ð —’˜4‘”ˆÝ•b”j &Ñ)Ô)ˆÝ" 4¨¬Ñ5Ô5ˆØ�AŠ:ˆ:à—9’9‘;”;ÐÝ! &¨$°Ñ6Ô6ˆ	Ø×)Ò)¨)ÅÐ)ÑEÔEˆØ—’˜Tœ]Ô0Ñ1Ô1ˆØ×Ò ¨d¬jÐÑ9Ô9Ð9rz   Úraiser—  r9   r˜  r:   c                óF   — |                       |t          j        ||¦  «        S )aÞ  
        Perform round operation on the data to the specified `freq`.

        Parameters
        ----------
        freq : str or Offset
            The frequency level to round 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 a ValueError 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 a ValueError 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.

        See Also
        --------
        DatetimeIndex.floor :
            Perform floor operation on the data to the specified `freq`.
        DatetimeIndex.snap :
            Snap time stamps to nearest occurring frequency.

        Notes
        -----
        If the timestamps have a timezone, rounding will take place relative to the
        local ("wall") time and re-localized to the same timezone. When rounding
        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[us]', freq='min')

        >>> rng.round('h')
        DatetimeIndex(['2018-01-01 12:00:00', '2018-01-01 12:00:00',
                       '2018-01-01 12:00:00'],
                      dtype='datetime64[us]', 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[us]

        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[us, Europe/Amsterdam]', freq=None)

        >>> rng_tz.floor("2h", ambiguous=True)
        DatetimeIndex(['2021-10-31 02:00:00+02:00'],
                      dtype='datetime64[us, Europe/Amsterdam]', freq=None)
        )r›  r'   ÚNEAREST_HALF_EVEN©r‡   r—   r—  r˜  s       rx   ÚroundzTimelikeOps.roundF  s    € ðL �{Š{˜4¥Ô!:¸IÀ{ÑSÔSÐSrz   c                óF   — |                       |t          j        ||¦  «        S )aÝ  
        Perform floor operation on the data to the specified `freq`.

        Parameters
        ----------
        freq : str or Offset
            The frequency level to floor 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 a ValueError 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 a ValueError 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.

        See Also
        --------
        DatetimeIndex.floor :
            Perform floor operation on the data to the specified `freq`.
        DatetimeIndex.snap :
            Snap time stamps to nearest occurring frequency.

        Notes
        -----
        If the timestamps have a timezone, flooring will take place relative to the
        local ("wall") time and re-localized to the same timezone. When flooring
        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[us]', freq='min')

        >>> rng.floor('h')
        DatetimeIndex(['2018-01-01 11:00:00', '2018-01-01 12:00:00',
                       '2018-01-01 12:00:00'],
                      dtype='datetime64[us]', 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[us]

        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[us, Europe/Amsterdam]', freq=None)

        >>> rng_tz.floor("2h", ambiguous=True)
        DatetimeIndex(['2021-10-31 02:00:00+02:00'],
                      dtype='datetime64[us, Europe/Amsterdam]', freq=None)
        )r›  r'   ÚMINUS_INFTYr¢  s       rx   ÚfloorzTimelikeOps.floor®  s    € ðL �{Š{˜4¥Ô!4°iÀÑMÔMÐMrz   c                óF   — |                       |t          j        ||¦  «        S )aÔ  
        Perform ceil operation on the data to the specified `freq`.

        Parameters
        ----------
        freq : str or Offset
            The frequency level to ceil 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 a ValueError 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 a ValueError 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.

        See Also
        --------
        DatetimeIndex.floor :
            Perform floor operation on the data to the specified `freq`.
        DatetimeIndex.snap :
            Snap time stamps to nearest occurring frequency.

        Notes
        -----
        If the timestamps have a timezone, ceiling will take place relative to the
        local ("wall") time and re-localized to the same timezone. When ceiling
        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[us]', freq='min')

        >>> rng.ceil('h')
        DatetimeIndex(['2018-01-01 12:00:00', '2018-01-01 12:00:00',
                       '2018-01-01 13:00:00'],
                      dtype='datetime64[us]', 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[us]

        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[us, Europe/Amsterdam]', freq=None)

        >>> rng_tz.ceil("h", ambiguous=True)
        DatetimeIndex(['2021-10-31 02:00:00+02:00'],
                      dtype='datetime64[us, Europe/Amsterdam]', freq=None)
        )r›  r'   Ú
PLUS_INFTYr¢  s       rx   ÚceilzTimelikeOps.ceil	  s    € ðL �{Š{˜4¥Ô!3°YÀÑLÔLÐLrz   Nr  r  r  rò  c               ó`   — t          j        | j        |||                      ¦   «         ¬¦  «        S ©Nr-  )rT   Únananyr•   rQ   ©r‡   r  rò  s      rx   r]  zTimelikeOps.any�	  s%   € åŒ}˜Tœ]°¸fÈ4Ï9Ê9É;Ì;ÐWÑWÔWÐWrz   c               ó`   — t          j        | j        |||                      ¦   «         ¬¦  «        S r«  )rT   Únanallr•   rQ   r­  s      rx   rK  zTimelikeOps.all…	  s'   € õ Œ}˜Tœ]°¸fÈ4Ï9Ê9É;Ì;ÐWÑWÔWÐWrz   c                ó   — d | _         d S rv   rm  r›   s    rx   rý   zTimelikeOps._maybe_clear_freq�	  s   € ØˆŒ
ˆ
ˆ
rz   c                óB  — |€n€t          | ¦  «        dk    rQt          |t          ¦  «        r<| j        j        dk    r+t          |t
          t          f¦  «        st          d¦  «        ‚n|dk    sJ ‚t          | j	        ¦  «        }|  
                    ¦   «         }||_        |S )z×
        Helper to get a view on the same data, with a new freq.

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

        Returns
        -------
        Same type as self
        Nr   r  ro  rt  )rÅ   r�   r   r‚   r  r   r   r  r&   ri  rƒ   rí   )r‡   r—   rŠ   s      rx   Ú
_with_freqzTimelikeOps._with_freq�	  s“   € ð ˆ<àÝ�‰YŒY˜!Š^ˆ^¥
¨4µÑ <Ô <ˆ^àŒzŒ #Ò%Ð%­j¸ÅÅc¸{Ñ.KÔ.KÐ%ÝÐ JÑKÔKÐKøð ˜7’?�?�?�?Ý˜TÔ/Ñ0Ô0ˆDà�iŠi‰kŒkˆØˆŒ	Øˆ
rz   r”   c                ó�   •— t          | j        t          j        ¦  «        r| j        S t	          ¦   «                              ¦   «         S rv   )r�   r‚   rÚ   r•   rê   Ú_values_for_json)r‡   rî   s    €rx   r´  zTimelikeOps._values_for_json°	  s7   ø€ å�d”j¥"¤(Ñ+Ô+ð 	!Ø”=Ð Ý‰wŒw×'Ò'Ñ)Ô)Ð)rz   FÚuse_na_sentinelÚsortc                óÎ  •— | j         �•|rN| j         j        dk     r>t          j        t	          | ¦  «        dz
  ddt          j        ¬¦  «        }| d d d…         }nAt          j        t	          | ¦  «        t          j        ¬¦  «        }|                      ¦   «         }||fS |r%t          dt          | ¦  «        j	        › d�¦  «        ‚t          ¦   «                              |¬¦  «        S )Nr   r¼   éÿÿÿÿrØ   zThe 'sort' keyword in zu.factorize is ignored unless arr.freq is not None. To factorize with sort, call pd.factorize(obj, sort=True) instead.)rµ  )r—   r¿   rÚ   ÚarangerÅ   Úintprž   ÚNotImplementedErrorr  r  rê   Ú	factorize)r‡   rµ  r¶  ÚcodesÚuniquesrî   s        €rx   r¼  zTimelikeOps.factorize¶	  sá   ø€ ð
 Œ9Ð àð &˜œ	œ aš˜Ýœ	¥# d¡)¤)¨a¡-°°R½r¼wÐGÑGÔG�Ø˜t˜t ˜tœ*��åœ	¥# d¡)¤)µ2´7Ð;Ñ;Ô;�ØŸ)š)™+œ+�Ø˜'�>Ð!àð 	õ &ð=­¨d©¬Ô)<ð =ð =ð =ñô ð õ
 ‰wŒw× Ò °Ð ÑAÔAÐArz   r   Ú	to_concatúSequence[Self]r-   c                ó\  •‡— t          ¦   «                              ||¦  «        }|d         Š|dk    ryd„ |D ¦   «         }‰j        �ft          ˆfd„|D ¦   «         ¦  «        rKt	          |d d…         |dd …         d¬¦  «        }t          ˆfd„|D ¦   «         ¦  «        r‰j        }||_        |S )	Nr   c                ó0   — g | ]}t          |¦  «        ¯|‘ŒS rš   )rÅ   )r¾   r´   s     rx   rå  z1TimelikeOps._concat_same_type.<locals>.<listcomp>Ü	  s#   € Ð8Ð8Ð8˜qµ°Q±´Ð8˜Ð8Ð8Ð8rz   c              3  ó8   •K  — | ]}|j         ‰j         k    V — Œd S rv   ©r—   )r¾   r´   r  s     €rx   rÀ   z0TimelikeOps._concat_same_type.<locals>.<genexpr>Þ	  s,   øè è € Ð+RÐ+RÀ1¨A¬F°c´hÒ,>Ð+RÐ+RÐ+RÐ+RÐ+RÐ+Rrz   r¸  r¼   T)Ústrictc              3  ód   •K  — | ]*}|d          d         ‰j         z   |d         d          k    V — Œ+dS )r   r¸  r¼   NrÄ  )r¾   Úpairr  s     €rx   rÀ   z0TimelikeOps._concat_same_type.<locals>.<genexpr>à	  s?   øè è € ÐNÐNÀ�t˜A”w˜r”{ S¤XÑ-°°a´¸´Ò;ÐNÐNÐNÐNÐNÐNrz   )rê   Ú_concat_same_typer—   rK  Úziprí   )r  r¿  r  Únew_objÚpairsr°  r  rî   s         @€rx   rÈ  zTimelikeOps._concat_same_typeÏ	  sÌ   øø€ õ ‘'”'×+Ò+¨I°tÑ<Ô<ˆà˜Œlˆà�1Š9ˆ9ð 9Ð8 IÐ8Ñ8Ô8ˆIàŒxÐ#­Ð+RÐ+RÐ+RÐ+RÈ	Ð+RÑ+RÔ+RÑ(RÔ(RÐ#Ý˜I c r cœN¨I°a°b°b¬MÀ$ÐGÑGÔG�ÝÐNÐNÐNÐNÈÐNÑNÔNÑNÔNð -Ø"œx�HØ$,�G”MØˆrz   ÚCÚorderc                ód   •— t          ¦   «                              |¬¦  «        }| j        |_        |S )N)rÍ  )rê   rž   r—   rí   )r‡   rÍ  rÊ  rî   s      €rx   rž   zTimelikeOps.copyå	  s(   ø€ Ý‘'”'—,’, U�,Ñ+Ô+ˆØœ	ˆŒØˆrz   r2   r€  rn   rž   c          
     óî   — |dk    rt           ‚|s| j        }	n| j                             ¦   «         }	t          j        |	f||||||dœ|¤Ž |s| S t          | ¦  «                             |	| j        ¬¦  «        S )z2
        See NDFrame.interpolate.__doc__.
        Úlinear)r�  r  r€  ÚlimitÚlimit_directionÚ
limit_arearØ   )r»  r•   rž   rS   Úinterpolate_2d_inplacer  r¬  r‚   )
r‡   r�  r  r€  rÑ  rÒ  rÓ  rž   r‰   Úout_datas
             rx   ÚinterpolatezTimelikeOps.interpolateê	  s§   € ð  �XÒÐÝ%Ð%àð 	,Ø”}ˆHˆHà”}×)Ò)Ñ+Ô+ˆHåÔ&Øð		
àØØØØ+Ø!ð		
ð 		
ð ð		
ð 		
ð 		
ð ð 	ØˆKÝ�D‰zŒz×%Ò% h°d´jÐ%ÑAÔAÐArz   )Ú
allow_fillrb  r  Úindicesr8   r×  rb  r   c               ó8  •— t          ¦   «                              ||||¬¦  «        }t          j        |t          j        ¬¦  «        }t          j        |t          | ¦  «        ¦  «        }t          |t          ¦  «        r|  
                    |¦  «        }||_        |S )N)rØ  r×  rb  r  rØ   )rê   ÚtakerÚ   r  rº  r   Úmaybe_indices_to_slicerÅ   r�   rð   rì   rí   )	r‡   rØ  r×  rb  r  r‹   Úmaybe_slicer—   rî   s	           €rx   rÚ  zTimelikeOps.take
  sŒ   ø€ õ ‘”—’Ø¨
¸zÐPTð ñ 
ô 
ˆõ ”*˜W­B¬GÐ4Ñ4Ô4ˆÝÔ0°½#¸d¹)¼)ÑDÔDˆå�k¥5Ñ)Ô)ð 	 Ø×)Ò)¨+Ñ6Ô6ˆDØˆFŒLàˆrz   c                ó
  — t          j        | j        ¦  «        sdS | j        }|t          k    }t          | j        ¦  «        }t          |¦  «        }t          j        |||z  dk    ¦  «         	                    ¦   «         dk    }|S )zÓ
        Check if we are round times at midnight (and no timezone), which will
        be given a more compact __repr__ than other cases. For TimedeltaArray
        we are checking for multiples of 24H.
        Fr   )
r   rŸ  r‚   rÆ   r!   r    r$   rÚ   Úlogical_andrD  )r‡   Ú
values_intÚconsider_valuesr  ÚppdÚ	even_dayss         rx   Ú_is_dates_onlyzTimelikeOps._is_dates_only(
  s   € õ Œ˜tœzÑ*Ô*ð 	à�5à”Yˆ
Ø$­Ò,ˆÝ" 4¤:Ñ.Ô.ˆÝ˜dÑ#Ô#ˆõ ”N ?°JÀÑ4DÈÒ4IÑJÔJ×NÒNÑPÔPÐTUÒUˆ	ØÐrz   rY  )rq  rr  r|   rŸ   )r—   r   r|   rŸ   )r{  rƒ  r|   r
   )r|   r?  )r|   rl   rZ  )rA  rl   r;  r˜   r|   r
   )r�  rŽ  r�  rt   )rŸ  rŸ  )r—  r9   r˜  r:   r|   r
   )r  r  rò  r˜   r|   r˜   r[  rX  )TF)rµ  r˜   r¶  r˜   )r   )r¿  rÀ  r  r-   r|   r
   )rÌ  )rÍ  rt   r|   r
   )
r�  r2   r  r?  r€  rn   rž   r˜   r|   r
   )
rØ  r8   r×  r˜   rb  r   r  r-   r|   r
   rW  )#r  r\  r]  r^  Úclassmethodrk  r`  r—   Úsetterr   rw  rp  r~  r@   r  rA  rB  r­  r”  r›  r£  r¦  r©  r]  rK  rý   r²  r´  r¼  rÈ  rž   rÖ  rÚ  rã  ra  rb  s   @rx   r…  r…  0  sŸ  ø€ € € € € ðð ð ð'ð 'ñ „[ð'ð ðð ñ „Xðð: 
„[ð
ð 
ð 
ñ „[ð
ð ð6ð 6ð 6ñ „Uð6ð@ Øð(ð (ð (ñ „[ñ „Uð(ðT ð'ð 'ð 'ñ „[ð'ð ð8ð 8ð 8ñ „^ð8ð ð)ð )ð )ñ „^ð)ð8<
ð <
ð <
ð <
ð <
ð@ð ð ð	Ið 	Ið 	Ið 	Ið 	Ið 	Ið:ð :ð :ð2 $+Ø'.ð	fTð fTð fTð fTð fTðV $+Ø'.ð	fNð fNð fNð fNð fNðV $+Ø'.ð	fMð fMð fMð fMð fMðV -1Àð Xð Xð Xð Xð Xð Xð -1Àð Xð Xð Xð Xð Xð Xðð ð ð ðð ð ð ð@*ð *ð *ð *ð *ð *ð !%ØðBð Bð Bð Bð Bð Bð Bð2 ð ðð ð ð ð ð ñ „[ðð*ð ð ð ð ð ð ð
$Bð $Bð $Bð $BðT !ØØðð ð ð ð ð ð ð ð0 ðð ð ñ „Xðð ð ð ð rz   r…  rž   r˜   Úcls_nameútuple[ArrayLike, bool]c                ód  — t          | d¦  «        sUt          | t          t          f¦  «        s't	          j        | ¦  «        dk    rt          | ¦  «        } t          | ¦  «        } d}n9t          | t          ¦  «        rt          d|› d�¦  «        ‚t          | d¬¦  «        } t          | t          ¦  «        s#t          | t          ¦  «        r-| j        j        dv r|                      d	t          ¬
¦  «        } d}n¸t          | t          ¦  «        r+|                      ¦   «         } |                      ¦   «         } d}nxt          | t          j        t$          f¦  «        st	          j        | ¦  «        } nBt          | t(          ¦  «        r-| j                             | j        t0          ¬¦  «        j        } d}| |fS )Nr‚   r   FzCannot create a z from a MultiIndex.Tr?  r  r  rg  r™  )r7  r�   rÛ   ÚtuplerÚ   rÃ   rB   rO   r  rb   r_   r]   r‚   r  rR  r!   Ú_maybe_convert_datelike_arrayrD  r^   r  rN   rG  rÚ  r½  r   Ú_values)r¢   rž   ræ  s      rx   Ú!ensure_arraylike_for_datetimelikerì  B
  s�  € õ �4˜Ñ!Ô!ð 7å˜$¥¥u Ñ.Ô.ð 	µ2´7¸4±=´=ÀAÒ3EÐ3Eå˜‘:”:ˆDå6°tÑ<Ô<ˆØˆˆÝ	�D�-Ñ	(Ô	(ð 7ÝÐH¨8ÐHÐHÐHÑIÔIÐIå˜T°Ð6Ñ6Ô6ˆå�$�Ñ%Ô%ð Ý�4Õ,Ñ-Ô-ðØ26´*´/ÀTÐ2IÐ2Ià�}Š}˜W­tˆ}Ñ4Ô4ˆØˆˆÝ	�DÕ-Ñ	.Ô	.ð Ø×1Ò1Ñ3Ô3ˆØ�}Š}‰ŒˆØˆˆÝ˜�rœz­>Ð:Ñ;Ô;ð 	åŒz˜$ÑÔˆˆå	�D�.Ñ	)Ô	)ð ð Œ×#Ò# D¤J½3Ð#Ñ?Ô?ÔGˆØˆà�ˆ:Ðrz   r{  rŸ   c                ó   — d S rv   rš   ©r{  s    rx   Úvalidate_periodsrï  i
  s   € Ø-0¨Srz   r?  c                ó   — d S rv   rš   rî  s    rx   rï  rï  m
  s   € Ø+.¨3rz   rƒ  c                óV   — | �&t          j        | ¦  «        st          d| › �¦  «        ‚| S )a.  
    If a `periods` argument is passed to the Datetime/Timedelta Array/Index
    constructor, cast it to an integer.

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

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

    Raises
    ------
    TypeError
        if periods is not None or int
    Nz periods must be an integer, got )r   r   r  rî  s    rx   rï  rï  q
  s7   € ð$ Ð¥3¤>°'Ñ#:Ô#:ÐÝÐD¸7ÐDÐDÑEÔEÐEð €Nrz   r—   r–   ri  c                óV   — |�&| � | |k    rt          d|› d| j        › �¦  «        ‚| €|} | S )a
  
    If the user passes a freq and another freq is inferred from passed data,
    require that they match.

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

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

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

    Returns
    -------
    str
    r	  zdtype=z does not have a resolution.r   )	r�   rK   rA  rI   r  rÙ   Úpyarrow_dtyperÚ   Údatetime_datarØ   s    rx   r‡  r‡  §
  sy   € õ �%�Ñ)Ô)ð (ØŒzÐÝ	�E�:Ñ	&Ô	&ð (ØŒ:˜TÐ!Ð!ÝÐD ÐDÐDÐDÑEÔEÐEØÔ"Ô'Ð'ÝÔ˜EÑ"Ô" 1Ô%Ð%rz   )rs   rt   )r{   r1   r|   r1   )rž   r˜   ræ  rt   r|   rç  )r{  rŸ   r|   rŸ   )r{  r?  r|   r?  )r{  rƒ  r|   rƒ  )r—   r–   ri  r–   r|   r–   )r‚   ró  r|   rt   )¨Ú
__future__r   r   r   Ú	functoolsr   r‚  Útypingr   r   r	   r
   r   r   r   r   r   rï  ÚnumpyrÚ   Úpandas._configr   Úpandas._config.configr   Úpandas._libsr   r   Úpandas._libs.tslibsr   r   r   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/   r0   r1   r2   r3   r4   r5   r6   r7   r8   r9   r:   r;   Úpandas.compat.numpyr<   r   Úpandas.errorsr=   r>   r?   Úpandas.util._decoratorsr@   Úpandas.util._exceptionsrA   Úpandas.core.dtypes.castrB   Úpandas.core.dtypes.commonrC   rD   rE   rF   rG   rH   Úpandas.core.dtypes.dtypesrI   rJ   rK   rL   rM   Úpandas.core.dtypes.genericrN   rO   Úpandas.core.dtypes.missingrP   rQ   Úpandas.corerR   rS   rT   rU   Úpandas.core.algorithmsrV   rW   rX   Úpandas.core.array_algosrY   Úpandas.core.arraylikerZ   Úpandas.core.arrays._mixinsr[   r\   Úpandas.core.arrays.arrow.arrayr]   Úpandas.core.arrays.baser^   Úpandas.core.arrays.integerr_   Úpandas.core.commonÚcoreÚcommonró   Úpandas.core.constructionr`   rF  ra   rb   Úpandas.core.indexersrc   rd   Úpandas.core.ops.commonre   Úpandas.core.ops.invalidrf   rg   Úpandas.tseriesrh   Úcollections.abcri   rj   rk   rl   rQ  rn   r©  ro   rp   rq   rr   r_  ry   rŽ   r�   rd  r…  rì  rï  rv  r‡  rš   rz   rx   ú<module>r     s3  ðØ "Ð "Ð "Ð "Ð "Ð "Ð "ðð ð ð ð ð ð ð ð Ð Ð Ð Ð Ð Ø €€€ð
ð 
ð 
ð 
ð 
ð 
ð 
ð 
ð 
ð 
ð 
ð 
ð 
ð 
ð 
ð 
ð 
ð 
ð 
ð 
ð 
ð 
ð €€€à Ð Ð Ð à -Ð -Ð -Ð -Ð -Ð -Ø ,Ð ,Ð ,Ð ,Ð ,Ð ,ðð ð ð ð ð ð ð ðð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð*ð ð ð ð ð ð ð ð KÐ JÐ JÐ JÐ JÐ JØ =Ð =Ð =Ð =Ð =Ð =Ø CÐ CÐ CÐ CÐ CÐ Cðð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð$ /Ð .Ð .Ð .Ð .Ð .ðð ð ð ð ð ð ð ð ð ð
ð ð ð ð ð ð 5Ð 4Ð 4Ð 4Ð 4Ð 4à KÐ KÐ KÐ KÐ KÐ Kðð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ðð ð ð ð ð ð ð ð ð ð ð ð ð ðð ð ð ð ð ð ð ðð ð ð ð ð ð ð ð
ð ð ð ð ð ð ð ð ð ð ð ðð ð ð ð ð ð ð ð ð ð
 ?Ð >Ð >Ð >Ð >Ð >Ø *Ð *Ð *Ð *Ð *Ð *ðð ð ð ð ð ð ð ð ?Ð >Ð >Ð >Ð >Ð >Ø 2Ð 2Ð 2Ð 2Ð 2Ð 2Ø 3Ð 3Ð 3Ð 3Ð 3Ð 3Ø  Ð  Ð  Ð  Ð  Ð  Ð  Ð  Ð  ðð ð ð ð ð ð ð ð ð ð
ð ð ð ð ð ð ð ð <Ð ;Ð ;Ð ;Ð ;Ð ;ðð ð ð ð ð ð ð ð
 'Ð &Ð &Ð &Ð &Ð &àð ðð ð ð ð ð ð ð ð ð ð (Ð'Ð'Ð'Ð'Ð'àÐÐÐÐÐðð ð ð ð ð ð ð ð ð ð .°Ñ7€Ð 7Ð 7Ð 7Ñ 7ð1ð 1ð 1ð 1ð
ð ð ð ð2k3ð k3ð k3ð k3ð k3˜XÐ'Bñ k3ô k3ð k3ð\171ð 71ð 71ð 71ð 71Ð(ñ 71ô 71ð 71ðtKð Kð Kð Kð KÐ(ñ Kô Kð Kðd$ð $ð $ð $ðN 
Ø 0Ð 0Ð 0ñ 
„Ø 0ð 
Ø .Ð .Ð .ñ 
„Ø .ðð ð ð ð2ð ð ð ð:&ð &ð &ð &ð &ð &rz   