
    ghn	                    r    d dl mZ d dlZd dlmZ d dlmZmZmZm	Z	 d dl
mZ d dlmZ  G d de          ZdS )	    )annotationsN)AsyncIterator)AnyLiteralUnioncast)AsyncCallbackHandler)	LLMResultc                  p    e Zd ZU dZded<   ded<   edd            Zdd
Zd dZd!dZ	d"dZ
d#dZd$dZdS )%AsyncIteratorCallbackHandlerz0Callback handler that returns an async iterator.zasyncio.Queue[str]queuezasyncio.Eventdonereturnboolc                    dS )NT selfs    `/var/www/FlaskApp/flask-venv/lib/python3.11/site-packages/langchain/callbacks/streaming_aiter.pyalways_verbosez+AsyncIteratorCallbackHandler.always_verbose   s    t    Nonec                f    t          j                    | _        t          j                    | _        d S N)asyncioQueuer   Eventr   r   s    r   __init__z%AsyncIteratorCallbackHandler.__init__   s     ]__
MOO			r   
serializeddict[str, Any]prompts	list[str]kwargsr   c                <   K   | j                                          d S r   )r   clear)r   r   r!   r#   s       r   on_llm_startz)AsyncIteratorCallbackHandler.on_llm_start   s        		r   tokenstrc                V   K   |"|dk    r| j                             |           d S d S d S )N )r   
put_nowait)r   r'   r#   s      r   on_llm_new_tokenz-AsyncIteratorCallbackHandler.on_llm_new_token"   s<      "J!!%((((( r   responser
   c                <   K   | j                                          d S r   r   set)r   r-   r#   s      r   
on_llm_endz'AsyncIteratorCallbackHandler.on_llm_end&         	r   errorBaseExceptionc                <   K   | j                                          d S r   r/   )r   r3   r#   s      r   on_llm_errorz)AsyncIteratorCallbackHandler.on_llm_error)   r2   r   AsyncIterator[str]c                 K   | j                                         r| j                                        s7t	          j        t	          j        | j                                                   t	          j        | j                                                  gt          j                   d {V \  }}|r&|	                                
                                 t          t          t          t          d         f         |	                                                                          }|du rd S |W V  | j                                         | j                                        5d S d S )N)return_whenT)r   emptyr   is_setr   waitensure_futuregetFIRST_COMPLETEDpopcancelr   r   r(   r   result)r   r   othertoken_or_dones       r   aiterz"AsyncIteratorCallbackHandler.aiter.   si     *""$$ 	 DI,<,<,>,> 	  !( )$*..*:*:;;)$)..*:*:;;	 $3! ! !      KD%  %		""$$$ !sGDM'9!:DHHJJ<M<M<O<OPPM $$  3 *""$$ 	 DI,<,<,>,> 	  	  	  	  	 r   N)r   r   )r   r   )r   r    r!   r"   r#   r   r   r   )r'   r(   r#   r   r   r   )r-   r
   r#   r   r   r   )r3   r4   r#   r   r   r   )r   r7   )__name__
__module____qualname____doc____annotations__propertyr   r   r&   r,   r1   r6   rE   r   r   r   r   r      s         ::   X$ $ $ $   ) ) ) )      
           r   r   )
__future__r   r   collections.abcr   typingr   r   r   r   langchain_core.callbacksr	   langchain_core.outputsr
   r   r   r   r   <module>rQ      s    " " " " " "  ) ) ) ) ) ) , , , , , , , , , , , , 9 9 9 9 9 9 , , , , , ,
;  ;  ;  ;  ; #7 ;  ;  ;  ;  ; r   