Ë
    *�£j€  ã                  óÀ  — d Z ddlmZ ddlmZ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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) ed«      	 	 d	 	 	 	 	 	 	 dd„«       Z)	 d	 	 	 	 	 d d„Z*	 	 	 d!	 	 	 	 	 d"d„Z+y)#z
timedelta support tools
é    )Úannotations)ÚTYPE_CHECKINGÚAnyÚoverloadN)Úlib)ÚNaTÚNaTType)Ú	TimedeltaÚdisallow_ambiguous_unitÚparse_timedelta_unit)Ú
set_module)Úis_list_like)Ú
ArrowDtype)ÚABCIndexÚ	ABCSeries)Úsequence_to_td64ns)ÚHashable)Ú	timedelta)ÚUnitChoices)Ú	ArrayLikeÚDateTimeErrorChoices)ÚIndexÚSeriesÚTimedeltaIndexc                 ó   — y ©N© ©ÚargÚunitÚerrorss      ú>C:\FundamentalWorkbench\vendor\pandas\core\tools\timedeltas.pyÚto_timedeltar#   5   s   € ð
 ó    c                 ó   — y r   r   r   s      r"   r#   r#   =   s   € ð
 r$   c                 ó   — y r   r   r   s      r"   r#   r#   E   s   € ð
 r$   Úpandasc                ó®  — |�t        |«      }t        |«       |dvrt        d«      ‚| €t        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.

        .. 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'
        * 's' / 'seconds' / 'sec' / 'second'
        * 'ms' / 'milliseconds' / 'millisecond' / 'milli' / 'millis'
        * 'us' / 'microseconds' / 'microsecond' / 'micro' / 'micros'
        * 'ns' / 'nanoseconds' / 'nano' / 'nanos' / 'nanosecond'

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

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

    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[s]', freq=None)
    >>> pd.to_timedelta(np.arange(5), unit="D")
    TimedeltaIndex(['0 days', '1 days', '2 days', '3 days', '4 days'],
                   dtype='timedelta64[s]', freq=None)
    )ÚraiseÚcoercez+errors must be one of 'raise', or 'coerce'.)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   r   Ú
ValueErrorr   Ú
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#   M   s7  € ðD ÐÜ# DÓ)ˆÜ Ô%àÐ(Ñ(ÜÐFÓGÐGà
€{Üˆ
Ü	�CœÔ	#Ü" 3§;¡;°TÀ&ÔIˆØ×Ñ ¨c¯i©i¸c¿h¹hÐÓGÐGÜ	�CœÔ	"Ü  ¨4¸ÀSÇXÁXÔNÐNÜ	�CœŸ™Ô	$¨¯©°Qªô ×#Ñ# CÓ(‰Ü	�cÔ	œw s¨F°AÓ6¸!Ò;Ü  ¨4¸Ô?Ð?Ü	��f˜aÓ	  1Ò	$ÜØPó
ð 	
ô �#”sÔ Ð 0ÜÐTÓUÐUô ,¨C°dÀ6ÔJÐJr$   c                óX   — 	 t        | |«      }|S # t        $ r |dk(  r‚ t        }Y |S w xY w)z)Convert string 'r' to a timedelta object.r)   )r
   r/   r   )Úrr    r!   Úresults       r"   r:   r:   Ò   s@   € ðÜ˜1˜dÓ#ˆð €Møô ò Ø�WÒØä‰à€Mðús   ‚ �)¨)c                óH  — t        | dd«      }t        | t        t        f«      s|€t	        j
                  | t        ¬«      } n!t        |t        «      r|j                  dk(  r| S t        | ||d¬«      d   }ddl
m} || u xs t	        j                  | |«      } ||||¬	«      }|S )
z6Convert a list of objects to a timedelta index object.ÚdtypeN)r@   ÚmF)r    r!   Úcopyr   )r   )r,   rB   )r7   r0   ÚlistÚtupler4   ÚarrayÚobjectr   Úkindr   r'   r   Úmay_share_memory)	r   r    r!   r,   Ú	arg_dtypeÚtd64arrr   rB   Úvalues	            r"   r1   r1   ã   s•   € ô ˜˜W dÓ+€IÜ�#œœe�}Ô%¨Ð):Ü�h‰h�s¤&Ô)‰Ü	�IœzÔ	*¨y¯~©~ÀÒ/DØˆ
ä  ¨4¸ÀUÔKÈAÑN€Gå%à�cˆ>Ò>œR×0Ñ0°°gÓ>€DÙ˜7¨°DÔ9€EØ€Lr$   )..)r   zstr | float | timedeltar    úUnitChoices | Noner!   r   Úreturnr
   )r   r   r    rL   r!   r   rM   r   )r   z(list | tuple | range | ArrayLike | Indexr    rL   r!   r   rM   r   )Nr)   )r   zQstr | int | float | timedelta | list | tuple | range | ArrayLike | Index | Seriesr    rL   r!   r   rM   z3Timedelta | TimedeltaIndex | Series | NaTType | Any)Únsr)   )r    rL   r!   r   rM   zTimedelta | NaTType)Nr)   N)r    rL   r!   r   r,   zHashable | None),Ú__doc__Ú
__future__r   Útypingr   r   r   Únumpyr4   Úpandas._libsr   Úpandas._libs.tslibsr   r	   Úpandas._libs.tslibs.timedeltasr
   r   r   Úpandas.util._decoratorsr   Úpandas.core.dtypes.commonr   Úpandas.core.dtypes.dtypesr   Úpandas.core.dtypes.genericr   r   Úpandas.core.arrays.timedeltasr   Úcollections.abcr   Údatetimer   r   Úpandas._typingr   r   r'   r   r   r   r#   r:   r1   r   r$   r"   Ú<module>r^      sÆ  ðñõ #÷ñ ó å ÷÷ñ õ
 /å 2Ý 0÷õ
 =áÝ(Ý"å:÷÷
ñ ð 
ð  #Ø#&ðØ	 ðà
ðð !ðð ò	ó 
ðð 
ð  #Ø#&ðØ	ðà
ðð !ðð ò	ó 
ðð 
ð  #Ø#&ðØ	1ðà
ðð !ðð ò	ó 
ðñ ˆHÓð  $Ø#*ðAKð	
ðAKð ðAKð !ðAKð 9òAKó ðAKðJ HOðØðØ0Dðàóð&  $Ø#*Ø ð	à
ðð !ðð ô	r$   