
                         J    d Z ddlmZ ddlmZ ddlmZ ddlmZ ddlmZ d Z	y)	z Retry logic for HTTP exceptions.    )absolute_import)division)unicode_literals)
exceptions)retryc                       fd}|S )zDDecorator factory to automatically retry a function for HTTP errors.c                 "     fd fd}|S )z<Decorator to automatically retry a function for HTTP errors.c                 L    | t         j                  k(  xr |j                  k(  S )N)r   	HttpErrorstatus_code)exc_type	exc_valueunused_tracebackunused_statestatuss       -lib/googlecloudsdk/api_lib/util/http_retry.pyretryIfzFRetryOnHttpStatus.<locals>.RetryOnHttpStatusAttribute.<locals>.retryIf!   s)    *... .##v-/    c                  `    t        j                  ddd      }|j                  | |d      S )N      d   )max_retrialsexponential_sleep_multiplier	jitter_msi  )should_retry_ifsleep_ms)r   RetryerRetryOnException)argskwargsretryerfuncr   s      r   wrapperzFRetryOnHttpStatus.<locals>.RetryOnHttpStatusAttribute.<locals>.wrapper&   s=    11(+-g%%dD&6= & N Nr    )r#   r$   r   r   s   ` @r   RetryOnHttpStatusAttributez5RetryOnHttpStatus.<locals>.RetryOnHttpStatusAttribute   s    /
N
 Nr   r%   )r   r&   s   ` r   RetryOnHttpStatusr'      s     
$#r   N)
__doc__
__future__r   r   r   apitools.base.pyr   googlecloudsdk.core.utilr   r'   r%   r   r   <module>r,      s     ' &  ' ' *$r   