
    3i                        % S SK r S SKrS SKJr  S SKJr  S SKJrJrJ	r	J
r
JrJrJr  S SKJr  S SK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   " S S\5      r " S S\5      rSq\
\R>                     \ S'   \" S5      q!\\ S'   S\
\"   S\
\"   S\
\	\"\"4      S\SS4
S jr#\" S\S9r$ S S\"S\S\
\	\"\\"\%\&\'\\"   \\%   \\&   \\'   4   4      S\\$/\$4   4S jjr(S\	\"\\"\%\&\'\\"   \\%   \\&   \\'   S4	   4   SS4S jr)g)!    N)wraps)Enum)AnyCallableDictOptionalSequenceUnionTypeVar)trace)SERVICE_NAMEResource)TracerProvider)BatchSpanProcessor)OTLPSpanExporter)	Component)Systemc                   B    \ rS rSrSrSr Sr Sr Sr S\	S\
4S	 jrS
rg)OpenTelemetryGranularity   z+The granularity of the OpenTelemetry spans.none	operationoperation_and_segmentallotherreturnc                     [         R                  [         R                  [         R                  [         R                  /nUR                  U 5      UR                  U5      :  $ )zCompare two granularities.)r   ALLOPERATION_AND_SEGMENT	OPERATIONNONEindex)selfr   orders      c/home/james-whalen/.local/lib/python3.13/site-packages/chromadb/telemetry/opentelemetry/__init__.py__lt__OpenTelemetryGranularity.__lt__$   sN     %(($::$..$))	
 {{4 5;;u#555     N)__name__
__module____qualname____firstlineno____doc__r!   r    r   r   r   boolr&   __static_attributes__r)   r(   r%   r   r      s9    5DI/3;
C96C 6D 6r(   r   c                   0   ^  \ rS rSrS\4U 4S jjrSrU =r$ )OpenTelemetryClient/   systemc                 ,  > [         TU ]  U5        [        UR                  R                  UR                  R
                  UR                  R                  [        UR                  R                  (       a  UR                  R                  OS5      5        g )Nr   )	super__init__	otel_initsettingschroma_otel_service_namechroma_otel_collection_endpointchroma_otel_collection_headersr   chroma_otel_granularity)r#   r4   	__class__s     r%   r7   OpenTelemetryClient.__init__0   sf     OO44OO;;OO::$??:: 77			
r(   r)   )r*   r+   r,   r-   r   r7   r0   __classcell__)r>   s   @r%   r2   r2   /   s    
v 
 
r(   r2   tracerr   granularityotel_service_nameotel_collection_endpointotel_collection_headersotel_granularityr   c           	      *   U[         R                  :X  a  g[        [        [	        U 5      0S9n[        US9nUR                  [        [        [	        U5      US95      5        [        R                  " U5        [        R                  " [        5      qUqg)a  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*   rA   rB   )rC   rD   rE   rF   rJ   providers         r%   r8   r8   B   s    " 3888L#6G2H#IJHx0H56/	
 
h' h'F"Kr(   T)bound
trace_nametrace_granularityrI   c                 8   ^ ^^ S[         S[         4UUU 4S jjnU$ )z!A decorator that traces a method.fr   c                    >^  [         R                  " T 5      (       a  [        T 5      UU UU4S j5       nU$ [        T 5      UU UU4S j5       nU$ )Nc                  T  >#    T[         :  a  T" U 0 UD6I S h  vN $ [        (       d  T" U 0 UD6I S h  vN $ [        R                  TTS9   [        S[        R
                  R                  S5      05        T" U 0 UD6I S h  vN sS S S 5        $  Nw N^ N! , (       d  f       g = f7fNrH   pod_nameHOSTNAMErB   rA   start_as_current_spanadd_attributes_to_current_spanosenvirongetargskwargsrI   rW   rU   rT   s     r%   async_wrapper6trace_method.<locals>.decorator.<locals>.async_wrapper   s      %{2!"D!3F!333v!"D!3F!33311*1T2#RZZ^^J%?@ "#D!3F!33	 UT 43
 4	 UTsI   B(BB(BB(6BBBB(B(B
B%!B(c                    > T[         :  a  T" U 0 UD6$ [        (       d  T" U 0 UD6$ [        R                  TTS9   [        S[        R
                  R                  S5      05        T" U 0 UD6sS S S 5        $ ! , (       d  f       g = frZ   r]   rc   s     r%   wrapper0trace_method.<locals>.decorator.<locals>.wrapper   s~     %{2d-f--vd-f--11*1T2#RZZ^^J%?@ d-f-	 UTTs   2A77
B)asyncioiscoroutinefunctionr   )rW   rf   ri   rI   rU   rT   s   `  r%   	decoratortrace_method.<locals>.decorator   sQ    &&q))1X
4 
4 !  1X
. 
. Nr(   )rR   )rT   rU   rI   rm   s   ``` r%   trace_methodro   j   s$    * Q  1    D r(   c                     [         [        R                  :X  a  g[        (       d  g[        R
                  " 5       nUR                  U R                  5        VVs0 s H  u  p#Uc  M
  X#_M     snn5        gs  snnf )z#Add attributes to the current span.N)rB   r   r!   rA   r   get_current_spanset_attributesitems)rI   spankvs       r%   r_   r_      s_    $ .3336!!#D**:*:*<N*<$!*<NONs   	A5
&A5
)N)*rk   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   r2   rA   Tracer__annotations__rB   rM   r8   rR   r/   floatintro   r_   r)   r(   r%   <module>r      s    	   J J J  > 2 S % "6t 68
) 
 "& %(@(H% H"#}"#&sm"# &d38n5"# /	"#
 
"#J Cx ( 	#77/7 	
	
7$ qc1f%7tPSMTNUOSM
	
	P 
Pr(   