o
                         @   sL   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d Z	d	S )
z Retry logic for HTTP exceptions.    )absolute_import)division)unicode_literals)
exceptions)retryc                    s    fdd}|S )zDDecorator factory to automatically retry a function for HTTP errors.c                    s   fdd fdd}|S )z<Decorator to automatically retry a function for HTTP errors.c                    s   | t jko	|j kS )N)r   	HttpErrorstatus_code)exc_type	exc_valueunused_tracebackunused_statestatus C/tmp/google-cloud-sdk/lib/googlecloudsdk/api_lib/util/http_retry.pyretryIf!   s   
zFRetryOnHttpStatus.<locals>.RetryOnHttpStatusAttribute.<locals>.retryIfc                     s$   t jdddd}|j | |ddS )N      d   )max_retrialsexponential_sleep_multiplier	jitter_msi  )should_retry_ifsleep_ms)r   RetryerRetryOnException)argskwargsretryerfuncr   r   r   wrapper&   s   
zFRetryOnHttpStatus.<locals>.RetryOnHttpStatusAttribute.<locals>.wrapperr   )r    r!   r   r   r   RetryOnHttpStatusAttribute   s   z5RetryOnHttpStatus.<locals>.RetryOnHttpStatusAttributer   )r   r"   r   r   r   RetryOnHttpStatus   s   r#   N)
__doc__
__future__r   r   r   apitools.base.pyr   googlecloudsdk.core.utilr   r#   r   r   r   r   <module>   s   