o
    Yi                     @   s  d Z ddlZddlmZ ddlZddlmZ ddlZzddlZdZ	W n e
y1   dZ	e ZY nw 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jje	ddZdZejdddd Zefdee fddZdefddZdd Zdd Zdd Z dd Z!d d! Z"dvd"d#Z#d$d% Z$d&d' Z%ej&d(dd)d*d*d+d,gd-Z'd.d/ Z(d0d1 Z)d2d3 Z*d4d5 Z+d6d7 Z,d8d9 Z-d:d; Z.d<d= Z/d>d? Z0d@dA Z1dBdC Z2dDdE Z3dFdG Z4dwdHedIe5fdJdKZ6eej7j8ej9dLddMdNdO Z:eej7j8ej9dLddMdPdQ Z;eej7j8ej9dLddMdRdS Z<eej7j8ej9dLddMdTdU Z=eej7j8ej9dLddMdVdW Z>eej7j8ej9dLddMdXdY Z?eej7j8ej9dLddMdZd[ Z@d\d] ZAd^d_ ZBd`da ZCdbdc ZDddde ZEdfdg ZFdhdi ZGdjdk ZHeej7j8ej9dLddMdldm ZIeej7j8ej9dLddMdndo ZJeej7j8ej9dLddMdpdq ZKeej7j8ej9dLddMdrds ZLeej7j8ej9dLddMdtdu ZMdS )xzTests for http retries.    N)Sequence)mockFT)credentials   )_api_client)errors)typesz(aiohttp is not installed, skipping test.)reason)    i  i  i    )Zautousec                   c   s    d V  dt _d S )NF)
api_clienthas_aiohttp r   r   `/home/kim/smarthome/.venv/lib/python3.10/site-packages/google/genai/tests/client/test_retries.pyreset_has_aiohttp6   s   
r   retried_codesc                    s    fddt ddD S )Nc                    s   g | ]}| vr|qS r   r   ).0coder   r   r   
<listcomp>=   s    z _final_codes.<locals>.<listcomp>d   iX  )ranger   r   r   r   _final_codes<   s   r   r   c                 C   s   t j| dt| iddS )Nstatus-code    )status_codeheaderscontent)httpxResponsestr)r   r   r   r   _httpx_response@   s
   
r"   c                  C   sD   t d } t|  ddhksJ | d jdksJ | d s J d S )Nstopreraise   )r   
retry_argssetkeysmax_attempt_number)argsr   r   r   test_retry_args_disabledK   s   
r+   c                  C   s<  t t } t|  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s5J |j
dks<J | d }tD ](}ztjt| J d
 tjyj } z||s`J W Y d }~qBd }~ww t D ]-}z
tjt| W n tjy } z||rJ W Y d }~nd }~ww | d sJ qnd S )N>   Zbefore_sleepwaitr$   r#   retryr#      r,      r%   <   r-   F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*   r,   r-   r   er   r   r   %test_retry_args_enabled_with_defaultsS   s4   
r<   c                     s   g   fdd} t jdi tt }z||  J d tjy'   Y nw t dks0J  d  d  t	j
ddks@J  d	  d  t	j
d	dksPJ  d
  d	  t	j
ddks`J  d  d
  t	j
ddkspJ d S )Nc                     s$   t j  }  |  tjtd)Nr   )datetimenowappendr   r8   r9   r"   )r>   Z
timestampsr   r   fn}   s   

ztest_retry_wait.<locals>.fnFr1   r.   r%   r   )secondsr/   r         r   )tenacityZRetryingr   r&   r   r2   r   r8   lenr=   	timedelta)rA   Zretryingr   r@   r   test_retry_waitz   s       $rH   c                  C   s2  t jdddddddgd} t| }|d jdksJ |d	 }|jdks&J |jdks-J |jdks4J |jdks;J |d
 }dD ](}zt	j
t| J d t	j
yi } z||s_J W Y d }~qAd }~ww tddgD ]&}z
t	j
t| W qp t	j
y } z||rJ W Y d }~qpd }~ww d S )N
   r   g      ?g      ?r
   r   attemptsZinitial_delayZ	max_delayr3   r5   Zhttp_status_codesr#   r,   r-   )r
   r   Fr1   )r   r2   r   r&   r)   r4   r6   r3   r5   r   r8   r9   r"   r:   r   )optionsr&   r,   r-   r   r;   r   r   r   =test_retry_args_enabled_with_custom_values_are_not_overridden   s@   
rM   c                   C   s   t jdtddfddS )Nzgoogle.auth.defaultZmagic_tokentest_projectT)return_valueautospec)r   patchr   Credentialsr   r   r   r   _patch_auth_default   s
   rS   c                 C   s$   | pt  } d|i| _d|i| _| S )N	transport)r   HttpOptionsZclient_argsZasync_client_args)http_optionsrT   async_transportr   r   r   _transport_options   s   

rX   c                  C   s   t jtjd} td| j_tjdddt	| dd}t
  |jdd	i d
}| j  |jd dks3J W d    d S 1 s>w   Y  d S )Nspec   TrN   globalrT   vertexaiprojectlocationrV   GETpathhttp_methodrc   request_dictr   200)r   Mockr   BaseTransportr"   handle_requestrO   r   BaseApiClientrX   rS   requestassert_called_oncer   mock_transportclientresponser   r   r   6test_disabled_retries_successful_request_executes_once   s   
"rr   c                  C   s   t jtjd} td| j_tjdddt	| dd}t
 5 z|jdd	i d
 J d tjyC } z|jdks9J W Y d }~nd }~ww | j  W d    d S 1 sTw   Y  d S )NrY   r   TrN   r\   r]   r^   rb   rc   rd   Fr1   )r   rh   r   ri   r"   rj   rO   r   rk   rX   rS   rl   r   r8   r   rm   ro   rp   r;   r   r   r   2test_disabled_retries_failed_request_executes_once   s$   "rt   r/   r%   g?r   r   rJ   c                  C   s   t jtjd} td| j_tjdddt	t
jtd| dd}t  |jd	d
i d}| j  |jd dks8J W d    d S 1 sCw   Y  d S )NrY   r[   TrN   r\   retry_optionsrV   rT   r^   rb   rc   rd   r   rg   )r   rh   r   ri   r"   rj   rO   r   rk   rX   r   rU   _RETRY_OPTIONSrS   rl   rm   r   rn   r   r   r   -test_retries_successful_request_executes_once   s    


"ry   c                  C   s   t jtjd} tdtdf| j_tjdddt	t
jtd| dd	}t  |jd
di d}| j  |jd dks<J W d    d S 1 sGw   Y  d S )NrY   r   r[   TrN   r\   ru   rw   r^   rb   rc   rd   r   rg   )r   rh   r   ri   r"   rj   side_effectr   rk   rX   r   rU   rx   rS   rl   assert_calledr   rn   r   r   r   0test_retries_failed_request_retries_successfully  s$   


"r|   c                  C   s   t jtjd} tdtdf| j_tjdddt	| dd}t
 $ |jd	d
i tjtdd}| j  |jd dks<J W d    d S 1 sGw   Y  d S )NrY   r   r[   TrN   r\   r]   r^   rb   rc   ru   re   rc   rf   rV   r   rg   )r   rh   r   ri   r"   rj   rz   r   rk   rX   rS   rl   r   rU   rx   r{   r   rn   r   r   r   Atest_retries_failed_request_retries_successfully_at_request_level"  s0   	
"r~   c                  C   s   t jtjd} tdtdf| j_tjdddt	t
jtd| dd	}t 5 z|jd
di d J d tjyL } z|jdksBJ W Y d }~nd }~ww | j  W d    d S 1 s]w   Y  d S NrY   r   r   TrN   r\   ru   rw   r^   rb   rc   rd   Fr1   )r   rh   r   ri   r"   rj   rz   r   rk   rX   r   rU   rx   rS   rl   r   r8   r   r{   rs   r   r   r   2test_retries_failed_request_retries_unsuccessfully?  s.   

"r   c                  C   s   t jtjd} tdf| j_tjdddt	t
jt
jddd| d	d
}t 5 z|jddi d J d tjyM } z|jdksCJ W Y d }~nd }~ww | j  W d    d S 1 s^w   Y  d S )NrY   r   TrN   r\   r   )rK   ru   rw   r^   rb   rc   rd   Fr1   )r   rh   r   ri   r"   rj   rz   r   rk   rX   r   rU   r2   rS   rl   r   r8   r   r{   rs   r   r   r   5test_retries_failed_request_no_retries_unsuccessfullyY  s0   
"r   c                  C   s   t jtjd} tdtdf| j_tjdddt	| dd}t
 8 z|jd	d
i dtid J d tjyJ } z|jdks@J W Y d }~nd }~ww | j  W d    d S 1 s[w   Y  d S NrY   r   r   TrN   r\   r]   r^   rb   rc   rv   r}   Fr1   )r   rh   r   ri   r"   rj   rz   r   rk   rX   rS   rl   rx   r   r8   r   r{   rs   r   r   r   Ctest_retries_failed_request_retries_unsuccessfully_at_request_levelt  s6   	"r   c                  C      dt _dd } t|   d S )NFc                     s   t jtjd} td| j_tjdddt	| dd}t
 " |jdd	i d
I d H }| j  |jd dks7J W d    d S 1 sBw   Y  d S )NrY   r[   TrN   r\   rW   r^   rb   rc   rd   r   rg   )r   rh   r   AsyncBaseTransportr"   handle_async_requestrO   r   rk   rX   rS   async_requestrm   r   rn   r   r   r   run  s    
"zItest_async_disabled_retries_successful_request_executes_once.<locals>.runr   r   asyncior   r   r   r   r   <test_async_disabled_retries_successful_request_executes_once  s   r   c                  C   r   )NFc                     s   t jtjd} td| j_tjdddt	| dd}t
 8 z|jdd	i d
I d H  J d tjyG } z|jdks=J W Y d }~nd }~ww | j  W d    d S 1 sXw   Y  d S )NrY   r   TrN   r\   r   r^   rb   rc   rd   Fr1   )r   rh   r   r   r"   r   rO   r   rk   rX   rS   r   r   r8   r   rm   rs   r   r   r   r     s*   "zEtest_async_disabled_retries_failed_request_executes_once.<locals>.runr   r   r   r   r   8test_async_disabled_retries_failed_request_executes_once     r   c                  C   r   )NFc                     s   t jtjd} td| j_tjdddt	t
jtd| dd}t " |jd	d
i dI d H }| j  |jd dks<J W d    d S 1 sGw   Y  d S )NrY   r[   TrN   r\   ru   rV   rW   r^   rb   rc   rd   r   rg   )r   rh   r   r   r"   r   rO   r   rk   rX   r   rU   rx   rS   r   rm   r   rn   r   r   r   r     s&   


"z@test_async_retries_successful_request_executes_once.<locals>.runr   r   r   r   r   3test_async_retries_successful_request_executes_once  r   r   c                  C   r   )NFc                     s   t jtjd} tdtdf| j_tjdddt	t
jtd| dd	}t " |jd
di dI d H }| j  |jd dks@J W d    d S 1 sKw   Y  d S )NrY   r   r[   TrN   r\   ru   r   r^   rb   rc   rd   r   rg   )r   rh   r   r   r"   r   rz   r   rk   rX   r   rU   rx   rS   r   r{   r   rn   r   r   r   r     s*   


"zCtest_async_retries_failed_request_retries_successfully.<locals>.runr   r   r   r   r   6test_async_retries_failed_request_retries_successfully  s   r   c                  C   r   )NFc                     s   t jtjd} tdtdf| j_tjdddt	| dd}t
 ' |jd	d
i tjtddI d H }| j  |jd dks@J W d    d S 1 sKw   Y  d S )NrY   r   r[   TrN   r\   r   r^   rb   rc   ru   r}   r   rg   )r   rh   r   r   r"   r   rz   r   rk   rX   rS   r   r   rU   rx   r{   r   rn   r   r   r   r     s2   	
"zTtest_async_retries_failed_request_retries_successfully_at_request_level.<locals>.runr   r   r   r   r   Gtest_async_retries_failed_request_retries_successfully_at_request_level     r   c                  C   r   )NFc                     s   t jtjd} tdtdf| j_tjdddt	t
jtd| dd	}t 8 z|jd
di dI d H  J d tjyP } z|jdksFJ W Y d }~nd }~ww | j  W d    d S 1 saw   Y  d S NrY   r   r   TrN   r\   ru   r   r^   rb   rc   rd   Fr1   )r   rh   r   r   r"   r   rz   r   rk   rX   r   rU   rx   rS   r   r   r8   r   r{   rs   r   r   r   r   &  s4   

"zEtest_async_retries_failed_request_retries_unsuccessfully.<locals>.runr   r   r   r   r   8test_async_retries_failed_request_retries_unsuccessfully#  s   r   c                  C   r   )NFc                     s   t jtjd} tdtdf| j_tjdddt	| dd}t
 = z|jd	d
i tjtddI d H  J d tjyP } z|jdksFJ W Y d }~nd }~ww | j  W d    d S 1 saw   Y  d S NrY   r   r   TrN   r\   r   r^   rb   rc   ru   r}   Fr1   )r   rh   r   r   r"   r   rz   r   rk   rX   rS   r   r   rU   rx   r   r8   r   r{   rs   r   r   r   r   G  s8   	
"zVtest_async_retries_failed_request_retries_unsuccessfully_at_request_level.<locals>.runr   r   r   r   r   Itest_async_retries_failed_request_retries_unsuccessfully_at_request_levelD     r   status
streamablec                    s`   t jtjd}| |_dt| i|_i |j_d|j	_|r.t  |_
t jdd|j
_t  |_|S )z&Has to return a coroutine hence async.rY   r   testr   )rO   )r   rh   aiohttpZClientResponser   r!   r   jsonrO   textr   Z	AsyncMockreadline	MagicMockrelease)r   r   rq   r   r   r   _aiohttp_async_responsej  s   

r   rl   )rP   c                    "   dt _ fdd}t|  d S )NTc                     sx   t d _tjdddd} t ! | jddi dI d H }   |jd	 d
ks*J W d    d S 1 s5w   Y  d S )Nr[   TrN   r\   r_   r`   ra   rb   rc   rd   r   rg   )r   rO   r   rk   rS   r   rm   r   rp   rq   mock_requestr   r   r     s   
"zKtest_aiohttp_disabled_retries_successful_request_executes_once.<locals>.runr   r   r   r   r   r   >test_aiohttp_disabled_retries_successful_request_executes_oncex  s   r   c                    r   )NTc                     s   t d _tjdddd} t 7 z| jddi dI d H  J d
 tjy; } z|jdks1J W Y d }~nd }~ww  	  W d    d S 1 sKw   Y  d S )Nr   TrN   r\   r   rb   rc   rd   Fr1   )
r   rO   r   rk   rS   r   r   r8   r   rm   rp   r;   r   r   r   r     s&   

"zGtest_aiohttp_disabled_retries_failed_request_executes_once.<locals>.runr   r   r   r   r   :test_aiohttp_disabled_retries_failed_request_executes_once     r   c                    r   )NTc                     s   t d _tjdddttjtddd} t ! | j	dd	i d
I d H } 
  |jd dks2J W d    d S 1 s=w   Y  d S )Nr[   TrN   r\   ru   rV   r^   rb   rc   rd   r   rg   )r   rO   r   rk   rX   r   rU   rx   rS   r   rm   r   r   r   r   r   r     s"   

	"zBtest_aiohttp_retries_successful_request_executes_once.<locals>.runr   r   r   r   r   5test_aiohttp_retries_successful_request_executes_once  r   r   c                    r   )NTc                     s   t dt df _tjdddttjtddd} t ! | j	d	d
i dI d H } 
  |jd dks6J W d    d S 1 sAw   Y  d S )Nr   r[   TrN   r\   ru   r   r^   rb   rc   rd   r   rg   )r   rz   r   rk   rX   r   rU   rx   rS   r   r{   r   r   r   r   r   r     s&   
	"zEtest_aiohttp_retries_failed_request_retries_successfully.<locals>.runr   r   r   r   r   8test_aiohttp_retries_failed_request_retries_successfully  s   r   c                    r   )NTc                     s   t dt df _tjdddd} t & | jddi tjtd	d
I d H } 	  |j
d dks3J W d    d S 1 s>w   Y  d S )Nr   r[   TrN   r\   r   rb   rc   ru   r}   r   rg   )r   rz   r   rk   rS   r   r   rU   rx   r{   r   r   r   r   r   r     s*   "zVtest_aiohttp_retries_failed_request_retries_successfully_at_request_level.<locals>.runr   r   r   r   r   Itest_aiohttp_retries_failed_request_retries_successfully_at_request_level     r   c                    r   )NTc                     s   t dt df _tjdddttjtddd} t 7 z| j	d	d
i dI d H  J d t
jyG } z|jdks=J W Y d }~nd }~ww    W d    d S 1 sWw   Y  d S Nr   r   TrN   r\   ru   r   r^   rb   rc   rd   Fr1   )r   rz   r   rk   rX   r   rU   rx   rS   r   r   r8   r   r{   r   r   r   r   r     s0   
	
"zGtest_aiohttp_retries_failed_request_retries_unsuccessfully.<locals>.runr   r   r   r   r   :test_aiohttp_retries_failed_request_retries_unsuccessfully  s   r   c                    r   )NTc                     s   t dt df _tjdddd} t : z| jddi d	tid
I d H  J d tjyB } z|j	dks8J W Y d }~nd }~ww  
  W d    d S 1 sRw   Y  d S Nr   r   TrN   r\   r   rb   rc   rv   r}   Fr1   )r   rz   r   rk   rS   r   rx   r   r8   r   r{   r   r   r   r   r   0  s0   
"zXtest_aiohttp_retries_failed_request_retries_unsuccessfully_at_request_level.<locals>.runr   r   r   r   r   Ktest_aiohttp_retries_failed_request_retries_unsuccessfully_at_request_level)  s   r   c                  C   s   t jtjd} tdtdf| j_tjdddt	t
jtd| dd	}t " |jd
di d}t| | j  | jjdks?J W d    d S 1 sJw   Y  d S )NrY   r   r[   TrN   r\   ru   rw   r^   rb   rc   rd   r/   )r   rh   r   ri   r"   rj   rz   r   rk   rX   r   rU   rx   rS   request_streamedlistr{   
call_countro   rp   streamr   r   r   9test_retries_streamed_failed_request_retries_successfullyO  s*   


"r   c                  C   s   t jtjd} tdtdf| j_tjdddt	| dd}t
 ' |jd	d
i tjtdd}t| | j  | jjdks?J W d    d S 1 sJw   Y  d S )NrY   r   r[   TrN   r\   r]   r^   rb   rc   ru   r}   r/   )r   rh   r   ri   r"   rj   rz   r   rk   rX   rS   r   r   rU   rx   r   r{   r   r   r   r   r   Jtest_retries_streamed_failed_request_retries_successfully_at_request_leveli  s.   	

"r   c                  C   s   t jtjd} tdtdf| j_tjdddt	t
jtd| dd	}t 9 z|jd
di d}t| J d tjyP } z|jdksFJ W Y d }~nd }~ww | j  W d    d S 1 saw   Y  d S r   )r   rh   r   ri   r"   rj   rz   r   rk   rX   r   rU   rx   rS   r   r   r   r8   r   r{   ro   rp   r   r;   r   r   r   ;test_retries_streamed_failed_request_retries_unsuccessfully  s4   

"r   c                  C   s   t jtjd} tdtdf| j_tjdddt	| dd}t
 < z|jd	d
i dtid}t| J d tjyN } z|jdksDJ W Y d }~nd }~ww | j  W d    d S 1 s_w   Y  d S r   )r   rh   r   ri   r"   rj   rz   r   rk   rX   rS   r   rx   r   r   r8   r   r{   r   r   r   r   Ltest_retries_streamed_failed_request_retries_unsuccessfully_at_request_level  s8   	"r   c                  C   r   )NFc                     s   t jtjd} tdtdf| j_tjdddt	t
jtd| dd	}t + |jd
di dI d H }|2 z3 d H W }q46 | j  | jjdksIJ W d    d S 1 sTw   Y  d S )NrY   r   r[   TrN   r\   ru   r   r^   rb   rc   rd   r/   )r   rh   r   r   r"   r   rz   r   rk   rX   r   rU   rx   rS   async_request_streamedr{   r   ro   rp   r   _r   r   r   r     s0   


"zLtest_async_retries_streamed_failed_request_retries_successfully.<locals>.runr   r   r   r   r   ?test_async_retries_streamed_failed_request_retries_successfully  s   r   c                  C   r   )NFc                     s   t jtjd} tdtdf| j_tjdddt	| dd}t
 0 |jd	d
i tjtddI d H }|2 z3 d H W }q46 | j  | jjdksIJ W d    d S 1 sTw   Y  d S )NrY   r   r[   TrN   r\   r   r^   rb   rc   ru   r}   r/   )r   rh   r   r   r"   r   rz   r   rk   rX   rS   r   r   rU   rx   r{   r   r   r   r   r   r     s4   	

"z]test_async_retries_streamed_failed_request_retries_successfully_at_request_level.<locals>.runr   r   r   r   r   Ptest_async_retries_streamed_failed_request_retries_successfully_at_request_level  r   r   c                  C   r   )NFc                     s   t jtjd} tdtdf| j_tjdddt	t
jtd| dd	}t B z|jd
di dI d H }|2 z3 d H W }q56 J d tjyZ } z|jdksPJ W Y d }~nd }~ww | j  W d    d S 1 skw   Y  d S r   )r   rh   r   r   r"   r   rz   r   rk   rX   r   rU   rx   rS   r   r   r8   r   r{   ro   rp   r   r   r;   r   r   r   r   	  s:   

"zNtest_async_retries_streamed_failed_request_retries_unsuccessfully.<locals>.runr   r   r   r   r   Atest_async_retries_streamed_failed_request_retries_unsuccessfully  r   r   c                  C   r   )NFc                     s   t jtjd} tdtdf| j_tjdddt	| dd}t
 G z|jd	d
i tjtddI d H }|2 z3 d H W }q56 J d tjyZ } z|jdksPJ W Y d }~nd }~ww | j  W d    d S 1 skw   Y  d S r   )r   rh   r   r   r"   r   rz   r   rk   rX   rS   r   r   rU   rx   r   r8   r   r{   r   r   r   r   r   ,  s>   	
"z_test_async_retries_streamed_failed_request_retries_unsuccessfully_at_request_level.<locals>.runr   r   r   r   r   Rtest_async_retries_streamed_failed_request_retries_unsuccessfully_at_request_level)  s   r   c                    r   )NTc                     s   t dt dddf _tjdddttjtddd	} t ) | j	d
di dI d H }|2 z3 d H W }q-6  
   jdks@J W d    d S 1 sKw   Y  d S )Nr   r[   Tr   rN   r\   ru   r   r^   rb   rc   rd   r/   )r   rz   r   rk   rX   r   rU   rx   rS   r   r{   r   rp   r   r   r   r   r   r   X  s,   

	"zNtest_aiohttp_retries_streamed_failed_request_retries_successfully.<locals>.runr   r   r   r   r   Atest_aiohttp_retries_streamed_failed_request_retries_successfullyQ  r   r   c                    r   )NTc                     s   t dt dddf _tjdddd} t . | jdd	i tjtd
dI d H }|2 z3 d H W }q*6  	   j
dks=J W d    d S 1 sHw   Y  d S )Nr   r[   Tr   rN   r\   r   rb   rc   ru   r}   r/   )r   rz   r   rk   rS   r   r   rU   rx   r{   r   r   r   r   r   r   z  s,   

"z_test_aiohttp_retries_streamed_failed_request_retries_successfully_at_request_level.<locals>.runr   r   r   r   r   Rtest_aiohttp_retries_streamed_failed_request_retries_successfully_at_request_levels  r   r   c                    r   )NTc                     s   t dt df _tjdddttjtddd} t A z| j	d	d
i dI d H }|2 z3 d H W }q,6 J d t
jyQ } z|jdksGJ W Y d }~nd }~ww    W d    d S 1 saw   Y  d S r   )r   rz   r   rk   rX   r   rU   rx   rS   r   r   r8   r   r{   rp   r   r   r;   r   r   r   r     s6   
	
"zPtest_aiohttp_retries_streamed_failed_request_retries_unsuccessfully.<locals>.runr   r   r   r   r   Ctest_aiohttp_retries_streamed_failed_request_retries_unsuccessfully     r   c                    r   )NTc                     s   t dt df _tjdddd} t D z| jddi d	tid
I d H }|2 z3 d H W }q'6 J d tjyL } z|j	dksBJ W Y d }~nd }~ww  
  W d    d S 1 s\w   Y  d S r   )r   rz   r   rk   rS   r   rx   r   r8   r   r{   r   r   r   r   r     s6   
"zatest_aiohttp_retries_streamed_failed_request_retries_unsuccessfully_at_request_level.<locals>.runr   r   r   r   r   Ttest_aiohttp_retries_streamed_failed_request_retries_unsuccessfully_at_request_level  r   r   c                    r   )NTc               
      s   t jt jddddd d d tdtdf _tjdddd	} t	 ! | j
d
di dI d H }   |jd dks;J W d    d S 1 sFw   Y  d S )N	localhostP   FT)Zconnection_keyZos_errorr[   rN   r\   r   rb   rc   rd   r   rg   )r   ZClientConnectorErrorZclient_reqrepZConnectionKeyOSErrorr   rz   r   rk   rS   r   r{   r   r   r   r   r   r     s*   "zMtest_aiohttp_retries_client_connector_error_retries_successfully.<locals>.runr   r   r   r   r   @test_aiohttp_retries_client_connector_error_retries_successfully  s   r   )NNN)F)N__doc__r   collections.abcr   r=   Zunittestr   Zpytestr   ZAIOHTTP_NOT_INSTALLEDImportErrorr   Zgoogle.oauth2r   r   rE    r   r   r   r   markZskipifZrequires_aiohttpr7   Zfixturer   intr   r"   r+   r<   rH   rM   rS   rX   rr   rt   r2   rx   ry   r|   r~   r   r   r   r   r   r   r   r   r   r   boolr   rQ   objectZClientSessionr   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   <module>   s   


'#


!"!& $" "#(  ##