Ë
    dQêjØ  ã                   ó¶   — d dl Z d dlmZmZmZmZmZmZmZm	Z	  G d„ de
«      Z G d„ d«      Z G d„ de j                  «      Zed	k(  r e j                   «        yy)
é    N)ÚBackoffÚDEFAULT_RETRYÚis_too_many_requestsÚon_errorÚon_retry_after_errorÚretry_after_max_retriesÚretry_after_secondsÚretry_on_conflictc                   ó    ‡ — e Zd Zdˆ fd„	Zˆ xZS )Ú	FakeErrorc                 óf   •— t         ‰| �  dj                  |«      «       || _        |xs i | _        y )Nz
status {0})ÚsuperÚ__init__ÚformatÚstatusÚheaders)Úselfr   r   Ú	__class__s      €úd/home/oem/CyberBrain26-unified/.venv/lib/python3.12/site-packages/kubernetes/aio/utils/retry_test.pyr   zFakeError.__init__   s-   ø€ Ü‰Ñ˜×,Ñ,¨VÓ4Ô5ØˆŒØ’} "ˆ�ó    ©N)Ú__name__Ú
__module__Ú__qualname__r   Ú__classcell__)r   s   @r   r   r      s   ø„ ÷%ñ %r   r   c                   ó   — e Zd Zd„ Zy)ÚRetryOptionsc                 ó   — || _         y r   ©Úattempts)r   r    s     r   r   zRetryOptions.__init__'   s	   € Ø ˆ�r   N)r   r   r   r   © r   r   r   r   %   s   „ ó!r   r   c                   ó0   — e Zd Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zy)ÚAioRetryTestc           	      óJ   — | j                  t        t        dddd¬«      «       y )Né   g{®Gáz„?ç      ð?gš™™™™™¹?)ÚstepsÚdurationÚfactorÚjitter)ÚassertEqualr   r   ©r   s    r   Ú$test_default_retry_matches_client_goz1AioRetryTest.test_default_retry_matches_client_go-   s!   € Ø×ÑÜÜ˜! d°3¸sÔCõ	
r   c                 ó˜   — | j                  t        t        d¬«      «      d«       | j                  t        t        d¬«      «      d«       y )Né   r   é   é   r   )r+   r   r   r,   s    r   Ú0test_retry_after_backoff_uses_aio_retry_attemptsz=AioRetryTest.test_retry_after_backoff_uses_aio_retry_attempts3   s8   € Ø×ÑÔ0´ÀqÔ1IÓJÈAÔNØ×ÑÔ0´ÀqÔ1IÓJÈAÕNr   c                 óV   — t        dddi«      }| j                  t        |«      d«       y )Né­  úRetry-AfterÚ7g      @)r   r+   r	   )r   Úerrors     r   Ú-test_retry_after_seconds_parses_delay_secondsz:AioRetryTest.test_retry_after_seconds_parses_delay_seconds7   s)   € Ü˜# ¨sÐ3Ó4ˆà×ÑÔ,¨UÓ3°SÕ9r   c              ƒ   óþ   ‡‡K  — g Šg Šˆfd„}ˆfd„}t        t        ddd¬«      d„ ||d„ ¬	«      ƒ d {  –—† }| j                  |d
«       | j                  t        ‰«      d«       | j                  ‰ddg«       y 7 ŒF­w)Nc               “   ób   •K  — ‰ j                  d«       t        ‰ «      dk  rt        d«      ‚y­w)Nr1   r/   éô  Úok©ÚappendÚlenr   r   s   €r   Úfnz?AioRetryTest.test_on_error_retries_retriable_errors.<locals>.fn@   s,   øè ø€ Ø�O‰O˜AÔÜ�8‹}˜qÒ Ü “nÐ$Øùó   ƒ,/c              “   ó0   •K  — ‰j                  | «       y ­wr   ©r>   ©ÚdelayÚsleepss    €r   ÚsleepzBAioRetryTest.test_on_error_retries_retriable_errors.<locals>.sleepF   ó   øè ø€ Ø�M‰M˜%Õ ùó   ƒé   r&   ç       @©r'   r(   r)   c                 ó"   — t        | dd «      dk(  S )Nr   r;   )Úgetattr)Úes    r   ú<lambda>zEAioRetryTest.test_on_error_retries_retriable_errors.<locals>.<lambda>K   s   € ”g˜a ¨4Ó0°CÑ7€ r   c                   ó   — y©Ng        r!   r!   r   r   rP   zEAioRetryTest.test_on_error_retries_retriable_errors.<locals>.<lambda>N   ó   � r   ©Ú
sleep_funcÚrandom_funcr<   r/   )r   r   r+   r?   ©r   r@   rG   Úresultr    rF   s       @@r   Ú&test_on_error_retries_retriable_errorsz3AioRetryTest.test_on_error_retries_retriable_errors<   sƒ   ùè ø€ ØˆØˆô	ô	!ô  Ü˜! c°#Ô6Ù7ØØÙ#ô
÷ 
ˆð 	×Ñ˜ Ô&Ø×Ñœ˜X›¨Ô*Ø×Ñ˜ # s Õ,ð
ús   „0A=´A;µAA=c              ƒ   óÌ   ‡‡K  — g Šg Šˆfd„}ˆfd„}t        t        ddd¬«      t        ||d„ ¬«      ƒ d {  –—† }| j                  |d	«       | j                  ‰d
g«       y 7 Œ*­w)Nc               “   óh   •K  — ‰ j                  d«       t        ‰ «      dk  rt        dddi«      ‚y­w)Nr1   r0   r4   r5   Ú3r<   r=   r   s   €r   r@   zMAioRetryTest.test_on_retry_after_error_honors_retry_after_for_429.<locals>.fnY   s4   øè ø€ Ø�O‰O˜AÔÜ�8‹}˜qÒ Ü  m°SÐ%9Ó:Ð:Øùs   ƒ/2c              “   ó0   •K  — ‰j                  | «       y ­wr   rC   rD   s    €r   rG   zPAioRetryTest.test_on_retry_after_error_honors_retry_after_for_429.<locals>.sleep_   rH   rI   r/   r&   rK   rL   c                   ó   — yrR   r!   r!   r   r   rP   zSAioRetryTest.test_on_retry_after_error_honors_retry_after_for_429.<locals>.<lambda>g   rS   r   rT   r<   g      @)r   r   r   r+   rW   s       @@r   Ú4test_on_retry_after_error_honors_retry_after_for_429zAAioRetryTest.test_on_retry_after_error_honors_retry_after_for_429U   sm   ùè ø€ ØˆØˆô	ô	!ô ,Ü˜! c°#Ô6Ü ØØÙ#ô
÷ 
ˆð 	×Ñ˜ Ô&Ø×Ñ˜ # Õ'ð
ús   „3A$·A"¸+A$c              ƒ   óú   ‡‡K  — g Šg Šˆfd„}ˆfd„}t        |t        ddd¬«      |d„ ¬«      ƒ d {  –—† }| j                  |d«       | j                  t        ‰«      d«       | j                  ‰ddg«       y 7 ŒF­w)	Nc               “   ób   •K  — ‰ j                  d«       t        ‰ «      dk  rt        d«      ‚y­w)Nr1   r/   i™  Úupdatedr=   r   s   €r   r@   z7AioRetryTest.test_retry_on_conflict_retries.<locals>.fnq   s,   øè ø€ Ø�O‰O˜AÔÜ�8‹}˜qÒ Ü “nÐ$ØùrA   c              “   ó0   •K  — ‰j                  | «       y ­wr   rC   rD   s    €r   rG   z:AioRetryTest.test_retry_on_conflict_retries.<locals>.sleepw   rH   rI   r/   r&   rL   c                   ó   — yrR   r!   r!   r   r   rP   z=AioRetryTest.test_retry_on_conflict_retries.<locals>.<lambda>~   rS   r   )ÚbackoffrU   rV   rb   )r
   r   r+   r?   rW   s       @@r   Útest_retry_on_conflict_retriesz+AioRetryTest.test_retry_on_conflict_retriesm   s€   ùè ø€ ØˆØˆô	ô	!ô )ØÜ !¨c¸#Ô>ØÙ#ô	
÷ 
ˆð 	×Ñ˜ Ô+Ø×Ñœ˜X›¨Ô*Ø×Ñ˜ # s Õ,ð
ús   „.A;²A9³AA;N)	r   r   r   r-   r2   r8   rY   r_   rf   r!   r   r   r#   r#   +   s!   „ ò
òOò:ò
-ò2(ó0-r   r#   Ú__main__)ÚunittestÚkubernetes.aio.utils.retryr   r   r   r   r   r   r	   r
   Ú	Exceptionr   r   ÚIsolatedAsyncioTestCaser#   r   Úmainr!   r   r   ú<module>rm      s^   ðó ÷	÷ 	ó 	ô%�	ô %÷!ñ !ôX-�8×3Ñ3ô X-ðv ˆzÒØ€H‡M�M…Oð r   