
    .h                        d dl mZ d dlZd dl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  G d
 d          Z G d de          Z e            Z G d de          ZdS )    )annotationsN)Any   )logger   )util)TracingProcessor)Scopec                  "   e Zd ZdZej        dd            Zej        d             Zej        ddd            Zej        ddd
            Z	e
ej        dd                        Ze
ej        dd                        Zej        dd            ZdS )Tracezd
    A trace is the root level object that tracing creates. It represents a logical "workflow".
    returnc                    d S N selfs    R/var/www/FlaskApp/flask-venv/lib/python3.11/site-packages/agents/tracing/traces.py	__enter__zTrace.__enter__           c                    d S r   r   r   exc_typeexc_valexc_tbs       r   __exit__zTrace.__exit__   r   r   Fmark_as_currentboolc                    dS )z
        Start the trace.

        Args:
            mark_as_current: If true, the trace will be marked as the current trace.
        Nr   r   r   s     r   startzTrace.start   	     	r   reset_currentc                    dS )z
        Finish the trace.

        Args:
            reset_current: If true, the trace will be reset as the current trace.
        Nr   r   r#   s     r   finishzTrace.finish$   r"   r   strc                    dS )z
        The trace ID.
        Nr   r   s    r   trace_idzTrace.trace_id.   	     	r   c                    dS )z8
        The name of the workflow being traced.
        Nr   r   s    r   namez
Trace.name6   r*   r   dict[str, Any] | Nonec                    dS )z3
        Export the trace as a dictionary.
        Nr   r   s    r   exportzTrace.export>   s	    
 	r   Nr   r   Fr   r   r#   r   r   r'   r   r-   )__name__
__module____qualname____doc__abcabstractmethodr   r   r!   r&   propertyr)   r,   r/   r   r   r   r   r      s3         	    	   	     	         X     X 	     r   r   c                  r    e Zd ZdZd ZddZd Zddd
ZdddZe	dd            Z
e	dd            ZddZdS )	NoOpTracez2
    A no-op trace that will not be recorded.
    c                "    d| _         d | _        d S NF)_started_prev_context_tokenr   s    r   __init__zNoOpTrace.__init__K   s    KO   r   r   r   c                    | j         r| j        st          j        d           | S d| _         |                     d           | S Nz.Trace already started but no context token setT)r   rA   rB   r   errorr!   r   s    r   r   zNoOpTrace.__enter__O   sN    = 	+ OMNNNK

4
(((r   c                2    |                      d           d S )NTr#   )r&   r   s       r   r   zNoOpTrace.__exit__Z   s    $'''''r   Fr   r   c                @    |rt          j        |           | _        d S d S r   )r
   set_current_tracerB   r    s     r   r!   zNoOpTrace.start]   s0     	E','>t'D'DD$$$	E 	Er   r#   c                `    |r)| j         $t          j        | j                    d | _         d S d S d S r   )rB   r
   reset_current_tracer%   s     r   r&   zNoOpTrace.finisha   sD     	,T5A%d&>???'+D$$$	, 	,AAr   r'   c                    dS Nzno-opr   r   s    r   r)   zNoOpTrace.trace_idf       wr   c                    dS rO   r   r   s    r   r,   zNoOpTrace.namej   rP   r   r-   c                    d S r   r   r   s    r   r/   zNoOpTrace.exportn   s    tr   Nr0   r1   r2   r3   r4   r5   )r6   r7   r8   r9   rC   r   r   r!   r&   r<   r)   r,   r/   r   r   r   r>   r>   F   s         P P P	 	 	 	( ( (E E E E E, , , , ,
    X    X     r   r>   c                  x    e Zd ZdZdZddZedd            Zedd            ZdddZ	dddZ
d dZd Zd!dZdS )"	TraceImplz?
    A trace that will be recorded by the tracing library.
    )_name	_trace_idgroup_idmetadatarB   
_processorrA   r,   r'   r)   
str | NonerW   rX   r-   	processorr	   c                    || _         |pt          j                    | _        || _        || _        d | _        || _        d| _        d S r@   )	rU   r   gen_trace_idrV   rW   rX   rB   rY   rA   )r   r,   r)   rW   rX   r[   s         r   rC   zTraceImpl.__init__   sH     
!8T%6%8%8  KO #r   r   c                    | j         S r   )rV   r   s    r   r)   zTraceImpl.trace_id   s
    ~r   c                    | j         S r   )rU   r   s    r   r,   zTraceImpl.name   s
    zr   Fr   r   c                    | j         rd S d| _         | j                            |            |rt          j        |           | _        d S d S )NT)rA   rY   on_trace_startr
   rK   rB   r    s     r   r!   zTraceImpl.start   s\    = 	F&&t,,, 	E','>t'D'DD$$$	E 	Er   r#   c                    | j         sd S | j                            |            |r)| j        $t	          j        | j                   d | _        d S d S d S r   )rA   rY   on_trace_endrB   r
   rM   r%   s     r   r&   zTraceImpl.finish   si    } 	F$$T*** 	,T5A%d&>???'+D$$$	, 	,AAr   r   c                z    | j         r| j        st          j        d           | S |                     d           | S rE   rF   r   s    r   r   zTraceImpl.__enter__   sG    = 	+ OMNNNK

4
(((r   c                @    |                      |t          u           d S )NrI   )r&   GeneratorExitr   s       r   r   zTraceImpl.__exit__   s!    (-"?@@@@@r   c                :    d| j         | j        | j        | j        dS )Ntrace)objectidworkflow_namerW   rX   )r)   r,   rW   rX   r   s    r   r/   zTraceImpl.export   s(    -!Y
 
 	
r   N)
r,   r'   r)   rZ   rW   rZ   rX   r-   r[   r	   r4   r1   r2   r3   r0   r5   )r6   r7   r8   r9   	__slots__rC   r<   r)   r,   r!   r&   r   r   r/   r   r   r   rT   rT   u   s         I        X    XE E E E E, , , , ,   A A A
 
 
 
 
 
r   rT   )
__future__r   r:   contextvarstypingr   r    r   processor_interfacer	   scoper
   r   r>   NO_OP_TRACErT   r   r   r   <module>rt      s%   " " " " " " 



                       1 1 1 1 1 1      6 6 6 6 6 6 6 6r) ) ) ) ) ) ) )X ikkN
 N
 N
 N
 N
 N
 N
 N
 N
 N
r   