Ë
    lQêj…  ã                   ó  — U d dl Z 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'   df	   f   ddfd„Z)y)!é    N)Úwraps)ÚEnum)ÚAnyÚCallableÚDictÚOptionalÚSequenceÚUnionÚTypeVar)Útrace)ÚSERVICE_NAMEÚResource)ÚTracerProvider)ÚBatchSpanProcessor)ÚOTLPSpanExporter)Ú	Component)ÚSystemc                   ó8   — e Zd ZdZdZ	 dZ	 dZ	 dZ	 dede	fd„Z
y	)
ÚOpenTelemetryGranularityz+The granularity of the OpenTelemetry spans.ÚnoneÚ	operationÚoperation_and_segmentÚallÚotherÚreturnc                 óÄ   — t         j                  t         j                  t         j                  t         j                  g}|j                  | «      |j                  |«      k  S )zCompare two granularities.)r   ÚALLÚOPERATION_AND_SEGMENTÚ	OPERATIONÚNONEÚindex)Úselfr   Úorders      ún/home/oem/CyberBrain26-unified/.venv/lib/python3.12/site-packages/chromadb/telemetry/opentelemetry/__init__.pyÚ__lt__zOpenTelemetryGranularity.__lt__$   sN   € ô %×(Ñ(Ü$×:Ñ:Ü$×.Ñ.Ü$×)Ñ)ð	
ˆð �{‰{˜4Ó  5§;¡;¨uÓ#5Ñ5Ð5ó    N)Ú__name__Ú
__module__Ú__qualname__Ú__doc__r    r   r   r   r   Úboolr%   © r&   r$   r   r      s9   „ Ù5à€DØà€IØ/à3ÐØ;à
€CØ9ð6˜Cð 6 Dô 6r&   r   c                   ó$   ‡ — e Zd Zdefˆ fd„Zˆ xZS )ÚOpenTelemetryClientÚsystemc                 ó4  •— t         ‰| �  |«       t        |j                  j                  |j                  j
                  |j                  j                  t        |j                  j                  r|j                  j                  «      «       y d«      «       y )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__0   sr   ø€ Ü‰Ñ˜Ô ÜØ�O‰O×4Ñ4Ø�O‰O×;Ñ;Ø�O‰O×:Ñ:Ü$à—?‘?×:Ò:ð —‘×7Ñ7óõ			
ð óõ			
r&   )r'   r(   r)   r   r2   Ú__classcell__)r9   s   @r$   r.   r.   /   s   ø„ ð
˜v÷ 
ñ 
r&   r.   Útracerr   ÚgranularityÚotel_service_nameÚotel_collection_endpointÚotel_collection_headersÚotel_granularityr   c           	      ó6  — |t         j                  k(  ryt        t        t	        | «      i¬«      }t        |¬«      }|j                  t        t        t	        |«      |¬«      «      «       t        j                  |«       t        j                  t        «      a|ay)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   B   s†   € ð" Ô3×8Ñ8Ò8ØÜ¤L´#Ð6GÓ2HÐ#IÔJ€HÜ xÔ0€HØ×ÑÜäÜÐ5Ó6Ø/ôó	
ôô 
×Ñ˜hÔ'ô ×ÑœhÓ'€FØ"�Kr&   ÚT)ÚboundÚ
trace_nameÚtrace_granularityrC   c                 ó4   ‡ ‡‡— 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               Ÿ   óD  •K  — ‰t         k  r ‰| i |¤Žƒ d {  –—† S t        s ‰| i |¤Žƒ d {  –—† S t        j                  ‰‰¬«      5  t        dt        j
                  j                  d«      i«        ‰| i |¤Žƒ d {  –—† cd d d «       S 7 Œu7 Œa7 Œ# 1 sw Y   y xY w­w©NrB   Úpod_nameÚHOSTNAME©r<   r;   Ústart_as_current_spanÚadd_attributes_to_current_spanÚosÚenvironÚget©ÚargsÚkwargsrC   rQ   rO   rN   s     €€€€r$   Úasync_wrapperz6trace_method.<locals>.decorator.<locals>.async_wrapper‚   s¥   øè ø€ ð %¤{Ò2Ù!" DÐ!3¨FÑ!3×3Ð3ÝÙ!" DÐ!3¨FÑ!3×3Ð3Ü×1Ñ1°*ÈÐ1ÓTñ 4Ü2Ø#¤R§Z¡Z§^¡^°JÓ%?Ð@ôñ "# DÐ!3¨FÑ!3×3÷	4ñ 4ð 4øà3øð
 4ø÷	4ð 4üsI   ƒB ˜B™B ®B¯B Á
6BÂ BÂBÂB ÂB ÂBÂBÂB c                  ó   •— ‰t         k  r ‰| i |¤ŽS t        s ‰| i |¤ŽS t        j                  ‰‰¬«      5  t        dt        j
                  j                  d«      i«        ‰| i |¤Žcd d d «       S # 1 sw Y   y xY wrT   rW   r]   s     €€€€r$   Úwrapperz0trace_method.<locals>.decorator.<locals>.wrapper’   s„   ø€ ð %¤{Ò2Ù˜dÐ- fÑ-Ð-ÝÙ˜dÐ- fÑ-Ð-Ü×1Ñ1°*ÈÐ1ÓTñ .Ü2Ø#¤R§Z¡Z§^¡^°JÓ%?Ð@ôñ ˜dÐ- fÑ-÷	.÷ .ò .ús   ¸2A4Á4A=)ÚasyncioÚiscoroutinefunctionr   )rQ   r`   rb   rC   rO   rN   s   `  €€€r$   Ú	decoratorztrace_method.<locals>.decorator   sN   ù€ Ü×&Ñ& qÔ)ä�1‹Xö
4ó ð
4ð !Ð ô �1‹Xö
.ó ð
.ð ˆNr&   )rL   )rN   rO   rC   re   s   ``` r$   Útrace_methodrf   j   s   ú€ ð* ”Qð  œ1÷  ðD Ðr&   c                 óâ   — t         t        j                  k(  ryt        syt	        j
                  «       }|j                  | j                  «       D ��ci c]  \  }}|€Œ	||“Œ c}}«       yc c}}w )z#Add attributes to the current span.N)r<   r   r    r;   r   Úget_current_spanÚset_attributesÚitems)rC   ÚspanÚkÚvs       r$   rY   rY   ¤   s[   € ô$ Ô.×3Ñ3Ò3ØÝØÜ×!Ñ!Ó#€DØ×Ñ¨*×*:Ñ*:Ó*<×N¡$ ! QÀÁ˜˜A™ÓNÕOùÓNs   Á
A+
ÁA+
)N)*rc   rZ   Ú	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Úintrf   rY   r,   r&   r$   ú<module>r{      s«  ðÜ Û 	Ý Ý ß J× JÑ Jå ß >Ý 2õõ Så %Ý "ô6˜tô 6ô8
˜)ô 
ð "&€ˆ�—‘ÑÓ %Ù(@ÀÓ(H€Ð%Ó Hð"#Ø ‘}ð"#à& s™mð"#ð & d¨3°¨8¡nÑ5ð"#ð /ð	"#ð
 
ó"#ñJ ˆC�xÔ €ð( 	ñ#7Øð7à/ð7ð ØØØØØØØØ˜‘Ø˜‘Ø˜‘Ø˜‘ðñ	ð
ñ	
ñð7ð$ ˆqˆc�1ˆfÑó%7ðtPØØØØØØØØ�S‰MØ�T‰NØ�U‰OØ�S‰MØðñ
	
ð	ñðPð 
ôPr&   