o
    ҷh,"                     @  sX  d Z ddlmZ ddlmZmZ ddl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 dd
lmZ ddlmZmZ ddlmZ ertddlmZ ddlmZ 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dZ(e		d-d/ddZ(e		d-d0d!dZ(		"d1d2d%dZ(	"d3d4d'd(Z)		"	d5d6d+d,Z*dS )7z
timedelta support tools
    )annotations)TYPE_CHECKINGoverloadN)lib)NaTNaTType)	Timedeltaparse_timedelta_unit)find_stack_level)is_list_like)
ArrowDtype)ABCIndex	ABCSeries)sequence_to_td64ns)Hashable)	timedelta)UnitChoices)	ArrayLikeDateTimeErrorChoices)IndexSeriesTimedeltaIndex.argstr | float | timedeltaunitUnitChoices | Noneerrorsr   returnr   c                 C     d S N r   r   r   r    r    O/var/www/html/venv/lib/python3.10/site-packages/pandas/core/tools/timedeltas.pyto_timedelta3      r#   r   c                 C  r   r   r    r!   r    r    r"   r#   <   r$   (list | tuple | range | ArrayLike | Indexr   c                 C  r   r   r    r!   r    r    r"   r#   E   r$   raiseQstr | int | float | timedelta | list | tuple | range | ArrayLike | Index | Series#Timedelta | TimedeltaIndex | Seriesc                 C  s0  |dv rt jd| dtt d |durt|}|dvr!td|dv r)td	| du r/| S t| trFt| j	||d
}| j
|| j| jdS t| trTt| ||| jdS t| tjre| jdkret| } nt| rxt| dddkrxt| ||d
S t| dddkrtdt| tr|durtdt| ||d
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.

        .. versionchanged:: 2.0
            Strings with units 'M', 'Y' and 'y' do not represent
            unambiguous timedelta values and will raise an exception.

    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'

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

        .. deprecated:: 2.1.0
            Units 'T' and 'L' are deprecated and will be removed in a future version.

    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)
    >   LTltzUnit 'z8' is deprecated and will be removed in a future version.)
stacklevelN)ignorer&   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   r4   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)warningswarnFutureWarningr
   r	   
ValueError
isinstancer   _convert_listlike_values_constructorr3   r4   r   npndarrayr5   r   item_from_zerodimr   getattr	TypeErrorstr _coerce_scalar_to_timedelta_type)r   r   r   valuesr    r    r"   r#   N   s@   e


nsc                 C  sD   zt | |}W |S  ty!   |dkr |dkr|  Y S t}Y |S w )z)Convert string 'r' to a timedelta object.r&   r.   )r   r:   r   )rr   r   resultr    r    r"   rE      s   
rE   r4   Hashable | Nonec                 C  s   t | dd}t| ttfs|du r"t| dst| } tj| td} nt|tr.|j	dkr.| S zt
| ||ddd }W n tyJ   |d	krI|  Y S  w dd
lm} ||d|d}|S )z6Convert a list of objects to a timedelta index object.dtypeN	__array__)rK   mF)r   r   copyr   r.   )r   rG   )r   r4   )rB   r;   listtuplehasattrr?   arrayobjectr   kindr   r:   pandasr   )r   r   r   r4   	arg_dtypetd64arrr   valuer    r    r"   r<      s"   
	r<   )..)r   r   r   r   r   r   r   r   )r   r   r   r   r   r   r   r   )r   r%   r   r   r   r   r   r   )Nr&   )r   r'   r   r   r   r   r   r(   )rG   r&   )r   r   r   r   )Nr&   N)r   r   r   r   r4   rJ   )+__doc__
__future__r   typingr   r   r7   numpyr?   pandas._libsr   pandas._libs.tslibsr   r   pandas._libs.tslibs.timedeltasr   r	   pandas.util._exceptionsr
   pandas.core.dtypes.commonr   pandas.core.dtypes.dtypesr   pandas.core.dtypes.genericr   r   pandas.core.arrays.timedeltasr   collections.abcr   datetimer   r   pandas._typingr   r   rU   r   r   r   r#   rE   r<   r    r    r    r"   <module>   sR     