o
    pkj#>                     @   s  d Z ddlZddlZddlZddlmZ ddlmZ ddlmZm	Z	 ddl
Z
zddlZW n ey7   dZY nw edu rBe
je
jfn	e
je
jejejfZG dd dZG dd	 d	ZG d
d dZG dd deZG dd deZde
jde	e fddZde
jde	e fddZ		d0dedededededede	e defddZdefd d!Zdefd"d#Z	$	%	&	'	d1d(d)Z	$	%	&		d2d*d+Z 	$	%	&	'	d1d,d-Z!	$	%	&		d2d.d/Z"dS )3zACode generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.    N)datetime)parsedate_to_datetime)ListOptionalc                   @   sd   e Zd ZU dZeed< eed< eed< eed< ee ed< 	d
dededededee f
dd	ZdS )BackoffStrategyz+Exponential backoff strategy configuration.initial_intervalmax_intervalexponentmax_elapsed_time	jitter_msNc                 C   s:   |dur|dk rt d|| _|| _|| _|| _|| _dS )a  Initialize a backoff strategy.

        Args:
            initial_interval: Initial retry interval in milliseconds.
            max_interval: Maximum retry interval in milliseconds.
            exponent: Base of the exponential backoff; the interval grows as
                ``initial_interval * exponent ** retries``.
            max_elapsed_time: Maximum total elapsed time in milliseconds. Only used
                by the ``"backoff"`` strategy; ignored by ``"attempt-count-backoff"``.
            jitter_ms: Additive jitter bound in milliseconds. When set, adds a random
                value in ``[0, jitter_ms]`` to each computed backoff interval (default -25%
                for attempt-count, +[0, 1s] for backoff).

        Note:
            When a response carries a ``Retry-After`` or ``retry-after-ms`` header,
            that delay is used as-is and the sleep-shaping parameters
            (``initial_interval``, ``max_interval``, ``exponent``, ``jitter_ms``) are
            ignored for that attempt.
        Nr   zjitter_ms must be >= 0)
ValueErrorr   r   r	   r
   r   )selfr   r   r	   r
   r    r   ^/home/djax/ivt_ai_plugin/venv/lib/python3.10/site-packages/google/genai/_gaos/utils/retries.py__init__1   s   
zBackoffStrategy.__init__N)	__name__
__module____qualname____doc__int__annotations__floatr   r   r   r   r   r   r   (   s&   
 r   c                   @   s~   e Zd ZU dZeed< ee ed< eed< ee	 ed< ee
e  ed< 		d
dedee dedee	 dee
e  f
dd	ZdS )RetryConfigzRuntime retry configuration.strategybackoffretry_connection_errorsmax_retriesstatus_codes_overrideNc                 C   s"   || _ || _|| _|| _|| _dS )aE  Initialize a retry configuration.

        Args:
            strategy: Retry strategy: ``"none"``, ``"backoff"`` or ``"attempt-count-backoff"``.
            backoff: Backoff parameters; falls back to a built-in default when ``None``.
            retry_connection_errors: Whether to also retry transport-level connection errors.
            max_retries: Maximum number of retries for the ``"attempt-count-backoff"`` strategy.
            status_codes_override: Retryable HTTP status codes that take precedence over the
                per-operation defaults when non-empty.
        N)r   r   r   r   r   )r   r   r   r   r   r   r   r   r   r   ^   s
   
zRetryConfig.__init__)NN)r   r   r   r   strr   r   r   boolr   r   r   r   r   r   r   r   U   s(   
 
r   c                   @   s8   e Zd ZU eed< ee ed< dedee fddZdS )Retriesconfigstatus_codesc                 C   s   || _ |jp|| _d S r   )r"   r   r#   )r   r"   r#   r   r   r   r   {   s   zRetries.__init__N)r   r   r   r   r   r   r   r   r   r   r   r   r!   w   s   
 r!   c                   @   s4   e Zd ZU ejed< ee ed< dejfddZdS )TemporaryErrorresponseretry_afterc                 C   s   || _ t|| _d S r   )r%   _parse_retry_after_headerr&   )r   r%   r   r   r   r      s   zTemporaryError.__init__N)	r   r   r   httpxResponser   r   r   r   r   r   r   r   r$      s   
 
r$   c                   @   s$   e Zd ZU eed< defddZdS )PermanentErrorinnerc                 C   s
   || _ d S r   )r+   )r   r+   r   r   r   r      s   
zPermanentError.__init__N)r   r   r   	Exceptionr   r   r   r   r   r   r*      s   
 r*   r%   returnc              	   C   s   | j d}|s
dS zt|}t|d W S  ty   Y nw zt|}|t|j 	 }tt
d|d W S  ttfyC   Y dS w )zParse Retry-After header from response.

    Returns:
        Retry interval in milliseconds, or None if header is missing or invalid.
    zretry-afterN  r   )headersgetr   roundr   r   r   nowtzinfototal_secondsmax	TypeError)r%   retry_after_headerseconds
retry_datedeltar   r   r   r'      s"   r'   c              	   C   sN   | j d}|s
d S zt|}|dkrt|W S W d S  ttfy&   Y d S w )Nzretry-after-msr   )r/   r0   r   r1   OverflowErrorr   )r%   retry_after_ms_headermillisecondsr   r   r   _parse_retry_after_ms_header   s   
r>   F	exceptionr   r   r	   retriesattempt_count_backoffr   c                 C   s   t | tr| jdur| jdkr| jd S |d ||  }|dur+|td|d 7 }n|r8|dt d   }n|tdd7 }t||d S )aE  Get sleep interval for retry with exponential backoff.

    Args:
        exception: The exception that triggered the retry.
        initial_interval: Initial retry interval in milliseconds.
        max_interval: Maximum retry interval in milliseconds.
        exponent: Base for exponential backoff calculation.
        retries: Current retry attempt count.
        attempt_count_backoff: Use multiplicative jitter when ``jitter_ms`` is unset.
        jitter_ms: Additive jitter bound in ms; see ``BackoffStrategy.jitter_ms``.

    Returns:
        Sleep interval in seconds.
    Nr   r.      g      ?)
isinstancer$   r&   randomuniformmin)r?   r   r   r	   r@   rA   r   sleepr   r   r   _get_sleep_interval   s   


rH   c                    s   j jdv rCdtdtjf fdd}j jptdddd	}j jd
kr5t||j|j	|j
j jp1d|jS t||j|j	|j
|j|jS  dS )Nr   attempt-count-backoffattemptr-   c              
      s   zB | }d}j D ]/}d| v r.t|d }|jd }||  kr)|d k r-n q
d}q
t|}|j|kr9d}q
|r@t|W |S  tyX } z
jjrO t||d }~w ty_     t	yo } zt||d }~ww NFXr   d   rB   T
r#   upperr   status_coder$   _RETRY_EXCEPTIONSr"   r   r*   r,   rK   resshould_retrycode
code_rangestatus_majorparsed_coder?   funcr@   r   r   
do_request   s:   




zretry.<locals>.do_request  `        ?6 rJ   r   )r"   r   r   r(   r)   r   r    retry_with_attempt_count_backoffr   r   r	   r   r   retry_with_backoffr
   r[   r@   r\   r   r   rZ   r   retry   s*   "
		rd   c                    s   j jdv rJdtdtjf fdd}j jptdddd	}j jd
kr9t||j|j	|j
j jp2d|jI d H S t||j|j	|j
|j|jI d H S  dI d H S )NrI   rK   r-   c              
      s   zE | I d H }d}j D ]/}d| v r2t|d }|jd }||  kr-|d k r1n qd}qt|}|j|kr=d}q|rDt|W |S  ty\ } z
jjrS t||d }~w tyc     t	ys } zt||d }~ww rL   rO   rS   rZ   r   r   r\      s<   




zretry_async.<locals>.do_requestr]   r^   r_   r`   rJ   r   )r"   r   r   r(   r)   r   r   &retry_with_attempt_count_backoff_asyncr   r   r	   r   r   retry_with_backoff_asyncr
   rc   r   rZ   r   retry_async  s,   "

	
	rg   r]   r^   r_   r`   c                 C   s   t t d }d}	 z| |W S  ty } z|jd }~w tyq } zGt t d }	|	| |krCt|trB|jW  Y d }~S  t|trTt|j}
|
d urT|
|_	t
||||||d}t| |d7 }W Y d }~nd }~ww qNr.   r   T)r   rB   )r1   timer*   r+   r,   rC   r$   r%   r>   r&   rH   rG   r[   r   r   r	   r
   r   startr@   r?   r2   retry_after_msrG   r   r   r   rb   Y  s>   




rb   c           
      C   s   d}	 z| |W S  t y } z|jd }~w ty` } z>||kr1t|tr0|jW  Y d }~S  t|trBt|j}|d urB||_t|||||d|d}	t	
|	 |d7 }W Y d }~nd }~ww qNr   T)rA   r   rB   )r*   r+   r,   rC   r$   r%   r>   r&   rH   ri   rG   
r[   r   r   r	   r   r   r@   r?   rl   rG   r   r   r   ra     s<   




	ra   c                    s   t t d }d}	 z| |I d H W S  ty# } z|jd }~w tyx } zJt t d }	|	| |krGt|trF|jW  Y d }~S  t|trXt|j}
|
d urX|
|_	t
||||||d}t|I d H  |d7 }W Y d }~nd }~ww qrh   )r1   ri   r*   r+   r,   rC   r$   r%   r>   r&   rH   asynciorG   rj   r   r   r   rf     s@   


rf   c           
         s   d}	 z| |I d H W S  t y } z|jd }~w tyg } zA||kr5t|tr4|jW  Y d }~S  t|trFt|j}|d urF||_t|||||d|d}	t	
|	I d H  |d7 }W Y d }~nd }~ww qrm   )r*   r+   r,   rC   r$   r%   r>   r&   rH   ro   rG   rn   r   r   r   re     s>   


	re   )FN)r]   r^   r_   r`   N)r]   r^   r_   r   N)#r   ro   rD   ri   r   email.utilsr   typingr   r   r(   httpx2ImportErrorNetworkErrorTimeoutExceptionrR   r   r   r!   r,   r$   r*   r)   r   r'   r>   r   r    rH   rd   rg   rb   ra   rf   re   r   r   r   r   <module>   s   -"		
(<>
*
)
*