a
    ag_	                     @  sd   d dl mZ d dlZd dlmZmZmZmZmZm	Z	m
Z
 d dlmZ d dlmZ G dd deZdS )    )annotationsN)AnyAsyncIteratorDictListLiteralUnioncast)AsyncCallbackHandler)	LLMResultc                   @  s   e Zd ZU dZded< ded< edddd	Zd
dddZdddd
dddZddd
dddZ	ddd
dddZ
ddd
dddZddd d!Zd"S )#AsyncIteratorCallbackHandlerz0Callback handler that returns an async iterator.zasyncio.Queue[str]queuezasyncio.Eventdonebool)returnc                 C  s   dS )NT selfr   r   q/var/www/html/cobodadashboardai.evdpl.com/venv/lib/python3.9/site-packages/langchain/callbacks/streaming_aiter.pyalways_verbose   s    z+AsyncIteratorCallbackHandler.always_verboseNonec                 C  s   t  | _t  | _d S N)asyncioQueuer   Eventr   r   r   r   r   __init__   s    
z%AsyncIteratorCallbackHandler.__init__zDict[str, Any]z	List[str]r   )
serializedpromptskwargsr   c                   s   | j   d S r   )r   clear)r   r   r   r   r   r   r   on_llm_start   s    z)AsyncIteratorCallbackHandler.on_llm_startstr)tokenr   r   c                   s    |d ur|dkr| j | d S )N )r   
put_nowait)r   r"   r   r   r   r   on_llm_new_token!   s    z-AsyncIteratorCallbackHandler.on_llm_new_tokenr   )responser   r   c                   s   | j   d S r   r   set)r   r&   r   r   r   r   
on_llm_end%   s    z'AsyncIteratorCallbackHandler.on_llm_endBaseException)errorr   r   c                   s   | j   d S r   r'   )r   r+   r   r   r   r   on_llm_error(   s    z)AsyncIteratorCallbackHandler.on_llm_errorzAsyncIterator[str]c                 C s   | j  r| j stjt| j  t| j gtjdI d H \}}|rZ|	 
  ttttd f |	  }|du rq|V  q d S )N)return_whenT)r   emptyr   is_setr   waitensure_futuregetFIRST_COMPLETEDpopcancelr	   r   r!   r   result)r   r   otherZtoken_or_doner   r   r   aiter-   s    z"AsyncIteratorCallbackHandler.aiterN)__name__
__module____qualname____doc____annotations__propertyr   r   r    r%   r)   r,   r8   r   r   r   r   r      s   
r   )
__future__r   r   typingr   r   r   r   r   r   r	   Zlangchain_core.callbacksr
   Zlangchain_core.outputsr   r   r   r   r   r   <module>   s
   $