Ë
    u™ãj{Î  ã                  óz  — d dl mZ d dlmZ d dlZd dlZd dlmZmZm	Z	 d dl
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 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( d d
l)m*Z+ d dl,m-Z-m.Z. d dl/m0Z0 d dl1m2Z2 d dl3m4Z4m5Z5m6Z6m7Z7m8Z8m9Z9m:Z: d dl;m<Z<m=Z=m>Z> d dl?m@Z@ d dlAmBZBmCZC d dlDmEZE d dlFmGZH d dlImJZJ d dlKmLZL d dlMmNc mOZP d dlQmRZR d dlSmTZT erd dlUmVZV d dlWmXZXmYZYmZZZm[Z[m\Z\m]Z] d dl^m_Z_ d„ Z`d$d„Za e0d«       G d„ deHjÄ                  «      «       Zc	 	 	 d%	 	 	 	 	 d&d „Zdd'd(d!„Ze	 d)	 	 	 d*d"„Zfd+d#„Zgy),é    )Úannotations)Ú	timedeltaN)ÚTYPE_CHECKINGÚSelfÚcast)ÚlibÚtslibs)ÚDayÚNaTÚNaTTypeÚ
ResolutionÚTickÚ	TimedeltaÚastype_overflowsafeÚget_resolutionÚget_supported_dtypeÚiNaTÚis_supported_dtypeÚmul_overflowsafeÚperiods_per_second)Úcast_from_unit_vectorized)Úget_timedelta_daysÚget_timedelta_field)Úarray_to_timedelta64Úcontains_strÚfloordiv_object_arrayÚints_to_pytimedeltaÚparse_timedelta_unitÚtruediv_object_array)Úfunction)ÚOutOfBoundsDatetimeÚOutOfBoundsTimedelta)Ú
set_module)Úvalidate_endpoints)ÚTD64NS_DTYPEÚis_float_dtypeÚis_integer_dtypeÚis_object_dtypeÚ	is_scalarÚis_string_dtypeÚpandas_dtype)Ú
ArrowDtypeÚBaseMaskedDtypeÚExtensionDtype)Úisna)ÚnanopsÚ	roperator)Údatetimelike_accumulations)Údatetimelike)Úgenerate_regular_range)ÚIntegerArray)Úextract_array)Úunpack_zerodim_and_defer)ÚCallable)ÚAxisIntÚDateTimeErrorChoicesÚDtypeObjÚNpDtypeÚTimeUnitÚnpt©Ú	DataFramec                óp   — t        j                  | «      r | dk7  r| j                  «       rt        | «      S | S )a  
    Return the exact int equivalent of an integral float, otherwise `other`.

    GH#66551 float64 carries only a 53-bit mantissa, so applying a float operand
    in floating point rounds results that int64 represents exactly.  An integral
    float has an exact int equivalent, so the int path can be used instead.
    inf and nan are not integral and so stay in float64.

    Zero is left alone: it needs no exactness fix, and routing it to the int
    path would turn division by 0.0 from NaT into a raise.
    r   )r   Úis_floatÚ
is_integerÚint)Úothers    úh/var/www/html/python-recuperauto-other/env/lib/python3.12/site-packages/pandas/core/arrays/timedeltas.pyÚ_exact_if_integralrG   a   s0   € ô ‡|�|�EÔ˜u¨šz¨e×.>Ñ.>Ô.@Ü�5‹zÐØ€Ló    c                óJ   ‡— dˆfd„}| |_         d|› d�|_        t        |«      S )Nc                óÊ   •— | j                   }‰dk(  rt        || j                  ¬«      }nt        |‰| j                  ¬«      }| j                  r| j                  |d d¬«      }|S )NÚdays©ÚresoÚfloat64)Ú
fill_valueÚconvert)Úasi8r   Ú_cresor   Ú_hasnaÚ_maybe_mask_results)ÚselfÚvaluesÚresultÚaliass      €rF   Úfz_field_accessor.<locals>.fs   sa   ø€ Ø—‘ˆØ�FŠ?Ü'¨°T·[±[ÔA‰Fô
 )¨°¸T¿[¹[ÔIˆFØ�;Š;Ø×-Ñ-Ø 4°ð .ó ˆFð ˆrH   ú
)Úreturnú
np.ndarray)Ú__name__Ú__doc__Úproperty)ÚnamerX   Ú	docstringrY   s    `  rF   Ú_field_accessorrb   r   s+   ø€ õð  €A„JØ�Y�K˜rÐ"€A„IÜ�A‹;ÐrH   zpandas.arraysc                  óv  ‡ — e Zd ZU dZdZeej                  efZ	d„ Z
ded<   edUd„«       ZedVd„«       ZdZg Zd	ed
<   g Zd	ed<   g d¢Zd	ed<   eez   dgz   Zd	ed<   g d¢Zd	ed<   dWd„ZedXd„«       ZedYd„«       Zed„ «       Zeef	 	 	 	 	 dZˆ fd„«       Zedddœd[d„«       Ze	 d\	 	 	 d]d„«       ZdUd„Zd^d„Zd_d„Z d`dad „Z!dbd!„Z"ddddddd"d#œ	 	 	 	 	 	 	 	 	 dcd$„Z#dddd%ddd&œ	 	 	 	 	 	 	 	 	 ddd'„Z$dd(œdeˆ fd)„Z%dfdgd*„Z&d+dd,œ	 	 	 dhd-„Z'd.„ Z(	 	 	 	 did/„Z)djd0„Z* e+d1«      dkd2„«       Z,e,Z-	 	 	 	 dld3„Z.d4„ Z/d5„ Z0dmd6„Z1 e+d7«      d8„ «       Z2 e+d9«      d:„ «       Z3 e+d;«      d<„ «       Z4 e+d=«      d>„ «       Z5 e+d?«      d@„ «       Z6 e+dA«      dB„ «       Z7 e+dC«      dD„ «       Z8 e+dE«      dF„ «       Z9dndG„Z:dndH„Z;dndI„Z<dodJ„Z=dpdK„Z> e?j€                  dL«      ZA eBdMdMeA«      ZC e?j€                  dN«      ZD eBdOdOeD«      ZE e?j€                  dP«      ZF eBdQdQeF«      ZG e?j€                  dR«      ZH eBdSdSeH«      ZIedqdT„«       ZJˆ xZKS )rÚTimedeltaArraya›  
    Pandas ExtensionArray for timedelta data.

    .. warning::

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

    Parameters
    ----------
    data : array-like
        The timedelta data.
    dtype : numpy.dtype
        Valid ``numpy`` dtypes are ``timedelta64[ns]``, ``timedelta64[us]``,
        ``timedelta64[ms]``, and ``timedelta64[s]``.
    freq : Offset, optional
        Frequency of the data.
    copy : bool, default False
        Whether to copy the underlying array of data.

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

    Methods
    -------
    None

    See Also
    --------
    Timedelta : Represents a duration, the difference between two dates or times.
    TimedeltaIndex : Immutable Index of timedelta64 data.
    to_timedelta : Convert argument to timedelta.

    Examples
    --------
    >>> pd.arrays.TimedeltaArray._from_sequence(pd.TimedeltaIndex(["1h", "2h"]))
    <TimedeltaArray>
    ['0 days 01:00:00', '0 days 02:00:00']
    Length: 2, dtype: timedelta64[us]
    Útimedeltaarrayc                ó.   — t        j                  | d«      S ©NÚm)r   Úis_np_dtype©Úxs    rF   ú<lambda>zTimedeltaArray.<lambda>¸   s   € ÄÇÁÐQRÐTWÓAX€ rH   zCallable[[DtypeObj], bool]Ú_is_recognized_dtypec                óB   — t        j                  d| j                  «      S )Nr   )ÚnpÚtimedelta64Úunit©rU   s    rF   Ú_internal_fill_valuez#TimedeltaArray._internal_fill_valueº   s   € ä�~‰~˜e T§Y¡YÓ/Ð/rH   c                ó   — t         S ©N©r   rr   s    rF   Ú_scalar_typezTimedeltaArray._scalar_type¾   s   € äÐrH   iè  z	list[str]Ú
_other_opsÚ	_bool_ops)rK   ÚsecondsÚmicrosecondsÚnanosecondsÚ
_field_opsrq   Ú_datetimelike_ops)Úto_pytimedeltaÚtotal_secondsÚroundÚfloorÚceilÚas_unitÚ_datetimelike_methodsc                ó˜   — |j                  d«      }|t        j                  k(  rt        S t        j                  || j
                  ¬«      S )NÚi8rL   )Úviewr   Ú_valuer   Ú_from_value_and_resorR   )rU   rk   Úys      rF   Ú	_box_funczTimedeltaArray._box_funcÔ   s6   € Ø�F‰F�4‹LˆØ”—
‘
Š?ÜˆJÜ×-Ñ-¨a°d·k±kÔBÐBrH   c                ó.   — | j                   j                  S )a3  
        The dtype for the TimedeltaArray.

        .. warning::

           A future version of pandas will change dtype to be an instance
           of a :class:`pandas.api.extensions.ExtensionDtype` subclass,
           not a ``numpy.dtype``.

        Returns
        -------
        numpy.dtype
        )Ú_ndarrayÚdtyperr   s    rF   r�   zTimedeltaArray.dtypeÚ   s   € ð" �}‰}×"Ñ"Ð"rH   c                óF   — t        | j                  d | j                  ¬«      S )N)ÚtzrM   )r   rQ   rR   rr   s    rF   Ú_resolution_objzTimedeltaArray._resolution_objí   s   € ä˜dŸi™i¨D°t·{±{ÔCÐCrH   c                óz   — t        |«      }t        |j                  «       ||j                  k7  rt        d«      ‚|S )Nz'Values resolution does not match dtype.)Ú_validate_td64_dtyper�   Ú
ValueError)ÚclsrV   r�   s      rF   Ú_validate_dtypezTimedeltaArray._validate_dtypeô   s7   € ô % UÓ+ˆÜ˜VŸ\™\Ô*Ø�F—L‘LÒ ÜÐFÓGÐGØˆrH   c                óú   •— t        j                  |d«      sJ ‚t        j                  |«      rJ ‚t	        |t
        j                  «      sJ t        |«      «       ‚||j                  k(  sJ ‚t        ‰| �)  ||¬«      S )Nrh   )rV   r�   )r   ri   r	   Úis_unitlessÚ
isinstancero   ÚndarrayÚtyper�   ÚsuperÚ_simple_new)r–   rV   r�   Ú	__class__s      €rF   rž   zTimedeltaArray._simple_newþ   sq   ø€ ô �‰˜u cÔ*Ð*Ð*Ü×%Ñ% eÔ,Ð,Ð,Ü˜&¤"§*¡*Ô-Ð;¬t°F«|Ó;Ð-Ø˜Ÿ™Ò$Ð$Ð$ä‰wÑ"¨&¸Ð"Ó>Ð>rH   NF©r�   Úcopyc               ót  — |rt        |«      }t        j                  ||d¬«      \  }}d }|�R|j                  t        k(  rt        |«       }n|j                  j                  dv }|rt        j                  |«      d   }t        |||¬«      }|�t        ||d¬«      }| j                  ||j                  ¬«      S )	Nrd   ©Úcls_nameÚiufr   )r¡   rq   Fr    ©r�   )r”   ÚdtlÚ!ensure_arraylike_for_datetimeliker�   Úobjectr   Úkindro   Údatetime_dataÚsequence_to_td64nsr   rž   )r–   Údatar�   r¡   rq   Ú
apply_units         rF   Ú_from_sequencezTimedeltaArray._from_sequence  s¶   € áÜ(¨Ó/ˆEä×:Ñ:Ø�$Ð!1ô
‰
ˆˆdð ˆØÐØ�z‰zœVÒ#ô ".¨dÓ!3Ð3‘
à!ŸZ™ZŸ_™_°Ð5�
ÙÜ×'Ñ'¨Ó.¨qÑ1�ä! $¨T¸Ô=ˆàÐÜ& t°5¸uÔEˆDà�‰˜t¨4¯:©:ˆÓ6Ð6rH   c               óÜ  — t        j                  |«      }|€ t        d„ |||fD «       «      rt        d«      ‚t	        j
                  ||||«      dk7  rt        d«      ‚|�t        |«      j                  d«      }|�t        |«      j                  d«      }|dvrt        d«      ‚|�|�|j                  |d¬	«      }|�|�|j                  |d¬	«      }t        |«      \  }}|�t        |||||¬
«      }	n:t        j                  |j                  |j                  |«      j                  d«      }	|s|	dd  }	|s|	d d }	|	j                  d|› d�«      }
| j                  |
|
j                   ¬«      S )Nc              3  ó$   K  — | ]  }|d u –— Œ
 y ­wru   © )Ú.0rk   s     rF   ú	<genexpr>z1TimedeltaArray._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 specifiedÚns)ÚsÚmsÚusr¶   z+'unit' must be one of 's', 'ms', 'us', 'ns'F©Úround_ok©rq   r‡   é   éÿÿÿÿzm8[ú]r¦   )r§   Úvalidate_periodsÚanyr•   ÚcomÚcount_not_noner   r„   r$   r4   ro   Úlinspacer‰   Úastyperˆ   rž   r�   )r–   ÚstartÚendÚperiodsÚfreqÚclosedrq   Úleft_closedÚright_closedÚindexÚ
td64valuess              rF   Ú_generate_rangezTimedeltaArray._generate_range(  s  € ô ×&Ñ& wÓ/ˆØˆ<œCÑI°G¸UÀCÐ3HÔIÔIÜÐPÓQÐQä×Ñ˜e S¨'°4Ó8¸AÒ=Üð<óð ð
 ÐÜ˜eÓ$×,Ñ,¨TÓ2ˆEàˆ?Ü˜C“.×(Ñ(¨Ó.ˆCàÐ.Ñ.ÜÐJÓKÐKàÐ Ð!1Ø—M‘M $°�MÓ7ˆEØˆ?˜tÐ/Ø—+‘+˜d¨U�+Ó3ˆCä$6°vÓ$>Ñ!ˆ�\àÐÜ*¨5°#°wÀÈ4ÔP‰Eä—K‘K §¡¨c¯j©j¸'ÓB×IÑIÈ$ÓOˆEáØ˜!˜"�IˆEÙØ˜#˜2�JˆEà—Z‘Z # d V¨1 Ó.ˆ
Ø�‰˜z°×1AÑ1AˆÓBÐBrH   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 Timedelta.Frº   )rš   rw   r   r•   Ú_check_compatible_withro   rp   r‰   rq   r„   Úasm8©rU   Úvalues     rF   Ú_unbox_scalarzTimedeltaArray._unbox_scalarV  sr   € Ü˜% ×!2Ñ!2Ô3¸ÄSÑ8HÜÐ=Ó>Ð>Ø×#Ñ# EÔ*Ø”C‰<Ü—>‘> %§,¡,°·	±	Ó:Ð:ð
 —=‘= §¡°U�=Ó;×@Ñ@Ð@rH   c                ó   — t        |«      S ru   rv   rÓ   s     rF   Ú_scalar_from_stringz"TimedeltaArray._scalar_from_stringb  s   € Ü˜ÓÐrH   c                 ó   — y ru   r²   ©rU   rE   s     rF   rÑ   z%TimedeltaArray._check_compatible_withe  s   € àrH   Tc                ó˜  — t        |«      }t        j                  |d«      rˆ|| j                  k(  r|r| j	                  «       S | S t        |«      r>t        | j                  |d¬«      }t        | «      j                  ||j                  ¬«      S t        d| j                  › d|› d�«      ‚t        j                  j                  | ||¬«      S )Nrh   F©r¡   r¦   zCannot convert from z to z1. Supported resolutions are 's', 'ms', 'us', 'ns')r+   r   ri   r�   r¡   r   r   rŽ   rœ   rž   r•   r§   ÚDatetimeLikeArrayMixinrÅ   )rU   r�   r¡   Ú
res_valuess       rF   rÅ   zTimedeltaArray.astypel  sÁ   € ô
 ˜UÓ#ˆä�?‰?˜5 #Ô&Ø˜Ÿ
™
Ò"ÙØŸ9™9›;Ð&Ø�ä! %Ô(ä0°·±ÀÈEÔR�
Ü˜D“z×-Ñ-¨jÀ
×@PÑ@PÐ-ÓQÐQä Ø*¨4¯:©:¨,°d¸5¸'ð BFð Fóð ô
 ×)Ñ)×0Ñ0°°uÀ4Ð0ÓHÐHrH   c                ó   — t        |d¬«      S )NT©Úbox)r   )rU   r­   s     rF   Ú_iter_convert_chunkz"TimedeltaArray._iter_convert_chunk…  s   € Ü" 4¨TÔ2Ð2rH   r   )Úaxisr�   ÚoutÚkeepdimsÚinitialÚskipnaÚ	min_countc               ó¢   — t        j                  d||||dœ«       t        j                  | j                  |||¬«      }| j                  ||«      S )Nr²   )r�   rã   rä   rå   )râ   ræ   rç   )ÚnvÚvalidate_sumr0   ÚnansumrŽ   Ú_wrap_reduction_result)	rU   râ   r�   rã   rä   rå   ræ   rç   rW   s	            rF   ÚsumzTimedeltaArray.sum‹  sP   € ô 	�‰Ø˜%¨¸ÈgÑVô	
ô —‘Ø�M‰M ¨V¸yô
ˆð ×*Ñ*¨4°Ó8Ð8rH   r½   )râ   r�   rã   Úddofrä   ræ   c               ó¤   — t        j                  d|||dœd¬«       t        j                  | j                  |||¬«      }| j                  ||«      S )Nr²   )r�   rã   rä   Ústd)Úfname)râ   ræ   rî   )ré   Úvalidate_stat_ddof_funcr0   ÚnanstdrŽ   rì   )rU   râ   r�   rã   rî   rä   ræ   rW   s           rF   rð   zTimedeltaArray.stdŸ  sM   € ô 	×"Ñ"Ø˜%¨¸ÑBÈ%õ	
ô —‘˜tŸ}™}°4ÀÈTÔRˆØ×*Ñ*¨4°Ó8Ð8rH   )ræ   c               ó  •— |dk(  rYt        t        |«      } || j                  j                  «       fd|i|¤Ž}t	        | «      j                  || j                  ¬«      S |dk(  rt        d«      ‚t        ‰| �$  |fd|i|¤ŽS )NÚcumsumræ   r¦   Úcumprodz$cumprod not supported for Timedelta.)
Úgetattrr2   rŽ   r¡   rœ   rž   r�   Ú	TypeErrorr�   Ú_accumulate)rU   r`   ræ   ÚkwargsÚoprW   rŸ   s         €rF   rù   zTimedeltaArray._accumulate³  s‡   ø€ Ø�8ÒÜÔ3°TÓ:ˆBÙ˜Ÿ™×*Ñ*Ó,ÑF°VÐF¸vÑFˆFä˜“:×)Ñ)¨&¸¿
¹
Ð)ÓCÐCØ�YÒÜÐBÓCÐCô ‘7Ñ& tÑE°FÐE¸fÑEÐErH   c                ó"   — ddl m}  || d¬«      S )Nr   ©Úget_format_timedelta64Trß   )Úpandas.io.formats.formatrþ   )rU   Úboxedrþ   s      rF   Ú
_formatterzTimedeltaArray._formatterÂ  s   € ÝCá% d°Ô5Ð5rH   r   )Úna_repÚdate_formatc               ón   — ddl m}  || |«      } t        j                  |dd«      | j                  «      S )Nr   rý   r½   )rÿ   rþ   ro   Ú
frompyfuncrŽ   )rU   r  r  rú   rþ   Ú	formatters         rF   Ú_format_native_typesz#TimedeltaArray._format_native_typesÇ  s6   € õ 	Dñ +¨4°Ó8ˆ	ð .Œr�}‰}˜Y¨¨1Ó-¨d¯m©mÓ<Ð<rH   c                ó    — t        |t        t        f«      rJ ‚t        dt	        |«      j
                  › dt	        | «      j
                  › �«      ‚)Nzcannot add the type z to a )rš   r   r
   rø   rœ   r]   rÙ   s     rF   Ú_add_offsetzTimedeltaArray._add_offsetÕ  sI   € Ü˜e¤d¬C [Ô1Ð1Ð1ÜØ"¤4¨£;×#7Ñ#7Ð"8¸¼tÀD»z×?RÑ?RÐ>SÐTó
ð 	
rH   c                ó„  — | j                   }|t        k(  }|j                  «       rt        j                  |d|«      }||z  }t        j
                  |«      }||    }|j                  r8t        j                  t        j                  |«      d¬«      dk\  rt        d«      ‚|j                  «       rt        j                  |d|«      }|j                  d«      }||z  }|j                  «       r	t        ||<   |j                  | j                  j                  «      }	t        | «      j                  |	|	j                  ¬«      S )Nr   ç        )rå   ç      àCz$Overflow in timedelta multiplicationr‡   r¦   )rQ   r   rÁ   ro   ÚwhereÚisnanÚsizeÚmaxÚabsr"   rÅ   rˆ   rŽ   r�   rœ   rž   )
rU   rE   r‡   Ú	self_maskÚf_resultÚnan_maskÚnon_nanÚ	i8_resultÚnat_outrW   s
             rF   Ú_mul_float_overflowsafez&TimedeltaArray._mul_float_overflowsafeÛ  sÿ   € ð
 �Y‰YˆØœ$‘Jˆ	Ø�=‰=Œ?ä—‘˜) Q¨Ó+ˆBØ˜‘:ˆÜ—8‘8˜HÓ%ˆØ˜H˜9Ñ%ˆð �<Š<œBŸF™F¤2§6¡6¨'£?¸CÔ@ÀGÒKÜ&Ð'MÓNÐNà�<‰<Œ>Ü—x‘x ¨#¨xÓ8ˆHØ—O‘O DÓ)ˆ	Ø˜hÑ&ˆØ�;‰;Œ=Ü!%ˆI�gÑØ—‘ §¡× 3Ñ 3Ó4ˆÜ�D‹z×%Ñ% f°F·L±LÐ%ÓAÐArH   c                ó   — 	 t        | j                  |«      }|j	                  | j
                  j                  «      }t        | «      j                  ||j                  ¬«      S # t        $ r}t        d«      |‚d }~ww xY w)Nú Overflow in int64 multiplicationr¦   )	r   rQ   ÚOverflowErrorr"   rˆ   rŽ   r�   rœ   rž   )rU   Úi8_otherr  ÚerrrW   s        rF   Ú_mul_int_overflowsafez$TimedeltaArray._mul_int_overflowsafe÷  ss   € ð	TÜ(¨¯©°HÓ=ˆIð —‘ §¡× 3Ñ 3Ó4ˆÜ�D‹z×%Ñ% f°F·L±LÐ%ÓAÐAøô ò 	TÜ&Ð'IÓJÐPSÐSûð	Tús   ‚A# Á#	A=Á,A8Á8A=Ú__mul__c                óô  — t        |«      �rt        j                  |«      rt        d| j                  › d�«      ‚t        |«      }t        j                  |«      �r8t        |«      }|t        j                  kD  s|t        j                   dz
  k  rt        d«      ‚| j                  }|dk7  rÁ|j                  rµt        |j                  «       «      |z  }t        |j                  «       «      |z  }t        t        |«      t        |«      «      t        j                  k  rN||z  j                  | j                   j                  «      }t#        | «      j%                  ||j                  ¬«      S | j'                  t)        j*                  |d¬«      «      S t        j,                  |«      r| j/                  |«      S | j                   |z  }|j                  j0                  dk7  r!t        d	t#        |«      j2                  › �«      ‚t#        | «      j%                  ||j                  ¬«      S t5        |d
«      st)        j6                  |«      }|j                  j0                  dk(  rt        d| j                  › d�«      ‚t9        |j                  t:        t<        f«      rt>        S tA        |«      tA        | «      k7  r+t        jB                  |j                  d«      stE        d«      ‚tG        |j                  «      rp| j                   }t)        j6                  tI        tA        | «      «      D �cg c]  }||   ||   z  ‘Œ c}«      }t#        | «      j%                  ||j                  ¬«      S |j                  j0                  dv r[|jK                  dd¬«      }	|j                  j0                  dk(  r|	dk  jM                  «       rt        d«      ‚| j'                  |	«      S |j                  j0                  dk(  r| j/                  |«      S | j                   |z  }|j                  j0                  dk7  r!t        d	t#        |«      j2                  › �«      ‚t#        | «      j%                  ||j                  ¬«      S c c}w )NzCannot multiply 'z.' by bool, explicitly cast to integers insteadr½   r  r   r¦   r‡   rh   zCannot multiply with r�   Úbz$Cannot multiply with unequal lengthsÚiuFrÛ   ÚurY   )'r)   r   Úis_boolrø   r�   rG   rC   rD   Úi8maxr"   rQ   r  Úminr  r  rˆ   rŽ   rœ   rž   r  ro   ÚasarrayrB   r  rª   r]   ÚhasattrÚarrayrš   r,   r-   ÚNotImplementedÚlenri   r•   r(   ÚrangerÅ   rÁ   )
rU   rE   Úi8_valsÚlow_prodÚ	high_prodrW   ÚarrÚnÚ
obj_resultr  s
             rF   r  zTimedeltaArray.__mul__  sœ  € ä�UÕÜ�{‰{˜5Ô!ÜØ'¨¯
©
 |ð 4'ð 'óð ô ' uÓ-ˆEÜ�~‰~˜eÕ$ô ˜E›
�Øœ3Ÿ9™9Ò$¨´·±°
¸Q±Ò(>Ü.Ð/QÓRÐRØŸ)™)�Ø˜A’: '§,¢,ô  # 7§;¡;£=Ó1°EÑ9�HÜ # G§K¡K£MÓ 2°UÑ :�IÜœ3˜x›=¬#¨i«.Ó9¼S¿Y¹YÒFØ")¨E¡/×!7Ñ!7¸¿¹×8KÑ8KÓ!L˜Ü# D›z×5Ñ5°fÀFÇLÁLÐ5ÓQÐQØ×1Ñ1´"·*±*¸UÈ$Ô2OÓPÐPÜ�|‰|˜EÔ"Ø×3Ñ3°EÓ:Ð:à—]‘] UÑ*ˆFØ�|‰|× Ñ  CÒ'ô  Ð"7¼¸U»×8LÑ8LÐ7MÐ NÓOÐOÜ˜“:×)Ñ)¨&¸¿¹Ð)ÓEÐEä�u˜gÔ&ä—H‘H˜U“OˆEà�;‰;×Ñ˜sÒ"äØ# D§J¡J <ð 0#ð #óð ô �e—k‘k¤J´Ð#@ÔAä!Ð!äˆu‹:œ˜T›Ò"¬3¯?©?¸5¿;¹;ÈÔ+Lô ÐCÓDÐDä˜5Ÿ;™;Ô'ð —-‘-ˆCÜŸ™¼eÄCÈÃIÓ>NÖ"O¸ 3 q¡6¨E°!©HÓ#4Ò"OÓPˆJÜ˜“:×)Ñ)¨*¸J×<LÑ<LÐ)ÓMÐMà�;‰;×Ñ˜tÑ#ð —|‘| D¨u�|Ó5ˆHØ�{‰{×Ñ 3Ò&¨H°q©L×+=Ñ+=Ô+?Ü*Ð+MÓNÐNØ×-Ñ-¨hÓ7Ð7à�;‰;×Ñ˜sÒ"Ø×/Ñ/°Ó6Ð6ð —‘ Ñ&ˆØ�<‰<×Ñ Ò#ô Ð3´D¸³K×4HÑ4HÐ3IÐJÓKÐKÜ�D‹z×%Ñ% f°F·L±LÐ%ÓAÐAùò1 #Ps   Ì*Q5c                ó‚  — | j                   }t        j                  |«      }|j                  dk(  r|j                  rs|j                  «       }|dk(  st        j                  |«      ry |j                  «       |z  }|j                  «       |z  }t        t        |«      t        |«      «      dk  ry t        j                  dd¬«      5  ||z  }d d d «       |t        k(  t        j                  «      z  |dk(  z  }t        j                  t        j                  |«      d| ¬«      dk\  rt        d«      ‚y # 1 sw Y   ŒixY w)Nr   r  Úignore)ÚdivideÚinvalidr  )rå   r  zOverflow in timedelta division)rQ   ro   r'  Úndimr  Úitemr  r&  r  r  Úerrstater   r"   )	rU   rE   r‡   Ú	other_arrÚdivisorÚlow_quotÚ	high_quotÚf_quotÚexclude_masks	            rF   Ú_check_float_div_overflowz(TimedeltaArray._check_float_div_overflow`  s  € ð �Y‰YˆÜ—J‘J˜uÓ%ˆ	Ø�>‰>˜QÒ 2§7¢7Ø—n‘nÓ&ˆGØ˜!Š|œrŸx™x¨Ô0àð
 —v‘v“x 'Ñ)ˆHØŸ™› 7Ñ*ˆIÜ”3�x“=¤# i£.Ó1°GÒ;ØÜ�[‰[ °(Ô;ñ 	$Ø˜)‘^ˆF÷	$àœd™
¤b§h¡h¨vÓ&6Ñ6¸)Àq¹.ÑIˆÜ�6‰6”"—&‘&˜“.¨#°l°]ÔCÀwÒNÜ&Ð'GÓHÐHð O÷	$ð 	$ús   ÃD5Ä5D>c                ó´  — t        || j                  «      r€t        |«      }t        d|«      t        u rPt        j                  | j                  t
        j                  ¬«      }|j                  t
        j                  «       |S  || j                  |«      S |t        j                  t        j                  fv r7t        dt!        |«      j"                  › dt!        | «      j"                  › �«      ‚t%        |«      }t'        j(                  |«      r| j+                  |«        || j                  |«      }t!        | «      j-                  ||j.                  ¬«      S )zv
        Shared logic for __truediv__, __rtruediv__, __floordiv__, __rfloordiv__
        with scalar 'other'.
        úTimedelta | NaTTyper¦   zCannot divide z by )rš   Ú_recognized_scalarsr   r   r   ro   ÚemptyÚshaperN   ÚfillÚnanrŽ   r1   ÚrtruedivÚ	rfloordivrø   rœ   r]   rG   r   rB   r@  rž   r�   )rU   rE   rû   ÚresrW   s        rF   Ú_scalar_divlike_opz!TimedeltaArray._scalar_divlike_op~  s  € ô
 �e˜T×5Ñ5Ô6Ü˜eÓ$ˆEô Ð)¨5Ó1´SÑ8ä—h‘h˜tŸz™z´·±Ô<�Ø—‘œŸ™Ô Ø�
ñ �d—m‘m UÓ+Ð+ð ”i×(Ñ(¬)×*=Ñ*=Ð>Ñ>ÜØ$¤T¨%£[×%9Ñ%9Ð$:¸$¼tÀD»z×?RÑ?RÐ>SÐTóð ô ' uÓ-ˆEÜ�|‰|˜EÔ"à×.Ñ.¨uÔ5Ù˜Ÿ™ uÓ-ˆFÜ˜“:×)Ñ)¨&¸¿¹Ð)ÓEÐErH   c                óŒ   — t        |d«      st        j                  |«      }t        |«      t        | «      k7  rt	        d«      ‚|S )Nr�   z*Cannot divide vectors with unequal lengths)r(  ro   r)  r+  r•   rÙ   s     rF   Ú_cast_divlike_opzTimedeltaArray._cast_divlike_op   s:   € Ü�u˜gÔ&ä—H‘H˜U“OˆEäˆu‹:œ˜T›Ò"ÜÐIÓJÐJØˆrH   c                óö  — t        j                  |«      }|j                  j                  dk(  r3|t        j
                  t        j                  fv r| j                  |«        || j                  |«      }t        |j                  «      st        |j                  «      rH|t        j
                  t        j                  fv r&t        | «      j                  ||j                  ¬«      S |t        j                  t        j                  fv rp| j                  «       t        |«      z  }|j!                  «       rD|j#                  t         j$                  «      }t        j&                  ||t         j(                  «       |S )z‡
        Shared logic for __truediv__, __floordiv__, and their reversed versions
        with timedelta64-dtype ndarray other.
        rY   r¦   )ro   r'  r�   rª   ÚoperatorÚtruedivÚfloordivr@  rŽ   r'   r&   rœ   rž   r1   rI  r/   rÁ   rÅ   rN   ÚputmaskrG  )rU   rE   rû   r:  rW   Úmasks         rF   Ú_vector_divlike_opz!TimedeltaArray._vector_divlike_op©  s  € ô
 —J‘J˜uÓ%ˆ	Ø�?‰?×Ñ 3Ò&¨2´(×2BÑ2BÄH×DUÑDUÐ1VÑ+Và×*Ñ*¨9Ô5ñ �D—M‘M 9Ó-ˆä˜UŸ[™[Ô)¬^¸E¿K¹KÔ-HÈbÜ×ÑÜ×ÑðU
ñ O
ô ˜“:×)Ñ)¨&¸¿¹Ð)ÓEÐEà”(×#Ñ#¤Y×%8Ñ%8Ð9Ñ9Ø—9‘9“;¤ e£Ñ,ˆDØ�x‰xŒzØŸ™¤r§z¡zÓ2�Ü—
‘
˜6 4¬¯©Ô0àˆrH   Ú__truediv__c                ó°  — t         j                  }t        |«      r| j                  ||«      S | j	                  |«      }t        j                  |j                  d«      s*t        |j                  «      st        |j                  «      r| j                  ||«      S t        |j                  «      r—t        j                  |«      }| j                  dkD  r[t        | |d¬«      D ��cg c]
  \  }}||z  ‘Œ }}}|D �cg c]  }|j!                  dd«      ‘Œ }}t        j"                  |d¬«      }|S t%        | j&                  |«      }|S t(        S c c}}w c c}w ©Nrh   r½   T)Ústrictr¾   r   )râ   )rO  rP  r)   rK  rM  r   ri   r�   r'   r&   rT  r(   ro   r'  r7  ÚzipÚreshapeÚconcatenater   rŽ   r*  ©	rU   rE   rû   ÚleftÚrightÚres_colsrk   Ú	res_cols2rW   s	            rF   rU  zTimedeltaArray.__truediv__Ä  s)  € ô ×ÑˆÜ�UÔØ×*Ñ*¨5°"Ó5Ð5à×%Ñ% eÓ,ˆä�O‰O˜EŸK™K¨Ô-Ü §¡Ô,Ü˜eŸk™kÔ*à×*Ñ*¨5°"Ó5Ð5ä˜5Ÿ;™;Ô'Ü—J‘J˜uÓ%ˆEØ�y‰y˜1Š}ä47¸¸eÈDÔ4Q÷Ù%0 T¨5�D˜5“Lð�ñ ð 8@Ö@°!˜QŸY™Y q¨"Õ-Ð@�	Ð@ÜŸ™¨	¸Ô:�ð ˆMô .¨d¯m©m¸UÓC�àˆMô "Ð!ùóùò As   Ã%EÃ;EÚ__rtruediv__c                ó   — t         j                  }t        |«      r| j                  ||«      S | j	                  |«      }t        j                  |j                  d«      r| j                  ||«      S t        |j                  «      r?t        t        | «      «      D �cg c]  }||   | |   z  ‘Œ }}t        j                  |«      S t        S c c}w rg   )r1   rH  r)   rK  rM  r   ri   r�   rT  r(   r,  r+  ro   r)  r*  )rU   rE   rû   r1  Úresult_lists        rF   ra  zTimedeltaArray.__rtruediv__ã  s³   € ô ×ÑˆÜ�UÔØ×*Ñ*¨5°"Ó5Ð5à×%Ñ% eÓ,ˆÜ�?‰?˜5Ÿ;™;¨Ô,Ø×*Ñ*¨5°"Ó5Ð5ä˜UŸ[™[Ô)ô 8=¼SÀ»YÓ7GÖH°!˜5 ™8 d¨1¡gÓ-ÐHˆKÐHÜ—8‘8˜KÓ(Ð(ô "Ð!ùò	 Is   ÂCÚ__floordiv__c                óØ  — t         j                  }t        |«      r| j                  ||«      S | j	                  |«      }t        j                  |j                  d«      s*t        |j                  «      st        |j                  «      r| j                  ||«      S t        |j                  «      r«t        j                  |«      }| j                  dkD  rZt        | |d¬«      D ��cg c]
  \  }}||z  ‘Œ }}}|D �cg c]  }|j!                  dd«      ‘Œ }}t        j"                  |d¬«      }nt%        | j&                  |«      }|j                  t(        k(  sJ ‚|S t*        S c c}}w c c}w rW  )rO  rQ  r)   rK  rM  r   ri   r�   r'   r&   rT  r(   ro   r'  r7  rY  rZ  r[  r   rŽ   r©   r*  r\  s	            rF   rd  zTimedeltaArray.__floordiv__ø  s0  € ä×ÑˆÜ�UÔØ×*Ñ*¨5°"Ó5Ð5à×%Ñ% eÓ,ˆä�O‰O˜EŸK™K¨Ô-Ü §¡Ô,Ü˜eŸk™kÔ*à×*Ñ*¨5°"Ó5Ð5ä˜UŸ[™[Ô)Ü—J‘J˜uÓ%ˆEØ�y‰y˜1Š}ä58¸¸uÈTÔ5R÷Ù&1 d¨E�D˜E“Mð�ñ ð 8@Ö@°!˜QŸY™Y q¨"Õ-Ð@�	Ð@ÜŸ™¨	¸Ô:‘ä.¨t¯}©}¸eÓD�à—<‘<¤6Ò)Ð)Ð)ØˆMô "Ð!ùóùò As   Ã%E!Ã;E'Ú__rfloordiv__c                ó¤  — t         j                  }t        |«      r| j                  ||«      S | j	                  |«      }t        j                  |j                  d«      r| j                  ||«      S t        |j                  «      rAt        t        | «      «      D �cg c]  }||   | |   z  ‘Œ }}t        j                  |«      }|S t        S c c}w rg   )r1   rI  r)   rK  rM  r   ri   r�   rT  r(   r,  r+  ro   r)  r*  )rU   rE   rû   r1  rc  rW   s         rF   rf  zTimedeltaArray.__rfloordiv__  s³   € ä× Ñ ˆÜ�UÔØ×*Ñ*¨5°"Ó5Ð5à×%Ñ% eÓ,ˆÜ�?‰?˜5Ÿ;™;¨Ô,Ø×*Ñ*¨5°"Ó5Ð5ä˜UŸ[™[Ô)Ü8=¼cÀ$»iÓ8HÖI°1˜5 ™8 t¨A¡wÓ.ÐIˆKÐIÜ—X‘X˜kÓ*ˆFØˆMô "Ð!ùò Js   ÂCÚ__mod__c                óZ   — t        || j                  «      rt        |«      }| | |z  |z  z
  S ru   ©rš   rC  r   rÙ   s     rF   rh  zTimedeltaArray.__mod__)  s2   € ô �e˜T×5Ñ5Ô6Ü˜eÓ$ˆEØ�t˜u‘}¨Ñ-Ñ-Ð-rH   Ú__rmod__c                óZ   — t        || j                  «      rt        |«      }||| z  | z  z
  S ru   rj  rÙ   s     rF   rk  zTimedeltaArray.__rmod__0  s2   € ô �e˜T×5Ñ5Ô6Ü˜eÓ$ˆEØ˜ ™¨Ñ-Ñ-Ð-rH   Ú
__divmod__c                óf   — t        || j                  «      rt        |«      }| |z  }| ||z  z
  }||fS ru   rj  ©rU   rE   Úres1Úres2s       rF   rm  zTimedeltaArray.__divmod__7  s?   € ô �e˜T×5Ñ5Ô6Ü˜eÓ$ˆEà�u‰}ˆØ�d˜U‘lÑ"ˆØ�TˆzÐrH   Ú__rdivmod__c                óf   — t        || j                  «      rt        |«      }|| z  }||| z  z
  }||fS ru   rj  ro  s       rF   rr  zTimedeltaArray.__rdivmod__A  s?   € ô �e˜T×5Ñ5Ô6Ü˜eÓ$ˆEà˜‰}ˆØ�t˜d‘{Ñ"ˆØ�TˆzÐrH   c                ód   — t        | «      j                  | j                   | j                  ¬«      S ©Nr¦   )rœ   rž   rŽ   r�   rr   s    rF   Ú__neg__zTimedeltaArray.__neg__K  s&   € Ü�D‹z×%Ñ% t§}¡} n¸D¿J¹JÐ%ÓGÐGrH   c                ó~   — t        | «      j                  | j                  j                  «       | j                  ¬«      S ru  )rœ   rž   rŽ   r¡   r�   rr   s    rF   Ú__pos__zTimedeltaArray.__pos__N  s-   € Ü�D‹z×%Ñ% d§m¡m×&8Ñ&8Ó&:À$Ç*Á*Ð%ÓMÐMrH   c                óˆ   — t        | «      j                  t        j                  | j                  «      | j
                  ¬«      S ru  )rœ   rž   ro   r  rŽ   r�   rr   s    rF   Ú__abs__zTimedeltaArray.__abs__Q  s-   € ä�D‹z×%Ñ%¤b§f¡f¨T¯]©]Ó&;À4Ç:Á:Ð%ÓNÐNrH   c                ó�  — t        | j                  «      }| j                  }t        j                  ||«      \  }}|||z  z   }|dkD  j                  «       s|dk  j                  «       rÌ|dk7  t        j                  |«      dk  z  }|j                  t        j                  «      }|||k(  z  }|||dz   k(  z  }	|j                  «       r.t        j                  |t        j                  ||dz   «      |«      }|	j                  «       r.t        j                  |	t        j                  ||dz
  «      |«      }| j                  |d¬«      S )a{  
        Return total duration of each element expressed in seconds.

        This method is available directly on TimedeltaArray, TimedeltaIndex
        and on Series containing timedelta values under the ``.dt`` namespace.

        Returns
        -------
        ndarray, Index or Series
            When the calling object is a TimedeltaArray, the return type
            is ndarray.  When the calling object is a TimedeltaIndex,
            the return type is an Index with a float64 dtype. When the calling object
            is a Series, the return type is Series of type `float64` whose
            index is the same as the original.

        See Also
        --------
        datetime.timedelta.total_seconds : Standard library version
            of this method.
        TimedeltaIndex.components : Return a DataFrame with components of
            each Timedelta.

        Examples
        --------
        **Series**

        >>> s = pd.Series(pd.to_timedelta(np.arange(5), unit="D"))
        >>> s
        0   0 days
        1   1 days
        2   2 days
        3   3 days
        4   4 days
        dtype: timedelta64[us]

        >>> s.dt.total_seconds()
        0         0.0
        1     86400.0
        2    172800.0
        3    259200.0
        4    345600.0
        dtype: float64

        **TimedeltaIndex**

        >>> idx = pd.to_timedelta(np.arange(5), unit="D")
        >>> idx
        TimedeltaIndex(['0 days', '1 days', '2 days', '3 days', '4 days'],
                       dtype='timedelta64[us]', freq=None)

        >>> idx.total_seconds()
        Index([0.0, 86400.0, 172800.0, 259200.0, 345600.0], dtype='float64')
        l          lüÿÿÿ       r   l         € g      ð?N)rO   )r   rR   rQ   ro   ÚdivmodrÁ   r  rÅ   rN   r  Ú	nextafterrT   )
rU   ÚppsrQ   Úfloor_sÚresidualrW   ÚfixableÚfloor_fÚon_floorÚon_ceils
             rF   r€   zTimedeltaArray.total_secondsX  s  € ôl ! §¡Ó-ˆØ�y‰yˆô ŸI™I d¨CÓ0Ñˆ�Ø˜8 c™>Ñ)ˆØ�5‰L×ÑÔ D¨8¡O×#8Ñ#8Ô#:ð   1‘}¬¯©°«¸5Ñ)@ÑAˆGØ—n‘n¤R§Z¡ZÓ0ˆGØ &¨GÑ"3Ñ4ˆHØ ¨7°S©=Ñ!8Ñ9ˆGØ�|‰|Œ~ÜŸ™ (¬B¯L©L¸ÀÈ#ÁÓ,NÐPVÓW�Ø�{‰{Œ}ÜŸ™ '¬2¯<©<¸ÀÈÁÓ+MÈvÓV�Ø×'Ñ'¨¸4Ð'Ó@Ð@rH   c                ó,   — t        | j                  «      S )aÍ  
        Return an ndarray of datetime.timedelta objects.

        Each element of the :class:`TimedeltaIndex` is converted to the
        corresponding native Python :class:`datetime.timedelta` object.

        Returns
        -------
        numpy.ndarray
            A NumPy ``timedelta64`` object representing the same duration as the
            original pandas ``Timedelta`` object. The precision of the resulting
            object is in nanoseconds, which is the default
            time resolution used by pandas for ``Timedelta`` objects, ensuring
            high precision for time-based calculations.

        See Also
        --------
        to_timedelta : Convert argument to timedelta format.
        Timedelta : Represents a duration between two dates or times.
        DatetimeIndex: Index of datetime64 data.
        Timedelta.components : Return a components namedtuple-like
                               of a single timedelta.

        Examples
        --------
        >>> tdelta_idx = pd.to_timedelta([1, 2, 3], unit="D")
        >>> tdelta_idx
        TimedeltaIndex(['1 days', '2 days', '3 days'],
                        dtype='timedelta64[us]', freq=None)
        >>> tdelta_idx.to_pytimedelta()
        array([datetime.timedelta(days=1), datetime.timedelta(days=2),
               datetime.timedelta(days=3)], dtype=object)

        >>> tidx = pd.TimedeltaIndex(data=["1 days 02:30:45", "3 days 04:15:10"])
        >>> tidx
        TimedeltaIndex(['1 days 02:30:45', '3 days 04:15:10'],
               dtype='timedelta64[us]', freq=None)
        >>> tidx.to_pytimedelta()
        array([datetime.timedelta(days=1, seconds=9045),
                datetime.timedelta(days=3, seconds=15310)], dtype=object)
        )r   rŽ   rr   s    rF   r   zTimedeltaArray.to_pytimedelta®  s   € ôT # 4§=¡=Ó1Ð1rH   aë  Number of days for each element.

    This attribute returns the number of whole days in each timedelta value.
    It represents the days component of the duration, not the total duration
    expressed in days.

    See Also
    --------
    Series.dt.seconds : Return number of seconds for each element.
    Series.dt.microseconds : Return number of microseconds for each element.
    Series.dt.nanoseconds : Return number of nanoseconds for each element.

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

    >>> ser = pd.Series(pd.to_timedelta([1, 2, 3], unit='D'))
    >>> ser
    0   1 days
    1   2 days
    2   3 days
    dtype: timedelta64[us]
    >>> ser.dt.days
    0    1
    1    2
    2    3
    dtype: int64

    For TimedeltaIndex:

    >>> tdelta_idx = pd.to_timedelta(["0 days", "10 days", "20 days"])
    >>> tdelta_idx
    TimedeltaIndex(['0 days', '10 days', '20 days'],
                    dtype='timedelta64[us]', freq=None)
    >>> tdelta_idx.days
    Index([0, 10, 20], dtype='int64')rK   aì  Number of seconds (>= 0 and less than 1 day) for each element.

    This attribute returns the seconds component of each timedelta value,
    which is the number of seconds remaining after subtracting whole days.
    Values range from 0 to 86399.

    See Also
    --------
    Series.dt.seconds : Return number of seconds for each element.
    Series.dt.nanoseconds : Return number of nanoseconds for each element.

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

    >>> ser = pd.Series(pd.to_timedelta([1, 2, 3], unit='s'))
    >>> ser
    0   0 days 00:00:01
    1   0 days 00:00:02
    2   0 days 00:00:03
    dtype: timedelta64[us]
    >>> ser.dt.seconds
    0    1
    1    2
    2    3
    dtype: int32

    For TimedeltaIndex:

    >>> tdelta_idx = pd.to_timedelta([1, 2, 3], unit='s')
    >>> tdelta_idx
    TimedeltaIndex(['0 days 00:00:01', '0 days 00:00:02', '0 days 00:00:03'],
                   dtype='timedelta64[us]', freq=None)
    >>> tdelta_idx.seconds
    Index([1, 2, 3], dtype='int32')rz   a™  Number of microseconds (>= 0 and less than 1 second) for each element.

    This attribute returns the microseconds component of each timedelta value,
    which is the number of microseconds remaining after subtracting whole
    seconds. Values range from 0 to 999999.

    See Also
    --------
    pd.Timedelta.microseconds : Number of microseconds (>= 0 and less than 1 second).
    pd.Timedelta.to_pytimedelta.microseconds : Number of microseconds (>= 0 and less
        than 1 second) of a datetime.timedelta.

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

    >>> ser = pd.Series(pd.to_timedelta([1, 2, 3], unit='us'))
    >>> ser
    0   0 days 00:00:00.000001
    1   0 days 00:00:00.000002
    2   0 days 00:00:00.000003
    dtype: timedelta64[us]
    >>> ser.dt.microseconds
    0    1
    1    2
    2    3
    dtype: int32

    For TimedeltaIndex:

    >>> tdelta_idx = pd.to_timedelta([1, 2, 3], unit='us')
    >>> tdelta_idx
    TimedeltaIndex(['0 days 00:00:00.000001', '0 days 00:00:00.000002',
                    '0 days 00:00:00.000003'],
                   dtype='timedelta64[us]', freq=None)
    >>> tdelta_idx.microseconds
    Index([1, 2, 3], dtype='int32')r{   ab  Number of nanoseconds (>= 0 and less than 1 microsecond) for each element.

    This attribute returns the nanoseconds component of each timedelta value,
    which is the number of nanoseconds remaining after subtracting whole
    microseconds. Values range from 0 to 999.

    See Also
    --------
    Series.dt.seconds : Return number of seconds for each element.
    Series.dt.microseconds : Return number of microseconds for each element.

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

    >>> ser = pd.Series(pd.to_timedelta([1, 2, 3], unit='ns'))
    >>> ser
    0   0 days 00:00:00.000000001
    1   0 days 00:00:00.000000002
    2   0 days 00:00:00.000000003
    dtype: timedelta64[ns]
    >>> ser.dt.nanoseconds
    0    1
    1    2
    2    3
    dtype: int32

    For TimedeltaIndex:

    >>> tdelta_idx = pd.to_timedelta([1, 2, 3], unit='ns')
    >>> tdelta_idx
    TimedeltaIndex(['0 days 00:00:00.000000001', '0 days 00:00:00.000000002',
                    '0 days 00:00:00.000000003'],
                   dtype='timedelta64[ns]', freq=None)
    >>> tdelta_idx.nanoseconds
    Index([1, 2, 3], dtype='int32')r|   c                ó¶   ‡— ddl m} g d¢Š| j                  }|rˆfd„}nd„ } || D �cg c]
  } ||«      ‘Œ c}‰¬«      }|s|j                  d«      }|S c c}w )a´  
        Return a DataFrame of the individual resolution components of the Timedeltas.

        The components (days, hours, minutes seconds, milliseconds, microseconds,
        nanoseconds) are returned as columns in a DataFrame.

        Returns
        -------
        DataFrame

        See Also
        --------
        TimedeltaIndex.total_seconds : Return total duration expressed in seconds.
        Timedelta.components : Return a components namedtuple-like of a single
            timedelta.

        Examples
        --------
        >>> tdelta_idx = pd.to_timedelta(["1 day 3 min 2 us 42 ns"])
        >>> tdelta_idx
        TimedeltaIndex(['1 days 00:03:00.000002042'],
                       dtype='timedelta64[ns]', freq=None)
        >>> tdelta_idx.components
           days  hours  minutes  seconds  milliseconds  microseconds  nanoseconds
        0     1      0        3        0             0             2           42
        r   r?   )rK   ÚhoursÚminutesrz   Úmillisecondsr{   r|   c                ól   •— t        | «      rt        j                  gt        ‰«      z  S | j                  S ru   )r/   ro   rG  r+  Ú
components)rk   Úcolumnss    €rF   rY   z$TimedeltaArray.components.<locals>.f®  s)   ø€ Ü˜”7ÜŸF™F˜8¤c¨'£lÑ2Ð2Ø—|‘|Ð#rH   c                ó   — | j                   S ru   )r‹  rj   s    rF   rY   z$TimedeltaArray.components.<locals>.fµ  s   € Ø—|‘|Ð#rH   )rŒ  Úint64)Úpandasr@   rS   rÅ   )rU   r@   ÚhasnansrY   rk   rW   rŒ  s         @rF   r‹  zTimedeltaArray.components„  s_   ø€ õ8 	%ò
ˆð —+‘+ˆÙõ$ò$ñ ¨$Ö/ Q™A˜a�DÒ/¸ÔAˆÙØ—]‘] 7Ó+ˆFØˆùò 0s   ©A)r[   únp.timedelta64)r[   ztype[Timedelta])rk   r‘  r[   rB  )r[   únp.dtype[np.timedelta64])r[   r   )rV   znpt.NDArray[np.timedelta64]r�   r’  r[   r   )r¡   Úboolr[   r   ru   )rq   r=   r[   r   )r[   rB  )r[   ÚNone)T)r¡   r“  )r­   r\   r[   r\   )
râ   úAxisInt | Noner�   úNpDtype | Nonerä   r“  ræ   r“  rç   rD   )
râ   r•  r�   r–  rî   rD   rä   r“  ræ   r“  )r`   Ústrræ   r“  )F)r   r“  )r  zstr | floatr[   únpt.NDArray[np.object_])rE   ú.float | np.floating | npt.NDArray[np.floating]r[   r   )r  znpt.NDArray[np.int64]r[   r   )r[   r   )rE   r™  r[   r”  )r[   znp.ndarray | Self)r[   rd   )r[   znpt.NDArray[np.float64])r[   r˜  )r[   r@   )Lr]   Ú
__module__Ú__qualname__r^   Ú_typr   ro   rp   r   rC  rm   Ú__annotations__r_   rs   rw   Ú__array_priority__rx   ry   r}   r~   r…   rŒ   r�   r’   Úclassmethodr—   r%   rž   r¯   rÏ   rÕ   r×   rÑ   rÅ   rá   rí   rð   rù   r  r  r	  r  r  r7   r  Ú__rmul__r@  rK  rM  rT  rU  ra  rd  rf  rh  rk  rm  rr  rv  rx  rz  r€   r   ÚtextwrapÚdedentÚdays_docstringrb   rK   Úseconds_docstringrz   Úmicroseconds_docstringr{   Únanoseconds_docstringr|   r‹  Ú__classcell__)rŸ   s   @rF   rd   rd   ˆ   sZ  ø… ñ*ðX €DØ$ b§n¡n°dÐ;ÐÙ7XÐÐ4ÓXàò0ó ð0ð òó ðð Ðà€J�	ÓØ€IˆyÓÚN€J�	ÓNØ#-°	Ñ#9¸V¸HÑ#DÐ�yÓDò(Ð˜9ó óCð ò#ó ð#ð  òDó ðDð ñó ðð ð +7ð?à+ð?ð (ð?ð 
ô	?ó ð?ð Ø+/¸eô 7ó ð7ð6 à/3ð(CØ>Fð(Cà	ò(Có ð(CóZ
Aó óôIó23ð  $Ø $ØØØØØñ9ð ð9ð ð	9ð ð9ð ð9ð ó9ð.  $Ø $ØØØØñ9ð ð9ð ð	9ð ð9ð ð9ð ó9ð( 8<÷ 
Fô6ð (-¸$ñ	=Ø$ð	=à	 ó	=ò
ðBØCðBà	óBó8Bñ ˜iÓ(òZBó )ðZBðx €HðIØCðIà	óIò< FòDóñ6 ˜mÓ,ñ"ó -ð"ñ< ˜nÓ-ñ"ó .ð"ñ( ˜nÓ-ñ"ó .ð"ñ< ˜oÓ.ñ"ó /ð"ñ" ˜iÓ(ñ.ó )ð.ñ ˜jÓ)ñ.ó *ð.ñ ˜lÓ+ñó ,ðñ ˜mÓ,ñó -ðóHóNóOóTAól*2ðX %�X—_‘_ð #&)ó #*€NñH ˜6 6¨>Ó:€Dà'˜Ÿ™ð"	'ó$ÐñJ ØØØó€Gð -˜XŸ_™_ð$	'ó&ÐñN #ØØØó€Lð ,˜HŸO™Oð#	'ó%ÐñL "ØØØó€Kð ò6ó ô6rH   rd   c                óÖ  — |dvsJ ‚|�t        |«      }t        | d¬«      } d}t        | t        «      r=| j                  r| j
                  nd}| j                  } |�| j                  «       } d| |<   t        j                  | |d¬«      \  } }| j                  t        k(  st        | j                  «      rt        | ||¬«      } d	}�n…t        | j                  «      r(	 t        | |¬
«      \  } }|�t         | |<   d}	 |xr | }�nHt'        | j                  «      �ryt        | j                  t(        «      r| j
                  }| j                  } nt+        j,                  | «      }|�à|dk7  rÛt+        j.                  d¬«      5  | j%                  t*        j0                  «      }ddd«       t+        j2                  t*        j0                  «      }| t+        j4                  |j6                  «      k\  | t+        j4                  |j8                  «      k  z  }	||	| k(  z  z  j;                  «       }
|
rt=        |d	||¬«      }t         ||<   |S | j%                  t*        j4                  d	¬«      } 	 t?        | |xs d«      }t         ||<   |jA                  d«      } d	}n¹tK        jL                  | j                  d«      r€| j                  jN                  dk(  r,| j%                  | j                  jQ                  d«      «      } d	}tS        | j                  «      s?tU        | j                  «      }tW        | |d	¬«      } d	}ntY        d| j                  › d�«      ‚|st+        jZ                  | «      } nt+        j\                  | |¬«      } | j                  j^                  dk(  sJ ‚| j                  dk7  sJ ‚| S # t"        $ r6 |dk(  r‚ | j%                  t        «      } |�d| |<   t        | ||¬«      } d}Y �Œìw xY w# 1 sw Y   �ŒNxY w# tB        $ ri}|dk(  rt#        |jD                  Ž |‚t+        jF                  |t*        jH                  | «      } t        | j%                  t        «      ||¬«      } Y d}~�ŒÕd}~ww xY w)a…  
    Parameters
    ----------
    data : list-like
    copy : bool, default False
    unit : str, optional
        The timedelta unit to treat integers as multiples of. For numeric
        data this defaults to ``'ns'``.
        Must be un-specified if the data contains a str and ``errors=="raise"``.
    errors : {"raise", "coerce", "ignore"}, default "raise"
        How to handle elements that cannot be converted to timedelta64[ns].
        See ``pandas.to_timedelta`` for details.

    Returns
    -------
    converted : numpy.ndarray
        The sequence converted to a numpy array with dtype ``timedelta64[ns]``.

    Raises
    ------
    ValueError : Data cannot be converted to timedelta64[ns].

    Notes
    -----
    Unlike `pandas.to_timedelta`, if setting ``errors=ignore`` will not cause
    errors to be ignored; they are caught and subsequently ignored at a
    higher level.
    )ÚYr‹   ÚMNT)Úextract_numpyr   rd   r£   ©rq   ÚerrorsFr¼   Úraiser¶   r4  )r6  )r¡   rq   r­  rÛ   zm8[ns]rh   ú>ú<r    zdtype z' cannot be converted to timedelta64[ns]Úm8)0r   r6   rš   r5   rS   Ú_maskÚ_datar¡   r§   r¨   r�   r©   r*   Ú_objects_to_td64nsr'   Ú_ints_to_td64nsr   r"   rÅ   r&   r.   ro   r  r9  rŽ  ÚiinforN   r&  r  Úallr¬   r   rˆ   r!   Úargsr  rG  r   ri   Ú	byteorderÚnewbyteorderr   r   r   rø   r'  r)  rª   )r­   r¡   rq   r­  Úint_maskÚ	copy_maderS  Úint_dataÚi64Úin_int64_rangeÚ	all_roundrW   Ú	convertedr  Ú	new_dtypes                  rF   r¬   r¬   Â  sÖ  € ðD �Ñ&Ð&Ð&àÐÜ# DÓ)ˆä˜¨TÔ2€Dà€HÜ�$œÔ%ð "&§¢�4—:’:°$ˆØ�z‰zˆØÐð —9‘9“;ˆDØˆD�‰Nä×6Ñ6ØˆdÐ-ô�J€Dˆ$ð
 ‡z�z”VÒœ¨t¯z©zÔ:ä! $¨T¸&ÔAˆØŠä	˜$Ÿ*™*Ô	%ð	!Ü-¨d¸Ô>‰OˆD�)ð Ð#Ü!%��X‘à ‘	ØÒ%˜I˜Šä	˜Ÿ
™
Õ	#ô �d—j‘j¤.Ô1Ø—:‘:ˆDØ—:‘:‰Dä—8‘8˜D“>ˆDàÐ ¨¢ô —‘ XÔ.ñ 1ØŸ;™;¤r§x¡xÓ0�÷1ô —(‘(œ2Ÿ8™8Ó$ˆCØ"¤b§j¡j°·±Ó&9Ñ9Ø”r—z‘z #§'¡'Ó*Ñ*ñˆNð  °4¸8Ñ3CÑ!DÑE×JÑJÓLˆIÙÜ+Ø 5¨t¸Fô�ô  $��t‘Ø�à�{‰{œ2Ÿ:™:¨Eˆ{Ó2ˆð	,Ü1°$¸ºÀÓEˆIô #ˆI�d‰OØ—>‘> (Ó+ˆDØ‰ä	�‰˜Ÿ™ SÔ	)Ø�:‰:×Ñ 3Ò&ð —;‘;˜tŸz™z×6Ñ6°sÓ;Ó<ˆDØˆDä! $§*¡*Ô-ä+¨D¯J©JÓ7ˆIÜ& t°9À5ÔIˆDØ‰Dô ˜& §¡ Ð,SÐTÓUÐUáÜ�z‰z˜$Ó‰ä�x‰x˜ 4Ô(ˆà�:‰:�?‰?˜cÒ!Ð!Ð!Ø�:‰:˜ÒÐÐà€Køôk $ò 	Ø˜Ò ØØ—;‘;œvÓ&ˆDØÐ#Ø!%��X‘Ü% d°¸fÔEˆDØ‹Ið	ú÷61ñ 1ûô* #ò 	UØ˜Ò Ü*¨C¯H©HÐ5¸3Ð>ô —8‘8˜D¤"§&¡&¨$Ó/ˆDÜ% d§k¡k´&Ó&9ÀÈVÔTŽDûð	Uús7   ÃN' Å= O)É$O6 Î';O&Ï%O&Ï)O3Ï6	Q(Ï?AQ#Ñ#Q(c                ó$  — d}|�|nd}| j                   t        j                  k7  r�| j                   t        j                   d«      k(  rM| t        j                  t        j                  «      j                  kD  j                  «       rt        d|› d�«      ‚| j                  t        j                  «      } d}|dk7  rBd|› d�}| j                  |«      } |d	k7  r"t        | t        j                   d
«      ¬«      } d}| |fS | j                  d«      } | |fS )a­  
    Convert an ndarray with integer-dtype to timedelta64[ns] dtype, treating
    the integers as multiples of the given timedelta unit.

    Parameters
    ----------
    data : numpy.ndarray with integer-dtype
    unit : str, default "ns"
        The timedelta unit to treat integers as multiples of.

    Returns
    -------
    numpy.ndarray : timedelta64[ns] array converted from data
    bool : whether a copy was made
    Fr¶   Úuint64z Cannot convert input with unit 'ú'Tztimedelta64[r¿   r¹   ztimedelta64[us]r¦   ztimedelta64[ns])
r�   ro   rŽ  r¶  r  rÁ   r"   rÅ   rˆ   r   )r­   rq   r¼  Ú	dtype_strs       rF   rµ  rµ  ^  sû   € ð  €IØÐ#‰4¨€Dà‡z�z”R—X‘XÒð �:‰:œŸ™ (Ó+Ò+°¼¿¹ÄÇÁÓ8J×8NÑ8NÑ1N×0SÑ0SÔ0UÜ&Ð)IÈ$ÈÈqÐ'QÓRÐRð �{‰{œ2Ÿ8™8Ó$ˆØˆ	àˆt‚|Ø" 4 &¨Ð*ˆ	Ø�y‰y˜Ó#ˆà�4Š<Ü& t´2·8±8Ð<MÓ3NÔOˆDð ˆIð
 �ˆ?Ðð �y‰yÐ*Ó+ˆà�ˆ?ÐrH   c                ól   — t        j                  | t         j                  ¬«      }t        |||¬«      }|S )aR  
    Convert an object-dtyped or string-dtyped array into a
    timedelta64[ns]-dtyped array.

    Parameters
    ----------
    data : ndarray or Index
    unit : str, default "ns"
        The timedelta unit to treat integers as multiples of.
        Must not be specified if the data contains a str.
    errors : {"raise", "coerce", "ignore"}, default "raise"
        How to handle elements that cannot be converted to timedelta64[ns].
        See ``pandas.to_timedelta`` for details.

    Returns
    -------
    numpy.ndarray : timedelta64[ns] array converted from data

    Raises
    ------
    ValueError : Data cannot be converted to timedelta64[ns].

    Notes
    -----
    Unlike `pandas.to_timedelta`, if setting `errors=ignore` will not cause
    errors to be ignored; they are caught and subsequently ignored at a
    higher level.
    r¦   r¬  )ro   r'  Úobject_r   )r­   rq   r­  rV   rW   s        rF   r´  r´  ‹  s,   € ô@ �Z‰Z˜¤B§J¡JÔ/€Fä! &¨t¸FÔC€FØ€MrH   c                óÜ   — t        | «      } | t        j                  d«      k(  rd}t        |«      ‚t	        j
                  | d«      st        d| › d�«      ‚t        | «      st        d«      ‚| S )Nr±  zhPassing in 'timedelta' dtype with no precision is not allowed. Please pass in 'timedelta64[ns]' instead.rh   zdtype 'z,' is invalid, should be np.timedelta64 dtypez;Supported timedelta64 resolutions are 's', 'ms', 'us', 'ns')r+   ro   r�   r•   r   ri   r   )r�   Úmsgs     rF   r”   r”   ±  sn   € Ü˜Ó€EØ”—‘˜“Òð8ð 	ô ˜‹oÐä�?‰?˜5 #Ô&Ü˜7 5 'Ð)UÐVÓWÐWÜ Ô&ÜÐVÓWÐWà€LrH   )r`   r—  rX   r—  ra   r—  )FNr®  )r¡   r“  r­  r:   r[   r\   )r¶   )rq   r—  r[   ztuple[np.ndarray, bool])Nr®  )r­  r:   r[   r\   )r[   r;   )hÚ
__future__r   Údatetimer   rO  r¡  Útypingr   r   r   Únumpyro   Úpandas._libsr   r	   Úpandas._libs.tslibsr
   r   r   r   r   r   r   r   r   r   r   r   r   Úpandas._libs.tslibs.conversionr   Úpandas._libs.tslibs.fieldsr   r   Úpandas._libs.tslibs.timedeltasr   r   r   r   r   r   Úpandas.compat.numpyr    ré   Úpandas.errorsr!   r"   Úpandas.util._decoratorsr#   Úpandas.util._validatorsr$   Úpandas.core.dtypes.commonr%   r&   r'   r(   r)   r*   r+   Úpandas.core.dtypes.dtypesr,   r-   r.   Úpandas.core.dtypes.missingr/   Úpandas.corer0   r1   Úpandas.core.array_algosr2   Úpandas.core.arraysr3   r§   Úpandas.core.arrays._rangesr4   Úpandas.core.arrays.integerr5   Úpandas.core.commonÚcoreÚcommonrÂ   Úpandas.core.constructionr6   Úpandas.core.ops.commonr7   Úcollections.abcr8   Úpandas._typingr9   r:   r;   r<   r=   r>   r�  r@   rG   rb   ÚTimelikeOpsrd   r¬   rµ  r´  r”   r²   rH   rF   ú<module>rè     s;  ðÝ "å Û Û ÷ñ ó ÷÷÷ ÷ õ õ E÷÷÷ õ /÷õ /Ý 6÷÷ ñ ÷ñ õ
 ,÷õ ?Ý 2Ý =Ý 3ß  Ð  Ý 2Ý ;áÝ(÷÷ õ !òó"ñ, ˆOÓôr�S—_‘_ó ró ðrðv! Ø	Ø#*ð	Yà
ðYð !ð	Yð
 óYôx*ð\ 5<ð#Ø1ð#àó#ôLrH   