
                             S r SSKJr  SSKJr  SSKJr  SSKrSSKrSSKJr	  SSK
Jr  SSK
Jr  SSKr\R                  R                  S	:X  a   \R                  R                   S
:  a  SSKJr  SS jrS rg)z5Utilities for retrying requests on failures for gRPC.    )absolute_import)division)unicode_literalsN)
exceptions)errors)
retry_util      c                    A AA[        U[        R                  [        R                  [
        R                  [
        R                  [
        R                  [
        R                  [
        R                  [        R
                  R                  [        R
                  R                  [        R
                  R                  [        45      $ )z'Returns True if the error is retriable.)
isinstanceauth_exceptionsTransportErrorr   RetryableApiErrorr   
BadGatewayGatewayTimeoutInternalServerErrorTooManyRequestsServiceUnavailablerequestsConnectionErrorChunkedEncodingErrorTimeout)exc_type	exc_valueexc_tracebackstates       9lib/googlecloudsdk/api_lib/storage/gcs_grpc/retry_util.pyis_retriabler   %   s     u	I$$$$  ##))..!!  
     c                 F   ^  [         R                  " T 5      U 4S j5       nU$ )z)A decorator to retry on transient errors.c                  :   > [         R                  " T[        U US9$ )N)targetshould_retry_iftarget_argstarget_kwargs)r   retryerr   )argskwargsfuncs     r   wrapped_func*grpc_default_retryer.<locals>.wrapped_func;   s"    $	 r   )	functoolswraps)r)   r*   s   ` r   grpc_default_retryerr.   9   s&    ??4  
r   )NNNN)__doc__
__future__r   r   r   r,   sysgoogle.authr   r   googlecloudsdk.api_lib.storager   r   r   version_infomajorminorgoogle.api_corer   r.    r   r   <module>r9      s[    < &  '  
 5 1 5  Q3#3#3#9#9A#=((
r   