§
    xŠtj¤Î  ã                   ó\  — U d dl Z d dl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mZmZ d d
lmZmZmZmZmZmZmZmZ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+ d dl,m-Z- d dl.m#Z/ d dl.m0Z0m1Z1m2Z2m3Z3 d dl.m4Z5 d dl.mZ6 d dl7m8Z8  ede2e1¦  «        Z9 ee:¦  «        Z; G d„ de
¦  «        Z< G d„ deee9         ¦  «        Z= G d„ de=¦  «        Z> G d„ de=e3         ¦  «        Z? G d„ d e=e5         ¦  «        Z@d!ZAeeB         eCd"<    G d#„ d$e=e6         ¦  «        ZD G d%„ d&e=e6         ¦  «        ZE G d'„ d(e¦  «        ZF G d)„ d*eF¦  «        ZG G d+„ d,eF¦  «        ZH G d-„ d.eF¦  «        ZI G d/„ d0eF¦  «        ZJ G d1„ d2eF¦  «        ZK G d3„ d4eF¦  «        ZLdS )5é    N)ÚABCÚabstractmethod)Úbisect_left)ÚCallableÚSequence)ÚIntEnum)Úpartial)Ú	getLogger)ÚLock)ÚGenericÚTypeVarÚcast)	ÚAsynchronousÚCounterÚ	HistogramÚObservableCounterÚObservableGaugeÚObservableUpDownCounterÚSynchronousÚUpDownCounterÚ_Gauge)ÚExemplarÚExemplarReservoirBuilder)ÚBuckets)ÚMapping)ÚExponentMapping)ÚLogarithmMapping)Ú_Instrument)ÚMeasurement)ÚExponentialHistogramDataPointÚHistogramDataPointÚNumberDataPointÚSum)ÚGauge)r   )Ú
AttributesÚ_DataPointVarTc                   ó   — e Zd ZdZdZdZdZdS )ÚAggregationTemporalityz`
    The temporality to use when aggregating data.

    Can be one of the following values:
    r   é   é   N)Ú__name__Ú
__module__Ú__qualname__Ú__doc__ÚUNSPECIFIEDÚDELTAÚ
CUMULATIVE© ó    úm/var/www/html/CA-Chatbot/venv/lib/python3.11/site-packages/opentelemetry/sdk/metrics/_internal/aggregation.pyr(   r(   C   s)   € € € € € ðð ð €KØ€EØ€J€J€Jr3   r(   c                   óœ   — e Zd Zdedefd„Ze	 ddededdfd	„¦   «         Z	ed
e
dededz  fd„¦   «         Zdee         fd„Zdededdfd„ZdS )Ú_AggregationÚ
attributesÚreservoir_builderc                 óf   — t          ¦   «         | _        || _         |¦   «         | _        d | _        d S ©N)r   Ú_lockÚ_attributesÚ
_reservoirÚ_previous_point)Úselfr7   r8   s      r4   Ú__init__z_Aggregation.__init__P   s5   € õ
 ‘V”VˆŒ
Ø%ˆÔØ+Ð+Ñ-Ô-ˆŒØ#ˆÔÐÐr3   TÚmeasurementÚshould_sample_exemplarÚreturnNc                 ó   — dS )zÓAggregate a measurement.

        Args:
            measurement: Measurement to aggregate
            should_sample_exemplar: Whether the measurement should be sampled by the exemplars reservoir or not.
        Nr2   ©r?   rA   rB   s      r4   Ú	aggregatez_Aggregation.aggregateZ   ó   € € € r3   Ú"collection_aggregation_temporalityÚcollection_start_nanoc                 ó   — d S r:   r2   ©r?   rH   rI   s      r4   Úcollectz_Aggregation.collecte   s	   € ð 	ˆr3   c                 ó@   — | j                              | j        ¦  «        S )zpReturns the collected exemplars.

        Returns:
            The exemplars collected by the reservoir
        )r=   rL   r<   ©r?   s    r4   Ú_collect_exemplarsz_Aggregation._collect_exemplarsm   s   € ð Œ×&Ò& tÔ'7Ñ8Ô8Ð8r3   c                 óp   — |r3| j                              |j        |j        |j        |j        ¦  «         dS dS )a7  Offer the measurement to the exemplar reservoir for sampling.

        It should be called within the each :ref:`aggregate` call.

        Args:
            measurement: The new measurement
            should_sample_exemplar: Whether the measurement should be sampled by the exemplars reservoir or not.
        N)r=   ÚofferÚvalueÚtime_unix_nanor7   ÚcontextrE   s      r4   Ú_sample_exemplarz_Aggregation._sample_exemplaru   sR   € ð "ð 	ØŒO×!Ò!ØÔ!ØÔ*ØÔ&ØÔ#ñ	ô ð ð ð ð	ð 	r3   ©T)r+   r,   r-   r%   r   r@   r   r   ÚboolrF   r(   Úintr&   rL   r   r   rO   rU   r2   r3   r4   r6   r6   O   s  € € € € € ð$àð$ð 4ð$ð $ð $ð $ð àGKðð Ø&ðØ@Dðà	ðð ð ñ „^ðð ðà,Bðð  #ðð 
˜$Ñ	ð	ð ð ñ „^ðð9 H¨XÔ$6ð 9ð 9ð 9ð 9ðØ&ðØ@Dðà	ðð ð ð ð ð r3   r6   c                   ó@   — e Zd Z	 d
dededdfd„Zdedededz  fd	„Z	dS )Ú_DropAggregationTrA   rB   rC   Nc                 ó   — d S r:   r2   rE   s      r4   rF   z_DropAggregation.aggregateŠ   s	   € ð 	ˆr3   rH   rI   c                 ó   — d S r:   r2   rK   s      r4   rL   z_DropAggregation.collect�   s	   € ð
 	ˆr3   rV   )
r+   r,   r-   r   rW   rF   r(   rX   r&   rL   r2   r3   r4   rZ   rZ   ‰   s}   € € € € € àGKðð Ø&ðØ@Dðà	ðð ð ð ð
à,Bðð  #ðð 
˜$Ñ	ð	ð ð ð ð ð r3   rZ   c            
       óf   ‡ — e Zd Zdededededef
ˆ fd„Z	 dde	d	ed
dfd„Z
deded
edz  fd„Zˆ xZS )Ú_SumAggregationr7   Úinstrument_is_monotonicÚ"instrument_aggregation_temporalityÚstart_time_unix_nanor8   c                 óª   •— t          ¦   «                              ||¦  «         || _        || _        || _        d | _        | j        | _        d| _        d S ©Nr   )Úsuperr@   Ú_start_time_unix_nanoÚ#_instrument_aggregation_temporalityÚ_instrument_is_monotonicÚ_valueÚ_previous_collection_start_nanoÚ_previous_value)r?   r7   r_   r`   ra   r8   Ú	__class__s         €r4   r@   z_SumAggregation.__init__˜   s^   ø€ õ 	‰Œ×Ò˜Ð%6Ñ7Ô7Ð7à%9ˆÔ"à.ð 	Ô0ð )@ˆÔ%àˆŒà/3Ô/IˆÔ,Ø ˆÔÐÐr3   TrA   rB   rC   Nc                 ó´   — | j         5  | j        €d| _        | j        |j        z   | _        d d d ¦  «         n# 1 swxY w Y   |                      ||¦  «         d S rc   )r;   rh   rR   rU   rE   s      r4   rF   z_SumAggregation.aggregate­   s    € ð ŒZð 	:ð 	:ØŒ{Ð"Ø�”àœ+¨Ô(9Ñ9ˆDŒKð		:ð 	:ð 	:ñ 	:ô 	:ð 	:ð 	:ð 	:ð 	:ð 	:ð 	:øøøð 	:ð 	:ð 	:ð 	:ð 	×Ò˜kÐ+AÑBÔBÐBÐBÐBs   ˆ#7·;¾;rH   rI   c                 ó<  — | j         5  | j        }d| _        | j        t          j        u r·|t          j        u rU| j        }|| _        |€	 ddd¦  «         dS t          | j        |                      ¦   «         |||¬¦  «        cddd¦  «         S |€d}|| j	        z   | _	        t          | j        |                      ¦   «         | j
        || j	        ¬¦  «        cddd¦  «         S |€	 ddd¦  «         dS |t          j        u rV|| j	        z
  }|| _	        | j        }|| _        t          | j        |                      ¦   «         |||¬¦  «        cddd¦  «         S t          | j        |                      ¦   «         | j
        ||¬¦  «        cddd¦  «         S # 1 swxY w Y   dS )a…  
        Atomically return a point for the current value of the metric and
        reset the aggregation value.

        Synchronous instruments have a method which is called directly with
        increments for a given quantity:

        For example, an instrument that counts the amount of passengers in
        every vehicle that crosses a certain point in a highway:

        synchronous_instrument.add(2)
        collect(...)  # 2 passengers are counted
        synchronous_instrument.add(3)
        collect(...)  # 3 passengers are counted
        synchronous_instrument.add(1)
        collect(...)  # 1 passenger is counted

        In this case the instrument aggregation temporality is DELTA because
        every value represents an increment to the count,

        Asynchronous instruments have a callback which returns the total value
        of a given quantity:

        For example, an instrument that measures the amount of bytes written to
        a certain hard drive:

        callback() -> 1352
        collect(...) # 1352 bytes have been written so far
        callback() -> 2324
        collect(...) # 2324 bytes have been written so far
        callback() -> 4542
        collect(...) # 4542 bytes have been written so far

        In this case the instrument aggregation temporality is CUMULATIVE
        because every value represents the total of the measurement.

        There is also the collection aggregation temporality, which is passed
        to this method. The collection aggregation temporality defines the
        nature of the returned value by this aggregation.

        When the collection aggregation temporality matches the
        instrument aggregation temporality, then this method returns the
        current value directly:

        synchronous_instrument.add(2)
        collect(DELTA) -> 2
        synchronous_instrument.add(3)
        collect(DELTA) -> 3
        synchronous_instrument.add(1)
        collect(DELTA) -> 1

        callback() -> 1352
        collect(CUMULATIVE) -> 1352
        callback() -> 2324
        collect(CUMULATIVE) -> 2324
        callback() -> 4542
        collect(CUMULATIVE) -> 4542

        When the collection aggregation temporality does not match the
        instrument aggregation temporality, then a conversion is made. For this
        purpose, this aggregation keeps a private attribute,
        self._previous_value.

        When the instrument is synchronous:

        self._previous_value is the sum of every previously
        collected (delta) value. In this case, the returned (cumulative) value
        will be:

        self._previous_value + value

        synchronous_instrument.add(2)
        collect(CUMULATIVE) -> 2
        synchronous_instrument.add(3)
        collect(CUMULATIVE) -> 5
        synchronous_instrument.add(1)
        collect(CUMULATIVE) -> 6

        Also, as a diagram:

        time ->

        self._previous_value
        |-------------|

        value (delta)
                      |----|

        returned value (cumulative)
        |------------------|

        When the instrument is asynchronous:

        self._previous_value is the value of the previously
        collected (cumulative) value. In this case, the returned (delta) value
        will be:

        value - self._previous_value

        callback() -> 1352
        collect(DELTA) -> 1352
        callback() -> 2324
        collect(DELTA) -> 972
        callback() -> 4542
        collect(DELTA) -> 2218

        Also, as a diagram:

        time ->

        self._previous_value
        |-------------|

        value (cumulative)
        |------------------|

        returned value (delta)
                      |----|
        N©r7   Ú	exemplarsra   rS   rR   r   )r;   rh   rf   r(   r0   ri   r"   r<   rO   rj   re   )r?   rH   rI   rR   Úprevious_collection_start_nanoÚresult_values         r4   rL   z_SumAggregation.collect¸   s  € ðz ŒZð P	ð P	Ø”KˆEØˆDŒKð Ô8Ý)Ô/ð0ð 0ð 7Ý-Ô3ð4ð 4ð Ô<ð 3ð .ð Ô8ð �}Ø#ð-P	ð P	ð P	ñ P	ô P	ð P	ð P	ð P	õ0 +Ø#'Ô#3Ø"&×"9Ò"9Ñ";Ô";Ø-KØ'<Ø#ðñ ô ð1P	ð P	ð P	ð P	ñ P	ô P	ð P	ð P	ð@ �=Ø�Eà',¨tÔ/CÑ'C�Ô$å&Ø#Ô/Ø"×5Ò5Ñ7Ô7Ø)-Ô)CØ#8ØÔ.ðñ ô ðKP	ð P	ð P	ð P	ñ P	ô P	ð P	ð P	ð` ˆ}ð ðgP	ð P	ð P	ñ P	ô P	ð P	ð P	ð P	ðl 3Ý)Ô/ð0ð 0ð  % tÔ';Ñ;�à',�Ô$ð Ô8ð /ð 8M�Ô4å&Ø#Ô/Ø"×5Ò5Ñ7Ô7Ø)GØ#8Ø&ðñ ô ðEP	ð P	ð P	ð P	ñ P	ô P	ð P	ð P	õT #ØÔ+Ø×1Ò1Ñ3Ô3Ø%)Ô%?Ø4Øðñ ô ðUP	ð P	ð P	ð P	ñ P	ô P	ð P	ð P	ð P	ð P	ð P	ð P	øøøð P	ð P	ð P	ð P	ð P	ð P	s2   ˆAFÁ*FÂAFÃ!FÃ1AFÅ/FÆFÆFrV   )r+   r,   r-   r%   rW   r(   rX   r   r@   r   rF   r"   rL   Ú__classcell__©rk   s   @r4   r^   r^   —   sî   ø€ € € € € ð!àð!ð "&ð!ð -Cð	!ð
 "ð!ð 4ð!ð !ð !ð !ð !ð !ð, HLð	Cð 	CØ&ð	CØ@Dð	Cà	ð	Cð 	Cð 	Cð 	CðMà,BðMð  #ðMð 
˜4Ñ	ð	Mð Mð Mð Mð Mð Mð Mð Mr3   r^   c                   óV   ‡ — e Zd Zdedefˆ fd„Z	 ddedefd„Zde	d	e
d
edz  fd„Zˆ xZS )Ú_LastValueAggregationr7   r8   c                 óZ   •— t          ¦   «                              ||¦  «         d | _        d S r:   )rd   r@   rh   )r?   r7   r8   rk   s      €r4   r@   z_LastValueAggregation.__init__‰  s+   ø€ õ
 	‰Œ×Ò˜Ð%6Ñ7Ô7Ð7ØˆŒˆˆr3   TrA   rB   c                 óˆ   — | j         5  |j        | _        d d d ¦  «         n# 1 swxY w Y   |                      ||¦  «         d S r:   )r;   rR   rh   rU   rE   s      r4   rF   z_LastValueAggregation.aggregate‘  sŠ   € ð ŒZð 	,ð 	,Ø%Ô+ˆDŒKð	,ð 	,ð 	,ñ 	,ô 	,ð 	,ð 	,ð 	,ð 	,ð 	,ð 	,øøøð 	,ð 	,ð 	,ð 	,ð 	×Ò˜kÐ+AÑBÔBÐBÐBÐBs   ˆ!¡%¨%rH   rI   rC   Nc                 óà   — | j         5  | j        €	 ddd¦  «         dS | j        }d| _        ddd¦  «         n# 1 swxY w Y   |                      ¦   «         }t          | j        |d||¬¦  «        S )úP
        Atomically return a point for the current value of the metric.
        Nrn   )r;   rh   rO   r"   r<   )r?   rH   rI   rR   ro   s        r4   rL   z_LastValueAggregation.collect™  sà   € ð ŒZð 	ð 	ØŒ{Ð"Øð	ð 	ð 	ñ 	ô 	ð 	ð 	ð 	ð ”KˆEØˆDŒKð		ð 	ð 	ñ 	ô 	ð 	ð 	ð 	ð 	ð 	ð 	øøøð 	ð 	ð 	ð 	ð ×+Ò+Ñ-Ô-ˆ	åØÔ'ØØ!%Ø0Øð
ñ 
ô 
ð 	
s   ˆ	8ž8¸<¿<rV   )r+   r,   r-   r%   r   r@   r   rW   rF   r(   rX   r&   rL   rr   rs   s   @r4   ru   ru   ˆ  s»   ø€ € € € € ðàðð 4ðð ð ð ð ð ð HLðCð CØ&ðCØ@DðCð Cð Cð Cð
à,Bð
ð  #ð
ð 
˜$Ñ	ð	
ð 
ð 
ð 
ð 
ð 
ð 
ð 
r3   ru   )g        g      @g      $@g      9@g      I@g     ÀR@g      Y@g     @o@g     @@g     p‡@g     @�@g     ˆ£@g     ˆ³@g     L½@g     ˆÃ@Ú9_DEFAULT_EXPLICIT_BUCKET_HISTOGRAM_AGGREGATION_BOUNDARIESc                   óš   ‡ — e Zd Z	 	 ddededededee         dz  de	fˆ fd	„Z
d
ee         fd„Z	 ddede	d
dfd„Zdeded
edz  fd„Zˆ xZS )Ú#_ExplicitBucketHistogramAggregationNTr7   r`   ra   r8   Ú
boundariesÚrecord_min_maxc                 óf  •— |€t           }|r[t          |¦  «        D ]K\  }}t          j        |¦  «        st	          d|›�¦  «        ‚|r||dz
           |k    rt	          d¦  «        ‚ŒLt          ¦   «                              |t          ||¬¦  «        ¬¦  «         || _        || _	        t          |¦  «        | _        || _        d | _        t          j        | _        t          j         | _        d| _        d | _        t          j        | _        t          j         | _        d| _        | j	        | _        d S )Nzinvalid boundary: r)   z&boundaries must be strictly increasing)r}   ©r8   r   )rz   Ú	enumerateÚmathÚisfiniteÚ
ValueErrorrd   r@   r	   rf   re   ÚtupleÚ_boundariesÚ_record_min_maxrh   ÚinfÚ_minÚ_maxÚ_sumrj   Ú_previous_minÚ_previous_maxÚ_previous_sumri   )
r?   r7   r`   ra   r8   r}   r~   ÚidxÚboundrk   s
            €r4   r@   z,_ExplicitBucketHistogramAggregation.__init__Æ  sT  ø€ ð ÐåIð ð ð 	OÝ'¨
Ñ3Ô3ð Oð O‘
��UÝ”} UÑ+Ô+ð EÝ$Ð%C¸%Ð%CÐ%CÑDÔDÐDØð O˜: c¨A¡gÔ.°%Ò7Ð7Ý$Ð%MÑNÔNÐNøÝ‰Œ×ÒØÝ%Ø!¨jðñ ô ð 	ñ 	
ô 	
ð 	
ð /ð 	Ô0ð &:ˆÔ"Ý  Ñ,Ô,ˆÔØ-ˆÔàˆŒÝ”HˆŒ	Ý”X�IˆŒ	ØˆŒ	à#ˆÔÝ!œXˆÔÝ"œh˜YˆÔØˆÔà/3Ô/IˆÔ,Ð,Ð,r3   rC   c                 ó8   — dgt          | j        ¦  «        dz   z  S ©Nr   r)   )Úlenr†   rN   s    r4   Ú_get_empty_bucket_countsz<_ExplicitBucketHistogramAggregation._get_empty_bucket_countsó  s   € Øˆs•c˜$Ô*Ñ+Ô+¨aÑ/Ñ0Ð0r3   rA   rB   c                 ó¤  — | j         5  | j        €|                      ¦   «         | _        |j        }| xj        |z  c_        | j        r4t          | j        |¦  «        | _        t          | j	        |¦  «        | _	        | j        t          | j        |¦  «        xx         dz  cc<   d d d ¦  «         n# 1 swxY w Y   |                      ||¦  «         d S )Nr)   )r;   rh   r”   rR   r‹   r‡   Úminr‰   ÚmaxrŠ   r   r†   rU   )r?   rA   rB   Úmeasurement_values       r4   rF   z-_ExplicitBucketHistogramAggregation.aggregateö  s%  € ð ŒZð 	Oð 	OØŒ{Ð"Ø"×;Ò;Ñ=Ô=�”à +Ô 1ÐàˆIŒIÐ*Ñ*ˆIŒIàÔ#ð >Ý ¤	Ð+<Ñ=Ô=�”	Ý ¤	Ð+<Ñ=Ô=�”	àŒK� DÔ$4Ð6GÑHÔHÐIÐIÔIÈQÑNÐIÐIÑIð	Oð 	Oð 	Oñ 	Oô 	Oð 	Oð 	Oð 	Oð 	Oð 	Oð 	Oøøøð 	Oð 	Oð 	Oð 	Oð 	×Ò˜kÐ+AÑBÔBÐBÐBÐBs   ˆBB/Â/B3Â6B3rH   rI   c                 óD  — | j         5  | j        }| j        }| j        }| j        }d| _        d| _        t
          j        | _        t
          j         | _        | j        t          j	        u �r�|t          j	        u ry| j
        }|| _
        |€	 ddd¦  «         dS t          | j        |                      ¦   «         ||t          |¦  «        |t          |¦  «        | j        ||¬¦
  «
        cddd¦  «         S |€|                      ¦   «         }| j        €|                      ¦   «         | _        d„ t'          || j        ¦  «        D ¦   «         | _        t)          || j        ¦  «        | _        t-          || j        ¦  «        | _        || j        z   | _        t          | j        |                      ¦   «         | j        |t          | j        ¦  «        | j        t          | j        ¦  «        | j        | j        | j        ¬¦
  «
        cddd¦  «         S 	 ddd¦  «         dS # 1 swxY w Y   dS )ry   Nr   )
r7   ro   ra   rS   ÚcountÚsumÚbucket_countsÚexplicit_boundsr–   r—   c                 ó   — g | ]
\  }}||z   ‘ŒS r2   r2   )Ú.0Úvalue_elementÚprevious_value_elements      r4   ú
<listcomp>z?_ExplicitBucketHistogramAggregation.collect.<locals>.<listcomp>D  s6   € ð (ð (ð (ñØ%Ø.ð "Ð$:Ñ:ð(ð (ð (r3   )r;   rh   r‹   r‰   rŠ   r‚   rˆ   rf   r(   r0   ri   r!   r<   rO   r›   r…   r†   r”   rj   Úzipr–   rŒ   r—   r�   rŽ   re   )r?   rH   rI   rR   Úsum_Úmin_Úmax_rp   s           r4   rL   z+_ExplicitBucketHistogramAggregation.collect	  s  € ð ŒZð J	ð J	Ø”KˆEØ”9ˆDØ”9ˆDØ”9ˆDàˆDŒKØˆDŒIÝœˆDŒIÝœ˜	ˆDŒIð Ô8Ý)Ô/ð0ñ 0ð 7Ý-Ô3ð4ð 4ð Ô<ð 3ð .ð Ô8ð �}Ø#ð;J	ð J	ð J	ñ J	ô J	ð J	ð J	ð J	õ> .Ø#'Ô#3Ø"&×"9Ò"9Ñ";Ô";Ø-KØ'<Ý! %™jœjØ Ý&+¨E¡l¤lØ(,Ô(8Ø Ø ðñ ô ð?J	ð J	ð J	ð J	ñ J	ô J	ð J	ð J	ðX �=Ø ×9Ò9Ñ;Ô;�EàÔ'Ð/Ø+/×+HÒ+HÑ+JÔ+J�DÔ(ð(ð (õ
 ˜U DÔ$8Ñ9Ô9ð(ñ (ô (�Ô$õ &)¨¨tÔ/AÑ%BÔ%B�Ô"Ý%(¨¨tÔ/AÑ%BÔ%B�Ô"Ø%)¨DÔ,>Ñ%>�Ô"å)Ø#Ô/Ø"×5Ò5Ñ7Ô7Ø)-Ô)CØ#8Ý˜dÔ2Ñ3Ô3ØÔ*Ý"'¨Ô(<Ñ"=Ô"=Ø$(Ô$4ØÔ*ØÔ*ðñ ô ð{J	ð J	ð J	ð J	ñ J	ô J	ð J	ð J	ðT ðUJ	ð J	ð J	ñ J	ô J	ð J	ð J	ð J	ð J	ð J	ð J	ð J	øøøð J	ð J	ð J	ð J	ð J	ð J	s&   ˆBHÂAHÃ1D	HÈHÈHÈH©NTrV   )r+   r,   r-   r%   r(   rX   r   r   ÚfloatrW   r@   Úlistr”   r   rF   r&   rL   rr   rs   s   @r4   r|   r|   Å  s;  ø€ € € € € ð .2Ø#ð+Jð +Jàð+Jð -Cð+Jð "ð	+Jð
 4ð+Jð ˜U”O dÑ*ð+Jð ð+Jð +Jð +Jð +Jð +Jð +JðZ1¨$¨s¬)ð 1ð 1ð 1ð 1ð HLðCð CØ&ðCØ@DðCà	ðCð Cð Cð Cð&Sà,BðSð  #ðSð 
˜$Ñ	ð	Sð Sð Sð Sð Sð Sð Sð Sr3   r|   c                   óì   ‡ — e Zd ZdZdZ	 	 	 d dededed	ed
edede	fˆ fd„Z
	 d!dede	ddfd„Zdedededz  fd„Zd„ Zed„ ¦   «         Zededefd„¦   «         Zd„ Zedefd„¦   «         Zdedefd„Zˆ xZS )"Ú&_ExponentialBucketHistogramAggregationr*   i @  é    é   Tr7   r8   r`   ra   Úmax_sizeÚ	max_scaler~   c           
      ó  •— || j         k     rt          d|› d�¦  «        ‚|| j        k    rt          d|› d�¦  «        ‚|dk    rt                               d|¦  «         t          ¦   «                              |t          |t          d|¦  «        ¬¦  «        ¬¦  «         || _	        || _
        || _        || _        || _        d | _        d | _        t           j        | _        t           j         | _        d| _        d| _        d| _        d | _        d | _        d | _        t           j        | _        t           j         | _        d| _        d| _        d| _        d | _        | j
        | _         |  !                    | j        ¦  «        | _"        d S )	NzBuckets max size z6 is smaller than minimum max size {self._min_max_size}z5 is larger than maximum max size {self._max_max_size}r­   zGmax_scale is set to %s which is larger than the recommended value of 20)Úsizer€   r   )#Ú_min_max_sizer„   Ú_max_max_sizeÚ_loggerÚwarningrd   r@   r	   r–   rf   re   Ú	_max_sizeÚ
_max_scaler‡   Ú_value_positiveÚ_value_negativer‚   rˆ   r‰   rŠ   r‹   Ú_countÚ_zero_countÚ_scaleÚ_previous_value_positiveÚ_previous_value_negativerŒ   r�   rŽ   Ú_previous_countÚ_previous_zero_countÚ_previous_scaleri   Ú_new_mappingÚ_mapping)	r?   r7   r8   r`   ra   r®   r¯   r~   rk   s	           €r4   r@   z/_ExponentialBucketHistogramAggregation.__init__l  s½  ø€ ð0 �dÔ(Ò(Ð(Ýð8 Hð 8ð 8ð 8ñô ð ð
 �dÔ(Ò(Ð(Ýð8 Hð 8ð 8ð 8ñô ð ð �rŠ>ˆ>Ý�OŠOð:àñô ð õ 	‰Œ×ÒØÝ%Ø!­¨B°Ñ(9Ô(9ðñ ô ð 	ñ 	
ô 	
ð 	
ð /ð 	Ô0ð &:ˆÔ"Ø!ˆŒØ#ˆŒØ-ˆÔà#ˆÔØ#ˆÔÝ”HˆŒ	Ý”X�IˆŒ	ØˆŒ	ØˆŒØˆÔØˆŒà(,ˆÔ%Ø(,ˆÔ%Ý!œXˆÔÝ"œh˜YˆÔØˆÔØ ˆÔØ$%ˆÔ!Ø#ˆÔà/3Ô/IˆÔ,à×)Ò)¨$¬/Ñ:Ô:ˆŒˆˆr3   rA   rB   rC   Nc                 óT  — | j         5  | j        €t          ¦   «         | _        | j        €t          ¦   «         | _        |j        }| xj        |z  c_        | j        r4t          | j        |¦  «        | _        t          | j
        |¦  «        | _
        | xj        dz  c_        |dk    r5| xj        dz  c_        | j        | j        k    rd| _        	 d d d ¦  «         d S |dk    r| j        }n
| }| j        }| j                             |¦  «        }d}d\  }}t!          |¦  «        dk    r||_        ||_        ||_        nS||j        k     r|j        |z
  | j        k    rd}|}|j        }n)||j        k    r||j        z
  | j        k    rd}|j        }|}|rx|                      ||¦  «        }	|                      |	| j        | j        ¦  «         |                      | j        j        |	z
  ¦  «        | _        | j                             |¦  «        }| j        j        | _        ||j        k     rH|j        |z
  }
|
t!          |j        ¦  «        k    r|                     |
dz   | j        ¦  «         ||_        nR||j        k    rG||j        z
  }
|
t!          |j        ¦  «        k    r|                     |
dz   | j        ¦  «         ||_        ||j        z
  }|dk     r|t!          |j        ¦  «        z  }|                     |¦  «         d d d ¦  «         n# 1 swxY w Y   |                      ||¦  «         d S )Nr)   r   F)r   r   T)r;   r¸   r   r¹   rR   r‹   r‡   r–   r‰   r—   rŠ   rº   r»   r¼   rÃ   Úmap_to_indexr“   Úindex_startÚ	index_endÚ
index_baser¶   Ú_get_scale_changeÚ
_downscalerÂ   ÚscaleÚcountsÚgrowÚincrement_bucketrU   )r?   rA   rB   r˜   rR   ÚindexÚis_rescaling_neededÚlowÚhighÚscale_changeÚspanÚbucket_indexs               r4   rF   z0_ExponentialBucketHistogramAggregation.aggregateÁ  sß  € ð
 ŒZð i	1ð i	1ØÔ#Ð+Ý'.¡y¤y�Ô$ØÔ#Ð+Ý'.¡y¤y�Ô$à +Ô 1ÐàˆIŒIÐ*Ñ*ˆIŒIàÔ#ð >Ý ¤	Ð+<Ñ=Ô=�”	Ý ¤	Ð+<Ñ=Ô=�”	àˆKŒK˜1ÑˆKŒKà  AÒ%Ð%ØÐ Ô  AÑ%Ð Ô à”; $Ô"2Ò2Ð2Ø"#�D”Kàð-i	1ð i	1ð i	1ñ i	1ô i	1ð i	1ð i	1ð i	1ð0 ! 1Ò$Ð$ØÔ,��ð &7Ð$6Ð!ØÔ,�ð ”M×.Ò.Ð/@ÑAÔAˆEà"'ÐØ‰IˆC�å�5‰zŒz˜QŠˆØ$)�Ô!Ø"'�”Ø#(�Ô Ð ð ˜Ô)Ò)Ð)Ø”_ uÑ,°´Ò?Ð?à&*Ð#Ø�Ø”��ð ˜œÒ'Ð'Ø˜UÔ.Ñ.°4´>ÒAÐAà&*Ð#ØÔ'�Ø�à"ð FØ#×5Ò5°c¸4Ñ@Ô@�Ø—’Ø ØÔ(ØÔ(ñô ð ð
 !%× 1Ò 1Ø”MÔ'¨,Ñ6ñ!ô !�”ð œ×2Ò2Ð3DÑEÔE�àœ-Ô-ˆDŒKà�uÔ(Ò(Ð(Ø”¨Ñ.�à�3˜uœ|Ñ,Ô,Ò,Ð,Ø—J’J˜t a™x¨¬Ñ8Ô8Ð8à$)�Ô!Ð!à˜œÒ(Ð(Ø˜uÔ0Ñ0�à�3˜uœ|Ñ,Ô,Ò,Ð,Ø—J’J˜t a™x¨¬Ñ8Ô8Ð8à"'�”à  5Ô#3Ñ3ˆLà˜aÒÐØ¥ E¤LÑ 1Ô 1Ñ1�ð ×"Ò" <Ñ0Ô0Ð0ðSi	1ð i	1ð i	1ñ i	1ô i	1ð i	1ð i	1ð i	1ð i	1ð i	1ð i	1øøøð i	1ð i	1ð i	1ð i	1ðV 	×Ò˜kÐ+AÑBÔBÐBÐBÐBs   ˆCLÃH!LÌLÌLrH   rI   c                 óô	  — | j         5  | j        }| j        }| j        }| j        }| j        }| j        }| j        }	| j        }
d| _        d| _        d| _        t          j
        | _        t          j
         | _        d| _        d| _        d| _        | j        t          j        u �r=|t          j        u r«| j        }|| _        |€|€	 ddd¦  «         dS t          | j        |                      ¦   «         |||||
|	t%          |j        |                     ¦   «         ¬¦  «        t%          |j        |                     ¦   «         ¬¦  «        d||¬¦  «        cddd¦  «         S |€.| j        €'t-          ¦   «         }|                     ¦   «         | _        |€.| j        €'t-          ¦   «         }|                     ¦   «         | _        |
€| j        €| j        j        }
|
| _        |� | j        €|                     ¦   «         | _        |� | j        €|                     ¦   «         | _        |
�| j        €|
| _        |€ | j        �| j                             ¦   «         }|€ | j        �| j                             ¦   «         }|
€| j        �| j        }
t9          t,          | j        ¦  «        | _        t9          t,          | j        ¦  «        | _        t;          | j        |
¦  «        }|                      | j        ||
|¦  «        \  }}|                      | j        ||
|¦  «        \  }}t;          ||                      ||¦  «        z
  ||                      ||¦  «        z
  ¦  «        }|                       | j        |z
  | j        | j        ¦  «         |  !                    | j        ||
||¦  «         |  !                    | j        ||
||¦  «         t;          || j"        ¦  «        | _"        tG          || j$        ¦  «        | _$        || j%        z   | _%        || j&        z   | _&        |	| j'        z   | _'        || _        t          | j        |                      ¦   «         | j(        || j&        | j%        | j        | j'        t%          | j        j        | j                             ¦   «         ¬¦  «        t%          | j        j        | j                             ¦   «         ¬¦  «        d| j"        | j$        ¬¦  «        cddd¦  «         S 	 ddd¦  «         dS # 1 swxY w Y   dS )ry   Nr   )Úoffsetrœ   )r7   ro   ra   rS   rš   r›   rË   Ú
zero_countÚpositiveÚnegativeÚflagsr–   r—   ))r;   r¸   r¹   r‹   r‰   rŠ   rº   r»   r¼   r‚   rˆ   rf   r(   r0   ri   r    r<   rO   ÚBucketsPointr×   Úget_offset_countsr½   r   Ú
copy_emptyr¾   rÁ   rÃ   rË   r   r–   Ú_get_low_high_previous_currentrÉ   rÊ   Ú_mergerŒ   r—   r�   rŽ   r¿   rÀ   re   )r?   rH   rI   Úvalue_positiveÚvalue_negativer¤   r¥   r¦   rš   rØ   rË   rp   Ú	min_scaleÚlow_positiveÚhigh_positiveÚlow_negativeÚhigh_negatives                    r4   rL   z._ExponentialBucketHistogramAggregation.collect3  sR  € ð ŒZð n	ð n	Ø!Ô1ˆNØ!Ô1ˆNØ”9ˆDØ”9ˆDØ”9ˆDØ”KˆEØÔ)ˆJØ”KˆEà#'ˆDÔ Ø#'ˆDÔ ØˆDŒIÝœˆDŒIÝœ˜	ˆDŒIØˆDŒKØ ˆDÔØˆDŒKð Ô8Ý)Ô/ð0ñ 0ð 7Ý-Ô3ð4ð 4ð Ô<ð 3ð .ð Ô8ð &Ð-°.Ð2HØ#ðKn	ð n	ð n	ñ n	ô n	ð n	ð n	ð n	õN 9Ø#'Ô#3Ø"&×"9Ò"9Ñ";Ô";Ø-KØ'<Ø#Ø Ø#Ø#-Ý!-Ø#1Ô#8Ø+9×+KÒ+KÑ+MÔ+Mð"ñ "ô "õ ".Ø#1Ô#8Ø+9×+KÒ+KÑ+MÔ+Mð"ñ "ô "ð
  Ø Ø ð)ñ ô ðOn	ð n	ð n	ð n	ñ n	ô n	ð n	ð n	ðV #Ð*ØÔ5Ð=õ &-¡Y¤Y�NØ4B×4MÒ4MÑ4OÔ4O�DÔ1à"Ð*ØÔ5Ð=å%,¡Y¤Y�NØ4B×4MÒ4MÑ4OÔ4O�DÔ1Ø�= TÔ%9Ð%AØ œMÔ/�EØ+0�DÔ(ð #Ð.ØÔ5Ð=ð* 5C×4MÒ4MÑ4OÔ4O�DÔ1à"Ð.ØÔ5Ð=à4B×4MÒ4MÑ4OÔ4O�DÔ1ØÐ$¨Ô)=Ð)EØ+0�DÔ(ð #Ð*ØÔ5ÐAà%)Ô%B×%MÒ%MÑ%OÔ%O�Nà"Ð*ØÔ5ÐAà%)Ô%B×%MÒ%MÑ%OÔ%O�NØ�= TÔ%9Ð%EØ Ô0�Eõ 15Ý˜TÔ:ñ1ô 1�Ô-õ 15Ý˜TÔ:ñ1ô 1�Ô-õ   Ô 4°eÑ<Ô<�	ð ×7Ò7ØÔ5Ø&ØØ!ñ	ô ñ ,�˜mð ×7Ò7ØÔ5Ø&ØØ!ñ	ô ñ ,�˜mõ  ØØ×,Ò,¨\¸=ÑIÔIñJàØ×,Ò,¨\¸=ÑIÔIñJñô �	ð —’ØÔ(¨9Ñ4ØÔ1ØÔ1ñô ð ð  —’ØÔ1Ø"ØØØ6ñô ð ð —’ØÔ1Ø"ØØØ6ñô ð õ &)¨¨tÔ/AÑ%BÔ%B�Ô"Ý%(¨¨tÔ/AÑ%BÔ%B�Ô"Ø%)¨DÔ,>Ñ%>�Ô"Ø',¨tÔ/CÑ'C�Ô$à Ô!:Ñ:ð Ô)ð (1�Ô$å4Ø#Ô/Ø"×5Ò5Ñ7Ô7Ø)-Ô)CØ#8ØÔ.ØÔ*ØÔ.Ø#Ô8Ý)Ø#Ô<ÔCà Ô9×KÒKÑMÔMðñ ô õ *Ø#Ô<ÔCà Ô9×KÒKÑMÔMðñ ô ð ØÔ*ØÔ*ð1ñ ô ðgn	ð n	ð n	ð n	ñ n	ô n	ð n	ð n	ð\ ð]n	ð n	ð n	ñ n	ô n	ð n	ð n	ð n	ð n	ð n	ð n	ð n	øøøð n	ð n	ð n	ð n	ð n	ð n	s&   ˆB;S-ÃA>S-ÅM7S-ÓS-Ó-S1Ó4S1c                 óè   — |                       || j        |¦  «        \  }}|                       |||¦  «        \  }}||k    r|}	|}
n+||k    r|}	|}
n t          ||¦  «        }	t          ||¦  «        }
|	|
fS r:   )Ú_get_low_highrÁ   r–   r—   )r?   Úprevious_point_bucketsÚcurrent_point_bucketsÚcurrent_scalerã   Úprevious_point_lowÚprevious_point_highÚcurrent_point_lowÚcurrent_point_highrÑ   rÒ   s              r4   rß   zE_ExponentialBucketHistogramAggregation._get_low_high_previous_current-  s¯   € ð 59×4FÒ4FØ" DÔ$8¸)ñ5
ô 5
Ñ1Ð	Ð0ð 37×2DÒ2DØ! =°)ñ3
ô 3
Ñ/Ð	Ð.ð Ð1Ò1Ð1Ø$ˆCØ&ˆDˆDàÐ"5Ò5Ð5Ø#ˆCØ%ˆDˆDõ Ð(Ð*;Ñ<Ô<ˆCÝÐ*Ð,>Ñ?Ô?ˆDà�DˆyÐr3   c                 óP   — | j         dgk    rdS ||z
  }| j        |z	  | j        |z	  fS )Nr   )r   éÿÿÿÿ)rÌ   rÆ   rÇ   )ÚbucketsrË   rã   Úshifts       r4   ré   z4_ExponentialBucketHistogramAggregation._get_low_highI  s;   € àŒ>˜a˜SÒ Ð Ø�5à˜	Ñ!ˆàÔ" eÑ+¨WÔ->À%Ñ-GÐGÐGr3   rË   c                 óJ   — | dk    rt          | ¦  «        S t          | ¦  «        S rc   )r   r   )rË   s    r4   rÂ   z3_ExponentialBucketHistogramAggregation._new_mappingR  s'   € à�AŠ:ˆ:Ý" 5Ñ)Ô)Ð)Ý Ñ&Ô&Ð&r3   c                 ó`   — d}||z
  | j         k    r|dz	  }|dz	  }|dz  }||z
  | j         k    °|S r’   )r¶   )r?   rÑ   rÒ   Úchanges       r4   rÉ   z8_ExponentialBucketHistogramAggregation._get_scale_changeX  sM   € Øˆà�S‰j˜DœNÒ*Ð*Ø˜1‘9ˆDØ˜‘(ˆCà�a‰KˆFð	 �S‰j˜DœNÒ*Ð*ð ˆr3   r÷   c                 ó”   — | dk    rd S | dk     rt          d¦  «        ‚|                     | ¦  «         |                     | ¦  «         d S )Nr   zInvalid change of scale)Ú	ExceptionÚ	downscale)r÷   rÙ   rÚ   s      r4   rÊ   z1_ExponentialBucketHistogramAggregation._downscalec  sV   € à�QŠ;ˆ;ØˆFà�AŠ:ˆ:åÐ5Ñ6Ô6Ð6à×Ò˜6Ñ"Ô"Ð"Ø×Ò˜6Ñ"Ô"Ð"Ð"Ð"r3   Úprevious_bucketsÚcurrent_bucketsc                 ó  — ||z
  }t          |j        ¦  «        D �]e\  }}|dk    rŒ|j        |z   }	|	|j        k    r|	t	          |j        ¦  «        z  }	|	|z	  }
|
|j        k     ra|j        |
z
  }|| j        k    rt          d¦  «        ‚|t	          |j        ¦  «        k    r|                     |dz   | j        ¦  «         |
|_        |
|j        k    ra|
|j        z
  }|| j        k    rt          d¦  «        ‚|t	          |j        ¦  «        k    r|                     |dz   | j        ¦  «         |
|_        |
|j        z
  }|dk     r|t	          |j        ¦  «        z  }|t          j
        u r| }|                     ||¬¦  «         �Œgd S )Nr   zIncorrect merge scaler)   )Ú	increment)r�   rÌ   rÈ   rÇ   r“   rÆ   r¶   rù   rÍ   r(   r0   rÎ   )r?   rû   rü   rì   rã   Úaggregation_temporalityÚcurrent_changeÚcurrent_bucket_indexÚcurrent_bucketÚcurrent_indexrÏ   rÔ   rÕ   s                r4   rà   z-_ExponentialBucketHistogramAggregation._mergeo  sà  € ð '¨Ñ2ˆå4=ØÔ"ñ5
ô 5
ð 2	ñ 2	Ñ0Ð  .ð  Ò"Ð"Øð ,Ô6Ð9MÑMˆMØ˜Ô8Ò8Ð8Ø¥ _Ô%;Ñ!<Ô!<Ñ<�à! ^Ñ3ˆEàÐ'Ô3Ò3Ð3Ø'Ô1°EÑ9�à˜4œ>Ò)Ð)å#Ð$;Ñ<Ô<Ð<à�3Ð/Ô6Ñ7Ô7Ò7Ð7Ø$×)Ò)¨$°©(°D´NÑCÔCÐCà/4Ð Ô,àÐ'Ô1Ò1Ð1ØÐ/Ô;Ñ;�à˜4œ>Ò)Ð)å#Ð$;Ñ<Ô<Ð<à�3Ð/Ô6Ñ7Ô7Ò7Ð7Ø$×)Ò)¨$°©(°D´NÑCÔCÐCà-2Ð Ô*à Ð#3Ô#>Ñ>ˆLà˜aÒÐØ¥Ð$4Ô$;Ñ <Ô <Ñ<�à&Õ*@Ô*FÐFÐFØ"0 �à×-Ò-Ø¨ð .ñ ô ð ñ ða2	ð 2	r3   ©r¬   r­   TrV   )r+   r,   r-   r²   r³   r%   r   r(   rX   rW   r@   r   rF   r&   rL   rß   Ústaticmethodré   r   rÂ   rÉ   rÊ   r   rà   rr   rs   s   @r4   r«   r«   `  sì  ø€ € € € € ð €Mð €Mð ØØ#ðS;ð S;àðS;ð 4ðS;ð -Cð	S;ð
 "ðS;ð ðS;ð ðS;ð ðS;ð S;ð S;ð S;ð S;ð S;ðl HLðpCð pCØ&ðpCØ@DðpCà	ðpCð pCð pCð pCðdxà,Bðxð  #ðxð 
˜$Ñ	ð	xð xð xð xðtð ð ð8 ðHð Hñ „\ðHð ð'˜Cð ' Gð 'ð 'ð 'ñ „\ð'ð
	ð 	ð 	ð ð	#˜3ð 	#ð 	#ð 	#ñ „\ð	#ð<à!ð<ð !ð<ð <ð <ð <ð <ð <ð <ð <r3   r«   c                   ó\   — e Zd ZdZedededeee	         ge
f         dede	f
d„¦   «         ZdS )	ÚAggregationz/
    Base class for all aggregation types.
    Ú
instrumentr7   Úreservoir_factoryra   rC   c                 ó   — dS )zCreates an aggregationNr2   ©r?   r  r7   r	  ra   s        r4   Ú_create_aggregationzAggregation._create_aggregation³  rG   r3   N)r+   r,   r-   r.   r   r   r%   r   Útyper6   r   rX   r  r2   r3   r4   r  r  ®  s„   € € € € € ðð ð ð	%àð	%ð ð	%ð $Ø�,ÔÐ Ð":Ð:ô
ð		%ð "ð	%ð 
ð	%ð 	%ð 	%ñ „^ð	%ð 	%ð 	%r3   r  c            
       óL   — e Zd ZdZdededeee         ge	f         de
def
d„ZdS )	ÚDefaultAggregationaà  
    The default aggregation to be used in a `View`.

    This aggregation will create an actual aggregation depending on the
    instrument type, as specified next:

    ==================================================== ====================================
    Instrument                                           Aggregation
    ==================================================== ====================================
    `opentelemetry.sdk.metrics.Counter`                  `SumAggregation`
    `opentelemetry.sdk.metrics.UpDownCounter`            `SumAggregation`
    `opentelemetry.sdk.metrics.ObservableCounter`        `SumAggregation`
    `opentelemetry.sdk.metrics.ObservableUpDownCounter`  `SumAggregation`
    `opentelemetry.sdk.metrics.Histogram`                `ExplicitBucketHistogramAggregation`
    `opentelemetry.sdk.metrics.ObservableGauge`          `LastValueAggregation`
    ==================================================== ====================================
    r  r7   r	  ra   rC   c                 ó´  — t          |t          ¦  «        r,t          | |t          ¦  «        dt          j        |¬¦  «        S t          |t
          ¦  «        r,t          | |t          ¦  «        dt          j        |¬¦  «        S t          |t          ¦  «        r,t          | |t          ¦  «        dt          j        |¬¦  «        S t          |t          ¦  «        r,t          | |t          ¦  «        dt          j        |¬¦  «        S t          |t          ¦  «        r8|j
        j        }t          | |t          ¦  «        t          j        ||¬¦  «        S t          |t          ¦  «        rt          | |t          ¦  «        ¬¦  «        S t          |t          ¦  «        rt          | |t          ¦  «        ¬¦  «        S t!          dt#          |¦  «        › d�¦  «        ‚)NT)r8   r_   r`   ra   F)r8   r`   r}   ra   r€   zInvalid instrument type z found)Ú
isinstancer   r^   r(   r0   r   r   r1   r   r   Ú	_advisoryÚexplicit_bucket_boundariesr|   r   ru   r   rù   r  )r?   r  r7   r	  ra   r}   s         r4   r  z&DefaultAggregation._create_aggregationÓ  s  € õ �j¥'Ñ*Ô*ð 		Ý"ØØ"3Ð"3µOÑ"DÔ"DØ(,å*Ô0à%9ðñ ô ð õ �j¥-Ñ0Ô0ð 		Ý"ØØ"3Ð"3µOÑ"DÔ"DØ(-å*Ô0à%9ðñ ô ð õ �jÕ"3Ñ4Ô4ð 		Ý"ØØ"3Ð"3µOÑ"DÔ"DØ(,å*Ô5à%9ðñ ô ð õ �jÕ"9Ñ:Ô:ð 		Ý"ØØ"3Ð"3µOÑ"DÔ"DØ(-å*Ô5à%9ðñ ô ð õ �j¥)Ñ,Ô,ð 	Ø#Ô-ÔHˆJÝ6ØØ"3Ð"3Ý7ñ#ô #õ +Ô0à%Ø%9ð
ñ 
ô 
ð 
õ �j¥/Ñ2Ô2ð 	Ý(ØØ"3Ð"3Õ4IÑ"JÔ"Jðñ ô ð õ
 �j¥&Ñ)Ô)ð 	Ý(ØØ"3Ð"3Õ4IÑ"JÔ"Jðñ ô ð õ ÐKµ4¸
Ñ3CÔ3CÐKÐKÐKÑLÔLÐLr3   N©r+   r,   r-   r.   r   r%   r   r  r6   r   rX   r  r2   r3   r4   r  r  À  sŽ   € € € € € ðð ð$PMàðPMð ðPMð $Ø�,ÔÐ Ð":Ð:ô
ð	PMð "ðPMð 
ðPMð PMð PMð PMð PMð PMr3   r  c            
       óh   — e Zd ZdZ	 	 	 ddededefd„Zd	ed
ede	e
e         gef         dedef
d„ZdS )Ú%ExponentialBucketHistogramAggregationa’  This aggregation informs the SDK to collect:

    - Count of Measurement values falling using a base-2 exponential formula.
    - Arithmetic sum of Measurement values in population. This SHOULD NOT be collected when used with instruments that record negative measurements, e.g. UpDownCounter or ObservableGauge.
    - Min (optional) Measurement value in population.
    - Max (optional) Measurement value in population.

    Args:
        max_size: Maximum number of buckets in each of the positive and negative ranges, not counting the special zero bucket.
        max_scale: Maximum scale factor.
        record_min_max: Whether to record min and max.
    r¬   r­   Tr®   r¯   r~   c                 ó0   — || _         || _        || _        d S r:   )r¶   r·   r‡   )r?   r®   r¯   r~   s       r4   r@   z.ExponentialBucketHistogramAggregation.__init__4  s    € ð "ˆŒØ#ˆŒØ-ˆÔÐÐr3   r  r7   r	  ra   rC   c           	      ó  — t           j        }t          |t          ¦  «        rt           j        }n!t          |t
          ¦  «        rt           j        }t          | |t          ¦  «        ||| j        | j	        | j
        ¬¦  «        S )N)r®   r¯   r~   )r(   r/   r  r   r0   r   r1   r«   r¶   r·   r‡   ©r?   r  r7   r	  ra   r`   s         r4   r  z9ExponentialBucketHistogramAggregation._create_aggregation>  sŠ   € õ .DÔ-OÐ*Ý�j¥+Ñ.Ô.ð 	Ý1GÔ1MÐ.Ð.Ý˜
¥LÑ1Ô1ð 	å&Ô1ð /õ 6ØØÐÕDÑEÔEØ.Ø Ø”^Ø”oØÔ/ð
ñ 
ô 
ð 	
r3   Nr  )r+   r,   r-   r.   rX   rW   r@   r   r%   r   r  r6   r   r  r2   r3   r4   r  r  &  s¸   € € € € € ðð ð ØØ#ð	.ð .àð.ð ð.ð ð	.ð .ð .ð .ð
àð
ð ð
ð $Ø�,ÔÐ Ð":Ð:ô
ð	
ð "ð
ð 
ð
ð 
ð 
ð 
ð 
ð 
r3   r  c            
       óx   — e Zd ZdZ	 	 ddee         dz  deddfd„Zded	e	d
e
ee         gef         dedef
d„ZdS )Ú"ExplicitBucketHistogramAggregationaG  This aggregation informs the SDK to collect:

    - Count of Measurement values falling within explicit bucket boundaries.
    - Arithmetic sum of Measurement values in population. This SHOULD NOT be collected when used with instruments that record negative measurements, e.g. UpDownCounter or ObservableGauge.
    - Min (optional) Measurement value in population.
    - Max (optional) Measurement value in population.


    Args:
        boundaries: Array of increasing values representing explicit bucket boundary values.
        record_min_max: Whether to record min and max.
    NTr}   r~   rC   c                 ó"   — || _         || _        d S r:   )r†   r‡   )r?   r}   r~   s      r4   r@   z+ExplicitBucketHistogramAggregation.__init__h  s   € ð
 &ˆÔØ-ˆÔÐÐr3   r  r7   r	  ra   c                 óD  — t           j        }t          |t          ¦  «        rt           j        }n!t          |t
          ¦  «        rt           j        }| j        �| j        }nt          |dd ¦  «        }|�|j	        nd }t          ||| |t          ¦  «        || j        ¦  «        S )Nr  )r(   r/   r  r   r0   r   r1   r†   Úgetattrr  r|   r‡   )r?   r  r7   r	  ra   r`   r}   Úadvisorys           r4   r  z6ExplicitBucketHistogramAggregation._create_aggregationp  sÁ   € õ .DÔ-OÐ*Ý�j¥+Ñ.Ô.ð 	Ý1GÔ1MÐ.Ð.Ý˜
¥LÑ1Ô1ð 	å&Ô1ð /ð ÔÐ'ØÔ)ˆJˆJõ ˜z¨;¸Ñ=Ô=ˆHð Ð'ð Ô3Ð3àð õ 3ØØ.Ø ØÐÕAÑBÔBØØÔ ñ
ô 
ð 	
r3   r§   )r+   r,   r-   r.   r   r¨   rW   r@   r   r%   r   r  r6   r   rX   r  r2   r3   r4   r  r  Z  s¾   € € € € € ðð ð .2Ø#ð.ð .à˜U”O dÑ*ð.ð ð.ð 
ð	.ð .ð .ð .ð#
àð#
ð ð#
ð $Ø�,ÔÐ Ð":Ð:ô
ð	#
ð "ð#
ð 
ð#
ð #
ð #
ð #
ð #
ð #
r3   r  c            
       óL   — e Zd ZdZdededeee         ge	f         de
def
d„ZdS )	ÚSumAggregationzbThis aggregation informs the SDK to collect:

    - The arithmetic sum of Measurement values.
    r  r7   r	  ra   rC   c           	      ó  — t           j        }t          |t          ¦  «        rt           j        }n!t          |t
          ¦  «        rt           j        }t          |t          |t          t          f¦  «        || |t          ¦  «        ¦  «        S r:   )
r(   r/   r  r   r0   r   r1   r^   r   r   r  s         r4   r  z"SumAggregation._create_aggregationœ  s‡   € õ .DÔ-OÐ*Ý�j¥+Ñ.Ô.ð 	Ý1GÔ1MÐ.Ð.Ý˜
¥LÑ1Ô1ð 	å&Ô1ð /õ ØÝ�z¥GÕ->Ð#?Ñ@Ô@Ø.Ø ØÐ�oÑ.Ô.ñ
ô 
ð 	
r3   Nr  r2   r3   r4   r!  r!  –  sx   € € € € € ðð ð

àð
ð ð
ð $Ø�,ÔÐ Ð":Ð:ô
ð	
ð "ð
ð 
ð
ð 
ð 
ð 
ð 
ð 
r3   r!  c            
       óL   — e Zd ZdZdededeee         ge	f         de
def
d„ZdS )	ÚLastValueAggregationz€
    This aggregation informs the SDK to collect:

    - The last Measurement.
    - The timestamp of the last Measurement.
    r  r7   r	  ra   rC   c                 ó@   — t          | |t           ¦  «        ¬¦  «        S )Nr€   )ru   r  s        r4   r  z(LastValueAggregation._create_aggregation¾  s-   € õ %ØØ/Ð/Õ0EÑFÔFð
ñ 
ô 
ð 	
r3   Nr  r2   r3   r4   r$  r$  ¶  sx   € € € € € ðð ð
àð
ð ð
ð $Ø�,ÔÐ Ð":Ð:ô
ð	
ð "ð
ð 
ð
ð 
ð 
ð 
ð 
ð 
r3   r$  c            
       óL   — e Zd ZdZdededeee         ge	f         de
def
d„ZdS )	ÚDropAggregationz=Using this aggregation will make all measurements be ignored.r  r7   r	  ra   rC   c                 ó>   — t          | |t           ¦  «        ¦  «        S r:   )rZ   r  s        r4   r  z#DropAggregation._create_aggregationÐ  s(   € õ  ØÐ)Ð)Õ*:Ñ;Ô;ñ
ô 
ð 	
r3   Nr  r2   r3   r4   r'  r'  Í  st   € € € € € ØGÐGð
àð
ð ð
ð $Ø�,ÔÐ Ð":Ð:ô
ð	
ð "ð
ð 
ð
ð 
ð 
ð 
ð 
ð 
r3   r'  )Mr‚   Úabcr   r   Úbisectr   Úcollections.abcr   r   Úenumr   Ú	functoolsr	   Úloggingr
   Ú	threadingr   Útypingr   r   r   Úopentelemetry.metricsr   r   r   r   r   r   r   r   r   Ú,opentelemetry.sdk.metrics._internal.exemplarr   r   ÚAopentelemetry.sdk.metrics._internal.exponential_histogram.bucketsr   ÚAopentelemetry.sdk.metrics._internal.exponential_histogram.mappingr   ÚRopentelemetry.sdk.metrics._internal.exponential_histogram.mapping.exponent_mappingr   ÚSopentelemetry.sdk.metrics._internal.exponential_histogram.mapping.logarithm_mappingr   Ú.opentelemetry.sdk.metrics._internal.instrumentr   Ú/opentelemetry.sdk.metrics._internal.measurementr   Ú)opentelemetry.sdk.metrics._internal.pointrÜ   r    r!   r"   r#   r$   Ú
GaugePointÚHistogramPointÚopentelemetry.util.typesr%   r&   r+   r´   r(   r6   rZ   r^   ru   rz   r¨   Ú__annotations__r|   r«   r  r  r  r  r!  r$  r'  r2   r3   r4   ú<module>r>     s|  ðð €€€€Ø #Ð #Ð #Ð #Ð #Ð #Ð #Ð #Ø Ð Ð Ð Ð Ð Ø .Ð .Ð .Ð .Ð .Ð .Ð .Ð .Ø Ð Ð Ð Ð Ð Ø Ð Ð Ð Ð Ð Ø Ð Ð Ð Ð Ð Ø Ð Ð Ð Ð Ð ðð ð ð ð ð ð ð ð ð ð
ð 
ð 
ð 
ð 
ð 
ð 
ð 
ð 
ð 
ð 
ð 
ð 
ð 
ð 
ð 
ð 
ð 
ð 
ð 
ð 
ð 
ðð ð ð ð ð ð ð ðð ð ð ð ð ðð ð ð ð ð ðð ð ð ð ð ðð ð ð ð ð ð GÐ FÐ FÐ FÐ FÐ FØ GÐ GÐ GÐ GÐ GÐ GØ MÐ MÐ MÐ MÐ MÐ Mðð ð ð ð ð ð ð ð ð ð ð ð JÐ IÐ IÐ IÐ IÐ Iðð ð ð ð ð ð 0Ð /Ð /Ð /Ð /Ð /à�Ð)¨?Ð<NÑOÔO€à
ˆ)�HÑ
Ô
€ð	ð 	ð 	ð 	ð 	˜Wñ 	ô 	ð 	ð7ð 7ð 7ð 7ð 7�3˜ Ô/ñ 7ô 7ð 7ðtð ð ð ð �|ñ ô ð ðnð nð nð nð n�l 3Ô'ñ nô nð nðb'
ð '
ð '
ð '
ð '
˜L¨Ô4ñ '
ô '
ð '
ðTNÐ 9¸8ÀE¼?ð ð ñ ð&Wð Wð Wð Wð W¨,°~Ô*Fñ Wô Wð WðvK	ð K	ð K	ð K	ð K	¨\¸.Ô-Iñ K	ô K	ð K	ð\%ð %ð %ð %ð %�#ñ %ô %ð %ð$cMð cMð cMð cMð cM˜ñ cMô cMð cMðL1
ð 1
ð 1
ð 1
ð 1
¨Kñ 1
ô 1
ð 1
ðh9
ð 9
ð 9
ð 9
ð 9
¨ñ 9
ô 9
ð 9
ðx
ð 
ð 
ð 
ð 
�[ñ 
ô 
ð 
ð@
ð 
ð 
ð 
ð 
˜;ñ 
ô 
ð 
ð.
ð 
ð 
ð 
ð 
�kñ 
ô 
ð 
ð 
ð 
r3   