ó
    Ñ]j½| ã                  ó  • % S SK Jr  S SKJrJr  S SKJr  S SKrS SKJrJ	r	J
r
JrJrJrJrJrJr  S SKrS SKrS SKJr  S SKJr  S SKJrJr  S S	KJrJrJrJrJ r J!r!J"r"J#r#J$r$J%r%J&r&J'r'J(r(J)r)J*r*J+r+J,r,J-r-J.r.  S S
K/J0r0J1r1  S SK2J3r3  S SK4J5r5  S SK6J7r7  S SK8J9r9J:r:J;r;J<r<J=r=J>r>J?r?J@r@JArAJBrBJCrCJDrDJErEJFrFJGrGJHrH  S SKIJJrK  S SKLJMrMJNrNJOrO  S SKPJQrQ  S SKRJSrS  S SKTJUrU  S SKVJWrWJXrXJYrYJZrZJ[r[J\r\  S SK]J^r^J_r_J`r`JaraJbrb  S SKcJdrdJere  S SKfJgrgJhrh  S SKiJjrjJkrkJlrlJmrm  S SKnJoroJprpJqrq  S SKrJsrs  S SKtJuru  S SKvJwrwJxrx  S SKyJzrz  S SK{J|r|  S SK}J~r~  S SKJ€s  J�r‚  S S KƒJ„r…J†r†J‡r‡  S S!KˆJ‰r‰JŠrŠ  S S"K‹JŒrŒ  S S#K�JŽrŽJ�r�  S S$K�J‘r‘  \(       a   S S%K’J“r“J”r”J•r•  S S&K8J–r–  S S'K—J˜r˜  S S(K™JšršJ›r›Jœrœ  \;\ -  r�S)\žS*'   S9S+ jrŸS:S, jr  " S- S.\u\w5      r¡ " S/ S0\¡5      r¢ " S1 S2\¡5      r£      S;S3 jr¤\S<S4 j5       r¥\S=S5 j5       r¥S>S6 jr¥      S?S7 jr¦S@S8 jr§g)Aé    )Ú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   ÚDTScalarOrNaTc                ó:   • [        U 5      n[        U 5      " U5      $ ©N)rg   re   )Úop_nameÚops     Ú\/home/mande/repo/quber/.venv/lib/python3.13/site-packages/pandas/core/arrays/datetimelike.pyÚ_make_unpacked_invalid_oprx   ª   s   € Ü	˜Ó	!€BÜ# GÔ,¨RÓ0Ð0ó    c                óL   ^ • [        T 5      U 4S j5       n[        [        U5      $ )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                óV  >• [        U R                  [        5      (       d  T" U /UQ70 UD6$ U R                  S5      nT" U/UQ70 UD6nU[        L a  [        $ [        U[
        5      (       a  U R                  UR                  5      $ UR                  S5      nU R                  U5      $ )NúM8[ns]Úi8)	Ú
isinstanceÚdtyperM   Úviewr   r   Ú	_box_funcÚ_valueÚ_from_backing_data)ÚselfÚargsÚkwargsÚarrÚresultÚres_i8Úmeths         €rw   Únew_methÚ"_period_dispatch.<locals>.new_meth¶   s–   ø€ ä˜$Ÿ*™*¤k×2Ñ2Ù˜Ð.˜tÒ. vÑ.Ð.à�i‰i˜Ó!ˆÙ�cÐ+˜DÒ+ FÑ+ˆØ”SŠ=ÜˆJÜ˜¤	×*Ñ*Ø—>‘> &§-¡-Ó0Ð0à—‘˜TÓ"ˆØ×&Ñ& vÓ.Ð.ry   )r   r   r1   )rŠ   r‹   s   ` rw   Ú_period_dispatchr�   ¯   s*   ø€ ô ˆ4ƒ[ô/ó ð/ô ”�8ÓÐry   c                  óŒ  ^ • \ rS rSr% SrS\S'   S\S'   S\S'   S	\S
'   S\S'   \SrS j5       r Ss     StS jjr\	SuS j5       r
SvS jr    SwS jrSxS jrS rSyS jrSzS jr\	S{S j5       rSSS.   S|S jjrS}S~S jjr S     S€S jjr\S�S j5       r\    S‚S j5       rSƒU 4S  jjrS„S! jr      S…U 4S" jjrS†S# jrS‡SˆU 4S% jjjr\S‰S& j5       r\SŠS' j5       r\S‹S( j5       r\SŒS�S) jj5       rSŽS�U 4S* jjjrS�U 4S+ jjrS, rSS$S-.   S�S. jjrS}S‘S/ jjrS}S’S0 jjr S1 r!\"S“S2 j5       r#\$SŽS”S3 jj5       r%S•S4 jr&S–S5 jr'\	S–S6 j5       r(\	SrS7 j5       r)\*S4   S—S8 jjr+\	S˜S9 j5       r,\	S˜S: j5       r-\	S™S; j5       r.\	SšS< j5       r/\	SrS= j5       r0\	SrS> j5       r1\	SrS? j5       r2S@ r3\4" SA5      r5\4" SB5      r6\4" SC5      r7\4" SD5      r8\4" SE5      r9\4" SF5      r:\4" SG5      r;\4" SH5      r<\4" SI5      r=\4" SJ5      r>\4" SK5      r?\4" SL5      r@\"  S›SM j5       rA\"S„SN j5       rB\"SœSO j5       rC\"S�SP j5       rD\"    SžSQ j5       rE\"SŸSR j5       rF\"S SS j5       rG\"S¡ST j5       rHSU rISV rJS¢SW jrK\"S£SX j5       rL\"S‰SY j5       rM\"SySZ j5       rN\"S¤S[ j5       rO\"S¥S\ j5       rPS$S].S¦S^ jjrQ\R" S_5      S` 5       rSSa rT\R" Sb5      Sc 5       rUSd rVS‰Se jrWS‰Sf jrX\Y      S§U 4Sg jj5       rZ\YSS$Sh.S¨Si jj5       r[\YSS$Sh.S¨Sj jj5       r\S$SkSl.S©Sm jjr]\YSS$Sh.S¨Sn jj5       r^S‡SªSo jjr_          S«Sp jr`SqraU =rb$ )¬ÚDatetimeLikeArrayMixinéÈ   z°
Shared Base/Mixin class for DatetimeArray, TimedeltaArray, PeriodArray

Assumes that __new__/__init__ defines:
    _ndarray

and that inheriting subclass implements:
    freq
ztuple[str, ...]Ú_infer_matcheszCallable[[DtypeObj], bool]Ú_is_recognized_dtypeztuple[type, ...]Ú_recognized_scalarsú
np.ndarrayÚ_ndarrayúBaseOffset | NoneÚfreqc                ó   • g)NT© ©r„   s    rw   Ú_can_hold_naÚ#DatetimeLikeArrayMixin._can_hold_naÚ   s   € àry   NFc                ó   • [        U 5      ert   ©r=   )r„   Údatar   r—   Úcopys        rw   Ú__init__ÚDatetimeLikeArrayMixin.__init__Þ   s   € ô " $Ó'Ð'ry   c                ó   • [        U 5      e)z{
The scalar associated with this datelike

* PeriodArray : Period
* DatetimeArray : Timestamp
* TimedeltaArray : Timedelta
rž   rš   s    rw   Ú_scalar_typeÚ#DatetimeLikeArrayMixin._scalar_typeã   s   € ô " $Ó'Ð'ry   c                ó   • [        U 5      e)a  
Construct a scalar type from a string.

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

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

Notes
-----
This should call ``self._check_compatible_with`` before
unboxing the result.
rž   ©r„   Úvalues     rw   Ú_scalar_from_stringÚ*DatetimeLikeArrayMixin._scalar_from_stringî   ó   € ô$ " $Ó'Ð'ry   c                ó   • [        U 5      e)aA  
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     rw   Ú_unbox_scalarÚ$DatetimeLikeArrayMixin._unbox_scalar  s   € ô* " $Ó'Ð'ry   c                ó   • [        U 5      e)a  
Verify that `self` and `other` are compatible.

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

In each case, NaT is considered compatible.

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

Raises
------
Exception
rž   ©r„   Úothers     rw   Ú_check_compatible_withÚ-DatetimeLikeArrayMixin._check_compatible_with  r«   ry   c                ó   • [        U 5      e)z9
box function to get object from internal representation
rž   )r„   Úxs     rw   r�   Ú DatetimeLikeArrayMixin._box_func/  s   € ô " $Ó'Ð'ry   c                ó@   • [         R                  " XR                  SS9$ )z!
apply box func to passed values
F)Úconvert)r   Ú	map_inferr�   ©r„   Úvaluess     rw   Ú_box_valuesÚ"DatetimeLikeArrayMixin._box_values5  s   € ô �}Š}˜V§^¡^¸UÑCÐCry   c                óŒ   ^ • T R                   S:”  a  U 4S j[        [        T 5      5       5       $ U 4S jT R                   5       $ )Né   c              3  ó.   >#   • U  H
  nTU   v •  M     g 7frt   r™   )Ú.0Únr„   s     €rw   Ú	<genexpr>Ú2DatetimeLikeArrayMixin.__iter__.<locals>.<genexpr>=  s   øé € Ð6Ò%5 �D˜–GÒ%5ùs   ƒc              3  óF   >#   • U  H  nTR                  U5      v •  M     g 7frt   )r�   )rÁ   Úvr„   s     €rw   rÃ   rÄ   ?  s   øé € Ð9ªy¨!�D—N‘N 1×%Ð%ªyùs   ƒ!)ÚndimÚrangeÚlenÚasi8rš   s   `rw   Ú__iter__ÚDatetimeLikeArrayMixin.__iter__;  s1   ø€ Ø�9‰9�q‹=Ü6¤U¬3¨t«9Ô%5Ó6Ð6ä9¨t¯yªyÓ9Ð9ry   c                ó8   • U R                   R                  S5      $ )za
Integer representation of the values.

Returns
-------
ndarray
    An ndarray with int64 dtype.
r}   )r•   r€   rš   s    rw   rÊ   ÚDatetimeLikeArrayMixin.asi8A  s   € ð �}‰}×!Ñ! $Ó'Ð'ry   r   )Úna_repÚdate_formatc               ó   • [        U 5      e)zT
Helper method for astype when converting to strings.

Returns
-------
ndarray[str]
rž   )r„   rÏ   rÐ   s      rw   Ú_format_native_typesÚ+DatetimeLikeArrayMixin._format_native_typesQ  s   € ô " $Ó'Ð'ry   c                ó   • SR                   $ )Nz'{}')Úformat)r„   Úboxeds     rw   Ú
_formatterÚ!DatetimeLikeArrayMixin._formatter]  s   € à�}‰}Ðry   c                óN  • [        U5      (       a2  USL a  [        S5      e[        R                  " [	        U 5      [
        S9$ USL a  [        R                  " U R                  US9$ U R                  nU R                  (       a!  UR                  5       nSUR                  l
        U$ )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       rw   Ú	__array__Ú DatetimeLikeArrayMixin.__array__d  s…   € ô ˜5×!Ñ!Ø�uŠ}Ü ØPóð ô —8’8œD ›J¬fÑ5Ð5à�4Š<Ü—8’8˜DŸM™M°Ñ7Ð7à—‘ˆØ�>�>Ø—[‘[“]ˆFØ%*ˆF�L‰LÔ"Øˆry   c                ó   • g rt   r™   ©r„   Úkeys     rw   Ú__getitem__Ú"DatetimeLikeArrayMixin.__getitem__x  ó   € Ø@Cry   c                ó   • g rt   r™   rå   s     rw   rç   rè   {  s   € ð ry   c                óâ   >• [        [        [        [        4   [        TU ]  U5      5      n[        R                  " U5      (       a  U$ [        [        U5      nU R                  U5      Ul	        U$ )zz
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      €rw   rç   rè   �  s`   ø€ ô ”eœD¤-Ð/Ñ0´%±'Ñ2EÀcÓ2JÓKˆÜ�=Š=˜× Ñ ØˆMô œ$ Ó'ˆFð ×-Ñ-¨cÓ2ˆŒØˆry   c                ón  • [        U R                  [        5      nU(       a  U R                  nU$ U R                  S:w  a  SnU$ [        X5      nSn[        U[        5      (       aD  U R                  b(  UR                  b  UR                  U R                  -  nU$ U R                  n U$ U[        L a  U R                  nU$ [        R                  " U5      (       aY  [        R                  " UR                  [        R                  5      5      n[        U[        5      (       a  U R!                  U5      $ U$ )zL
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        rw   rî   Ú(DatetimeLikeArrayMixin._get_getitem_freq”  s
  € ô ˜tŸz™z¬;Ó7ˆ	ÞØ—9‘9ˆDð& ˆð% �Y‰Y˜!‹^ØˆDð" ˆô & dÓ0ˆCØˆDÜ˜#œu×%Ñ%Ø—9‘9Ñ(¨S¯X©XÑ-AØŸ8™8 d§i¡iÑ/�Dð ˆð  Ÿ9™9‘Dð ˆð œ’ð —y‘y�ð
 ˆô	 ×$Ò$ S×)Ñ)Ü×5Ò5°c·h±h¼r¿x¹xÓ6HÓI�Ü˜g¤u×-Ñ-Ø×1Ñ1°'Ó:Ð:Øˆry   c                ól   >• [        XU 5      n[        TU ]	  X5        U(       a  g U R                  5         g rt   )rd   rì   Ú__setitem__Ú_maybe_clear_freq)r„   ræ   r¨   Úno_oprð   s       €rw   rý   Ú"DatetimeLikeArrayMixin.__setitem__²  s2   ø€ ô & c°$Ó7ˆô 	‰Ñ˜CÔ'æØà×ÑÕ ry   c                ó   • g rt   r™   rš   s    rw   rþ   Ú(DatetimeLikeArrayMixin._maybe_clear_freqÈ  s   € ð 	ry   Tc                ót  >• [        U5      nU[        :X  aÄ  U R                  R                  S:X  a:  [	        SU 5      n U R
                  n[        UU R                  SU R                  S9nU$ U R                  R                  S:X  a  [        U R                  SS9$ U R                  U R
                  R                  5       5      R                  U R                  5      $ [        U5      (       a^  [!        U["        5      (       a9  U R%                  UR&                  S9nUR)                  5       nUR+                  XQS	S
9$ U R%                  5       $ [!        U["        5      (       a  [,        T	U ]]  XS9$ UR                  S;   aU  U R
                  nU[0        R2                  :w  a  [5        SU R                   SU S35      eU(       a  UR7                  5       nU$ UR                  S;   a  U R                  U:w  d  UR                  S:X  a&  S[9        U 5      R:                   SU 3n[5        U5      e[0        R<                  " XS9$ )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
            €rw   r  ÚDatetimeLikeArrayMixin.astypeÍ  së  ø€ ô
 ˜UÓ#ˆà”F‹?Ø�z‰z�‰ #Ó%Ü˜O¨TÓ2�ð Ÿ™�Ü.ØØ—w‘wØ#ØŸ™ñ	�	ð !Ð à—‘—‘ CÓ'Ü*¨4¯=©=¸dÑCÐCà×#Ñ# D§I¡I§O¡OÓ$5Ó6×>Ñ>¸t¿z¹zÓJÐJä˜U×#Ñ#Ü˜%¤×0Ñ0Ø!×6Ñ6¸e¿n¹nÐ6ÐM�
Ø×0Ñ0Ó2�Ø×)Ñ)¨*ÈÐ)ÐNÐNà×0Ñ0Ó2Ð2ä˜œ~×.Ñ.Ü‘7‘> %�>Ð3Ð3Ø�Z‰Z˜4Óð —Y‘YˆFØœŸ™Ó ÜØ& t§z¡z l°$°u°gð >Cð Cóð ö
 ØŸ™›�ØˆMØ�j‰j˜DÓ  T§Z¡Z°5Ó%8¸U¿Z¹ZÈ3Ó=Nð !¤ d£×!4Ñ!4Ð 5°ZÀ¸wÐGˆCÜ˜C“.Ð ä—:’:˜dÑ0Ð0ry   c                ó   • g rt   r™   rš   s    rw   r€   ÚDatetimeLikeArrayMixin.view  s   € Øry   c                ó   • g rt   r™   ©r„   r   s     rw   r€   r#  	  s   € Ø?Bry   c                ó   • g rt   r™   r%  s     rw   r€   r#    ré   ry   c                ó   • g rt   r™   r%  s     rw   r€   r#    s   € Ø<?ry   c                ó"   >• [         TU ]  U5      $ rt   )rì   r€   )r„   r   rð   s     €rw   r€   r#    s   ø€ ô ‰w‰|˜EÓ"Ð"ry   c                ó2   >• [         TU ]  X5        S U l        g rt   )rì   Ú_putmaskrï   )r„   Úmaskr¨   rð   s      €rw   r*  ÚDatetimeLikeArrayMixin._putmask  s   ø€ Ü‰Ñ˜Ô%Øˆ�
ry   c                ó¦  • [        U[        5      (       a   U R                  U5      n[        XR                  5      (       d	  U[        L a%  U R                  U5      n U R                  U5        U$ [        U5      (       d  [        U5      e[        U5      [        U 5      :w  a  [        S5      e U R                  USS9nU R                  U5        U$ ! [        [        4 a  n[        U5      UeS nAff = f! [         a  n[        U5      UeS nAff = f! [         a2  n[        [        USS 5      5      (       a   S nAU$ [        U5      UeS nAff = f)NzLengths must matchT)Úallow_objectr   )r~   Ústrr©   rÛ   r   r>   r“   r   r¤   r²   r  rE   rÉ   Ú_validate_listlikerF   Úgetattr)r„   r±   Úerrs      rw   Ú_validate_comparison_valueÚ1DatetimeLikeArrayMixin._validate_comparison_value  sK  € Ü�eœS×!Ñ!ð8à×0Ñ0°Ó7�ô
 �e×5Ñ5×6Ñ6¸%Ä3º,Ø×%Ñ% eÓ,ˆEð8Ø×+Ñ+¨EÔ2ð, ˆô# ˜e×$Ñ$Ü# EÓ*Ð*ä�‹Zœ3˜t›9Ó$ÜÐ1Ó2Ð2ð<Ø×/Ñ/°ÀDÐ/ÐI�Ø×+Ñ+¨EÔ2ð ˆøô; Ô 5Ð6ó 8ä'¨Ó.°CÐ7ûð8ûô ó 8ä'¨Ó.°CÐ7ûð8ûô ó <Ü"¤7¨5°'¸4Ó#@×AÑAãð ˆô ,¨EÓ2¸Ð;ûð<úsM   —C ÁC6 Â/!D ÃC3Ã"C.Ã.C3Ã6
DÄ DÄDÄ
EÄEÄ?EÅE)Úallow_listlikeÚunboxc               óD  • [        XR                  5      (       a  O½[        U[        5      (       a   U R                  U5      nO•[        XR                  5      (       a  [        nOt[        U5      (       a  U R                  X5      n[        U5      e[        XR                  5      (       a  U R                  U5      nOU R                  X5      n[        U5      eU(       d  U$ U R                  U5      $ ! [         a"  nU R                  X5      n[        U5      UeSnAff = f)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¤   r/  r©   rÛ   Ú_validation_error_messager  rP   r   r   rQ   r“   r­   )r„   r¨   r5  r6  r2  r   s         rw   Ú_validate_scalarÚ'DatetimeLikeArrayMixin._validate_scalarC  sý   € ô0 �e×.Ñ.×/Ñ/Øä˜œs×#Ñ#ð.Ø×0Ñ0°Ó7‘ô
 # 5¯*©*×5Ñ5ä‰Eä�%�[‰[ð ×0Ñ0°ÓGˆCÜ˜C“.Ð ä˜×7Ñ7×8Ñ8ð ×%Ñ% eÓ,‰Eð ×0Ñ0°ÓGˆCÜ˜C“.Ð æð ˆLØ×!Ñ! %Ó(Ð(øô9 ó .Ø×4Ñ4°UÓK�Ü “n¨#Ð-ûð.ús   ²C3 Ã3
DÃ=DÄDc                ó"  • [        US5      (       a!  [        USS5      S:”  a  UR                   S3nOS[        U5      R                   S3nU(       a  SU R
                  R                   SU S3nU$ SU R
                  R                   S	U S3nU$ )
zÛ
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 )Úhasattrr1  r   r  r  r¤   )r„   r¨   r5  Úmsg_gotr   s        rw   r8  Ú0DatetimeLikeArrayMixin._validation_error_message€  s³   € ô �5˜'×"Ñ"¤w¨u°f¸aÓ'@À1Ó'DØŸ™˜ VÐ,‰Gàœ$˜u›+×.Ñ.Ð/¨qÐ1ˆGÞà% d×&7Ñ&7×&@Ñ&@Ð%Að B*Ø*1¨°)ð=ð ð ˆ
ð & d×&7Ñ&7×&@Ñ&@Ð%Að BØ�i˜yð*ð ð ˆ
ry   c                ór  • [        U[        U 5      5      (       aW  U R                  R                  S;   a;  U(       d4  U R                  UR                  :w  a  UR                  U R                  SS9nU$ [        U[        5      (       a2  [        U5      S:X  a#  [        U 5      R                  / U R                  S9$ [        US5      (       aS  UR                  [        :X  a?  [        R                  " U5      U R                  ;   a   [        U 5      R                  U5      n[        U[        5      (       a  [#        U5      n[        U[$        R&                  5      (       a4  UR                  [        :X  a   [        R(                  " USU R                  S9n[+        USS	9n[-        U5      n[+        USS	9n[/        U5      (       a#   [        U 5      R                  XR                  S9n[        UR                  [0        5      (       a>  UR2                  R                  U R                  :X  a  UR5                  5       n[+        USS	9nU(       a  [7        UR                  5      (       a  OF[        U 5      R9                  UR                  5      (       d  U R!                  US5      n[        U5      eU R                  R                  S;   a!  U(       d  UR                  U R                  SS9nU$ ! [        [        4 a1  nU(       a  Us S nA$ U R!                  US5      n[        U5      UeS nAff = f! [         a     GNSf = f)
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  r=  rÞ   r   Úinfer_dtyper‘   rÛ   r  r8  rB   rÜ   ÚndarrayÚmaybe_convert_objectsrb   Úpd_arrayrC   rJ   Ú
categoriesÚ_internal_get_valuesrF   r’   )r„   r¨   r.  r2  r   s        rw   r0  Ú)DatetimeLikeArrayMixin._validate_listlikeŸ  s}  € Ü�eœT $›Z×(Ñ(Ø�z‰z�‰ $Ó&®|ÀÇ	Á	ÈUÏZÉZÓ@WàŸ™ d§i¡i¸%˜Ð@�ØˆLä�eœT×"Ñ"¤s¨5£z°Q£ä˜“:×,Ñ,¨R°t·z±zÐ,ÐBÐBä�5˜'×"Ñ" u§{¡{´fÓ'<ô �Š˜uÓ%¨×)<Ñ)<Ó<ð2Ü  ›J×5Ñ5°eÓ<�Eô �eœT×"Ñ"Ü;¸EÓBˆEÜ�eœRŸZ™Z×(Ñ(¨U¯[©[¼FÓ-Bô ×-Ò-Ø¨4À$Ç*Á*ñˆEô ˜e°4Ñ8ˆÜ˜“ˆÜ˜e°4Ñ8ˆä˜%× Ñ ðô ˜T›
×1Ñ1°%¿z¹zÐ1ÐJ�ô �e—k‘kÔ#3×4Ñ4à×Ñ×%Ñ%¨¯©Ó3à×2Ñ2Ó4�Ü% e¸4Ñ@�æœO¨E¯K©K×8Ñ8Øä�d“×0Ñ0°·±×=Ñ=Ø×0Ñ0°¸Ó=ˆCÜ˜C“.Ð à�:‰:�?‰?˜dÓ"®<à—M‘M $§)¡)°e�MÐ<ˆEØˆøô_ #¤IÐ.ó 2Þ#Ø$�Ø×8Ñ8¸ÀÓE�CÜ# C›.¨cÐ1ûð	2ûô6 ó Úðús6   ÄK$ Ç "L( Ë$L%Ë4L Ë<L%ÌL Ì L%Ì(
L6Ì5L6c                óˆ   • [        U5      (       a  U R                  U5      nOU R                  USS9$ U R                  U5      $ )NT)r5  )rE   r0  r9  Ú_unboxr§   s     rw   Ú_validate_setitem_valueÚ.DatetimeLikeArrayMixin._validate_setitem_valueá  sB   € Ü˜×ÑØ×+Ñ+¨EÓ2‰Eà×(Ñ(¨¸tÐ(ÐDÐDà�{‰{˜5Ó!Ð!ry   c                óœ   • [         R                  " U5      (       a  U R                  U5      nU$ U R                  U5        UR                  nU$ )zJ
Unbox either a scalar with _unbox_scalar or an instance of our own type.
)r   rí   r­   r²   r•   r°   s     rw   rR  ÚDatetimeLikeArrayMixin._unboxé  sH   € ô
 �=Š=˜×ÑØ×&Ñ& uÓ-ˆEð
 ˆð ×'Ñ'¨Ô.Ø—N‘NˆEØˆry   c                ó”   • SSK Jn  [        XUS9nU" U5      n[        U[        5      (       a  UR                  5       $ UR                  $ )Nr   rm   )Ú	na_action)Úpandasrn   rW   r~   rO   Úto_numpyr`   )r„   ÚmapperrX  rn   rˆ   s        rw   ÚmapÚDatetimeLikeArrayMixin.mapû  s>   € å ä˜4°9Ñ=ˆÙ�v“ˆä�fœm×,Ñ,Ø—?‘?Ó$Ð$à—<‘<Ðry   c                óT  • UR                   R                  S;   a#  [        R                  " U R                  [
        S9$ [        U5      n[        U[        U 5      5      (       d›  UR                   [        :X  ad  [        R                  " USU R                   S9nUR                   [        :w  a  U R                  U5      $ [        U R                  [        5      U5      $ [        R                  " U R                  [
        S9$ U R                   R                  S;   a'  [        SU 5      n UR                  U R                   5      n U R#                  U5        [        U R(                  UR(                  5      $ ! [$        [&        4 a&    [        R                  " U R                  [
        S9s $ f = f)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Ú   TrC  r  úDatetimeArray | TimedeltaArray)r   r  rÜ   Úzerosr  Úboolra   r~   r  rÞ   r   rL  rV   r  r   rI  rH  r²   r  rÛ   rÊ   rº   s     rw   rV   ÚDatetimeLikeArrayMixin.isin  s?  € ð �<‰<×Ñ Ó&ä—8’8˜DŸJ™J¬dÑ3Ð3ä/°Ó7ˆä˜&¤$ t£*×-Ñ-Ø�|‰|œvÓ%Ü×2Ò2ØØ(,Ø%)§Z¡Zñ�ð
 —<‘<¤6Ó)ØŸ9™9 VÓ,Ð,ô   §¡¬FÓ 3°VÓ<Ð<Ü—8’8˜DŸJ™J¬dÑ3Ð3à�:‰:�?‰?˜dÓ"ÜÐ8¸$Ó?ˆDà—^‘^ D§I¡IÓ.ˆFð	4ð ×'Ñ'¨Ô/ô �D—I‘I˜vŸ{™{Ó+Ð+øô œ:Ð&ó 	4ä—8’8˜DŸJ™J¬dÑ3Ò3ð	4ús   Å E1 Å13F'Æ&F'c                ó   • U R                   $ rt   )Ú_isnanrš   s    rw   rQ   ÚDatetimeLikeArrayMixin.isna>  s   € Ø�{‰{Ðry   c                ó(   • U R                   [        :H  $ )z
return if each value is nan
)rÊ   r!   rš   s    rw   re  ÚDatetimeLikeArrayMixin._isnanA  s   € ð
 �y‰yœDÑ Ð ry   c                óH   • [        U R                  R                  5       5      $ )z:
return if I have any nans; enables various perf speedups
)rb  re  Úanyrš   s    rw   Ú_hasnaÚDatetimeLikeArrayMixin._hasnaH  s   € ô
 �D—K‘K—O‘OÓ%Ó&Ð&ry   c                óÀ   • U R                   (       aL  U(       a  UR                  U5      nUc  [        R                  n[        R                  " XR
                  U5        U$ )a  
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.
)rk  r  rÜ   ÚnanÚputmaskre  )r„   rˆ   Ú
fill_valuer¸   s       rw   Ú_maybe_mask_resultsÚ*DatetimeLikeArrayMixin._maybe_mask_resultsO  sB   € ð& �;�;ÞØŸ™ wÓ/�ØÑ!ÜŸV™V�
Ü�JŠJ�vŸ{™{¨JÔ7Øˆry   c                óJ   • U R                   c  gU R                   R                  $ )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    rw   rt  ÚDatetimeLikeArrayMixin.freqstrm  s"   € ð@ �9‰9ÑØØ�y‰y× Ñ Ð ry   c                ór   • U R                   S:w  a  g [        R                  " U 5      $ ! [         a     gf = f)al  
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    rw   Úinferred_freqÚ$DatetimeLikeArrayMixin.inferred_freq‘  s:   € ð: �9‰9˜‹>Øð	Ü×)Ò)¨$Ó/Ð/øÜó 	Ùð	ús   “) ©
6µ6c                óp   • U R                   nUc  g  [        R                  " U5      $ ! [         a     g f = frt   )rt  r   Úget_reso_from_freqstrÚKeyError)r„   rt  s     rw   Ú_resolution_objÚ&DatetimeLikeArrayMixin._resolution_objµ  s;   € à—,‘,ˆØ‰?Øð	Ü×3Ò3°GÓ<Ð<øÜó 	Ùð	ús   ’( ¨
5´5c                ó.   • U R                   R                  $ )z?
Returns day, hour, minute, second, millisecond or microsecond
)r}  Úattrnamerš   s    rw   Ú
resolutionÚ!DatetimeLikeArrayMixin.resolution¿  s   € ð ×#Ñ#×,Ñ,Ð,ry   c                óF   • [         R                  " U R                  SS9S   $ )NT©Útimeliker   ©r   Úis_monotonicrÊ   rš   s    rw   Ú_is_monotonic_increasingÚ/DatetimeLikeArrayMixin._is_monotonic_increasingÊ  ó   € ä×!Ò! $§)¡)°dÑ;¸AÑ>Ð>ry   c                óF   • [         R                  " U R                  SS9S   $ )NTr„  r¿   r†  rš   s    rw   Ú_is_monotonic_decreasingÚ/DatetimeLikeArrayMixin._is_monotonic_decreasingÎ  rŠ  ry   c                óv   • [        [        U R                  R                  S5      5      5      U R                  :H  $ )NÚK)rÉ   rX   rÊ   r  Úsizerš   s    rw   Ú
_is_uniqueÚ!DatetimeLikeArrayMixin._is_uniqueÒ  s(   € ä”8˜DŸI™IŸO™O¨CÓ0Ó1Ó2°d·i±iÑ?Ð?ry   c                ó.  • U R                   S:”  aY  [        USS 5      U R                  :X  a>  U" U R                  5       UR                  5       5      R	                  U R                  5      $  U R                  U5      n[        USS 5      n[        U5      (       aA  [        R                  " U[         R"                  " U R%                  [&        5      5      U5      nU$ U[(        L a]  U[*        R,                  L a%  [         R.                  " U R                  [0        S9nU$ [         R2                  " U R                  [0        S9nU$ [        U R                  [4        5      (       d‚  [7        [8        U 5      n U R:                  UR:                  :w  aX  [        U[=        U 5      5      (       d   UR?                  U R@                  SS9nO"URJ                  n[I        U RJ                  XR5      $ U RM                  U5      nU" U RJ                  RO                  S5      URO                  S5      5      n[Q        U5      nU RR                  U-  nURU                  5       (       a)  U[*        R,                  L n	[         RV                  " XHU	5        U$ ! [         aG    [        US5      (       a'  [        UR                  [        5      (       a  [        s $ [        XU5      s $ f = f! [B         a9    [         RD                  " URF                  5      n[I        U RJ                  XR5      s $ f = f)Nr¿   r  r   rÚ   FrA  r}   ),rÇ   r1  r  r  r  r3  r>   r=  r~   r   rI   ÚNotImplementedrf   rF   rU   Úcomp_method_OBJECT_ARRAYrÜ   r  r  rÞ   r   ÚoperatorÚneÚonesrb  ra  rM   r   ÚTimelikeOpsr  r  rI  rH  rÛ   r`   Úasm8r)   r•   rR  r€   rQ   re  rj  ro  )
r„   r±   rv   r   rˆ   Ú	other_arrÚ
other_valsÚo_maskr+  Ú
nat_results
             rw   Ú_cmp_methodÚ"DatetimeLikeArrayMixin._cmp_methodÙ  sX  € Ø�9‰9�q‹=œW U¨G°TÓ:¸d¿j¹jÓHá�d—j‘j“l E§K¡K£MÓ2×:Ñ:¸4¿:¹:ÓFÐFð	7Ø×3Ñ3°EÓ:ˆEô ˜˜w¨Ó-ˆÜ˜5×!Ñ!ô ×1Ò1Ø”B—J’J˜tŸ{™{¬6Ó2Ó3°UóˆFð ˆMØ”CŠ<Ø”X—[‘[Ò ÜŸš §¡´4Ñ8�ð ˆMô Ÿš $§*¡*´DÑ9�ØˆMä˜$Ÿ*™*¤k×2Ñ2Üœ TÓ*ˆDØ�{‰{˜eŸl™lÓ*Ü! %¬¨d«×4Ñ4ðà %§¡¨d¯i©iÀ% Ð H™ð !&§¡�IÜ9¸$¿-¹-ÈÓWÐWà—[‘[ Ó'ˆ
á�D—M‘M×&Ñ& tÓ,¨j¯o©o¸dÓ.CÓDˆä�e“ˆØ�{‰{˜VÑ#ˆØ�8‰8�:‰:ØœxŸ{™{Ð*ˆJÜ�JŠJ�v ZÔ0àˆøôa !ó 	7Ü�u˜g×&Ñ&¬:°e·k±kÄ:×+NÑ+NÜ%Ò%Ü% d°2Ó6Ò6ð	7ûô: &ó Ü$&§H¢H¨U¯Z©ZÓ$8˜	Ü=Ø ŸM™M¨9ó ò ðús,   Á+I= Æ$K É=A KÊ?KËKËA LÌLÚ__pow__Ú__rpow__Ú__mul__Ú__rmul__Ú__truediv__Ú__rtruediv__Ú__floordiv__Ú__rfloordiv__Ú__mod__Ú__rmod__Ú
__divmod__Ú__rdivmod__c                óÜ   • [        U[        5      (       a  UR                  nSnX#4$ [        U[        [        45      (       a  UR
                  nSnX#4$ UR                  nUR                  nX#4$ )z>
Get the int64 values and b_mask to pass to add_overflowsafe.
N)r~   r   Úordinalr   r   r‚   re  rÊ   )r„   r±   Úi8valuesr+  s       rw   Ú_get_i8_values_and_maskÚ.DatetimeLikeArrayMixin._get_i8_values_and_mask!  sq   € ô �eœV×$Ñ$Ø—}‘}ˆHØˆDð ˆ~Ðô ˜¤	¬9Ð5×6Ñ6Ø—|‘|ˆHØˆDð
 ˆ~Ðð —<‘<ˆDØ—z‘zˆHØˆ~Ðry   c                óÐ  • [        U R                  [        5      (       a  U R                  $ [        R
                  " U5      (       d  g[        U R                  [        5      (       a  U R                  $ U R                  R                  S:X  a!  [        U[        5      (       a  U R                  $ U R                  R                  S:X  aS  [        U[        5      (       a>  UR                  b%  [        R                  " UR                  5      (       a  U R                  $ [        R                  " U R                  S5      (       a@  [        U R                  [        5      (       a!  [        U[        5      (       a  U R                  $ [        R                  " U R                  S5      (       a@  [        U[        5      (       a+  [        U R                  [        5      (       a  U R                  $ g)z@
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     rw   Ú_get_arithmetic_result_freqÚ2DatetimeLikeArrayMixin._get_arithmetic_result_freq4  s8  € ô �d—j‘j¤+×.Ñ.Ø—9‘9ÐÜ—’˜u×%Ñ%ØÜ˜Ÿ	™	¤4×(Ñ(à—9‘9ÐØ�Z‰Z�_‰_ Ó#¬
°5¼)×(DÑ(DØ—9‘9Ðà�J‰J�O‰O˜sÓ"Ü˜5¤)×,Ñ,Ø—‘Ñ!¤Y×%5Ò%5°e·h±h×%?Ñ%?ð
 —9‘9Ðä�OŠO˜DŸJ™J¨×,Ñ,Ü˜4Ÿ9™9¤c×*Ñ*Ü˜5¤)×,Ñ,ð —9‘9Ðä�OŠO˜DŸJ™J¨×,Ñ,Ü˜5¤)×,Ñ,Ü˜4Ÿ9™9¤c×*Ñ*à—9‘9Ðàry   c                ó–  • [         R                  " U R                  S5      (       d7  [        S[	        U 5      R
                   S[	        U5      R
                   35      e[        SU 5      n SSKJn  SSK	J
n  U[        Ld   e[        U5      (       aY  U R                  [        R                  " 5       R                  SU R                    S	35      -   nUR"                  " XDR                  S
9$ [%        U5      nU R'                  U5      u  p[        SU 5      n U R)                  U5      u  pV[+        U R,                  [.        R0                  " USS
95      nUR3                  SU R                    S	35      nU" UR4                  U R                   S9nUR3                  SU R                    S	35      nU R7                  U5      n	UR"                  " XxU	S9$ )Nr	  úcannot add ú and rq   r   ©ro   )Útz_to_dtypezM8[Ú]rÚ   r}   ©r  rH  ©r   r—   )r   r´  r   r  r  r  r   Úpandas.core.arraysro   Úpandas.core.arrays.datetimesr»  r   rQ   r•   Úto_datetime64r  rH  Ú_simple_newr   Ú_ensure_matching_resosr°  r   rÊ   rÜ   r  r€   r  rµ  )
r„   r±   ro   r»  rˆ   Úother_i8r�  Ú
res_valuesr   Únew_freqs
             rw   Ú_add_datetimelike_scalarÚ/DatetimeLikeArrayMixin._add_datetimelike_scalar^  s�  € ä�Š˜tŸz™z¨3×/Ñ/ÜØœd 4›j×1Ñ1Ð2°%¼¸U»×8LÑ8LÐ7MÐNóð ô Ð$ dÓ+ˆå4Ý<àœCÒÐÐÜ��;‰;ð —]‘]¤S×%6Ò%6Ó%8×%?Ñ%?À#ÀdÇiÁiÀ[ÐPQÐ@RÓ%SÑSˆFà ×,Ò,¨V¿<¹<ÑHÐHä˜%Ó ˆØ×1Ñ1°%Ó8‰ˆÜÐ$ dÓ+ˆà×7Ñ7¸Ó>ÑˆÜ! $§)¡)¬R¯ZªZ¸ÈÑ-MÓNˆØ—[‘[ 3 t§y¡y k°Ð!3Ó4ˆ
á˜uŸx™x¨d¯i©iÑ8ˆØ—[‘[ 3 t§y¡y k°Ð!3Ó4ˆ
Ø×3Ñ3°EÓ:ˆØ×(Ò(¨ÀxÑPÐPry   c                óÄ   • [         R                  " U R                  S5      (       d7  [        S[	        U 5      R
                   S[	        U5      R
                   35      eX-   $ )Nr	  r¸  r¹  )r   r´  r   r  r  r  r°   s     rw   Ú_add_datetime_arraylikeÚ.DatetimeLikeArrayMixin._add_datetime_arraylike€  sT   € ä�Š˜tŸz™z¨3×/Ñ/ÜØœd 4›j×1Ñ1Ð2°%¼¸U»×8LÑ8LÐ7MÐNóð ð
 ‰|Ðry   c                ó   • U R                   R                  S:w  a!  [        S[        U 5      R                   35      e[        SU 5      n [        U5      (       a	  U [        -
  $ [        U5      nU R                  U5      u  pU R                  U5      $ )Nr  ú"cannot subtract a datelike from a ro   )r   r  r  r  r  r   rQ   r   r   rÃ  Ú_sub_datetimelike)r„   r±   Útss      rw   Ú_sub_datetimelike_scalarÚ/DatetimeLikeArrayMixin._sub_datetimelike_scalarŠ  s€   € ð �:‰:�?‰?˜cÓ!ÜÐ@ÄÀdÃ×ATÑATÐ@UÐVÓWÐWä�O TÓ*ˆô ��;‰;àœ#‘:Ðä�uÓˆà×.Ñ.¨rÓ2‰ˆØ×%Ñ% bÓ)Ð)ry   c                ó  • U R                   R                  S:w  a!  [        S[        U 5      R                   35      e[        U 5      [        U5      :w  a  [        S5      e[        SU 5      n U R                  U5      u  pU R                  U5      $ )Nr  rÍ  ú$cannot add indices of unequal lengthro   )
r   r  r  r  r  rÉ   rÛ   r   rÃ  rÎ  r°   s     rw   Ú_sub_datetime_arraylikeÚ.DatetimeLikeArrayMixin._sub_datetime_arraylike�  s{   € à�:‰:�?‰?˜cÓ!ÜÐ@ÄÀdÃ×ATÑATÐ@UÐVÓWÐWäˆt‹9œ˜E›
Ó"ÜÐCÓDÐDä�O TÓ*ˆà×1Ñ1°%Ó8‰ˆØ×%Ñ% eÓ,Ð,ry   c                óð  • [        SU 5      n SSKJn   U R                  U5        U R                  U5      u  pV[        U R                  [        R                  " U* SS95      nUR                  SU R                   S	35      nU R                  U5      n	[        S
U	5      n	UR                   " XˆR"                  U	S9$ ! [         a2  n[        U5      R                  SS5      n[        U5      " U5      UeS nAff = f)Nro   r   ©rq   ÚcompareÚsubtractr}   rÚ   útimedelta64[r¼  zTick | Noner¾  )r   r¿  rq   Ú_assert_tzawareness_compatr  r/  Úreplacer  r°  r   rÊ   rÜ   r  r€   rH  rµ  rÂ  r   )
r„   r±   rq   r2  Únew_messagerÄ  r�  rÅ  Úres_m8rÆ  s
             rw   rÎ  Ú(DatetimeLikeArrayMixin._sub_datetimelikeª  sÝ   € ä�O TÓ*ˆå5ð	2Ø×+Ñ+¨EÔ2ð
  ×7Ñ7¸Ó>ÑˆÜ% d§i¡i´·²¸X¸IÈTÑ1RÓSˆ
Ø—‘ <°·	±	¨{¸!Ð!<Ó=ˆà×3Ñ3°EÓ:ˆÜ˜ xÓ0ˆØ×)Ò)¨&¿¹È8ÑTÐTøô ó 	2Ü˜c›(×*Ñ*¨9°jÓAˆKÜ�s”)˜KÓ(¨cÐ1ûð	2ús   ”B9 Â9
C5Ã-C0Ã0C5c                ó0  • [         R                  " U R                  S5      (       d!  [        S[	        U 5      R
                   35      eSSKJn  [        R                  " UR                  U R                  5      n[        UR                  5      nU" X4S9nXP-   $ )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         rw   Ú_add_periodÚ"DatetimeLikeArrayMixin._add_period¾  sr   € ä�Š˜tŸz™z¨3×/Ñ/ÜÐ5´d¸4³j×6IÑ6IÐ5JÐKÓLÐLõ 	:ä—’ §¡°·
±
Ó;ˆÜ˜EŸJ™JÓ'ˆÙ˜6Ñ/ˆØ‰{Ðry   c                ó   • [        U 5      ert   rž   )r„   Úoffsets     rw   Ú_add_offsetÚ"DatetimeLikeArrayMixin._add_offsetË  s   € Ü! $Ó'Ð'ry   c                óŠ  • [        U5      (       ay  [        R                  " U R                  SS9R	                  U R
                  R                  5      nUR                  [        5        [        U 5      R                  X R                  S9$ [        SU 5      n [        U5      nU R                  U5      u  pU R                  U5      $ )zC
Add a delta of a timedeltalike

Returns
-------
Same type as self
r}   rÚ   r`  )rQ   rÜ   Úemptyr  r€   r•   r   Úfillr!   r  rÂ  r   r   rÃ  Ú_add_timedeltalike)r„   r±   Ú
new_valuess      rw   Ú_add_timedeltalike_scalarÚ0DatetimeLikeArrayMixin._add_timedeltalike_scalarÎ  sš   € ô ��;‰;äŸš $§*¡*°DÑ9×>Ñ>¸t¿}¹}×?RÑ?RÓSˆJØ�O‰OœDÔ!Ü˜“:×)Ñ)¨*¿J¹JÐ)ÐGÐGô Ð4°dÓ;ˆÜ˜%Ó ˆØ×1Ñ1°%Ó8‰ˆØ×&Ñ& uÓ-Ð-ry   c                ó¤   • [        U 5      [        U5      :w  a  [        S5      e[        SU 5      R                  U5      u  pU R	                  U5      $ )zD
Add a delta of a TimedeltaIndex

Returns
-------
Same type as self
rÓ  r`  )rÉ   rÛ   r   rÃ  rî  r°   s     rw   Ú_add_timedelta_arraylikeÚ/DatetimeLikeArrayMixin._add_timedelta_arraylikeâ  sR   € ô ˆt‹9œ˜E›
Ó"ÜÐCÓDÐDäØ,¨dó
ç
 Ñ
  Ó
'ñ 	ˆð ×&Ñ& uÓ-Ð-ry   c                ó.  • U R                  U5      u  p#[        U R                  [        R                  " USS95      nUR                  U R                  R                  5      nU R                  U5      n[        U 5      R                  UU R                  US9$ )Nr}   rÚ   r¾  )r°  r   rÊ   rÜ   r  r€   r•   r   rµ  r  rÂ  )r„   r±   rÄ  r�  rï  rÅ  rÆ  s          rw   rî  Ú)DatetimeLikeArrayMixin._add_timedeltalikeô  sƒ   € à×7Ñ7¸Ó>ÑˆÜ% d§i¡i´·²¸HÈDÑ1QÓRˆ
Ø—_‘_ T§]¡]×%8Ñ%8Ó9ˆ
à×3Ñ3°EÓ:ˆô �D‹z×%Ñ%ØØ—*‘*Øð &ð 
ð 	
ry   c                óÌ  • [        U R                  [        5      (       a;  [        S[	        U 5      R
                   S[	        [        5      R
                   35      e[        R                  " U R                  [        R                  S9nUR                  [        5        UR                  U R                  R                  5      n[	        U 5      R                  UU R                  SS9$ )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     rw   Ú_add_natÚDatetimeLikeArrayMixin._add_nat  s¯   € ô
 �d—j‘j¤+×.Ñ.ÜØœd 4›j×1Ñ1Ð2°%¼¼S»	×8JÑ8JÐ7KÐLóð ô —’˜$Ÿ*™*¬B¯H©HÑ5ˆØ�‰”DÔØ—‘˜TŸ]™]×0Ñ0Ó1ˆä�D‹z×%Ñ%ØØ—*‘*Øð &ð 
ð 	
ry   c                ó2  • [         R                  " U R                  [         R                  S9nUR	                  [
        5        U R                  R                  S;   a+  [        SU 5      n UR                  SU R                   S35      $ UR                  S5      $ )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€   rH  rø  s     rw   Ú_sub_natÚDatetimeLikeArrayMixin._sub_nat  sq   € ô —’˜$Ÿ*™*¬B¯H©HÑ5ˆØ�‰”DÔØ�:‰:�?‰?˜dÓ"äÐ7¸Ó>ˆDØ—;‘; ¨d¯i©i¨[¸Ð:Ó;Ð;à—;‘;Ð0Ó1Ð1ry   c                ó8  • [        U R                  [        5      (       d7  [        S[	        U5      R
                   S[	        U 5      R
                   35      e[        SU 5      n U R                  U5        U R                  U5      u  p#[        U R                  [        R                  " U* SS95      n[        R                  " U Vs/ s H  oPR                  R                  U-  PM     sn5      nUc  U R                   nOU R                   U-  n["        Xg'   U$ s  snf )Núcannot subtract ú from rp   r}   rÚ   )r~   r   rM   r  r  r  r   r²   r°  r   rÊ   rÜ   r  r`   r—   Úbasere  r   )r„   r±   rÄ  r�  Únew_i8_datarµ   Únew_datar+  s           rw   Ú_sub_periodlikeÚ&DatetimeLikeArrayMixin._sub_periodlike-  sì   € ô ˜$Ÿ*™*¤k×2Ñ2ÜØ"¤4¨£;×#7Ñ#7Ð"8¸¼tÀD»z×?RÑ?RÐ>SÐTóð ô �M 4Ó(ˆØ×#Ñ# EÔ*à×7Ñ7¸Ó>ÑˆÜ& t§y¡y´"·*²*¸h¸YÈdÑ2SÓTˆÜ—8’8¹ÓEº°AŸY™YŸ^™^¨aÔ/¹ÑEÓFˆà‰>à—;‘;‰Dð —;‘; Ñ'ˆDÜˆ‰Øˆùò Fs   Ã"Dc                óþ  • U[         R                  [         R                  4;   d   e[        U5      S:X  a  U R                  S:X  a  U" XS   5      $ [        S5      (       a9  [        R                  " S[        U 5      R                   S3[        [        5       S9  U R                  UR                  :X  d   U R                  UR                  45       eU" U R                  S5      [        R                  " U5      5      nU$ )a  
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±   rv   rÅ  s       rw   Ú_addsub_object_arrayÚ+DatetimeLikeArrayMixin._addsub_object_arrayF  sÏ   € ð  ”h—l‘l¤H§L¡LÐ1Ó1Ð1Ð1Üˆu‹:˜‹?˜tŸy™y¨A›~ñ �d !™HÓ%Ð%äÐ,×-Ñ-Ü�MŠMØ;Ü˜“:×&Ñ&Ð'Ð'7ð9ä"Ü+Ó-ò	ð �z‰z˜UŸ[™[Ó(ÐC¨4¯:©:°u·{±{Ð*CÓCÐ(á˜Ÿ™ CÓ(¬"¯*ª*°UÓ*;Ó<ˆ
ØÐry   )Úskipnac               óØ   • US;  a  [        SU S[        U 5       35      e[        [        U5      nU" U R	                  5       4SU0UD6n[        U 5      R                  XPR                  S9$ )N>   ÚcummaxÚcumminzAccumulation z not supported for r  rÚ   )r  r  r1  rY   r    rÂ  r   )r„   Únamer  r†   rv   rˆ   s         rw   Ú_accumulateÚ"DatetimeLikeArrayMixin._accumulatek  sk   € ØÐ+Ó+Ü˜m¨D¨6Ð1DÄTÈ$ÃZÀLÐQÓRÐRäÔ/°Ó6ˆÙ�D—I‘I“KÑ9¨Ð9°&Ñ9ˆä�D‹z×%Ñ% f·J±JÐ%Ð?Ð?ry   Ú__add__c                óF  • [        USS 5      n[        U5      nU[        L a  U R                  5       nGO[	        U[
        [        [        R                  45      (       a  U R                  U5      nGOË[	        U[        5      (       a[  [        R                  " U R                  S5      (       a5  [        UR                  S9R!                  S5      nU R                  U5      nGO[[	        U["        5      (       a  U R%                  U5      nGO3[	        U[&        [        R(                  45      (       a  U R+                  U5      nGOû[	        U[,        5      (       a9  [        R                  " U R                  S5      (       a  U R/                  U5      nGO­[        R0                  " U5      (       an  [	        U R                  [2        5      (       d  [5        U 5      e[7        SU 5      nUR9                  XR                  R:                  -  [<        R>                  5      nGO$[        R                  " US5      (       a  U RA                  U5      nOö[C        U5      (       a!  U RE                  U[<        R>                  5      nOÅ[        R                  " US5      (       d  [	        U[F        5      (       a  U RI                  U5      $ [K        U5      (       am  [	        U R                  [2        5      (       d  [5        U 5      e[7        SU 5      nUR9                  XR                  R:                  -  [<        R>                  5      nO[L        $ [	        U[        RN                  5      (       aF  [        R                  " UR                  S5      (       a   SS	K(J)n  URT                  " X3R                  S
9$ U$ )Nr   ÚMm©ÚdaysÚsr	  rp   r  r   r×  rÚ   )+r1  ra   r   rù  r~   r   r   rÜ   Útimedelta64rð  r   r   r´  r   r   rÂ   rI  r   ré  r   Ú
datetime64rÇ  r   rå  Ú
is_integerrM   r+   r   Ú_addsub_int_array_or_scalarÚ_nr–  r
  ró  rF   r  rK   rÊ  rD   r”  rK  r¿  rq   r  ©r„   r±   Úother_dtyperˆ   ÚtdÚobjrq   s          rw   r  ÚDatetimeLikeArrayMixin.__add__t  s…  € ä˜e W¨dÓ3ˆÜ.¨uÓ5ˆð ”CŠ<Ø:>¿-¹-»/ŠFÜ˜¤¤i´·±Ð@×AÑAØ×3Ñ3°EÓ:ŠFÜ˜œs×#Ñ#¬¯ª¸¿
¹
ÀD×(IÑ(Iä §¡Ñ(×0Ñ0°Ó5ˆBØ×3Ñ3°BÓ7ŠFÜ˜œz×*Ñ*à×%Ñ% eÓ,ŠFÜ˜¤¬"¯-©-Ð8×9Ñ9Ø×2Ñ2°5Ó9ŠFÜ˜œv×&Ñ&¬3¯?ª?¸4¿:¹:Às×+KÑ+KØ×%Ñ% eÓ,ŠFÜ�^Š^˜E×"Ñ"ô ˜dŸj™j¬+×6Ñ6Ü.¨tÓ4Ð4Ü�} dÓ+ˆCØ×4Ñ4°U¿Y¹Y¿\¹\Ñ5IÌ8Ï<É<ÓXŠFô �_Š_˜[¨#×.Ñ.à×2Ñ2°5Ó9‰FÜ˜[×)Ñ)à×.Ñ.¨u´h·l±lÓC‰FÜ�_Š_˜[¨#×.Ñ.´*Øœ÷3
ñ 3
ð ×/Ñ/°Ó6Ð6Ü˜k×*Ñ*Ü˜dŸj™j¬+×6Ñ6Ü.¨tÓ4Ð4Ü�} dÓ+ˆCØ×4Ñ4°U¿Y¹Y¿\¹\Ñ5IÌ8Ï<É<ÓX‰Fô "Ð!ä�fœbŸj™j×)Ñ)¬c¯oªo¸f¿l¹lÈC×.PÑ.PÝ9à!×0Ò0°¿|¹|ÑLÐLØˆry   c                ó$   • U R                  U5      $ rt   )r  r°   s     rw   Ú__radd__ÚDatetimeLikeArrayMixin.__radd__°  s   € à�|‰|˜EÓ"Ð"ry   Ú__sub__c                óT  • [        USS 5      n[        U5      nU[        L a  U R                  5       nGO[	        U[
        [        [        R                  45      (       a  U R                  U* 5      nGOÑ[	        U[        5      (       a\  [        R                  " U R                  S5      (       a6  [        UR                  S9R!                  S5      nU R                  U* 5      nGO`[	        U["        5      (       a  U R%                  U* 5      nGO7[	        U[&        [        R(                  45      (       a  U R+                  U5      nGOÿ[        R,                  " U5      (       an  [	        U R                  [.        5      (       d  [1        U 5      e[3        SU 5      nUR5                  XR                  R6                  -  [8        R:                  5      nGOv[	        U[<        5      (       a  U R?                  U5      nGON[        R                  " US5      (       a  U RA                  U* 5      nGO[C        U5      (       a!  U RE                  U[8        R:                  5      nOí[        R                  " US5      (       d  [	        U[F        5      (       a  U RI                  U5      nOª[	        U[.        5      (       a  U R?                  U5      nOƒ[K        U5      (       am  [	        U R                  [.        5      (       d  [1        U 5      e[3        SU 5      nUR5                  XR                  R6                  -  [8        R:                  5      nO[L        $ [	        U[        RN                  5      (       aF  [        R                  " UR                  S5      (       a   SS	K(J)n  URT                  " X3R                  S
9$ U$ )Nr   r  r  r  rp   r	  r  r   r×  rÚ   )+r1  ra   r   rü  r~   r   r   rÜ   r  rð  r   r   r´  r   r   rÂ   rI  r   ré  r   r  rÐ  r  rM   r+   r   r   r!  r–  r  r   r  ró  rF   r  rK   rÔ  rD   r”  rK  r¿  rq   r  r"  s          rw   r*  ÚDatetimeLikeArrayMixin.__sub__´  s•  € ä˜e W¨dÓ3ˆÜ.¨uÓ5ˆð ”CŠ<Ø:>¿-¹-»/ŠFÜ˜¤¤i´·±Ð@×AÑAØ×3Ñ3°U°FÓ;ŠFÜ˜œs×#Ñ#¬¯ª¸¿
¹
ÀD×(IÑ(Iä §¡Ñ(×0Ñ0°Ó5ˆBØ×3Ñ3°R°CÓ8ŠFÜ˜œz×*Ñ*à×%Ñ% u fÓ-ŠFÜ˜¤¬"¯-©-Ð8×9Ñ9Ø×2Ñ2°5Ó9ŠFÜ�^Š^˜E×"Ñ"ô ˜dŸj™j¬+×6Ñ6Ü.¨tÓ4Ð4Ü�} dÓ+ˆCØ×4Ñ4°U¿Y¹Y¿\¹\Ñ5IÌ8Ï<É<ÓXŠFä˜œv×&Ñ&Ø×)Ñ)¨%Ó0ŠFô �_Š_˜[¨#×.Ñ.à×2Ñ2°E°6Ó:ŠFÜ˜[×)Ñ)à×.Ñ.¨u´h·l±lÓC‰FÜ�_Š_˜[¨#×.Ñ.´*Øœ÷3
ñ 3
ð ×1Ñ1°%Ó8‰FÜ˜¤[×1Ñ1à×)Ñ)¨%Ó0‰FÜ˜k×*Ñ*Ü˜dŸj™j¬+×6Ñ6Ü.¨tÓ4Ð4Ü�} dÓ+ˆCØ×4Ñ4°U¿Y¹Y¿\¹\Ñ5IÌ8Ï<É<ÓX‰Fô "Ð!ä�fœbŸj™j×)Ñ)¬c¯oªo¸f¿l¹lÈC×.PÑ.PÝ9à!×0Ò0°¿|¹|ÑLÐLØˆry   c           	     óv  • [        USS 5      n[        R                  " US5      =(       d    [        U[        5      nU(       aˆ  [        R                  " U R
                  S5      (       ab  [        R                  " U5      (       a  [        U5      U -
  $ [        U[        5      (       d   SSK	J
n  UR                  " XR
                  S9nX-
  $ U R
                  R                  S:X  a]  [        US5      (       aL  U(       dE  [        S[        U 5      R                    S[        U5      R                    S	UR
                   S
35      e[        U R
                  ["        5      (       aJ  [        R                  " US5      (       a.  [        S[        U 5      R                    SUR
                   35      e[        R                  " U R
                  S5      (       a  [%        SU 5      n U * U-   $ X-
  nUR
                  R                  S:X  a7  [        S[        U 5      R                    S[        U5      R                    35      eU* $ )Nr   r  r	  r   rº  rÚ   rÿ  r   Ú[r¼  rq   )r1  r   r´  r~   rK   r   rí   r   r�   r¿  ro   r  r  r=  r  r  r  rM   r   )r„   r±   r#  Úother_is_dt64ro   Úflippeds         rw   Ú__rsub__ÚDatetimeLikeArrayMixin.__rsub__ð  sÉ  € Ü˜e W¨dÓ3ˆÜŸš¨°SÓ9÷ 
¼ZØœó>
ˆö œSŸ_š_¨T¯Z©Z¸×=Ñ=ô �}Š}˜U×#Ñ#ä  Ó'¨$Ñ.Ð.Ü˜eÔ%;×<Ñ<å<à%×4Ò4°UÇ+Á+ÑN�Ø‘<ÐØ�Z‰Z�_‰_ Ó#¬°°w×(?Ñ(?Îô Ø"¤4¨£:×#6Ñ#6Ð"7°vÜ˜“;×'Ñ'Ð(¨¨%¯+©+¨°að9óð ô ˜Ÿ
™
¤K×0Ñ0´S·_²_À[ÐRU×5VÑ5VäÐ.¬t°D«z×/BÑ/BÐ.CÀ6È%Ï+É+ÈÐWÓXÐXÜ�_Š_˜TŸZ™Z¨×-Ñ-ÜÐ(¨$Ó/ˆDØ�E˜U‘?Ð"à‘,ˆØ�=‰=×Ñ Ó$äØ"¤4¨£:×#6Ñ#6Ð"7°v¼dÀ5»k×>RÑ>RÐ=SÐTóð ð ˆxˆry   c                ó~   • X-   nUS S  U S S & [        U R                  [        5      (       d  UR                  U l        U $ rt   ©r~   r   rM   r—   rï   ©r„   r±   rˆ   s      rw   Ú__iadd__ÚDatetimeLikeArrayMixin.__iadd__  ó7   € Ø‘ˆØ™�)ˆ‰Qˆä˜$Ÿ*™*¤k×2Ñ2àŸ™ˆDŒJØˆry   c                ó~   • X-
  nUS S  U S S & [        U R                  [        5      (       d  UR                  U l        U $ rt   r4  r5  s      rw   Ú__isub__ÚDatetimeLikeArrayMixin.__isub__"  r8  ry   c                ó   >• [         TU ]  XS9$ )N)ÚqsÚinterpolation)rì   Ú	_quantile)r„   r=  r>  rð   s      €rw   r?  Ú DatetimeLikeArrayMixin._quantile.  s   ø€ ô ‰wÑ  BÐ ÐDÐDry   ©Úaxisr  c               óÐ   • [         R                  " SU5        [         R                  " XR                  5        [        R
                  " U R                  XS9nU R                  X5      $ )zË
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™   rA  )ÚnvÚvalidate_minÚvalidate_minmax_axisrÇ   rT   Únanminr•   Ú_wrap_reduction_result©r„   rB  r  r†   rˆ   s        rw   ÚminÚDatetimeLikeArrayMixin.min6  óI   € ô 	�Š˜˜FÔ#Ü
×Ò §i¡iÔ0ä—’˜tŸ}™}°4ÑGˆØ×*Ñ*¨4Ó8Ð8ry   c               óÐ   • [         R                  " SU5        [         R                  " XR                  5        [        R
                  " U R                  XS9nU R                  X5      $ )zË
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™   rA  )rD  Úvalidate_maxrF  rÇ   rT   Únanmaxr•   rH  rI  s        rw   ÚmaxÚDatetimeLikeArrayMixin.maxH  rL  ry   r   )r  rB  c               ó  • [        U R                  [        5      (       a"  [        S[	        U 5      R
                   S35      e[        R                  " U R                  X!U R                  5       S9nU R                  X#5      $ )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()©rB  r  r+  )r~   r   rM   r  r  r  rT   Únanmeanr•   rQ   rH  )r„   r  rB  rˆ   s       rw   ÚmeanÚDatetimeLikeArrayMixin.meanZ  st   € ôZ �d—j‘j¤+×.Ñ.äØ.¬t°D«z×/BÑ/BÐ.Cð D7ð 7óð ô —’Ø�M‰M ¸$¿)¹)»+ñ
ˆð ×*Ñ*¨4Ó8Ð8ry   c               óÞ   • [         R                  " SU5        Ub$  [        U5      U R                  :¼  a  [	        S5      e[
        R                  " U R                  XS9nU R                  X5      $ )Nr™   z abs(axis) must be less than ndimrA  )	rD  Úvalidate_medianÚabsrÇ   rÛ   rT   Ú	nanmedianr•   rH  rI  s        rw   ÚmedianÚDatetimeLikeArrayMixin.median”  sZ   € ä
×Ò˜2˜vÔ&àÑ¤ D£	¨T¯Y©YÓ 6ÜÐ?Ó@Ð@ä×!Ò! $§-¡-°dÑJˆØ×*Ñ*¨4Ó8Ð8ry   c                ó   • S nU(       a  U R                  5       n[        R                  " U R                  S5      US9u  p4UR                  U R                  R
                  5      n[        [        R                  U5      nU R                  U5      $ )Nr}   )r+  )
rQ   rR   Úmoder€   r•   r   r   rÜ   rK  rƒ   )r„   Údropnar+  Úi8modesÚ_Únpmodess         rw   Ú_modeÚDatetimeLikeArrayMixin._modež  sh   € ØˆÞØ—9‘9“;ˆDä—_’_ T§Y¡Y¨t£_¸4Ñ@‰
ˆØ—,‘,˜tŸ}™}×2Ñ2Ó3ˆÜ”r—z‘z 7Ó+ˆØ×&Ñ& wÓ/Ð/ry   c               óª  • U R                   nUR                  S:X  a.  US;   a  [        SU S35      eUS;   a  [        SU SU S35      eOX[        U[        5      (       a.  US;   a  [        SU S	35      eUS;   a  [        SU S
U S35      eOUS;   a  [        SU S	35      eU R
                  R                  S5      nSSKJn	  U	R                  U5      n
U	" XUS9nUR                  " U4UUUS S.UD6nUR                  UR                  ;   a  U$ UR                   S:X  d   eUS;   aw  SSKJn  [        U R                   [        5      (       a  [        S5      e[        SU 5      n SU R                    S3nUR                  U5      nUR"                  " XÌR                   S9$ UR                  U R
                  R                   5      nU R%                  U5      $ )Nr  )ÚsumÚprodÚcumsumÚcumprodÚvarÚskewÚkurtz,datetime64 type does not support operation 'r<  )rj  Ú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)).)rg  ri  rk  rl  rj  z"timedelta64 type does not support r|   r   )ÚWrappedCythonOp)Úhowr  Úhas_dropped_na)Ú	min_countÚngroupsÚcomp_idsr+  )ÚstdÚsemr×  z-'std' and 'sem' are not valid for PeriodDtyper`  zm8[r¼  rÚ   )r   r  r  r~   rM   r•   r€   Úpandas.core.groupby.opsrn  Úget_kind_from_howÚ_cython_op_ndim_compatro  Úcast_blocklistr¿  rq   r   rH  rÂ  rƒ   )r„   ro  rp  rq  rr  Úidsr†   r   Únpvaluesrn  r  rv   rÅ  rq   Ú	new_dtypes                  rw   Ú_groupby_opÚ"DatetimeLikeArrayMixin._groupby_op«  s  € ð —
‘
ˆØ�:‰:˜ÓàÐQÓQÜÐ"NÈsÈeÐSTÐ UÓVÐVØ�nÓ$äØ˜�uð 4Ø47°5¸ðEóð ð %ô ˜œ{×+Ñ+àÐQÓQÜÐ"?À¸uÀKÐ PÓQÐQØ�nÓ$äØ˜�uð 7Ø7:°e¸;ðHóð ð %ð Ð>Ó>ÜÐ@ÀÀÀ[ÐQÓRÐRð —=‘=×%Ñ% hÓ/ˆå;à×0Ñ0°Ó5ˆÙ ÀÑOˆà×.Ò.Øð
àØØØñ
ð ñ
ˆ
ð �6‰6�R×&Ñ&Ó&ð Ðð ×Ñ 8Ó+Ð+Ð+Ø�.Ó Ý9ä˜$Ÿ*™*¤k×2Ñ2ÜÐ OÓPÐPÜÐ8¸$Ó?ˆDØ˜dŸi™i˜[¨Ð*ˆIØ#Ÿ™¨Ó3ˆJØ!×-Ò-¨j×@PÑ@PÑQÐQà—_‘_ T§]¡]×%8Ñ%8Ó9ˆ
Ø×&Ñ& zÓ2Ð2ry   ©rï   ©Úreturnrb  )NNF)r   úDtype | Noner    rb  r�  ÚNone)r�  ztype[DatetimeLikeScalar])r¨   r/  r�  rr   )r¨   rr   r�  z)np.int64 | np.datetime64 | np.timedelta64)r±   rr   r�  rƒ  ©r�  r”   )r�  rj   )r�  znpt.NDArray[np.int64])rÏ   zstr | floatr�  únpt.NDArray[np.object_])F)rÖ   rb  r�  zCallable[[object], str])NN)r   zNpDtype | Noner    zbool | Noner�  r”   )ræ   r6   r�  rr   )ræ   z(SequenceIndexer | PositionalIndexerTupler�  r
   )ræ   r4   r�  zSelf | DTScalarOrNaT)r�  r–   )ræ   z,int | Sequence[int] | Sequence[bool] | slicer¨   zNaTType | Any | Sequence[Any]r�  rƒ  ©r�  rƒ  ©T)r    rb  ©r�  r
   )r   zLiteral['M8[ns]']r�  ro   )r   zLiteral['m8[ns]']r�  rq   ).)r   r‚  r�  r,   rt   )r+  únpt.NDArray[np.bool_]r�  rƒ  )r5  rb  r6  rb  )r5  rb  r�  r/  )r.  rb  )r�  z6np.int64 | np.datetime64 | np.timedelta64 | np.ndarray)rX  zLiteral['ignore'] | None)r»   r,   r�  r‰  )r�  r‰  )rˆ   r”   r�  r”   )r�  z
str | None)r�  zResolution | None)r�  r/  )r�  z@tuple[int | npt.NDArray[np.int64], None | npt.NDArray[np.bool_]])r�  ro   )r±   ro   r�  ro   )r±   zdatetime | np.datetime64r�  rq   )r±   ro   r�  rq   )r±   zTimestamp | DatetimeArrayr�  rq   )r±   r   r�  rp   )r±   rq   r�  r
   )r±   zTimedelta | TimedeltaArrayr�  r
   )r±   zPeriod | PeriodArrayr�  r…  )r±   r…  r�  r”   )r  r/  r  rb  r�  r
   )r=  znpt.NDArray[np.float64]r>  r/  r�  r
   )rB  úAxisInt | Noner  rb  )r  rb  rB  rŠ  )r_  rb  )
ro  r/  rp  rb  rq  Úintrr  r‹  rz  znpt.NDArray[np.intp])cr  Ú
__module__Ú__qualname__Ú__firstlineno__Ú__doc__Ú__annotations__r@   r›   r¡   Úpropertyr¤   r©   r­   r²   r�   r¼   rË   rÊ   rÒ   r×   râ   r   rç   rî   rý   rþ   r  r€   r*  r3  r9  r8  r0  rS  r   rR  r\   r\  rV   rQ   re  rk  r!   rq  rt  rx  r}  r�  rˆ  rŒ  r‘  rŸ  rx   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*  r1  r6  r:  r�   r?  rJ  rP  rU  r[  rc  r}  Ú__static_attributes__Ú__classcell__©rð   s   @rw   r�   r�   È   sË  ø‡ ñð $Ó#Ø4Ó4Ø)Ó)ØÓØ
Óàóó ðð INð(Ø'ð(ØAEð(à	õ(ð
 ó(ó ð(ô(ð((Ø"ð(à	2ô(ô.(ò,(ôDô:ð ó
(ó ð
(ð  (-¸$ñ
(Ø$ð
(à	 õ
(öð AEðØ#ðØ2=ðà	õð( ÛCó ØCàðà5ðð 
óó ð÷
ô&ð<!à9ð!ð -ð!ð 
÷	!ô,÷
71ñ 71ðr Ûó ØàÛBó ØBàÛCó ØCàÝ?ó Ø?÷#ñ #÷
ò"ðP  %Øñ;)ð ð	;)ð
 õ;)özö>@òD"ð ó
ó ð
ð" õ	 ó ð	 ô2,ônð ó!ó ð!ð ó'ó ð'ð .2¸4ðØ ðà	õð< ó!!ó ð!!ðF ó!ó ð!ðF óó ðð ó-ó ð-ð ó?ó ð?ð ó?ó ð?ð ó@ó ð@ò7ñv (¨	Ó2€GÙ(¨Ó4€HÙ'¨	Ó2€GÙ(¨Ó4€HÙ+¨MÓ:€KÙ,¨^Ó<€LÙ,¨^Ó<€LÙ-¨oÓ>€MÙ'¨	Ó2€GÙ(¨Ó4€HÙ*¨<Ó8€JÙ+¨MÓ:€Kà
ðà	Ióó ðð$ ó'ó ð'ðR óQó ðQðB óó ðð ð*Ø-ð*à	ó*ó ð*ð$ ó
-ó ð
-ð óUó ðUð& ó
ó ð
ò(ò.ô(.ð$ ó
ó ð
ð ó
ó ð
ð* ó2ó ð2ð& óó ðð0 ó"ó ð"ðH 8<÷ @ñ ˜iÓ(ñ9ó )ð9òv#ñ ˜iÓ(ñ9ó )ð9òv'ôRôð ðEà#ðEð ðEð 
ö	Eó ðEð Ø,0Àö 9ó ð9ð" Ø,0Àö 9ó ð9ð" &*À!÷ 89ðt Ø/3ÀDö 9ó ð9ö0ðH3ð ðH3ð ð	H3ð
 ðH3ð ðH3ð "÷H3ò H3ry   r�   c                  ó"   • \ rS rSrSrSS jrSrg)ÚDatelikeOpsiö  zC
Common ops for DatetimeIndex/PeriodIndex, but not TimedeltaIndex.
c                óÆ   • U R                  U[        R                  S9n[        5       (       a!  SSKJn  [        X#" [        R                  S9S9$ UR                  [        SS9$ )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Ü   rn  r   rY  r˜  rM  r  rÞ   )r„   rÐ   rˆ   r˜  s       rw   ÚstrftimeÚDatelikeOps.strftimeû  sS   € ðZ ×*Ñ*°{Ì2Ï6É6Ð*ÐRˆÜ×ÑÝ*ä˜F¨+¼r¿v¹vÑ*FÑGÐGØ�}‰}œV¨%ˆ}Ð0Ð0ry   r™   N)rÐ   r/  r�  r…  )r  rŒ  r�  rŽ  r�  rš  r’  r™   ry   rw   r–  r–  ö  s   † ñ÷21ry   r–  c                  ód  ^ • \ rS rSrSr\S 5       r\S 5       r\R                  S$S j5       r\
S%S j5       r\
\S&S j5       5       r\    S'S j5       r\S(S	 j5       r\S)S
 j5       rS*S+S jjrS rS,U 4S jjrS r  S-     S.S jjr  S-     S.S jjr  S-     S.S jjrSSS.S/S jjrSSS.S/S jjrS$S jrS0S jrS1U 4S jjr  S2   S3U 4S jjjr\ S4     S5U 4S jjj5       rS6S7U 4S jjjr          S8S jr SSSS .         S9U 4S! jjjr!\S:S" j5       r"S#r#U =r$$ );r™  i0  zC
Common ops for TimedeltaIndex/DatetimeIndex, but not PeriodIndex.
c                ó   • [        U 5      ert   rž   )r  r»   r   s      rw   Ú_validate_dtypeÚTimelikeOps._validate_dtype5  s   € ä! #Ó&Ð&ry   c                ó   • U R                   $ )a³  
Return the frequency object if it is set, otherwise None.

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

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

Examples
--------
>>> datetimeindex = pd.date_range(
...     "2022-02-22 02:22:22", periods=10, tz="America/Chicago", freq="h"
... )
>>> datetimeindex
DatetimeIndex(['2022-02-22 02:22:22-06:00', '2022-02-22 03:22:22-06:00',
               '2022-02-22 04:22:22-06:00', '2022-02-22 05:22:22-06:00',
               '2022-02-22 06:22:22-06:00', '2022-02-22 07:22:22-06:00',
               '2022-02-22 08:22:22-06:00', '2022-02-22 09:22:22-06:00',
               '2022-02-22 10:22:22-06:00', '2022-02-22 11:22:22-06:00'],
              dtype='datetime64[us, America/Chicago]', freq='h')
>>> datetimeindex.freq
<Hour>
r  rš   s    rw   r—   ÚTimelikeOps.freq9  s   € ð8 �z‰zÐry   c                ó  • Ubw  [        U5      nU R                  X5        U R                  R                  S:X  a&  [	        U[
        [        45      (       d  [        S5      eU R                  S:”  a  [        S5      eXl
        g )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     rw   r—   r¡  W  sh   € àÑÜ˜eÓ$ˆEØ×$Ñ$ TÔ1Ø�z‰z�‰ #Ó%¬j¸ÄÄsÀ×.LÑ.LÜÐ JÓKÐKà�y‰y˜1‹}Ü Ð!@ÓAÐAà�
ry   c                óV  • Uc  SU l         gUS:X  a)  U R                   c  [        U R                  5      U l         ggU[        R                  L a  gU R                   c.  [        U5      n[        U 5      R                  " X40 UD6  Xl         g[        U5      n[        XR                   5        g)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&   rx  r   Ú
no_defaultr  r¤  Ú_validate_inferred_freq)r„   r—   Úvalidate_kwdss      rw   Ú_maybe_pin_freqÚTimelikeOps._maybe_pin_freqd  s—   € ð ‰<àˆD�JØ�W‹_ð �z‰zÑ!ô ' t×'9Ñ'9Ó:�•
ð "ð ”S—^‘^Ò#ð Ø�Z‰ZÑô ˜T“?ˆDÜ�‹J×*Ò*¨4ÑG¸ÒGØ�Jô ˜T“?ˆDÜ# D¯*©*Õ5ry   c           	     ó¤  • UR                   nUR                  S:X  d  XBR                  :X  a  g U R                  " SUS   S[	        U5      UUR
                  S.UD6n[        R                  " UR                  UR                  5      (       d  [        eg! [         a2  nS[        U5      ;   a  Ue[        SU SUR                   35      UeSnAff = f)a%  
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—   rH  z	non-fixedúInferred frequency ú9 from passed values does not conform to passed frequency r™   )rx  r�  rt  Ú_generate_rangerÉ   rH  rÜ   Úarray_equalrÊ   rÛ   r/  )r  Úindexr—   r†   ÚinferredÚon_freqr2  s          rw   r¤  ÚTimelikeOps._validate_frequency…  sÝ   € ð ×&Ñ&ˆØ�:‰:˜‹?˜h¯,©,Ó6Øð	Ø×)Ò)ð Ø˜A‘hØÜ˜E›
ØØ—Z‘Zñð ñˆGô —>’> %§*¡*¨g¯l©l×;Ñ;Ü Ð ð <øäó 	Øœc #›hÓ&ð �	ô Ø% h Zð 08Ø8<¿¹°~ðGóð ðûð	ús   ®A$B Â
CÂ-C
Ã
Cc                ó   • [        U 5      ert   rž   )r  r­  r®  r¯  r—   r…   r†   s          rw   r²  ÚTimelikeOps._generate_range±  s   € ô " #Ó&Ð&ry   c                ó@   • [        U R                  R                  5      $ rt   )r    r•   r   rš   s    rw   r  ÚTimelikeOps._creso¹  s   € ä" 4§=¡=×#6Ñ#6Ó7Ð7ry   c                ó,   • [        U R                  5      $ )a¤  
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    rw   rH  ÚTimelikeOps.unit½  s   € ô6 ˜TŸZ™ZÓ(Ð(ry   Tc                óž  • US;  a  [        S5      e[        R                  " U R                  R                   SU S35      n[	        U R
                  X2S9n[        U R                  [        R                  5      (       a  UR                  nO[        SU 5      R                  n[        XaS9n[        U 5      R                  UUU R                  S9$ )	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¼  rA  ro   r½  r¾  )rÛ   rÜ   r   r  r   r•   r~   r   r  rK   r  rÂ  r—   )r„   rH  rB  r   rï  r|  r  s          rw   rI  ÚTimelikeOps.as_unitÚ  sµ   € ðT Ð.Ó.ÜÐHÓIÐIä—’˜DŸJ™JŸO™OÐ,¨B¨t¨f°AÐ6Ó7ˆÜ(¨¯©¸ÑQˆ
ä�d—j‘j¤"§(¡(×+Ñ+Ø"×(Ñ(‰Iä�o tÓ,×/Ñ/ˆBÜ'¨2Ñ9ˆIô �D‹z×%Ñ%ØØØ—‘ð &ð 
ð 	
ry   c                óâ   • U R                   UR                   :w  aS  U R                   UR                   :  a  U R                  UR                  5      n X4$ UR                  U R                  5      nX4$ rt   )r  rI  rH  r°   s     rw   rÃ  Ú"TimelikeOps._ensure_matching_resos  sZ   € Ø�;‰;˜%Ÿ,™,Ó&à�{‰{˜UŸ\™\Ó)Ø—|‘| E§J¡JÓ/�ð ˆ{Ðð Ÿ™ d§i¡iÓ0�Øˆ{Ðry   c                óø   >• U[         R                  [         R                  [         R                  4;   a3  [	        U5      S:X  a$  US   U L a  [        X5      " U R                  40 UD6$ [        TU ]   " X/UQ70 UD6$ )Nr¿   r   )	rÜ   ÚisnanÚisinfÚisfiniterÉ   r1  r•   rì   Ú__array_ufunc__)r„   ÚufuncÚmethodÚinputsr†   rð   s        €rw   rÊ  ÚTimelikeOps.__array_ufunc__%  sk   ø€ à”b—h‘h¤§¡¬"¯+©+Ð6Ó6Ü�F“˜qÓ Ø�q‘	˜TÒ!ô ˜5Ô)¨$¯-©-ÑB¸6ÑBÐBä‰wÒ& uÐH°vÒHÀÑHÐHry   c                ó:  • [        U R                  [        5      (       aI  [        SU 5      n U R	                  S 5      nUR                  XX45      nUR	                  U R                  X4S9$ U R                  S5      n[        [        R                  U5      n[        XR                  5      nUS:X  a  U R                  5       $ [        XrU5      n	U R                  U	[        S9nUR                  U R                   R                  5      nU R#                  X`R                  S9$ )Nro   )Ú	ambiguousÚnonexistentr}   r   ©rp  rÚ   )r~   r   rK   r   Útz_localizeÚ_roundr  r€   rÜ   rK  r*   r  r    r(   rq  r!   r•   rÂ  )
r„   r—   r^  rÐ  rÑ  Únaiverˆ   r»   ÚnanosÚ	result_i8s
             rw   rÔ  ÚTimelikeOps._round0  sñ   € ä�d—j‘j¤/×2Ñ2ä˜¨Ó.ˆDØ×$Ñ$ TÓ*ˆEØ—\‘\ $¨iÓEˆFØ×%Ñ%Ø—‘ 9ð &ð ð ð —‘˜4“ˆÜ”b—j‘j &Ó)ˆÜ" 4¯©Ó5ˆØ�A‹:à—9‘9“;ÐÜ! &°Ó6ˆ	Ø×)Ñ)¨)ÄÐ)ÐEˆØ—‘˜TŸ]™]×0Ñ0Ó1ˆØ×Ñ ¯j©jÐÐ9Ð9ry   c                óD   • U R                  U[        R                  X#5      $ )av  
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       rw   ÚroundÚTimelikeOps.roundF  s   € ðL �{‰{˜4¤×!:Ñ!:¸IÓSÐSry   c                óD   • U R                  U[        R                  X#5      $ )au  
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       rw   ÚfloorÚTimelikeOps.floor®  s   € ðL �{‰{˜4¤×!4Ñ!4°iÓMÐMry   c                óD   • U R                  U[        R                  X#5      $ )al  
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       rw   ÚceilÚTimelikeOps.ceil	  s   € ðL �{‰{˜4¤×!3Ñ!3°YÓLÐLry   NrA  c               ó^   • [         R                  " U R                  XU R                  5       S9$ ©NrS  )rT   Únananyr•   rQ   ©r„   rB  r  s      rw   rj  ÚTimelikeOps.any�	  s   € ä�}Š}˜TŸ]™]°È4Ï9É9Ë;ÑWÐWry   c               ó^   • [         R                  " U R                  XU R                  5       S9$ rç  )rT   Únanallr•   rQ   ré  s      rw   rm  ÚTimelikeOps.all…	  s!   € ô �}Š}˜TŸ]™]°È4Ï9É9Ë;ÑWÐWry   c                ó   • S U l         g rt   r  rš   s    rw   rþ   ÚTimelikeOps._maybe_clear_freq�	  s	   € Øˆ�
ry   c                ó>  • Uc  O‚[        U 5      S:X  aV  [        U[        5      (       aA  U R                  R                  S:X  a&  [        U[
        [        45      (       d  [        S5      eOUS:X  d   e[        U R                  5      nU R                  5       nXl        U$ )z—
Helper to get a view on the same data, with a new freq.

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

Returns
-------
Same type as self
r   r	  r£  r¦  )rÉ   r~   r   r   r  r   r   r  r&   rx  r€   rï   )r„   r—   r‡   s      rw   Ú
_with_freqÚTimelikeOps._with_freq�	  sƒ   € ð ‰<àÜ�‹Y˜!‹^¤
¨4´× <Ñ <à�z‰z�‰ #Ó%¬j¸ÄÄc¸{×.KÑ.KÜÐ JÓKÐKøð ˜7“?Ð"�?Ü˜T×/Ñ/Ó0ˆDà�i‰i‹kˆØŒ	Øˆ
ry   c                óŠ   >• [        U R                  [        R                  5      (       a  U R                  $ [        TU ]  5       $ rt   )r~   r   rÜ   r•   rì   Ú_values_for_json)r„   rð   s    €rw   rô  ÚTimelikeOps._values_for_json°	  s0   ø€ ä�d—j‘j¤"§(¡(×+Ñ+Ø—=‘=Ð Ü‰wÑ'Ó)Ð)ry   Fc                óÂ  >• U R                   bœ  U(       aV  U R                   R                  S:  a<  [        R                  " [	        U 5      S-
  SS[        R
                  S9nU S S S2   nX44$ [        R                  " [	        U 5      [        R
                  S9nU R                  5       nX44$ U(       a"  [        S[        U 5      R                   S35      e[        TU ]-  US9$ )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.)Úuse_na_sentinel)r—   rÂ   rÜ   ÚarangerÉ   Úintpr    ÚNotImplementedErrorr  r  rì   Ú	factorize)r„   rø  ÚsortÚcodesÚuniquesrð   s        €rw   rü  ÚTimelikeOps.factorize¶	  sÇ   ø€ ð
 �9‰9Ñ æ˜Ÿ	™	Ÿ™ a›ÜŸ	š	¤# d£)¨a¡-°°R¼r¿w¹wÑG�Ø™t ˜t™*�ð �>Ð!ô Ÿ	š	¤# d£)´2·7±7Ñ;�ØŸ)™)›+�Ø�>Ð!æô &Ø(¬¨d«×)<Ñ)<Ð(=ð >=ð =óð ô
 ‰wÑ °Ð ÐAÐAry   r   c                óX  >^• [         TU ]  X5      nUS   mUS:X  aˆ  U Vs/ s H  n[        U5      (       d  M  UPM     nnTR                  bW  [	        U4S jU 5       5      (       a=  [        US S USS  SS9n[	        U4S jU 5       5      (       a  TR                  nXcl        U$ s  snf )Nr   c              3  óT   >#   • U  H  oR                   TR                   :H  v •  M     g 7frt   ©r—   )rÁ   rµ   r%  s     €rw   rÃ   Ú0TimelikeOps._concat_same_type.<locals>.<genexpr>Þ	  s   øé € Ð+RÊ	À1¯F©F°c·h±hÖ,>Ê	ùs   ƒ%(r÷  r¿   T)Ústrictc              3  ó^   >#   • U  H"  oS    S   TR                   -   US   S    :H  v •  M$     g7f)r   r÷  r¿   Nr  )rÁ   Úpairr%  s     €rw   rÃ   r  à	  s-   øé € ÐNÊÀ˜A‘w˜r‘{ S§X¡XÑ-°°a±¸±Ö;Êùs   ƒ*-)rì   Ú_concat_same_typerÉ   r—   rm  Úziprï   )	r  Ú	to_concatrB  Únew_objrµ   ÚpairsrÆ  r%  rð   s	          @€rw   r  ÚTimelikeOps._concat_same_typeÏ	  s�   ù€ ô ‘'Ñ+¨IÓ<ˆà˜‰lˆà�1‹9ñ %.Ó8¢I˜q´°Q·Ÿ¡IˆIÐ8à�x‰xÑ#¬Ô+RÉ	Ó+R×(RÑ(RÜ˜I c r˜N¨I°a°b¨MÀ$ÑG�ÜÔNÉÓN×NÑNØ"Ÿx™x�HØ$,”MØˆùò 9s
   ¡B'¹B'c                óD   >• [         TU ]  US9nU R                  Ul        U$ )N)Úorder)rì   r    r—   rï   )r„   r  r  rð   s      €rw   r    ÚTimelikeOps.copyå	  s#   ø€ Ü‘'‘, U�,Ð+ˆØŸ	™	ˆŒØˆry   c          
     ó  • US:w  a  [         eU(       d  U R                  n	OU R                  R                  5       n	[        R                  " U	4UUUUUUS.UD6  U(       d  U $ [        U 5      R                  X�R                  S9$ )z"
See NDFrame.interpolate.__doc__.
Úlinear)rÌ  rB  r´  ÚlimitÚlimit_directionÚ
limit_arearÚ   )rû  r•   r    rS   Úinterpolate_2d_inplacer  rÂ  r   )
r„   rÌ  rB  r´  r  r  r  r    r†   Úout_datas
             rw   ÚinterpolateÚTimelikeOps.interpolateê	  sˆ   € ð  �XÓÜ%Ð%æØ—}‘}‰Hà—}‘}×)Ñ)Ó+ˆHä×&Ò&Øð		
àØØØØ+Ø!ñ		
ð ò		
ö ØˆKÜ�D‹z×%Ñ% h·j±jÐ%ÐAÐAry   )Ú
allow_fillrp  rB  c               ó  >• [         TU ]  XX4S9n[        R                  " U[        R                  S9n[
        R                  " U[        U 5      5      n[        U[        5      (       a  U R                  U5      nXul        U$ )N)Úindicesr  rp  rB  rÚ   )rì   ÚtakerÜ   r  rú  r   Úmaybe_indices_to_slicerÉ   r~   rò   rî   rï   )	r„   r  r  rp  rB  rˆ   Úmaybe_slicer—   rð   s	           €rw   r  ÚTimelikeOps.take
  sp   ø€ ô ‘‘Ø¸zð ð 
ˆô —*’*˜W¬B¯G©GÑ4ˆÜ×0Ò0°¼#¸d»)ÓDˆä�k¤5×)Ñ)Ø×)Ñ)¨+Ó6ˆDØŒLàˆry   c                ó  • [         R                  " U R                  5      (       d  gU R                  nU[        :g  n[        U R                  5      n[        U5      n[        R                  " X!U-  S:g  5      R                  5       S:H  nU$ )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_andrf  )r„   Ú
values_intÚconsider_valuesr  ÚppdÚ	even_dayss         rw   Ú_is_dates_onlyÚTimelikeOps._is_dates_only(
  st   € ô �Š˜tŸz™z×*Ñ*àà—Y‘Yˆ
Ø$¬Ñ,ˆÜ" 4§:¡:Ó.ˆÜ˜dÓ#ˆô —N’N ?ÀÑ4DÈÑ4IÓJ×NÑNÓPÐTUÑUˆ	ØÐry   r  r†  )r©  Údictr�  rƒ  )r—   r   r�  rƒ  )r¯  ú
int | Noner�  r
   )r�  r‹  )r�  rl   r‡  )rH  rl   rB  rb  r�  r
   )rË  znp.ufuncrÌ  r/  )Úraiser+  )rÐ  r9   rÑ  r:   r�  r
   )rB  rŠ  r  rb  r�  rb  rˆ  r„  )TF)rø  rb  rý  rb  )r   )r
  zSequence[Self]rB  r-   r�  r
   )ÚC)r  r/  r�  r
   )
rÌ  r2   rB  r‹  r´  rn   r    rb  r�  r
   )
r  r8   r  rb  rp  r   rB  r-   r�  r
   r€  )%r  rŒ  r�  rŽ  r�  Úclassmethodrž  r‘  r—   Úsetterr   rª  r¤  r²  r@   r  rH  rI  rÃ  rÊ  rÔ  rÜ  rà  rä  rj  rm  rþ   rñ  rô  rü  r  r    r  r  r'  r’  r“  r”  s   @rw   r™  r™  0  s   ø† ñð ñ'ó ð'ð ñó ðð: 
‡[�[ó
ó ð
ð ó6ó ð6ð@ Øó(ó ó ð(ðT ð'Ø",ð'à	ó'ó ð'ð ó8ó ð8ð ó)ó ð)ö8<
ò@÷	Iò:ð2 $+Ø'.ð	fTð !ðfTð %ð	fTð
 
õfTðV $+Ø'.ð	fNð !ðfNð %ð	fNð
 
õfNðV $+Ø'.ð	fMð !ðfMð %ð	fMð
 
õfMðV -1À÷ Xð -1À÷ Xôô÷@*ð !%ØðBàðBð ÷Bð Bð2 ð ðà!ðð ðð 
÷	ó ð÷*ñ ð
$Bð #ð$Bð ð	$Bð
 ð$Bð ð$Bð 
ô$BðT !ØØñàðð ð	ð
 ðð ðð 
÷ð ð0 óó öry   r™  c                ó^  • [        U S5      (       dN  [        U [        [        45      (       d%  [        R
                  " U 5      S:X  a  [        U 5      n [        U 5      n SnO.[        U [        5      (       a  [        SU S35      e[        U SS9n [        U [        5      (       d/  [        U [        5      (       a3  U R                  R                  S;   a  U R                  S	[        S
9n SnX4$ [        U [        5      (       a%  U R!                  5       n U R                  5       n SnX4$ [        U [        R"                  [$        45      (       d  [        R&                  " U 5      n X4$ [        U [(        5      (       a4  U R*                  R-                  U R.                  [0        S9R2                  n SnX4$ )Nr   r   FzCannot create a z from a MultiIndex.TrF  r  r  r™  rÒ  )r=  r~   rÝ   ÚtuplerÜ   rÇ   rB   rO   r  rb   r_   r]   r   r  rZ  r!   Ú_maybe_convert_datelike_arrayrK  r^   r  rN   rN  r  rþ  r   Ú_values)rŸ   r    Úcls_names      rw   Ú!ensure_arraylike_for_datetimeliker4  B
  sl  € ô �4˜×!Ñ!ä˜$¤¤u ×.Ñ.´2·7²7¸4³=ÀAÓ3Eä˜“:ˆDä6°tÓ<ˆØ‰Ü	�Dœ-×	(Ñ	(ÜÐ*¨8¨*Ð4GÐHÓIÐIä˜T°Ñ6ˆä�$œ×%Ñ%Ü�4Ô,×-Ñ-°$·*±*·/±/ÀTÓ2Ià�}‰}˜W¬tˆ}Ð4ˆØˆð  ˆ:Ðô 
�DÔ-×	.Ñ	.Ø×1Ñ1Ó3ˆØ�}‰}‹ˆØˆð ˆ:Ðô ˜œrŸz™z¬>Ð:×;Ñ;ä�zŠz˜$Óˆð ˆ:Ðô 
�Dœ.×	)Ñ	)ð �‰×#Ñ# D§J¡J¼3Ð#Ð?×GÑGˆØˆàˆ:Ðry   c                ó   • g rt   r™   ©r¯  s    rw   Úvalidate_periodsr7  i
  s   € Ø-0ry   c                ó   • g rt   r™   r6  s    rw   r7  r7  m
  s   € Ø+.ry   c                ó^   • U b)  [         R                  " U 5      (       d  [        SU  35      eU $ )zú
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
z periods must be an integer, got )r   r  r  r6  s    rw   r7  r7  q
  s2   € ð$ Ñ¤3§>¢>°'×#:Ñ#:ÜÐ:¸7¸)ÐDÓEÐEð €Nry   c                ó\   • Ub(  U b   X:w  a  [        SU SU R                   35      eU c  Un U $ )zâ
If the user passes a freq and another freq is inferred from passed data,
require that they match.

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

Returns
-------
freq : DateOffset or None
r°  r±  )rÛ   rt  )r—   rx  s     rw   r¨  r¨  Š
  sM   € ð  Ñ ØÑ Ó 5ÜØ% m _ð 5?à—<‘<�.ð"óð ð
 ‰<Ø ˆDà€Kry   c                ó  • [        U [        5      (       a  U R                  $ [        U [        5      (       a6  U R                  S;  a  [        SU < S35      eU R                  R                  $ [        R                  " U 5      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   rH  rI   r  rÛ   Úpyarrow_dtyperÜ   Údatetime_datarÚ   s    rw   r½  r½  §
  sq   € ô �%œ×)Ñ)Ø�z‰zÐÜ	�Eœ:×	&Ñ	&Ø�:‰:˜TÓ!Ü  ™xÐ'CÐDÓEÐEØ×"Ñ"×'Ñ'Ð'Ü×Ò˜EÓ" 1Ñ%Ð%ry   )ru   r/  )rŠ   r1   r�  r1   )r    rb  r3  r/  r�  ztuple[ArrayLike, bool])r¯  rƒ  r�  rƒ  )r¯  r‹  r�  r‹  )r¯  r*  r�  r*  )r—   r–   rx  r–   r�  r–   )r   z'DatetimeTZDtype | np.dtype | ArrowDtyper�  r/  )¨Ú
__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<   rD  Ú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`   rM  ra   rb   Úpandas.core.indexersrc   rd   Úpandas.core.ops.commonre   Úpandas.core.ops.invalidrf   rg   Úpandas.tseriesrh   Úcollections.abcri   rj   rk   rl   rY  rn   r¿  ro   rp   rq   rr   r�  rx   r�   r�   r–  r™  r4  r7  r¨  r½  r™   ry   rw   Ú<module>re     sØ  ðÞ "÷õ Û ÷
÷ 
õ 
ó ã å -Ý ,÷÷÷ ÷ ÷ ÷ ñ ÷*õ KÝ =Ý C÷÷ ÷ ÷ ó õ$ /÷ñ õ
õ 5å K÷÷ ÷õ ÷÷÷
ó ÷ñ õ
 ?Ý *÷õ ?Ý 2Ý 3ß  Ð  ÷ñ ÷
õ <÷õ
 'æ÷ñ õ (å÷ñ ð .°Ñ7€ˆyÓ 7ô1ô
ô2k3˜XÐ'Bô k3ô\171Ð(ô 71ôtKÐ(ô Kðd$Øð$Ø #ð$àô$ðN 
Û 0ó 
Ø 0ð 
Û .ó 
Ø .ôð2Ø
ðØ,=ðàôõ:&ry   