
    R-j              	          d Z ddlZddlmZ ddlZddlmZ ddlZ	 ddlZddl	m
Z ddlmZ ddlmZ dZdd
lmZ ddlZddlZddlmZ ddlmZ ddlmZ ej8                  j;                  ed      ZdZ ej@                  d	      d        Z!efdee"   fdZ#de"fdZ$d Z%d Z&d Z'd Z(d Z)d Z*dNdZ+d Z,d  Z- ej\                  d!dd"d#d#d$d%g&      Z/d' Z0d( Z1d) Z2d* Z3d+ Z4d, Z5d- Z6d. Z7d/ Z8d0 Z9d1 Z:d2 Z;d3 Z<dOd4e"d5e=fd6Z>eej~                  j                  ej                  d7d	8      d9               ZBeej~                  j                  ej                  d7d	8      d:               ZCeej~                  j                  ej                  d7d	8      d;               ZDeej~                  j                  ej                  d7d	8      d<               ZEeej~                  j                  ej                  d7d	8      d=               ZFeej~                  j                  ej                  d7d	8      d>               ZGeej~                  j                  ej                  d7d	8      d?               ZHd@ ZIdA ZJdB ZKdC ZLdD ZMdE ZNdF ZOdG ZPeej~                  j                  ej                  d7d	8      dH               ZQeej~                  j                  ej                  d7d	8      dI               ZReej~                  j                  ej                  d7d	8      dJ               ZSeej~                  j                  ej                  d7d	8      dK               ZTeej~                  j                  ej                  d7d	8      dL               ZUeej~                  j                  ed7d	8      dM               ZVy# e$ rJ d	Z ej$                         Z ej$                         Z ej$                         Z ej$                         ZY w xY w)PzTests for http retries.    N)Sequence)mock)Response)AsyncAuthorizedSession)StaticCredentialsFT)credentials   )_api_client)errors)typesz(aiohttp is not installed, skipping test.)reason)    i  i  i    )autousec               #   *   K   d  dt         _        y w)NF)
api_clienthas_aiohttp     t/Users/jameslopez/projects/TradingBot25/.venv/lib/python3.12/site-packages/google/genai/tests/client/test_retries.pyreset_has_aiohttpr   >   s      *s   retried_codesc                 J    t        dd      D cg c]	  }|| vs| c}S c c}w )Nd   iX  )range)r   codes     r   _final_codesr   D   s'     c?	H?4d-.G$?	HH	Hs   	  r   c                 H    t        j                  | dt        |       id      S )Nstatus-coder   )status_codeheaderscontent)httpxr   str)r   s    r   _httpx_responser&   H   s%    	c$i(
 r   c                      t        j                  d       } t        | j                               ddhk(  sJ | d   j                  dk(  sJ | d   sJ y )Nstopreraise   )r   
retry_argssetkeysmax_attempt_number)argss    r   test_retry_args_disabledr0   S   sT    			t	$$	TYY[	fi0	00	0	f	(	(A	--	-	ir   c                     t        j                  t        j                               } t	        | j                               h dk(  sJ | d   j                  dk(  sJ | d   }|j                  dk(  sJ |j                  dk(  sJ |j                  dk(  sJ |j                  dk(  sJ | d   }t        D ]1  }	 t        j                  j                  t        |             J d	        t#               D ]2  }	 t        j                  j                  t        |             | d
   r2J  y # t        j                  $ r}|j!                  |      sJ Y d }~d }~ww xY w# t        j                  $ r}|j!                  |      rJ Y d }~hd }~ww xY w)N>   r(   waitretryr)   before_sleepr(      r2      r*   <   r3   Expected APIError to be raised.r)   )r   r+   r   HttpRetryOptionsr,   r-   r.   exp_baseinitialjittermax_RETRIED_CODESr   APIErrorraise_for_responser&   	predicater   )r/   r2   r3   r   es        r   %test_retry_args_enabled_with_defaultsrC   [   sj   			u557	8$	TYY[	  
  
 
f	(	(A	--	-	f$	!									R
w-%d oo(()>?555U  nd$oo(()>? 	??  ??  __Q  ?? $####$s0   4/D$2(E$E7EEF*FFc                     g fd} t        j                  di t        j                  t	        j
                               }	  ||        J d       # t        j                  $ r Y nw xY wt              dk(  sJ d   d   z
  t        j                  d      k\  sJ d   d   z
  t        j                  d      k\  sJ d   d   z
  t        j                  d	      k\  sJ d	   d   z
  t        j                  d
      k\  sJ y )Nc                      t         j                   j                         } j                  |        t        j                  j                  t        d            )Nr   )datetimenowappendr   r?   r@   r&   )rG   
timestampss    r   fnztest_retry_wait.<locals>.fn   s?    





!Cc
//
,
,_S-A
BBr   r8   r5   r*   r   )secondsr6   r	         r   )tenacityRetryingr   r+   r   r9   r   r?   lenrF   	timedelta)rJ   retryingrI   s     @r   test_retry_waitrS      s   *C
  e4467(	RL3335	 		 
ZA			AA	&(*<*<Q*G	GG	G	AA	&(*<*<Q*G	GG	G	AA	&(*<*<Q*G	GG	G	AA	&(*<*<Q*G	GG	Gs   A A)(A)c            	         t        j                  dddddddg      } t        j                  |       }|d   j                  dk(  sJ |d	   }|j
                  dk(  sJ |j                  dk(  sJ |j                  dk(  sJ |j                  dk(  sJ |d
   }dD ]1  }	 t        j                  j                  t        |             J d        t        ddg      D ]+  }	 t        j                  j                  t        |             - y # t        j                  $ r}|j                  |      sJ Y d }~d }~ww xY w# t        j                  $ r}|j                  |      rJ Y d }~d }~ww xY w)N
   r   g      ?g      ?r   r   attemptsinitial_delay	max_delayr:   r<   http_status_codesr(   r2   r3   )r   r   r8   )r   r9   r   r+   r.   r;   r=   r:   r<   r   r?   r@   r&   rA   r   )optionsr+   r2   r3   r   rB   s         r   =test_retry_args_enabled_with_custom_values_are_not_overriddenr\      sa   ""c
' $$W-*	F		.	."	44	4	F	$				S	#					
W
%d oo(()>?555U  C:&d$oo(()>? ' ??  __Q  ?? $####$s0   /D(D:D7D22D7:E*E%%E*c                     t        j                  t        j                               } | d   }|j	                  t        j                  d            sJ |j	                  t        j                  d            sJ |j	                  t        j                  d            sJ |j	                  t        j                  d            sJ |j	                  t        j                  d            rJ |j	                  t        d            rJ y )Nr3   stalledzread stalledzconnect stalledzconnect refusedzbad urlznot a transport error)r   r+   r   r9   rA   r$   TimeoutExceptionReadTimeoutConnectTimeoutConnectError
InvalidURL
ValueError)r/   r3   s     r   .test_retry_args_retries_httpx_transport_errorsre      s     
		u557	8$
w-%	//	:	;;	;	**>:	;;	;	--.?@	AA	A	++,=>	??	? __U--i899	9__Z(?@AA	AAr   c                  \    t        j                  dt        j                  d      dfd      S )Nzgoogle.auth.defaultmagic_tokentest_projectT)return_valueautospec)r   patchr   Credentialsr   r   r   _patch_auth_defaultrm      s,    	++M:NK
 r   c                 Z    | xs t        j                         } d|i| _        d|i| _        | S )N	transport)r   HttpOptionsclient_argsasync_client_args)http_optionsro   async_transports      r   _transport_optionsru      s5    4!2!2!4,)95,$/#A, 	r   c                     t        j                  t        j                        } t	        d      | j
                  _        t        j                  dddt        |             }t               5  |j                  dd	i 
      }| j
                  j                          |j                  d   dk(  sJ 	 d d d        y # 1 sw Y   y xY w)Nspec   Trh   globalro   vertexaiprojectlocationrs   GETpathhttp_methodr   request_dictr    200)r   Mockr$   BaseTransportr&   handle_requestri   r   BaseApiClientru   rm   requestassert_called_oncer"   mock_transportclientresponses      r   6test_disabled_retries_successful_request_executes_oncer      s    99%"5"56./>s/C.,##%?	& ~~%f2~NH!!446M*e333 s   ,AB99Cc                     t        j                  t        j                        } t	        d      | j
                  _        t        j                  dddt        |             }t               5  	 |j                  dd	i 
       J d       # t        j                  $ r}|j                  dk(  sJ Y d }~nd }~ww xY w| j
                  j                          d d d        y # 1 sw Y   y xY w)Nrw   r   Trh   rz   r{   r|   r   r   r   r8   )r   r   r$   r   r&   r   ri   r   r   ru   rm   r   r   r?   r   r   r   r   rB   s      r   2test_disabled_retries_failed_request_executes_oncer      s    99%"5"56./>s/C.,##%?	& nnV"nE555U?? VVs]]!!446 s0   ,C.B		B7B2-C2B77CC&r6   r*   g?r   r   rV   c            
         t        j                  t        j                        } t	        d      | j
                  _        t        j                  dddt        t        j                  t              |             }t               5  |j                  d	d
i       }| j
                  j                          |j                   d   dk(  sJ 	 d d d        y # 1 sw Y   y xY w)Nrw   ry   Trh   rz   retry_optionsrs   ro   r|   r   r   r   r    r   )r   r   r$   r   r&   r   ri   r   r   ru   r   rp   _RETRY_OPTIONSrm   r   r   r"   r   s      r   -test_retries_successful_request_executes_oncer     s    99%"5"56./>s/C.,##%((~F"	& ~~%f2~NH!!446M*e333 s   ACCc            
         t        j                  t        j                        } t	        d      t	        d      f| j
                  _        t        j                  dddt        t        j                  t              |       	      }t               5  |j                  d
di       }| j
                  j                          |j                   d   dk(  sJ 	 d d d        y # 1 sw Y   y xY w)Nrw   r   ry   Trh   rz   r   r   r|   r   r   r   r    r   )r   r   r$   r   r&   r   side_effectr   r   ru   r   rp   r   rm   r   assert_calledr"   r   s      r   0test_retries_failed_request_retries_successfullyr   $  s    99%"5"56.cc/.+
 ##%((~F"	& ~~%f2~NH!!//1M*e333 s   ACC&c            	         t        j                  t        j                        } t	        d      t	        d      f| j
                  _        t        j                  dddt        |             }t               5  |j                  d	d
i t        j                  t                    }| j
                  j                          |j                   d   dk(  sJ 	 d d d        y # 1 sw Y   y xY w)Nrw   r   ry   Trh   rz   r{   r|   r   r   r   r   r   r   rs   r    r   )r   r   r$   r   r&   r   r   r   r   ru   rm   r   r   rp   r   r   r"   r   s      r   Atest_retries_failed_request_retries_successfully_at_request_levelr   ;  s    99%"5"56.cc/.+
 ##%"	& ~~&&(
	  H !!//1M*e333 s   7ACC&c            
         t        j                  t        j                        } t	        d      t	        d      f| j
                  _        t        j                  dddt        t        j                  t              |       	      }t               5  	 |j                  d
di        J d       # t        j                   $ r}|j"                  dk(  sJ Y d }~nd }~ww xY w| j
                  j%                          d d d        y # 1 sw Y   y xY wNrw   r   r   Trh   rz   r   r   r|   r   r   r   r8   )r   r   r$   r   r&   r   r   r   r   ru   r   rp   r   rm   r   r   r?   r   r   r   s      r   2test_retries_failed_request_retries_unsuccessfullyr   X  s    99%"5"56.cc/.+
 ##%((~F"	& nnV"nE555U?? VVs]]!!//1 s0   DB--C CDCDD
c                  &   t        j                  t        j                        } t	        d      f| j
                  _        t        j                  dddt        t        j                  t        j                  d            | 	      
      }t               5  	 |j                  ddi        J d       # t        j                   $ r}|j"                  dk(  sJ Y d }~nd }~ww xY w| j
                  j%                          d d d        y # 1 sw Y   y xY w)Nrw   r   Trh   rz   r   )rW   r   r   r|   r   r   r   r8   )r   r   r$   r   r&   r   r   r   r   ru   r   rp   r9   rm   r   r   r?   r   r   r   s      r   5test_retries_failed_request_no_retries_unsuccessfullyr   r  s    99%"5"56.c/.+ ##%((!22A> #		
& nnV"nE555U?? VVs]]!!//1 s0   DB33C!CDC!!DDc                     t        j                  t        j                        } t	        d      t	        d      f| j
                  _        t        j                  dddt        |             }t               5  	 |j                  d	d
i dt        i       J d       # t        j                  $ r}|j                  dk(  sJ Y d }~nd }~ww xY w| j
                  j!                          d d d        y # 1 sw Y   y xY wNrw   r   r   Trh   rz   r{   r|   r   r   r   r   r8   )r   r   r$   r   r&   r   r   r   r   ru   rm   r   r   r   r?   r   r   r   s      r   Ctest_retries_failed_request_retries_unsuccessfully_at_request_levelr     s    99%"5"56.cc/.+
 ##%"	& 	nn'8	   655U?? VVs]]!!//1 s0   7C/9"BC	.C?C/C		C//C8c                  T    dt         _        d } t        j                   |               y )NFc                    K   t        j                  t        j                        } t	        d      | j
                  _        t        j                  dddt        |             }t               5  |j                  dd	i 
       d {   }| j
                  j                          |j                  d   dk(  sJ 	 d d d        y 7 <# 1 sw Y   y xY ww)Nrw   ry   Trh   rz   rt   r|   r   r   r   r    r   )r   r   r$   AsyncBaseTransportr&   handle_async_requestri   r   r   ru   rm   async_requestr   r"   r   s      r   runzItest_async_disabled_retries_successful_request_executes_once.<locals>.run  s     YYE$<$<=N7Fs7KN''4%%'G	F 
	++&r ,  h ))<<>m,555 
	 
	s0   A,C.CC2C:	CCC
Cr   r   asyncior   r   s    r   <test_async_disabled_retries_successful_request_executes_oncer     s     *6$ 
++cer   c                  T    dt         _        d } t        j                   |               y )NFc                    K   t        j                  t        j                        } t	        d      | j
                  _        t        j                  dddt        |             }t               5  	 |j                  dd	i 
       d {    J d       7 # t        j                  $ r}|j                  dk(  sJ Y d }~nd }~ww xY w| j
                  j                          d d d        y # 1 sw Y   y xY ww)Nrw   r   Trh   rz   r   r|   r   r   r   r8   )r   r   r$   r   r&   r   ri   r   r   ru   rm   r   r   r?   r   r   r   s      r   r   zEtest_async_disabled_retries_failed_request_executes_once.<locals>.run  s     YYE$<$<=N7Fs7KN''4%%'G	F 
	""F # 
 	
 	
 	877u	
 __ vv}}))<<> 
		sN   A,C5.C)0BBBC(B>9C)>CC) 	C5)C2.C5r   r   s    r   8test_async_disabled_retries_failed_request_executes_oncer     s     *?* 
++cer   c                  T    dt         _        d } t        j                   |               y )NFc            
        K   t        j                  t        j                        } t	        d      | j
                  _        t        j                  dddt        t        j                  t              |             }t               5  |j                  d	d
i        d {   }| j
                  j                          |j                   d   dk(  sJ 	 d d d        y 7 <# 1 sw Y   y xY ww)Nrw   ry   Trh   rz   r   rs   rt   r|   r   r   r   r    r   )r   r   r$   r   r&   r   ri   r   r   ru   r   rp   r   rm   r   r   r"   r   s      r   r   z@test_async_retries_successful_request_executes_once.<locals>.run  s     YYE$<$<=N7Fs7KN''4%%'**H*
	F 
	++&r ,  h ))<<>m,555 
	 
	s0   BC*CC 2C	C*CC'#C*r   r   s    r   3test_async_retries_successful_request_executes_oncer     s     *6* 
++cer   c                  T    dt         _        d } t        j                   |               y )NFc            
        K   t        j                  t        j                        } t	        d      t	        d      f| j
                  _        t        j                  dddt        t        j                  t              |       	      }t               5  |j                  d
di        d {   }| j
                  j                          |j                   d   dk(  sJ 	 d d d        y 7 <# 1 sw Y   y xY ww)Nrw   r   ry   Trh   rz   r   r   r|   r   r   r   r    r   )r   r   r$   r   r&   r   r   r   r   ru   r   rp   r   rm   r   r   r"   r   s      r   r   zCtest_async_retries_failed_request_retries_successfully.<locals>.run  s     YYE$<$<=N7N''3
 %%'**H*
	F 
	++&r ,  h ))779m,555 
	 
	s0   BC5C)*C'+2C)	C5'C))C2.C5r   r   s    r   6test_async_retries_failed_request_retries_successfullyr     s     *60 
++cer   c                  T    dt         _        d } t        j                   |               y )NFc            	        K   t        j                  t        j                        } t	        d      t	        d      f| j
                  _        t        j                  dddt        |             }t               5  |j                  d	d
i t        j                  t                     d {   }| j
                  j                          |j                   d   dk(  sJ 	 d d d        y 7 <# 1 sw Y   y xY ww)Nrw   r   ry   Trh   rz   r   r|   r   r   r   r   r    r   )r   r   r$   r   r&   r   r   r   r   ru   rm   r   r   rp   r   r   r"   r   s      r   r   zTtest_async_retries_failed_request_retries_successfully_at_request_level.<locals>.run  s     YYE$<$<=N7N''3
 %%'*
	F 
	++((*	 ,  h ))779m,555 
	 
	s0   A7C591C)*C'+2C)	C5'C))C2.C5r   r   s    r   Gtest_async_retries_failed_request_retries_successfully_at_request_levelr     s     *68 
++cer   c                  T    dt         _        d } t        j                   |               y )NFc            
      6  K   t        j                  t        j                        } t	        d      t	        d      f| j
                  _        t        j                  dddt        t        j                  t              |       	      }t               5  	 |j                  d
di        d {    J d       7 # t        j                   $ r}|j"                  dk(  sJ Y d }~nd }~ww xY w| j
                  j%                          d d d        y # 1 sw Y   y xY wwNrw   r   r   Trh   rz   r   r   r|   r   r   r   r8   )r   r   r$   r   r&   r   r   r   r   ru   r   rp   r   rm   r   r   r?   r   r   r   s      r   r   zEtest_async_retries_failed_request_retries_unsuccessfully.<locals>.run?  s     YYE$<$<=N7N''3
 %%'**H*
	F 
	""F # 
 	
 	
 	877u	
 __ vv}}))779 
		sN   BDDB9+B7,B99C'C"D"C''D	DDDr   r   s    r   8test_async_retries_failed_request_retries_unsuccessfullyr   <  s     *:6 
++cer   c                  T    dt         _        d } t        j                   |               y )NFc            	      6  K   t        j                  t        j                        } t	        d      t	        d      f| j
                  _        t        j                  dddt        |             }t               5  	 |j                  d	d
i t        j                  t                     d {    J d       7 # t        j                   $ r}|j"                  dk(  sJ Y d }~nd }~ww xY w| j
                  j%                          d d d        y # 1 sw Y   y xY wwNrw   r   r   Trh   rz   r   r|   r   r   r   r   r8   )r   r   r$   r   r&   r   r   r   r   ru   rm   r   r   rp   r   r   r?   r   r   r   s      r   r   zVtest_async_retries_failed_request_retries_unsuccessfully_at_request_level.<locals>.run`  s     YYE$<$<=N7N''3
 %%'*
	F 
		""**H	 # 
 	
 	
 	877u	
 __ vv}}))779 
		sN   A7D9D;0B9+B7,B99C'C"D"C''D	DDDr   r   s    r   Itest_async_retries_failed_request_retries_unsuccessfully_at_request_levelr   ]       *:: 
++cer   status
streamablec                 ~  K   t        j                  t        j                        }| |_        dt        |       i|_        i |j                  _        d|j                  _        |rWt        j                         |_
        t        j                  d      |j                  _        t        j                         |_        |S w)z&Has to return a coroutine hence async.rw   r    testr   ri   )r   r   aiohttpClientResponser   r%   r"   jsonri   textr#   	AsyncMockreadline	MagicMockrelease)r   r   r   s      r   _aiohttp_async_responser     s     YYG223((/#S[1(!(--%(--yy{H $C @H~~'H	/s   B;B=r   )rj   c                 Z     dt         _         fd}t        j                   |              y )NTc                  "  K   t        d      _        t        j                  ddd      } t	               5  | j                  ddi        d {   }j                          |j                  d	   d
k(  sJ 	 d d d        y 7 2# 1 sw Y   y xY ww)Nry   Trh   rz   r}   r~   r   r   r   r   r    r   )r   ri   r   r   rm   r   r   r"   r   r   mock_requests     r   r   zKtest_aiohttp_disabled_retries_successful_request_executes_once.<locals>.run  s      7 <L%%F 
	++&r ,  h %%'m,555 
	 
	s.   3BBB(B8	BBBBr   r   r   s   ` r   >test_aiohttp_disabled_retries_successful_request_executes_oncer     s"    
  *6  
++cer   c                 Z     dt         _         fd}t        j                   |              y )NTc                  j  K   t        d      _        t        j                  ddd      } t	               5  	 | j                  ddi        d {    J d	       7 # t        j                  $ r}|j                  dk(  sJ Y d }~nd }~ww xY wj                          d d d        y # 1 sw Y   y xY ww)
Nr   Trh   rz   r   r   r   r   r8   )
r   ri   r   r   rm   r   r   r?   r   r   r   rB   r   s     r   r   zGtest_aiohttp_disabled_retries_failed_request_executes_once.<locals>.run  s      7 <L%%F 
	""F # 
 	
 	
 	877u	
 __ vv}}%%' 
		sK   3B3B'AAAB0BB'BB'	B3'B0,B3r   r   s   ` r   :test_aiohttp_disabled_retries_failed_request_executes_oncer     s"      *(& 
++cer   c                 Z     dt         _         fd}t        j                   |              y )NTc            
      h  K   t        d      _        t        j                  dddt	        t        j                  t                          } t               5  | j                  dd	i 
       d {   }j                          |j                  d   dk(  sJ 	 d d d        y 7 2# 1 sw Y   y xY ww)Nry   Trh   rz   r   rs   r|   r   r   r   r    r   )r   ri   r   r   ru   r   rp   r   rm   r   r   r"   r   s     r   r   zBtest_aiohttp_retries_successful_request_executes_once.<locals>.run  s      7 <L%%'**H
	F 
	++&r ,  h %%'m,555 
	 
	s0   AB2B&1B$2(B&	B2$B&&B/+B2r   r   s   ` r   5test_aiohttp_retries_successful_request_executes_oncer     s"      *6& 
++cer   c                 Z     dt         _         fd}t        j                   |              y )NTc                    K   t        d      t        d      f_        t        j                  dddt	        t        j                  t        ddi      	      
      } t               5  | j                  ddi        d {   }j                          |j                  d   dk(  sJ 	 d d d        y 7 2# 1 sw Y   y xY ww)Nr   ry   Trh   rz   	trust_envFr   rr   r   r|   r   r   r   r    r   )r   r   r   r   ru   r   rp   r   rm   r   r   r"   r   s     r   r   zEtest_aiohttp_retries_failed_request_retries_successfully.<locals>.run  s     $$ L
 %%'**,#."6
	
F 
	++&r ,  h   "m,555 
	 
	s0   A$C 'B4?B2 (B4)	C 2B44B=9C r   r   s   ` r   8test_aiohttp_retries_failed_request_retries_successfullyr     s"      *62 
++cer   c                 Z     dt         _         fd}t        j                   |              y )NTc            	      j  K   t        d      t        d      f_        t        j                  ddd      } t	               5  | j                  ddi t        j                  t        	      
       d {   }j                          |j                  d   dk(  sJ 	 d d d        y 7 2# 1 sw Y   y xY ww)Nr   ry   Trh   rz   r   r   r   r   r   r    r   )r   r   r   r   rm   r   r   rp   r   r   r"   r   s     r   r   zVtest_aiohttp_retries_failed_request_retries_successfully_at_request_level.<locals>.run  s     $$ L
 %%F 
	++((*	 ,  h   "m,555 
	 
	s/   >B31B'2B%3(B'	B3%B''B0,B3r   r   s   ` r   Itest_aiohttp_retries_failed_request_retries_successfully_at_request_levelr     s"      *60 
++cer   c                 Z     dt         _         fd}t        j                   |              y )NTc                    K   t        d      t        d      f_        t        j                  dddt	        t        j                  t        ddi      	      
      } t               5  	 | j                  ddi        d {    J d       7 # t        j                  $ r}|j                  dk(  sJ Y d }~nd }~ww xY wj                          d d d        y # 1 sw Y   y xY ww)Nr   r   Trh   rz   r   Fr   r   r|   r   r   r   r8   )r   r   r   r   ru   r   rp   r   rm   r   r   r?   r   r   r   s     r   r   zGtest_aiohttp_retries_failed_request_retries_unsuccessfully.<locals>.run,  s     $$ L
 %%'**,#."6
	
F 
	""F # 
 	
 	
 	877u	
 __ vv}}  " 
		sN   A$C$'C)B BBB<!B72C7B<<C	C$C!C$r   r   s   ` r   :test_aiohttp_retries_failed_request_retries_unsuccessfullyr   '  s"      *#8 
++cer   c                 Z     dt         _         fd}t        j                   |              y )NTc                    K   t        d      t        d      f_        t        j                  ddd      } t	               5  	 | j                  ddi d	t        i
       d {    J d       7 # t        j                  $ r}|j                  dk(  sJ Y d }~nd }~ww xY wj                          d d d        y # 1 sw Y   y xY ww)Nr   r   Trh   rz   r   r   r   r   r   r8   )r   r   r   r   rm   r   r   r   r?   r   r   r   s     r   r   zXtest_aiohttp_retries_failed_request_retries_unsuccessfully_at_request_level.<locals>.runV  s     $$ L
 %%F 
		"")>:	 # 
 	
 	
 	877u	
 __ vv}}  " 
		sM   >CB9A/!A-"A//BBB9BB90	C9C>Cr   r   s   ` r   Ktest_aiohttp_retries_failed_request_retries_unsuccessfully_at_request_levelr   K  s"      *#2 
++cer   c            
         t        j                  t        j                        } t	        d      t	        d      f| j
                  _        t        j                  dddt        t        j                  t              |       	      }t               5  |j                  d
di       }t        |       | j
                  j!                          | j
                  j"                  dk(  sJ 	 d d d        y # 1 sw Y   y xY w)Nrw   r   ry   Trh   rz   r   r   r|   r   r   r   r6   )r   r   r$   r   r&   r   r   r   r   ru   r   rp   r   rm   request_streamedlistr   
call_countr   r   streams      r   9test_retries_streamed_failed_request_retries_successfullyr   u  s    99%"5"56.cc/.+
 ##%((~F"	& $$R % F 	L!!//1((33q888 s   AC//C8c            	         t        j                  t        j                        } t	        d      t	        d      f| j
                  _        t        j                  dddt        |             }t               5  |j                  d	d
i t        j                  t                    }t        |       | j
                  j!                          | j
                  j"                  dk(  sJ 	 d d d        y # 1 sw Y   y xY w)Nrw   r   ry   Trh   rz   r{   r|   r   r   r   r   r6   )r   r   r$   r   r&   r   r   r   r   ru   rm   r   r   rp   r   r   r   r   r   s      r   Jtest_retries_streamed_failed_request_retries_successfully_at_request_levelr     s    99%"5"56.cc/.+
 ##%"	& $$&&^D	 % F 	L!!//1((33q888 s   7A.C//C8c            
      0   t        j                  t        j                        } t	        d      t	        d      f| j
                  _        t        j                  dddt        t        j                  t              |       	      }t               5  	 |j                  d
di       }t        |       J d       # t         j"                  $ r}|j$                  dk(  sJ Y d }~nd }~ww xY w| j
                  j'                          d d d        y # 1 sw Y   y xY wr   )r   r   r$   r   r&   r   r   r   r   ru   r   rp   r   rm   r   r   r   r?   r   r   r   r   r   rB   s       r   ;test_retries_streamed_failed_request_retries_unsuccessfullyr     s    99%"5"56.cc/.+
 ##%((~F"	& &&&r ' f 6l555U?? VVs]]!!//1 s0   D&B88C&C!D!C&&DDc                     t        j                  t        j                        } t	        d      t	        d      f| j
                  _        t        j                  dddt        |             }t               5  	 |j                  d	d
i dt        i      }t        |       J d       # t        j                  $ r}|j                   dk(  sJ Y d }~nd }~ww xY w| j
                  j#                          d d d        y # 1 sw Y   y xY wr   )r   r   r$   r   r&   r   r   r   r   ru   rm   r   r   r   r   r?   r   r   r   s       r   Ltest_retries_streamed_failed_request_retries_unsuccessfully_at_request_levelr    s    99%"5"56.cc/.+
 ##%"	& 
&&'8	 ' f 6l555U?? VVs]]!!//1 s0   7C:9-B&&C9C
C:CC::Dc                  T    dt         _        d } t        j                   |               y )NFc            
        K   t        j                  t        j                        } t	        d      t	        d      f| j
                  _        t        j                  dddt        t        j                  t              |       	      }t               5  |j                  d
di        d {   }|2 3 d {   }
7 7 6 | j
                  j                          | j
                  j                   dk(  sJ 	 d d d        y # 1 sw Y   y xY ww)Nrw   r   ry   Trh   rz   r   r   r|   r   r   r   r6   )r   r   r$   r   r&   r   r   r   r   ru   r   rp   r   rm   async_request_streamedr   r   r   r   r   _s       r   r   zLtest_async_retries_streamed_failed_request_retries_successfully.<locals>.run  s     YYE$<$<=N7N''3
 %%'**H*
	F 
	22&r 3  f  	V))77900;;q@@@ 
		sN   BDC?*B;+C?1B?5B=6B?9C?=B??6C?6	D?DDr   r   s    r   ?test_async_retries_streamed_failed_request_retries_successfullyr    s      *A4 
++cer   c                  T    dt         _        d } t        j                   |               y )NFc            	        K   t        j                  t        j                        } t	        d      t	        d      f| j
                  _        t        j                  dddt        |             }t               5  |j                  d	d
i t        j                  t                     d {   }|2 3 d {   }
7 7 6 | j
                  j                          | j
                  j                   dk(  sJ 	 d d d        y # 1 sw Y   y xY ww)Nrw   r   ry   Trh   rz   r   r|   r   r   r   r   r6   )r   r   r$   r   r&   r   r   r   r   ru   rm   r  r   rp   r   r   r   r  s       r   r   z]test_async_retries_streamed_failed_request_retries_successfully_at_request_level.<locals>.run  s     YYE$<$<=N7N''3
 %%'*
	F 
	22((~F	 3  f  V))77900;;q@@@ 
		sN   A7D91C?*B;+C?1B?5B=6B?9C?=B??6C?6	D?DDr   r   s    r   Ptest_async_retries_streamed_failed_request_retries_successfully_at_request_levelr  
  s      *A8 
++cer   c                  T    dt         _        d } t        j                   |               y )NFc            
      T  K   t        j                  t        j                        } t	        d      t	        d      f| j
                  _        t        j                  dddt        t        j                  t              |       	      }t               5  	 |j                  d
di        d {   }|2 3 d {   }
7 7 6 J d       # t        j                   $ r}|j"                  dk(  sJ Y d }~nd }~ww xY w| j
                  j%                          d d d        y # 1 sw Y   y xY wwr   )r   r   r$   r   r&   r   r   r   r   ru   r   rp   r   rm   r  r   r?   r   r   r   r   r   r  rB   s        r   r   zNtest_async_retries_streamed_failed_request_retries_unsuccessfully.<locals>.run/  s    YYE$<$<=N7N''3
 %%'**H*
	F 
	44F 5 
 
  	!
	
	v777u__ vv}}))779 
		sr   BD(DC+B<,C2C 6B>7C :C>C  CC6C1,D1C66D	D(D%!D(r   r   s    r   Atest_async_retries_streamed_failed_request_retries_unsuccessfullyr  ,  r   r   c                  T    dt         _        d } t        j                   |               y )NFc            	      T  K   t        j                  t        j                        } t	        d      t	        d      f| j
                  _        t        j                  dddt        |             }t               5  	 |j                  d	d
i t        j                  t                     d {   }|2 3 d {   }
7 7 6 J d       # t        j                   $ r}|j"                  dk(  sJ Y d }~nd }~ww xY w| j
                  j%                          d d d        y # 1 sw Y   y xY wwr   )r   r   r$   r   r&   r   r   r   r   ru   rm   r  r   rp   r   r   r?   r   r   r  s        r   r   z_test_async_retries_streamed_failed_request_retries_unsuccessfully_at_request_level.<locals>.runR  s    YYE$<$<=N7N''3
 %%'*
	F 
	44**H	 5 
 
  	!

	v777u__ vv}}))779 
		sr   A7D(9D;0C+B<,C2C 6B>7C :C>C  CC6C1,D1C66D	D(D%!D(r   r   s    r   Rtest_async_retries_streamed_failed_request_retries_unsuccessfully_at_request_levelr  O  s     *:> 
++cer   c                 Z     dt         _         fd}t        j                   |              y )NTc            
        K   t        d      t        dd      f_        t        j                  dddt	        t        j                  t                    	      } t               5  | j                  d
di        d {   }|2 3 d {   }
7 7 6 j                          j                  dk(  sJ 	 d d d        y # 1 sw Y   y xY ww)Nr   ry   Tr   rh   rz   r   r   r|   r   r   r   r6   )r   r   r   r   ru   r   rp   r   rm   r  r   r   r   r   r  r   s      r   r   zNtest_aiohttp_retries_streamed_failed_request_retries_successfully.<locals>.run~  s     $5 L
 %%'**H
	F 
	22&r 3  f  	V  "$$))) 
		sN   A#C&B?>B?B?B	B
BB?B"B?6	C?CCr   r   s   ` r   Atest_aiohttp_retries_streamed_failed_request_retries_successfullyr  w  s"    
  **0 
++cer   c                 Z     dt         _         fd}t        j                   |              y )NTc                    K   t        d      t        dd      f_        t        j                  ddd      } t	               5  | j                  dd	i t        j                  t        d
di             d {   }|2 3 d {   }
7 7 6 j                          j                  dk(  sJ 	 d d d        y # 1 sw Y   y xY ww)Nr   ry   Tr  rh   rz   r   r   r   r   Fr   r   r6   )r   r   r   r   rm   r  r   rp   r   r   r   r  s      r   r   z_test_aiohttp_retries_streamed_failed_request_retries_successfully_at_request_level.<locals>.run  s     $5 L
 %%F 
	22((*!,e 4	 3  f  V  "$$))) 
		sN   A C4B87B8B8>BB
BB8
B"B8/	C8C=Cr   r   s   ` r   Rtest_aiohttp_retries_streamed_failed_request_retries_successfully_at_request_levelr    s"    
  **6 
++cer   c                 Z     dt         _         fd}t        j                   |              y )NTc            
        K   t        d      t        d      f_        t        j                  dddt	        t        j                  t                          } t               5  	 | j                  d	d
i        d {   }|2 3 d {   }
7 7 6 J d       # t        j                  $ r}|j                  dk(  sJ Y d }~nd }~ww xY wj                          d d d        y # 1 sw Y   y xY ww)Nr   r   Trh   rz   r   r   r|   r   r   r   r8   )r   r   r   r   ru   r   rp   r   rm   r  r   r?   r   r   r   r   r  rB   r   s       r   r   zPtest_aiohttp_retries_streamed_failed_request_retries_unsuccessfully.<locals>.run  s     $$ L
 %%'**H
	F 
	44F 5 
 
  	!
	
	v777u__ vv}}  " 
		sr   A!C0$C$&B=B>BBB	BBBBC-C>C$CC$	C0$C-)C0r   r   s   ` r   Ctest_aiohttp_retries_streamed_failed_request_retries_unsuccessfullyr    s"      *#6 
++cer   c                 Z     dt         _         fd}t        j                   |              y )NTc            	        K   t        d      t        d      f_        t        j                  dddt	        j
                  ddi      	      } t               5  	 | j                  d
di dt        i       d {   }|2 3 d {   }
7 7 6 J d       # t        j                  $ r}|j                  dk(  sJ Y d }~nd }~ww xY wj                          d d d        y # 1 sw Y   y xY ww)Nr   r   Trh   rz   r   F)rr   r|   r   r   r   r   r8   )r   r   r   r   r   rp   rm   r  r   r   r?   r   r   r  s       r   r   zatest_aiohttp_retries_streamed_failed_request_retries_unsuccessfully_at_request_level.<locals>.run  s     $$ L
 %%&&*E2
	F 
	44)>:	 5 
 
  	!

	v777u__ vv}}  " 
		sr   AC+CB8B	9B?BBBBBBC(B>9C>CC	C+C($C+r   r   s   ` r   Ttest_aiohttp_retries_streamed_failed_request_retries_unsuccessfully_at_request_levelr!    s"    
  *#< 
++cer   c                 Z     dt         _         fd}t        j                   |              y )NTc                    K   t        j                  t         j                  j                  ddddd d d       t              t        d      f_        t        j                  ddd	      } t               5  | j                  d
di        d {   }j                          |j                  d   dk(  sJ 	 d d d        y 7 2# 1 sw Y   y xY ww)N	localhostP   FT)connection_keyos_errorry   rh   rz   r   r   r   r   r    r   )r   ClientConnectorErrorclient_reqrepConnectionKeyOSErrorr   r   r   r   rm   r   r   r"   r   s     r   r   zMtest_aiohttp_retries_client_connector_error_retries_successfully.<locals>.run  s     $$"00>>RdD$ 		
 	 $ L %%F 
	++&r ,  h   "m,555 
	 
	s0   A1C4CB?(C6	C?CC
Cr   r   s   ` r   @test_aiohttp_retries_client_connector_error_retries_successfullyr,    s"      *64 
++cer   c                 Z     dt         _         fd}t        j                   |              y )NTc                    K   t        d       d {   } t        d       d {   }t        j                  t              }| |_        t        j                  t              }||_        ||g_        t        j                  dddt        j                  t                    }t        j                  d	d
      5  t               5  	 |j                  ddi        d {    J d       7 7 7 # t        j                  $ r}|j                   dk(  sJ Y d }~nd }~ww xY wj#                          d d d        n# 1 sw Y   nxY wd d d        y # 1 sw Y   y xY ww)Nr   r   rw   Trh   rz   r   r|   z1google.auth.transport.mtls.should_use_client_certr   r   r   r   r8   )r   r   r   AsyncAuthorizedSessionResponse	_responser   r   r   r   rp   r   rk   rm   r   r   r?   r   r   )res429res504mock_auth_res429mock_auth_res504r   rB   r   s         r   r   zLtest_aiohttp_retries_failed_request_retries_unsuccessfully_mtls.<locals>.run>  s<    *3//F*3//F yy&DE!'yy&DE!' !12BCL%%&&(
	F 
;$
  	$$f2 %    :9
9? 0/6  	3
	""$ !  
 
 
s   EC-EC/BE=ED=
C3!C1"C3-E/E1C33D!DD=D!!D=4	E=E	E		EEEr   r   s   ` r   ?test_aiohttp_retries_failed_request_retries_unsuccessfully_mtlsr5  7  s#    
  *$%L 
++cer   )NNN)F)W__doc__r   collections.abcr   rF   unittestr   pytestr   !google.auth.aio.transport.aiohttpr   r/  "google.auth.aio.transport.sessionsr   google.auth.aio.credentialsr   AIOHTTP_NOT_INSTALLEDImportErrorr   google.oauth2r   r$   rN    r
   r   r   r   markskipifrequires_aiohttpr>   fixturer   intr   r&   r0   rC   rS   r\   re   rm   ru   r   r   r9   r   r   r   r   r   r   r   r   r   r   r   r   r   r   boolr   rk   objectClientSessionr   r   r   r   r   r   r   r   r   r   r  r  r  r  r  r  r  r  r!  r,  r5  r   r   r   <module>rI     s      $   ,ZG; &   )   ;;%%"L &  
 ! !
 1? I I# $NH2 $FB"4"7( (''Cj4(4.4:24262B066<DB J# 4  7(()dC D 0 7(()dC D 2 7(()dC D 2 7(()dC D >   
 @ 7(()dC D D   
 H94982:2D@D F"P 7(()dC D @ 7(()dC  D  F   
   F 7(()dC# D #L   
 D )9tD+ E +u(  ,DNN'#14>>#3 $dnn&)4>>+,s   N) )AO87O8