
    UEjW=                        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
 G d d      Z G d d	      Z G d
 d      Z G d de      Z G d de      Zde
j"                  de	e   fdZde
j"                  de	e   fdZ	 	 d"dedededededede	e   defdZdefdZdefdZ	 	 	 	 	 d#dZ	 	 	 	 	 d$dZ	 	 	 	 	 d#d Z	 	 	 	 	 d$d!Zy)%zACode generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.    N)datetime)parsedate_to_datetime)ListOptionalc                   p    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Zy)
BackoffStrategyz+Exponential backoff strategy configuration.initial_intervalmax_intervalexponentmax_elapsed_time	jitter_msNc                 n    ||dk  rt        d      || _        || _        || _        || _        || _        y)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   s         V/var/www/html/qr/venv/lib/python3.12/site-packages/google/genai/_gaos/utils/retries.py__init__zBackoffStrategy.__init__&   sB    6  Y]566 0(  0"    N)	__name__
__module____qualname____doc__int__annotations__floatr   r    r   r   r   r      sd    5O} $(!#!# !# 	!#
 !# C=!#r   r   c                       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Zy)
RetryConfigzRuntime retry configuration.strategybackoffretry_connection_errorsmax_retriesstatus_codes_overrideNc                 J    || _         || _        || _        || _        || _        y)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#   s         r   r   zRetryConfig.__init__S   s*    $ !'>$&%:"r   )NN)r   r   r   r   strr   r   r   boolr   r   r   r   r   r   r   r   J   s    &Mo&&!!##DI.. &*59;; /*; "&	;
 c];  (S	2;r   r   c                   >    e Zd ZU eed<   ee   ed<   dedee   fdZy)Retriesconfigstatus_codesc                 <    || _         |j                  xs || _        y r   )r)   r#   r*   )r   r)   r*   s      r   r   zRetries.__init__p   s    "88HLr   N)r   r   r   r   r   r   r%   r   r   r   r   r(   r(   l   s,    s)I{ I$s) Ir   r(   c                   \    e Zd ZU ej                  ed<   ee   ed<   dej                  fdZy)TemporaryErrorresponseretry_afterc                 2    || _         t        |      | _        y r   )r.   _parse_retry_after_headerr/   )r   r.   s     r   r   zTemporaryError.__init__y   s     4X>r   N)	r   r   r   httpxResponser   r   r   r   r   r   r   r-   r-   u   s&    nn#? ?r   r-   c                   $    e Zd ZU eed<   defdZy)PermanentErrorinnerc                     || _         y r   )r6   )r   r6   s     r   r   zPermanentError.__init__   s	    
r   N)r   r   r   	Exceptionr   r   r   r   r   r5   r5   ~   s    i r   r5   r.   returnc                 b   | j                   j                  d      }|sy	 t        |      }t        |dz        S # t        $ r Y nw xY w	 t        |      }|t        j                  |j                        z
  j                         }t        t        d|      dz        S # t        t        f$ r Y yw xY 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deltas        r   r1   r1      s     "))--m<*+Wt^$$ *+=>
hll:+<+<==LLNSE]T)**	" s"   9 	AA	AB B.-B.c                     | j                   j                  d      }|sy 	 t        |      }|dk\  rt        |      S 	 y # t        t
        f$ r Y y w xY w)Nzretry-after-msr   )r<   r=   r   r>   OverflowErrorr   )r.   retry_after_ms_headermillisecondss      r   _parse_retry_after_ms_headerrL      si    $,,001AB 231&& 
  :& s   = AA	exceptionr	   r
   r   retriesattempt_count_backoffr   c                 Z   t        | t              r*| j                  | j                  dkD  r| j                  dz  S |dz  ||z  z  }||t        j                  d|dz        z  }n9|r|dt        j                         dz  z
  z  }n|t        j                  dd      z  }t        ||dz        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.
    r   r;      g      ?)
isinstancer-   r/   randomuniformmin)rM   r	   r
   r   rN   rO   r   sleeps           r   _get_sleep_intervalrW      s    0 	9n-!!-!!A%$$t++$'(99E9t#344	V]]_t3341%%ulT)**r   c                 "    j                   j                  dv rdt        dt        j                  f fd}j                   j
                  xs t        dddd      }j                   j                  d	k(  rPt        ||j                  |j                  |j                  j                   j                  xs d
|j                        S t        ||j                  |j                  |j                  |j                  |j                        S   d
      S )Nr    attempt-count-backoffattemptr9   c                    	  |       }d}	j                   D ]c  }d|j                         v r2t        |d         }|j                  dz  }||cxk  r	|dz   k  sAn Dd}Gt        |      }|j                  |k(  sbd}e |rt	        |      	 |S # t
        j                  t
        j                  f$ r(}	j                  j                  r t        |      |d }~wt        $ r  t        $ r}t        |      |d }~ww xY wNFXr   d   rQ   Tr*   upperr   status_coder-   r2   NetworkErrorTimeoutExceptionr)   r!   r5   r8   
r[   resshould_retrycode
code_rangestatus_majorparsed_coderM   funcrN   s
           r   
do_requestzretry.<locals>.do_request   s   ?7m$#00 0Ddjjl*%(a\
'*'<%F
QF+/L&)$i??k9+/L0  (--   J &&(>(>? ?>>99$Y/Y>!  ?$Y/Y>?s0   AB  B ;B #C;2#CC;*C66C;  `        ?6 rZ   r   )r)   r   r   r2   r3   r    r    retry_with_attempt_count_backoffr	   r
   r   r"   r   retry_with_backoffr   rl   rN   rm   r    s   ``  r   retryru      s    ~~"FF 	  	  	D ..((UOCW,U>>""&==3(($$  **/a!!  "$$  $$
 	
 7Nr   c                 f   K   j                   j                  dv rdt        dt        j                  f fd}j                   j
                  xs t        dddd      }j                   j                  d	k(  rXt        ||j                  |j                  |j                  j                   j                  xs d
|j                         d {   S t        ||j                  |j                  |j                  |j                  |j                         d {   S   d
       d {   S 7 ^7 7 w)NrY   r[   r9   c                   K   	  |        d {   }d}	j                   D ]c  }d|j                         v r2t        |d         }|j                  dz  }||cxk  r	|dz   k  sAn Dd}Gt        |      }|j                  |k(  sbd}e |rt	        |      	 |S 7 # t
        j                  t
        j                  f$ r(}	j                  j                  r t        |      |d }~wt        $ r  t        $ r}t        |      |d }~ww xY wwr]   r`   re   s
           r   rm   zretry_async.<locals>.do_request  s    ? M)$#00 0Ddjjl*%(a\
'*'<%F
QF+/L&)$i??k9+/L0  (--   J; *& &&(>(>? ?>>99$Y/Y>!  ?$Y/Y>?sQ   D
B BAB $ B B D
B #D>#C!!D6DDD
rn   ro   rp   rq   rZ   r   )r)   r   r   r2   r3   r    r   &retry_with_attempt_count_backoff_asyncr	   r
   r   r"   r   retry_with_backoff_asyncr   rt   s   ``  r   retry_asyncrz     s    ~~"FF 	c  	enn  	D ..((UOCW,U>>""&==?(($$  **/a!!   .$$  $$
 
 	
 a=%
 s7   CD1D+A	D1D-D1&D/'D1-D1/D1c           	         t        t        j                         dz        }d}	 	  | |      S # t        $ r}|j                  d }~wt        $ r}t        t        j                         dz        }	|	|z
  |kD  r"t        |t              r|j                  cY d }~S  t        |t              rt        |j                        }
|
|
|_	        t        ||||||      }t        j                  |       |dz  }Y d }~nd }~ww xY w۩Nr;   r   )r   rQ   )r>   timer5   r6   r8   rR   r-   r.   rL   r/   rW   rV   rl   r	   r
   r   r   r   startrN   rM   r?   retry_after_msrV   s               r   rs   rs   N  s     $))+$%EG
	=  	"//! 			d*+CU{--i8$---)^4!=i>P>P!Q!-,:I)' #E JJuqLG+	 s.   - 	C;AC;AC6C;AC66C;c           
      z   d}	 	  | |      S # t         $ r}|j                  d }~wt        $ r}||k\  r"t        |t              r|j
                  cY d }~S  t        |t              rt        |j
                        }|||_        t        |||||d|      }	t        j                  |	       |dz  }Y d }~nd }~ww xY wNr   T)rO   r   rQ   )r5   r6   r8   rR   r-   r.   rL   r/   rW   r}   rV   
rl   r	   r
   r   r"   r   rN   rM   r   rV   s
             r   rr   rr   v  s     G
	=  	"//! 	+%i8$---)^4!=i>P>P!Q!-,:I)' &*#E JJuqLG+	 s*    	B9"B9 B4B9AB44B9c           	      ,  K   t        t        j                         dz        }d}	 	  | |       d {   S 7 # t        $ r}|j                  d }~wt        $ r}t        t        j                         dz        }	|	|z
  |kD  r"t        |t              r|j                  cY d }~S  t        |t              rt        |j                        }
|
|
|_	        t        ||||||      }t        j                  |       d {  7   |dz  }Y d }~nd }~ww xY wwr|   )r>   r}   r5   r6   r8   rR   r-   r.   rL   r/   rW   asynciorV   r~   s               r   ry   ry     s      $))+$%EG
	g&&& 	"//! 			d*+CU{--i8$---)^4!=i>P>P!Q!-,:I)' #E --&&&qLG+	 sc   $D9 79 D9 	DADADDD#AD;C><
DDDDc           
        K   d}	 	  | |       d {   S 7 # t         $ r}|j                  d }~wt        $ r}||k\  r"t        |t              r|j
                  cY d }~S  t        |t              rt        |j
                        }|||_        t        |||||d|      }	t        j                  |	       d {  7   |dz  }Y d }~nd }~ww xY w̭wr   )r5   r6   r8   rR   r-   r.   rL   r/   rW   r   rV   r   s
             r   rx   rx     s      G
	g&&& 	"//! 	+%i8$---)^4!=i>P>P!Q!-,:I)' &*#E --&&&qLG+	 s^   C  C 	C.C C	CC AC	9B<:
C	C	CC)FN)rn   ro   rp   rq   N)rn   ro   rp   r   N)r   r   rS   r}   r   email.utilsr   typingr   r   r2   r   r   r(   r8   r-   r5   r3   r   r1   rL   r   r&   rW   ru   rz   rs   rr   ry   rx   r   r   r   <module>r      sc  " H     - ! *# *#Z; ;DI I?Y ?Y  8C= 45>> hsm * #(#%+%+%+ %+ 	%+
 %+  %+ }%+ %+P9 9x9W 9| %T $R %T $r   