
    ght              	          S SK r S SKrS SKrS SKrS SKrS SKrS SKrS SKrS SKrS SK	J
r
Jr  S SKJr  S SKJrJr  S SKJrJr  S SKrS SKJrJrJrJrJrJr  S SKJrJr  S SKJr  S S	K J!r!  \!(       ax  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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K,J-r-  S SK,J.r.  S SK,J/r/  S SK,J0r0  S SK,J1r1  S SK,J2r2  S SK,J3r3  S SK,J4r4  S SK,J5r5  S SK,J6r6  \Rn                  " S\8SS 9  \" S!S"S#9r9\:r;\<" \Rz                  \R|                  \R~                  \R                  /5      rA\" \R                  " S$5      R                  S%5      rD\" \R                  " S&5      R                  S'5      rE\" \R                  " S(5      R                  S%5      rFS) rGS* rH\S+ 5       rIS, rJ " S- S.\
5      rK " S/ S0\K5      rL " S1 S2\K5      rM " S3 S4\K5      rN " S5 S6\K5      rOS7 rPS8 rQ\L\M\N\OS9.rR\S: S; \S< S= S> S? S@.rS " SA SB5      rT " SC SD5      rUSE rVSF rWSG rXSH rY     SPSI jrZ\Zr[ " SJ SK5      r\     SQSL jr]    SRSM jr^    SRSN jr:    SRSO jr_g)S    N)ABCabstractmethod)contextmanager)datetimetimezone)wrapspartial)
ContextVarnownanosecond_timeto_timestampserialize_frame
json_dumps)EnvelopeItem)TransactionSource)TYPE_CHECKING)Any)Callable)Dict)	Generator)Iterable)List)Optional)Set)Tuple)Union)	BucketKey)DurationUnit)FlushedMetricValue)MeasurementUnit)MetricMetaKey)MetricTagValue)
MetricTags)MetricTagsInternal)
MetricType)MetricValuezThe sentry_sdk.metrics module is deprecated and will be removed in the next major release. Sentry will reject all metrics sent after October 7, 2024. Learn more: https://sentry.zendesk.com/hc/en-us/articles/26369339769883-Upcoming-API-Changes-to-Metrics   )
stacklevel
in_metricsF)defaultz[^a-zA-Z0-9_]+ z[^a-zA-Z0-9_\-.]+_z[^a-zA-Z0-9_\-.\/]+c           	      \    [         R                  SSSSSSS.5      nU R                  U5      $ )Nz\nz\rz\tz\\z\u{7c}z\u{2c})
	\|,)str	maketrans	translate)valuetables     U/home/kali/devsecops-assessor/venv/lib/python3.13/site-packages/sentry_sdk/metrics.py_sanitize_tag_valuer;   N   s8    MM	
	E ??5!!    c                 f     [         R                  " U 5      n[        USSS9$ ! [         a     g f = f)NFT)include_local_variablesinclude_source_context)sys	_getframe	Exceptionr   )r)   frms     r:   get_code_locationrD   ]   s?    mmJ' U4   s   # 
00c               #      #    [         R                  5       n [         R                  S5         U v   [         R                  U 5        g! [         R                  U 5        f = f7f)z5Enters recursion protection and returns the old flag.TN)_in_metricsgetset)old_in_metricss    r:   recursion_protectionrJ   i   sB      !__&NOOD(''s   *A!A A!AA!c                 0   ^  [        T 5      U 4S j5       nU$ )zQConvenient decorator that uses `recursion_protection` to
make a function a noop.
c                     > [        5        nU(       d  T" U 0 UD6sS S S 5        $  S S S 5        g ! , (       d  f       g = fN)rJ   )argskwargsr*   funcs      r:   new_funcmetrics_noop.<locals>.new_func{   s4     "#zT,V, $# $##s   /
=)r   )rP   rQ   s   ` r:   metrics_nooprS   u   s"     4[- - Or<   c                   b    \ rS rSrSr\S 5       r\\S 5       5       r\S 5       r	\S 5       r
Srg)Metric    c                     g rM   rW   selffirsts     r:   __init__Metric.__init__        	r<   c                     g rM   rW   rZ   s    r:   weightMetric.weight   s     	r<   c                     g rM   rW   rZ   r8   s     r:   add
Metric.add   r^   r<   c                     g rM   rW   r`   s    r:   serialize_valueMetric.serialize_value   r^   r<   N)__name__
__module____qualname____firstlineno__	__slots__r   r\   propertyra   re   rh   __static_attributes__rW   r<   r:   rU   rU      s]    I        r<   rU   c                   :    \ rS rSrSrS r\S 5       rS rS r	Sr
g)CounterMetric   r8   c                 $    [        U5      U l        g rM   floatr8   rY   s     r:   r\   CounterMetric.__init__   s     5\
r<   c                     gN   rW   r`   s    r:   ra   CounterMetric.weight   s     r<   c                 @    U =R                   [        U5      -  sl         g rM   )r8   rw   rd   s     r:   re   CounterMetric.add   s     	

eEl"
r<   c                     U R                   4$ rM   rt   r`   s    r:   rh   CounterMetric.serialize_value   s    

}r<   Nrj   rk   rl   rm   rn   r\   ro   ra   re   rh   rp   rW   r<   r:   rr   rr      s*    I"  #r<   rr   c                   :    \ rS rSrSrS r\S 5       rS rS r	Sr
g)	GaugeMetric   lastminmaxsumcountc                 X    [        U5      nXl        Xl        Xl        Xl        SU l        g rz   rw   r   r   r   r   r   rY   s     r:   r\   GaugeMetric.__init__   s(     e	
r<   c                     g)N   rW   r`   s    r:   ra   GaugeMetric.weight   s     r<   c                     [        U5      nXl        [        U R                  U5      U l        [        U R                  U5      U l        U =R                  U-  sl        U =R
                  S-  sl        g rz   r   rd   s     r:   re   GaugeMetric.add   sQ     e	txx'txx'E

a
r<   c                 t    U R                   U R                  U R                  U R                  U R                  4$ rM   r   r`   s    r:   rh   GaugeMetric.serialize_value   s1     IIHHHHHHJJ
 	
r<   )r   r   r   r   r   Nr   rW   r<   r:   r   r      s,    I	  
	
r<   r   c                   :    \ rS rSrSrS r\S 5       rS rS r	Sr
g)DistributionMetric   rt   c                 &    [        U5      /U l        g rM   rv   rY   s     r:   r\   DistributionMetric.__init__   s     El^
r<   c                 ,    [        U R                  5      $ rM   lenr8   r`   s    r:   ra   DistributionMetric.weight        4::r<   c                 L    U R                   R                  [        U5      5        g rM   )r8   appendrw   rd   s     r:   re   DistributionMetric.add   s     	

%,'r<   c                     U R                   $ rM   rt   r`   s    r:   rh   "DistributionMetric.serialize_value   s    zzr<   Nr   rW   r<   r:   r   r      s*    I$  (r<   r   c                   :    \ rS rSrSrS r\S 5       rS rS r	Sr
g)	SetMetric   rt   c                     U1U l         g rM   rt   rY   s     r:   r\   SetMetric.__init__  s     W
r<   c                 ,    [        U R                  5      $ rM   r   r`   s    r:   ra   SetMetric.weight	  r   r<   c                 :    U R                   R                  U5        g rM   )r8   re   rd   s     r:   re   SetMetric.add  s     	

ur<   c                 6   ^ S mU4S jU R                    5       $ )Nc                     [        U [        5      (       a(  [        R                  " U R	                  S5      5      S-  $ [        U 5      $ )Nutf-8l    )
isinstancer5   zlibcrc32encodeint)xs    r:   _hash(SetMetric.serialize_value.<locals>._hash  s5    !S!!zz!((7"34zAAq6Mr<   c              3   4   >#    U  H  nT" U5      v   M     g 7frM   rW   ).0r8   r   s     r:   	<genexpr>,SetMetric.serialize_value.<locals>.<genexpr>  s     5*e*s   rt   )rZ   r   s    @r:   rh   SetMetric.serialize_value  s    	 6$**55r<   Nr   rW   r<   r:   r   r      s*    I  6r<   r   c                 t   [         R                  " 5       nUR                  nU  GH  u  p4UR                  5        GHf  u  pVUu  pxp[	        U5      n[        U	5      n	U" UR                  S5      5        U" S5        U" U	R                  S5      5        UR                  5        H+  nU" S5        U" [        U5      R                  S5      5        M-     U" S5        U" UR                  S5      5        U
(       az  U" S5        SnU
 Hj  u  p[        U5      nU(       d  M  U(       a  SnOU" S	5        U" UR                  S5      5        U" S5        U" [        U5      R                  S5      5        Ml     U" S
5        U" [        U5      R                  S5      5        U" S5        GMi     GM     UR                  5       $ )Nr      @   :   |asciis   |#TF   ,s   |T   
)ioBytesIOwriteitems_sanitize_metric_key_sanitize_unitr   rh   r5   _sanitize_tag_keyr;   getvalue)flushable_bucketsout_write	timestampbuckets
bucket_keymetricmetric_typemetric_namemetric_unitmetric_tagsserialized_valuer[   tag_key	tag_values                  r:   _encode_metricsr     sv   
**,CYYF 0	")--/JAK>Kk.{;K(5K;%%g./4L;%%g./$*$:$:$< ts+,33G<= %= 4L;%%g./u*5&G/8G"  %t7>>'234L.y9@@IJ +6 5M3y>((125MA #2 0F <<>r<   c                     0 nU HU  u  p4Uu  pVnSR                  U[        U5      [        U5      5      nSUS'   UR                  U/ 5      R	                  U5        MW     [        XS.5      $ )Nz{}:{}@{}locationtype)r   mapping)formatr   r   
setdefaultr   r   )	r   code_locationsr   keylocr   nameunitmris	            r:   _encode_locationsr   O  su    G""%4-d3^D5I
 !F3#**3/ # IBCCr<   )cgdsc                      [        5       S-  $ )Ng     @@r   rW   r<   r:   <lambda>r   i  s    ?,v5r<   c                      [        5       S-  $ )Ng    .Ar   rW   r<   r:   r   r   j  s    ?,y8r<   c                      [        5       S-  $ )Ng      N@r   rW   r<   r:   r   r   l  s
    cedlr<   c                      [        5       S-  $ )N      @r   rW   r<   r:   r   r   m  s
    CEFNr<   c                  "    [        5       S-  S-  $ )Nr         8@r   rW   r<   r:   r   r   n  s    356>D(r<   c                  (    [        5       S-  S-  S-  $ )Nr   r   g      @r   rW   r<   r:   r   r   o  s    CEFNT)C/r<   )
nanosecondmicrosecondmillisecondsecondminutehourdayweekc                   *    \ rS rSrSrS rS rS rSrg)LocalAggregatoris  _measurementsc                     0 U l         g rM   r  r`   s    r:   r\   LocalAggregator.__init__v  s      	r<   c                     U< SU< SU< 3nXe4nU R                   R                  U5      nUb%  Uu  pp[        X5      n	[        X5      n
US-  nX-  nOU=n	=pSnXX4U R                   U'   g )N:@r{   )r  rG   r   r   )rZ   tyr   r8   r   tags
export_keyr   oldv_minv_maxv_countv_sums                r:   re   LocalAggregator.add|  s     $&sD1
 '
  $$Z0?+.(E'%E%EqLGNE$))E)EG*/)G:&r<   c           	          0 nU R                   R                  5        H=  u  u  p#u  nnnnUR                  U/ 5      R                  [	        U5      UUUUS.5        M?     U$ )N)r	  r   r   r   r   )r  r   r   r   _tags_to_dict)rZ   rvr
  r	  r  r  r  r  s           r:   to_jsonLocalAggregator.to_json  st     %%'
Z !
MM*b)00)$/  $  ( 	r<   N)	rj   rk   rl   rm   rn   r\   re   r  rp   rW   r<   r:   r   r   s  s    "I
H0r<   r   c                       \ rS rSrSrSrSr SS jrS rS r	S r
S	 rS
 r\   SS j5       r SS jr\S 5       rS r\S 5       rS rS rSrg)MetricsAggregatori  g      $@i g      @c                 R   0 U l         X l        [        5       U l        0 U l        SU l        Xl        SU l        [        R                  " 5       U l
        [        R                  " 5       U l        SU l        [        R                  " 5       U R                  -  U l        S U l        S U l        g )Nr   TF)r   _enable_code_locations_set_seen_locations_pending_locations_buckets_total_weight_capture_func_running	threadingLock_lockEvent_flush_event_force_flushrandomROLLUP_IN_SECONDS_flush_shift_flusher_flusher_pid)rZ   capture_funcenable_code_locationss      r:   r\   MetricsAggregator.__init__  s     &;##v"$%&")^^%
%OO-! #MMOd.D.DD r<   c                    U R                   (       d  g[        R                  " 5       nU R                  U:X  a  gU R                     U R                  U:X  a
   SSS5        gXl        [
        R                  " U R                  S9U l        SU R                  l	         U R                  R                  5          SSS5        g! [         a    SU l          SSS5        gf = f! , (       d  f       g= f)z|For forking processes we might need to restart this thread.
This ensures that our process actually has that thread running.
FTN)target)r  osgetpidr*  r"  r   Thread_flush_loopr)  daemonstartRuntimeError)rZ   pids     r:   _ensure_thread MetricsAggregator._ensure_thread  s    
 }}iik#ZZ   C'	 Z !$%,,D4D4DEDM#'DMM ##% &     !&# Z Z& s0   C :CB??CCCC
C,c                 L   [         R                  S5        U R                  (       d  U R                  (       am  U R                  (       a%  U R                  R                  U R                  5        U R                  5         U R                  (       a  MY  U R                  (       a  Ml  g g NT)rF   rH   r  r%  r$  waitFLUSHER_SLEEP_TIME_flushr`   s    r:   r3  MetricsAggregator._flush_loop  s]    mmt00}}!!&&t'>'>?KKM mmmt000r<   c                 `    U R                  U R                  5       U R                  5       5        g rM   )_emit_flushable_buckets_flushable_locationsr`   s    r:   r>  MetricsAggregator._flush  s"    

4**,d.G.G.IJr<   c                 `   U R                      U R                  n[        R                  " 5       U R                  -
  U R                  -
  nSnSnU(       a0  U R
                  R                  5       n0 U l        SU l        SU l        O/ nU R
                  R                  5        H  u  pVXR::  d  M  UR                  XV45        M      U H7  u  pVUR                  5        H  nXGR                  -  nM     U R
                  U	 M9     U =R                  U-  sl        S S S 5        U$ ! , (       d  f       W$ = f)NrW   r   F)r"  r%  timer'  r(  r   r   r  r   valuesra   )rZ   force_flushcutoffr   weight_to_removebuckets_timestampr   r   s           r:   rB  $MetricsAggregator._flushable_buckets  s   ZZ++KYY[4#9#99D<M<MMF " $(LL$6$6$8!!-.*$)!$&!26,,2D2D2F.%(2)002C1MN 3G 3D.%").."2(MM9( #3%67 3D
 **.>>*1 4 ! 5 Z4 ! s   BD,A(D
D-c                 z    U R                      U R                  n0 U l        S S S 5        U$ ! , (       d  f       W$ = frM   )r"  r  )rZ   	locationss     r:   rC  &MetricsAggregator._flushable_locations  s9    ZZ//I&(D#   Z s   +
:Nc	                    U R                  5       (       a  U R                  c  g Uc  [        R                  " 5       nO [        U[        5      (       a  [        U5      n[        X`R                  -  U R                  -  5      n	[        U5      n
UUUU
4nU R                     U R                  R                  U	0 5      nUR                  U5      nUb  UR                  nUR                  U5        O[        U   " U5      =oU'   SnUR                  U-
  nUb  U R!                  XXHS-   U5        S S S 5        U R#                  5         Ub'  [%        US:X  a  WOU5      nUR                  XUXJ5        g g ! , (       d  f       NI= f)Nr   r(   r   )r8  r)  rF  r   r   r   r   r'  _serialize_tagsr"  r   r   rG   ra   re   METRIC_TYPESrecord_code_location_consider_force_flushrw   )rZ   r  r   r8   r   r	  r   local_aggregatorr)   bucket_timestampserialized_tagsr   local_bucketsr   previous_weightaddedlocal_values                    r:   re   MetricsAggregator.add  se    ""$$(=		I	8,,$Y/I000D4J4JJ
 *$/	

 ZZ LL334DbIM"&&z2F!"(--

5!5A"5Ee5LLz2"#MMO3E%))"4aS   	""$ 's>K  +tM () Zs   BE--
E;c                    U R                   (       d  g Uc  [        R                  " 5       nXU4n[        R                  " U[        R
                  5      R                  SSSSS S9n[        [        U5      5      nXv4U R                  ;  a[  U R                  R                  Xv45        [        US-   5      nUb-  U R                  R                  U/ 5      R                  Xh45        g g g )Nr   r   r   r   r   tzinfo   )r  rF  r   fromtimestampr   utcreplacer   r   r  re   rD   r  r   r   )	rZ   r  r   r   r)   r   meta_keystart_of_dayr   s	            r:   rS  &MetricsAggregator.record_code_locationU  s     **		IT?--iFNN1QAd O 
 <56#4+?+??  $$l%=>#JN3C ''22<DKKO  @r<   c                     U R                   (       a  gXU4n[        R                  " U[        R                  5      R                  SSSSS S9n[        [        U5      5      nXe4U R                  ;  $ )NFr   r^  )	r  r   ra  r   rb  rc  r   r   r  )rZ   r  r   r   r   rd  re  s          r:   need_code_location$MetricsAggregator.need_code_locationr  sp     &&T?--iFNN1QAd O 
 <56't/C/CCCr<   c                 p    U R                   c  g SU l        U R                  R                  5         S U l         g )NF)r)  r  r$  rH   r`   s    r:   killMetricsAggregator.kill  s/    == r<   c                 2    SU l         U R                  5         g r;  )r%  r>  r`   s    r:   flushMetricsAggregator.flush  s     !r<   c                     [        U R                  5      U R                  -   nXR                  :  a"  SU l        U R
                  R                  5         g g r;  )r   r   r  
MAX_WEIGHTr%  r$  rH   )rZ   total_weights     r:   rT  'MetricsAggregator._consider_force_flush  sF     4<<(4+E+EE??* $D!!# +r<   c                 0   [        5       nU(       a$  [        U5      nUR                  [        USS95        UR	                  5        H)  u  pV[        XV5      nUR                  [        USS95        M+     UR                  (       a  U R                  U5        U$ g )Nstatsd)payloadr   metric_meta)r   r   add_itemr   r   r   r  )rZ   r   r   envelopeencoded_metricsr   rN  encoded_locationss           r:   rA  MetricsAggregator._emit  s     :-.?@Od?JK$2$8$8$: I 1) Gd+<=QR %; >>x(Or<   )r  r  r  r$  r(  r)  r*  r%  r"  r  r  r  r   )F)NNr   rM   )rj   rk   rl   rm   r'  rq  r=  r\   r8  r3  r>  rB  rC  rS   re   rS  rh  rk  rn  rT  rA  rp   rW   r<   r:   r  r    s    J
 $!:BK!<  5N 5Nz : D D"  
$r<   r  c                 @   U (       d  g/ nU R                  5        Hm  u  p#[        U[        [        45      (       a,  U H$  nUc  M  UR	                  U[        U5      45        M&     ML  Uc  MQ  UR	                  U[        U5      45        Mo     [        [        U5      5      $ )NrW   )r   r   listtupler   r5   sorted)r	  r  r   r8   inner_values        r:   rQ  rQ    s     	Bjjl
edE]++$*IIsC$456  % IIsCJ'( # r<   c                     0 nU  HL  u  p#UR                  U5      nUb/  [        U[        5      (       a  UR                  U5        MA  XC/X'   MH  X1U'   MN     U$ rM   )rG   r   r~  r   )r	  r  tag_namer   	old_values        r:   r  r    s[    	B#FF8$	 )T**  + )5$xL  $ Ir<   c                      [         R                  " 5       n U R                  5       (       a  U R                  b  U R                  $ S $ rM   )
sentry_sdk
get_client	is_activemetrics_aggregator)clients    r:   _get_aggregatorr    sF    ""$F &";";"G 	!! r<   c                 8   [         R                  " 5       nUR                  5       (       a  UR                  c  S S U4$ [	        U=(       d    S5      nUR                  SUR                  S   5        UR                  SUR                  S   5        [         R                  " 5       nS nUR                  R                  S5      nU[        ;   aL  UR                  n	U	(       a  UR                  SU	5        UR                  b  UR                  R                  5       nUR                  R                  S0 5      n
U
R                  S5      nUb6  [        5        nU(       d  U" XX%5      (       d  S S U4sS S S 5        $ S S S 5        UR                  Xu4$ ! , (       d  f       N= f)NrW   releaseenvironmentsourcetransaction_experimentsbefore_emit_metric)r  r  r  r  dictr   optionsget_current_scope_transaction_inforG   GOOD_TRANSACTION_SOURCES_transaction_span_get_local_aggregatorrJ   )r   r8   r   r	  r  updated_tagsscoperU  transaction_sourcetransaction_nameexperimentsbefore_emit_callbackr*   s                r:   _get_aggregator_and_update_tagsr    s`   ""$F!:!:!BT4
#LIv~~i'@AM6>>-+HI((*E 0044X>55 --##M3CD;;"${{@@B..$$^R8K&??+?@'!#z+CKK|3 $##
 $$&6DD $#s   F
Fc           
      T    [        XX#5      u  pgnUb  UR                  SXX#XGU5        gg)zIncrements a counter.Nr   r  re   r   r8   r   r	  r   r)   
aggregatorrU  s           r:   	incrementr    =     *ID*&J$ Tj	
 r<   c                   2    \ rS rSrS rS rS rS rS rSr	g)	_Timingi  c                 h    Xl         X l        X0l        X@l        XPl        S U l        S U l        X`l        g rM   )r   r	  r   r8   r   enteredr  r)   )rZ   r   r	  r   r8   r   r)   s          r:   r\   _Timing.__init__  s0     	"
	
$r<   c                 :    U R                   b  [        SU-  5      eg )Nz0cannot use timing as %s when a value is provided)r8   	TypeError)rZ   contexts     r:   _validate_invocation_Timing._validate_invocation-  s&    ::!BWL  "r<   c           	         [         U R                     " 5       U l        U R                  S5        [        R
                  " SU R                  S9U l        U R                  (       a  U R                  R                  5        Hc  u  p[        U[        [        45      (       a(  SR                  [        [        [         U5      5      5      nU R                  R#                  X5        Me     U R                  R%                  5         ['        5       nUb2  UR)                  SU R                  U R                  U R*                  5        U $ )Nzcontext-managerzmetric.timing)opr   r4   r   )TIMING_FUNCTIONSr   r  r  r  
start_spanr   r  r	  r   r   r  r~  joinr  mapr5   set_tag	__enter__r  rS  r)   )rZ   r   r8   r  s       r:   r  _Timing.__enter__4  s    '		24!!"34**oDHHM
99"iioo/
eeT]33HHVCUO%<=E

""3. 0 	

 %&
!++C499dooVr<   c           
         U R                   (       d   S5       e[        U R                  U R                  U R                  U R
                  5      u  pEnUb[  [        U R                     " 5       U R                  -
  nUR                  SU R                  UU R                  UU R                  US 5        U R                   R                  XU5        S U l         g )Nzdid not enterr   )r  r  r   r8   r   r	  r  r  re   r   __exit__)rZ   exc_type	exc_valuetbr  rU  r	  elapseds           r:   r  _Timing.__exit__G  s    zz*?*z-LHHJJIIII	.
*
d !&tyy13dllBGNN		 	 	

H4
r<   c                 V   ^ ^ T R                  S5        [        T5      UU 4S j5       nU$ )N	decoratorc                     > [        TR                  TR                  TR                  TR                  TR
                  S-   S9   T" U 0 UD6sS S S 5        $ ! , (       d  f       g = f)Nr{   )r   r	  r   r   r)   )timingr   r	  r   r   r)   )rN   rO   frZ   s     r:   
timed_func$_Timing.__call__.<locals>.timed_funcd  sT     HHYY..YY??Q. $)&)  s   A
A$)r  r   )rZ   r  r  s   `` r:   __call___Timing.__call__`  s/    !!+.	q		* 
		* r<   )r  r  r   r)   r	  r   r   r8   N)
rj   rk   rl   rm   r\   r  r  r  r  rp   rW   r<   r:   r  r    s    %&&2r<   r  c           
      p    Ub'  [        XX#5      u  pgnUb  UR                  SXX#XGU5        [        XXAX%5      $ )a  Emits a distribution with the time it takes to run the given code block.

This method supports three forms of invocation:

- when a `value` is provided, it functions similar to `distribution` but with
- it can be used as a context manager
- it can be used as a decorator
r   )r  re   r  r  s           r:   r  r  s  sN    " -L.
*
d !NNSY* 3iAAr<   c           
      T    [        XX#5      u  pgnUb  UR                  SXX#XGU5        gg)zEmits a distribution.Nr   r  r  s           r:   distributionr    r  r<   c           
      T    [        XX#5      u  pgnUb  UR                  SXX#XGU5        gg)zEmits a set.Nr   r  r  s           r:   rH   rH     r  r<   c           
      T    [        XX#5      u  pgnUb  UR                  SXX#XGU5        gg)zEmits a gauge.Nr   r  r  s           r:   gauger    r  r<   )g      ?noneNNr   )Nr   NNr   )r  NNr   )`r   r0  r&  rer@   r   rF  warningsr   abcr   r   
contextlibr   r   r   	functoolsr   r	   r  sentry_sdk.utilsr
   r   r   r   r   r   sentry_sdk.enveloper   r   sentry_sdk.tracingr   typingr   r   r   r   r   r   r   r   r   r   r   sentry_sdk._typesr   r   r    r!   r"   r#   r$   r%   r&   r'   warnDeprecationWarningrF   rH   r  	frozensetROUTEVIEW	COMPONENTTASKr  compilesubr   r   r   r;   rD   rJ   rS   rU   rr   r   r   r   r   r   rR  r  r   r  rQ  r  r  r  r  incrr  r  r  r  rW   r<   r:   <module>r     s   	 	  	 
     # % ' $   / 0   +.41/0,4,- 	n  u5
$##	  $56::B?rzz*>?CCSI BJJ'=>BBBG "	 ( ( S 2F 2-
& -
` 26 6>-`D" 
				 "58""(/	 3 3lE EP,EH 		
( W Wx 		B> 
	
, 
	
, 
	
r<   