
    `Vg3                       d dl mZ d dlm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 d d	lmZmZmZ d d
l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,m-Z-m.Z.m/Z/m0Z0m1Z1m2Z2 d dl3m4Z4 d dl5m6Z6 d dl7m8Z9 d dl:m;Z; d dl<m=c m>Z? d dl@mAZA erd dlBmCZC ddZD G d de9j                        ZF	 d	 	 	 ddZGddZHd dZId!dZJy)"    )annotations)	timedelta)TYPE_CHECKINGcastN)libtslibs)	
BaseOffsetNaTNaTTypeTick	Timedeltaastype_overflowsafeiNaTperiods_per_second	to_offset)precision_from_unit)get_timedelta_field)array_to_timedelta64ints_to_pytimedeltaparse_timedelta_unit)DtypeObjNpDtypenpt)function)validate_endpoints)astype_td64_unit_conversion)	TD64NS_DTYPEis_dtype_equalis_float_dtypeis_integer_dtypeis_object_dtype	is_scalaris_string_dtypeis_timedelta64_dtypepandas_dtype)isna)nanops)datetimelike)generate_regular_range)unpack_zerodim_and_defer	DataFramec                J    dfd}| |_         d| d|_        t        |      S )Nc                    | j                   }t        || j                        }| j                  r| j	                  |d d      }|S )Nresofloat64)
fill_valueconvert)asi8r   _reso_hasna_maybe_mask_results)selfvaluesresultaliass      ^/var/www/html/hubwallet-dev/venv/lib/python3.12/site-packages/pandas/core/arrays/timedeltas.pyfz_field_accessor.<locals>.fB   sH    $VUD;;--4 . F     
)return
np.ndarray)__name____doc__property)namer;   	docstringr=   s    `  r<   _field_accessorrG   A   s+     AJYKr"AIA;r>   c                      e Zd ZU dZdZ ej                  dd      Zeej                  e	fZ
eZdZedLd       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z   ez   Zded<   g dZded<   dMdZedNd       ZdZeZed        Zedef	 	 	 	 	 dO fd       Zeedd	 	 	 dPd       Z eede!jD                  df	 	 	 dPd       Z#edQd       Z$dRdSdZ%dTdZ&dRdUdZ'dVdWd Z(d! Z)ddddddd"d#	 	 	 	 	 	 	 	 	 dXd$Z*dddd%ddd&	 	 	 	 	 	 	 	 	 dYd'Z+dRdZd(Z,ddd)	 d[d*Z-d+ Z. e/d,      d\d-       Z0e0Z1 e/d.      d/        Z2 e/d0      d1        Z3 e/d2      d3        Z4 e/d4      d5        Z5 e/d6      d7        Z6 e/d8      d9        Z7 e/d:      d;        Z8 e/d<      d=        Z9d\d>Z:d\d?Z;d\d@Z<d]dAZ=d[dBZ> e?dCdCdD      Z@ e?dEdEdF      ZA e?dGdGdH      ZB e?dIdIdJ      ZCed^dK       ZD xZES )_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
    ----------
    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
    timedeltaarrayr
   ns)r   timedelta64c                    t         S Nr   r8   s    r<   _scalar_typezTimedeltaArray._scalar_typev   s    r>   i  z	list[str]
_other_ops	_bool_opsfreq_object_ops)dayssecondsmicrosecondsnanoseconds
_field_ops_datetimelike_ops)to_pytimedeltatotal_secondsroundfloorceil_datetimelike_methodsc                    |j                  d      }|t        j                  k(  rt        S t        j                  || j
                        S )Ni8r/   )viewr
   valuer   _from_value_and_resor5   )r8   xys      r<   	_box_funczTimedeltaArray._box_func   s6    FF4L		>J--adjjAAr>   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dtyperP   s    r<   rl   zTimedeltaArray.dtype   s    " }}"""r>   Nc                F    t        |j                         t        |      }|S rN   )_validate_td64_dtyperl   )clsr9   rl   s      r<   _validate_dtypezTimedeltaArray._validate_dtype   s     	V\\*$U+r>   c                2   t        |t        j                        r|j                  dk(  sJ t	        j
                  |      rJ t        |t        j                        sJ t        |             ||j                  k(  sJ t        | %  ||      }||_
        |S )Nm)r9   rl   )
isinstancenprl   kindr   is_unitlessndarraytypesuper_simple_new_freq)ro   r9   rT   rl   r:   	__class__s        r<   rz   zTimedeltaArray._simple_new   s    
 %*uzzS/@@@%%e,,,&"**-;tF|;-$$$$F%$@r>   Frl   copyc                   |rt        |       t        ||d       \  }}t        j                  d |d      \  }}| j	                  ||j
                  |      S )Nr~   unitFrl   rT   )rn   sequence_to_td64nsdtlvalidate_inferred_freqrz   rl   )ro   datarl   r~   inferred_freqrT   _s          r<   _from_sequencezTimedeltaArray._from_sequence   sS      '0DtLm,,T=%Hat4::DAAr>   c                   |rt        |       |dvsJ |d u }|t        j                  ur|nd }t        j                  |      \  }}t        |||      \  }}t        j                  |||      \  }}|rd }| j                  ||j                  |      }	||| j                  |	|       |	S |rt        |	j                        |	_        |	S )NYrh   Mr   r   )rn   r   
no_defaultr   maybe_infer_freqr   r   rz   rl   _validate_frequencyr   r   r{   )
ro   r   rl   r~   rT   r   explicit_none
freq_inferr   r:   s
             r<   _from_sequence_not_strictz(TimedeltaArray._from_sequence_not_strict   s      '?***3>>1tt//5j0DtLm55dM:VjDTZZdC T%5##FD1   %V%9%9:FLr>   c                   t        j                  |      }| t        d |||fD              rt        d      t	        j
                  ||||      dk7  rt        d      |t        |      }|t        |      }t        |      \  }}|t        ||||      }n:t        j                  |j                  |j                  |      j                  d      }|s|dd  }|s|d d }|j                  d      }	| j                  |	|	j                  |	      S )
Nc              3  $   K   | ]  }|d u  
 y wrN    ).0rg   s     r<   	<genexpr>z1TimedeltaArray._generate_range.<locals>.<genexpr>   s     IaT	Is   z1Must provide freq argument if no data is supplied   zVOf the four parameters: start, end, periods, and freq, exactly three must be specifiedrc      m8[ns]r   )r   validate_periodsany
ValueErrorcomcount_not_noner   r   r)   rt   linspacere   astyperd   rz   rl   )
ro   startendperiodsrT   closedleft_closedright_closedindex
td64valuess
             r<   _generate_rangezTimedeltaArray._generate_range   s    &&w/<CIGUC3HIIPQQeS'48A=< 
 e$E?C.C$6v$>!\*5#wEEKKSYY@GGME!"IE#2JEZZ)
z1A1AMMr>   c                    t        || j                        s|t        urt        d      | j	                  ||       t        j                  |j                  d      S )Nz'value' should be a Timedelta.)setitemrK   )rs   rQ   r
   r   _check_compatible_withrt   rL   re   )r8   re   r   s      r<   _unbox_scalarzTimedeltaArray._unbox_scalar  sM    %!2!23S8H=>>##E7#;~~ekk400r>   c                    t        |      S rN   rO   )r8   re   s     r<   _scalar_from_stringz"TimedeltaArray._scalar_from_string  s    r>   c                     y rN   r   )r8   otherr   s      r<   r   z%TimedeltaArray._check_compatible_with   s    r>   Tc                    t        |      }|j                  dk(  rt        | j                  ||      S t        j
                  j                  | ||      S )Nrr   r~   )r%   ru   r   rk   r   DatetimeLikeArrayMixinr   )r8   rl   r~   s      r<   r   zTimedeltaArray.astype'  sK    
 U#::.t}}e$OO))00u40HHr>   c              #  4  K   | j                   dkD  r!t        t        |             D ]	  }| |     y | j                  }t        |       }d}||z  dz   }t        |      D ]3  }||z  }t	        |dz   |z  |      }t        ||| d      }|E d {    5 y 7 w)Nr   i'  Tbox)ndimrangelenrk   minr   )	r8   ir   length	chunksizechunksstart_iend_i	converteds	            r<   __iter__zTimedeltaArray.__iter__3  s     99q=3t9% 1g ==DYFI	)Q.F6] %i-QUi/8/WU0CN	$$$	% %s   BBBBr   )axisrl   outkeepdimsinitialskipna	min_countc                   t        j                  d||||d       t        j                  | j                  |||      }| j                  ||      S )Nr   )rl   r   r   r   )r   r   r   )nvvalidate_sumr'   nansumrk   _wrap_reduction_result)	r8   r   rl   r   r   r   r   r   r:   s	            r<   sumzTimedeltaArray.sumF  sP     	%gV	
 MMVy
 **488r>   r   )r   rl   r   ddofr   r   c                   t        j                  d|||dd       t        j                  | j                  |||      }|| j
                  dk(  r| j                  |      S | j                  |      S )Nr   )rl   r   r   std)fname)r   r   r   r   )r   validate_stat_ddof_funcr'   nanstdrk   r   ri   _from_backing_data)r8   r   rl   r   r   r   r   r:   s           r<   r   zTimedeltaArray.stdZ  si     	""%B%	
 t}}4TR<499>>>&))&&v..r>   c                "    ddl m}  || d      S )Nr   get_format_timedelta64Tr   )pandas.io.formats.formatr   )r8   boxedr   s      r<   
_formatterzTimedeltaArray._formatterp  s    C%d55r>   )na_repdate_formatc                   ddl m}  || j                  |      } t        j                  |dd      | j                        S )Nr   r   r   )r   r   rk   rt   
frompyfunc)r8   r   r   kwargsr   	formatters         r<   _format_native_typesz#TimedeltaArray._format_native_typesu  s:     	D +4==&A	 .r}}Y1-dmm<<r>   c                    t        |t              rJ t        dt        |      j                   dt        |       j                         )Nzcannot add the type z to a )rs   r   	TypeErrorrx   rB   r8   r   s     r<   _add_offsetzTimedeltaArray._add_offset  sE    eT***"4;#7#7"8tDz?R?R>ST
 	
r>   __mul__c                   t        |      r^| j                  |z  }d }| j                  t        |      s| j                  |z  }t	        |       j                  ||j                  |      S t        |d      st        j                  |      }t        |      t        |       k7  r t        |j                        st        d      t        |j                        rq| j                  }t        t        |             D cg c]  }||   ||   z   }}t        j                  |      }t	        |       j                  ||j                        S | j                  |z  }t	        |       j                  ||j                        S c c}w )Nr   rl   z$Cannot multiply with unequal lengthsrl   )r"   rk   rT   r&   rx   rz   rl   hasattrrt   arrayr   r$   r   r!   r   )r8   r   r:   rT   arrns         r<   r   zTimedeltaArray.__mul__  s<   U]]U*FDyy$T%[yy5(:))&4)PPug&HHUOEu:T"+?+L CDD5;;' --C16s4y1ABAc!fuQx'BFBXXf%F:))&)EE &Dz%%fFLL%AA Cs   9E=__truediv__c                   t        || j                        r|t        |      }t        d|      t        u rPt        j                  | j                  t
        j                        }|j                  t
        j                         |S | j                  |z  S t        j                  |      rh| j                  |z  }d }| j                  $| j                  j                  |z  }t!        |      }t#        |       j%                  ||j&                  |      S t)        |d      st        j*                  |      }t-        |      t-        |       k7  rt/        d      t1        |j&                        r| j                  |z  S t3        |j&                        r| j5                         }|j5                         }t7        t-        |            D cg c]  }||   ||   z   }}t        j*                  |      j9                  | j                        }t        j:                  |d      }|dk(  rE|j5                         }	t#        |       j=                  |	      j9                  |j                        }|S |d	k(  r|j?                  t@              }|S |d
k(  r| t
        j                  z  }|S | j                  |z  }t#        |       j%                  ||j&                        S c c}w )NTimedelta | NaTTyper   r   rl   *Cannot divide vectors with unequal lengthsFr   r   floatingdatetime)!rs   _recognized_scalarsr   r   r
   rt   emptyshaper1   fillnanrk   r   r"   rT   deltar   rx   rz   rl   r   r   r   r   r$   r!   ravelr   reshapeinfer_dtyper   r   float)
r8   r   r:   rT   sravoravr   result_listinferredflats
             r<   r   zTimedeltaArray.__truediv__  sJ    eT556e$E )51S8$**BJJ?BFF# ==5((]]5!]]U*FDyy$yy. :))&4)PPug&HHUOEu:T"IJJ!%++.==5((U[[) ::<D;;=D6;CI6FG47T!W,GKGXXk*224::>F ve<H;&||~d2248@@N M Z'u- M Z' M ]]U*F:))&)EE1 Hs   K__rtruediv__c                   t        || j                        r|t        |      }t        d|      t        u rPt        j                  | j                  t
        j                        }|j                  t
        j                         |S || j                  z  S t        j                  |      r7t        dt        |      j                    dt        |       j                          t#        |d      st        j$                  |      }t'        |      t'        |       k7  rt)        d      t+        |j,                        r|| j                  z  S t/        |j,                        r?t1        t'        |             D cg c]  }||   | |   z   }}t        j$                  |      S t        d|j,                   dt        |       j                          c c}w )Nr   r   Cannot divide  by rl   r   z	 data by )rs   r   r   r   r
   rt   r   r   r1   r   r   rk   r   r"   r   rx   rB   r   r   r   r   r$   rl   r!   r   )r8   r   r:   r   r  s        r<   r  zTimedeltaArray.__rtruediv__  sw    eT556e$E )51S8$**BJJ?BFF# 4==((]]5! e!5!5 6d4:;N;N:OP  ug&HHUOEu:T"IJJ!%++.4==((U[[) 8=SY7GH!58d1g-HKH88K((  YtDz7J7J6KL 	 Is   1G__floordiv__c                   t        |      rt        || j                        rt        |      }t	        d|      t
        u rPt        j                  | j                  t        j                        }|j                  t        j                         |S |j                  | j                        S | j                  |z  }d }| j                  9| j                  |z  }|j                  dk(  r| j                  j                  dk7  rd } t!        |       ||      S t#        |d      st        j$                  |      }t'        |      t'        |       k7  rt)        d      t+        |j,                        r t!        |       |      }| j.                  |j.                  z  }| j0                  |j0                  z  }|j3                         rD|j5                  t        j                        }t        j6                  ||t        j                         |S t9        |j,                        r| j;                         }|j;                         }t=        t'        |            D cg c]  }||   ||   z   }}t        j>                  |      }	tA        jB                  |	d      }
|	jE                  | j                        }|
d	k(  rtG        |      \  }} t!        |       |      S |
d
k(  r| t        j                  z  S |S tI        |j,                        stK        |j,                        r | j                  |z  } t!        |       |      S tM        |dt!        |      jN                        }tQ        d| dt!        |       jN                         c c}w )Nr   r   r   rT   rl   "Cannot divide with unequal lengthsFr   r   r   r
  r  ))r"   rs   r   r   r   r
   rt   r   r   r1   r   r   __rfloordiv__rk   rT   nanosrx   r   r   r   r   r$   rl   r4   _isnanr   r   putmaskr!   r   r   asarrayr   r  r   r   r    r   getattrrB   r   )r8   r   r:   rT   maskr  r  r   res_listresult_flatr  r   rl   s                r<   r  zTimedeltaArray.__floordiv__  s    U%!9!9:!%( -u5<XXdjj

CFKK'!M **4==99 ]]e+FDyy$yy5(::?tyy!';  D4:f400ug&HHUOEu:T"ABB!%++.DJu%E YY%**,F;;-Dxxzrzz2

640MU[[) ::<D;;=D49#d)4DEqQ47*EHE**X.K{5AH ((4F;&.v6	!tDz&)):% bff}$Mekk*nU[[.I]]e+F4:f%% E7DK,@,@AEnUG4T
8K8K7LMNN- Fs   M7r  c                   t        |      rt        || j                        rt        |      }t	        d|      t
        u rPt        j                  | j                  t        j                        }|j                  t        j                         |S |j                  | j                        S t        dt        |      j                    dt        |       j                          t#        |d      st        j$                  |      }t'        |      t'        |       k7  rt)        d      t+        |j,                        r t        |       |      }|j.                  | j.                  z  }| j0                  |j0                  z  }|j3                         rD|j5                  t        j                        }t        j6                  ||t        j                         |S t9        |j,                        rAt;        t'        |             D cg c]  }||   | |   z   }}t        j$                  |      }|S t=        |dt        |      j                         }t        d| dt        |       j                          c c}w )Nr   r   r
  r  rl   r  )r"   rs   r   r   r   r
   rt   r   r   r1   r   r   r  rk   r   rx   rB   r   r   r   r   r$   rl   r4   r  r   r   r  r!   r   r  )r8   r   r:   r  r   r  rl   s          r<   r  zTimedeltaArray.__rfloordiv__i  s    U%!9!9:!%( -u5<XXdjj

CFKK'!M ))$--88 e!5!5 6d4:;N;N:OP  ug&HHUOEu:T"ABB!%++.DJu%E ZZ499,F;;-Dxxzrzz2

640MU[[)8=c$i8HI158tAw.IKIXXk*FM E7DK,@,@AEnUG4T
8K8K7LMNN Js   =I,__mod__c                Z    t        || j                        rt        |      }| | |z  |z  z
  S rN   rs   r   r   r   s     r<   r  zTimedeltaArray.__mod__  s2     eT556e$Etu}---r>   __rmod__c                Z    t        || j                        rt        |      }||| z  | z  z
  S rN   r  r   s     r<   r  zTimedeltaArray.__rmod__  s2     eT556e$E---r>   
__divmod__c                f    t        || j                        rt        |      }| |z  }| ||z  z
  }||fS rN   r  r8   r   res1res2s       r<   r  zTimedeltaArray.__divmod__  s?     eT556e$Eu}dUl"Tzr>   __rdivmod__c                f    t        || j                        rt        |      }|| z  }||| z  z
  }||fS rN   r  r!  s       r<   r$  zTimedeltaArray.__rdivmod__  s?     eT556e$E}td{"Tzr>   c                    | j                   ) t        |       | j                   | j                          S  t        |       | j                         S Nr  )rT   rx   rk   rP   s    r<   __neg__zTimedeltaArray.__neg__  sB    99 4:t}}nDII:>>tDz4==.))r>   c                l     t        |       | j                  j                         | j                        S r'  )rx   rk   r~   rT   rP   s    r<   __pos__zTimedeltaArray.__pos__  s&    tDz$--,,.TYY??r>   c                ^     t        |       t        j                  | j                              S rN   )rx   rt   absrk   rP   s    r<   __abs__zTimedeltaArray.__abs__  s     tDz"&&/00r>   c                l    t        | j                        }| j                  | j                  |z  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
        -------
        seconds : [ndarray, Float64Index, Series]
            When the calling object is a TimedeltaArray, the return type
            is ndarray.  When the calling object is a TimedeltaIndex,
            the return type is a Float64Index. 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()
        Float64Index([0.0, 86400.0, 172800.0, 259200.0, 345600.0],
                     dtype='float64')
        N)r2   )r   r5   r7   r4   )r8   ppss     r<   r]   zTimedeltaArray.total_seconds  s1    n !,''		CD'IIr>   c                ,    t        | j                        S )z
        Return an ndarray of datetime.timedelta objects.

        Returns
        -------
        timedeltas : ndarray[object]
        )r   rk   rP   s    r<   r\   zTimedeltaArray.to_pytimedelta  s     #4==11r>   rV   z Number of days for each element.rW   z>Number of seconds (>= 0 and less than 1 day) for each element.rX   zFNumber of microseconds (>= 0 and less than 1 second) for each element.rY   zJNumber of nanoseconds (>= 0 and less than 1 microsecond) for each element.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
        r   r+   )rV   hoursminutesrW   millisecondsrX   rY   c                l    t        |       rt        j                  gt              z  S | j                  S rN   )r&   rt   r   r   
components)rg   columnss    r<   r=   z$TimedeltaArray.components.<locals>.f9  s)    7FF8c'l22||#r>   c                    | j                   S rN   )r6  )rg   s    r<   r=   z$TimedeltaArray.components.<locals>.f@  s    ||#r>   )r7  int64)pandasr,   r6   r   )r8   r,   hasnansr=   rg   r:   r7  s         @r<   r6  zTimedeltaArray.components  s_     	%
 ++$$ $/QAaD/A]]7+F 0s   A)r@   ztype[Timedelta])rg   np.timedelta64r@   r   )r@   znp.dtype)r9   rA   rT   zBaseOffset | Noner@   rI   )r~   boolr@   rI   rN   )F)r   r=  r@   r<  )r@   r   )r   r=  r@   None)T)r~   r=  )
r   
int | Nonerl   NpDtype | Noner   r=  r   r=  r   int)
r   r?  rl   r@  r   rA  r   r=  r   r=  )r   r=  )r@   znpt.NDArray[np.object_])r@   rI   )r@   znpt.NDArray[np.float64])r@   r,   )FrB   
__module____qualname__rC   _typrt   rL   _internal_fill_valuer   r   r   r$   _is_recognized_dtype_infer_matchesrD   rQ   __array_priority__rR   __annotations__rS   rU   rZ   r[   ra   ri   rl   r{   r   _default_dtypeclassmethodrp   rz   r   r   r   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*  r-  r]   r\   rG   rV   rW   rX   rY   r6  __classcell__)r|   s   @r<   rI   rI   Q   s   < D)2>>%6$bnnd;/1N  J	Iy$XK%NJ	N#-#;i#GyG(9 B # #& E!N  ;?|'8	  (u	B04	B		B 	B  ^^" 	" 
" "H N NH1 
I%,   $9 9 	9 9 9 9.   $/ / 	/ / / /,6 4	=	 	=
 i(B )B< Hm,CF -CFJ n-) .)V n-JO .JOX o.-O /-O^ i(. ). j). *. l+ , m, -*
@18Jt2 66+MNDHG
 #PL
 "TK & &r>   rI   c                   |dvsJ d}|t        |      }t        j                  | |d      \  } }t        | t              r| j
                  }t        | j                        st        | j                        rt        | ||      } d}n>t        | j                        rt        | |      \  } }|xr | }nt        | j                        rt        j                  |       }t        |xs d      \  }}| j!                  t        j"                        }	| |	z
  }
|rt        j$                  |
|      }
|	|z  |
|z  j!                  t        j"                        z   j'                  d	      } t(        | |<   d}nUt+        | j                        r'| j                  t,        k7  r-t/        | t,        
      } d}nt1        d| j                   d      t        j2                  | |      } | 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   NrI   )cls_namer   errorsF)r   rK   timedelta64[ns]r   dtype ' cannot be converted to timedelta64[ns]r   r   )r   r   !ensure_arraylike_for_datetimelikers   rI   rT   r!   rl   r#   _objects_to_td64nsr    ints_to_td64nsr   rt   isnanr   r   r9  r^   rd   r   r$   r   r   r   r   )r   r~   r   rQ  r   	copy_mader  rr   pbasefracs              r<   r   r   M  s   B &&&M#D)66d-JD$ $'		 tzz"odjj&A!$T&A	$**	%(D9i%I	

	# xx~"4<401{{288$d{88D!$DqD1H,,RXX66<<=NOT
	djj	)::%&t<@DD &,STUU88Dt$D::!'4'!r>   c                   d}||nd}| j                   t        j                  k7  r!| j                  t        j                        } d}|dk7  r.d| d}| j	                  |      } t        | t              } 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
    FrK   Tztimedelta64[]r   rR  )rl   rt   r9  r   rd   r   r   )r   r   rY  	dtype_strs       r<   rW  rW    s      I#4DzzRXX {{288$	t|"4&*	yy#"4|< 	
 ? yy*+?r>   c                    t        j                  | t         j                  d      }t        |||      }|j	                  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.
    Fr}   rP  rR  )rt   r   object_r   rd   )r   r   rQ  r9   r:   s        r<   rV  rV    s8    < XXd"**59F!&tFCF;;())r>   c                    t        |       } t        | t        j                  d            rd}t	        |      t        | t
              st	        d|  d      | S )NrL   zhPassing in 'timedelta' dtype with no precision is not allowed. Please pass in 'timedelta64[ns]' instead.rS  rT  )r%   r   rt   rl   r   r   )rl   msgs     r<   rn   rn     sY    EeRXXm458 	 o%.6%(OPQQLr>   )rE   strr;   rd  rF   rd  )FNraise)r~   r=  r@   ztuple[np.ndarray, Tick | None])rK   )Nre  )r@   r   )K
__future__r   r   r   typingr   r   numpyrt   pandas._libsr   r   pandas._libs.tslibsr	   r
   r   r   r   r   r   r   r   pandas._libs.tslibs.conversionr   pandas._libs.tslibs.fieldsr   pandas._libs.tslibs.timedeltasr   r   r   pandas._typingr   r   r   pandas.compat.numpyr   r   pandas.util._validatorsr   pandas.core.dtypes.astyper   pandas.core.dtypes.commonr   r   r   r    r!   r"   r#   r$   r%   pandas.core.dtypes.missingr&   pandas.corer'   pandas.core.arraysr(   r   pandas.core.arrays._rangesr)   pandas.core.commoncorecommonr   pandas.core.ops.commonr*   r:  r,   rG   TimelikeOpsrI   r   rW  rV  rn   r   r>   r<   <module>r|     s    " 
 
 
 
 ? : 
 
 / 6 A
 
 
 ,  2 =     ;  uS__ uz 18TT#Tn%P!*Hr>   