
    9i                       d dl mZ d dlmZmZmZ d dl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mZ d d	lmZ d
ZddZ G d deee   d      Z edi e G d dee                Z edded      ZdddZy)    )annotations)	dataclassfieldreplace)AnyGenericcast)	BaseStore)	TypedDictUnpack)CONFCONFIG_KEY_RUNTIME)
get_config)
_DC_KWARGSStreamWriter)ContextT)Runtimeget_runtimec                     y N )_s    [/var/www/html/backtest/airagagent/rag_env/lib/python3.12/site-packages/langgraph/runtime.py_no_op_stream_writerr      s        c                  6    e Zd ZU ded<   ded<   ded<   ded<   y	)
_RuntimeOverridesr   contextBaseStore | Nonestorer   stream_writerr   previousN)__name__
__module____qualname____annotations__r   r   r   r   r      s    Mr   r   F)totalc                      e Zd ZU dZ ed      Zded<   	  ed      Zded<   	  ee      Z	ded	<   	  ed      Z
d
ed<   	 ddZ	 	 	 	 ddZy)r   a  Convenience class that bundles run-scoped context and other runtime utilities.

    !!! version-added "Added in version v0.6.0"

    Example:

    ```python
    from typing import TypedDict
    from langgraph.graph import StateGraph
    from dataclasses import dataclass
    from langgraph.runtime import Runtime
    from langgraph.store.memory import InMemoryStore


    @dataclass
    class Context:  # (1)!
        user_id: str


    class State(TypedDict, total=False):
        response: str


    store = InMemoryStore()  # (2)!
    store.put(("users",), "user_123", {"name": "Alice"})


    def personalized_greeting(state: State, runtime: Runtime[Context]) -> State:
        '''Generate personalized greeting using runtime context and store.'''
        user_id = runtime.context.user_id  # (3)!
        name = "unknown_user"
        if runtime.store:
            if memory := runtime.store.get(("users",), user_id):
                name = memory.value["name"]

        response = f"Hello {name}! Nice to see you again."
        return {"response": response}


    graph = (
        StateGraph(state_schema=State, context_schema=Context)
        .add_node("personalized_greeting", personalized_greeting)
        .set_entry_point("personalized_greeting")
        .set_finish_point("personalized_greeting")
        .compile(store=store)
    )

    result = graph.invoke({}, context=Context(user_id="user_123"))
    print(result)
    # > {'response': 'Hello Alice! Nice to see you again.'}
    ```

    1. Define a schema for the runtime context.
    2. Create a store to persist memories and other information.
    3. Use the runtime context to access the `user_id`.
    N)defaultr   r   r   r    r   r!   r   r"   c                   t        |j                  xs | j                  |j                  xs | j                  |j                  t        ur|j                  n| j                  |j
                  | j
                        S |j
                        S )zMerge two runtimes together.

        If a value is not provided in the other runtime, the value from the current runtime is used.
        r   r    r!   r"   )r   r   r    r!   r   r"   )selfothers     r   mergezRuntime.mergeg   sy    
 MM1T\\+++""*>>  --##&+nn&<T]]
 	
 CH..
 	
r   c                    t        | fi |S )z@Replace the runtime with a new runtime with the given overrides.)r   )r,   	overridess     r   overridezRuntime.overrideu   s     t)y))r   )r-   Runtime[ContextT]returnr2   )r0   z#Unpack[_RuntimeOverrides[ContextT]]r3   r2   )r#   r$   r%   __doc__r   r   r&   r    r   r!   r"   r.   r1   r   r   r   r   r      st    7r d+GX+5 $D1E1C"'0D"EM<E4$'Hc'

*>*	*r   r   Nr+   c                x    t        t        t           t               t           j                  t                    }|S )zGet the runtime for the current graph run.

    Args:
        context_schema: Optional schema used for type hinting the return type of the runtime.

    Returns:
        The runtime for the current graph run.
    )r	   r   r   r   r   getr   )context_schemaruntimes     r   r   r      s-     78$jl4&8&<&<=O&PQGNr   )r   r   r3   Noner   r   )r7   ztype[ContextT] | Noner3   r2   )
__future__r   dataclassesr   r   r   typingr   r   r	   langgraph.store.baser
   typing_extensionsr   r   langgraph._internal._constantsr   r   langgraph.configr   langgraph.typesr   r   langgraph.typingr   __all__r   r   r   DEFAULT_RUNTIMEr   r   r   r   <module>rE      s    " 1 1 % % * / C ' 4 %
$ .	78#4E  Z]*gh ]* ]*@ 
&	r   