
    -j                         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                      Zdededefd	Zdededefd
ZdS )    N)	dataclass)AsyncRetryingRetrying	WrappedFnretry_if_exception_typestop_after_attemptwait_random_exponentialc                       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     Z/lsinfo/ai/hellotax_ai/base_platform/venv/lib/python3.11/site-packages/ragas/run_config.pyr   r      s           GSKHcK 	 QW	}	}%s*+	-     r!   r   fn
run_configreturnc                     t          t          d|j                  t          |j                  t          |j                  d          }|                    |           S )N   
multipliermaxT)waitstopretryreraise)r   r	   r   r   r   r   r   wrapsr#   r$   rs      r"   	add_retryr2      sZ    $z7JKKK
 677%j&@AA		 	 	A 772;;r!   c                     t          t          d|j                  t          |j                  d          }|                    |           S )z8
    Decorator for retrying a function if it fails.
    r'   r(   T)r+   r,   r.   )r   r	   r   r   r   r/   r0   s      r"   add_async_retryr4   (   sN     	$z7JKKK
 677	 	 	A
 772;;r!   )typingr   dataclassesr   tenacityr   r   r   r   r   r	   r   r2   r4   r    r!   r"   <module>r8      s       ! ! ! ! ! !                       )  y    		 	y 	Y 	 	 	 	 	 	r!   