
    i                         	 d dl mZ n# e$ r	 d dlmZ Y nw xY w	 d dl mZ n# e$ r	 d dlmZ Y nw xY wd dlZd dlZd dlmZ d dlm	Z	 d Z
d Zd Zd	 Zd
 Zd Zd Zd Zd ZdS )    )create_autospec)	MagicMockN)
retry_callretryc                    dgfd}|                      t          d|           dgd}ddt          |          fd            }t          j        t
                    5   |             d d d            n# 1 swxY w Y   d         |k    sJ d         t          fd	t          |dz
            D                       k    sJ d S )
Nr   c                 (    dxx         | z  cc<   d S Nr    secondsmock_sleep_times    A/usr/local/lib/python3.11/dist-packages/retry/tests/test_retry.py
mock_sleepztest_retry.<locals>.mock_sleep   %    g%    sleep         )triesdelaybackoffc                  2     dxx         dz  cc<   ddz   d S Nr   r   r   hits   r   fztest_retry.<locals>.f!   %    A!	Ar   c              3   (   K   | ]}|z  z  V  d S )Nr   ).0ir   r   s     r   	<genexpr>ztest_retry.<locals>.<genexpr>)   s=       %8 %8!"1%8 %8 %8 %8 %8 %8r   setattrtimer   pytestraisesZeroDivisionErrorsumrange)monkeypatchr   r   r   r   r   r   r   s       @@@@r   
test_retryr-      sv   cO& & & & & gz222#CEEG
eW555    65 
(	)	)  	              q6U????1 %8 %8 %8 %8 %8&+EAI&6&6%8 %8 %8 "8 "8 8 8 8 8 8 8s   (A??BBc                      dgdt          t          d                    fd            }  |             k    sJ d S )Nr   
   infr   c                  N     dxx         dz  cc<    d         k    rS t           r   
ValueErrorr   targets   r   r   ztest_tries_inf.<locals>.f1   2    A!q6VMr   )r   floatr   r   r6   s    @@r   test_tries_infr:   -   sc    #CF
u      133&======r   c                  l    dgdt          d          fd            }  |             k    sJ d S )Nr   r/   r1   c                  N     dxx         dz  cc<    d         k    rS t           r   r3   r5   s   r   r   ztest_tries_minus1.<locals>.f?   r7   r   r   r9   s    @@r   test_tries_minus1r>   ;   sY    #CF
___     _ 133&======r   c                 ^   dgfd}|                      t          d|           dgd}d}d}|}t          ||||          fd            }t          j        t
                    5   |             d d d            n# 1 swxY w Y   d         |k    sJ d         ||dz
  z  k    sJ d S )	Nr   c                 (    dxx         | z  cc<   d S r
   r   r   s    r   r   z"test_max_delay.<locals>.mock_sleepL   r   r   r   r   r   r   )r   r   	max_delayr   c                  2     dxx         dz  cc<   ddz   d S r   r   r   s   r   r   ztest_max_delay.<locals>.fX   r   r   )r%   r&   r   r'   r(   r)   )	r,   r   r   r   r   rA   r   r   r   s	          @@r   test_max_delayrC   I   s8   cO& & & & & gz222#CEEGI
ey'JJJ    KJ 
(	)	)  	              q6U????1%!)!4444444s   )B  BBc                    dgfd}|                      t          d|           dgd}d}t          ||          fd            }t          j        t
                    5   |             d d d            n# 1 swxY w Y   d         |k    sJ d         t          t          |dz
                      k    sJ d S )Nr   c                 (    dxx         | z  cc<   d S r
   r   r   s    r   r   z%test_fixed_jitter.<locals>.mock_sleepf   r   r   r   r/   r   )r   jitterc                  2     dxx         dz  cc<   ddz   d S r   r   r   s   r   r   ztest_fixed_jitter.<locals>.fp   r   r   r$   )r,   r   r   rF   r   r   r   s        @@r   test_fixed_jitterrH   c   s4   cO& & & & & gz222#CEF
v&&&    '& 
(	)	)  	              q6U????1U519%5%5!6!6666666s   #A::A>A>c                      t          t                    } d}	 t          | t          |           n# t          $ r Y nw xY w| j        |k    sJ d S )Nside_effectr   
exceptionsr   )r   RuntimeErrorr   
call_count)f_mockr   s     r   test_retry_callrQ   {   sp    <000FE6l%@@@@@    %%%%%%s   1 
>>c                      t           t           dg} t          |           }d}d }	 t          |t           |          }n# t           $ r Y nw xY w|dk    sJ |j        t	          |           k    sJ d S )N   rJ   r   rL   )rN   r   r   rO   len)rK   rP   r   results       r   test_retry_call_2rV      s    q1K;///FEFF|5III    Q;;;;K 0 0000000s   = 
A
	A
c                      dd} d}d }t          | |          }	 t          ||g          }n# t          $ r Y nw xY w||k    sJ |j        dk    sJ d S )Nr   c                      | dk     r| S t           r
   rN   values    r   r   z$test_retry_call_with_args.<locals>.f       199Lr   r<   specreturn_value)fargsr   r   r   r   rN   rO   )r   r_   rU   rP   s       r   test_retry_call_with_argsrc      s        LFAL999FF<.999    \!!!!!!!!!!s   . 
;;c                      dd} ddi}d }t          | |d                   }	 t          ||          }n# t          $ r Y nw xY w||d         k    sJ |j        dk    sJ d S )	Nr   c                      | dk     r| S t           r
   rY   rZ   s    r   r   z&test_retry_call_with_kwargs.<locals>.f   r\   r   r[   r<   r]   )fkwargsr   ra   rb   )r   kwargsrU   rP   s       r   test_retry_call_with_kwargsrh      s        r]FFAF7O<<<FFF333    VG_$$$$!!!!!!s   5 
AA)unittest.mockr   ImportErrormockr   r&   r'   	retry.apir   r   r-   r:   r>   rC   rH   rQ   rV   rc   rh   r   r   r   <module>rm      sh  %------- % % %$$$$$$$$%'''''''                       8 8 84    5 5 547 7 70& & &1 1 1" " "(" " " " "s   	 " 00