
    hjW=                        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dS )*zACode generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.    N)datetime)parsedate_to_datetime)ListOptionalc                   ~    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dS )
BackoffStrategyz+Exponential backoff strategy configuration.initial_intervalmax_intervalexponentmax_elapsed_time	jitter_msNc                 z    ||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   s         d/var/www/app.qaans.com/backend/venv/lib/python3.11/site-packages/google/genai/_gaos/utils/retries.py__init__zBackoffStrategy.__init__&   sK    6  Y]]5666 0(  0"    N)	__name__
__module____qualname____doc__int__annotations__floatr   r    r   r   r   r      s         55OOO} $(!# !#!# !# 	!#
 !# 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dS )
RetryConfigzRuntime retry configuration.strategybackoffretry_connection_errorsmax_retriesstatus_codes_overrideNc                 L    || _         || _        || _        || _        || _        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#   s         r   r   zRetryConfig.__init__S   s0    $ !'>$&%:"""r   )NN)r   r   r   r   strr   r   r   boolr   r   r   r   r   r   r   r   J   s         &&MMMo&&&&!!!!##DI.... &*59; ;; /*; "&	;
 c];  (S	2; ; ; ; ; ;r   r   c                   L    e Zd ZU eed<   ee         ed<   dedee         fdZdS )Retriesconfigstatus_codesc                 0    || _         |j        p|| _        d S r   )r)   r#   r*   )r   r)   r*   s      r   r   zRetries.__init__p   s    "8HLr   N)r   r   r   r   r   r   r%   r   r   r   r   r(   r(   l   s`         s)I{ I$s) I I I I I Ir   r(   c                   P    e Zd ZU ej        ed<   ee         ed<   dej        fdZdS )TemporaryErrorresponseretry_afterc                 <    || _         t          |          | _        d S 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   sQ         n#? ? ? ? ? ? ?r   r-   c                   &    e Zd ZU eed<   defdZdS )PermanentErrorinnerc                     || _         d S 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                    | j                             d          }|sdS 	 t          |          }t          |dz            S # t          $ r Y nw xY w	 t          |          }|t          j        |j                  z
  	                                }t          t          d|          dz            S # t          t          f$ r Y nw xY wdS )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<< t*++Wt^$$$   *+=>>
hl:+<===LLNNSE]]T)***	"    4s$    A 
AAAB/ /CCc                     | j                             d          }|sd S 	 t          |          }|dk    rt          |          S n# t          t
          f$ r Y nw xY wd S )Nzretry-after-msr   )r<   r=   r   r>   OverflowErrorr   )r.   retry_after_ms_headermillisecondss      r   _parse_retry_after_ms_headerrL      s    $,001ABB  t2331&&& :&    4s   #A AAF	exceptionr	   r
   r   retriesattempt_count_backoffr   c                 J   t          | t                    r| j        | j        dk    r
| j        dz  S |dz  ||z  z  }||t          j        d|dz            z  }n7|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.
    Nr   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4	 &V]__t3341%%%ulT)***r   c                     j         j        dv rdt          dt          j        f fd}j         j        pt          dddd          }j         j        d	k    r4t          ||j        |j	        |j
        j         j        pd
|j                  S t          ||j        |j	        |j
        |j        |j                  S   d
          S )Nr    attempt-count-backoffattemptr9   c                    	  |           }d}	j         D ]i}d|                                v r5t          |d                   }|j        dz  }||cxk    r	|dz   k     rn Jd}Mt          |          }|j        |k    rd}j|rt	          |          ng# t
          j        t
          j        f$ r"}	j        j	        r t          |          |d }~wt          $ r  t          $ r}t          |          |d }~ww xY w|S 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   sK   ?d7mm$#0 0 0Ddjjll**%(a\\
'*'<%FFFF
QFFFFF+/L&)$ii?k99+/L .(---.&(>? ? ? ?>9 $Y//Y>!    ? ? ?$Y//Y>? Js$   BB C7.CC7"C22C7  `        ?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F 	  	  	  	  	  	  	  	  	D .(UOCW,U,U>"&===3($ */a!   "$ $
 
 	
 477Nr   c                    K   j         j        dv rdt          dt          j        f fd}j         j        pt          dddd          }j         j        d	k    r:t          ||j        |j	        |j
        j         j        pd
|j                   d {V S t          ||j        |j	        |j
        |j        |j                   d {V S   d
           d {V S )NrY   r[   r9   c                   K   	  |            d {V }d}	j         D ]i}d|                                v r5t          |d                   }|j        dz  }||cxk    r	|dz   k     rn Jd}Mt          |          }|j        |k    rd}j|rt	          |          ng# t
          j        t
          j        f$ r"}	j        j	        r t          |          |d }~wt          $ r  t          $ r}t          |          |d }~ww xY w|S r]   r`   re   s
           r   rm   zretry_async.<locals>.do_request  sa     ? DMM))))))$#0 0 0Ddjjll**%(a\\
'*'<%FFFF
QFFFFF+/L&)$ii?k99+/L .(---.&(>? ? ? ?>9 $Y//Y>!    ? ? ?$Y//Y>? Js$   BB C?6CC?*C::C?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     sD     ~"FFF 	c  	en  	  	  	  	  	  	  	D .(UOCW,U,U>"&===?($ */a!         .$ $
 
 
 
 
 
 
 
 	
 a======r   rn   ro   rp   rq   c           	         t          t          j                    dz            }d}	 	  | |          S # t          $ r}|j        d }~wt          $ r}t          t          j                    dz            }	|	|z
  |k    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   T)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  sK    $)++$%%EG	4==  	" 	" 	"/! 	 	 		d*++CU{---i88 .$-------)^44 ;!=i>P!Q!Q!-,:I)' #  E JuqLGGGGGG+	s.   
3 
D	AD	ADD	A!DD	c           
         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	4==  	" 	" 	"/! 	 	 	+%%i88 .$-------)^44 ;!=i>P!Q!Q!-,:I)' &*#  E JuqLGGGGGG+	s*   
 
C!C!B<CA"B<<Cc           	      6  K   t          t          j                    dz            }d}	 	  | |           d {V S # t          $ r}|j        d }~wt          $ r}t          t          j                    dz            }	|	|z
  |k    r"t          |t                    r|j        cY d }~S  t          |t                    rt          |j                  }
|
|
|_	        t          ||||||          }t          j        |           d {V  |dz  }Y d }~nd }~ww xY wr|   )r>   r}   r5   r6   r8   rR   r-   r.   rL   r/   rW   asynciorV   r~   s               r   ry   ry     ss      $)++$%%EG	g&&&&&&& 	" 	" 	"/! 	 	 		d*++CU{---i88 .$-------)^44 ;!=i>P!Q!Q!-,:I)' #  E -&&&&&&&&&qLGGGGGG+	s/   ; 
DADAD D&A'DDc           
        K   d}	 	  | |           d {V 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 {V  |dz  }Y d }~nd }~ww xY wr   )r5   r6   r8   rR   r-   r.   rL   r/   rW   r   rV   r   s
             r   rx   rx     sA      G	g&&&&&&& 	" 	" 	"/! 	 	 	+%%i88 .$-------)^44 ;!=i>P!Q!Q!-,:I)' &*#  E -&&&&&&&&&qLGGGGGG+	s*    
C)C!C
CA(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      s  " H G          - - - - - - ! ! ! ! ! ! ! ! *# *# *# *# *# *# *# *#Z; ; ; ; ; ; ; ;DI I I I I I I I? ? ? ? ?Y ? ? ?    Y    8C=    45> hsm    * #(#%+ %+%+%+ %+ 	%+
 %+  %+ }%+ %+ %+ %+ %+P9 9 9 9 9x9W 9 9 9 9| % % % %T $ $ $ $R % % % %T $ $ $ $ $ $r   