o
    i('                     @  s  d dl mZ d dlZd dlmZmZ d dlmZ d dlm	Z	 d dl
mZmZmZ d dlmZ d dlmZmZmZmZmZmZmZmZ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j(G dd deZ)G dd deZ*ededZ+G dd deee+ Z,G dd de,e eZ-G dd de,e eZ.G dd de,e eZ/G dd de,e eZ0G dd  d e,e eZ1G d!d" d"e,e eZ2G d#d$ d$e,e eZ3dS )%    )annotationsN)ABCabstractmethod)Sequence)Lock)AnyGenericTypeVar)WeakSet)	CallbackTCounter	Histogram
InstrumentMeterMeterProviderNoOpMeterProviderObservableCounterObservableGaugeObservableUpDownCounterUpDownCounter_Gauge)r   )get_current_span)
Attributes   )_LogfireWrappedSpan)handle_internal_errorsc                   @  s   e Zd ZU ded< ejedZded< ejedZ	ded< eje
dZded	< 	
	
	
d$d%ddZd&ddZd'ddZd(d)d d!Zd(d)d"d#Zd
S )*ProxyMeterProviderr   provider)default_factoryzWeakSet[_ProxyMeter]metersr   lockzset[str]suppressed_scopesNnamestrversion
str | None
schema_url
attributesAttributes | Nonereturnr   c                 C  s   | j 5 || jv rt }n| j}|j|||g|d ur|gng R  }t||||}| j| |W  d    S 1 s;w   Y  d S N)r    r!   r   r   	get_meter_ProxyMeterr   add)selfr"   r$   r&   r'   r   inner_metermeter r1   _/var/www/html/karishye-ai-python/venv/lib/python3.10/site-packages/logfire/_internal/metrics.pyr+   (   s   
$$zProxyMeterProvider.get_meterscopesNonec                 G  sZ   | j   | j| | jD ]}|j|v r|t  qW d    d S 1 s&w   Y  d S r*   )r    r!   updater   r"   	set_meterr   )r.   r3   r0   r1   r1   r2   suppress_scopes9   s   

"z"ProxyMeterProvider.suppress_scopesmeter_providerc                 C  sZ   | j   || _| jD ]}||j| jv rt n| q
W d    d S 1 s&w   Y  d S r*   )r    r   r   r6   r"   r!   r   )r.   r8   r0   r1   r1   r2   set_meter_provider@   s   
"z%ProxyMeterProvider.set_meter_provider0u  timeout_millisfloatc                 C  T   | j  t| jtr| j| W d    d S W d    d S 1 s#w   Y  d S r*   )r    
isinstancer   SDKMeterProvidershutdownr.   r;   r1   r1   r2   r@   F      "zProxyMeterProvider.shutdownc                 C  r=   r*   )r    r>   r   r?   force_flushrA   r1   r1   r2   rC   K   rB   zProxyMeterProvider.force_flush)NNN)
r"   r#   r$   r%   r&   r%   r'   r(   r)   r   )r3   r#   r)   r4   r8   r   r)   r4   )r:   )r;   r<   r)   r4   )__name__
__module____qualname____annotations__dataclassesfieldr
   r   r   r    setr!   r+   r7   r9   r@   rC   r1   r1   r1   r2   r   !   s   
 

r   c                      s   e Zd Zd2 fd
dZd3ddZd4ddZ		d5d6ddZ		d5d7ddZ	 		d8d9d$d%Z		d5d:d'd(Z			d5d;d*d+Z
	 		d8d<d-d.Z	 		d8d=d0d1Z  ZS )>r,   r0   r   r"   r#   r$   r%   r&   r)   r4   c                   s,   t  j|||d t | _|| _t | _d S )N)r$   r&   )super__init__r   _lock_meterr
   _instruments)r.   r0   r"   r$   r&   	__class__r1   r2   rM   R   s   z_ProxyMeter.__init__r8   r   c                 C  s\   | | j| j| j}| j || _| jD ]}|| qW d   dS 1 s'w   Y  dS )zCalled when a real meter provider is set on the creating _ProxyMeterProvider.

        Creates a real backing meter for this instance and notifies all created
        instruments so they can create real backing instruments.
        N)r+   _name_version_schema_urlrN   rO   rP   on_meter_set)r.   r8   
real_meter
instrumentr1   r1   r2   r6   ^   s   
"z_ProxyMeter.set_meterinstrument_type#type[_ProxyInstrument[InstrumentT]]kwargsr   InstrumentTc                 K  sL   | j  || jfi |}| j| |W  d    S 1 sw   Y  d S r*   )rN   rO   rP   r-   )r.   rY   r[   proxyr1   r1   r2   _add_proxy_instrumentm   s
   $z!_ProxyMeter._add_proxy_instrument unitdescriptionr   c                 C     | j t|||dS N)r"   r`   ra   )r^   _ProxyCounterr.   r"   r`   ra   r1   r1   r2   create_counters      z_ProxyMeter.create_counterr   c                 C  rb   rc   )r^   _ProxyUpDownCounterre   r1   r1   r2   create_up_down_counter{   rg   z"_ProxyMeter.create_up_down_counterN	callbacksSequence[CallbackT] | Noner   c                 C     | j t||||dS N)r"   r`   ra   rj   )r^   _ProxyObservableCounterr.   r"   rj   r`   ra   r1   r1   r2   create_observable_counter      
z%_ProxyMeter.create_observable_counterr   c                 K  s   | j tf|||d|S rc   )r^   _ProxyHistogram)r.   r"   r`   ra   r[   r1   r1   r2   create_histogram   s   z_ProxyMeter.create_histogramGaugec                 C  rb   rc   )r^   _ProxyGaugere   r1   r1   r2   create_gauge   rg   z_ProxyMeter.create_gauger   c                 C  rl   rm   )r^   _ProxyObservableGaugero   r1   r1   r2   create_observable_gauge   rq   z#_ProxyMeter.create_observable_gauger   c                 C  rl   rm   )r^   _ProxyObservableUpDownCounterro   r1   r1   r2   !create_observable_up_down_counter   rq   z-_ProxyMeter.create_observable_up_down_counter)
r0   r   r"   r#   r$   r%   r&   r%   r)   r4   rD   )rY   rZ   r[   r   r)   r\   )r_   r_   )r"   r#   r`   r#   ra   r#   r)   r   )r"   r#   r`   r#   ra   r#   r)   r   )Nr_   r_   )
r"   r#   rj   rk   r`   r#   ra   r#   r)   r   )
r"   r#   r`   r#   ra   r#   r[   r   r)   r   )r"   r#   r`   r#   ra   r#   r)   rt   )
r"   r#   rj   rk   r`   r#   ra   r#   r)   r   )
r"   r#   rj   rk   r`   r#   ra   r#   r)   r   )rE   rF   rG   rM   r6   r^   rf   ri   rp   rs   rv   rx   rz   __classcell__r1   r1   rQ   r2   r,   Q   s8    

	r,   r\   )boundc                   @  s>   e Zd ZdddZdd	d
ZedddZeddddZdS )_ProxyInstrumentr0   r   r[   r   r)   r4   c                 K  s   || _ | || _d S r*   )_kwargs_create_real_instrument_instrument)r.   r0   r[   r1   r1   r2   rM      s   z_ProxyInstrument.__init__c                 C  s   |  || _dS )z<Called when a real meter is set on the creating _ProxyMeter.N)r   r   r.   r0   r1   r1   r2   rV      s   z_ProxyInstrument.on_meter_setr\   c                 C  s   dS )z:Create an instance of the real instrument. Implement this.Nr1   r   r1   r1   r2   r      s    z(_ProxyInstrument._create_real_instrumentNamountr<   r'   r(   c                 C  s0   t  }t|tr|| jd |pi | d S d S )Nr"   )r   r>   r   increment_metricr~   )r.   r   r'   spanr1   r1   r2   _increment_span_metric   s   
z'_ProxyInstrument._increment_span_metric)r0   r   r[   r   r)   r4   )r0   r   r)   r4   )r0   r   r)   r\   r*   )r   r<   r'   r(   )	rE   rF   rG   rM   rV   r   r   r   r   r1   r1   r1   r2   r}      s    

r}   c                   @  $   e Zd Z	ddddZdddZdS )rd   Nr   int | floatr'   r(   argsr   r[   r)   r4   c                 O  ,   |  || | jj||g|R i | d S r*   )r   r   r-   r.   r   r'   r   r[   r1   r1   r2   r-      s   	 z_ProxyCounter.addr0   r   r   c                 C     |j di | jS Nr1   )rf   r~   r   r1   r1   r2   r         z%_ProxyCounter._create_real_instrumentr*   
r   r   r'   r(   r   r   r[   r   r)   r4   )r0   r   r)   r   rE   rF   rG   r-   r   r1   r1   r1   r2   rd      s    rd   c                   @  r   )rr   Nr   r   r'   r(   r   r   r[   r)   r4   c                 O  r   r*   )r   r   recordr   r1   r1   r2   r      s    z_ProxyHistogram.recordr0   r   r   c                 C  r   r   )rs   r~   r   r1   r1   r2   r      r   z'_ProxyHistogram._create_real_instrumentr*   r   )r0   r   r)   r   )rE   rF   rG   r   r   r1   r1   r1   r2   rr      s    
rr   c                   @     e Zd ZdddZdS )	rn   r0   r   r)   r   c                 C  r   r   )rp   r~   r   r1   r1   r2   r      r   z/_ProxyObservableCounter._create_real_instrumentN)r0   r   r)   r   rE   rF   rG   r   r1   r1   r1   r2   rn          rn   c                   @  r   )	rw   r0   r   r)   r   c                 C  r   r   )rx   r~   r   r1   r1   r2   r      r   z-_ProxyObservableGauge._create_real_instrumentN)r0   r   r)   r   r   r1   r1   r1   r2   rw      r   rw   c                   @  r   )	ry   r0   r   r)   r   c                 C  r   r   )rz   r~   r   r1   r1   r2   r      r   z5_ProxyObservableUpDownCounter._create_real_instrumentN)r0   r   r)   r   r   r1   r1   r1   r2   ry      r   ry   c                   @  r   )rh   Nr   r   r'   r(   r   r   r[   r)   r4   c                 O      | j j||g|R i | d S r*   )r   r-   r   r1   r1   r2   r-          z_ProxyUpDownCounter.addr0   r   r   c                 C  r   r   )ri   r~   r   r1   r1   r2   r   	  r   z+_ProxyUpDownCounter._create_real_instrumentr*   r   )r0   r   r)   r   r   r1   r1   r1   r2   rh          	rh   c                   @  s$   e Zd Z	ddddZdddZdS )ru   Nr   r   r'   r(   r   r   r[   r)   r4   c                 O  r   r*   )r   rK   r   r1   r1   r2   rK     r   z_ProxyGauge.setr0   r   c                 C  r   r   )rv   r~   r   r1   r1   r2   r     r   z#_ProxyGauge._create_real_instrumentr*   r   )r0   r   )rE   rF   rG   rK   r   r1   r1   r1   r2   ru     r   ru   )4
__future__r   rI   abcr   r   collections.abcr   	threadingr   typingr   r   r	   weakrefr
   opentelemetry.metricsr   r   r   r   r   r   r   r   r   r   r   r   rt   opentelemetry.sdk.metricsr?   opentelemetry.tracer   opentelemetry.util.typesr   tracerr   utilsr   	dataclassr   r,   r\   r}   rd   rr   rn   rw   ry   rh   ru   r1   r1   r1   r2   <module>   s2    8/e