
    `Vg&                    ^   d Z 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 ddlmZmZ ddlmZmZ dd	lmZ dd
lmZmZ ddlmZ erddlmZ ddlmZmZ ddlmZmZm Z  e	 	 d	 	 	 	 	 	 	 dd       Z!e	 	 d	 	 	 	 	 	 	 dd       Z!e	 	 d	 	 	 	 	 	 	 dd       Z!	 	 d	 	 	 	 	 	 	 ddZ!ddZ"ddZ#y)z
timedelta support tools
    )annotations)	timedelta)TYPE_CHECKINGoverloadN)lib)NaTNaTType)	Timedeltaparse_timedelta_unit)is_list_like)ABCIndex	ABCSeries)sequence_to_td64ns)UnitChoices)	ArrayLikeDateTimeErrorChoices)IndexSeriesTimedeltaIndexc                     y N arguniterrorss      ]/var/www/html/hubwallet-dev/venv/lib/python3.12/site-packages/pandas/core/tools/timedeltas.pyto_timedeltar   .            c                     y r   r   r   s      r   r   r   7   r   r    c                     y r   r   r   s      r   r   r   @   r   r    c                   |t        |      }|dvrt        d      |dv rt        d      | | S t        | t              r@t	        | j
                  ||      }| j                  || j                  | j                        S t        | t              rt	        | ||| j                        S t        | t        j                        r%| j                  dk(  rt        j                  |       } nDt        |       rt!        | d	d
      d
k(  rt	        | ||      S t!        | d	d
      d
kD  rt#        d      t        | t$              r|t        d      t'        | ||      S )a  
    Convert argument to timedelta.

    Timedeltas are absolute differences in times, expressed in difference
    units (e.g. days, hours, minutes, seconds). This method converts
    an argument from a recognized timedelta format / value into
    a Timedelta type.

    Parameters
    ----------
    arg : str, timedelta, list-like or Series
        The data to be converted to timedelta.

        .. deprecated:: 1.2
            Strings with units 'M', 'Y' and 'y' do not represent
            unambiguous timedelta values and will be removed in a future version

    unit : str, optional
        Denotes the unit of the arg for numeric `arg`. Defaults to ``"ns"``.

        Possible values:

        * 'W'
        * 'D' / 'days' / 'day'
        * 'hours' / 'hour' / 'hr' / 'h'
        * 'm' / 'minute' / 'min' / 'minutes' / 'T'
        * 'S' / 'seconds' / 'sec' / 'second'
        * 'ms' / 'milliseconds' / 'millisecond' / 'milli' / 'millis' / 'L'
        * 'us' / 'microseconds' / 'microsecond' / 'micro' / 'micros' / 'U'
        * 'ns' / 'nanoseconds' / 'nano' / 'nanos' / 'nanosecond' / 'N'

        .. versionchanged:: 1.1.0

           Must not be specified when `arg` context strings and
           ``errors="raise"``.

    errors : {'ignore', 'raise', 'coerce'}, default 'raise'
        - If 'raise', then invalid parsing will raise an exception.
        - If 'coerce', then invalid parsing will be set as NaT.
        - If 'ignore', then invalid parsing will return the input.

    Returns
    -------
    timedelta
        If parsing succeeded.
        Return type depends on input:

        - list-like: TimedeltaIndex of timedelta64 dtype
        - Series: Series of timedelta64 dtype
        - scalar: Timedelta

    See Also
    --------
    DataFrame.astype : Cast argument to a specified dtype.
    to_datetime : Convert argument to datetime.
    convert_dtypes : Convert dtypes.

    Notes
    -----
    If the precision is higher than nanoseconds, the precision of the duration is
    truncated to nanoseconds for string inputs.

    Examples
    --------
    Parsing a single string to a Timedelta:

    >>> pd.to_timedelta('1 days 06:05:01.00003')
    Timedelta('1 days 06:05:01.000030')
    >>> pd.to_timedelta('15.5us')
    Timedelta('0 days 00:00:00.000015500')

    Parsing a list or array of strings:

    >>> pd.to_timedelta(['1 days 06:05:01.00003', '15.5us', 'nan'])
    TimedeltaIndex(['1 days 06:05:01.000030', '0 days 00:00:00.000015500', NaT],
                   dtype='timedelta64[ns]', freq=None)

    Converting numbers by specifying the `unit` keyword argument:

    >>> pd.to_timedelta(np.arange(5), unit='s')
    TimedeltaIndex(['0 days 00:00:00', '0 days 00:00:01', '0 days 00:00:02',
                    '0 days 00:00:03', '0 days 00:00:04'],
                   dtype='timedelta64[ns]', freq=None)
    >>> pd.to_timedelta(np.arange(5), unit='d')
    TimedeltaIndex(['0 days', '1 days', '2 days', '3 days', '4 days'],
                   dtype='timedelta64[ns]', freq=None)
    )ignoreraisecoercez5errors must be one of 'ignore', 'raise', or 'coerce'.>   MYyzqUnits 'M', 'Y', and 'y' are no longer supported, as they do not represent unambiguous timedelta values durations.)r   r   )indexname)r   r   r+   r   ndim   zBarg must be a string, timedelta, list, tuple, 1-d array, or Seriesz9unit must not be specified if the input is/contains a str)r   
ValueError
isinstancer   _convert_listlike_values_constructorr*   r+   r   npndarrayr,   r   item_from_zerodimr   getattr	TypeErrorstr _coerce_scalar_to_timedelta_type)r   r   r   valuess       r   r   r   I   sL   J #D)22PQQ@
 	

 {
	C	#"3;;T&IciichhGG	C	" 4SXXNN	C	$Q ##C(	c	wsFA6!; 4??	fa	 1	$P
 	
 #s 0TUU ,Cd6JJr    c                j    	 t        | |      }|S # t        $ r |dk(  r |dk(  r| cY S t        }Y |S w xY w)z)Convert string 'r' to a timedelta object.r%   r$   )r
   r.   r   )rr   r   results       r   r9   r9      sO    	1d# M  WxH Ms    222c                   t        | t        t        f      st        | d      s$t	        j
                  t        |       t              } 	 t        | ||d      d   }ddl	m
}  ||d|	      }|S # t        $ r |dk(  r| cY S  w xY w)
z6Convert a list of objects to a timedelta index object.dtype)r?   F)r   r   copyr   r$   )r   ns)r   r+   )r/   listtuplehasattrr3   arrayobjectr   r.   pandasr   )r   r   r   r+   td64arrr   values          r   r0   r0      s    #e}%WS'-B
 hhtCy/$StFOPQR &7D9EL!  XJ s   A- -B?B)..)r   zstr | float | timedeltar   UnitChoices | Noner   r   returnr
   )r   r   r   rJ   r   r   rK   r   )r   z(list | tuple | range | ArrayLike | Indexr   rJ   r   r   rK   r   )Nr%   )r   zQstr | int | float | timedelta | list | tuple | range | ArrayLike | Index | Seriesr   rJ   r   r   rK   z#Timedelta | TimedeltaIndex | Series)rA   r%   )Nr%   N)$__doc__
__future__r   datetimer   typingr   r   numpyr3   pandas._libsr   pandas._libs.tslibsr   r	   pandas._libs.tslibs.timedeltasr
   r   pandas.core.dtypes.commonr   pandas.core.dtypes.genericr   r   pandas.core.arrays.timedeltasr   r   pandas._typingr   r   rG   r   r   r   r   r9   r0   r   r    r   <module>rX      sW   # 
  
 3
 =:
  
  ##&	 
 ! 	 
 
  ##&	
 ! 	 
 
  ##&	1
 ! 	 
&  $#*JK	
JK JK !JK )JKZ$r    