
    A'h#                     
   d dl mZmZmZ d dlmZmZmZmZm	Z	m
Z
 d dlmZmZ d dlmZ d dlmZ d dlmZmZ d dlmZmZmZmZ d dlmZmZ 	 d d	lmZ  ed
      Z!e"e"e#df   e$e#ef   f   Z% G d dee      Z&y# e$ r e ZY /w xY w)    )AsyncIteratorIteratorSequence)AnyCallableOptionalTypeVarUnioncast)UUIDuuid4)BaseCallbackHandler)BaseMessage)ChatGenerationChunk	LLMResult)NS_SEP
TAG_HIDDENTAG_NOSTREAMTAG_NOSTREAM_ALT)CommandStreamChunk)_StreamingCallbackHandlerT.c                   X   e Zd ZdZdZ	 deegdf   fdZddded	e	d
e
ddfdZdededdfdZdedee   dee   fdZdedee   dee   fdZdddddeeef   deee	      dedee   deee      deeeef      dedefdZdddddedee   dedee   deee      dedefdZdddededee   dedef
d Zddd!ededee   dedef
d"Zdddddeeef   d#eeef   dedee   deee      deeeef      dedefd$Zdddededee   dedef
d%Z ddd!ededee   dedef
d&Z!y)'StreamMessagesHandlerzA callback handler that implements stream_mode=messages.
    Collects messages from (1) chat model stream events and (2) node outputs.TstreamNc                 >    || _         i | _        t               | _        y N)r   metadatasetseen)selfr   s     `/home/kushmeetdev/Regenta/Chatbot/venv/lib/python3.12/site-packages/langgraph/pregel/messages.py__init__zStreamMessagesHandler.__init__#   s    *,*-%	    Fdedupemetamessager'   returnc                   |r|j                   | j                  v ry |j                   t        t                     |_         | j                  j	                  |j                          | j                  |d   d||d   ff       y )Nr   messages   )idr!   strr   addr   )r"   r(   r)   r'   s       r#   _emitzStreamMessagesHandler._emit(   sb    gjjDII-zz! \
IIMM'**%KKa*wQ.@ABr%   responsec                 8   t        |t              r| j                  ||d       y t        |t              r-|D ]'  }t        |t              s| j                  ||d       ) y t        |t              rx|j                         D ]d  }t        |t              r| j                  ||d       (t        |t              s9|D ]'  }t        |t              s| j                  ||d       ) f y t        |d      rt        |j                        rt        |      D ]p  }	 t        ||      }t        |t              r| j                  ||d       n<t        |t              r,|D ]'  }t        |t              s| j                  ||d       ) r y y y # t        $ r Y w xY w)NTr&   __dir__)
isinstancer   r1   r   dictvalueshasattrcallabler4   dirgetattrAttributeError)r"   r(   r2   valueitemkeys         r#   _find_and_emit_messagesz-StreamMessagesHandler._find_and_emit_messages1   sx   h,JJtXdJ3(+! 9e[1JJtU4J89 $'!* @e[1JJtU4J8x0 % @%dK8 JJtT$J?@	@ Xy)hx7G7G.H8} 
	#Hc2E!%5

4t
<#E84$) DD)$< $

4d
 CD
 /I) & s   AF2F	FFrun_idoutputc                     |S r    r"   rA   rB   s      r#   tap_output_aiterz&StreamMessagesHandler.tap_output_aiterM   s	     r%   c                     |S r   rD   rE   s      r#   tap_output_iterz%StreamMessagesHandler.tap_output_iterR   s    r%   )parent_run_idtagsr   
serializedr,   rI   rJ   r   kwargsc                    |rS|rt         |vrHt        |vr?t        t        t        |d         j                  t                    |f| j                  |<   y y y y )Nlanggraph_checkpoint_ns)r   r   tupler   r/   splitr   r   )r"   rK   r,   rA   rI   rJ   r   rL   s           r#   on_chat_model_startz)StreamMessagesHandler.on_chat_model_startU   s\     T16Fd6R d3)B CDJJ6RS%DMM&! 7S1 r%   )chunkrI   rJ   tokenrR   c                   t        |t              sy | j                  j                  |      x}rL|xs g D cg c]  }|j	                  d      r| }	}|	r|	|d   d<   | j                  ||j                         y y c c}w )Nzseq:stepr-   rJ   )r5   r   r   get
startswithr1   r)   )
r"   rS   rR   rA   rI   rJ   rL   r(   tfiltered_tagss
             r#   on_llm_new_tokenz&StreamMessagesHandler.on_llm_new_tokenh   sx     %!45==$$V,,4,)-U1ALL<TQUMU"/QJJtU]]+	 -Us   A<A<)rI   c                <    | j                   j                  |d        y r   r   pop)r"   r2   rA   rI   rL   s        r#   
on_llm_endz StreamMessagesHandler.on_llm_endz        	&$'r%   errorc                <    | j                   j                  |d        y r   r[   r"   r_   rA   rI   rL   s        r#   on_llm_errorz"StreamMessagesHandler.on_llm_error   r^   r%   inputsc                   |rH|j                  d      |j                  d      k(  r#|r	t        |vrt        t        t        |d         j                  t                    |f| j                  |<   t        |t              r|j                         D ]  \  }}	t        |	t              r3|	j                  #| j                  j                  |	j                         It        |	t              sZt        |	t              rk|	D ]E  }
t        |
t              s|
j                  !| j                  j                  |
j                         G  y y y y y )Nnamelanggraph_noderN   )rU   r   rO   r   r/   rP   r   r   r5   r6   itemsr   r.   r!   r0   r   )r"   rK   rc   rA   rI   rJ   r   rL   r?   r=   r>   s              r#   on_chain_startz$StreamMessagesHandler.on_chain_start   s    

6"hll3C&DDZt3 d3)B CDJJ6RS%DMM&! &$'"(,,. ;JC!%5 88/ IIMM%((3#E84Zs=S$) ;D)$<#'77#6$(IIMM$''$:;; ( 4 E r%   c                   | j                   j                  |d       x}rt        |t              r| j	                  ||j
                         y t        |t              rYt        d |D              rG|D ]A  }t        |t              r| j	                  ||j
                         0| j	                  ||       C y | j	                  ||       y y )Nc              3   <   K   | ]  }t        |t                y wr   )r5   r   ).0r=   s     r#   	<genexpr>z5StreamMessagesHandler.on_chain_end.<locals>.<genexpr>   s      8/4
5'*8s   )r   r\   r5   r   r@   updater   any)r"   r2   rA   rI   rL   r(   r=   s          r#   on_chain_endz"StreamMessagesHandler.on_chain_end   s     ==$$VT2242(G,,,T8??CHh/C 88@8 5 & BE!%144T5<<H44T5A	B ,,T8< 3r%   c                <    | j                   j                  |d        y r   r[   ra   s        r#   on_chain_errorz$StreamMessagesHandler.on_chain_error   r^   r%   )"__name__
__module____qualname____doc__
run_inliner   r   r$   Metar   boolr1   r   r@   r   r   r   rF   r   rH   r6   r/   listr   rQ   r   rY   r   r]   BaseExceptionrb   rh   ro   rq   rD   r%   r#   r   r      s-   Q JY0xt(;< 0
 IN C$ C C CRV CD C D 8$1!$4	q	
d HQK HQK  )-$(-1cN tK()
   ~ tCy! 4S>*  
. 04(,$(,, +,	,
 ,  ~, tCy!, , 
,. )-(( 	(
  ~( ( 
( )-(( 	(
  ~( ( 
(  )-$(-1;cN; S#X;
 ;  ~; tCy!; 4S>*; ; 
;H )-== 	=
  ~= = 
=< )-(( 	(
  ~( ( 
(r%   r   N)'collections.abcr   r   r   typingr   r   r   r	   r
   r   uuidr   r   langchain_core.callbacksr   langchain_core.messagesr   langchain_core.outputsr   r   langgraph.constantsr   r   r   r   langgraph.typesr   r   !langchain_core.tracers._streamingr   ImportErrorobjectr   rO   r/   r6   rw   r   rD   r%   r#   <module>r      s    = =   8 / A R R 0'K CLU38_d38n,-r(/1J r(  ' &'s   A8 8BB