Ë
    u™ãj~ª ã                  óæ  — d dl mZ d dlmZmZmZ d dlmZmZmZm	Z	m
Z
 d dlZd dlZd dlmZ d dlmZ d dlmZmZ d dlmZmZmZmZmZmZmZmZmZm Z m!Z!m"Z"m#Z#m$Z$m%Z%m&Z&m'Z'm(Z(m)Z)m*Z* d d	l+m,Z,m-Z- d d
l.m/Z/ d dl0m1Z1 d dl2m3Z3 d dl4m5Z5m6Z6 d dl7m8Z8 d dl9m:Z: d dl;m<Z< d dl=m>Z>m?Z?m@Z@mAZAmBZBmCZC d dlDmEZEmFZFmGZG d dlHmIZJ d dlKmLZLmMZM d dlNmOc mPZQ d dlRmSZS d dlTmUZUmVZV erFd dlWmXZXmYZY d dlZZ[d dl\m]Z]m^Z^m_Z_m`Z`maZambZbmcZcmdZd d dlemfZf d dlHmgZg d dlhmiZi  eded«      Zj eded«      Zke
d3d4d„«       Zle
d3d5d„«       Zl	 d6	 	 	 	 	 d7d „Zld8d9d!„Zm e8d"«       G d#„ d$eJjÜ                  eJjÞ                  «      «       Zpd%dd%d%d&dd'œ	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 d:d(„Zq	 	 	 	 	 	 	 	 	 	 d;d)„Zr	 	 	 d<	 	 	 	 	 	 	 	 	 d=d*„Zsd8d>d+„Ztd?d,„Zud-„ Zv	 d@	 	 	 	 	 dAd.„Zw	 	 	 	 	 	 	 	 dBd/„Zx	 	 	 	 	 	 	 	 dCd0„Zy	 	 	 	 dDd1„Zz	 	 	 	 	 	 	 	 	 	 	 	 dEd2„Z{y)Fé    )Úannotations)ÚdatetimeÚ	timedeltaÚtzinfo)ÚTYPE_CHECKINGÚSelfÚTypeVarÚcastÚoverloadN)Úusing_string_dtype)Ú_global_config)ÚlibÚtslib)Ú
BaseOffsetÚNaTÚNaTTypeÚOutOfBoundsDatetimeÚOutOfBoundsTimedeltaÚ	TimedeltaÚ	TimestampÚastype_overflowsafeÚfieldsÚget_supported_dtypeÚget_unit_from_dtypeÚints_to_pydatetimeÚis_date_array_normalizedÚis_supported_dtypeÚis_unitlessÚnormalize_i8_timestampsÚ	timezonesÚ	to_offsetÚtz_convert_from_utcÚtzconversion)Ú	DAYS_FULLÚMONTHS_FULL)Úabbrev_to_npy_unit)ÚRelativeDeltaOffset)ÚHAS_PYARROW)ÚPandas4WarningÚPerformanceWarning)Ú
set_module)Úfind_stack_level)Úvalidate_inclusive)ÚDT64NS_DTYPEÚINT64_DTYPEÚis_bool_dtypeÚis_float_dtypeÚis_string_dtypeÚpandas_dtype)ÚDatetimeTZDtypeÚExtensionDtypeÚPeriodDtype)Údatetimelike)Úgenerate_daily_offset_rangeÚgenerate_regular_range)Úget_period_alias)ÚDayÚTick)ÚCallableÚ	Generator)Ú	ArrayLikeÚDateTimeErrorChoicesÚDtypeObjÚIntervalClosedTypeÚTimeAmbiguousÚTimeNonexistentÚTimeUnitÚnpt©Ú	DataFrame©ÚPeriodArray)ÚArrowStringArrayÚ_TimestampNoneT1Ú_TimestampNoneT2c                 ó   — y ©N© ©ÚtzÚunits     úg/var/www/html/python-recuperauto-other/env/lib/python3.12/site-packages/pandas/core/arrays/datetimes.pyÚtz_to_dtyperU   u   s   € ØFIó    c                 ó   — y rO   rP   rQ   s     rT   rU   rU   y   s   € ØLOrV   c                óR   — | €t        j                  d|› d�«      S t        | |¬«      S )zØ
    Return a datetime64[ns] dtype appropriate for the given timezone.

    Parameters
    ----------
    tz : tzinfo or None
    unit : str, default "ns"

    Returns
    -------
    np.dtype or DatetimeTZDtype
    úM8[ú]rQ   )ÚnpÚdtyper4   rQ   s     rT   rU   rU   }   s-   € ð 
€zÜ�x‰x˜#˜d˜V 1˜Ó&Ð&ä "¨4Ô0Ð0rV   c                ó@   ‡— ˆfd„}| |_         ||_        t        |«      S )Nc                ó<  •— | j                  «       }‰| j                  v rF‰j                  d«      r| j                  ‰d ¬«      S t	        j
                  |‰| j                  ¬«      S t	        j
                  |‰| j                  ¬«      }| j                  |d d¬«      }|S )N)ÚstartÚend©Úfreq©ÚresoÚfloat64)Ú
fill_valueÚconvert)Ú_local_timestampsÚ	_bool_opsÚendswithÚ_get_start_end_fieldr   Úget_date_fieldÚ_cresoÚ_maybe_mask_results)ÚselfÚvaluesÚresultÚfields      €rT   Úfz_field_accessor.<locals>.f“   s�   ø€ Ø×'Ñ'Ó)ˆà�D—N‘NÑ"Ø�~‰~Ð.Ô/Ø×0Ñ0°¸TÐ0ÓBÐBÜ×(Ñ(¨°¸T¿[¹[ÔIÐIä×&Ñ& v¨u¸4¿;¹;ÔGˆØ×)Ñ)¨&¸TÈ9Ð)ÓUˆàˆrV   )Ú__name__Ú__doc__Úproperty)Únamerr   Ú	docstringrs   s    `  rT   Ú_field_accessorry   ’   s"   ø€ ôð €A„JØ€A„IÜ�A‹;ÐrV   zpandas.arraysc                  óÌ  ‡ — e Zd ZU dZdZeej                  fZd„ Z	de
d<   ed‚d„«       Zedƒd„«       Zg d¢Zd	e
d
<   g d¢Zd	e
d<   g d¢Zd	e
d<   eez   ez   ddgz   Zd	e
d<   g d¢Zd	e
d<   dZde
d<   ed„ «       Zeef	 	 	 	 	 d„ˆ fd„«       Zedddœd…d„«       Zeddej4                  ddddœ	 	 	 	 	 	 	 	 	 d†d„«       Ze	 	 	 	 	 d‡d d!œ	 	 	 	 	 	 	 	 	 	 	 	 	 dˆd"„«       Zd‚d#„Zd‰d$„ZdŠd%„Zd‹d&„Z edŒd'„«       Z!ed�d(„«       Z"e"jF                  d)„ «       Z"ed�d*„«       Z$edŽd+„«       Z%d�d�ˆ fd,„Z&d‘d-„Z'd’d“ˆ fd/„Z(d0dd1œ	 	 	 d”d2„Z)dŠd3„Z*d•d4„Z+d–d5„Z,d—d6„Z-e.j^                  	 	 d˜	 	 	 	 	 d™d7„«       Z0dšd8„Z1d—d9„Z2d—d:„Z3d›dœd;„Z4d›dšd<„Z5d�d=„Z6d›dšd>„Z7d�d?„Z8džd@„Z9e:dŸdA„«       Z;edšdB„«       Z<edšdC„«       Z=edšdD„«       Z>d dE„Z? e@dFdGdH«      ZA e@dIdJdK«      ZB e@dLdMdN«      ZC e@dOdPdQ«      ZD e@dRdSdT«      ZE e@dUdVdW«      ZF e@dXdYdZ«      ZG e@d[d d\«      ZHd]ZI e@d^d_eI«      ZJed`„ «       ZKeda„ «       ZL e@dbdcdd«      ZMede„ «       ZN e@dfdgdh«      ZO e@didjdk«      ZPedl„ «       ZQd¡dm„ZRdnZS e@dodoeSj©                  dp¬q«      «      ZU e@drdreSj©                  ds¬q«      «      ZV e@dtdtdu«      ZW e@dvdvdw«      ZX e@dxdxdy«      ZY e@dzdzd{«      ZZ e@d|d|d}«      Z[d¢d~„Z\d.ddœ	 	 	 	 	 d£ˆ fd€„Z]	 	 	 	 	 	 d¤	 	 	 	 	 	 	 d¥d�„Z^ˆ xZ_S )¦ÚDatetimeArraya  
    Pandas ExtensionArray for tz-naive or tz-aware datetime data.

    .. warning::

       DatetimeArray is currently experimental, and its API may change
       without warning. In particular, :attr:`DatetimeArray.dtype` is
       expected to change to always be an instance of an ``ExtensionDtype``
       subclass.

    Parameters
    ----------
    data : Series, Index, DatetimeArray, ndarray
        The datetime data.

        For DatetimeArray `values` (or a Series or Index boxing one),
        `dtype` and `freq` will be extracted from `values`.

    dtype : numpy.dtype or DatetimeTZDtype
        Note that the only NumPy dtypes allowed are 'datetime64[ns]',
        'datetime64[us]', 'datetime64[ms]', 'datetime64[s]'.
    freq : str or Offset, optional
        The frequency.
    copy : bool, default False
        Whether to copy the underlying array of values.

    Attributes
    ----------
    None

    Methods
    -------
    None

    See Also
    --------
    DatetimeIndex : Immutable Index for datetime-like data.
    Series : One-dimensional labeled array capable of holding datetime-like data.
    Timestamp : Pandas replacement for python datetime.datetime object.
    to_datetime : Convert argument to datetime.
    period_range : Return a fixed frequency PeriodIndex.

    Examples
    --------
    >>> pd.arrays.DatetimeArray._from_sequence(
    ...     pd.DatetimeIndex(["2023-01-01", "2023-01-02"], freq="D")
    ... )
    <DatetimeArray>
    ['2023-01-01 00:00:00', '2023-01-02 00:00:00']
    Length: 2, dtype: datetime64[us]
    Údatetimearrayc                óR   — t        j                  | d«      xs t        | t        «      S ©NÚM)r   Úis_np_dtypeÚ
isinstancer4   )Úxs    rT   ú<lambda>zDatetimeArray.<lambda>Ý   s!   € Ü�‰˜˜3ÓÒA¤:¨a´Ó#Að rV   zCallable[[DtypeObj], bool]Ú_is_recognized_dtypec                óB   — t        j                  d| j                  «      S )Nr   )r[   Ú
datetime64rS   ©ro   s    rT   Ú_internal_fill_valuez"DatetimeArray._internal_fill_valueá   s   € ä�}‰}˜U D§I¡IÓ.Ð.rV   c                ó   — t         S rO   )r   r‡   s    rT   Ú_scalar_typezDatetimeArray._scalar_typeå   s   € äÐrV   )Úis_month_startÚis_month_endÚis_quarter_startÚis_quarter_endÚis_year_startÚis_year_endÚis_leap_yearz	list[str]ri   )ÚyearÚmonthÚdayÚhourÚminuteÚsecondÚday_of_weekÚday_of_yearÚquarterÚdays_in_monthÚmicrosecondÚ
nanosecondÚ
_field_ops)ÚdateÚtimeÚtimetzÚ
_other_opsrS   rR   Ú_datetimelike_ops)Ú	to_periodÚtz_localizeÚ
tz_convertÚ	normalizeÚstrftimeÚroundÚfloorÚceilÚ
month_nameÚday_nameÚas_unitÚ_datetimelike_methodsiè  ú)np.dtype[np.datetime64] | DatetimeTZDtypeÚ_dtypec                ó*  — t        |«      }t        |j                  «       t        |t        j                  «      r|j                  |k7  rt	        d«      ‚|S t        j
                  |j                  «      d   }||j                  k7  rt	        d«      ‚|S )Nz'Values resolution does not match dtype.r   )Ú_validate_dt64_dtyper\   r�   r[   Ú
ValueErrorÚdatetime_datarS   )Úclsrp   r\   Úvunits       rT   Ú_validate_dtypezDatetimeArray._validate_dtype  s   € ô % UÓ+ˆÜ˜VŸ\™\Ô*Ü�eœRŸX™XÔ&Ø�|‰|˜uÒ$Ü Ð!JÓKÐKð
 ˆô ×$Ñ$ V§\¡\Ó2°1Ñ5ˆEØ˜Ÿ
™
Ò"Ü Ð!JÓKÐKØˆrV   c                ó6  •— t        |t        j                  «      sJ ‚|j                  dk(  sJ ‚t        |t        j                  «      r||j                  k(  sJ ‚t        |«      r&J ‚|j                  t        |j                  «      k(  sJ ‚t        ‰| �%  ||«      S r~   )
r�   r[   ÚndarrayÚkindr\   r   rm   r   ÚsuperÚ_simple_new)r¶   rp   r\   Ú	__class__s      €rT   r½   zDatetimeArray._simple_new+  s‰   ø€ ô ˜&¤"§*¡*Ô-Ð-Ð-Ø�z‰z˜SÒ Ð Ð Ü�eœRŸX™XÔ&Ø˜FŸL™LÒ(Ð(Ð(Ü" 5Ô)Ð)Ð)ð —<‘<Ô#6°v·|±|Ó#DÒDÐDÐDä‰wÑ" 6¨5Ó1Ð1rV   NF©r\   Úcopyc               ó*   — | j                  |||¬«      S ©Nr¿   )Ú_from_sequence_not_strict)r¶   Úscalarsr\   rÀ   s       rT   Ú_from_sequencezDatetimeArray._from_sequence=  s   € à×,Ñ,¨W¸EÈÐ,ÓMÐMrV   Úraise)r\   rÀ   rR   ÚdayfirstÚ	yearfirstÚ	ambiguousc          	     ó:  — |du }|t         j                  u rd}nt        j                  |«      }t	        |«      }t        |||«      }d}	|�t        j                  |«      }	t        j                  ||d¬«      \  }}t        |||||||	¬«      \  }
}t        |||«       |�|rt        d«      ‚t        j                  |
j                  «      d   }t        d|«      }t        ||«      }| j!                  |
|¬«      }|	� |	|j"                  k7  r|j%                  |	«      }|S )	z\
        A non-strict version of _from_sequence, called from DatetimeIndex.__new__.
        Nr{   )Úcls_name©rÀ   rR   rÇ   rÈ   rÉ   Úout_unitz^Passed data is timezone-aware, incompatible with 'tz=None'. Use obj.tz_localize(None) instead.r   rE   ©r\   )r   Ú
no_defaultr    Úmaybe_get_tzr³   Ú_validate_tz_from_dtypeÚdtlÚdtype_to_unitÚ!ensure_arraylike_for_datetimelikeÚ_sequence_to_dt64r´   r[   rµ   r\   r
   rU   r½   rS   r®   )r¶   Údatar\   rÀ   rR   rÇ   rÈ   rÉ   Úexplicit_tz_nonerS   ÚsubarrÚ	data_unitÚ
data_dtyperq   s                 rT   rÃ   z'DatetimeArray._from_sequence_not_strictA  s7  € ð$  ˜:ÐØ”—‘ÑØ‰Bä×'Ñ'¨Ó+ˆBä$ UÓ+ˆä$ U¨BÐ0@ÓAˆàˆØÐÜ×$Ñ$ UÓ+ˆDä×:Ñ:Ø�$ ô
‰
ˆˆdô 'ØØØØØØØô
‰
ˆ�ô 	   rÐ+;Ô<Øˆ>Ñ.Üð5óð ô
 ×$Ñ$ V§\¡\Ó2°1Ñ5ˆ	Ü˜ YÓ/ˆ	Ü   YÓ/ˆ
Ø—‘ ¨z�Ó:ˆØÐ ¨¯©Ò 3ð
 —^‘^ DÓ)ˆFàˆrV   Úns©rS   c
               óŠ  — t        j                  |«      }|€ t        d„ |||fD «       «      rt        d«      ‚t	        j
                  ||||«      dk7  rt        d«      ‚t        |«      }|�t        |«      }|�t        |«      }|t        u s|t        u rt        d«      ‚|
�|
dvrt        d«      ‚d}
|�|j                  |
d	¬
«      }|�|j                  |
d	¬
«      }t        |	«      \  }}t        |||«      \  }}t        |||«      }|�t        |||||«      }t        |||||«      }|��rt        |t        «      s>|�|j                   �|j#                  d «      }|�|j                   �|j#                  d «      }t        |t        t$        f«      rt'        |||||
¬«      }nz|j(                  dk\  r|j*                  r	 t-        |||||
¬«      }nMt5        |||||
¬«      }t7        j8                  |D �cg c]  }|j:                  ‘Œ c}t6        j<                  ¬«      }|�|j                   n|j                   }|�Ð|€Ît?        j@                  |«      s%tC        |
«      }tE        jF                  |||||¬«      }|�|j#                  |||«      }|�}|j#                  |||«      }nitI        d|«      }t7        jJ                  d|j:                  |j:                  z
  |d¬«      |j:                  z   }|jL                  dk7  r|jO                  d«      }||k(  r
|r|s�|dd }nŠ|�t        |«      j:                  ntQ        |«      r|d   nd}|�t        |«      j:                  ntQ        |«      r|d   nd}|r|s4|stQ        |«      r|d   |k(  r|dd  }|stQ        |«      r|d   |k(  r|d d }|jS                  d|
› d�«      }tU        ||
¬«      }| jW                  ||¬«      S # t.        t0        t2        f$ rW t5        |||||
¬«      }t7        j8                  |D �cg c]  }|j:                  ‘Œ nc c}w c}t6        j<                  ¬«      }Y �Œ$w xY wc c}w )Nc              3  ó$   K  — | ]  }|d u –— Œ
 y ­wrO   rP   )Ú.0r‚   s     rT   ú	<genexpr>z0DatetimeArray._generate_range.<locals>.<genexpr>“  s   è ø€ ÒI¨a  T¤	ÑIùs   ‚z1Must provide freq argument if no data is suppliedé   zVOf the four parameters: start, end, periods, and freq, exactly three must be specifiedz$Neither `start` nor `end` can be NaT)ÚsÚmsÚusrÛ   z+'unit' must be one of 's', 'ms', 'us', 'ns'rÛ   F©Úround_okrÜ   é   )r_   r`   ÚperiodsÚoffsetrS   rÎ   ©rÉ   ÚnonexistentÚcresoÚintr   Úint64Úi8éÿÿÿÿzdatetime64[rZ   ),rÒ   Úvalidate_periodsÚanyr´   ÚcomÚcount_not_noner!   r   r   r®   r-   Ú_maybe_normalize_endpointsÚ_infer_tz_from_endpointsÚ_maybe_localize_pointr�   r<   rR   r¥   r;   r9   ÚnÚ_supports_daily_offset_maskr8   r   r   ÚOverflowErrorÚ_generate_ranger[   ÚarrayÚ_valuerî   r    Úis_utcr&   r#   Útz_localize_to_utcr
   Úlinspacer\   ÚastypeÚlenÚviewrU   r½   )r¶   r_   r`   rè   rb   rR   r§   rÉ   rë   Ú	inclusiverS   Úleft_inclusiveÚright_inclusiveÚi8valuesÚxdrr‚   Úendpoint_tzrì   Ústart_i8Úend_i8Údt64_valuesr\   s                         rT   rû   zDatetimeArray._generate_rangeƒ  sf  € ô ×&Ñ& wÓ/ˆØˆ<œCÑI°G¸UÀCÐ3HÔIÔIÜÐPÓQÐQä×Ñ˜e S¨'°4Ó8¸AÒ=Üð<óð ô ˜‹ˆàÐÜ˜eÓ$ˆEàˆ?Ü˜C“.ˆCà”C‰<˜3¤#™:ÜÐCÓDÐDàÐØÐ2Ñ2Ü Ð!NÓOÐOàˆDàÐØ—M‘M $°�MÓ7ˆEØˆ?Ø—+‘+˜d¨U�+Ó3ˆCä*<¸YÓ*GÑ'ˆ˜Ü/°°s¸IÓF‰
ˆˆsÜ% e¨S°"Ó5ˆàˆ>ä)¨%°°r¸9ÀkÓRˆEÜ'¨¨T°2°yÀ+ÓNˆCàÑô
 ˜d¤DÔ)ØÐ$¨¯©Ð)=Ø!×-Ñ-¨dÓ3�EØ�? s§v¡vÐ'9ØŸ/™/¨$Ó/�Cä˜$¤¤s Ô,Ü1°%¸¸gÀtÐRVÔW‘Ø—‘˜1’ ×!AÒ!AðQÜ:Ø˜s G¨T¸ô ‘Hô &ØØØ#ØØô�ô Ÿ8™8°sÖ$;°! Q§X£XÒ$;Ä2Ç8Á8ÔL�à&+Ð&7˜%Ÿ(š(¸S¿V¹VˆKàˆ~ +Ð"5Ü ×'Ñ'¨Ô+ô /¨tÓ4�EÜ+×>Ñ>Ø ØØ"+Ø$/Ø#ô �Hð Ð$Ø!×-Ñ-¨b°)¸[ÓI�EØ�?ØŸ/™/¨"¨i¸ÓE‘Cô ˜5 'Ó*ˆGä—‘˜A˜sŸz™z¨E¯L©LÑ8¸'ÈÔQØ—,‘,ñð ð �~‰~ Ò%ð $Ÿ?™?¨4Ó0�à�CŠ<Ù!©Ø# A b˜>‘ð Ð$ô ˜%Ó ×'Ò'ô �x”=ð ˜a’[àð ð �?ô ˜#“×%Ò%ô �x”=ð ˜b’\àð ñ "©Ù%¬#¨h¬-¸HÀQ¹KÈ8Ò<SØ'¨¨˜|�HÙ&¬3¨x¬=¸XÀb¹\ÈVÒ=SØ'¨¨˜}�Hà—m‘m k°$°°qÐ$9Ó:ˆÜ˜B TÔ*ˆØ�‰˜{°%ˆÓ8Ð8øôg ,Ô-AÄ=ÐQò 
Qô *Ø#ØØ 'Ø#Ø!ô�Cô  "Ÿx™x¸3Ö(?°a¨¯«Ñ(?ùÔ(?ÄrÇxÁxÔP“Hð
Qüò& %<s$   Æ:O Ç.Q Ï7P=Ð	P
ÐP=Ð<P=c                ó(  — t        || j                  «      s|t        urt        d«      ‚| j	                  |«       |t        u r*t        j                  |j                  | j                  «      S |j                  | j                  d¬«      j                  S )Nz'value' should be a Timestamp.Frå   )r�   rŠ   r   r´   Ú_check_compatible_withr[   r†   rý   rS   r®   Úasm8©ro   Úvalues     rT   Ú_unbox_scalarzDatetimeArray._unbox_scalar&  sp   € Ü˜% ×!2Ñ!2Ô3¸ÄSÑ8HÜÐ=Ó>Ð>Ø×#Ñ# EÔ*Ø”C‰<Ü—=‘= §¡¨t¯y©yÓ9Ð9à—=‘= §¡°U�=Ó;×@Ñ@Ð@rV   c                ó0   — t        || j                  ¬«      S )N©rR   )r   rR   r  s     rT   Ú_scalar_from_stringz!DatetimeArray._scalar_from_string/  s   € Ü˜ 4§7¡7Ô+Ð+rV   c                ó8   — |t         u ry | j                  |«       y rO   )r   Ú_assert_tzawareness_compat)ro   Úothers     rT   r  z$DatetimeArray._check_compatible_with2  s   € Ø”C‰<ØØ×'Ñ'¨Õ.rV   c                ó€   — |j                  d«      }t        j                  || j                  | j                  ¬«      }|S )Nrï   )rd   rR   )r  r   Ú_from_value_and_resorm   rR   )ro   r‚   r  Útss       rT   Ú	_box_funczDatetimeArray._box_func:  s0   € à—‘�t“ˆÜ×+Ñ+¨E¸¿¹ÈÏÉÔPˆØˆ	rV   c                ó   — | j                   S )a%  
        The dtype for the DatetimeArray.

        .. warning::

           A future version of pandas will change dtype to never be a
           ``numpy.dtype``. Instead, :attr:`DatetimeArray.dtype` will
           always be an instance of an ``ExtensionDtype`` subclass.

        Returns
        -------
        numpy.dtype or DatetimeTZDtype
            If the values are tz-naive, then ``np.dtype('datetime64[ns]')``
            is returned.

            If the values are tz-aware, then the ``DatetimeTZDtype``
            is returned.
        )r±   r‡   s    rT   r\   zDatetimeArray.dtype@  s   € ð. �{‰{ÐrV   c                ó0   — t        | j                  dd«      S )aç  
        Return the timezone.

        This property returns the timezone information associated with the
        datetime data. If the data is timezone-naive (i.e. has no timezone
        information), it returns None.

        Returns
        -------
        zoneinfo.ZoneInfo, datetime.tzinfo, pytz.tzinfo.BaseTZInfo, dateutil.tz.tz.tzfile, or None
            Returns None when the array is tz-naive.

        See Also
        --------
        DatetimeIndex.tz_localize : Localize tz-naive DatetimeIndex to a
            given time zone, or remove timezone from a tz-aware DatetimeIndex.
        DatetimeIndex.tz_convert : Convert tz-aware DatetimeIndex from
            one time zone to another.

        Examples
        --------
        For Series:

        >>> s = pd.Series(["1/1/2020 10:00:00+00:00", "2/1/2020 11:00:00+00:00"])
        >>> s = pd.to_datetime(s)
        >>> s
        0   2020-01-01 10:00:00+00:00
        1   2020-02-01 11:00:00+00:00
        dtype: datetime64[us, UTC]
        >>> s.dt.tz
        datetime.timezone.utc

        For DatetimeIndex:

        >>> idx = pd.DatetimeIndex(
        ...     ["1/1/2020 10:00:00+00:00", "2/1/2020 11:00:00+00:00"]
        ... )
        >>> idx.tz
        datetime.timezone.utc
        rR   N)Úgetattrr\   r‡   s    rT   rR   zDatetimeArray.tzY  s   € ôV �t—z‘z 4¨Ó.Ð.rV   c                ó   — t        d«      ‚)NzNCannot directly set timezone. Use tz_localize() or tz_convert() as appropriate)ÚAttributeErrorr  s     rT   rR   zDatetimeArray.tz†  s   € ô ð-ó
ð 	
rV   c                ó   — | j                   S )z(
        Alias for tz attribute
        r  r‡   s    rT   r   zDatetimeArray.tzinfoŽ  s   € ð
 �w‰wˆrV   c                óZ   — t        | j                  | j                  | j                  ¬«      S )zN
        Returns True if all of the dates are at midnight ("no time")
        rc   )r   Úasi8rR   rm   r‡   s    rT   Úis_normalizedzDatetimeArray.is_normalized•  s   € ô
 (¨¯	©	°4·7±7ÀÇÁÔMÐMrV   c                óN   •— |€| j                   rt        }t        ‰| �  ||¬«      S rÂ   )rR   Úobjectr¼   Ú	__array__)ro   r\   rÀ   r¾   s      €rT   r(  zDatetimeArray.__array__Ÿ  s(   ø€ Øˆ=˜TŸWšWäˆEä‰wÑ  u°4Ð Ó8Ð8rV   c                óf   — t        |j                  d«      | j                  d| j                  ¬«      S )Nrï   Ú	timestamp)rR   Úboxrd   )r   r  rR   rm   )ro   rÖ   s     rT   Ú_iter_convert_chunkz!DatetimeArray._iter_convert_chunk¦  s(   € Ü!Ø�I‰I�d‹O §¡¨[¸t¿{¹{ô
ð 	
rV   Tc                ó  •— t        |«      }|| j                  k(  r|r| j                  «       S | S t        |t        «      r‹t        |t
        «      st        ‰| �  ||¬«      S | j                  €t        d«      ‚t        j                  |j                  «      }t        | j                  ||¬«      }t        | «      j                  ||¬«      S | j                  €jt!        j"                  |d«      rTt%        |«      sIt'        |«      r>t        | j                  |d¬«      }t        | «      j                  ||j                  ¬«      S | j                  �!t!        j"                  |d«      rt        d«      ‚| j                  €;t!        j"                  |d«      r%|| j                  k7  rt%        |«      rt        d«      ‚t        |t(        «      r| j+                  |j,                  ¬«      S t.        j0                  j                  | ||«      S )	N©rÀ   z�Cannot use .astype to convert from timezone-naive dtype to timezone-aware dtype. Use obj.tz_localize instead or series.dt.tz_localize insteadrÎ   r   TzžCannot use .astype to convert from timezone-aware dtype to timezone-naive dtype. Use obj.tz_localize(None) or obj.tz_convert('UTC').tz_localize(None) instead.z]Casting to unit-less dtype 'datetime64' is not supported. Pass e.g. 'datetime64[ns]' instead.ra   )r3   r\   rÀ   r�   r5   r4   r¼   r  rR   Ú	TypeErrorr[   Ústrr   Ú_ndarrayÚtyper½   r   r€   r   r   r6   r¤   rb   rÒ   ÚDatetimeLikeArrayMixin)ro   r\   rÀ   Únp_dtypeÚ
res_valuesr¾   s        €rT   r  zDatetimeArray.astype«  s¹  ø€ ô
 ˜UÓ#ˆà�D—J‘JÒÙØ—y‘y“{Ð"ØˆKä˜œ~Ô.Ü˜e¤_Ô5ä‘w‘~ e°$�~Ó7Ð7Ø—‘�ô  ð4óð ô Ÿ8™8 E§I¡IÓ.�Ü0°·±ÀÈtÔT�
Ü˜D“z×-Ñ-¨jÀÐ-ÓFÐFð �G‰GˆOÜ—‘  sÔ+Ü Ô&Ü" 5Ô)ô -¨T¯]©]¸EÈÔMˆJÜ˜“:×)Ñ)¨*¸J×<LÑ<LÐ)ÓMÐMð �W‰WÐ ¤S§_¡_°U¸CÔ%@ô ðCóð ð �G‰GˆOÜ—‘  sÔ+Ø˜Ÿ™Ò#Ü˜EÔ"äð6óð ô
 ˜œ{Ô+Ø—>‘> u§z¡z�>Ó2Ð2Ü×)Ñ)×0Ñ0°°u¸dÓCÐCrV   r   )Úna_repÚdate_formatc               ó’   — |€| j                   rd}t        j                  | j                  | j                  ||| j
                  ¬«      S )Nz%Y-%m-%d)rR   Úformatr6  rd   )Ú_is_dates_onlyr   Úformat_array_from_datetimer$  rR   rm   )ro   r6  r7  Úkwargss       rT   Ú_format_native_typesz"DatetimeArray._format_native_typesñ  sA   € ð Ð 4×#6Ò#6à$ˆKä×/Ñ/Ø�I‰I˜$Ÿ'™'¨+¸fÈ4Ï;É;ô
ð 	
rV   c                óä   — t        |dd «      }t        |dd «      }t        |t        «      r|j                  j                  }|t
        u ry | j                  €|�t        d«      ‚y |€t        d«      ‚y )Nr   r\   z;Cannot compare tz-naive and tz-aware datetime-like objects.z:Cannot compare tz-naive and tz-aware datetime-like objects)r  r�   r4   r\   rR   r   r/  )ro   r  Úother_tzÚother_dtypes       rT   r  z(DatetimeArray._assert_tzawareness_compatÿ  s€   € ä˜5 (¨DÓ1ˆÜ˜e W¨dÓ3ˆä�k¤?Ô3à—{‘{—~‘~ˆHØ”C‰<àØ�W‰Wˆ_ØÐ#ÜØQóð ð $ð ÐÜØLóð ð rV   c                óx  — t        |t        «      rJ ‚| j                  �Ut        |t        «      rE|j                  s9| j                  |j                  «      }|j                  r|j                  «       }|S | j                  �| j                  d «      }n| }	 |j                  |j                  «      }|j                  j                  dk(  r%|j                  |j                  j                  «      }t        | «      j                  ||j                  ¬«      }|j                  r|j                  «       }| j                  �|j                  | j                  «      }|S # t         $ r× t"        d   d   r$t%        j&                  dt(        t+        «       ¬«       | j-                  d«      |z   }| j.                  }t1        |d«      rD|j2                  r8t5        |j2                  «      j.                  }t7        |«      t7        |«      kD  r|}t9        | j                  |¬	«      }t        | «      j;                  ||¬«      }Y |S w xY w)
NÚirÎ   ÚmodeÚperformance_warningszCNon-vectorized DateOffset being applied to Series or DatetimeIndex.©Ú
stacklevelÚOré   rÜ   )r�   r<   rR   r'   Ú_use_relativedeltaÚ_add_timedeltalike_scalarÚ_pd_timedeltar§   r¥   Ú_add_datetime_ndarrayr1  r\   r»   r  r2  r½   ÚNotImplementedErrorÚconfigÚwarningsÚwarnr*   r,   r  rS   Úhasattrré   r   r&   rU   rÅ   )ro   ré   rq   rp   r5  Úres_unitÚoffset_unitr\   s           rT   Ú_add_offsetzDatetimeArray._add_offset  së  € Ü˜f¤dÔ+Ð+Ð+ð �G‰GÐÜ˜6Ô#6Ô7Ø×-Ò-ð
 ×3Ñ3°F×4HÑ4HÓIˆFØ×ÒØ×)Ñ)Ó+�ØˆMà�7‰7ÐØ×%Ñ% dÓ+‰FàˆFð	5Ø×5Ñ5°f·o±oÓFˆJØ×Ñ×$Ñ$¨Ò+à'Ÿ_™_¨V¯_©_×-BÑ-BÓC�
ô* ˜$“Z×+Ñ+¨J¸j×>NÑ>NÐ+ÓOˆFØ×ÒØ×)Ñ)Ó+�à�w‰wÐ"Ø×+Ñ+¨D¯G©GÓ4�àˆøô7 #ò 	HÜ�f‰~Ð4Ò5Ü—‘ð%ä&Ü/Ó1õ	ð Ÿ™ SÓ)¨FÑ2ˆJð —y‘yˆHÜ�v˜xÔ(¨V¯]ª]Ü'¨¯©Ó6×;Ñ;�Ü% kÓ2Ô5GÈÓ5QÒQØ*�HÜ §¡¨hÔ7ˆEÜ˜$“Z×.Ñ.¨zÀÐ.ÓG‰Fð ˆð7	Hús   ÂAE ÅCH9È8H9c                óÈ   — | j                   �t        j                  | j                   «      r| j                  S t	        | j                  | j                   | j
                  ¬«      S )zú
        Convert to an i8 (unix-like nanosecond timestamp) representation
        while keeping the local timezone and not using UTC.
        This is used to calculate time-of-day information as if the timestamps
        were timezone-naive.
        rc   )rR   r    rþ   r$  r"   rm   r‡   s    rT   rh   zDatetimeArray._local_timestampsT  sC   € ð �7‰7ˆ?œi×.Ñ.¨t¯w©wÔ7à—9‘9ÐÜ" 4§9¡9¨d¯g©g¸D¿K¹KÔHÐHrV   c                óÂ   — t        j                  |«      }| j                  €t        d«      ‚t	        || j
                  ¬«      }| j                  | j                  |¬«      S )a  
        Convert tz-aware Datetime Array/Index from one time zone to another.

        This method converts datetime values from their current timezone to a
        different timezone. The underlying UTC time remains the same, only the
        local time representation changes to reflect the target timezone.

        Parameters
        ----------
        tz : str, zoneinfo.ZoneInfo, pytz.timezone, dateutil.tz.tzfile, datetime.tzinfo or None
            Time zone for time. Corresponding timestamps would be converted
            to this time zone of the Datetime Array/Index. A `tz` of None will
            convert to UTC and remove the timezone information.

        Returns
        -------
        Array or Index
            Datetime Array/Index with target `tz`.

        Raises
        ------
        TypeError
            If Datetime Array/Index is tz-naive.

        See Also
        --------
        DatetimeIndex.tz : A timezone that has a variable offset from UTC.
        DatetimeIndex.tz_localize : Localize tz-naive DatetimeIndex to a
            given time zone, or remove timezone from a tz-aware DatetimeIndex.
        Series.dt.tz : A timezone that has a variable offset from UTC.
        Series.dt.tz_localize : Localize tz-naive Series datetimes to a given
            time zone, or remove timezone from tz-aware Series datetimes.

        Examples
        --------
        With the `tz` parameter, we can change the DatetimeIndex
        to other time zones:

        >>> dti = pd.date_range(
        ...     start="2014-08-01 09:00", freq="h", periods=3, tz="Europe/Berlin"
        ... )

        >>> dti
        DatetimeIndex(['2014-08-01 09:00:00+02:00',
                       '2014-08-01 10:00:00+02:00',
                       '2014-08-01 11:00:00+02:00'],
                      dtype='datetime64[us, Europe/Berlin]', freq='h')

        >>> dti.tz_convert("US/Central")
        DatetimeIndex(['2014-08-01 02:00:00-05:00',
                       '2014-08-01 03:00:00-05:00',
                       '2014-08-01 04:00:00-05:00'],
                      dtype='datetime64[us, US/Central]', freq='h')

        With the ``tz=None``, we can remove the timezone (after converting
        to UTC if necessary):

        >>> dti = pd.date_range(
        ...     start="2014-08-01 09:00", freq="h", periods=3, tz="Europe/Berlin"
        ... )

        >>> dti
        DatetimeIndex(['2014-08-01 09:00:00+02:00',
                       '2014-08-01 10:00:00+02:00',
                       '2014-08-01 11:00:00+02:00'],
                        dtype='datetime64[us, Europe/Berlin]', freq='h')

        >>> dti.tz_convert(None)
        DatetimeIndex(['2014-08-01 07:00:00',
                       '2014-08-01 08:00:00',
                       '2014-08-01 09:00:00'],
                        dtype='datetime64[us]', freq='h')
        z?Cannot convert tz-naive timestamps, use tz_localize to localizerÜ   rÎ   )r    rÐ   rR   r/  rU   rS   r½   r1  )ro   rR   r\   s      rT   r¦   zDatetimeArray.tz_convert`  sZ   € ôT ×#Ñ# BÓ'ˆà�7‰7ˆ?äØQóð ô
 ˜B T§Y¡YÔ/ˆØ×Ñ §¡°UÐÓ;Ð;rV   c                óè  — d}||vrt        |t        «      st        d«      ‚| j                  �:|€-t	        | j
                  | j                  | j                  ¬«      }nNt        d«      ‚t        j                  |«      }t        j                  | j
                  |||| j                  ¬«      }|j                  d| j                  › d�«      }t        || j                  ¬«      }| j                  ||¬	«      S )
ae  
        Localize tz-naive Datetime Array/Index to tz-aware Datetime Array/Index.

        This method takes a time zone (tz) naive Datetime Array/Index object
        and makes this time zone aware. It does not move the time to another
        time zone.

        This method can also be used to do the inverse -- to create a time
        zone unaware object from an aware object. To that end, pass `tz=None`.

        Parameters
        ----------
        tz : str, zoneinfo.ZoneInfo, pytz.timezone, dateutil.tz.tzfile, datetime.tzinfo or None
            Time zone to attach to the tz-naive timestamps; the wall time is
            preserved. Passing ``None`` detaches the time zone from a tz-aware
            Array/Index, returning a tz-naive result with the same wall time.
        ambiguous : 'infer', 'NaT', bool array, default 'raise'
            When clocks moved backward due to DST, ambiguous times may arise.
            For example in Central European Time (UTC+01), when going from
            03:00 DST to 02:00 non-DST, 02:30:00 local time occurs both at
            00:30:00 UTC and at 01:30:00 UTC. In such a situation, the
            `ambiguous` parameter dictates how ambiguous times should be
            handled.

            - 'infer' will attempt to infer fall dst-transition hours based on
              order. Requires that the timestamps are monotonically increasing.
            - bool-ndarray where True signifies a DST time, False signifies 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
        -------
        Same type as self
            Array/Index converted to the specified time zone.

        Raises
        ------
        TypeError
            If the Datetime Array/Index is tz-aware and tz is not None.

        See Also
        --------
        DatetimeIndex.tz_convert : Convert tz-aware DatetimeIndex from
            one time zone to another.

        Examples
        --------
        >>> tz_naive = pd.date_range('2018-03-01 09:00', periods=3)
        >>> tz_naive
        DatetimeIndex(['2018-03-01 09:00:00', '2018-03-02 09:00:00',
                       '2018-03-03 09:00:00'],
                      dtype='datetime64[us]', freq='D')

        Localize DatetimeIndex in US/Eastern time zone:

        >>> tz_aware = tz_naive.tz_localize(tz='US/Eastern')
        >>> tz_aware
        DatetimeIndex(['2018-03-01 09:00:00-05:00', '2018-03-02 09:00:00-05:00',
                       '2018-03-03 09:00:00-05:00'],
                      dtype='datetime64[us, US/Eastern]', freq='D')

        With ``tz=None`` we can remove the time zone information while
        preserving the wall time (no conversion to UTC):

        >>> tz_aware.tz_localize(None)
        DatetimeIndex(['2018-03-01 09:00:00', '2018-03-02 09:00:00',
                       '2018-03-03 09:00:00'],
                      dtype='datetime64[us]', freq='D')

        Be careful with DST changes. When there is sequential data, pandas can
        infer the DST time:

        >>> s = pd.to_datetime(pd.Series(['2018-10-28 01:30:00',
        ...                               '2018-10-28 02:00:00',
        ...                               '2018-10-28 02:30:00',
        ...                               '2018-10-28 02:00:00',
        ...                               '2018-10-28 02:30:00',
        ...                               '2018-10-28 03:00:00',
        ...                               '2018-10-28 03:30:00']))
        >>> s.dt.tz_localize('CET', ambiguous='infer')
        0   2018-10-28 01:30:00+02:00
        1   2018-10-28 02:00:00+02:00
        2   2018-10-28 02:30:00+02:00
        3   2018-10-28 02:00:00+01:00
        4   2018-10-28 02:30:00+01:00
        5   2018-10-28 03:00:00+01:00
        6   2018-10-28 03:30:00+01:00
        dtype: datetime64[us, CET]

        In some cases, inferring the DST is impossible. In such cases, you can
        pass an ndarray to the ambiguous parameter to set the DST explicitly

        >>> s = pd.to_datetime(pd.Series(['2018-10-28 01:20:00',
        ...                               '2018-10-28 02:36:00',
        ...                               '2018-10-28 03:46:00']))
        >>> s.dt.tz_localize('CET', ambiguous=np.array([True, True, False]))
        0   2018-10-28 01:20:00+02:00
        1   2018-10-28 02:36:00+02:00
        2   2018-10-28 03:46:00+01:00
        dtype: datetime64[us, CET]

        If the DST transition causes nonexistent times, you can shift these
        dates forward or backwards with a timedelta object or `'shift_forward'`
        or `'shift_backward'`.

        >>> s = pd.to_datetime(pd.Series(['2015-03-29 02:30:00',
        ...                               '2015-03-29 03:30:00'], dtype="M8[ns]"))
        >>> s.dt.tz_localize('Europe/Warsaw', nonexistent='shift_forward')
        0   2015-03-29 03:00:00+02:00
        1   2015-03-29 03:30:00+02:00
        dtype: datetime64[ns, Europe/Warsaw]

        >>> s.dt.tz_localize('Europe/Warsaw', nonexistent='shift_backward')
        0   2015-03-29 01:59:59.999999999+01:00
        1   2015-03-29 03:30:00.000000000+02:00
        dtype: datetime64[ns, Europe/Warsaw]

        >>> s.dt.tz_localize('Europe/Warsaw', nonexistent=pd.Timedelta('1h'))
        0   2015-03-29 03:30:00+02:00
        1   2015-03-29 03:30:00+02:00
        dtype: datetime64[ns, Europe/Warsaw]
        )rÆ   r   Úshift_forwardÚshift_backwardzoThe nonexistent argument must be one of 'raise', 'NaT', 'shift_forward', 'shift_backward' or a timedelta objectrc   z,Already tz-aware, use tz_convert to convert.rê   rY   rZ   rÜ   rÎ   )r�   r   r´   rR   r"   r$  rm   r/  r    rÐ   r#   rÿ   r  rS   rU   r½   )ro   rR   rÉ   rë   Únonexistent_optionsÚ	new_datesÚnew_dates_dt64r\   s           rT   r¥   zDatetimeArray.tz_localize¶  sè   € ðd RÐØÐ1Ñ1¼*Øœô;
ô ð%óð ð �7‰7ÐØˆzÜ/°·	±	¸4¿7¹7ÈÏÉÔU‘	äÐ NÓOÐOä×'Ñ'¨Ó+ˆBô %×7Ñ7Ø—	‘	ØØ#Ø'Ø—k‘kôˆIð #Ÿ™¨#¨d¯i©i¨[¸Ð(:Ó;ˆÜ˜B T§Y¡YÔ/ˆà×Ñ °eÐÓ<Ð<rV   c                óZ   — t        | j                  | j                  | j                  ¬«      S )a  
        Return an ndarray of ``datetime.datetime`` objects.

        This method converts each element in the DatetimeArray to a native
        Python ``datetime.datetime`` object, including timezone information
        if present.

        Returns
        -------
        numpy.ndarray
            An ndarray of ``datetime.datetime`` objects.

        See Also
        --------
        DatetimeIndex.to_julian_date : Converts Datetime Array to float64 ndarray
            of Julian Dates.

        Examples
        --------
        >>> idx = pd.date_range("2018-02-27", periods=3)
        >>> idx.to_pydatetime()
        array([datetime.datetime(2018, 2, 27, 0, 0),
               datetime.datetime(2018, 2, 28, 0, 0),
               datetime.datetime(2018, 3, 1, 0, 0)], dtype=object)
        )rR   rd   ©r   r$  rR   rm   r‡   s    rT   Úto_pydatetimezDatetimeArray.to_pydatetimej  s   € ô4 " $§)¡)°·±¸d¿k¹kÔJÐJrV   c                ót   — | j                  «       }| j                  �|j                  | j                  «      }|S )aÒ  
        Convert times to midnight.

        The time component of the date-time is converted to midnight i.e.
        00:00:00. This is useful in cases, when the time does not matter.
        Length is unaltered. The timezones are unaffected.

        This method is available on Series with datetime values under
        the ``.dt`` accessor, and directly on Datetime Array/Index.

        Returns
        -------
        DatetimeArray, DatetimeIndex or Series
            The same type as the original data. Series will have the same
            name and index. DatetimeIndex will have the same name.

        See Also
        --------
        floor : Floor the datetimes to the specified freq.
        ceil : Ceil the datetimes to the specified freq.
        round : Round the datetimes to the specified freq.

        Examples
        --------
        >>> idx = pd.date_range(
        ...     start="2014-08-01 10:00", freq="h", periods=3, tz="Asia/Calcutta"
        ... )
        >>> idx
        DatetimeIndex(['2014-08-01 10:00:00+05:30',
                       '2014-08-01 11:00:00+05:30',
                       '2014-08-01 12:00:00+05:30'],
                        dtype='datetime64[us, Asia/Calcutta]', freq='h')
        >>> idx.normalize()
        DatetimeIndex(['2014-08-01 00:00:00+05:30',
                       '2014-08-01 00:00:00+05:30',
                       '2014-08-01 00:00:00+05:30'],
                       dtype='datetime64[us, Asia/Calcutta]', freq=None)
        )Ú_normalize_naiverR   r¥   )ro   Údtas     rT   r§   zDatetimeArray.normalize†  s4   € ðN ×#Ñ#Ó%ˆØ�7‰7ÐØ—/‘/ $§'¡'Ó*ˆCØˆ
rV   c                óð   — t        | j                  | j                  | j                  ¬«      }|j	                  | j
                  j                  «      }t        | «      j                  ||j                  ¬«      S )z3Normalize times to midnight, ignoring the timezone.rc   rÎ   )	r   r$  rR   rm   r  r1  r\   r2  r½   )ro   Ú
new_valuesr  s      rT   r`  zDatetimeArray._normalize_naive²  sT   € ä,¨T¯Y©Y¸¿¹ÀdÇkÁkÔRˆ
Ø —o‘o d§m¡m×&9Ñ&9Ó:ˆÜ�D‹z×%Ñ% k¸×9JÑ9JÐ%ÓKÐKrV   c                ó  — ddl m} | j                  �$t        j                  dt
        t        «       ¬«       |€*| j                  }|€t        d«      ‚t        |«      }|€|}|} |j                  | j                  || j                  ¬«      S )aê  
        Cast to PeriodArray/PeriodIndex at a particular frequency.

        Converts DatetimeArray/Index to PeriodArray/PeriodIndex.

        Parameters
        ----------
        freq : str, optional
            One of pandas' :ref:`period aliases <timeseries.period_aliases>`.
            Will be inferred by default.

        Returns
        -------
        PeriodArray/PeriodIndex
            Immutable ndarray holding ordinal values at a particular frequency.

        Raises
        ------
        ValueError
            When converting a DatetimeArray/Index with non-regular values,
            so that a frequency cannot be inferred.

        See Also
        --------
        PeriodIndex: Immutable ndarray holding ordinal values.
        DatetimeIndex.to_pydatetime: Return DatetimeIndex as object.

        Examples
        --------
        >>> df = pd.DataFrame(
        ...     {"y": [1, 2, 3]},
        ...     index=pd.to_datetime(
        ...         [
        ...             "2000-03-31 00:00:00",
        ...             "2000-05-31 00:00:00",
        ...             "2000-08-31 00:00:00",
        ...         ]
        ...     ),
        ... )
        >>> df.index.to_period("M")
        PeriodIndex(['2000-03', '2000-05', '2000-08'],
                    dtype='period[M]')

        Infer the daily frequency

        >>> idx = pd.date_range("2017-01-01", periods=2)
        >>> idx.to_period()
        PeriodIndex(['2017-01-01', '2017-01-02'],
                    dtype='period[D]')
        r   rI   zNConverting to PeriodArray/Index representation will drop timezone information.rE  z8You must pass a freq argument as current index has none.r  )Úpandas.core.arraysrJ   rR   rN  rO  ÚUserWarningr,   Ú_inferred_freq_strr´   r:   Ú_from_datetime64r1  )ro   rb   rJ   Úress       rT   r¤   zDatetimeArray.to_period¸  s�   € õf 	3à�7‰7ÐÜ�M‰Mð2äÜ+Ó-õ	ð ˆ<Ø×*Ñ*ˆDàˆ|Ü ØNóð ô # 4Ó(ˆCð ˆ{Ø�àˆDØ+ˆ{×+Ñ+¨D¯M©M¸4ÀDÇGÁGÔLÐLrV   c                ó8  — |€ t         rt        «       r| j                  «       S | j                  «       }t	        j
                  |d|| j                  ¬«      }| j                  |d¬«      }t        «       r'ddlm	}m
}  || |t        j                  ¬«      ¬«      S |S )	uæ  
        Return the month names with specified locale.

        This method returns the full name of the month (e.g., "January", "February")
        for each datetime value in the Series/Index. The names can be localized
        to different languages using the locale parameter.

        Parameters
        ----------
        locale : str, optional
            Locale determining the language in which to return the month name.
            Default is English locale (``'en_US.utf8'``). Use the command
            ``locale -a`` on your terminal on Unix systems to find your locale
            language code.

        Returns
        -------
        Series or Index
            Series or Index of month names.

        See Also
        --------
        DatetimeIndex.day_name : Return the day names with specified locale.

        Examples
        --------
        >>> s = pd.Series(pd.date_range(start="2018-01", freq="ME", periods=3))
        >>> s
        0   2018-01-31
        1   2018-02-28
        2   2018-03-31
        dtype: datetime64[us]
        >>> s.dt.month_name()
        0     January
        1    February
        2       March
        dtype: str

        >>> idx = pd.date_range(start="2018-01", freq="ME", periods=3)
        >>> idx
        DatetimeIndex(['2018-01-31', '2018-02-28', '2018-03-31'],
                      dtype='datetime64[us]', freq='ME')
        >>> idx.month_name()
        Index(['January', 'February', 'March'], dtype='str')

        Using the ``locale`` parameter you can set a different locale language,
        for example: ``idx.month_name(locale='pt_BR.utf8')`` will return month
        names in Brazilian Portuguese language.

        >>> idx = pd.date_range(start="2018-01", freq="ME", periods=3)
        >>> idx
        DatetimeIndex(['2018-01-31', '2018-02-28', '2018-03-31'],
                      dtype='datetime64[us]', freq='ME')
        >>> idx.month_name(locale="pt_BR.utf8")  # doctest: +SKIP
        Index(['Janeiro', 'Fevereiro', 'MarÃ§o'], dtype='str')
        Nr¬   ©Úlocalerd   ©rf   r   ©ÚStringDtyperü   ©Úna_valuerÎ   )r(   r   Ú_month_name_arrowrh   r   Úget_date_name_fieldrm   rn   Úpandasro  rü   r[   Únan©ro   rl  rp   rq   ro  Úpd_arrays         rT   r¬   zDatetimeArray.month_name	  s‹   € ðr ˆ>�kÔ.@Ô.BØ×)Ñ)Ó+Ð+à×'Ñ'Ó)ˆä×+Ñ+Ø�L¨°d·k±kô
ˆð ×)Ñ)¨&¸TÐ)ÓBˆÜÔ÷ñ
 ˜F©+¼r¿v¹vÔ*FÔGÐGØˆrV   c                óè   — dd l }dd lm}  |j                  t         |j
                  «       ¬«      }| j                  «       }|j                  ||j                  |«      «      }| j                  |«      S ©Nr   )r2  )
ÚpyarrowÚpyarrow.computeÚcomputerü   r%   Úlarge_stringÚ_to_local_pa_timestampÚtaker“   Ú_wrap_pa_str_result)ro   ÚpaÚpcÚ	pa_monthsÚpa_tsrq   s         rT   rr  zDatetimeArray._month_name_arrowT  sZ   € ÛÝ$à�B—H‘Hœ[¨¨r¯©Ó/@ÔAˆ	Ø×+Ñ+Ó-ˆØ—‘˜ B§H¡H¨U£OÓ4ˆØ×'Ñ'¨Ó/Ð/rV   c                ó8  — |€ t         rt        «       r| j                  «       S | j                  «       }t	        j
                  |d|| j                  ¬«      }| j                  |d¬«      }t        «       r'ddlm	}m
}  || |t        j                  ¬«      ¬«      S |S )	uè  
        Return the day names with specified locale.

        This method returns the full name of the day of the week (e.g., "Monday",
        "Tuesday") for each datetime value in the Series/Index. The names can be
        localized to different languages using the locale parameter.

        Parameters
        ----------
        locale : str, optional
            Locale determining the language in which to return the day name.
            Default is English locale (``'en_US.utf8'``). Use the command
            ``locale -a`` on your terminal on Unix systems to find your locale
            language code.

        Returns
        -------
        Series or Index
            Series or Index of day names.

        See Also
        --------
        DatetimeIndex.month_name : Return the month names with specified locale.

        Examples
        --------
        >>> s = pd.Series(pd.date_range(start="2018-01-01", freq="D", periods=3))
        >>> s
        0   2018-01-01
        1   2018-01-02
        2   2018-01-03
        dtype: datetime64[us]
        >>> s.dt.day_name()
        0       Monday
        1      Tuesday
        2    Wednesday
        dtype: str

        >>> idx = pd.date_range(start="2018-01-01", freq="D", periods=3)
        >>> idx
        DatetimeIndex(['2018-01-01', '2018-01-02', '2018-01-03'],
                      dtype='datetime64[us]', freq='D')
        >>> idx.day_name()
        Index(['Monday', 'Tuesday', 'Wednesday'], dtype='str')

        Using the ``locale`` parameter you can set a different locale language,
        for example: ``idx.day_name(locale='pt_BR.utf8')`` will return day
        names in Brazilian Portuguese language.

        >>> idx = pd.date_range(start="2018-01-01", freq="D", periods=3)
        >>> idx
        DatetimeIndex(['2018-01-01', '2018-01-02', '2018-01-03'],
                      dtype='datetime64[us]', freq='D')
        >>> idx.day_name(locale="pt_BR.utf8")  # doctest: +SKIP
        Index(['Segunda', 'TerÃ§a', 'Quarta'], dtype='str')
        Nr­   rk  rm  r   rn  rp  rÎ   )r(   r   Ú_day_name_arrowrh   r   rs  rm   rn   rt  ro  rü   r[   ru  rv  s         rT   r­   zDatetimeArray.day_name]  s‹   € ðr ˆ>�kÔ.@Ô.BØ×'Ñ'Ó)Ð)à×'Ñ'Ó)ˆä×+Ñ+Ø�J v°D·K±Kô
ˆð ×)Ñ)¨&¸TÐ)ÓBˆÜÔ÷ñ
 ˜F©+¼r¿v¹vÔ*FÔGÐGØˆrV   c                óè   — dd l }dd lm}  |j                  t         |j
                  «       ¬«      }| j                  «       }|j                  ||j                  |«      «      }| j                  |«      S ry  )
rz  r{  r|  rü   r$   r}  r~  r  r˜   r€  )ro   r�  r‚  Úpa_daysr„  rq   s         rT   r†  zDatetimeArray._day_name_arrow¨  s[   € ÛÝ$à�"—(‘(œ9¨?¨2¯?©?Ó+<Ô=ˆØ×+Ñ+Ó-ˆØ—‘˜ "§.¡.°Ó"7Ó8ˆØ×'Ñ'¨Ó/Ð/rV   c                ó    — ddl }| j                  «       }| j                  } |j                  || |j                  | j
                  «      ¬«      S )z:Convert to a pyarrow TimestampArray with local timestamps.r   N)Úmaskr2  )rz  rh   Ú_isnanrü   r*  rS   )ro   r�  rp   rŠ  s       rT   r~  z$DatetimeArray._to_local_pa_timestamp±  s@   € ãà×'Ñ'Ó)ˆØ�{‰{ˆØˆr�x‰x˜ T°°·±¸T¿Y¹YÓ0GÔHÐHrV   c                óp   — ddl m}  |t        j                  ¬«      }|j	                  «       } || |¬«      S )zCWrap a pyarrow StringArray in an ArrowStringArray with StringDtype.r   )ro  rp  rÎ   )Úpandas.core.arrays.string_ro  r[   ru  Úconstruct_array_type)Úpa_arrro  r\   r¶   s       rT   r€  z!DatetimeArray._wrap_pa_str_result¹  s0   € õ 	;á¤R§V¡VÔ,ˆØ×(Ñ(Ó*ˆÙ�6 Ô'Ð'rV   c                óR   — | j                  «       }t        |d| j                  ¬«      S )a[  
        Returns numpy array of :class:`datetime.time` objects.

        The time part of the Timestamps.

        See Also
        --------
        DatetimeIndex.timetz : Returns numpy array of :class:`datetime.time`
            objects with timezones. The time part of the Timestamps.
        DatetimeIndex.date : Returns numpy array of python :class:`datetime.date`
            objects. Namely, the date part of Timestamps without time and timezone
            information.

        Examples
        --------
        For Series:

        >>> s = pd.Series(["1/1/2020 10:00:00+00:00", "2/1/2020 11:00:00+00:00"])
        >>> s = pd.to_datetime(s)
        >>> s
        0   2020-01-01 10:00:00+00:00
        1   2020-02-01 11:00:00+00:00
        dtype: datetime64[us, UTC]
        >>> s.dt.time
        0    10:00:00
        1    11:00:00
        dtype: object

        For DatetimeIndex:

        >>> idx = pd.DatetimeIndex(
        ...     ["1/1/2020 10:00:00+00:00", "2/1/2020 11:00:00+00:00"]
        ... )
        >>> idx.time
        array([datetime.time(10, 0), datetime.time(11, 0)], dtype=object)
        r    ©r+  rd   ©rh   r   rm   ©ro   Ú
timestampss     rT   r    zDatetimeArray.timeÂ  s&   € ðR ×+Ñ+Ó-ˆ
ä! *°&¸t¿{¹{ÔKÐKrV   c                ó\   — t        | j                  | j                  d| j                  ¬«      S )a  
        Returns numpy array of :class:`datetime.time` objects with timezones.

        The time part of the Timestamps.

        See Also
        --------
        DatetimeIndex.time : Returns numpy array of :class:`datetime.time` objects.
            The time part of the Timestamps.
        DatetimeIndex.tz : Return the timezone.

        Examples
        --------
        For Series:

        >>> s = pd.Series(["1/1/2020 10:00:00+00:00", "2/1/2020 11:00:00+00:00"])
        >>> s = pd.to_datetime(s)
        >>> s
        0   2020-01-01 10:00:00+00:00
        1   2020-02-01 11:00:00+00:00
        dtype: datetime64[us, UTC]
        >>> s.dt.timetz
        0    10:00:00+00:00
        1    11:00:00+00:00
        dtype: object

        For DatetimeIndex:

        >>> idx = pd.DatetimeIndex(
        ...     ["1/1/2020 10:00:00+00:00", "2/1/2020 11:00:00+00:00"]
        ... )
        >>> idx.timetz
        array([datetime.time(10, 0, tzinfo=datetime.timezone.utc),
        datetime.time(11, 0, tzinfo=datetime.timezone.utc)], dtype=object)
        r    r‘  r]  r‡   s    rT   r¡   zDatetimeArray.timetzï  s"   € ôJ " $§)¡)¨T¯W©W¸&ÀtÇ{Á{ÔSÐSrV   c                óR   — | j                  «       }t        |d| j                  ¬«      S )a‚  
        Returns numpy array of python :class:`datetime.date` objects.

        Namely, the date part of Timestamps without time and
        timezone information.

        See Also
        --------
        DatetimeIndex.time : Returns numpy array of :class:`datetime.time` objects.
            The time part of the Timestamps.
        DatetimeIndex.year : The year of the datetime.
        DatetimeIndex.month : The month as January=1, December=12.
        DatetimeIndex.day : The day of the datetime.

        Examples
        --------
        For Series:

        >>> s = pd.Series(["1/1/2020 10:00:00+00:00", "2/1/2020 11:00:00+00:00"])
        >>> s = pd.to_datetime(s)
        >>> s
        0   2020-01-01 10:00:00+00:00
        1   2020-02-01 11:00:00+00:00
        dtype: datetime64[us, UTC]
        >>> s.dt.date
        0    2020-01-01
        1    2020-02-01
        dtype: object

        For DatetimeIndex:

        >>> idx = pd.DatetimeIndex(
        ...     ["1/1/2020 10:00:00+00:00", "2/1/2020 11:00:00+00:00"]
        ... )
        >>> idx.date
        array([datetime.date(2020, 1, 1), datetime.date(2020, 2, 1)], dtype=object)
        rŸ   r‘  r’  r“  s     rT   rŸ   zDatetimeArray.date  s&   € ðT ×+Ñ+Ó-ˆ
ä! *°&¸t¿{¹{ÔKÐKrV   c                óü   — ddl m} | j                  «       }t        j                  || j
                  ¬«      } ||g d¢¬«      j                  ddddœ«      }| j                  rd|j                  | j                  <   |S )	a·  
        Calculate year, week, and day according to the ISO 8601 standard.

        The ISO 8601 standard defines the first week of the year as the week
        containing the first Thursday. This method returns a DataFrame with
        columns for the ISO year, ISO week number, and ISO day of week.

        Returns
        -------
        DataFrame
            With columns year, week and day.

        See Also
        --------
        Timestamp.isocalendar : Function return a 3-tuple containing ISO year,
            week number, and weekday for the given Timestamp object.
        datetime.date.isocalendar : Return a named tuple object with
            three components: year, week and weekday.

        Examples
        --------
        >>> idx = pd.date_range(start="2019-12-29", freq="D", periods=4)
        >>> idx.isocalendar()
                    year  week  day
        2019-12-29  2019    52    7
        2019-12-30  2020     1    1
        2019-12-31  2020     1    2
        2020-01-01  2020     1    3
        >>> idx.isocalendar().week
        2019-12-29    52
        2019-12-30     1
        2019-12-31     1
        2020-01-01     1
        Freq: D, Name: week, dtype: UInt32
        r   rG   rc   )r’   Úweekr”   )ÚcolumnsÚInt32ÚUInt32N)
rt  rH   rh   r   Úbuild_isocalendar_sarrayrm   r  Ú_hasnaÚilocr‹  )ro   rH   rp   ÚsarrayÚiso_calendar_dfs        rT   ÚisocalendarzDatetimeArray.isocalendarD  sq   € õH 	%à×'Ñ'Ó)ˆÜ×0Ñ0°¸d¿k¹kÔJˆÙ# FÒ4KÔL×SÑSØ h°xÑ@ó
ˆð �;Š;Ø04ˆO× Ñ  §¡Ñ-ØÐrV   r’   ÚYaþ  
        The year of the datetime.

        This attribute returns the year component of each datetime value
        in the Series/Index. The returned values are integers representing
        the calendar year.

        See Also
        --------
        DatetimeIndex.month: The month as January=1, December=12.
        DatetimeIndex.day: The day of the datetime.

        Examples
        --------
        >>> datetime_series = pd.Series(
        ...     pd.date_range("2000-01-01", periods=3, freq="YE")
        ... )
        >>> datetime_series
        0   2000-12-31
        1   2001-12-31
        2   2002-12-31
        dtype: datetime64[us]
        >>> datetime_series.dt.year
        0    2000
        1    2001
        2    2002
        dtype: int32
        r“   r   añ  
        The month as January=1, December=12.

        This attribute returns the month component of each datetime value
        in the Series/Index. Months are numbered from 1 (January) through
        12 (December).

        See Also
        --------
        DatetimeIndex.year: The year of the datetime.
        DatetimeIndex.day: The day of the datetime.

        Examples
        --------
        >>> datetime_series = pd.Series(
        ...     pd.date_range("2000-01-01", periods=3, freq="ME")
        ... )
        >>> datetime_series
        0   2000-01-31
        1   2000-02-29
        2   2000-03-31
        dtype: datetime64[us]
        >>> datetime_series.dt.month
        0    1
        1    2
        2    3
        dtype: int32
        r”   ÚDa)  
        The day of the datetime.

        This attribute returns the day of the month component of each
        datetime value in the Series/Index. Values range from 1 to 31,
        depending on the month.

        See Also
        --------
        DatetimeIndex.year: The year of the datetime.
        DatetimeIndex.month: The month as January=1, December=12.
        DatetimeIndex.hour: The hours of the datetime.

        Examples
        --------
        >>> datetime_series = pd.Series(
        ...     pd.date_range("2000-01-01", periods=3, freq="D")
        ... )
        >>> datetime_series
        0   2000-01-01
        1   2000-01-02
        2   2000-01-03
        dtype: datetime64[us]
        >>> datetime_series.dt.day
        0    1
        1    2
        2    3
        dtype: int32
        r•   ÚhaR  
        The hours of the datetime.

        This attribute returns the hour component of each datetime value
        in the Series/Index. Values range from 0 to 23, representing the
        hour of the day in 24-hour format.

        See Also
        --------
        DatetimeIndex.day: The day of the datetime.
        DatetimeIndex.minute: The minutes of the datetime.
        DatetimeIndex.second: The seconds of the datetime.

        Examples
        --------
        >>> datetime_series = pd.Series(
        ...     pd.date_range("2000-01-01", periods=3, freq="h")
        ... )
        >>> datetime_series
        0   2000-01-01 00:00:00
        1   2000-01-01 01:00:00
        2   2000-01-01 02:00:00
        dtype: datetime64[us]
        >>> datetime_series.dt.hour
        0    0
        1    1
        2    2
        dtype: int32
        r–   Úmaæ  
        The minutes of the datetime.

        This attribute returns the minute component of each datetime value
        in the Series/Index. Values range from 0 to 59.

        See Also
        --------
        DatetimeIndex.hour: The hours of the datetime.
        DatetimeIndex.second: The seconds of the datetime.

        Examples
        --------
        >>> datetime_series = pd.Series(
        ...     pd.date_range("2000-01-01", periods=3, freq="min")
        ... )
        >>> datetime_series
        0   2000-01-01 00:00:00
        1   2000-01-01 00:01:00
        2   2000-01-01 00:02:00
        dtype: datetime64[us]
        >>> datetime_series.dt.minute
        0    0
        1    1
        2    2
        dtype: int32
        r—   râ   a5  
        The seconds of the datetime.

        This attribute returns the second component of each datetime value
        in the Series/Index. Values range from 0 to 59.

        See Also
        --------
        DatetimeIndex.minute: The minutes of the datetime.
        DatetimeIndex.microsecond: The microseconds of the datetime.
        DatetimeIndex.nanosecond: The nanoseconds of the datetime.

        Examples
        --------
        >>> datetime_series = pd.Series(
        ...     pd.date_range("2000-01-01", periods=3, freq="s")
        ... )
        >>> datetime_series
        0   2000-01-01 00:00:00
        1   2000-01-01 00:00:01
        2   2000-01-01 00:00:02
        dtype: datetime64[us]
        >>> datetime_series.dt.second
        0    0
        1    1
        2    2
        dtype: int32
        rœ   rä   aY  
        The microseconds of the datetime.

        This attribute returns the microsecond component of each datetime
        value in the Series/Index. Values range from 0 to 999999
        (one microsecond is one millionth of a second).

        See Also
        --------
        DatetimeIndex.second: The seconds of the datetime.
        DatetimeIndex.nanosecond: The nanoseconds of the datetime.

        Examples
        --------
        >>> datetime_series = pd.Series(
        ...     pd.date_range("2000-01-01", periods=3, freq="us")
        ... )
        >>> datetime_series
        0   2000-01-01 00:00:00.000000
        1   2000-01-01 00:00:00.000001
        2   2000-01-01 00:00:00.000002
        dtype: datetime64[us]
        >>> datetime_series.dt.microsecond
        0       0
        1       1
        2       2
        dtype: int32
        r�   a]  
        The nanoseconds of the datetime.

        This attribute returns the nanosecond component of each datetime
        value in the Series/Index. Values range from 0 to 999
        (one nanosecond is one billionth of a second).

        See Also
        --------
        DatetimeIndex.second: The seconds of the datetime.
        DatetimeIndex.microsecond: The microseconds of the datetime.

        Examples
        --------
        >>> datetime_series = pd.Series(
        ...     pd.date_range("2000-01-01", periods=3, freq="ns")
        ... )
        >>> datetime_series
        0   2000-01-01 00:00:00.000000000
        1   2000-01-01 00:00:00.000000001
        2   2000-01-01 00:00:00.000000002
        dtype: datetime64[ns]
        >>> datetime_series.dt.nanosecond
        0       0
        1       1
        2       2
        dtype: int32
        ac  
    The day of the week with Monday=0, Sunday=6.

    Return the day of the week. It is assumed the week starts on
    Monday, which is denoted by 0 and ends on Sunday which is denoted
    by 6. This method is available on both Series with datetime
    values (using the `dt` accessor) or DatetimeIndex.

    Returns
    -------
    Series or Index
        Containing integers indicating the day number.

    See Also
    --------
    Series.dt.weekday : Alias.
    Series.dt.day_name : Returns the name of the day of the week.

    Examples
    --------
    >>> s = pd.date_range('2016-12-31', '2017-01-08', freq='D').to_series()
    >>> s.dt.day_of_week
    2016-12-31    5
    2017-01-01    6
    2017-01-02    0
    2017-01-03    1
    2017-01-04    2
    2017-01-05    3
    2017-01-06    4
    2017-01-07    5
    2017-01-08    6
    Freq: D, dtype: int32
    r˜   Údowc                ób   — t        j                  dt        t        «       ¬«       | j                  S )ú˜
        The day of the week with Monday=0, Sunday=6.

        .. deprecated:: 3.1.0
            Use :attr:`DatetimeArray.day_of_week` instead.
        zŒDatetimeArray.weekday is deprecated and will be removed in a future version. Use DatetimeArray.day_of_week or Series.dt.day_of_week instead.rE  ©rN  rO  r)   r,   r˜   r‡   s    rT   ÚweekdayzDatetimeArray.weekday—  s.   € ô 	�‰ð-ô Ü'Ó)õ	
ð ×ÑÐrV   c                ób   — t        j                  dt        t        «       ¬«       | j                  S )r¨  zuDatetimeArray.dayofweek is deprecated and will be removed in a future version. Use DatetimeArray.day_of_week instead.rE  r©  r‡   s    rT   Ú	dayofweekzDatetimeArray.dayofweek©  ó-   € ô 	�‰ðEäÜ'Ó)õ		
ð ×ÑÐrV   Ú	dayofyearÚdoyaÉ  
        The ordinal day of the year.

        This attribute returns the day of the year for each datetime value
        in the Series/Index. Values range from 1 to 365 (or 366 for leap years).

        See Also
        --------
        DatetimeIndex.dayofweek : The day of the week with Monday=0, Sunday=6.
        DatetimeIndex.day : The day of the datetime.

        Examples
        --------
        For Series:

        >>> s = pd.Series(["1/1/2020 10:00:00+00:00", "2/1/2020 11:00:00+00:00"])
        >>> s = pd.to_datetime(s)
        >>> s
        0   2020-01-01 10:00:00+00:00
        1   2020-02-01 11:00:00+00:00
        dtype: datetime64[us, UTC]
        >>> s.dt.day_of_year
        0    1
        1   32
        dtype: int32

        For DatetimeIndex:

        >>> idx = pd.DatetimeIndex(["1/1/2020 10:00:00+00:00",
        ...                         "2/1/2020 11:00:00+00:00"])
        >>> idx.day_of_year
        Index([1, 32], dtype='int32')
        c                ób   — t        j                  dt        t        «       ¬«       | j                  S )zˆ
        The ordinal day of the year.

        .. deprecated:: 3.1.0
            Use :attr:`DatetimeArray.day_of_year` instead.
        zuDatetimeArray.dayofyear is deprecated and will be removed in a future version. Use DatetimeArray.day_of_year instead.rE  )rN  rO  r)   r,   r™   r‡   s    rT   r®  zDatetimeArray.dayofyearß  r­  rV   rš   Úqa‹  
        The quarter of the date.

        This attribute returns the quarter of the year for each datetime value
        in the Series/Index. Quarter 1 includes January through March, quarter 2
        includes April through June, quarter 3 includes July through September,
        and quarter 4 includes October through December.

        See Also
        --------
        DatetimeIndex.snap : Snap time stamps to nearest occurring frequency.
        DatetimeIndex.time : Returns numpy array of datetime.time objects.
            The time part of the Timestamps.

        Examples
        --------
        For Series:

        >>> s = pd.Series(["1/1/2020 10:00:00+00:00", "4/1/2020 11:00:00+00:00"])
        >>> s = pd.to_datetime(s)
        >>> s
        0   2020-01-01 10:00:00+00:00
        1   2020-04-01 11:00:00+00:00
        dtype: datetime64[us, UTC]
        >>> s.dt.quarter
        0    1
        1    2
        dtype: int32

        For DatetimeIndex:

        >>> idx = pd.DatetimeIndex(["1/1/2020 10:00:00+00:00",
        ...                         "2/1/2020 11:00:00+00:00"])
        >>> idx.quarter
        Index([1, 1], dtype='int32')
        r›   Údima  
        The number of days in the month.

        This attribute returns the total number of days in the month for each
        datetime value in the Series/Index. The value depends on the month and
        whether the year is a leap year (e.g., February has 29 days in a leap year).

        See Also
        --------
        Series.dt.day : Return the day of the month.
        Series.dt.is_month_end : Return a boolean indicating if the
            date is the last day of the month.
        Series.dt.is_month_start : Return a boolean indicating if the
            date is the first day of the month.
        Series.dt.month : Return the month as January=1 through December=12.

        Examples
        --------
        >>> s = pd.Series(["1/1/2020 10:00:00+00:00", "2/1/2020 11:00:00+00:00"])
        >>> s = pd.to_datetime(s)
        >>> s
        0   2020-01-01 10:00:00+00:00
        1   2020-02-01 11:00:00+00:00
        dtype: datetime64[us, UTC]
        >>> s.dt.days_in_month
        0    31
        1    29
        dtype: int32
        c                ób   — t        j                  dt        t        «       ¬«       | j                  S )zŽ
        The number of days in the month.

        .. deprecated:: 3.1.0
            Use :attr:`DatetimeArray.days_in_month` instead.
        zyDatetimeArray.daysinmonth is deprecated and will be removed in a future version. Use DatetimeArray.days_in_month instead.rE  )rN  rO  r)   r,   r›   r‡   s    rT   ÚdaysinmonthzDatetimeArray.daysinmonth9  s-   € ô 	�‰ðGäÜ'Ó)õ		
ð ×!Ñ!Ð!rV   c                óð   — d}|r.|j                   }|j                  d|j                  d|«      «      }|�|j                  }nd}| j                  «       }t	        j
                  ||||| j                  ¬«      S )z¬
        Return boolean array for is_month_start, is_quarter_end, etc.

        Parameters
        ----------
        field : str
        freq : BaseOffset or None
        é   ÚstartingMonthr“   Nrc   )ÚkwdsÚgetÚ	rule_coderh   r   Úget_start_end_fieldrm   )ro   rr   rb   Úmonth_kwr¸  Ú	freq_namerp   s          rT   rk   z"DatetimeArray._get_start_end_fieldI  st   € ð ˆÙØ—9‘9ˆDØ—x‘x °·±¸'À8Ó1LÓMˆHàÐØŸ™‰IàˆIà×'Ñ'Ó)ˆÜ×)Ñ)Ø�E˜9 h°T·[±[ô
ð 	
rV   a�  
        Indicates whether the date is the {first_or_last} day of the month.

        This boolean attribute evaluates to True if the date falls on the
        {first_or_last} day of a calendar month, and False otherwise.

        Returns
        -------
        Series or array
            For Series, returns a Series with boolean values.
            For DatetimeIndex, returns a boolean array.

        See Also
        --------
        is_month_start : Return a boolean indicating whether the date
            is the first day of the month.
        is_month_end : Return a boolean indicating whether the date
            is the last day of the month.

        Examples
        --------
        This method is available on Series with datetime values under
        the ``.dt`` accessor, and directly on DatetimeIndex.

        >>> s = pd.Series(pd.date_range("2018-02-27", periods=3))
        >>> s
        0   2018-02-27
        1   2018-02-28
        2   2018-03-01
        dtype: datetime64[us]
        >>> s.dt.is_month_start
        0    False
        1    False
        2    True
        dtype: bool
        >>> s.dt.is_month_end
        0    False
        1    True
        2    False
        dtype: bool

        >>> idx = pd.date_range("2018-02-27", periods=3)
        >>> idx.is_month_start
        array([False, False, True])
        >>> idx.is_month_end
        array([False, True, False])
    r‹   Úfirst)Úfirst_or_lastrŒ   Úlastr�   aI  
        Indicator for whether the date is the first day of a quarter.

        This boolean attribute evaluates to True if the date falls on the
        first day of a calendar quarter (January 1, April 1, July 1, or
        October 1), and False otherwise.

        Returns
        -------
        is_quarter_start : Series or DatetimeIndex
            The same type as the original data with boolean values. Series will
            have the same name and index. DatetimeIndex will have the same
            name.

        See Also
        --------
        quarter : Return the quarter of the date.
        is_quarter_end : Similar property for indicating the quarter end.

        Examples
        --------
        This method is available on Series with datetime values under
        the ``.dt`` accessor, and directly on DatetimeIndex.

        >>> df = pd.DataFrame({'dates': pd.date_range("2017-03-30",
        ...                   periods=4)})
        >>> df.assign(quarter=df.dates.dt.quarter,
        ...           is_quarter_start=df.dates.dt.is_quarter_start)
               dates  quarter  is_quarter_start
        0 2017-03-30        1             False
        1 2017-03-31        1             False
        2 2017-04-01        2              True
        3 2017-04-02        2             False

        >>> idx = pd.date_range('2017-03-30', periods=4)
        >>> idx
        DatetimeIndex(['2017-03-30', '2017-03-31', '2017-04-01', '2017-04-02'],
                      dtype='datetime64[us]', freq='D')

        >>> idx.is_quarter_start
        array([False, False,  True, False])
        rŽ   aG  
        Indicator for whether the date is the last day of a quarter.

        This boolean attribute evaluates to True if the date falls on the
        last day of a calendar quarter (March 31, June 30, September 30, or
        December 31), and False otherwise.

        Returns
        -------
        is_quarter_end : Series or DatetimeIndex
            The same type as the original data with boolean values. Series will
            have the same name and index. DatetimeIndex will have the same
            name.

        See Also
        --------
        quarter : Return the quarter of the date.
        is_quarter_start : Similar property indicating the quarter start.

        Examples
        --------
        This method is available on Series with datetime values under
        the ``.dt`` accessor, and directly on DatetimeIndex.

        >>> df = pd.DataFrame({'dates': pd.date_range("2017-03-30",
        ...                    periods=4)})
        >>> df.assign(quarter=df.dates.dt.quarter,
        ...           is_quarter_end=df.dates.dt.is_quarter_end)
               dates  quarter    is_quarter_end
        0 2017-03-30        1             False
        1 2017-03-31        1              True
        2 2017-04-01        2             False
        3 2017-04-02        2             False

        >>> idx = pd.date_range('2017-03-30', periods=4)
        >>> idx
        DatetimeIndex(['2017-03-30', '2017-03-31', '2017-04-01', '2017-04-02'],
                      dtype='datetime64[us]', freq='D')

        >>> idx.is_quarter_end
        array([False,  True, False, False])
        r�   a  
        Indicate whether the date is the first day of a year.

        This boolean attribute evaluates to True if the date is January 1st,
        and False otherwise.

        Returns
        -------
        Series or DatetimeIndex
            The same type as the original data with boolean values. Series will
            have the same name and index. DatetimeIndex will have the same
            name.

        See Also
        --------
        is_year_end : Similar property indicating the last day of the year.

        Examples
        --------
        This method is available on Series with datetime values under
        the ``.dt`` accessor, and directly on DatetimeIndex.

        >>> dates = pd.Series(pd.date_range("2017-12-30", periods=3))
        >>> dates
        0   2017-12-30
        1   2017-12-31
        2   2018-01-01
        dtype: datetime64[us]

        >>> dates.dt.is_year_start
        0    False
        1    False
        2    True
        dtype: bool

        >>> idx = pd.date_range("2017-12-30", periods=3)
        >>> idx
        DatetimeIndex(['2017-12-30', '2017-12-31', '2018-01-01'],
                      dtype='datetime64[us]', freq='D')

        >>> idx.is_year_start
        array([False, False,  True])

        This method, when applied to Series with datetime values under
        the ``.dt`` accessor, will lose information about Business offsets.

        >>> dates = pd.Series(pd.date_range("2020-10-30", periods=4, freq="BYS"))
        >>> dates
        0   2021-01-01
        1   2022-01-03
        2   2023-01-02
        3   2024-01-01
        dtype: datetime64[us]

        >>> dates.dt.is_year_start
        0    True
        1    False
        2    False
        3    True
        dtype: bool

        >>> idx = pd.date_range("2020-10-30", periods=4, freq="BYS")
        >>> idx
        DatetimeIndex(['2021-01-01', '2022-01-03', '2023-01-02', '2024-01-01'],
                      dtype='datetime64[us]', freq='BYS-JAN')

        >>> idx.is_year_start
        array([ True,  True,  True,  True])
        r�   aè  
        Indicate whether the date is the last day of the year.

        This boolean attribute evaluates to True if the date is December 31st,
        and False otherwise.

        Returns
        -------
        Series or DatetimeIndex
            The same type as the original data with boolean values. Series will
            have the same name and index. DatetimeIndex will have the same
            name.

        See Also
        --------
        is_year_start : Similar property indicating the start of the year.

        Examples
        --------
        This method is available on Series with datetime values under
        the ``.dt`` accessor, and directly on DatetimeIndex.

        >>> dates = pd.Series(pd.date_range("2017-12-30", periods=3))
        >>> dates
        0   2017-12-30
        1   2017-12-31
        2   2018-01-01
        dtype: datetime64[us]

        >>> dates.dt.is_year_end
        0    False
        1     True
        2    False
        dtype: bool

        >>> idx = pd.date_range("2017-12-30", periods=3)
        >>> idx
        DatetimeIndex(['2017-12-30', '2017-12-31', '2018-01-01'],
                      dtype='datetime64[us]', freq='D')

        >>> idx.is_year_end
        array([False,  True, False])
        r‘   a�  
        Boolean indicator if the date belongs to a leap year.

        A leap year is a year, which has 366 days (instead of 365) including
        29th of February as an intercalary day.
        Leap years are years which are multiples of four with the exception
        of years divisible by 100 but not by 400.

        Returns
        -------
        Series or ndarray
             Booleans indicating if dates belong to a leap year.

        See Also
        --------
        DatetimeIndex.is_year_end : Indicate whether the date is the
            last day of the year.
        DatetimeIndex.is_year_start : Indicate whether the date is the first
            day of a year.

        Examples
        --------
        This method is available on Series with datetime values under
        the ``.dt`` accessor, and directly on DatetimeIndex.

        >>> idx = pd.date_range("2012-01-01", "2015-01-01", freq="YE")
        >>> idx
        DatetimeIndex(['2012-12-31', '2013-12-31', '2014-12-31'],
                      dtype='datetime64[us]', freq='YE-DEC')
        >>> idx.is_leap_year
        array([ True, False, False])

        >>> dates_series = pd.Series(idx)
        >>> dates_series
        0   2012-12-31
        1   2013-12-31
        2   2014-12-31
        dtype: datetime64[us]
        >>> dates_series.dt.is_leap_year
        0     True
        1    False
        2    False
        dtype: bool
        c                ó  — | j                   �.| j                  d«      j                  d«      j                  «       S t	        j
                  | j                  «      }t	        j
                  | j                  «      }t	        j
                  | j                  «      }|dk  }||xx   dz  cc<   ||xx   dz  cc<   |t	        j                  d|z  dz
  dz  «      z   d	|z  z   t	        j                  |d
z  «      z   t	        j                  |dz  «      z
  t	        j                  |dz  «      z   dz   | j                  | j                  dz  z   | j                  dz  z   | j                  dz  dz  z   | j                  dz  dz  z   dz  z   S )a�  
        Convert Timestamp to a Julian Date.

        This method returns the number of days as a float since noon January 1, 4713 BC.

        https://en.wikipedia.org/wiki/Julian_day

        Returns
        -------
        ndarray or Index
            Float values that represent each date in Julian Calendar.

        See Also
        --------
        Timestamp.to_julian_date : Equivalent method on ``Timestamp`` objects.

        Examples
        --------
        >>> idx = pd.DatetimeIndex(["2028-08-12 00:54", "2028-08-12 02:06"])
        >>> idx.to_julian_date()
        Index([2461995.5375, 2461995.5875], dtype='float64')
        NÚUTCrá   rç   r¶  é™   iÉ  é   im  é   éd   i�  g   €C:Aé<   i  i@B i Êš;é   )rR   r¦   r¥   Úto_julian_dater[   Úasarrayr’   r“   r”   Útruncrª   r•   r–   r—   rœ   r�   )ro   r’   r“   r”   Útestarrs        rT   rÉ  zDatetimeArray.to_julian_date�	  s|  € ð. �7‰7Ðà—?‘? 5Ó)×5Ñ5°dÓ;×JÑJÓLÐLô �z‰z˜$Ÿ)™)Ó$ˆÜ—
‘
˜4Ÿ:™:Ó&ˆÜ�j‰j˜Ÿ™Ó"ˆØ˜!‘)ˆØˆW‹˜Ñ‹Øˆg‹˜"Ñ‹àÜ�h‰h˜˜e™ cÑ)¨QÑ.Ó/ñ0à�D‰jñô �h‰h�t˜a‘xÓ ñ!ô �h‰h�t˜c‘zÓ"ñ	#ô
 �h‰h�t˜c‘zÓ"ñ#ð ñð —	‘	Ø—+‘+ Ñ"ñ#à—+‘+ Ñ$ñ%ð ×"Ñ" TÑ)¨EÑ1ñ2ð —/‘/ DÑ(¨5Ñ0ñ	1ð ññð	
rV   ©ÚskipnaÚkeepdimsc               óØ   •— t        ‰| �  |f||dœ|¤Ž}|rSt        |t        j                  «      r9|dk(  rddlm} |j                  |«      S | j                  || j                  ¬«      S |S )NrÍ  Ústdr   ©ÚTimedeltaArrayrÎ   )	r¼   Ú_reducer�   r[   rº   re  rÓ  rÅ   r\   )ro   rw   rÎ  rÏ  r<  rq   rÓ  r¾   s          €rT   rÔ  zDatetimeArray._reduceÔ	  si   ø€ ô ‘‘ ÐR¨f¸xÑRÈ6ÑRˆÙœ
 6¬2¯:©:Ô6Ø�uŠ}Ý=à%×4Ñ4°VÓ<Ð<à×*Ñ*¨6¸¿¹Ð*ÓDÐDØˆrV   c                ó  — ddl m} | j                  j                  j                  j                  dd«      }t        j                  |«      }|j                  | j                  j                  |«      |¬«      }	|	j                  |||||¬«      S )aC	  
        Return sample standard deviation over requested axis.

        Normalized by `N-1` by default. This can be changed using ``ddof``.

        Parameters
        ----------
        axis : int, optional
            Axis for the function to be applied on. For :class:`pandas.Series`
            this parameter is unused and defaults to ``None``.
        dtype : dtype, optional, default None
            Type to use in computing the standard deviation. For arrays of
            integer type the default is float64, for arrays of float types
            it is the same as the array type.
        out : ndarray, optional, default None
            Alternative output array in which to place the result. It must have
            the same shape as the expected output but the type (of the
            calculated values) will be cast if necessary.
        ddof : int, default 1
            Degrees of Freedom. The divisor used in calculations is `N - ddof`,
            where `N` represents the number of elements.
        keepdims : bool, optional
            If this is set to True, the axes which are reduced are left in the
            result as dimensions with size one. With this option, the result
            will broadcast correctly against the input array. If the default
            value is passed, then keepdims will not be passed through to the
            std method of sub-classes of ndarray, however any non-default value
            will be. If the sub-class method does not implement keepdims any
            exceptions will be raised.
        skipna : bool, default True
            Exclude NA/null values. If an entire row/column is ``NA``, the result
            will be ``NA``.

        Returns
        -------
        Timedelta
            Standard deviation over requested axis.

        See Also
        --------
        numpy.ndarray.std : Returns the standard deviation of the array elements
            along given axis.
        Series.std : Return sample standard deviation over requested axis.

        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.std()
        Timedelta('1 days 00:00:00')
        r   rÒ  r†   Útimedelta64rÎ   )ÚaxisÚoutÚddofrÏ  rÎ  )
re  rÓ  r1  r\   rw   Úreplacer[   r½   r  rÑ  )
ro   r×  r\   rØ  rÙ  rÏ  rÎ  rÓ  Ú	dtype_strÚtdas
             rT   rÑ  zDatetimeArray.stdá	  sx   € õF 	6ð —M‘M×'Ñ'×,Ñ,×4Ñ4°\À=ÓQˆ	Ü—‘˜Ó#ˆà×(Ñ(¨¯©×);Ñ);¸EÓ)BÈ%Ð(ÓPˆà�w‰w˜D c°¸xÐPVˆwÓWÐWrV   )Úreturnúnp.datetime64)rÝ  ztype[Timestamp])rp   znpt.NDArray[np.datetime64]r\   r°   rÝ  r   )rÀ   ÚboolrÝ  r   )
rÀ   rß  rÇ   rß  rÈ   rß  rÉ   rC   rÝ  r   )NFrÆ   rÆ   Úboth)rè   ú
int | Noner§   rß  rÉ   rC   rë   rD   r  rB   rS   rE   rÝ  r   )rÝ  úTimestamp | NaTType)rÝ  ÚNone)r‚   rÞ  rÝ  râ  )rÝ  r°   )rÝ  útzinfo | None)rÝ  rß  )NN)rÝ  ú
np.ndarray)rÖ   rå  rÝ  rå  )T)rÀ   rß  )r6  zstr | floatrÝ  únpt.NDArray[np.object_])ré   r   rÝ  r   )rÝ  znpt.NDArray[np.int64])rÝ  r   )rÆ   rÆ   )rÉ   rC   rë   rD   rÝ  r   )rÝ  ræ  rO   )rÝ  rJ   )rÝ  rK   )rÝ  úpa.Array)r�  rç  rÝ  rK   )rÝ  rH   )rr   r0  rb   zBaseOffset | NonerÝ  rå  )rÝ  znpt.NDArray[np.float64])rw   r0  rÎ  rß  rÏ  rß  )NNNrç   FT)rÙ  rí   rÏ  rß  rÎ  rß  rÝ  r   )`rt   Ú
__module__Ú__qualname__ru   Ú_typr   r[   r†   Ú_recognized_scalarsr„   Ú__annotations__rv   rˆ   rŠ   ri   rž   r¢   r£   r¯   Ú__array_priority__Úclassmethodr¸   r.   r½   rÅ   r   rÏ   rÃ   rû   r  r  r  r  r\   rR   Úsetterr   r%  r(  r,  r  r=  r  rS  rh   r¦   rÒ   Úravel_compatr¥   r^  r§   r`  r¤   r¬   rr  r­   r†  r~  Ústaticmethodr€  r    r¡   rŸ   r¡  ry   r’   r“   r”   r•   r–   r—   rœ   r�   Ú_dayofweek_docr˜   rª  r¬  r™   r®  rš   r›   r´  rk   Ú_is_month_docr9  r‹   rŒ   r�   rŽ   r�   r�   r‘   rÉ  rÔ  rÑ  Ú__classcell__)r¾   s   @rT   r{   r{   ¥   sO  ø… ñ2ðh €DØ# R§]¡]Ð3Ðñ8ÐÐ4ó ð ò/ó ð/ð òó ðò€Iˆyó ò€J�	ó ò 7€J�	Ó6Ø#-°	Ñ#9¸JÑ#FÈ&ÐRVÈÑ#WÐ�yÓWò(Ð˜9ó ð$ Ðð
 6Ó5àñó ðð ð <Hð2à*ð2ð 9ð2ð 
ô	2ó ð2ð" Ø.2Àô Nó ðNð ð
 ØØ�>‰>ØØØ#*ñ?ð
 ð?ð ð?ð ð?ð !ð?ð 
ò?ó ð?ðB ð ØØ#*Ø'.Ø(.ð]9ð ñ]9ð ð	]9ð ð]9ð !ð]9ð %ð]9ð &ð]9ð ð]9ð 
ò]9ó ð]9óDAó,ó/óð òó	 ðð* ò*/ó ð*/ðX ‡Y�Yñ
ó ð
ð òó ðð òNó ðNö9ó
ö
ADðN (-¸$ñ	
Ø$ð	
à	 ó	
óó08óz
IóT<ðl 	×Ñð $+Ø'.ð	n=ð !ðn=ð %ð	n=ð
 
òn=ó ðn=ófKó8*óXLôLMôbIóV0ôIóV0óIð ò(ó ð(ð ò*Ló ð*LðX ò$Tó ð$TðL ò+Ló ð+LóZ-ñ^ ØØð	ó€Dñ@ ØØð	ó€Eñ@ ØØð	ó €CñB ØØð	ó €DñB ØØð	ó€Fñ> ØØð	ó€Fñ@ "ØØð	ó€Kñ@ !ØØð	ó€Jð@ €NñB " -°¸ÓG€Kàñ ó ð ð" ñ ó ð ñ "ØØð 	ó$€KðL ñ ó ð ñ ØØð#	ó'€GñP $ØØð	ó €MðD ñ"ó ð"ó
ð0.€Mñ^ %ØÐ*¨M×,@Ñ,@ÈwÐ,@Ó,Wó€Nñ #Ø˜¨×(<Ñ(<È6Ð(<Ó(Ró€Lñ 'ØØð)	ó-Ðñ\ %ØØð)	ó-€Nñ\ $ØØðD	óH€MñR "ØØð*	ó.€Kñ^ #ØØð+	ó/€Lób2
ðp ,0À%ñØðØ$(ðØ;?õð ØØØØØðKXð
 ðKXð ðKXð ðKXð 
÷KXrV   r{   FrÆ   rÌ   c          	     ó*  — t        | ||¬«      \  } }t        | dd«      }t        }|�t        j                  d|› d�«      }|t
        k(  st        |«      rÛt        d| «      } d}t        j                  | d¬«      d	k(  r | j                  t        j                  «      } n‡|�G|d
k(  rBt        j                  | t
        ¬«      }	t        j                  |	|||t        |«      ¬«      }
|
|fS t!        | |||¬«      \  }}d}|r|r|}
|
|fS |r|}|}
|
|fS t#        ||||¬«      \  }
}|
|fS | j                  }t%        |t&        «      r/t        d| «      } t)        || j*                  «      }| j,                  }
n¤t        j.                  |d«      r;t%        | t0        «      r| j,                  } t        d| «      } t#        | |||¬«      \  }
}nS| j                  t2        k7  r#| j                  t        j                  d¬«      } d}t        d| «      } | j5                  |«      }
|r|
j7                  «       }
t%        |
t        j8                  «      sJ t;        |
«      «       ‚|
j                  j<                  dk(  sJ ‚|
j                  dk7  sJ ‚t?        |
j                  «      sJ ‚|
|fS )aQ  
    Parameters
    ----------
    data : np.ndarray or ExtensionArray
        dtl.ensure_arraylike_for_datetimelike has already been called.
    copy : bool, default False
    tz : tzinfo or None, default None
    dayfirst : bool, default False
    yearfirst : bool, default False
    ambiguous : str, bool, or arraylike, default 'raise'
        See pandas._libs.tslibs.tzconversion.tz_localize_to_utc.
    out_unit : str or None, default None
        Desired output resolution.

    Returns
    -------
    result : numpy.ndarray
        The sequence converted to a numpy array with dtype ``datetime64[unit]``.
        Where `unit` is "ns" unless specified otherwise by `out_unit`.
    tz : tzinfo or None
        Either the user-provided tzinfo or one inferred from the data.

    Raises
    ------
    TypeError : PeriodDType data is passed
    r  r\   NrY   rZ   rå  F)rÎ  ÚintegerrÆ   rÎ   )rR   rÇ   rÈ   rì   )rÇ   rÈ   rÍ   )rR   rÀ   rÉ   r{   r   r.  ÚM8) Úmaybe_convert_dtyper  r.   r[   r\   r'  r2   r
   r   Úinfer_dtyper  rî   rÊ  r   Úarray_to_datetime_with_tzr&   Úobjects_to_datetime64Ú_construct_from_dt64_naiver�   r4   Ú_maybe_infer_tzrR   r1  r€   r{   r/   r  rÀ   rº   r2  r»   r   )rÖ   rÀ   rR   rÇ   rÈ   rÉ   rÍ   rÚ   Ú	out_dtypeÚobj_datarq   Ú	convertedÚinferred_tzÚ_s                 rT   rÕ   rÕ   3
  s†  € ôL % T¨4°BÔ7�J€Dˆ$Ü˜˜w¨Ó-€Jä€IØÐÜ—H‘H˜s 8 *¨AÐ.Ó/ˆ	à”VÒœ¨zÔ:ô �L $Ó'ˆØˆÜ�?‰?˜4¨Ô.°)Ò;à—;‘;œrŸx™xÓ(‰DØˆ^ 	¨WÒ 4Ü—z‘z $¬fÔ5ˆHÜ×4Ñ4ØØØ!Ø#Ü(¨Ó2ôˆFð ˜2�:Ðä%:ØØ!Ø#Ø!ô	&Ñ"ˆI�{ð ˆDÙ‘kð #�ð ˜2�:Ðñ Ø �Ø"�ð ˜2�:Ðô 7Ø "¨4¸9ô‘	�˜ð ˜2�:Ðà—Z‘Zˆ
ô �*œoÔ.ä�O TÓ*ˆÜ˜R §¡Ó)ˆØ—‘‰ä	�‰˜ SÔ	)ä�dœMÔ*Ø—=‘=ˆDä�L $Ó'ˆÜ1Ø�R˜d¨iô
‰ˆ‘ð �:‰:œÒ$Ø—;‘;œrŸx™x¨e�;Ó4ˆDØˆDÜ�L $Ó'ˆØ—‘˜9Ó%ˆáØ—‘“ˆä�fœbŸj™jÔ)Ð7¬4°«<Ó7Ð)Ø�<‰<×Ñ Ò#Ð#Ð#Ø�<‰<˜4ÒÐÐÜ˜fŸl™lÔ+Ð+Ð+Ø�2ˆ:ÐrV   c               óX  — | j                   }t        |«      st        |«      }t        | |d¬«      } d}| j                   j                  dk(  r8| j                  | j                   j                  d«      «      } | j                   }d}|�€| j                  }| j                  dkD  r| j                  «       } t        |«      }t        j                  | j                  d«      |||¬«      } | j                  |«      } | j                  |«      } | j                   |k(  sJ | j                   «       ‚| }||fS )zP
    Convert datetime64 data to a supported dtype, localizing if necessary.
    Fr¿   ú>ú<rç   rï   )rÉ   rì   )r\   r   r   r   Ú	byteorderr  ÚnewbyteorderÚshapeÚndimÚravelr   r#   rÿ   r  Úreshape)rÖ   rR   rÀ   rÉ   Ú	new_dtyper  rÙ   rq   s           rT   rü  rü  °
  s
  € ð —
‘
€IÜ˜iÔ(ä'¨	Ó2ˆ	Ü" 4¨y¸uÔEˆØˆà‡z�z×Ñ˜sÒ"ð �{‰{˜4Ÿ:™:×2Ñ2°3Ó7Ó8ˆØ—J‘Jˆ	Øˆà	€~ð —
‘
ˆØ�9‰9�qŠ=Ø—:‘:“<ˆDä'¨	Ó2ˆ	Ü×.Ñ.Ø�I‰I�d‹O˜R¨9¸Iô
ˆð �y‰y˜Ó#ˆØ�|‰|˜EÓ"ˆà�:‰:˜Ò"Ð. D§J¡JÓ.Ð"Ø€Fà�4ˆ<ÐrV   c           
     ó  — |dv sJ ‚t        j                  | t         j                  ¬«      } t        j                  | ||||t        |«      ¬«      \  }}|�||fS |j                  j                  dk(  r||fS t        |«      ‚)a   
    Convert data to array of timestamps.

    Parameters
    ----------
    data : np.ndarray[object]
    dayfirst : bool
    yearfirst : bool
    utc : bool, default False
        Whether to convert/localize timestamps to UTC.
    errors : {'raise', 'coerce'}
    out_unit : str or None, default None
        None indicates we should do resolution inference.

    Returns
    -------
    result : ndarray
        np.datetime64[out_unit] if returned values represent wall times or UTC
        timestamps.
    inferred_tz : tzinfo or None
        If not None, then the datetime64 values in `result` denote UTC timestamps.

    Raises
    ------
    ValueError : if data cannot be converted to datetimes
    TypeError  : When a type cannot be converted to datetime
    )rÆ   ÚcoercerÎ   )ÚerrorsÚutcrÇ   rÈ   rì   r   )	r[   rÊ  Úobject_r   Úarray_to_datetimer&   r\   r»   r/  )rÖ   rÇ   rÈ   r  r  rÍ   rq   Ú	tz_parseds           rT   rû  rû  Ü
  s•   € ðF Ð(Ñ(Ð(Ð(ô �:‰:�d¤"§*¡*Ô-€Dä×/Ñ/ØØØØØÜ  Ó*ôÑ€FˆIð Ðð �yÐ Ð Ø	�‰×	Ñ	˜cÒ	!Ø�yÐ Ð ô ˜ÓÐrV   c                óD  — t        | d«      s| |fS t        | j                  «      r*| j                  t        «      j                  d«      } d}| |fS t        j                  | j                  d«      st        | j                  «      rt        d| j                  › d�«      ‚t        | j                  t        «      rt        d«      ‚t        | j                  t        «      rAt        | j                  t        «      s't        j                  | t        j                   ¬«      } d}| |fS )	a\  
    Convert data based on dtype conventions, issuing
    errors where appropriate.

    Parameters
    ----------
    data : np.ndarray or pd.Index
    copy : bool
    tz : tzinfo or None, default None

    Returns
    -------
    data : np.ndarray or pd.Index
    copy : bool

    Raises
    ------
    TypeError : PeriodDType data is passed
    r\   rï   Fr¥  zdtype z& cannot be converted to datetime64[ns]zFPassing PeriodDtype data is invalid. Use `data.to_timestamp()` insteadrÎ   )rP  r1   r\   r  r.   r  r   r€   r0   r/  r�   r6   r5   r4   r[   rü   r  )rÖ   rÀ   rR   s      rT   rø  rø    sí   € ô( �4˜Ô!à�TˆzÐä�d—j‘jÔ!ð
 �{‰{œ<Ó(×-Ñ-¨dÓ3ˆØˆð& �ˆ:Ðô# 
�‰˜Ÿ™ SÔ	)¬]¸4¿:¹:Ô-Fä˜& §¡ Ð,RÐSÓTÐTÜ	�D—J‘J¤Ô	,ô ØTó
ð 	
ô 
�D—J‘J¤Ô	/¼
Ø�
‰
”Oô9ô �x‰x˜¤B§J¡JÔ/ˆØˆà�ˆ:ÐrV   c                ój   — | €|} | S |€	 | S t        j                  | |«      st        d|› d| › �«      ‚| S )aV  
    If a timezone is inferred from data, check that it is compatible with
    the user-provided timezone, if any.

    Parameters
    ----------
    tz : tzinfo or None
    inferred_tz : tzinfo or None

    Returns
    -------
    tz : tzinfo or None

    Raises
    ------
    TypeError : if both timezones are present but do not match
    zdata is already tz-aware z, unable to set specified tz: )r    Ú
tz_comparer/  )rR   r  s     rT   rý  rý  P  s`   € ð$ 
€zØˆð €Ið 
Ð	Øð
 €Iô	 ×!Ñ! " kÔ2ÜØ'¨ }Ð4RÐSUÐRVÐWó
ð 	
ð €IrV   c                óÊ  — | �àt        | «      } | t        j                  d«      k(  rd}t        |«      ‚t	        | t        j                  «      r| j
                  dk7  s+t        | «      r t	        | t        j                  t        f«      st        d| › d�«      ‚t        | dd«      r@t        d| «      } t        | j                  t        j                  | j                  «      ¬	«      } | S )
a£  
    Check that a dtype, if passed, represents either a numpy datetime64[ns]
    dtype or a pandas DatetimeTZDtype.

    Parameters
    ----------
    dtype : object

    Returns
    -------
    dtype : None, numpy.dtype, or DatetimeTZDtype

    Raises
    ------
    ValueError : invalid dtype

    Notes
    -----
    Unlike _validate_tz_from_dtype, this does _not_ allow non-existent
    tz errors to go through
    Nr÷  zhPassing in 'datetime64' dtype with no precision is not allowed. Please pass in 'datetime64[ns]' instead.r   zUnexpected value for 'dtype': 'ze'. Must be 'datetime64[s]', 'datetime64[ms]', 'datetime64[us]', 'datetime64[ns]' or DatetimeTZDtype'.rR   r4   )rS   rR   )r3   r[   r\   r´   r�   r»   r   r4   r  r
   rS   r    Útz_standardizerR   )r\   Úmsgs     rT   r³   r³   m  sÕ   € ð, ÐÜ˜UÓ#ˆØ”B—H‘H˜T“NÒ"ð;ð ô ˜S“/Ð!ô �uœbŸh™hÔ'Ø—‘˜sÒ"Ô*<¸UÔ*CÜ˜E¤B§H¡H¬oÐ#>Ô?ÜØ1°%°ð 98ð 8óð ô �5˜$ Ô%ô Ð*¨EÓ2ˆEÜ#Ø—Z‘Z¤I×$<Ñ$<¸U¿X¹XÓ$FôˆEð €LrV   c                ól  — | �¢t        | t        «      r	 t        j                  | «      } t        | dd«      }|�2|�!t        j                  ||«      st        d«      ‚|rt        d«      ‚|}|�9t        j                  | d«      r#|�!t        j                  ||«      st        d«      ‚|S # t        $ r Y Œ‰w xY w)aÍ  
    If the given dtype is a DatetimeTZDtype, extract the implied
    tzinfo object from it and check that it does not conflict with the given
    tz.

    Parameters
    ----------
    dtype : dtype, str
    tz : None, tzinfo
    explicit_tz_none : bool, default False
        Whether tz=None was passed explicitly, as opposed to lib.no_default.

    Returns
    -------
    tz : consensus tzinfo

    Raises
    ------
    ValueError : on tzinfo mismatch
    NrR   z-cannot supply both a tz and a dtype with a tzz3Cannot pass both a timezone-aware dtype and tz=Noner   zHcannot supply both a tz and a timezone-naive dtype (i.e. datetime64[ns]))r�   r0  r4   Úconstruct_from_stringr/  r  r    r  r´   r   r€   )r\   rR   r×   Údtzs       rT   rÑ   rÑ   ¥  sÊ   € ð. ÐÜ�eœSÔ!ðÜ'×=Ñ=¸eÓD�ô �e˜T 4Ó(ˆØˆ?Øˆ~¤i×&:Ñ&:¸2¸sÔ&CÜ Ð!PÓQÐQÙÜ Ð!VÓWÐWØˆBàˆ>œcŸo™o¨e°SÔ9ð ˆ~¤i×&:Ñ&:¸2¸sÔ&CÜ ðAóð ð
 €Iøô/ ò ñ
 ðús   ”B' Â'	B3Â2B3c                ó  — 	 t        j                  | |«      }t        j                  |«      }t        j                  |«      }|�%|�#t        j
                  ||«      st        d«      ‚|S |�|}|S # t        $ r}t        d«      |‚d}~ww xY w)a·  
    If a timezone is not explicitly given via `tz`, see if one can
    be inferred from the `start` and `end` endpoints.  If more than one
    of these inputs provides a timezone, require that they all agree.

    Parameters
    ----------
    start : Timestamp
    end : Timestamp
    tz : tzinfo or None

    Returns
    -------
    tz : tzinfo or None

    Raises
    ------
    TypeError : if start and end timezones do not agree
    z>Start and end cannot both be tz-aware with different timezonesNz0Inferred time zone not equal to passed time zone)r    Úinfer_tzinfoÚAssertionErrorr/  rÐ   r  )r_   r`   rR   r  Úerrs        rT   rö   rö   Ú  sŸ   € ð,Ü×,Ñ,¨U°CÓ8ˆô ×(Ñ(¨Ó5€KÜ	×	Ñ	 Ó	#€Bà	€~˜+Ð1Ü×#Ñ# K°Ô4Ü Ð!SÓTÐTð
 €Ið 
Ð	 Øˆà€Iøô! ò äØLó
àð	ûðús   ‚A/ Á/	B	Á8BÂB	c                óV   — |r$| �| j                  «       } |�|j                  «       }| |fS rO   )r§   )r_   r`   r§   s      rT   rõ   rõ     s3   € ñ ØÐØ—O‘OÓ%ˆEàˆ?Ø—-‘-“/ˆCà�#ˆ:ÐrV   c                ó’   — | �D| j                   €8|dk7  r|nd}||ddœ}t        |t        «      s|€||d<    | j                  di |¤Ž} | S )a¹  
    Localize a start or end Timestamp to the timezone of the corresponding
    start or end Timestamp

    Parameters
    ----------
    ts : start or end Timestamp to potentially localize
    freq : Tick, DateOffset, or None
    tz : str, timezone object or None
    ambiguous: str, localization behavior for ambiguous times
    nonexistent: str, localization behavior for nonexistent times

    Returns
    -------
    ts : Timestamp
    NÚinferF)rÉ   rë   rR   rR   rP   )r   r�   r<   r¥   )r  rb   rR   rÉ   rë   Úlocalize_argss         rT   r÷   r÷     s_   € ð, 
€~˜"Ÿ)™)Ð+ð "+¨gÒ!5‘I¸5ˆ	Ø&/ÀÐSWÑXˆÜ�dœDÔ! T \Ø"$ˆM˜$ÑØˆR�^‰^Ñ,˜mÑ,ˆØ€IrV   c             #  óê  K  — t        |«      }t        | «      } | t        ur| j                  |«      } nd} t        |«      }|t        ur|j                  |«      }nd}|�E|�C|j	                  |«      s2|j
                  dk\  r|j                  |«      }n|j                  |«      }| rC|j	                  | «      s2|j
                  dk\  r|j                  | «      } n|j                  | «      } |€|| k  r|j
                  dk\  rd}d}|€|dk(  r| }n| |dz
  |z  z   }| €|dk(  r|} n||dz
  |z  z
  } t        d| «      } t        d|«      }| }|j
                  dk\  rO||k  rI|–— ||k(  ry|j                  |«      }|j                  |«      }||k  rt        d|› d�«      ‚|}||k  rŒHyy||k\  rI|–— ||k(  ry|j                  |«      }|j                  |«      }||k\  rt        d|› d�«      ‚|}||k\  rŒHyy­w)aŠ  
    Generates a sequence of dates corresponding to the specified time
    offset. Similar to dateutil.rrule except uses pandas DateOffset
    objects to represent time increments.

    Parameters
    ----------
    start : Timestamp or None
    end : Timestamp or None
    periods : int or None
    offset : DateOffset
    unit : str

    Notes
    -----
    * This method is faster for generating weekdays than dateutil.rrule
    * At least two of (start, end, periods) must be specified.
    * If both start and end are specified, the returned dates will
    satisfy start <= date <= end.

    Returns
    -------
    dates : generator object
    Nr   rç   r   zOffset z did not increment datez did not decrement date)r!   r   r   r®   Úis_on_offsetrø   ÚrollbackÚrollforwardr
   Ú_add_datetimer´   )r_   r`   rè   ré   rS   ÚcurÚ	next_dates          rT   rû   rû   3  s=  è ø€ ô@ �vÓ€Fä�eÓ€Eð ”CÑØ—‘˜dÓ#‰àˆä
�C‹.€Cð ”#�~Ø�k‰k˜$Ó‰àˆð €˜7Ð.°v×7JÑ7JÈ3Ô7OØ�8‰8�qŠ=Ø—/‘/ #Ó&‰Cà×$Ñ$ SÓ)ˆCá�V×(Ñ(¨Ô/ð
 �8‰8�qŠ=Ø×&Ñ& uÓ-‰Eà—O‘O EÓ*ˆEð €˜3 š;¨6¯8©8°qª=ØˆØˆà
€{à�aŠ<Ø‰Cð ˜7 Q™;¨&Ñ0Ñ0ˆCà€}à�aŠ<Ø‰Eð ˜7 Q™;¨&Ñ0Ñ0ˆEä�˜eÓ$€EÜ
ˆ{˜CÓ
 €Cà
€CØ‡x�x�1‚}Ø�SŠjØŠIà�cŠzð ð ×,Ñ,¨SÓ1ˆIØ!×)Ñ)¨$Ó/ˆIØ˜CÒÜ  7¨6¨(Ð2IÐ!JÓKÐKØˆCð �S�jð �SŠjØŠIà�cŠzð ð ×,Ñ,¨SÓ1ˆIØ!×)Ñ)¨$Ó/ˆIØ˜CÒÜ  7¨6¨(Ð2IÐ!JÓKÐKØˆCð �S�jùs   ‚FG3Æ"AG3Ç1G3).)rR   r   rS   rE   rÝ  r4   )rR   rã  rS   rE   rÝ  znp.dtype[np.datetime64])rÛ   )rR   rä  rS   rE   rÝ  r°   rO   )rw   r0  rr   r0  rx   ú
str | None)rÖ   r?   rÀ   rß  rR   rä  rÇ   rß  rÈ   rß  rÉ   rC   rÍ   r,  rÝ  ú tuple[np.ndarray, tzinfo | None])
rÖ   rå  rR   rä  rÀ   rß  rÉ   rC   rÝ  ztuple[np.ndarray, bool])FrÆ   N)
rÖ   rå  r  rß  r  r@   rÍ   r,  rÝ  r-  )rÀ   rß  rR   rä  )rR   rä  r  rä  rÝ  rä  )F)rR   rä  r×   rß  rÝ  rä  )r_   r   r`   r   rR   rä  rÝ  rä  )r_   rL   r`   rM   r§   rß  rÝ  z)tuple[_TimestampNoneT1, _TimestampNoneT2])r  úTimestamp | NonerÝ  r.  )r_   r.  r`   r.  rè   rá  ré   r   rS   rE   rÝ  zGenerator[Timestamp])|Ú
__future__r   r   r   r   Útypingr   r   r	   r
   r   rN  Únumpyr[   Úpandas._configr   Úpandas._config.configr   rM  Úpandas._libsr   r   Úpandas._libs.tslibsr   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r    r!   r"   r#   Úpandas._libs.tslibs.ccalendarr$   r%   Úpandas._libs.tslibs.dtypesr&   Úpandas._libs.tslibs.offsetsr'   Úpandas.compat.pyarrowr(   Úpandas.errorsr)   r*   Úpandas.util._decoratorsr+   Úpandas.util._exceptionsr,   Úpandas.util._validatorsr-   Úpandas.core.dtypes.commonr.   r/   r0   r1   r2   r3   Úpandas.core.dtypes.dtypesr4   r5   r6   re  r7   rÒ   Úpandas.core.arrays._rangesr8   r9   Úpandas.core.commonÚcoreÚcommonró   Úpandas.tseries.frequenciesr:   Úpandas.tseries.offsetsr;   r<   Úcollections.abcr=   r>   rz  r�  Úpandas._typingr?   r@   rA   rB   rC   rD   rE   rF   rt  rH   rJ   Úpandas.core.arrays.string_arrowrK   rL   rM   rU   ry   ÚTimelikeOpsÚDatelikeOpsr{   rÕ   rü  rû  rø  rý  r³   rÑ   rö   rõ   r÷   rû   rP   rV   rT   ú<module>rK     s  ðÝ "÷ñ ÷
õ ó ã å -Ý :÷÷÷ ÷ ÷ ÷ ó ÷,õ :Ý ;Ý -÷õ /Ý 4Ý 6÷÷ ÷ñ õ 3÷÷ !Ð  å 7÷ñ
 ÷ó
 ÷	÷ 	ó 	õ !Ý.Ý@áÐ1°9¸dÓCÐÙÐ1°9¸dÓCÐð 
Û Ió 
Ø Ið 
Û Oó 
Ø Oð )-ð1Øð1Ø%ð1à.ó1ô*ñ& ˆOÓôF&X�C—O‘O S§_¡_ó F&Xó ðF&Xð`L ØØØØ&ØñzØ
ðzð ðzð 	ð	zð
 ðzð ðzð ðzð ðzð &ózðz)Ø
ð)Ø*ð)Ø26ð)ØCPð)àó)ð` Ø#*Øð9 Ø
ð9 ð 
ð	9 ð
 !ð9 ð ð9 ð &ó9 ôx1ópò:5ðr 8=ð2Øð2Ø04ð2àó2ðj(Øð(Ø$ð(Ø*7ð(àó(ðV
Øð
Ø"2ð
Ø?Cð
à.ó
ðØðàóðB~Øð~à	ð~ð ð~ð ð	~ð ð~ð ô~rV   