ó
    Ñ]j  ã                   ój  • S SK r S SKrS SKJr  \R                  (       a
  S SKrS SKJr   " S S\ R                  5      r\R                  \\R                  S/\4   4   r " S S\5      r " S	 S
\5      r " S S\5      r\" 5       r " S S\5      r " S S\5      r " S S\5      r " S S\5      rg)é    N)Ú_utils)ÚRetryCallStatec                   ó\   • \ rS rSrSr\R                  SSS\4S j5       rSS jr	SS jr
S	rg
)Ú	stop_baseé   z(Abstract base class for stop strategies.Úretry_stater   Úreturnc                 ó   • g ©N© ©Úselfr   s     ÚJ/home/mande/repo/quber/.venv/lib/python3.13/site-packages/tenacity/stop.pyÚ__call__Ústop_base.__call__   s   € àó    c                 ó   • [        X5      $ r   )Ústop_all©r   Úothers     r   Ú__and__Ústop_base.__and__"   ó   € Ü˜Ó$Ð$r   c                 ó   • [        X5      $ r   )Ústop_anyr   s     r   Ú__or__Ústop_base.__or__%   r   r   r   N)r   r   r	   r   )r   r   r	   r   )Ú__name__Ú
__module__Ú__qualname__Ú__firstlineno__Ú__doc__ÚabcÚabstractmethodÚboolr   r   r   Ú__static_attributes__r   r   r   r   r      s6   † Ù2à×ÑðÐ$4ð ¸ó ó ðô%÷%r   r   r   c                   ó<   • \ rS rSrSrS\SS4S jrSSS\4S	 jrS
r	g)r   é,   z+Stop if any of the stop condition is valid.Ústopsr	   Nc                 ó   • Xl         g r   ©r)   ©r   r)   s     r   Ú__init__Ústop_any.__init__/   ó   € Ø�
r   r   r   c                 óB   ^• [        U4S jU R                   5       5      $ )Nc              3   ó2   >#   • U  H  o" T5      v •  M     g 7fr   r   ©Ú.0Úxr   s     €r   Ú	<genexpr>Ú$stop_any.__call__.<locals>.<genexpr>3   ó   øé € Ð6ª: a�1�[—>�>ª:ùó   ƒ)Úanyr)   r   s    `r   r   Ústop_any.__call__2   ó   ø€ ÜÔ6¨4¯:ª:Ó6Ó6Ð6r   r+   ©
r   r   r    r!   r"   r   r-   r%   r   r&   r   r   r   r   r   ,   s,   † Ù5ð˜yð ¨Tô ð7Ð$4ð 7¸÷ 7r   r   c                   ó<   • \ rS rSrSrS\SS4S jrSSS\4S	 jrS
r	g)r   é6   z*Stop if all the stop conditions are valid.r)   r	   Nc                 ó   • Xl         g r   r+   r,   s     r   r-   Ústop_all.__init__9   r/   r   r   r   c                 óB   ^• [        U4S jU R                   5       5      $ )Nc              3   ó2   >#   • U  H  o" T5      v •  M     g 7fr   r   r2   s     €r   r5   Ú$stop_all.__call__.<locals>.<genexpr>=   r7   r8   )Úallr)   r   s    `r   r   Ústop_all.__call__<   r;   r   r+   r<   r   r   r   r   r   6   s,   † Ù4ð˜yð ¨Tô ð7Ð$4ð 7¸÷ 7r   r   c                   ó*   • \ rS rSrSrSSS\4S jrSrg)	Ú_stop_neveré@   zNever stop.r   r   r	   c                 ó   • g)NFr   r   s     r   r   Ú_stop_never.__call__C   s   € Ør   r   N)r   r   r    r!   r"   r%   r   r&   r   r   r   rG   rG   @   s   † ÙðÐ$4ð ¸÷ r   rG   c                   ó4   • \ rS rSrSrS
S jrSSS\4S jrS	rg)Ústop_when_event_setéJ   z!Stop when the given event is set.r	   Nc                 ó   • Xl         g r   ©Úevent)r   rP   s     r   r-   Ústop_when_event_set.__init__M   r/   r   r   r   c                 ó6   • U R                   R                  5       $ r   )rP   Úis_setr   s     r   r   Ústop_when_event_set.__call__P   s   € Ø�z‰z× Ñ Ó"Ð"r   rO   )rP   zthreading.Eventr	   N)	r   r   r    r!   r"   r-   r%   r   r&   r   r   r   rL   rL   J   s   † Ù+ôð#Ð$4ð #¸÷ #r   rL   c                   ó<   • \ rS rSrSrS\SS4S jrSSS\4S	 jrS
r	g)Ústop_after_attemptéT   z.Stop when the previous attempt >= max_attempt.Úmax_attempt_numberr	   Nc                 ó   • Xl         g r   ©rX   )r   rX   s     r   r-   Ústop_after_attempt.__init__W   s   € Ø"4Õr   r   r   c                 ó4   • UR                   U R                  :¬  $ r   )Úattempt_numberrX   r   s     r   r   Ústop_after_attempt.__call__Z   s   € Ø×)Ñ)¨T×-DÑ-DÑDÐDr   rZ   )
r   r   r    r!   r"   Úintr-   r%   r   r&   r   r   r   rV   rV   T   s/   † Ù8ð5¨3ð 5°4ô 5ðEÐ$4ð E¸÷ Er   rV   c                   óP   • \ rS rSrSrS\R                  SS4S jrSSS\4S	 jr	S
r
g)Ústop_after_delayé^   a?  
Stop when the time from the first attempt >= limit.

Note: `max_delay` will be exceeded, so when used with a `wait`, the actual total delay will be greater
than `max_delay` by some of the final sleep period before `max_delay` is exceeded.

If you need stricter timing with waits, consider `stop_before_delay` instead.
Ú	max_delayr	   Nc                 ó:   • [         R                  " U5      U l        g r   ©r   Ú
to_secondsrc   ©r   rc   s     r   r-   Ústop_after_delay.__init__h   ó   € Ü×*Ò*¨9Ó5ˆ�r   r   r   c                 ód   • UR                   c  [        S5      eUR                   U R                  :¬  $ ©Nz4__call__() called but seconds_since_start is not set)Úseconds_since_startÚRuntimeErrorrc   r   s     r   r   Ústop_after_delay.__call__k   s/   € Ø×*Ñ*Ñ2ÜÐUÓVÐVØ×.Ñ.°$·.±.Ñ@Ð@r   ©rc   ©r   r   r    r!   r"   r   Útime_unit_typer-   r%   r   r&   r   r   r   ra   ra   ^   s7   † ñð6 &×"7Ñ"7ð 6¸Dô 6ðAÐ$4ð A¸÷ Ar   ra   c                   óP   • \ rS rSrSrS\R                  SS4S jrSSS\4S	 jr	S
r
g)Ústop_before_delayéq   zô
Stop right before the next attempt would take place after the time from the first attempt >= limit.

Most useful when you are using with a `wait` function like wait_random_exponential, but need to make
sure that the max_delay is not exceeded.
rc   r	   Nc                 ó:   • [         R                  " U5      U l        g r   re   rg   s     r   r-   Ústop_before_delay.__init__y   ri   r   r   r   c                 ó~   • UR                   c  [        S5      eUR                   UR                  -   U R                  :¬  $ rk   )rl   rm   Úupcoming_sleeprc   r   s     r   r   Ústop_before_delay.__call__|   s?   € Ø×*Ñ*Ñ2ÜÐUÓVÐVà×+Ñ+¨k×.HÑ.HÑHØ�~‰~ñð	
r   ro   rp   r   r   r   rs   rs   q   s4   † ñð6 &×"7Ñ"7ð 6¸Dô 6ð
Ð$4ð 
¸÷ 
r   rs   )r#   ÚtypingÚtenacityr   ÚTYPE_CHECKINGÚ	threadingr   ÚABCr   ÚUnionÚCallabler%   Ú	StopBaseTr   r   rG   Ú
stop_neverrL   rV   ra   rs   r   r   r   Ú<module>rƒ      s·   ðó  Û å à	××Ûå'ô%�—‘ô %ð �L‰L˜ F§O¡OÐ5EÐ4FÈÐ4LÑ$MÐMÑN€	ô7ˆyô 7ô7ˆyô 7ô�)ô ñ ‹]€
ô#˜)ô #ôE˜ô EôA�yô Aô&
˜	õ 
r   