U ��.e�&�@slddlZddlmZddlZddlZddlZdZdd�ZGdd�de�Z Gdd �d e�Z Gd d �d e �Z dS) �N)�sixi���?csBt��dkr,t�d�r,dd�}|�d�S��fdd�}|SdS)z� Decorator function that instantiates the Retrying object @param *dargs: positional arguments passed to Retrying object @param **dkw: keyword arguments passed to the Retrying object �rcst����fdd��}|S)Ncst�j�f|�|�S�N��Retrying�call��args�kw��f��8/usr/lib/python3.8/site-packages/pip/_vendor/retrying.py� wrapped_f$sz-retry..wrap_simple..wrapped_f�r�wraps�r rr r r� wrap_simple"szretry..wrap_simplecst������fdd��}|S)Ncst���j�f|�|�Srrr)�dargs�dkwr r rr/sz&retry..wrap..wrapped_frr�rrr r�wrap-szretry..wrapN)�len�callable)rrrrr rr�retrys  rc@sneZdZddd�Zdd�Zdd�Zd d �Zd d �Zd d�Zdd�Z dd�Z dd�Z dd�Z dd�Z dd�ZdS)rNFcs |dkr dn||_|dkrdn||_|dkr0dn||_|dkrBdn||_|dkrTdn||_|dkrfdn||_| dkrxdn| |_| dkr�dn| |_| dkr�tn| |_ |dkr�dn||_ g�|dk r̈� |j �|dk r��� |j �|dk r�||_n&|dk�r �fdd�|_n t||�|_dd�g�|dk �r6�� |j�|dk �sJ|dk �rV�� |j�|dk �sj| dk �rv�� |j�| dk �s�| dk �r��� |j�|dk �r�||_n&|dk�r‡fd d�|_n t||�|_| dk�r�|j|_n| |_| dk�r�|j|_n| |_||_dS) N��d��rrcst��fdd��D��S)Nc3s|]}|���VqdSrr ��.0r �ZattemptsZdelayr r� as�6Retrying.__init__....)�anyr )� stop_funcsr r�a�z#Retrying.__init__..c_sdS)Nrr )r �kwargsr r rr%hr&cst��fdd��D��S)Nc3s|]}|���VqdSrr rr r rr!ysr")�maxr )� wait_funcsr rr%yr&)�_stop_max_attempt_number�_stop_max_delay� _wait_fixed�_wait_random_min�_wait_random_max�_wait_incrementing_start�_wait_incrementing_increment�_wait_exponential_multiplier�MAX_WAIT�_wait_exponential_max�_wait_jitter_max�append�stop_after_attempt�stop_after_delay�stop�getattr� fixed_sleep� random_sleep�incrementing_sleep�exponential_sleep�wait� always_reject�_retry_on_exception� never_reject�_retry_on_result�_wrap_exception)�selfr8r>Zstop_max_attempt_numberZstop_max_delayZ wait_fixedZwait_random_minZwait_random_maxZwait_incrementing_startZwait_incrementing_incrementZwait_exponential_multiplierZwait_exponential_maxZretry_on_exceptionZretry_on_result�wrap_exceptionZ stop_funcZ wait_funcZwait_jitter_maxr )r$r)r�__init__:sR                 zRetrying.__init__cCs ||jkS)z;Stop after the previous attempt >= stop_max_attempt_number.)r*�rD�previous_attempt_number�delay_since_first_attempt_msr r rr6�szRetrying.stop_after_attemptcCs ||jkS)z=Stop after the time from the first attempt >= stop_max_delay.)r+rGr r rr7�szRetrying.stop_after_delaycCsdS)z#Don't sleep at all before retrying.rr rGr r r�no_sleep�szRetrying.no_sleepcCs|jS)z0Sleep a fixed amount of time between each retry.)r,rGr r rr:�szRetrying.fixed_sleepcCst�|j|j�S)zISleep a random amount of time between wait_random_min and wait_random_max)�randomZrandintr-r.rGr r rr;�szRetrying.random_sleepcCs$|j|j|d}|dkr d}|S)z� Sleep an incremental amount of time after each attempt, starting at wait_incrementing_start and incrementing by wait_incrementing_increment rr)r/r0)rDrHrI�resultr r rr<�szRetrying.incrementing_sleepcCs2d|}|j|}||jkr"|j}|dkr.d}|S)N�r)r1r3)rDrHrIZexprLr r rr=�s  zRetrying.exponential_sleepcCsdS)NFr �rDrLr r rrA�szRetrying.never_rejectcCsdS)NTr rNr r rr?�szRetrying.always_rejectcCs4d}|jr ||�|jd�O}n||�|j�O}|S)NFr)� has_exceptionr@�valuerB)rD�attemptZrejectr r r� should_reject�s zRetrying.should_rejectc Os�ttt��d��}d}zt|||�|d�}Wn t��}t||d�}YnX|�|�sf|�|j�Sttt��d��|}|� ||�r�|js�|j r�|���q�t |��n<|� ||�} |j r�t��|j } | td| �} t�| d�|d7}qdS)NrrFTrg@�@)�int�round�time�Attempt�sys�exc_inforR�getrCr8rO� RetryErrorr>r4rKr(�sleep) rD�fnr r'Z start_time�attempt_numberrQ�tbrIr[Zjitterr r rr�s(       z Retrying.call)NNNNNNNNNNNNNFNNN)�__name__� __module__� __qualname__rFr6r7rJr:r;r<r=rAr?rRrr r r rr8s:� S   rc@s*eZdZdZdd�Zd dd�Zdd�Zd S) rVz� An Attempt encapsulates a call to a target function that may end as a normal return value from the function or an Exception depending on what occurred during the execution. cCs||_||_||_dSr)rPr]rO)rDrPr]rOr r rrF�szAttempt.__init__FcCs@|jr6|rt|��qs *!