
    Eg"                    v   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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r$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&m'Z'm(Z( e	 	 d*d+d            Z)e	 	 d*d,d            Z)e	 	 d*d-d             Z)	 	 d.d/d$Z)	 d0d1d&Z*	 	 	 d2d3d)Z+dS )4z
timedelta support tools
    )annotations)TYPE_CHECKINGoverloadN)lib)NaTNaTType)	Timedeltadisallow_ambiguous_unit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                    d S N r   r   r   s      Q/var/www/sysmax/venv/lib/python3.11/site-packages/pandas/core/tools/timedeltas.pyto_timedeltar%   4   	     C    r   c                    d S r!   r"   r#   s      r$   r%   r%   =   r&   r'   (list | tuple | range | ArrayLike | Indexr   c                    d S r!   r"   r#   s      r$   r%   r%   F   r&   r'   raiseQstr | int | float | timedelta | list | tuple | range | ArrayLike | Index | Series#Timedelta | TimedeltaIndex | Seriesc                Z   |t          |          }t          |           |dvrt          d          |dk    r(t          j        dt
          t                                 | | S t          | t                    r9t          | j
        ||          }|                     || j        | j                  S t          | t                    rt          | ||| j        	          S t          | t          j                  r | j        d
k    rt%          j        |           } nZt)          |           r't+          | dd          dk    rt          | ||          S t+          | dd          dk    rt-          d          t          | t.                    r|t          d          t1          | ||          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' / 'H'
        * 'm' / 'minute' / 'min' / 'minutes' / 'T'
        * 's' / 'seconds' / 'sec' / 'second' / 'S'
        * 'ms' / 'milliseconds' / 'millisecond' / 'milli' / 'millis' / 'L'
        * 'us' / 'microseconds' / 'microsecond' / 'micro' / 'micros' / 'U'
        * 'ns' / 'nanoseconds' / 'nano' / 'nanos' / 'nanosecond' / 'N'

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

        .. deprecated:: 2.2.0
            Units 'H', 'T', 'S', 'L', 'U' and 'N' are deprecated and will be removed
            in a future version. Please use 'h', 'min', 's', 'ms', 'us', and 'ns'
            instead of 'H', 'T', 'S', 'L', 'U' and 'N'.

    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)
    N)ignorer+   coercez5errors must be one of 'ignore', 'raise', or 'coerce'.r/   zerrors='ignore' is deprecated and will raise in a future version. Use to_timedelta without passing `errors` and catch exceptions explicitly instead)
stacklevel)r   r   )indexname)r   r   r3   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   r
   
ValueErrorwarningswarnFutureWarningr   
isinstancer   _convert_listlike_values_constructorr2   r3   r   npndarrayr4   r   item_from_zerodimr   getattr	TypeErrorstr _coerce_scalar_to_timedelta_type)r   r   r   valuess       r$   r%   r%   O   s   N #D))%%%222PQQQ! '))	
 	
 	
 	
 {
	C	#	# 
"3;T&IIIcichGGG	C	"	" 
 4SXNNNN	C	$	$ 
Q #C((	c		 
wsFA66!;; 4????	fa	 	 1	$	$P
 
 	
 #s V 0TUUU ,Cd6JJJJr'   nsc                z    	 t          | |          }n(# t          $ r |dk    r |dk    r| cY S t          }Y nw xY w|S )z)Convert string 'r' to a timedelta object.r+   r/   )r	   r6   r   )rr   r   results       r$   rD   rD      sg    	1d##   WXHHH  Ms    888r3   Hashable | Nonec                   t          | dd          }t          | t          t          f          s|;t	          | d          st          |           } t          j        | t                    } n"t          |t                    r|j	        dk    r| S 	 t          | ||d          d         }n# t          $ r |d	k    r| cY S  w xY wdd
lm}  |||          }|S )z6Convert a list of objects to a timedelta index object.dtypeN	__array__)rL   mF)r   r   copyr   r/   )r   )r3   )rA   r:   listtuplehasattrr>   arrayobjectr   kindr   r6   pandasr   )r   r   r   r3   	arg_dtypetd64arrr   values           r$   r;   r;      s    Wd++I#e}%% 	):
 sK(( 	s))Chs&)))	Iz	*	* y~/D/D
$StFOOOPQR   XJJJ  &%%%%%N7...ELs   B( (B><B>)..)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-   )rF   r+   )r   r   r   r   )Nr+   N)r   r   r   r   r3   rJ   ),__doc__
__future__r   typingr   r   r7   numpyr>   pandas._libsr   pandas._libs.tslibsr   r   pandas._libs.tslibs.timedeltasr	   r
   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   rV   r   r   r   r%   rD   r;   r"   r'   r$   <module>ri      s    # " " " " "                                  
 5 4 4 4 4 4 2 2 2 2 2 2 0 0 0 0 0 0       
 = < < < < < ((((((""""""::::::       
          
  ##&    
 
  ##&    
 
  ##&    
&  $#*PK PK PK PK PKh HO    ,  $#* 	% % % % % % %r'   