<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <link href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.0-alpha1/dist/css/bootstrap.min.css" rel="stylesheet"
        integrity="sha384-GLhlTQ8iRABdZLl6O3oVMWSktQOp6b7In1Zl3/Jr59b6EGGoI1aFkw7cmDA6j6gD" crossorigin="anonymous">
    <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.3.0/css/all.min.css"
        integrity="sha512-SzlrxWUlpfuzQ+pcUCosxcglQRNAq/DZjVsC0lE40xsADsfeQoEypE+enwcOiGjk/bSuGGKHEyjSoQ1zVisanQ=="
        crossorigin="anonymous" referrerpolicy="no-referrer" />
</head>
</html>
U
    .e&                     @   sl   d dl Z d dlmZ d dlZd dlZd dlZdZdd ZG dd deZ	G dd	 d	eZ
G d
d deZdS )    N)sixi?c                     sB   t  dkr,t d r,dd }| d S  fdd}|S dS )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
       r   c                    s   t   fdd}|S )Nc                     s   t  j f| |S NRetryingcallargskwf 8/usr/lib/python3.8/site-packages/pip/_vendor/retrying.py	wrapped_f$   s    z-retry.<locals>.wrap_simple.<locals>.wrapped_fr   wrapsr   r   r   r   r   wrap_simple"   s    zretry.<locals>.wrap_simplec                    s   t   fdd}|S )Nc                     s   t  jf| |S r   r   r   )dargsdkwr   r   r   r   /   s    z&retry.<locals>.wrap.<locals>.wrapped_fr   r   r   r   r   r   wrap-   s    zretry.<locals>.wrapN)lencallable)r   r   r   r   r   r   r   retry   s
    r   c                   @   sn   e Zd ZdddZdd Zdd Zd	d
 Zdd Zdd Zdd Z	dd Z
dd Zdd Zdd Zdd ZdS )r   NFc                    s  |d krdn|| _ |d krdn|| _|d kr0dn|| _|d krBdn|| _|d krTdn|| _|d krfdn|| _|	d krxdn|	| _|
d krdn|
| _|d krtn|| _	|d krdn|| _
g  |d k	r̈ | j |d k	r | j |d k	r|| _n&|d kr
 fdd| _nt| || _dd g|d k	r6| j |d k	sJ|d k	rV| j |d k	sj|	d k	rv| j |
d k	s|d k	r| j |d k	r|| _n&|d krfd	d| _nt| || _|d kr| j| _n|| _|d kr| j| _n|| _|| _d S )
N   d     r   r   c                    s   t  fddD S )Nc                 3   s   | ]}| V  qd S r   r   .0r   ZattemptsZdelayr   r   	<genexpr>a   s     6Retrying.__init__.<locals>.<lambda>.<locals>.<genexpr>)anyr    )
stop_funcsr    r   <lambda>a       z#Retrying.__init__.<locals>.<lambda>c                  _   s   dS )Nr   r   )r	   kwargsr   r   r   r%   h   r&   c                    s   t  fddD S )Nc                 3   s   | ]}| V  qd S r   r   r   r    r   r   r!   y   s     r"   )maxr    )
wait_funcsr    r   r%   y   r&   )_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)selfr8   r>   Zstop_max_attempt_numberZstop_max_delayZ
wait_fixedZwait_random_minZwait_random_maxZwait_incrementing_startZwait_incrementing_incrementZwait_exponential_multiplierZwait_exponential_maxZretry_on_exceptionZretry_on_resultwrap_exceptionZ	stop_funcZ	wait_funcZwait_jitter_maxr   )r$   r)   r   __init__:   sR    








zRetrying.__init__c                 C   s
   || j kS )z;Stop after the previous attempt >= stop_max_attempt_number.)r*   rD   previous_attempt_numberdelay_since_first_attempt_msr   r   r   r6      s    zRetrying.stop_after_attemptc                 C   s
   || j kS )z=Stop after the time from the first attempt >= stop_max_delay.)r+   rG   r   r   r   r7      s    zRetrying.stop_after_delayc                 C   s   dS )z#Don't sleep at all before retrying.r   r   rG   r   r   r   no_sleep   s    zRetrying.no_sleepc                 C   s   | j S )z0Sleep a fixed amount of time between each retry.)r,   rG   r   r   r   r:      s    zRetrying.fixed_sleepc                 C   s   t | j| jS )zISleep a random amount of time between wait_random_min and wait_random_max)randomZrandintr-   r.   rG   r   r   r   r;      s    zRetrying.random_sleepc                 C   s$   | j | j|d   }|dk r d}|S )z
        Sleep an incremental amount of time after each attempt, starting at
        wait_incrementing_start and incrementing by wait_incrementing_increment
        r   r   )r/   r0   )rD   rH   rI   resultr   r   r   r<      s    zRetrying.incrementing_sleepc                 C   s2   d| }| j | }|| jkr"| j}|dk r.d}|S )N   r   )r1   r3   )rD   rH   rI   ZexprL   r   r   r   r=      s    

zRetrying.exponential_sleepc                 C   s   dS )NFr   rD   rL   r   r   r   rA      s    zRetrying.never_rejectc                 C   s   dS )NTr   rN   r   r   r   r?      s    zRetrying.always_rejectc                 C   s4   d}|j r || |jd O }n|| |jO }|S )NFr   )has_exceptionr@   valuerB   )rD   attemptZrejectr   r   r   should_reject   s
    zRetrying.should_rejectc                 O   s   t tt d }d}zt||||d}W n    t }t||d}Y nX | |sf|| jS t tt d | }| 	||r| js|j
r| qt|n<| ||}	| jrt | j }
|	td|
 }	t|	d  |d7 }qd S )Nr   r   FTr   g     @@)introundtimeAttemptsysexc_inforR   getrC   r8   rO   
RetryErrorr>   r4   rK   r(   sleep)rD   fnr	   r'   Z
start_timeattempt_numberrQ   tbrI   r[   Zjitterr   r   r   r      s(    


zRetrying.call)NNNNNNNNNNNNNFNNN)__name__
__module____qualname__rF   r6   r7   rJ   r:   r;   r<   r=   rA   r?   rR   r   r   r   r   r   r   8   s:                        
S
		r   c                   @   s*   e Zd ZdZdd Zd
ddZdd Zd	S )rV   z
    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.
    c                 C   s   || _ || _|| _d S r   )rP   r]   rO   )rD   rP   r]   rO   r   r   r   rF      s    zAttempt.__init__Fc                 C   s@   | j r6|rt| q<t| jd | jd | jd  n| jS dS )z
        Return the return value of this Attempt instance or raise an Exception.
        If wrap_exception is true, this Attempt is wrapped inside of a
        RetryError before being raised.
        r   r   rM   N)rO   rZ   r   ZreraiserP   )rD   rE   r   r   r   rY      s
    
"zAttempt.getc              	   C   s:   | j r&d| jdt| jd S d| j| jS d S )NzAttempts: {0}, Error:
{1} rM   zAttempts: {0}, Value: {1})rO   formatr]   join	traceback	format_tbrP   rD   r   r   r   __repr__   s     zAttempt.__repr__N)F)r_   r`   ra   __doc__rF   rY   rh   r   r   r   r   rV      s   
rV   c                   @   s    e Zd ZdZdd Zdd ZdS )rZ   zU
    A RetryError encapsulates the last Attempt instance right before giving up.
    c                 C   s
   || _ d S r   )last_attempt)rD   rj   r   r   r   rF     s    zRetryError.__init__c                 C   s   d | jS )NzRetryError[{0}])rc   rj   rg   r   r   r   __str__
  s    zRetryError.__str__N)r_   r`   ra   ri   rF   rk   r   r   r   r   rZ     s   rZ   )rK   Zpip._vendorr   rW   rU   re   r2   r   objectr   rV   	ExceptionrZ   r   r   r   r   <module>   s    *!