o
    �¨ÊhÆ“  ã                   @  sê  d dl mZ d dlmZ d dlZd dl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 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! d d
l"m#Z$ d dl%m&Z& d dl'm(Z(m)Z)m*Z*m+Z+m,Z,m-Z-m.Z. d dl/m0Z0 d dl1m2Z2 d dl3m4Z4m5Z5 d dl6m7Z7 d dl8m9Z: d dl;m<Z< d dl=m>  m?Z@ d dlAmBZB erÇd dlCmDZD d dlEmFZFmGZGmHZHmIZImJZJmKZK d dlLmMZM d dlNZNd2dd„ZOG dd„ de:jPƒZQ			 d3d4d'd(„ZRd5d6d+d,„ZSd7d8d-d.„ZTd9d0d1„ZUdS ):é    )Úannotations)Ú	timedeltaN)ÚTYPE_CHECKINGÚcast)ÚlibÚtslibs)	ÚNaTÚNaTTypeÚTickÚ	TimedeltaÚastype_overflowsafeÚget_supported_dtypeÚiNaTÚis_supported_dtypeÚperiods_per_second)Úcast_from_unit_vectorized)Úget_timedelta_daysÚget_timedelta_field)Úarray_to_timedelta64Úfloordiv_object_arrayÚints_to_pytimedeltaÚparse_timedelta_unitÚtruediv_object_array)Úfunction)Úvalidate_endpoints)ÚTD64NS_DTYPEÚis_float_dtypeÚis_integer_dtypeÚis_object_dtypeÚ	is_scalarÚis_string_dtypeÚpandas_dtype)ÚExtensionDtype)Úisna)ÚnanopsÚ	roperator)Údatetimelike_accumulations)Údatetimelike)Úgenerate_regular_range)Úunpack_zerodim_and_defer)ÚIterator)ÚAxisIntÚDateTimeErrorChoicesÚDtypeObjÚNpDtypeÚSelfÚnpt©Ú	DataFrameÚnameÚstrÚaliasÚ	docstringc                   s*   d‡ fdd„}| |_ d|› d�|_t|ƒS )NÚreturnú
np.ndarrayc                   sH   | j }ˆ dkrt|| jd�}nt|ˆ | jd�}| jr"| j|d dd�}|S )NÚdays©ÚresoÚfloat64)Ú
fill_valueÚconvert)Úasi8r   Ú_cresor   Ú_hasnaÚ_maybe_mask_results)ÚselfÚvaluesÚresult©r5   © úO/var/www/html/env/lib/python3.10/site-packages/pandas/core/arrays/timedeltas.pyÚfR   s   ÿz_field_accessor.<locals>.fÚ
)r7   r8   )Ú__name__Ú__doc__Úproperty)r3   r5   r6   rI   rG   rF   rH   Ú_field_accessorQ   s   rN   c                      s*  e Zd ZU dZdZe dd¡Zeeje	fZ
dd„ ZdZedœd
d„ƒZdZg Zded< g Zded< dgZded< g d¢Zded< ee e dg Zded< g d¢Zded< d�dd„Zedždd„ƒZd ZeZed!d"„ ƒZed efdŸ‡ fd(d)„ƒZed d*d+œd d.d/„ƒZed d*e j!d d0œd d1d2„ƒZ"e	 d¡d d3œd¢d5d6„ƒZ#d£d7d8„Z$d¤d9d:„Z%d¥d<d=„Z&d¦d§d?d@„Z'd¨dBdC„Z(d d d d*d d>dDdEœd©dMdN„Z)d d d dOd*d>dPœdªdRdS„Z*d>dTœd«‡ fdWdX„Z+d¬d­dZd[„Z,dd d\œd®d`da„Z-dbdc„ Z.e/ddƒd¯dedf„ƒZ0e0Z1dgdh„ Z2didj„ Z3d°dldm„Z4e/dnƒdodp„ ƒZ5e/dqƒdrds„ ƒZ6e/dtƒdudv„ ƒZ7e/dwƒdxdy„ ƒZ8e/dzƒd{d|„ ƒZ9e/d}ƒd~d„ ƒZ:e/d€ƒd�d‚„ ƒZ;e/dƒƒd„d…„ ƒZ<d±d†d‡„Z=d±dˆd‰„Z>d±dŠd‹„Z?d²d�dŽ„Z@d³d�d�„ZAeB Cd‘¡ZDeEd’d’eDƒZFeB Cd“¡ZGeEd”d”eGƒZHeB Cd•¡ZIeEd–d–eIƒZJeB Cd—¡ZKeEd˜d˜eKƒZLed´dšd›„ƒZM‡  ZNS )µÚTimedeltaArrayal  
    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
    ----------
    values : array-like
        The timedelta data.

    dtype : numpy.dtype
        Currently, only ``numpy.dtype("timedelta64[ns]")`` is accepted.
    freq : Offset, optional
    copy : bool, default False
        Whether to copy the underlying array of data.

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

    Methods
    -------
    None

    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[ns]
    Útimedeltaarrayr   Únsc                 C  s   t  | d¡S )NÚm)r   Úis_np_dtype©ÚxrG   rG   rH   Ú<lambda>�   s    zTimedeltaArray.<lambda>)r   Útimedelta64r7   útype[Timedelta]c                 C  s   t S ©N©r   ©rC   rG   rG   rH   Ú_scalar_type“   ó   zTimedeltaArray._scalar_typeiè  z	list[str]Ú
_other_opsÚ	_bool_opsÚfreqÚ_object_ops)r9   ÚsecondsÚmicrosecondsÚnanosecondsÚ
_field_opsÚunitÚ_datetimelike_ops)Úto_pytimedeltaÚtotal_secondsÚroundÚfloorÚceilÚas_unitÚ_datetimelike_methodsrU   únp.timedelta64úTimedelta | NaTTypec                 C  s(   |  d¡}|tjkrtS tj|| jd�S )NÚi8r:   )Úviewr   Ú_valuer   Ú_from_value_and_resor@   )rC   rU   ÚyrG   rG   rH   Ú	_box_funcª   s   

zTimedeltaArray._box_funcúnp.dtype[np.timedelta64]c                 C  s   | 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Údtyper[   rG   rG   rH   ry   °   s   zTimedeltaArray.dtypeNc                 C  s(   t |ƒ}t |jƒ ||jkrtdƒ‚|S )Nz'Values resolution does not match dtype.)Ú_validate_td64_dtypery   Ú
ValueError)ÚclsrD   ry   rG   rG   rH   Ú_validate_dtypeÉ   s
   

zTimedeltaArray._validate_dtyperD   únpt.NDArray[np.timedelta64]úTick | Nonery   r/   c                   st   t  |d¡sJ ‚t |¡rJ ‚t|tjƒsJ t|ƒƒ‚||jks"J ‚|d u s-t|t	ƒs-J ‚t
ƒ j||d�}||_|S )NrR   )rD   ry   )r   rS   r   Úis_unitlessÚ
isinstanceÚnpÚndarrayÚtypery   r
   ÚsuperÚ_simple_newÚ_freq)r|   rD   r`   ry   rE   ©Ú	__class__rG   rH   r†   Ó   s   zTimedeltaArray._simple_newF©ry   Úcopyr‹   Úboolc                C  sF   |rt |ƒ}t||d d�\}}|d urt||dd�}| j||j|d�S )N©r‹   rf   FrŠ   ©ry   r`   )rz   Úsequence_to_td64nsr   r†   ry   )r|   Údatary   r‹   r`   rG   rG   rH   Ú_from_sequenceå   s   zTimedeltaArray._from_sequence)ry   r‹   r`   rf   c                C  sb   |rt |ƒ}|dvsJ ‚t|||d�\}}|dur t||dd�}| j||j|d�}| |i ¡ |S )zo
        _from_sequence_not_strict but without responsibility for finding the
        result's `freq`.
        ©ÚYru   ÚMr�   NFrŠ   rŽ   )rz   r�   r   r†   ry   Ú_maybe_pin_freq)r|   r�   ry   r‹   r`   rf   Úinferred_freqrE   rG   rG   rH   Ú_from_sequence_not_strictñ   s   z(TimedeltaArray._from_sequence_not_strict©rf   ú
str | Nonec                C  sX  t  |¡}|d u rtdd„ |||fD ƒƒrtdƒ‚t ||||¡dkr'tdƒ‚|d ur2t|ƒ d¡}|d ur=t|ƒ d¡}|d urJ|dvrItdƒ‚nd}|d ur[|d ur[|j|d	d
�}|d urj|d urj|j|d	d
�}t|ƒ\}}|d ur~t	|||||d�}	nt
 |j|j|¡ d¡}	|s’|	dd … }	|sš|	d d… }	|	 d|› d�¡}
| j|
|
j|d�S )Nc                 s  s   � | ]}|d u V  qd S rY   rG   ©Ú.0rU   rG   rG   rH   Ú	<genexpr>  s   € z1TimedeltaArray._generate_range.<locals>.<genexpr>z1Must provide freq argument if no data is suppliedé   zVOf the four parameters: start, end, periods, and freq, exactly three must be specifiedrQ   )ÚsÚmsÚusrQ   z+'unit' must be one of 's', 'ms', 'us', 'ns'F)Úround_okr˜   rq   é   éÿÿÿÿzm8[ú]rŽ   )ÚdtlÚvalidate_periodsÚanyr{   ÚcomÚcount_not_noner   rm   r   r(   r‚   Úlinspacers   Úastyperr   r†   ry   )r|   ÚstartÚendÚperiodsr`   Úclosedrf   Úleft_closedÚright_closedÚindexÚ
td64valuesrG   rG   rH   Ú_generate_range  s<   
 ÿÿzTimedeltaArray._generate_rangec                 C  sL   t || jƒs|turtdƒ‚|  |¡ |tu rt |j| j¡S | 	| j¡j
S )Nz'value' should be a Timedelta.)r�   r\   r   r{   Ú_check_compatible_withr‚   rW   rs   rf   rm   Úasm8©rC   ÚvaluerG   rG   rH   Ú_unbox_scalar?  s   
zTimedeltaArray._unbox_scalarc                 C  s   t |ƒS rY   rZ   r·   rG   rG   rH   Ú_scalar_from_stringH  s   z"TimedeltaArray._scalar_from_stringÚNonec                 C  s   d S rY   rG   ©rC   ÚotherrG   rG   rH   rµ   K  r]   z%TimedeltaArray._check_compatible_withTc                 C  sˆ   t |ƒ}t |d¡r;|| jkr|r|  ¡ S | S t|ƒr/t| j|dd�}t| ƒj	||j| j
d�S td| j› d|› d�ƒ‚tjj| ||d�S )NrR   F©r‹   rŽ   zCannot convert from z to z1. Supported resolutions are 's', 'ms', 'us', 'ns')r!   r   rS   ry   r‹   r   r   rx   r„   r†   r`   r{   r¥   ÚDatetimeLikeArrayMixinr«   )rC   ry   r‹   Ú
res_valuesrG   rG   rH   r«   R  s   

ÿÿzTimedeltaArray.astyper*   c           	      c  s”   � | j dkrtt| ƒƒD ]}| | V  qd S | j}t| ƒ}d}|| d }t|ƒD ]}|| }t|d | |ƒ}t|||… dd�}|E d H  q)d S )Nr¢   i'  T©Úbox)ÚndimÚrangeÚlenrx   Úminr   )	rC   Úir�   ÚlengthÚ	chunksizeÚchunksÚstart_iÚend_iÚ	convertedrG   rG   rH   Ú__iter__m  s   €
ÿüzTimedeltaArray.__iter__r   )Úaxisry   ÚoutÚkeepdimsÚinitialÚskipnaÚ	min_countrÏ   úAxisInt | NoneúNpDtype | NonerÑ   rÓ   rÔ   Úintc          	      C  s6   t  d||||dœ¡ tj| j|||d�}|  ||¡S )NrG   )ry   rÐ   rÑ   rÒ   )rÏ   rÓ   rÔ   )ÚnvÚvalidate_sumr$   Únansumrx   Ú_wrap_reduction_result)	rC   rÏ   ry   rÐ   rÑ   rÒ   rÓ   rÔ   rE   rG   rG   rH   Úsum€  s   ÿ
ÿzTimedeltaArray.sumr¢   )rÏ   ry   rÐ   ÚddofrÑ   rÓ   rÝ   c                C  sR   t jd|||dœdd� tj| j|||d�}|d u s| jdkr$|  |¡S |  |¡S )NrG   )ry   rÐ   rÑ   Ústd)Úfname)rÏ   rÓ   rÝ   r¢   )rØ   Úvalidate_stat_ddof_funcr$   Únanstdrx   rÃ   rv   Ú_from_backing_data)rC   rÏ   ry   rÐ   rÝ   rÑ   rÓ   rE   rG   rG   rH   rÞ   ”  s   
ÿ

zTimedeltaArray.std)rÓ   r3   r4   c                  sj   |dkr!t t|ƒ}|| j ¡ fd|i|¤Ž}t| ƒj|d | jd�S |dkr)tdƒ‚tƒ j	|fd|i|¤ŽS )NÚcumsumrÓ   )r`   ry   Úcumprodz$cumprod not supported for Timedelta.)
Úgetattrr&   rx   r‹   r„   r†   ry   Ú	TypeErrorr…   Ú_accumulate)rC   r3   rÓ   ÚkwargsÚoprE   rˆ   rG   rH   rç   ª  s   
zTimedeltaArray._accumulateÚboxedc                 C  s   ddl m} || dd�S )Nr   ©Úget_format_timedelta64TrÁ   )Úpandas.io.formats.formatrì   )rC   rê   rì   rG   rG   rH   Ú
_formatter¹  s   zTimedeltaArray._formatter)Úna_repÚdate_formatrï   ústr | floatúnpt.NDArray[np.object_]c                K  s*   ddl m} || |ƒ}t |dd¡| jƒS )Nr   rë   r¢   )rí   rì   r‚   Ú
frompyfuncrx   )rC   rï   rð   rè   rì   Ú	formatterrG   rG   rH   Ú_format_native_types¾  s   
z#TimedeltaArray._format_native_typesc                 C  s.   t |tƒrJ ‚tdt|ƒj› dt| ƒj› �ƒ‚)Nzcannot add the type z to a )r�   r
   ræ   r„   rK   r¼   rG   rG   rH   Ú_add_offsetÌ  s   ÿzTimedeltaArray._add_offsetÚ__mul__c                   s8  t ˆƒr;| jˆ }|jjdkrtdtˆƒj› �ƒ‚d }| jd ur0tˆƒs0| jˆ }|j	dkr0d }t| ƒj
||j|d�S tˆdƒsEt ˆ¡‰tˆƒt| ƒkrXt ˆjd¡sXtdƒ‚tˆjƒr}| j‰ ‡ ‡fdd„tt| ƒƒD ƒ}t |¡}t| ƒj
||jd	�S | jˆ }|jjdkr’tdtˆƒj› �ƒ‚t| ƒj
||jd	�S )
NrR   zCannot multiply with r   rŽ   ry   z$Cannot multiply with unequal lengthsc                   s   g | ]
}ˆ | ˆ|  ‘qS rG   rG   ©r›   Ún©Úarrr½   rG   rH   Ú
<listcomp>ð  ó    z*TimedeltaArray.__mul__.<locals>.<listcomp>©ry   )r   rx   ry   Úkindræ   r„   rK   r`   r#   rù   r†   Úhasattrr‚   ÚarrayrÅ   r   rS   r{   r   rÄ   )rC   r½   rE   r`   rG   rú   rH   r÷   Ò  s.   







zTimedeltaArray.__mul__c                 C  sÔ   t || jƒr(t|ƒ}td|ƒtu r"tj| jtjd�}| 	tj
¡ |S || j|ƒS |tjtjfv r@tdt|ƒj› dt| ƒj› �ƒ‚|| j|ƒ}d}| jdur_| j| }|jdkr_| jjdkr_d}t| ƒj||j|d�S )zv
        Shared logic for __truediv__, __rtruediv__, __floordiv__, __rfloordiv__
        with scalar 'other'.
        rp   rþ   zCannot divide z by Nr   rŽ   )r�   Ú_recognized_scalarsr   r   r   r‚   ÚemptyÚshaper<   ÚfillÚnanrx   r%   ÚrtruedivÚ	rfloordivræ   r„   rK   r`   Únanosr†   ry   )rC   r½   ré   ÚresrE   r`   rG   rG   rH   Ú_scalar_divlike_opþ  s$   ÿ

z!TimedeltaArray._scalar_divlike_opc                 C  s0   t |dƒs
t |¡}t|ƒt| ƒkrtdƒ‚|S )Nry   z*Cannot divide vectors with unequal lengths)r   r‚   r  rÅ   r{   r¼   rG   rG   rH   Ú_cast_divlike_op'  s
   

zTimedeltaArray._cast_divlike_opúnp.ndarray | Selfc                 C  s’   || j t |¡ƒ}t|jƒst|jƒr%|tjtjfv r%t	| ƒj
||jd�S |tjtjfv rG|  ¡ t|ƒB }| ¡ rG| tj¡}t ||tj¡ |S )z‡
        Shared logic for __truediv__, __floordiv__, and their reversed versions
        with timedelta64-dtype ndarray other.
        rþ   )rx   r‚   Úasarrayr   ry   r   ÚoperatorÚtruedivÚfloordivr„   r†   r%   r  r#   r§   r«   r<   Úputmaskr  )rC   r½   ré   rE   ÚmaskrG   rG   rH   Ú_vector_divlike_op0  s   þz!TimedeltaArray._vector_divlike_opÚ__truediv__c                 C  s¸   t j}t|ƒr|  ||¡S |  |¡}t |jd¡s#t|jƒs#t	|jƒr)|  
||¡S t|jƒrZt |¡}| jdkrRdd„ t| |ƒD ƒ}dd„ |D ƒ}tj|dd�}|S t| j|ƒ}|S tS )NrR   r¢   c                 S  s   g | ]\}}|| ‘qS rG   rG   ©r›   ÚleftÚrightrG   rG   rH   rü   X  ó    z.TimedeltaArray.__truediv__.<locals>.<listcomp>c                 S  ó   g | ]}|  d d¡‘qS ©r¢   r£   ©Úreshaperš   rG   rG   rH   rü   Y  r  r   ©rÏ   )r  r  r   r  r  r   rS   ry   r   r   r  r   r‚   r  rÃ   ÚzipÚconcatenater   rx   ÚNotImplemented©rC   r½   ré   Úres_colsÚ	res_cols2rE   rG   rG   rH   r  F  s*   
ÿþý


þzTimedeltaArray.__truediv__Ú__rtruediv__c                   sr   t j}tˆ ƒrˆ ˆ |¡S ˆ ˆ ¡‰ t ˆ jd¡rˆ ˆ |¡S t	ˆ jƒr7‡ ‡fdd„t
tˆƒƒD ƒ}t |¡S tS )NrR   c                   s   g | ]
}ˆ | ˆ|  ‘qS rG   rG   rø   ©r½   rC   rG   rH   rü   r  rý   z/TimedeltaArray.__rtruediv__.<locals>.<listcomp>)r%   r  r   r  r  r   rS   ry   r  r   rÄ   rÅ   r‚   r  r!  )rC   r½   ré   Úresult_listrG   r&  rH   r%  c  s   


zTimedeltaArray.__rtruediv__Ú__floordiv__c                 C  sÄ   t j}t|ƒr|  ||¡S |  |¡}t |jd¡s#t|jƒs#t	|jƒr)|  
||¡S t|jƒr`t |¡}| jdkrQdd„ t| |ƒD ƒ}dd„ |D ƒ}tj|dd�}nt| j|ƒ}|jtks^J ‚|S tS )NrR   r¢   c                 S  s   g | ]\}}|| ‘qS rG   rG   r  rG   rG   rH   rü   ‰  r  z/TimedeltaArray.__floordiv__.<locals>.<listcomp>c                 S  r  r  r  rš   rG   rG   rH   rü   Š  r  r   r  )r  r  r   r  r  r   rS   ry   r   r   r  r   r‚   r  rÃ   r  r   r   rx   Úobjectr!  r"  rG   rG   rH   r(  x  s*   
ÿþý


zTimedeltaArray.__floordiv__Ú__rfloordiv__c                   sv   t j}tˆ ƒrˆ ˆ |¡S ˆ ˆ ¡‰ t ˆ jd¡rˆ ˆ |¡S t	ˆ jƒr9‡ ‡fdd„t
tˆƒƒD ƒ}t |¡}|S tS )NrR   c                   s   g | ]
}ˆ | ˆ|  ‘qS rG   rG   rø   r&  rG   rH   rü      rý   z0TimedeltaArray.__rfloordiv__.<locals>.<listcomp>)r%   r  r   r  r  r   rS   ry   r  r   rÄ   rÅ   r‚   r  r!  )rC   r½   ré   r'  rE   rG   r&  rH   r*  •  s   


zTimedeltaArray.__rfloordiv__Ú__mod__c                 C  s$   t || jƒr
t|ƒ}| | | |  S rY   ©r�   r  r   r¼   rG   rG   rH   r+  §  ó   zTimedeltaArray.__mod__Ú__rmod__c                 C  s$   t || jƒr
t|ƒ}|||  |   S rY   r,  r¼   rG   rG   rH   r.  ®  r-  zTimedeltaArray.__rmod__Ú
__divmod__c                 C  s0   t || jƒr
t|ƒ}| | }| ||  }||fS rY   r,  ©rC   r½   Úres1Úres2rG   rG   rH   r/  µ  ó
   zTimedeltaArray.__divmod__Ú__rdivmod__c                 C  s0   t || jƒr
t|ƒ}||  }|||   }||fS rY   r,  r0  rG   rG   rH   r4  ¿  r3  zTimedeltaArray.__rdivmod__c                 C  s0   d }| j d ur| j  }t| ƒj| j | j|d�S ©NrŽ   )r`   r„   r†   rx   ry   )rC   r`   rG   rG   rH   Ú__neg__É  s   
zTimedeltaArray.__neg__c                 C  s   t | ƒj| j ¡ | j| jd�S r5  )r„   r†   rx   r‹   ry   r`   r[   rG   rG   rH   Ú__pos__Ï  s   ÿzTimedeltaArray.__pos__c                 C  s   t | ƒjt | j¡| jd�S )Nrþ   )r„   r†   r‚   Úabsrx   ry   r[   rG   rG   rH   Ú__abs__Ô  s   zTimedeltaArray.__abs__únpt.NDArray[np.float64]c                 C  s   t | jƒ}| j| j| d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[ns]

        >>> 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[ns]', freq=None)

        >>> idx.total_seconds()
        Index([0.0, 86400.0, 172800.0, 259200.0, 345600.0], dtype='float64')
        N)r=   )r   r@   rB   r?   )rC   ÚppsrG   rG   rH   ri   Û  s   
6zTimedeltaArray.total_secondsc                 C  s
   t | jƒS )a  
        Return an ndarray of datetime.timedelta objects.

        Returns
        -------
        numpy.ndarray

        Examples
        --------
        >>> tdelta_idx = pd.to_timedelta([1, 2, 3], unit='D')
        >>> tdelta_idx
        TimedeltaIndex(['1 days', '2 days', '3 days'],
                        dtype='timedelta64[ns]', freq=None)
        >>> tdelta_idx.to_pytimedelta()
        array([datetime.timedelta(days=1), datetime.timedelta(days=2),
               datetime.timedelta(days=3)], dtype=object)
        )r   rx   r[   rG   rG   rH   rh     s   
zTimedeltaArray.to_pytimedeltaaC  Number of days 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[ns]
    >>> 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[ns]', freq=None)
    >>> tdelta_idx.days
    Index([0, 10, 20], dtype='int64')r9   a‹  Number of seconds (>= 0 and less than 1 day) 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[ns]
    >>> 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[ns]', freq=None)
    >>> tdelta_idx.seconds
    Index([1, 2, 3], dtype='int32')rb   aÝ  Number of microseconds (>= 0 and less than 1 second) for each element.

    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[ns]
    >>> 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[ns]', freq=None)
    >>> tdelta_idx.microseconds
    Index([1, 2, 3], dtype='int32')rc   añ  Number of nanoseconds (>= 0 and less than 1 microsecond) 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')rd   r2   c                   s`   ddl m} g d¢‰ | j}|r‡ fdd„‰ndd„ ‰|‡fdd„| D ƒˆ d	�}|s.| d
¡}|S )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

        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   r1   )r9   ÚhoursÚminutesrb   Úmillisecondsrc   rd   c                   s   t | ƒrtjgtˆ ƒ S | jS rY   )r#   r‚   r  rÅ   Ú
componentsrT   ©ÚcolumnsrG   rH   rI   Ò  s   z$TimedeltaArray.components.<locals>.fc                 S  s   | j S rY   )r?  rT   rG   rG   rH   rI   Ù  s   c                   s   g | ]}ˆ |ƒ‘qS rG   rG   rš   )rI   rG   rH   rü   Ü  s    z-TimedeltaArray.components.<locals>.<listcomp>r@  Úint64)Úpandasr2   rA   r«   )rC   r2   ÚhasnansrE   rG   )rA  rI   rH   r?  ®  s   	
zTimedeltaArray.components)r7   rX   )rU   ro   r7   rp   )r7   rw   )rD   r~   r`   r   ry   rw   r7   r/   )r‹   rŒ   r7   r/   rY   )rf   r™   r7   r/   )r7   ro   )r7   rp   )r7   r»   )T)r‹   rŒ   )r7   r*   )
rÏ   rÕ   ry   rÖ   rÑ   rŒ   rÓ   rŒ   rÔ   r×   )
rÏ   rÕ   ry   rÖ   rÝ   r×   rÑ   rŒ   rÓ   rŒ   )r3   r4   rÓ   rŒ   )F)rê   rŒ   )rï   rñ   r7   rò   )r7   r/   )r7   r  )r7   rO   )r7   r:  )r7   rò   )r7   r2   )OrK   Ú
__module__Ú__qualname__rL   Ú_typr‚   rW   Ú_internal_fill_valuer   r
   r  Ú_is_recognized_dtypeÚ_infer_matchesrM   r\   Ú__array_priority__r^   Ú__annotations__r_   ra   re   rg   rn   rv   ry   r‡   r   Ú_default_dtypeÚclassmethodr}   r†   r‘   r   Ú
no_defaultr—   r´   r¹   rº   rµ   r«   rÎ   rÜ   rÞ   rç   rî   rõ   rö   r)   r÷   Ú__rmul__r  r  r  r  r%  r(  r*  r+  r.  r/  r4  r6  r7  r9  ri   rh   ÚtextwrapÚdedentÚdays_docstringrN   r9   Úseconds_docstringrb   Úmicroseconds_docstringrc   Únanoseconds_docstringrd   r?  Ú__classcell__rG   rG   rˆ   rH   rO   g   sô   
 %

	üùÿÿ
0
	

÷øÿ))
	






	

	



9ÿÿýÿýÿýrO   FÚraiser‹   rŒ   Úerrorsr,   r7   útuple[np.ndarray, Tick | None]c                 C  sr  |dvsJ ‚d}|durt |ƒ}tj| |dd�\} }t| tƒr"| j}| jtks,t| jƒr6t	| ||d�} d}nat
| jƒrIt| |d�\} }|oG| }nNt| jƒrst| jtƒr[| j}| j} nt | ¡}t| |pedƒ} t| |< |  d	¡} d}n$t | jd
¡rŽt| jƒs�t| jƒ}t| |dd�} d}n	td| j› d�ƒ‚|sŸt | ¡} ntj| |d�} | jjd
ks®J ‚| jdksµJ ‚| |fS )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]``.
    inferred_freq : Tick or None
        The inferred frequency of the sequence.

    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’   NrO   )Úcls_name©rf   rY  Fr˜   rQ   zm8[ns]rR   rŠ   zdtype z' cannot be converted to timedelta64[ns]r¾   Úm8)r   r¥   Ú!ensure_arraylike_for_datetimeliker�   rO   r`   ry   r)  r    Ú_objects_to_td64nsr   Ú_ints_to_td64nsr   r"   Ú_maskÚ_datar‚   Úisnanr   r   rr   r   rS   r   r   r   ræ   r  r  rÿ   )r�   r‹   rf   rY  r–   Ú	copy_mader  Ú	new_dtyperG   rG   rH   r�   æ  sJ   $
ÿ






€r�   rQ   rf   c                 C  sx   d}|dur|nd}| j tjkr|  tj¡} d}|dkr3d|› d�}|  |¡} t| td�} d}| |fS |  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
    FNrQ   Tztimedelta64[r¤   rþ   útimedelta64[ns])ry   r‚   rB  r«   rr   r   r   )r�   rf   rd  Ú	dtype_strrG   rG   rH   r`  F  s   

þr`  c                 C  s(   t j| t jd�}t|||d�}| d¡S )aR  
    Convert a object-dtyped or string-dtyped array into an
    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\  rf  )r‚   r  Úobject_r   rr   )r�   rf   rY  rD   rE   rG   rG   rH   r_  n  s   
r_  r-   c                 C  sR   t | ƒ} | t d¡krd}t|ƒ‚t | 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.rR   zdtype 'z,' is invalid, should be np.timedelta64 dtypez;Supported timedelta64 resolutions are 's', 'ms', 'us', 'ns')r!   r‚   ry   r{   r   rS   r   )ry   ÚmsgrG   rG   rH   rz   ’  s   ÿrz   )r3   r4   r5   r4   r6   r4   )FNrX  )r‹   rŒ   rY  r,   r7   rZ  )rQ   )rf   r4   )NrX  )rY  r,   )r7   r-   )VÚ
__future__r   Údatetimer   r  Útypingr   r   Únumpyr‚   Úpandas._libsr   r   Úpandas._libs.tslibsr   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   Úpandas.compat.numpyr   rØ   Úpandas.util._validatorsr   Úpandas.core.dtypes.commonr   r   r   r   r   r    r!   Úpandas.core.dtypes.dtypesr"   Úpandas.core.dtypes.missingr#   Úpandas.corer$   r%   Úpandas.core.array_algosr&   Úpandas.core.arraysr'   r¥   Úpandas.core.arrays._rangesr(   Úpandas.core.commonÚcoreÚcommonr¨   Úpandas.core.ops.commonr)   Úcollections.abcr*   Úpandas._typingr+   r,   r-   r.   r/   r0   rC  r2   rQ  rN   ÚTimelikeOpsrO   r�   r`  r_  rz   rG   rG   rG   rH   Ú<module>   sT    ,$	 	
       ü`($