o
    Zh\                     @  s   d dl mZ d dlZd dlZd dlZd dlZd dlZd dlm	Z	m
Z
 d dlZd dlmZ d dlmZ d dlmZ eeZdd	d
Zdd ZG dd dejZe	G dd dZdS )    )annotationsN)	dataclassfield)tqdm)MaxRetriesExceeded)	RunConfigargsthreading.ExceptHookArgsc                 C  s   t |  | jN)printexc_type)r    r   E/var/www/html/lang_env/lib/python3.10/site-packages/ragas/executor.pyrunner_exception_hook   s   r   c                   sz   t jd d dk rd| ini }|dkrtj|fi |S tj|fi |fdd  fdd|D }tj|fi |S )	N   )   
   loopc              	     sH    4 I d H  | I d H W  d   I d H  S 1 I d H sw   Y  d S r
   r   )coro)	semaphorer   r   	sema_coro$   s   0zas_completed.<locals>.sema_coroc                   s   g | ]} |qS r   r   ).0c)r   r   r   
<listcomp>(       z as_completed.<locals>.<listcomp>)sysversion_infoasyncioas_completed	Semaphore)r   corosmax_workersZloop_arg_dictZ
sema_corosr   )r   r   r   r      s   r   c                      s8   e Zd Z			dd fddZdddZdd Z  ZS )RunnerTNjobs!t.List[t.Tuple[t.Coroutine, str]]descstrkeep_progress_barboolraise_exceptions
run_configt.Optional[RunConfig]c                   s^   t    || _|| _|| _|| _|pt | _t	 | _
t| j
dd | jD | jjd| _d S )Nc                 S  s   g | ]\}}|qS r   r   )r   r   _r   r   r   r   @   r   z#Runner.__init__.<locals>.<listcomp>)r   r!   r"   )super__init__r$   r&   r(   r*   r   r+   r   Znew_event_loopr   r   r"   futures)selfr$   r&   r(   r*   r+   	__class__r   r   r/   -   s   

zRunner.__init__returnt.List[t.Any]c                   s   g }t | j| jt| j| jdD ]L}dtjf}z|I d H }W n8 ty: } zt	
d|j  W Y d }~n"d }~w tyW } z| jrF|t	jddd W Y d }~nd }~ww || q|S )N)r&   totalZleaver   zmax retries exceeded for z&Runner in Executor raised an exceptionT)exc_info)r   r0   r&   lenr$   r(   npnanr   loggerwarningZ	evolution	Exceptionr*   errorappend)r1   resultsfuturerer   r   r   	_aresultsD   s0   

zRunner._aresultsc                 C  s>   g }z| j |  }W || _| j   d S || _| j   w r
   )r   Zrun_until_completerD   r@   stop)r1   r@   r   r   r   run]   s   z
Runner.run)TTN)
r$   r%   r&   r'   r(   r)   r*   r)   r+   r,   r4   r5   )__name__
__module____qualname__r/   rD   rF   __classcell__r   r   r2   r   r#   ,   s    
r#   c                   @  s~   e Zd ZU dZded< dZded< eeddZd	ed
< dZ	ded< ee
ddZded< dddZdddddZdddZdS )ExecutorZ
Evaluatingr'   r&   Tr)   r(   F)default_factoryreprr5   r$   r*   r,   r+   callable
t.Callablec                   s    fdd}|S )Nc                    s    | i |I d H fS r
   r   )r   kwargsrO   counterr   r   wrapped_callable_asynco   s   zAExecutor.wrap_callable_with_index.<locals>.wrapped_callable_asyncr   )r1   rO   rS   rT   r   rR   r   wrap_callable_with_indexn   s   z!Executor.wrap_callable_with_indexN)namerV   t.Optional[str]c                O  s0   |  |t| j}| j||i ||f d S r
   )rU   r8   r$   r?   )r1   rO   rV   r   rQ   Zcallable_with_indexr   r   r   submitt   s   zExecutor.submitr4   c                 C  sz   t | j| j| j| j| jd}|  z|  W nw |jd u r-| jr&t	dt
d g S t|jdd d}dd |D S )	N)r$   r&   r(   r*   r+   zCExecutor failed to complete. Please check logs above for full info.z5Executor failed to complete. Please check logs above.c                 S  s   | d S )Nr   r   )xr   r   r   <lambda>   s    z"Executor.results.<locals>.<lambda>)keyc                 S  s   g | ]}|d  qS )   r   )r   rB   r   r   r   r      r   z$Executor.results.<locals>.<listcomp>)r#   r$   r&   r(   r*   r+   startjoinr@   RuntimeErrorr;   r>   sorted)r1   Zexecutor_jobZsorted_resultsr   r   r   r@   z   s(   


zExecutor.results)rO   rP   )rO   rP   rV   rW   rG   )rH   rI   rJ   r&   __annotations__r(   r   listr$   r*   r   r+   rU   rX   r@   r   r   r   r   rL   f   s   
 
rL   )r   r	   )
__future__r   r   loggingr   	threadingtypingtdataclassesr   r   numpyr9   Z	tqdm.autor   Zragas.exceptionsr   Zragas.run_configr   	getLoggerrH   r;   r   r   Threadr#   rL   r   r   r   r   <module>   s"    

	: