
    g3fi?                       U d Z ddlmZ ddlm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 ddlmZ dd	lmZ dd
lmZ erddlmZ ddlmZ ddlmZmZ ddlmZm Z  dZ!de"d<    edd      Z#de"d<    edd      Z$de"d<   e	 d$dddd	 	 	 	 	 	 	 	 	 d%d       Z%ed&d       Z&	 	 	 d'	 	 	 	 	 	 	 d(dZ'd)dZ(d*dZ)g Z*de"d <   	 	 d+	 	 	 	 	 	 	 	 	 d,d!Z+ e+e$d"#       y)-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             #     K   t        |t              rt        |      }t        || ||      }t        j                  |      }	 | t        j                  |       y# t        j                  |       w xY ww)aj  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         \/var/www/auto_recruiter/arenv/lib/python3.12/site-packages/langchain_core/tracers/context.pytracing_v2_enabledr'   '   sk     : *c"*%
	!	
B $''+E-%%e,%%e,s   A A7A A7A44A7c               #     K   t               } t        j                  |       }	 |  t        j                  |       y# t        j                  |       w xY ww)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   sG      
%	&B!!"%E'&&s    A= AAAc                   t               rs| xs
 t               }t        j                         xs t	        ||      }|t        d|g      }|S t        d |j                  D              s|j                  |       |}|S d }|S )N)r   r   r   c              3  <   K   | ]  }t        |t                y wN)r    r   ).0handlers     r&   	<genexpr>z'_get_trace_callbacks.<locals>.<genexpr>u   s       7O4s   )	_tracing_v2_is_enabled_get_tracer_projectr   getr   r	   anyhandlersadd_handler)r   r   callback_managerproject_name_tracerr$   s         r&   _get_trace_callbacksr9   g   s    
 $=(;(=(,,. 
/&!3
 #kF8,B I  /88  !,,V4 "B I I    c                 T    t         j                         yt        j                         S )NT)r   r2   ls_utilstracing_is_enabled r:   r&   r0   r0      s#    ""$0&&((r:   c                     t        j                         } | d   }|| d   t        d| d         S t        |dt        t        j                         dt        t        j                                           S )Nparentr   r!   session_nameproject)	ls_rhget_tracing_contextr	   getattrr   r2   r!   r<   get_tracer_project)tracing_contextrun_trees     r&   r1   r1      s{    //1Ox(HON;GE?>:;; $'')
 ++-.	
 r:   zglist[tuple[ContextVar[BaseCallbackHandler | None], bool, type[BaseCallbackHandler] | None, str | None]]_configure_hooksc                l    ||d}t        |      t        j                  t        d|       |||f       y)ag  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])
ValueErrorrI   appendr	   )context_varinheritablehandle_classenv_varmsgs        r&   register_configure_hookrR      sG    $ |3Uo 9;G	
	r:   F)rN   r,   )
r   
str | Noner   str | UUID | Noner   zlist[str] | Noner   zLangSmithClient | Nonereturnz&Generator[LangChainTracer, None, None])rU   z2Generator[RunCollectorCallbackHandler, None, None])NNN)r   rS   r   rT   r6   z-CallbackManager | AsyncCallbackManager | NonerU   r   )rU   zbool | Literal['local'])rU   r!   )NN)
rM   zContextVar[Any | None]rN   boolrO   z type[BaseCallbackHandler] | NonerP   rS   rU   None),__doc__
__future__r   
contextlibr   contextvarsr   typingr   r   r   r	   uuidr
   	langsmithr   rC   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)   r9   r0   r1   rI   rR   r>   r:   r&   <module>rf      s   % " % "   * ' < L)3LV ! c  >H4? ;  EOTE A 
 #(- %)!%)(-(- "(- 	(-
 #(- ,(- (-V ' '(  $$(FJ! D 	6)<     6:	' 3 	
 
D )u =r:   