o
    Zh                     @   sv   d dl Zd dlmZ d dlmZmZmZmZm	Z	m
Z
 eG dd dZdededefd	d
ZdededefddZdS )    N)	dataclass)AsyncRetryingRetrying	WrappedFnretry_if_exception_typestop_after_attemptwait_random_exponentialc                   @   sn   e Zd ZU dZdZeed< dZeed< dZeed< dZ	eed< e
Zejeje ejeje d	f f ed
< dS )	RunConfigz3
    Configuration for a timeouts and retries.
    <   timeout
   max_retriesmax_wait   max_workers.exception_typesN)__name__
__module____qualname____doc__r   int__annotations__r   r   r   	Exceptionr   tUnionTypeBaseExceptionTuple r   r   G/var/www/html/lang_env/lib/python3.10/site-packages/ragas/run_config.pyr	      s   
 r	   fn
run_configreturnc                 C   s0   t td|jdt|jt|jdd}|| S )N   Z
multipliermaxT)waitstopretryreraise)r   r   r   r   r   r   r   wrapsr    r!   rr   r   r   	add_retry   s   
r-   c                 C   s(   t td|jdt|jdd}|| S )z8
    Decorator for retrying a function if it fails.
    r#   r$   T)r&   r'   r)   )r   r   r   r   r   r*   r+   r   r   r   add_async_retry(   s   
r.   )typingr   dataclassesr   Ztenacityr   r   r   r   r   r   r	   r-   r.   r   r   r   r   <module>   s     

