
    Pi                    >   d dl mZ d dlm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 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+ d dl,m-Z-m.Z.m/Z/m0Z0m1Z1m2Z2m3Z3 d dl4m5Z5m6Z6m7Z7 d dl8m9Z9 d dl:m;Z;m<Z< d dl=m>Z> d dl?m@ZA d dlBmCZC d dlDmEc mFZG d dlHmIZI erd dlJmKZKmLZL d dlMmNZNmOZOmPZPmQZQmRZRmSZS d dlTmUZU d dlVZVd1dZW e)d           G d deAjX                              ZY	 	 	 d2d3d(ZZd4d5d,Z[	 d6d7d.Z\d8d0Z]dS )9    )annotations)	timedeltaN)TYPE_CHECKINGSelfcast)libtslibs)DayNaTNaTTypeTick	Timedeltaastype_overflowsafeget_supported_dtypeiNaTis_supported_dtypeperiods_per_second	to_offset)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)
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)unpack_zerodim_and_defer)CallableIterator)AxisIntDateTimeErrorChoicesDtypeObjNpDtypenptTimeUnit	DataFramenamestralias	docstringc                R    dfd}| |_         d| d|_        t          |          S )Nreturn
np.ndarrayc                    | j         }dk    rt          || j                  }nt          || j                  }| j        r|                     |d d          }|S )Ndaysresofloat64)
fill_valueconvert)asi8r   _cresor   _hasna_maybe_mask_results)selfvaluesresultr=   s      q/home/jaya/work/projects/VOICE-AGENT/VIET/agent-env/lib/python3.11/site-packages/pandas/core/arrays/timedeltas.pyfz_field_accessor.<locals>.fZ   ss    F??'T[AAAFF
 )T[IIIF; 	--4 .  F     
)r@   rA   )__name____doc__property)r;   r=   r>   rQ   s    `  rP   _field_accessorrW   Y   sH           AJ"Y"""AIA;;rR   zpandas.arraysc                      e Zd ZU dZdZeej        efZ	d Z
ded<   dZedwd	            Zedxd            ZdZg Zded<   g Zded<   g dZded<   eez   ddgz   Zded<   g dZded<   dydZedzd            ZdZded<   ed             Zedefd{ fd$            Zedd%d&d|d)            Zedd%ej        dd*d|d+            Z e	 d}d~d-            Z!dwd.Z"dd/Z#dd1Z$ddd3Z%dd5Z&dddd%dd2d6d7dd?Z'dddd@d%d2dAddCZ(d2dDd fdGZ)dddIZ*dJddKddOZ+dP Z, e-dQ          ddR            Z.e.Z/dS Z0dT Z1ddVZ2 e-dW          dX             Z3 e-dY          dZ             Z4 e-d[          d\             Z5 e-d]          d^             Z6 e-d_          d`             Z7 e-da          db             Z8 e-dc          dd             Z9 e-de          df             Z:ddgZ;ddhZ<ddiZ=ddkZ>ddlZ? e@jA        dm          ZB eCdndneB          ZD e@jA        do          ZE eCdpdpeE          ZF e@jA        dq          ZG eCdrdreG          ZH e@jA        ds          ZI eCdtdteI          ZJeddv            ZK xZLS )TimedeltaArrayaa  
    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
        Currently, only ``numpy.dtype("timedelta64[ns]")`` is accepted.
    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    rP   <lambda>zTimedeltaArray.<lambda>   s    QRTWAXAX rR   zCallable[[DtypeObj], bool]_is_recognized_dtype)r   timedelta64r@   np.timedelta64c                6    t          j        d| j                  S )Nr   )nprb   unitrM   s    rP   _internal_fill_valuez#TimedeltaArray._internal_fill_value   s    ~eTY///rR   type[Timedelta]c                    t           S Nr   rg   s    rP   _scalar_typezTimedeltaArray._scalar_type   s    rR   i  z	list[str]
_other_ops	_bool_ops)rC   secondsmicrosecondsnanoseconds
_field_opsrf   freq_datetimelike_ops)to_pytimedeltatotal_secondsroundfloorceilas_unit_datetimelike_methodsr_   Timedelta | NaTTypec                    |                     d          }|t          j        k    rt          S t          j        || j                  S )Ni8rD   )viewr   _valuer   _from_value_and_resorJ   )rM   r_   ys      rP   	_box_funczTimedeltaArray._box_func   s9    FF4LL
??J-adkBBBBrR   np.dtype[np.timedelta64]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dtyperg   s    rP   r   zTimedeltaArray.dtype   s    " }""rR   NTick | Day | None_freqc                    t          |          }t          |j                   ||j        k    rt          d          |S )Nz'Values resolution does not match dtype.)_validate_td64_dtyper   
ValueError)clsrN   r   s      rP   _validate_dtypezTimedeltaArray._validate_dtype   sB     %U++V\***FL  FGGGrR   rN   npt.NDArray[np.timedelta64]r   r   c                r   t          j        |d          sJ t          j        |          rJ t	          |t
          j                  sJ t          |                      ||j        k    sJ |t	          |t          t          f          sJ t                                          ||          }||_        |S )Nr\   )rN   r   )r   r]   r	   is_unitless
isinstancere   ndarraytyper   r   r
   super_simple_newr   )r   rN   rt   r   rO   	__class__s        rP   r   zTimedeltaArray._simple_new   s     uc*****%e,,,,,&"*--;;tF||;;-$$$$|z$s<<||<$$F%$@@rR   Fr   copyr   boolc                  d }|rAt          |          }t          j        |          dk    rt          j        |          d         }t          |||          \  }}|t          ||d          }|                     ||j        |          S )Nintegerr   r   rf   Fr   r   rt   )	r   r   infer_dtypere   datetime_datasequence_to_td64nsr   r   r   )r   datar   r   rf   rt   s         rP   _from_sequencezTimedeltaArray._from_sequence   s     	2(//Et$$	11'..q1'4dCCC
d&t5uEEEDt4:DAAArR   )r   r   rt   rf   c               T   |rCt          |          }|2t          j        |          dk    rt          j        |          d         }|dvsJ t          |||          \  }}|t          ||d          }|                     ||j        |          }|	                    |i            |S )	zo
        _from_sequence_not_strict but without responsibility for finding the
        result's `freq`.
        Nr   r   Yr   Mr   Fr   r   )
r   r   r   re   r   r   r   r   r   _maybe_pin_freq)r   r   r   r   rt   rf   inferred_freqrO   s           rP   _from_sequence_not_strictz(TimedeltaArray._from_sequence_not_strict  s      	2(//E| 5 5 B B'..q1?****0DtLLLm&t5uEEEDTZmLLtR(((rR   r8   c               N   t          j        |          }|+t          d |||fD                       rt          d          t	          j        ||||          dk    rt          d          |"t          |                              d          }|"t          |                              d          }|dvrt          d          |||                    |d	          }|||                    |d	          }t          |          \  }}|t          |||||
          }	n3t          j        |j        |j        |                              d          }	|s
|	dd          }	|s
|	d d         }	|	                    d| d          }
|                     |
|
j        |          S )Nc              3     K   | ]}|d u V  	d S rk    .0r_   s     rP   	<genexpr>z1TimedeltaArray._generate_range.<locals>.<genexpr>(  s&      IIaT	IIIIIIrR   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rf   r      zm8[]r   )dtlvalidate_periodsanyr   comcount_not_noner   r{   r   r/   re   linspacer   astyper   r   r   )r   startendperiodsrt   closedrf   left_closedright_closedindex
td64valuess              rP   _generate_rangezTimedeltaArray._generate_range#  s    &w//<CIIGUC3HIIIII<PQQQeS'488A==<  
 e$$,,T22E?C..((..C...JKKK!1MM$M77E?t/++dU+33C$6v$>$>!\*5#w4PPPEEKcj'BBII$OOE 	!""IE 	#2#JEZZd..
z1AMMMrR   c                   t          || j                  s|t          urt          d          |                     |           |t          u rt          j        |j        | j                  S |	                    | j        d          j
        S )Nz'value' should be a Timedelta.Fr   )r   rm   r   r   _check_compatible_withre   rb   r   rf   r{   asm8rM   values     rP   _unbox_scalarzTimedeltaArray._unbox_scalarQ  s~    %!233 	?S8H8H=>>>##E***C<<>%,	:::==U=;;@@rR   c                     t          |          S rk   rl   r   s     rP   _scalar_from_stringz"TimedeltaArray._scalar_from_stringZ  s    rR   Nonec                    d S rk   r   rM   others     rP   r   z%TimedeltaArray._check_compatible_with]  s    rR   Tc                   t          |          }t          j        |d          r|| j        k    r|r|                                 S | S t          |          rFt          | j        |d          }t          |           	                    ||j        | j
                  S t          d| j         d| d          t          j                            | ||          S )Nr\   Fr   r   zCannot convert from z to z1. Supported resolutions are 's', 'ms', 'us', 'ns')r&   r   r]   r   r   r   r   r   r   r   rt   r   r   DatetimeLikeArrayMixinr   )rM   r   r   
res_valuess       rP   r   zTimedeltaArray.astyped  s    
 U##?5#&& 	
"" '99;;&!%(( 
0ERRR
Dzz--j&6TY .    !F4: F F5 F F F  
 )00u40HHHrR   r2   c              #  R  K   | j         dk    r+t          t          |                     D ]}| |         V  d S | j        }t          |           }d}||z  dz   }t          |          D ]>}||z  }t	          |dz   |z  |          }t          |||         d          }|E d {V  ?d S )Nr   i'  Tbox)ndimrangelenr   minr   )	rM   ir   length	chunksizechunksstart_iend_i	converteds	            rP   __iter__zTimedeltaArray.__iter__  s      9q==3t99%%  1g  =DYYFI	)Q.F6]] % %i-QUi/88/WU]0CNNN	$$$$$$$$$	% %rR   r   )axisr   outkeepdimsinitialskipna	min_countr   AxisInt | NoneNpDtype | Noner   r   r   intc                   t          j        d||||d           t          j        | j        |||          }|                     ||          S )Nr   )r   r   r   r   )r   r   r   )nvvalidate_sumr+   nansumr   _wrap_reduction_result)	rM   r   r   r   r   r   r   r   rO   s	            rP   sumzTimedeltaArray.sum  sd     	%gVV	
 	
 	
 MVy
 
 
 **4888rR   r   )r   r   r   ddofr   r   r   c                   t          j        d|||dd           t          j        | j        |||          }|| j        dk    r|                     |          S |                     |          S )Nr   )r   r   r   std)fname)r   r   r   r   )r   validate_stat_ddof_funcr+   nanstdr   r   r   _from_backing_data)rM   r   r   r   r   r   r   rO   s           rP   r   zTimedeltaArray.std  s     	"%BB%	
 	
 	
 	
 t}4TRRR<49>>>>&)))&&v...rR   )r   r;   r<   c               4   |dk    rat          t          |          } || j                                        fd|i|}t	          |                               |d | j                  S |dk    rt          d           t                      j	        |fd|i|S )Ncumsumr   )rt   r   cumprodz$cumprod not supported for Timedelta.)
getattrr-   r   r   r   r   r   	TypeErrorr   _accumulate)rM   r;   r   kwargsoprO   r   s         rP   r  zTimedeltaArray._accumulate  s    83T::BR**,,FFVFvFFF::))&t4:)NNNYBCCC '577&tEEFEfEEErR   boxedc                (    ddl m}  || d          S )Nr   get_format_timedelta64Tr   )pandas.io.formats.formatr  )rM   r
  r  s      rP   
_formatterzTimedeltaArray._formatter  s*    CCCCCC%%d5555rR   r   )na_repdate_formatr  str | floatnpt.NDArray[np.object_]c               n    ddl m}  || |          } t          j        |dd          | j                  S )Nr   r  r   )r  r  re   
frompyfuncr   )rM   r  r  r  r  	formatters         rP   _format_native_typesz#TimedeltaArray._format_native_types  sM     	DCCCCC +*488	 .r}Y1--dm<<<rR   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   rT   r   s     rP   _add_offsetzTimedeltaArray._add_offset  sS    edC[11111T4;;#7TTtDzz?RTT
 
 	
rR   __mul__c                   t                    rt          j                  rt          d| j         d          | j        z  }|j        j        dk    r$t          dt                    j                   d }| j	        &t                    s| j	        z  }|j        dk    rd }t          |                               ||j        |          S t          d          st          j                  j        j        dk    rt          d| j         d          t!          j        t"          t$          f          rt&          S t)                    t)          |           k    r)t          j        j        d          st-          d	          t/          j                  rm| j        fd
t1          t)          |                     D             }t          j        |          }t          |                               ||j                  S | j        z  }|j        j        dk    r$t          dt                    j                   t          |                               ||j                  S )NzCannot multiply 'z.' by bool, explicitly cast to integers insteadr\   zCannot multiply with r   r   r   bz$Cannot multiply with unequal lengthsc                2    g | ]}|         |         z  S r   r   )r   narrr   s     rP   
<listcomp>z*TimedeltaArray.__mul__.<locals>.<listcomp>  s&    BBBAc!fuQx'BBBrR   r   )r$   r   is_boolr  r   r   kindr   rT   rt   r*   r  r   hasattrre   arrayr   r'   r(   NotImplementedr   r]   r   r#   r   )rM   r   rO   rt   r  s    `  @rP   r  zTimedeltaArray.__mul__  st   U 	Q{5!! '
 ' ' '  
 ]U*F| C''   NU8L N NOOODy$T%[[$y5(6Q;;D::))&4)PPPug&& 	$HUOOE;s""#DJ # # #   ekJ#@AA 	"!!u::T""3?5;+L+L" CDDD5;'' 	F -CBBBBBs4yy1A1ABBBFXf%%F::))&)EEE &<## JDKK4HJJKKKDzz%%fFL%AAArR   c                   t          || j                  r}t          |          }t          d|          t          u rFt          j        | j        t
          j                  }|	                    t
          j
                   |S  || j        |          S |t          j        t          j        fv r9t          dt!          |          j         dt!          |           j                    || j        |          }d}| j        t          | j        t&                    r[| j        j        |z  dk    rt'          | j        j        |z            }n5t+          t          | j        j                            |z  }n
| j        |z  }|j        dk    r| j        j        dk    rd}t!          |                               ||j        |          S )	zv
        Shared logic for __truediv__, __rtruediv__, __floordiv__, __rfloordiv__
        with scalar 'other'.
        r}   r!  zCannot divide z by Nr   )rC   r   )r   _recognized_scalarsr   r   r   re   emptyshaperF   fillnanr   r,   rtruediv	rfloordivr  r   rT   rt   r
   r  r   nanosr   r   )rM   r   r	  resrO   rt   s         rP   _scalar_divlike_opz!TimedeltaArray._scalar_divlike_op   s   
 eT566 (	Qe$$E )511S88htz<<<   
 2dmU+++ i()*=>>>TT%[[%9TTtDzz?RTT   Ru--FDy$ di-- -y{U*a//"49;%#788(	)D)D)DEEM9u,D:??ty!';';  D::))&4)PPPrR   c                    t          |d          st          j        |          }t          |          t          |           k    rt	          d          |S )Nr   z*Cannot divide vectors with unequal lengths)r$  re   r%  r   r   r   s     rP   _cast_divlike_opzTimedeltaArray._cast_divlike_opO  sL    ug&& 	$HUOOEu::T""IJJJrR   np.ndarray | Selfc                D    || j         t          j        |                    }t          |j                  st          |j                  rC|t          j        t          j        fv r)t          |           
                    ||j                  S |t          j        t          j        fv rw|                                 t          |          z  }|                                r?|                    t          j                  }t          j        ||t          j                   |S )z
        Shared logic for __truediv__, __floordiv__, and their reversed versions
        with timedelta64-dtype ndarray other.
        r!  )r   re   asarrayr"   r   r!   operatortruedivfloordivr   r   r,   r.  r*   r   r   rF   putmaskr,  )rM   r   r	  rO   masks        rP   _vector_divlike_opz!TimedeltaArray._vector_divlike_opX  s     DM2:e#4#455U[)) 	F^EK-H-H 	FbU
 O
 O
 ::))&)EEE(#Y%899999;;e,Dxxzz 1rz22
64000rR   __truediv__c                ^   t           j        }t          |          r|                     ||          S |                     |          }t          j        |j        d          s(t          |j                  st          |j                  r| 
                    ||          S t          |j                  rut          j        |          }| j        dk    r?d t          | |d          D             }d |D             }t          j        |d          }nt#          | j        |          }|S t&          S )	Nr\   r   c                    g | ]
\  }}||z  S r   r   r   leftrights      rP   r   z.TimedeltaArray.__truediv__.<locals>.<listcomp>  s-       %0T5D5L  rR   Tstrictc                :    g | ]}|                     d d          S r   r   reshaper   s     rP   r   z.TimedeltaArray.__truediv__.<locals>.<listcomp>  &    @@@!QYYq"--@@@rR   r   r   )r7  r8  r$   r1  r3  r   r]   r   r"   r!   r<  r#   re   r6  r   zipconcatenater   r   r&  rM   r   r	  res_cols	res_cols2rO   s         rP   r=  zTimedeltaArray.__truediv__n  s<    U 	6**5"555%%e,,OEK--	6,,	6 ek**	6
 **5"5555;'' 	"Ju%%Ey1}} 47eD4Q4Q4Q   A@x@@@		:::-dmUCCM "!rR   __rtruediv__c                    t           j        }t                    r                     |          S                                t          j        j        d          r                     |          S t          j                  r= fdt          t                               D             }t          j        |          S t          S )Nr\   c                2    g | ]}|         |         z  S r   r   r   r  r   rM   s     rP   r   z/TimedeltaArray.__rtruediv__.<locals>.<listcomp>  s&    HHH!58d1g-HHHrR   )r,   r-  r$   r1  r3  r   r]   r   r<  r#   r   r   re   r%  r&  )rM   r   r	  result_lists   ``  rP   rP  zTimedeltaArray.__rtruediv__  s     U 	6**5"555%%e,,?5;,, 	"**5"555U[)) 	" IHHHHuSYY7G7GHHHK8K((( "!rR   __floordiv__c                   t           j        }t          |          r|                     ||          S |                     |          }t          j        |j        d          s(t          |j                  st          |j                  r| 
                    ||          S t          |j                  rt          j        |          }| j        dk    r?d t          | |d          D             }d |D             }t          j        |d          }nt#          | j        |          }|j        t&          k    sJ |S t(          S )	Nr\   r   c                    g | ]
\  }}||z  S r   r   r@  s      rP   r   z/TimedeltaArray.__floordiv__.<locals>.<listcomp>  s-       &1dEDEM  rR   TrC  c                :    g | ]}|                     d d          S rF  rG  r   s     rP   r   z/TimedeltaArray.__floordiv__.<locals>.<listcomp>  rI  rR   r   rJ  )r7  r9  r$   r1  r3  r   r]   r   r"   r!   r<  r#   re   r6  r   rK  rL  r   r   objectr&  rM  s         rP   rU  zTimedeltaArray.__floordiv__  sM   U 	6**5"555%%e,,OEK--	",,	" ek**	"
 **5"555U[)) 	"Ju%%Ey1}} 58uT5R5R5R   A@x@@@		:::.t}eDD<6))))M "!rR   __rfloordiv__c                    t           j        }t                    r                     |          S                                t          j        j        d          r                     |          S t          j                  r? fdt          t                               D             }t          j        |          }|S t          S )Nr\   c                2    g | ]}|         |         z  S r   r   rS  s     rP   r   z0TimedeltaArray.__rfloordiv__.<locals>.<listcomp>  s&    III158tAw.IIIrR   )r,   r.  r$   r1  r3  r   r]   r   r<  r#   r   r   re   r%  r&  )rM   r   r	  rT  rO   s   ``   rP   rZ  zTimedeltaArray.__rfloordiv__  s     U 	6**5"555%%e,,?5;,, 		"**5"555U[)) 	"IIIIIc$ii8H8HIIIKXk**FM "!rR   __mod__c                `    t          || j                  rt          |          }| | |z  |z  z
  S rk   r   r(  r   r   s     rP   r]  zTimedeltaArray.__mod__  s:     eT566 	%e$$Etu}---rR   __rmod__c                `    t          || j                  rt          |          }||| z  | z  z
  S rk   r_  r   s     rP   r`  zTimedeltaArray.__rmod__  s:     eT566 	%e$$E---rR   
__divmod__c                l    t          || j                  rt          |          }| |z  }| ||z  z
  }||fS rk   r_  rM   r   res1res2s       rP   rb  zTimedeltaArray.__divmod__  sG     eT566 	%e$$Eu}dUl"TzrR   __rdivmod__c                l    t          || j                  rt          |          }|| z  }||| z  z
  }||fS rk   r_  rd  s       rP   rg  zTimedeltaArray.__rdivmod__  sG     eT566 	%e$$E}td{"TzrR   c                    d }| j         | j          }t          |                               | j         | j        |          S Nr   )rt   r   r   r   r   )rM   rt   s     rP   __neg__zTimedeltaArray.__neg__  s?    9 I:DDzz%%t}nDJT%RRRrR   c                    t          |                               | j                                        | j        | j                  S rj  )r   r   r   r   r   rt   rg   s    rP   __pos__zTimedeltaArray.__pos__  s>    Dzz%%M  
 & 
 
 	
rR   c                    t          |                               t          j        | j                  | j                  S )Nr!  )r   r   re   absr   r   rg   s    rP   __abs__zTimedeltaArray.__abs__   s/    Dzz%%bfT]&;&;4:%NNNrR   npt.NDArray[np.float64]c                h    t          | j                  }|                     | j        |z  d          S )ay  
        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[s]

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

        >>> idx.total_seconds()
        Index([0.0, 86400.0, 172800.0, 259200.0, 345600.0], dtype='float64')
        N)rG   )r   rJ   rL   rI   )rM   ppss     rP   rw   zTimedeltaArray.total_seconds  s3    l !--''	CD'IIIrR   c                *    t          | j                  S )a;  
        Return an ndarray of datetime.timedelta objects.

        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[s]', 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   rg   s    rP   rv   zTimedeltaArray.to_pytimedelta@  s    N #4=111rR   a8  Number of days for each element.

    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[s]
    >>> 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')rC   a2  Number of seconds (>= 0 and less than 1 day) for each element.

    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[s]
    >>> 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[s]', freq=None)
    >>> tdelta_idx.seconds
    Index([1, 2, 3], dtype='int32')rp   a  Number of microseconds (>= 0 and less than 1 second) for each element.

    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')rq   a  Number of nanoseconds (>= 0 and less than 1 microsecond) for each element.

    See Also
    --------
    Series.dt.seconds : Return number of seconds for each element.
    Series.dt.microseconds : Return number of nanoseconds 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')rr   r:   c                    ddl m} g d| j        }|rfdnd  |f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

        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   r9   )rC   hoursminutesrp   millisecondsrq   rr   c                j    t          |           rt          j        gt                    z  S | j        S rk   )r*   re   r,  r   
components)r_   columnss    rP   rQ   z$TimedeltaArray.components.<locals>.f/  s.    77 3F8c'll22|#rR   c                    | j         S rk   )rz  r^   s    rP   rQ   z$TimedeltaArray.components.<locals>.f6  s
    |#rR   c                &    g | ]} |          S r   r   )r   r_   rQ   s     rP   r   z-TimedeltaArray.components.<locals>.<listcomp>9  s!    ///QAAaDD///rR   )r{  int64)pandasr:   rK   r   )rM   r:   hasnansrO   r{  rQ   s       @@rP   rz  zTimedeltaArray.components  s    8 	%$$$$$
 
 
 + 
	$$ $ $ $ $ $$ $ $ ////$///AAA 	,]]7++FrR   )r@   rc   )r@   ri   )r_   rc   r@   r}   )r@   r   )rN   r   rt   r   r   r   r@   r   )r   r   r@   r   rk   )rf   r8   r@   r   )r@   r}   )r@   r   )T)r   r   )r@   r2   )
r   r   r   r   r   r   r   r   r   r   )
r   r   r   r   r   r   r   r   r   r   )r;   r<   r   r   )F)r
  r   )r  r  r@   r  )r@   r   )r@   r4  )r@   rY   )r@   rq  )r@   r  )r@   r:   )MrT   
__module____qualname__rU   _typr   re   rb   r   r(  ra   __annotations___infer_matchesrV   rh   rm   __array_priority__rn   ro   rs   ru   r|   r   r   r   classmethodr   r    r   r   r   
no_defaultr   r   r   r   r   r   r   r   r   r  r  r  r  r0   r  __rmul__r1  r3  r<  r=  rP  rU  rZ  r]  r`  rb  rg  rk  rm  rp  rw   rv   textwrapdedentdays_docstringrW   rC   seconds_docstringrp   microseconds_docstringrq   nanoseconds_docstringrr   rz  __classcell__)r   s   @rP   rY   rY   o   s        ) )V D$bnd;7X7XXXXX1N0 0 0 X0    X JINNNJNNNN#-	#9VV<L#LLLLL( ( (    C C C C # # # X#&  $E####  [  #'*6	      [" +/e B B B B B [B 
 ^     [< /3(N (N (N (N [(NZA A A A          I I I I I6% % % %,  $ $9 9 9 9 9 9.  $ $/ / / / / /, 8< 
F 
F 
F 
F 
F 
F 
F 
F6 6 6 6 6 (-$	= 	= 	= 	= 	= 	=
 
 
 i((7B 7B 7B )(7Br H-Q -Q -Q^     , m,," " -,"< n--" " .-"( n--" " .-"< o.." " /."" i((. . )(. j)). . *). l++  ,+ m,,  -,S S S S
 
 
 

O O O O7J 7J 7J 7Jr'2 '2 '2 '2R %X_	)! !ND ?66>::D'	'   B o G -X_ 	'" "F #? L ,HO	'! !D "/ K 6 6 6 X6 6 6 6 6rR   rY   Fraiser   r   errorsr4   r@   $tuple[np.ndarray, Tick | Day | None]c                   |dvsJ d}|t          |          }t          j        | |d          \  } }t          | t                    r| j        }| j        t          k    st          | j                  rt          | ||          } d}nt          | j                  rt          | |          \  } }|o| }n\t          | j                  rt          | j        t                    r| j        }| j        } nt!          j        |           }|f|dk    r`|                     t           j                  }|| |k    z                                  }|r$t+          |d||	          \  }	}
t,          |	|<   |	|fS t/          | |pd          } t,          | |<   |                     d
          } d}not3          j        | j        d          r=t7          | j                  s(t9          | j                  }t;          | |d          } d}nt=          d| j         d          |st!          j        |           } nt!          j         | |          } | 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, Day, 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   NrY   )cls_namerf   r  Fr   r   )r   rf   r  zm8[ns]r\   r   zdtype z' cannot be converted to timedelta64[ns]r   m8)"r   r   !ensure_arraylike_for_datetimeliker   rY   rt   r   rY  r%   _objects_to_td64nsr"   _ints_to_td64nsr!   r)   _mask_datare   isnanr   r~  allr   r   r   r   r   r]   r   r   r   r  r6  r%  r#  )r   r   rf   r  r   	copy_mader;  int_data	all_roundrO   _	new_dtypes               rP   r   r   C  s   H &&&&M#D))6d-  JD$ $'' "	 zVtz::!$T&AAA	$*	%	% (V)$T:::i%I	
	#	# #V dj.11 	":D:DD8D>>D {{28,,H!127799I -.5tF  	  $t},,(t|t<<T
yy""	S	)	) 	V!$*-- 	+DJ77I&t95IIIDD TTTTUUU )z$x4(((:?c!!!!:rR   r   rf   tuple[np.ndarray, bool]c                X   d}||nd}| j         t          j        k    r!|                     t          j                  } d}|dk    rNd| d}|                     |          } t          | j                   }|| j         k    rt          | |          } d}n|                     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
    FNr   Tztimedelta64[r   r!  ztimedelta64[ns])r   re   r~  r   r   r   r   )r   rf   r  	dtype_strr  s        rP   r  r    s      I#44DzRX {{28$$	t||*4***	yy##'
33	
""&t9===D I yy*++?rR   rA   c                j    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  )re   r6  object_r   )r   rf   r  rN   rO   s        rP   r  r    s4    @ ZBJ///F!&tFCCCFMrR   r5   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.r\   zdtype 'z,' is invalid, should be np.timedelta64 dtypez;Supported timedelta64 resolutions are 's', 'ms', 'us', 'ns')r&   re   r   r   r   r]   r   )r   msgs     rP   r   r     s    E8 	 oo?5#&& XV5VVVWWW&& XVWWWLrR   )r;   r<   r=   r<   r>   r<   )FNr  )r   r   r  r4   r@   r  )r   )rf   r<   r@   r  )Nr  )r  r4   r@   rA   )r@   r5   )^
__future__r   datetimer   r7  typingr   r   r   numpyre   pandas._libsr   r	   pandas._libs.tslibsr
   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   pandas.compat.numpyr   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.corer+   r,   pandas.core.array_algosr-   pandas.core.arraysr.   r   pandas.core.arrays._rangesr/   pandas.core.commoncorecommonr   pandas.core.ops.commonr0   collections.abcr1   r2   pandas._typingr3   r4   r5   r6   r7   r8   r  r:   r  rW   TimelikeOpsrY   r   r  r  r   r   rR   rP   <module>r     sr   " " " " " "                                                     E D D D D D                     / . . . . . . . . . . . 6 6 6 6 6 6                          
 , + + + + +        ? > > > > > 2 2 2 2 2 2 = = = = = =                   ; ; ; ; ; ; !22222222                !         , OL L L L LS_ L L Lj 	#*	i i i i iX' ' ' ' 'V 5<# # # # #L     rR   