
    (Ggxh              
       |   U 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mZm	Z	m
Z
 d dlmZmZ d dlmZmZmZmZmZmZmZmZmZmZmZmZmZ d dlmZmZmZm Z m!Z! d dlm"Z# d dl$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/m0Z0m1Z1m2Z2 d dl3m4Z4 d dl5m6Z6 d dl7m8Z8m9Z9m:Z:m;Z; dede<e	ee      ee=e>ef      f   fdZ?ededeeddf   fd       Z@ G d de>ej                        ZB eC       ZDej                  dk\  ZF ej                  d      e6dej                  j                  fe2d f ej                  d      e4dej                  j                  fe1ej                  j                  f ej                  d      ee4   dfe1df ej                  d      eDfe0ej                  j                  ffZJe<e<e>e<edf   e>ef   df   eKd<   	 ej                  j                  ej                  j                  fZN G d  d!ee(e)f         ZO G d" d#ee(e)f         ZP G d$ d%ee(e)f         ZQ G d& d'ee(e)f         ZR G d( d)ee(e)f         ZS G d* d+ee(e)f         ZTee#eOe(e)f   ePe(e)f   eQe(e)f   eRe(e)f   eSe(e)f   eTe(e)f   f   Z" G d, d-e      ZUd.ede-edef      fd/ZVd.ede-edef      fd0ZWd1e"d2ee>   d3eXdefd4ZY G d5 d6e      ZZy)7    N)AsyncExitStackcontextmanager)ContextTokencopy_context)partialwraps)AnyAsyncIterator	AwaitableCallable	Coroutine	GeneratorIteratorOptionalProtocolSequenceTupleUnioncast)RunnableRunnableConfigRunnableLambdaRunnableParallelRunnableSequence)RunnableLike)run_in_executorvar_child_runnable_config)InputOutput)_StreamingCallbackHandler)	TypeGuard)CONFCONFIG_KEY_PREVIOUSCONFIG_KEY_STORECONFIG_KEY_STREAM_WRITER)	BaseStore)StreamWriter)ensure_config%get_async_callback_manager_for_configget_callback_manager_for_configpatch_configconfigreturnc                 L  	 ddl m	 t        j                  |       }d}| j	                  d      x}rpt        |dd      x}rat        	fdt        |dg       D        d      x}r?|j                  j	                  t        |            x}rddl	m
}m}  |       } |d	|i       ||fS )
tSet the child Runnable config + tracing context.

    Args:
        config (RunnableConfig): The config to set.
    r   )LangChainTracerN	callbacksparent_run_idc              3   :   K   | ]  }t        |      r|  y wN)
isinstance).0handlerr1   s     u/home/kushmeetdev/apache_webroot/langgraph_flaskproject/venv/lib/python3.12/site-packages/langgraph/utils/runnable.py	<genexpr>z&_set_config_context.<locals>.<genexpr>M   s#      !'?; s   handlers)_set_tracing_contextget_tracing_contextparent) langchain_core.tracers.langchainr1   r   setgetgetattrnextrun_mapstrlangsmith.run_helpersr<   r=   )
r-   config_tokencurrent_contextr2   r3   tracerrunr<   r=   r1   s
            @r9   _set_config_contextrK   :   s     A,008LOjj-	-	-$YFFMF #*9j"#E
  F  NN&&s='9::S:S-/h_-((    c              #   V  K   ddl m} t               }|j                  t        |       \  }}	 | |j                  t
        j                  |       |j                  |ddddddd       y# |j                  t
        j                  |       |j                  |ddddddd       w xY ww)r0   r   )r<   N)r>   project_nametagsmetadataenabledclient)rF   r<   r   rJ   rK   r   reset)r-   r<   ctxrG   _s        r9   set_config_contextrV   ^   s      ;
.Cgg16:OL!
	)//>  $ 
	
 	)//>  $ 
	
s   *B)A+ :B)+;B&&B)c                       e Zd ZdZy)StrEnumzA string enum.N)__name__
__module____qualname____doc__ rL   r9   rX   rX   {   s    rL   rX   )      writerr(   c                      y r5   r]   )rU   s    r9   <lambda>rb          rL   storer'   zOptional[BaseStore]previous.KWARGS_CONFIG_KEYSc                        e Zd ZdededefdZy)_RunnableWithWriterstater`   r.   c                     y r5   r]   )selfri   r`   s      r9   __call__z_RunnableWithWriter.__call__   rc   rL   N)rY   rZ   r[   r   r(   r    rl   r]   rL   r9   rh   rh      s    LeLLLrL   rh   c                        e Zd ZdededefdZy)_RunnableWithStoreri   rd   r.   c                     y r5   r]   )rk   ri   rd   s      r9   rl   z_RunnableWithStore.__call__   rc   rL   N)rY   rZ   r[   r   r'   r    rl   r]   rL   r9   rn   rn      s    HeHyHVHrL   rn   c                   $    e Zd ZdedededefdZy)_RunnableWithWriterStoreri   r`   rd   r.   c                     y r5   r]   )rk   ri   r`   rd   s       r9   rl   z!_RunnableWithWriterStore.__call__       rL   N)rY   rZ   r[   r   r(   r'   r    rl   r]   rL   r9   rq   rq      s'    '3<E	rL   rq   c                   $    e Zd ZdedededefdZy)_RunnableWithConfigWriterri   r-   r`   r.   c                     y r5   r]   )rk   ri   r-   r`   s       r9   rl   z"_RunnableWithConfigWriter.__call__   rs   rL   N)rY   rZ   r[   r   r   r(   r    rl   r]   rL   r9   ru   ru      s'    '5?K	rL   ru   c                   $    e Zd ZdedededefdZy)_RunnableWithConfigStoreri   r-   rd   r.   c                     y r5   r]   )rk   ri   r-   rd   s       r9   rl   z!_RunnableWithConfigStore.__call__   rs   rL   N)rY   rZ   r[   r   r   r'   r    rl   r]   rL   r9   rx   rx      s'    '5>G	rL   rx   c            
       (    e Zd Zdededededef
dZy)_RunnableWithConfigWriterStoreri   r-   r`   rd   r.   c                     y r5   r]   )rk   ri   r-   r`   rd   s        r9   rl   z'_RunnableWithConfigWriterStore.__call__   s     rL   N)	rY   rZ   r[   r   r   r(   r'   r    rl   r]   rL   r9   r{   r{      s7     	
   
rL   r{   c                       e Zd ZdZ	 dddddddddeedeeef   f      deede	eeef      f      d	ee
   d
eee
      dedededee   deddfdZde
fdZ	 ddedee   dedefdZ	 ddedee   dedefdZy)RunnableCallablezPA much simpler version of RunnableLambda that requires sync and async functions.NTF)namerO   tracerecurseexplode_argsfunc_accepts_configfunc.afuncr   rO   r   r   r   r   kwargsr.   c                   || _         | j                   8|r"	 |j                  dk7  r|j                  | _         n|r	 |j                  | _         || _        || _        || _        |	| _        || _        || _        || _	        ||t        d      ||| _        i | _        y t        j                  t        t         |xs |            j"                  }
d|
v | _        i | _        t$        D ]W  \  }}}}|
j'                  |      }||j(                  t*        vr.|t,        fk7  r|j.                  |vrG||f| j                  |<   Y y # t        $ r Y w xY w# t        $ r Y w xY w)Nz<lambda>z/At least one of func or afunc must be provided.r-   )r   rY   AttributeErrorr   r   rO   r   r   r   r   
ValueErrorr   func_acceptsinspect	signaturer   r   
parametersrf   rA   kindVALID_KINDSANY_TYPE
annotation)rk   r   r   r   rO   r   r   r   r   r   paramskwtyp
config_keydefaultps                   r9   __init__zRunnableCallable.__init__   sq    	99}}
2$(MM	  %DI 	
	
(<EMNOO*':D$<>D&&tHdme'DEPPF'/6'9D$ !#D0B >,CWJJrN9k 98+%!,,c*A  *4W(=!!"%>; & 
 & s"    D? E ?	E
E	EEc                     | j                   j                         D ci c]  \  }}|dvr|| }}}| j                          ddj                  d |j                         D               dS c c}}w )N>   r   r   r   r   r-   r   (z, c              3   0   K   | ]  \  }}| d |  yw)=Nr]   )r7   kvs      r9   r:   z,RunnableCallable.__repr__.<locals>.<genexpr>9  s     -Ytq!1QEl-Ys   ))__dict__itemsget_namejoin)rk   r   r   	repr_argss       r9   __repr__zRunnableCallable.__repr__3  sx     ++-
1NN qD
	 

 --/"!DII-YyGX-Y$Y#ZZ[\\
s   A,inputr-   c           	         | j                   t        d| j                   d      |
t               }| j                  r|\  }}i | j
                  ||}n|f}i | j
                  |}| j                  r||d<   |t           }| j                  j                         D ]^  \  }\  }}	||v r||vr8|	t        j                  j                  u rt        d| d| j                   d      |j                  ||	      ||<   ` | j                  rt!        || j"                        }
|
j%                  d ||j                  d      xs | j'                         |j)                  dd       	      }	 t+        ||j-                         
      }t/        |      5 } |j0                  | j                   g|i |}d d d        |j3                         n4t/        |      5 } |j0                  | j                   g|i |}d d d        t9        t:              r| j<                  r|j?                  ||      S |S # 1 sw Y   xY w# t4        $ r}|j7                  |        d }~ww xY w# 1 sw Y   hxY w)Nz%No synchronous function provided to "ze".
Either initialize with a synchronous function or invoke via the async API (ainvoke, astream, etc.)r-   Missing required config key '' for ''.run_namerun_idr   r   r2   ) r   	TypeErrorr   r)   r   r   r   r#   r   r   r   	Parameteremptyr   rA   r   r+   rO   on_chain_startr   popr,   	get_childrV   rJ   on_chain_endBaseExceptionon_chain_errorr6   r   r   invoke)rk   r   r-   r   args_kwargs_confr   r   default_valuecallback_managerrun_managerchild_configcontextretes                   r9   r   zRunnableCallable.invoke;  sp    997		{ C> > 
 >"_F!MD'99w9&9F8D..v.F##%F8t/3/@/@/F/F/H 	>+B+]V|
 %'MW=N=N=T=T,T 3J<wtyykQST  :}=F2J	>  ::>vtyyQ*99ZZ
+>t}}zz(D1	 : K.+Fk>S>S>UV'5 B%'++diiA$A&ACB ((-#F+ >w!gkk$))=d=f=>c8$::eV,,
B B  **1-> >s<   '&H8 !H,.H8 !I,H51H8 8	IIII$c           	      *  K   | j                   s| j                  ||      S |
t               }| j                  r|\  }}i | j                  ||}n|f}i | j                  |}| j
                  r||d<   |t           }| j                  j                         D ]^  \  }\  }}	||v r||vr8|	t        j                  j                  u rt        d| d| j                   d      |j                  ||	      ||<   ` | j                  rt!        || j"                        }
|
j%                  d ||j                  d      xs | j                  |j'                  dd              d {   }	 t)        ||j+                               }t-        |      5 }t/        t0        d d t2        f    | j                   |i |      }t4        r t7        j8                  ||	       d {   }n
| d {   }d d d        |j;                         d {    n~t-        |      5 }t4        rJt/        t0        d d t2        f    | j                   |i |      }t7        j8                  ||	       d {   }n | j                   |i | d {   }d d d        tA        tB              r&| jD                  r|jG                  ||       d {   S |S 7 _7 7 # 1 sw Y   xY w7 # t<        $ r }|j?                  |       d {  7    d }~ww xY w7 7 # 1 sw Y   xY w7 Ww)
Nr-   r   r   r   r   r   r   r   )r   )$r   r   r)   r   r   r   r#   r   r   r   r   r   r   r   rA   r   r*   rO   r   r   r,   r   rV   r   r   r
   ASYNCIO_ACCEPTS_CONTEXTasynciocreate_taskr   r   r   r6   r   r   ainvoke)rk   r   r-   r   r   r   r   r   r   r   r   r   r   r   coror   r   s                    r9   r   zRunnableCallable.ainvokex  s     zz;;uf-->"_F!MD'99w9&9F8D..v.F##%F8t/3/@/@/F/F/H 	>+B+]V|
 %'MW=N=N=T=T,T 3J<wtyykQST  :}=F2J	> ::DVTYYW 0 ? ?ZZ
+8tyyzz(D1	 !@ ! K4+Fk>S>S>UV'5 )	$c/ :JDJJ<WPV<WXD.$+$7$7g$NN$(j) "..s333#F+ <w*	$c/ :JDJJ<WPV<WXD ' 3 3D' JJC *

D ;F ;;C< c8$UF333
9 O() ) 4	 ! !00333 K;< < 4s   EL!K "L'&K AKK
K#K$K(K 0LKLAL L!L;L<L 9L9L:LKKKK L	K>K92K53K99K>>LLLL
Lr5   )rY   rZ   r[   r\   r   r   r   r
   r   r   rE   r   boolr   r   r   r   r   r]   rL   r9   r~   r~      sB   Z
 KO=>
 #(,".2=>xU3=%9 9:;=> ic8m0D&E!EFG=>
 sm=> x}%=> => => => &d^=> => 
=>~]# ] >B;;"*>":;MP;	;| >B<<"*>":<MP<	<rL   r~   r   c                     t        j                  |       xs- t        | d      xr t        j                  | j                        S )zCheck if a function is async.rl   )r   iscoroutinefunctionhasattrrl   r   s    r9   is_async_callabler     s=    
 	##D) 	74$ 7''6rL   c                     t        j                  |       xs- t        | d      xr t        j                  | j                        S )z*Check if a function is an async generator.rl   )r   isasyncgenfunctionr   rl   r   s    r9   is_async_generatorr     s=    
 	""4( 	64$ 6&&t}}5rL   thingr   r   c          
         t        | t              r| S t        |       st        j                  |       rt        | |      S t        |       rGt        |       rt        d| ||      S t        |  t        |       t        t        d|             ||      S t        | t              rt        |       S t        dt        |              )zCoerce a runnable-like object into a Runnable.

    Args:
        thing: A runnable-like object.

    Returns:
        A Runnable.
    )r   Nr   r   zGExpected a Runnable, callable or dict.Instead got an unsupported type: )r6   r   r   r   isgeneratorfunctionr   callabler   r~   r	   r   r   dictr   r   type)r   r   r   s      r9   coerce_to_runnabler     s     %"	E	"g&A&A%&He$//	%U##D%d%HH#eW_dEBC	  
E4	 &&004U}>
 	
rL   c            
          e Zd ZdZddddedee   deeegef      ddfdZ	d	ede
fd
Zd	ede
fdZ	 ddedee   dedefdZ	 ddedee   dee   defdZ	 ddedee   dee   dee   fdZ	 ddedee   dee   dee   fdZy)RunnableSeqzSequence of Runnables, where the output of each is the input of the next.

    RunnableSeq is a simpler version of RunnableSequence that is internal to
    LangGraph.
    N)r   trace_inputsstepsr   r   r.   c                t   g }|D ]w  }t        |t              r|j                  |j                         /t        |t              r|j                  |j                         [|j                  t        |dd             y t        |      dk  rt        dt        |             || _        || _	        || _
        y)zCreate a new RunnableSeq.

        Args:
            steps: The steps to include in the sequence.
            name: The name of the Runnable. Defaults to None.

        Raises:
            ValueError: If the sequence has less than 2 steps.
        NTr      z,RunnableSeq must have at least 2 steps, got )r6   r   extendr   r   appendr   lenr   r   r   )rk   r   r   r   
steps_flatsteps         r9   r   zRunnableSeq.__init__  s     &(
 	SD$ 01!!$**-D+.!!$**-!!"4TD"QR	S z?Q>s:>OP   
	(rL   otherc                    t        |t              rTt        g | j                  |j                  |j
                  |j                  d| j                  xs |j                  iS t        |t              r<t        g | j                  |j                  d| j                  xs |j                  iS t        g | j                  t        |d d      d| j                  iS Nr   Tr   )	r6   r   r   r   firstmiddlelastr   r   rk   r   s     r9   __or__zRunnableSeq.__or__  s     e-.   

	
 YY,%**  {+  YY,%**   "5t4@ YY rL   c                    t        |t              rSt        |j                  g|j                  |j                  | j
                  d|j                  xs | j                  iS t        |t              r<t        g |j
                  | j
                  d|j                  xs | j                  iS t        t        |d d      g| j
                  d| j                  iS r   )	r6   r   r   r   r   r   r   r   r   r   s     r9   __ror__zRunnableSeq.__ror__.  s     e-.# 

 	
 ZZ,499  {+  ZZ,499  $"5t4@ YY rL   r   r-   r   c           	      <   |
t               }t        |      }|j                  d | j                  | j                  |      n||j	                  d      xs | j                         |j                  dd             }	 t        | j                        D ]S  \  }}t        ||j                  d|dz                }|dk(  r |j                  ||fi |}B|j                  ||      }U 	 |j                  |       |S # t        $ r}|j                  |        d }~ww xY wNr   r   r   	seq:step:   r   r   )r)   r+   r   r   rA   r   r   	enumerater   r,   r   r   r   r   r   	rk   r   r-   r   r   r   ir   r   s	            r9   r   zRunnableSeq.invokeG  s!    >"_F:6B&55(,(9(9(EDe$5J':4==?::h-	 6 
	$TZZ0 74%k&;&;iAw<O&P 6'DKKv@@E KKv6E7 $$U+L  	&&q)	s   <A+C; ;	DDDc           	        K   |
t               }t        |      }|j                  d | j                  | j                  |      n||j	                  d      xs | j                         |j                  dd              d {   }	 t        | j                        D ]c  \  }}t        ||j                  d|dz                }|dk(  r |j                  ||fi | d {   }J|j                  ||       d {   }e 	 |j                  |       d {    |S 7 7 ?7 &7 # t        $ r }|j                  |       d {  7    d }~ww xY wwr   )r)   r*   r   r   rA   r   r   r   r   r,   r   r   r   r   r   r   s	            r9   r   zRunnableSeq.ainvokei  sQ     >"_F@H,;;(,(9(9(EDe$5J':4==?::h-	 < 
 
	$TZZ0 >4%k&;&;iAw<O&P 6".$,,uf"G"GGE"&,,uf"==E> **5111L1
 H= 2	  	,,Q///	sy   A>E DEAD% D D% :D!;D% ED#ED% !D% #E%	E.E	EE		EEc           	   +     K   |
t               }t        |      }|j                  d | j                  | j                  |      n||j	                  d      xs | j                         |j                  dd             }	 t        | j                        D ]S  \  }}t        ||j                  d|dz                }|dk(  r |j                  ||fi |}B|j                  |      }U t        d |j                  D        d       x}	r|	j                  |j                         }d }
d	}D ]  }| |
|}
|r	 |
|z   }
|}
 	 |j%                  |
       y # t"        $ r |}
d	}Y ;w xY w# t&        $ r}|j)                  |        d }~ww xY ww)
Nr   r   r   r   r   r   r   c              3   \   K   | ]$  }t        |t              rt        t        |       & y wr5   r6   r!   r   r7   hs     r9   r:   z%RunnableSeq.stream.<locals>.<genexpr>  s+      !!%>? 2A6   *,F)r)   r+   r   r   rA   r   r   r   r   r,   r   stream	transformrC   r;   tap_output_iterr   r   r   r   r   )rk   r   r-   r   r   r   idxr   iteratorstream_handleroutputadd_supportedchunkr   s                 r9   r   zRunnableSeq.stream  s     >"_F:6B&55(,(9(9(EDe$5J':4==?::h-	 6 
+	-
 'tzz2 @	T%)33iay4IJ !8*t{{5&CFCH#~~h?H@ "&(11
 " ~  *99+:L:LhWF!M! #>"F".!'%
 #F#" $$V, % .!&(-.
  	&&q)	sO   A;F>B:E) 9E>E) FE&#E) %E&&E) )	F	2FF		Fc           
     $  K   |
t               }t        |      }|j                  d | j                  | j                  |      n||j	                  d      xs | j                         |j                  dd              d {   }	 t               4 d {   }t        | j                        D ]{  \  }}t        ||j                  d|dz                }|dk(  r |j                  ||fi |}	n|j                  	|      }	t        |	d      sa|j                  |	j                          } t#        d	 |j$                  D        d       x}
r|
j'                  |j(                  	      }	d }d
}	2 3 d {   }| |r	 ||z   }|}7 7 7 # t*        $ r |}d
}Y 0w xY w6 d d d       d {  7   n# 1 d {  7  sw Y   nxY w|j-                         d {  7   y # t.        $ r }|j1                  |       d {  7    d }~ww xY ww)Nr   r   r   r   r   r   r   aclosec              3   \   K   | ]$  }t        |t              rt        t        |       & y wr5   r   r   s     r9   r:   z&RunnableSeq.astream.<locals>.<genexpr>  s+      %a)BC 6:r   F)r)   r*   r   r   rA   r   r   r   r   r   r,   r   astream
atransformr   push_async_callbackr  rC   r;   tap_output_aiterr   r   r   r   r   )rk   r   r-   r   r   r   stackr   r   	aiteratorr  r  r  r  r   s                  r9   r	  zRunnableSeq.astream  s5     >"_F@H,;;(,(9(9(EDe$5J':4==?::h-	 < 
 
.	3%' (' ('5
 "+4::!6 
DIC)"-"7"7)C!G98M"NF ax$0DLL$I&$I	$(OOIv$F	y(311)2B2BC
D &*!,!5!5
 & >  !/ ? ?#**I!I # %#, 
' 
'%K$2%+e^F
 "'a
('<
'  ) 2%*F,1M2 $-=(' (' (' (' ('Z **6222	  	,,Q///	s   A>H FHG$ F
G$ A6F4AF4-F!1F2F!5F4>FF4H
G$ F!FF4FF4"G$ -F0.G$ 4G:F=;GG$ 	HG H$	H-HHHHHr5   )rY   rZ   r[   r\   r   r   rE   r   r
   r   r   r   r   r   r   r   r   r   r   r   r	  r]   rL   r9   r   r     si    #7;	)) sm) xs
34	)
 
)> 
2 
4 @D  $,^$< OR 	 J ,0## (# 3-	#
 
#P ,0=-=- (=- 3-	=-
 
#=-D ,0@3@3 (@3 3-	@3
 
s	@3rL   r   )[r   enumr   sys
contextlibr   r   contextvarsr   r   r   	functoolsr   r	   typingr
   r   r   r   r   r   r   r   r   r   r   r   r   langchain_core.runnables.baser   r   r   r   r   r   LCRunnableLikelangchain_core.runnables.configr   r   langchain_core.runnables.utilsr   r    !langchain_core.tracers._streamingr!   typing_extensionsr"   langgraph.constantsr#   r$   r%   r&   langgraph.store.baser'   langgraph.typesr(   langgraph.utils.configr)   r*   r+   r,   tupler   rE   rK   rV   EnumrX   objectr   version_infor   internr   r   rf   __annotations__POSITIONAL_OR_KEYWORDKEYWORD_ONLYr   rh   rn   rq   ru   rx   r{   r~   r   r   r   r   r   r]   rL   r9   <module>r'     s      
 5 4 4 $      9 G '  + ( !)!)
5.)*HT#s(^,DDE!)H 
~ 
)GT4<O2P 
 
8c499 
 8**g5  	

8	~w'8'8'>'>? 	 	

7##	

 	 	

7Y
 "	
 	 	

:		C'I E%U38_c3 >?DE 'P    668I8I8V8VWM(5&=1 MI%-0 Ixv6  7 xv6 XeVm%<  v&uf}%UF]+eVm,UF]+"5&=13Cx CL
xY'(
x]*+,

"*3-
8<

D^3( ^3rL   