
    ui                        U d dl Z d dlmZ d dlmZ d dlmZmZ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 d dlmZ d d	lmZ d d
lmZ d dlmZ  G d de          Z G d de          Zdae	ej                 ed<    ed          a eed<   de	e!         de	e!         de	ee!e!f                  deddf
dZ" ede          Z#	 d de!dede	ee!ee!e$e%e&e
e!         e
e$         e
e%         e
e&         f         f                  dee#ge#f         fdZ'dee!ee!e$e%e&e
e!         e
e$         e
e%         e
e&         f         f         ddfdZ(dS )!    N)wraps)Enum)AnyCallableDictOptionalSequenceUnionTypeVar)trace)SERVICE_NAMEResource)TracerProvider)BatchSpanProcessor)OTLPSpanExporter)	Component)Systemc                   :    e Zd ZdZdZ	 dZ	 dZ	 dZ	 dede	fdZ
d	S )
OpenTelemetryGranularityz+The granularity of the OpenTelemetry spans.none	operationoperation_and_segmentallotherreturnc                     t           j        t           j        t           j        t           j        g}|                    |           |                    |          k     S )zCompare two granularities.)r   ALLOPERATION_AND_SEGMENT	OPERATIONNONEindex)selfr   orders      \/var/www/icac/venv/lib/python3.11/site-packages/chromadb/telemetry/opentelemetry/__init__.py__lt__zOpenTelemetryGranularity.__lt__#   sH     %($:$.$)	
 {{4  5;;u#5#555    N)__name__
__module____qualname____doc__r    r   r   r   r   boolr%    r&   r$   r   r      s]        55DI/3;
C96C 6D 6 6 6 6 6 6r&   r   c                   $     e Zd Zdef fdZ xZS )OpenTelemetryClientsystemc                     t                                          |           t          |j        j        |j        j        |j        j        t          |j        j        r|j        j        nd                     d S )Nr   )	super__init__	otel_initsettingschroma_otel_service_namechroma_otel_collection_endpointchroma_otel_collection_headersr   chroma_otel_granularity)r"   r/   	__class__s     r$   r2   zOpenTelemetryClient.__init__/   sv       O4O;O:$?:77 			
 		
 		
 		
 		
r&   )r'   r(   r)   r   r2   __classcell__)r9   s   @r$   r.   r.   .   sD        
v 
 
 
 
 
 
 
 
 
 
r&   r.   tracerr   granularityotel_service_nameotel_collection_endpointotel_collection_headersotel_granularityr   c           	      l   |t           j        k    rdS t          t          t	          |           i          }t          |          }|                    t          t          t	          |          |                               t          j
        |           t          j        t                    a|adS )a4  Initializes module-level state for OpenTelemetry.

    Parameters match the environment variables which configure OTel as documented
    at https://docs.trychroma.com/deployment/observability.
    - otel_service_name: The name of the service for OTel tagging and aggregation.
    - otel_collection_endpoint: The endpoint to which OTel spans are sent
        (e.g. api.honeycomb.com).
    - otel_collection_headers: The headers to send with OTel spans
        (e.g. {"x-honeycomb-team": "abc123"}).
    - otel_granularity: The granularity of the spans to emit.
    N
attributes)resource)endpointheaders)r   r    r   r   strr   add_span_processorr   r   r   set_tracer_provider
get_tracerr'   r;   r<   )r=   r>   r?   r@   rD   providers         r$   r3   r3   A   s    " 3888L#6G2H2H#IJJJHx000H566/  	
 	
   
h''' h''F"KKKr&   T)bound
trace_nametrace_granularityrC   c                 8     dt           dt           f fd}|S )z!A decorator that traces a method.fr   c                      t          j                   rt                      fd            }|S t                      fd            }|S )Nc                     K   t           k     r | i | d {V S t          s | i | d {V S t                                        5   | i | d {V cd d d            S # 1 swxY w Y   d S NrB   r<   r;   start_as_current_spanargskwargsrC   rQ   rO   rN   s     r$   async_wrapperz6trace_method.<locals>.decorator.<locals>.async_wrapper   s      %{22!"D!3F!3!33333333 4!"D!3F!3!3333333311*1TT 4 4!"D!3F!3!33333334 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4s   A))A-0A-c                      t           k     r | i |S t          s | i |S t                                        5   | i |cd d d            S # 1 swxY w Y   d S rT   rU   rW   s     r$   wrapperz0trace_method.<locals>.decorator.<locals>.wrapper   s     %{221d-f--- .1d-f---11*1TT . .1d-f--. . . . . . . . . . . . . . . . . .s    AAA)asyncioiscoroutinefunctionr   )rQ   rZ   r\   rC   rO   rN   s   `  r$   	decoratorztrace_method.<locals>.decorator~   s    &q)) 	1XX4 4 4 4 4 4 4 X4 !  1XX. . . . . . . X. Nr&   )rL   )rN   rO   rC   r_   s   ``` r$   trace_methodr`   i   sC    *Q 1        8 r&   c                     t           t          j        k    rdS t          sdS t	          j                    }|                    |            dS )z#Add attributes to the current span.N)r<   r   r    r;   r   get_current_spanset_attributes)rC   spans     r$   add_attributes_to_current_spanre      sM    " .333 !##D
#####r&   )N))r]   	functoolsr   enumr   typingr   r   r   r   r	   r
   r   opentelemetryr   opentelemetry.sdk.resourcesr   r   opentelemetry.sdk.tracer   opentelemetry.sdk.trace.exportr   5opentelemetry.exporter.otlp.proto.grpc.trace_exporterr   chromadb.configr   r   r   r.   r;   Tracer__annotations__r<   rG   r3   rL   r+   floatintr`   re   r,   r&   r$   <module>rs      s                J J J J J J J J J J J J J J J J J J       > > > > > > > > 2 2 2 2 2 2      S R R R R R % % % % % % " " " " " "6 6 6 6 6t 6 6 68
 
 
 
 
) 
 
 
 "& % % %(@(@(H(H% H H H"#}"#&sm"# &d38n5"# /	"#
 
"# "# "# "#J GCx   ( 	#1 11/1 	
	
1$ qc1f%1 1 1 1h$SMTNUOSM		

	$ 
$ $ $ $ $ $r&   