
    ZiP                     ~    d dl mZ d dlZd dlZd dlZ ej        d          ZdZdej        fdZ	dej        de
fdZdS )	    )ListNz^([0-9]{1,5}(h|m|s|ms)){1,4}$l   X#Oreturnc                     t                               |           s"t          d                    |                     t	          j        |           S )a5  
    Parse GEP-2257 Duration format to a datetime.timedelta object.

    The GEP-2257 Duration format is a restricted form of the input to the Go
    time.ParseDuration function; specifically, it must match the regex
    "^([0-9]{1,5}(h|m|s|ms)){1,4}$".

    See https://gateway-api.sigs.k8s.io/geps/gep-2257/ for more details.

    Input: duration: string
    Returns: datetime.timedelta

    Raises: ValueError on invalid or unknown input

    Examples:
    >>> parse_duration("1h")
    datetime.timedelta(seconds=3600)
    >>> parse_duration("1m")
    datetime.timedelta(seconds=60)
    >>> parse_duration("1s")
    datetime.timedelta(seconds=1)
    >>> parse_duration("1ms")
    datetime.timedelta(microseconds=1000)
    >>> parse_duration("1h1m1s")
    datetime.timedelta(seconds=3661)
    >>> parse_duration("10s30m1h")
    datetime.timedelta(seconds=5410)

    Units are always required.
    >>> parse_duration("1")
    Traceback (most recent call last):
        ...
    ValueError: Invalid duration format: 1

    Floating-point and negative durations are not valid.
    >>> parse_duration("1.5m")
    Traceback (most recent call last):
        ...
    ValueError: Invalid duration format: 1.5m
    >>> parse_duration("-1m")
    Traceback (most recent call last):
        ...
    ValueError: Invalid duration format: -1m
    zInvalid duration format: {})
reDurationmatch
ValueErrorformat
durationpyfrom_str)durations    T/root/projects/butler/venv/lib/python3.11/site-packages/kubernetes/utils/duration.pyparse_durationr      sJ    \ H%% I6==hGGHHHx(((    deltac                 (   | t          j        d          k    rdS | t          j        d          k     r"t          d                    |                     | t          j        t                    k    r"t          d                    |                     | j        }|dz  dk    r"t          d                    |                     t          |                                           }g }|dz  }|dk    r |                    | d	           ||dz  z  }|d
z  }|dk    r |                    | d           ||d
z  z  }|dk    r|                    | d           |dk    r|                    |dz   d           d	                    |          S )a  
    Format a datetime.timedelta object to GEP-2257 Duration format.

    The GEP-2257 Duration format is a restricted form of the input to the Go
    time.ParseDuration function; specifically, it must match the regex
    "^([0-9]{1,5}(h|m|s|ms)){1,4}$".

    See https://gateway-api.sigs.k8s.io/geps/gep-2257/ for more details.

    Input: duration: datetime.timedelta

    Returns: string

    Raises: ValueError if the timedelta given cannot be expressed as a
    GEP-2257 Duration.

    Examples:
    >>> format_duration(datetime.timedelta(seconds=3600))
    '1h'
    >>> format_duration(datetime.timedelta(seconds=60))
    '1m'
    >>> format_duration(datetime.timedelta(seconds=1))
    '1s'
    >>> format_duration(datetime.timedelta(microseconds=1000))
    '1ms'
    >>> format_duration(datetime.timedelta(seconds=5410))
    '1h30m10s'

    The zero duration is always "0s".
    >>> format_duration(datetime.timedelta(0))
    '0s'

    Sub-millisecond precision is not allowed.
    >>> format_duration(datetime.timedelta(microseconds=100))
    Traceback (most recent call last):
        ...
    ValueError: Cannot express sub-millisecond precision in GEP-2257: 0:00:00.000100

    Negative durations are not allowed.
    >>> format_duration(datetime.timedelta(seconds=-1))
    Traceback (most recent call last):
        ...
    ValueError: Cannot express negative durations in GEP-2257: -1 day, 23:59:59
    r   0sz1Cannot express negative durations in GEP-2257: {})millisecondszFCannot express durations longer than 99999h59m59s999ms in GEP-2257: {}i  z8Cannot express sub-millisecond precision in GEP-2257: {}i  h<   msms )
datetime	timedeltar   r	   maxDuration_msmicrosecondsinttotal_secondsappendjoin)r   delta_ussecsoutputhoursminutess         r   format_durationr'   S   s   ^ "1%%%%t x!!$$$$LSSTYZZ[[[x!~>>>>>T[[\abbd d 	d !H4AFVE]]
 
 	
 u""$$%%DFDLEqyykkk"""bjG{{mmm$$$"axxjjj!!!!||T)---...776??r   )typingr   r   rer
   compiler   r   r   r   strr'    r   r   <module>r-      s           				    
 RZ899
 C1) 2 1) 1) 1) 1)h[8- [# [ [ [ [ [ [r   