
    D_i?                       % S r SSKJr  SSKJr  SSKJr  SSKJrJ	r	J
r
Jr  SSKJr  SSKJr  SSKJr  SS	KJr  SS
KJr  \(       a  SSKJr  SSKJr  SSKJrJr  SSKJrJ r   Sr!S\"S'   \" SSS9r#S\"S'   \" SSS9r$S\"S'   \ S$SSSS.         S%S jjj5       r%\S&S j5       r&   S'       S(S jjr'S)S jr(S*S jr)/ r*S\"S '     S+         S,S! jjr+\+" \$S"S#9  g)-zContext management for tracers.    )annotations)contextmanager)
ContextVar)TYPE_CHECKINGAnyLiteralcast)UUID)run_helpers)utils)LangChainTracer)RunCollectorCallbackHandler)	Generator)Client)BaseCallbackHandler	Callbacks)AsyncCallbackManagerCallbackManagerNr   tracing_callback_vartracing_callback_v2)defaultz"ContextVar[LangChainTracer | None]tracing_v2_callback_varrun_collectorz.ContextVar[RunCollectorCallbackHandler | None]run_collector_var)
example_idtagsclientc             #     #    [        U[        5      (       a  [        U5      n[        UU UUS9n[        R                  U5      n Uv   [        R                  U5        g! [        R                  U5        f = f7f)a.  Instruct LangChain to log all runs in context to LangSmith.

Args:
    project_name: The name of the project. Defaults to `'default'`.
    example_id: The ID of the example.
    tags: The tags to add to the run.
    client: The client of the langsmith.

Yields:
    The LangChain tracer.

Example:
    >>> with tracing_v2_enabled():
    ...     # LangChain code will automatically be traced

    You can use this to fetch the LangSmith run URL:

    >>> with tracing_v2_enabled() as cb:
    ...     chain.invoke("foo")
    ...     run_url = cb.get_run_url()
)r   project_namer   r   N)
isinstancestrr
   r   r   setreset)r   r   r   r   cbtokens         X/home/james-whalen/.local/lib/python3.13/site-packages/langchain_core/tracers/context.pytracing_v2_enabledr'   '   sm     : *c""*%
	!	
B $''+E-%%e,%%e,s   AA9A 	A9A66A9c               #     #    [        5       n [        R                  U 5      n U v   [        R                  U5        g! [        R                  U5        f = f7f)zCollect all run traces in context.

Yields:
    The run collector callback handler.

Example:
    >>> with collect_runs() as runs_cb:
            chain.invoke("foo")
            run_id = runs_cb.traced_runs[0].id
N)r   r   r"   r#   )r$   r%   s     r&   collect_runsr)   S   sF      
%	&B!!"%E'&&s    A= AAAc                *   [        5       (       a  U =(       d
    [        5       n[        R                  5       =(       d
    [	        UUS9nUc  [        SU/5      nU$ [        S UR                   5       5      (       d  UR                  U5        Un U$ S nU$ )N)r   r   r   c              3  B   #    U  H  n[        U[        5      v   M     g 7fN)r    r   ).0handlers     r&   	<genexpr>'_get_trace_callbacks.<locals>.<genexpr>u   s!      8G 7O448s   )	_tracing_v2_is_enabled_get_tracer_projectr   getr   r	   anyhandlersadd_handler)r   r   callback_managerproject_name_tracerr$   s         r&   _get_trace_callbacksr:   g   s    
 $=(;(=(,,. 
/&!3
 #kF8,B I  /88   !,,V4 "B I I    c                 X    [         R                  5       b  g[        R                  " 5       $ )NT)r   r3   ls_utilstracing_is_enabled r;   r&   r1   r1      s#    ""$0&&((r;   c                     [         R                  " 5       n U S   nUc  U S   b  [        SU S   5      $ [        US[        [        R                  5       S[        [        R                  " 5       5      5      5      $ )Nparentr   r!   session_nameproject)	ls_rhget_tracing_contextr	   getattrr   r3   r!   r=   get_tracer_project)tracing_contextrun_trees     r&   r2   r2      s{    //1Ox(HON;GE?>:;; $'')
 ++-.	
 r;   zglist[tuple[ContextVar[BaseCallbackHandler | None], bool, type[BaseCallbackHandler] | None, str | None]]_configure_hooksc                p    Ub  Uc  Sn[        U5      e[        R                  [        SU 5      UUU45        g)aC  Register a configure hook.

Args:
    context_var: The context variable.
    inheritable: Whether the context variable is inheritable.
    handle_class: The callback handler class.
    env_var: The environment variable.

Raises:
    ValueError: If env_var is set, handle_class must also be set to a non-None
        value.
NzEIf env_var is set, handle_class must also be set to a non-None value.z&ContextVar[BaseCallbackHandler | None])
ValueErrorrJ   appendr	   )context_varinheritablehandle_classenv_varmsgs        r&   register_configure_hookrS      sG    $ |3Uo 9;G	
	r;   F)rO   r,   )
r   
str | Noner   str | UUID | Noner   zlist[str] | Noner   zLangSmithClient | Nonereturnz&Generator[LangChainTracer, None, None])rV   z2Generator[RunCollectorCallbackHandler, None, None])NNN)r   rT   r   rU   r7   z-CallbackManager | AsyncCallbackManager | NonerV   r   )rV   zbool | Literal['local'])rV   r!   )NN)
rN   zContextVar[Any | None]rO   boolrP   z type[BaseCallbackHandler] | NonerQ   rT   rV   None),__doc__
__future__r   
contextlibr   contextvarsr   typingr   r   r   r	   uuidr
   	langsmithr   rD   r   r=    langchain_core.tracers.langchainr   $langchain_core.tracers.run_collectorr   collections.abcr   r   LangSmithClientlangchain_core.callbacks.baser   r    langchain_core.callbacks.managerr   r   r   __annotations__r   r   r'   r)   r:   r1   r2   rJ   rS   r?   r;   r&   <module>rg      s   % " % "   * ' < L)3LV ! c  >H4? ;  EOTE A 
 #(- %)!%)(-(- "(- 	(-
 #(- ,(- (-V ' '(  $$(FJ! D 	6)<     6:	' 3 	
 
D )u =r;   